Сообщение от
KTSerg
esl, я примерно догадываюсь, о предлагаемом способе загрузки данных.
Но artyr_n уже писал, что в загрузчике Вектора нет такого алгоритма, а весь фокус - сделать картридж работающий на "стандартном" загрузчике.
я всё время и пишу про способ совместимый со стандартным ПЗУ
точнее так
он будет загружаться стандартным пзу
но дальше уже должно быть всё самописное.
даже полез исходники смотреть
для определённости
http://asdasd.rpg.fi/~svo/scalar/ware/888/
вот код загрузчика (цифра - такты)
Код:
lxi b,0
lxi h,0x8000
ROM_LOAD:
;младший адрес
mov a,l ;5
out 7 ;10 PA
;старший адрес
mov a,h ;5
out 5 ;10 PC
;чтение байта ROM
in 6 ;10 PB
stax b ;5
inx h ;5
inx b ;5
mov a,b ;5
cpi 80h
jnz ROM_LOAD
jmp start
я собственно про что всё время говорю
что т.к. в коде нет никакой синхронизации (т.к. там ПЗУ стоит)
смотрим код, между записью старшего байта паузы НЕТ ВООБЩЕ
смотрите в коде
OUT 5 ;записали старший байт
<<<<<<<<<<<<<<<<<<<вот тут вы должны успеть всё сделать обычным образом.
IN 6 ;прочитали байт данных
т.е. нет паузы вообще на тот код который я приводил как "стандартный"
(читать байтики из двух портов и вытаскивать байт из масива.)
также этот код не делает проверок вообще, и грузит насильно 32к
(может в более навороченных есть проверки но мне уж точно лень смотреть, хотя пищущему такое нужно точно знать)
мы точно знаем сколько он будет грузить.
мой способ с контролью изменения A0 точно будет работать
объясню еще раз
младший байт тут меняется как 00,01,02,03,04,05,06
соответственно A0 -> 0,1,0,1,0,1,0,1
мало того очень удачно что младший байт задаётся первым
т.е. после его записи есть пауза 15 тактов
(или можно исхитрится что пауза будет весь хвост с inx,cpi,jmp)
времени у однокристалки должно хватитить на:
подождать изменения и записи байта данных
посде этого можно подготовить следующий т.к. есть чуть больше пауза.
p.s. или я не понимаю о чём мы говорим