.. by stalo mozna za to jeste doplnit (a ted mne nekamenujte, nepamatuji se – ale Woz to pise ve sve knize iWoz), ze:
1) DRAMka byla sdilena mezi CPU a videoobvody, a to adresove tak, ze oboji mohlo fungovat najednou.
2) Refresh DRAMky probihal pri zp. behu paprsku (dalsi refresh netrebny).
Asi pred rokem jsem se dival na nejake materialy k APPLE2FPGA a z navrhu je patrne, ze vychytave tam bylo opravdu hodne… zejmena napr. presna synchronizace mezi instrukcemi CPU a dalsimi obvody, atd. Dnes uz nepouzitelne, protoze MCU/CPU core se jemne zmeni v dalsi silicon rev. a ani se o tom nedozvite…
Ano je to tak. Woz vyuzil toho, ze 6502 pristupuje do pameti pouze v kazdem druhem hodinovem cyklu, takze generovani grafiky mohlo probihat v tom druhem nevyuzitem cyklu. Tim se automaticky vyresil i refresh DRAM, protoze se v onech „prazdnych“ cyklech precetly vsechny jeji bloky. Mam dojem, ze u Apple II bylo toto rozdeleni sbernice 6502-grafika zcela presne – sude, liche cykly. Dalsi mikropocitace pouzivaly neco podobneho – Atari, C64, ale tam to rozdeleni nebylo vzdy zcela presne, napriklad VIC-II u C64 nekdy (tusim na zacatku scanliny) musel CPU zastavovat.
Hmm, jeste jsem ve clanku nezduraznil jednu dulezitou vec: Apple II mohlo vyuzivat dva bloky pameti pro VRAM, tj. bylo mozne pouzit double buffering (tj. i Basicovy program mohl delat pekne animace). Double buffering (resp. premistitelna VRAM) byla pouzita i u Atarek a C64, ale napriklad u povodniho speccyho uz ne a slavna IBM se k nemu taky dopracovala az po mnoha letech (treba CGA ho neumela).
Ona VRAM byla sice rozdelena dost podivne, ale to opet vyplyva z toho, jak Woz dokazal navrhnout funkcni system s doslova par hradly – vypocet adresy pixelu je sice dost komplikovany (deleni sedmi atd.), ale SW to zvladne levneji nez HW :-)