это не правильно, тк А13 в этом случае висит в воздухе.
Для работы РОМдиска на 27256 нужно, что бы ее 1я ножка всегда была на +5В. В моей схеме она кнопкой в режиме ДИСК подключается на РС7 ВВ55,
а там при обращении к РОМ диску выставляется 0. Схема же сделана с прицелом использовать 27512 ПЗУшку как более логичную.
Решений тут несколько, первое, в лоб, просто посадить 1ю ножку на +5В, независимо от состояния кнопки. Второе, на мой взгляд более правильное,
это сделать изменения в мониторе, что бы ножка РС7 ВВ55 не сбрасывалась 0, и изменить прошивку РОМдиска таким образом, чтобы в описателе
адресов файла в ПЗУ в старшем разряде была 1ца (то, что изначально требовалось делать по журнальной статье)
изменения такие:
C90D 00 NOP
C90E 00 NOP
C90F 22 01 F0 SHLD 0xF001
C912 3E 0E MVI A,0x0E
C914 32 03 F0 STA 0xF003
C912 00 NOP
C913 00 NOP
C914 00 NOP
C915 00 NOP
C916 00 NOP
C917 3A 00 F0 LDA 0xF000
C91A 02 STAX B
C91B 23 INX H
C91C 03 INX B
C91D CD 27 C4 CALL 0xC427 ; cmp HL == DE
C920 C2 0F C9 RNZ 0xC90F
C923 C9 RET
или же, для ускорения чтения из РОМдиска лучше так, обходим лишние NOPы:
C90D 00 NOP
C90E 00 NOP
C90F 22 01 F0 SHLD 0xF001
C90F 00 NOP
C910 00 NOP
C911 00 NOP
C912 00 NOP
C913 22 01 F0 SHLD 0xF001
C916 00 NOP ; тянем время перед чтением
C917 3A 00 F0 LDA 0xF000
C91A 02 STAX B
C91B 23 INX H
C91C 03 INX B
C91D CD 27 C4 CALL 0xC427 ; cmp HL == DE
C920 C2 0F C9 RNZ 0xC90F
C920 C2 13 C9 RNZ 0xC913
C923 C9 RET
возвращаясь к вопросу о необходимости ставить 1цу в старшем разряде для, оригинального, журнального варианта монитора, я так этого и не понимаю.
вот оригинальный код:
C90F 22 01 F0 SHLD 0xF001 ; записываем адрес байта для чтения из ПЗУ хоть с выставленным битом, хоть со сброшенным,
C912 3E 0E MVI A,0x0E ; пишем в ВВ55 для прямого управления ножкой РС7 и сбрасываем ее
C914 32 03 F0 STA 0xF003 ; те по оригинальной схеме включаем ОЕ ПЗУ
C917 3A 00 F0 LDA 0xF000 ; читаем байт из ПЗУ
C91A 02 STAX B ; сохраняем прочитанный байт из ПЗУ по адресу в ВС
C91B 23 INX H ; инкрементируем адреса
C91C 03 INX B ; ---//---
C91D CD 27 C4 CALL 0xC427 ; cmp HL == DE сравнение для проверки все ли прочитали
C920 C2 0F C9 RNZ 0xC90F ; повторяем чтение байта, если не все прочитали или
C923 C9 RET ; выходим, при этом ОЕ остается в 0, обратно его никто не возвращает!
если на то пошло, то надо сделать так:
C90F 22 01 F0 SHLD 0xF001 ; записываем адрес байта для чтения из ПЗУ со сброшенным битом, соответственно ОЕ в 0, вкл
C912 23 INX H ; инкрементируем адрес здесь, тянем время перед чтением байта
C913 3A 00 F0 LDA 0xF000 ; читаем байт из ПЗУ
C916 02 STAX B ; сохраняем прочитанный байт из ПЗУ по адресу в ВС
C917 3E 0F MVI A,0x0F ; пишем в ВВ55 для прямого управления ножкой РС7 и устанавливаем ее в 1
C919 32 03 F0 STA 0xF003 ; те по оригинальной схеме выключаем ОЕ ПЗУ
C91C 03 INX B ; инкрементируем адрес
C91D CD 27 C4 CALL 0xC427 ; cmp HL == DE сравнение для проверки все ли прочитали
C920 C2 0F C9 RNZ 0xC90F ; повторяем чтение байта, если не все прочитали или выходим
C923 C9 RET ; при этом ОЕ остается в 1, ПЗУ выключена, все логично!
но и опять же для чего эту 1цу выставлять?!
во вложении измененный монитор и ром4.





Ответить с цитированием