ISA je 16bitova sbernice, takze predpokladam, ze 16bitove cteni a zapisy nebudou uplne s tim latchem kompatibilni. Je vlastne 16bitova operace to stejne, jako dve po sobe jdouci osmibitove? Nebo se to provede nejak "zaraz"?
ISA existovala i v osmibitové podobě, takže zpětná kompatibilita
občas brzdila moderní karty. (Nevím, nakolik to platí pro VGA...)
10. 9. 2024, 20:36 editováno autorem komentáře
no prave. VGA prisla nekdy po AT-Bus, tedy po 16bitove ISA. IMHO to udelali takto divne, aby drzeli kompatibilitu s EGA. Trosku skoda no.
Při práci s latch je třeba jet po bajtech.
Protože 1bajt čtení přečte 32bit z videopaměti do latch a 1bajt zápis zapiše 32 bit z latch do videopaměti.
Pokud bych to jel 16bitově po 2 bajtech, pak je to 2x čtení a 2x zápis, což asi není to co chceš.
10. 9. 2024, 20:40 editováno autorem komentáře
jj to jsem si taky pozdeji uvedomil, ze to neni 2x(cteni+zapis), ale jak pises 2x cteni a potom 2x zapis.
Je to uz hodne let, co jsem designoval karty pro ISA bus, ale pokud si dobre pamatuji, tak 16-bit ISA mela specialni signaly /MEMCS16 a /IOCS16, kterymi karta zahy po adresaci zpetne indikovala, zda umi ci neumi 16-bitovy pristup do pameti nebo I/O prostoru na teto adrese. Pokud se napr. do pameti pres ISA bus pristoupilo 16-bitove, ale signal MEMCS16 nebyl kartou aktivovan, rozlozil radic ISA sbernice pristup na dva 8-bitove pristupy pres datove signaly D0..D7. Treba ma 286ka pri zapisu (napr. mov addr, ax) poslala na D0..D15 cele 16-bitove slovo v ax, a v nasledujicim vynucenem zapisovem cyklu D0..D7 obsahovalo D8..D15 z predchoziho cyklu (tj. obsah ah) a adresova sbernice byla addr+1. CPU tedy provadel 16-bitove operace, jen mu (zejmena pri cteni) byly ponekud pozdrzeny wait stavy, pricemz karta si sama diktovala 8-bitovy pristup na busu.