В классической схеме (M.Prato, 2012г) обмен по SPI тактируется от процессорного CLK=3,5мгц (точнее его же, инвертированного и выведенного на zxbus) и на каждый второй задний фронт выполняется сдвиг бита в/из карты; соот-но для 8 бит по SPI на это уходит 16 тактов CLK (не рискну здесь мусорить фрагментами кода, а если будем продолжать, то лучше сделать это в соответствующей в тематической ветке )
Так вот я не могу понять, когда собранный байт читается после этого процессором (из 21 такта INIR первые 4 - это M1, а с пятого начинается передача по обращению к порту и при неактивном /M1. И только к 20му такту будет собран весь читаемый байт, но процессор с шины данных байт к этому моменту давно прочитал и в память сохранил), такое впечатление, что это работает с задержкой на одну команду, т.е. на каждый новый "шаг" INIR читает байт прошлого шага.
Однако в коде esxdos 0.8.8 для чтения 512-байтного сектора выполняется видимо вот это:
Код:
1f10 01eb00 ld bc,00ebh
1f13 edb2 inir
1f15 edb2 inir
1f17 c49c1b call nz,1b9ch
1f1a 00 nop
Тут счетчик b=0, то есть это отрабатывает два 256-шаговых INIR. 512 раз, а не 513, как было бы нужно при задержке считываемого байта на одну команду )
И это как-то работает при 3,5 мгц. Если карта "хорошая" ))
И насколько я рассмотрел в Сизифе это тактируется от 7 мгц и по каждому первому, а не второму импульсу (8 из них выделяются активным диапазоном счетчика), в нем это выполняется быстрее
[свернуть]