Trochę się rozminąłem z prawdą, ale i tak miałem racje. Microwire przesył dane automatycznie, ale żeby wysłać coś nowego trezeba odczekać aż poprzedni transfer sięskończył. Na tej stronie jest fajny opis:
http://www.sarnau.info/atari:atari_ste_ … n_addendum
który mówi:
The other important concept you must understand is that the bits shift out of these registers as soon as you write the data, and it takes an appreciable time (16 psec) to finish. You can't attempt another write until the first one is finished. If you read either register while it's being shifted out, you will see a ?snapshot? of the data being shifted. You know the shifting is complete when the mask returns to its original value. (This theory is wrong if you use a mask which equals its original value sometime during the shifting, but $07ff never does.)
Co to za jednostka "psec" to pojęcia nie mam. Ale ten kod realizuje zapis do MW:
MWMASK equ $ffff8924
MWDATA equ $ffff8922
mwwrite:
cmp.w #$O7ff,MWMASK ; wait for prey to finish
bne.s mwwrite ; loop until equal
move.w dO,MWDATA ; write the data
rts ; and return
I, jak dobrze pamiętałem, każdy taki zapis jest koszmarnie powolny. Nie mam teraz ST u siebie (hallo Zaxon :P ), ale nie zdziwiłbym się, gdyby dało się tylko kilka razy na ramkę.