PVV, бейсики здесь правленные https://zx-pk.ru/threads/10345-spetsialist-bejsik.html
и еще игру Джет Сет, барсик принес, дай бог ему здоровья
https://zx-pk.ru/threads/27540-lenin...sta/page2.html
PVV, бейсики здесь правленные https://zx-pk.ru/threads/10345-spetsialist-bejsik.html
и еще игру Джет Сет, барсик принес, дай бог ему здоровья
https://zx-pk.ru/threads/27540-lenin...sta/page2.html
Не забываем, что ПЗУ на 32КБ, а программа должна быть меньше, тк нужно еще 16 байт на описатель заголовка. Джет-сет сам на 32КБ только...
Образ я то собрал тестовый, проблема в другом, а монитор то правильный под РОМдиск есть?! в журнале он приведен с ошибками:
никого не смущают одинокие 'С' ? Монитор с сайта fifan_а подставляет все C0, но это ошибка.
Надо в отладчике разбираться.
Надо еще посмотреть как ПЗУ к ВВ55 подключена, совпадают ли адреса с РК-86, а то я конфиг РОМдиска из РК взял, но не сверял.
------------
удалил вложение, ниже есть исправленное
Последний раз редактировалось PVV; 04.10.2019 в 19:15.
PVV, небольшое увлекательное расследование с заглядыванием в коды Монитор-2, для которого и приведены эти коды обслуживания ROM диска легко восстанавливают изначальный вариант:
Однако в ячейке 0C923H должен быть код 0C9H (RET), который кстати уже есть в теле Монитор-2. Видимо этот байт лишний в данной таблице. Если этот байт забить 00H (NOP), то после копирования строки директории программа вывалится в кишки монитора и дальнейшее поведение будет непредсказуемо.
- - - Добавлено - - -
PS В дампе первый байт 01H вместо 11H - это моя ошибка. Не обращайте внимание. В дизасме справа всё правильно.
Спасибо. Часть переходов я раскопал, а вот куда они ведут в мониторе не знал. Особенно CALL 0xCC0C что такое. Однако все еще не работает этот патч. Имя программы пишет, в монитор по М выходит, но на N и Y глючит. Я поправил описатель в образе РОМдиска (последние 4 байта образа FF 46 00 00) , и первую программу загрузил правильно, она запустилась, но надо разбираться дальше.
------------------
надо изменить на:
C8E2 E5 PUSH H
тогда работает N
Последний раз редактировалось PVV; 03.10.2019 в 14:08.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
А, вот куда 10Н девается. Теперь точно всё чётко: 01 => 11, F5 => E5 и контрольная сумма остаётся какой была. Что касается клавиш, там всё прикольнее и проще:
Сначала вводится символ, он попадает в [A]. Затем восстанавливается уровень стэка, компенсируя первый PUSH по адресу C8E2 а затем считанный код символа сравнивается с 4EH, а это ASCII 'N'. Если код символа равен - то идём на второй круг, если код ASCII меньше 4EH - выходим через RC (RET C). А в остальных случаях идем дальше, где значение в HL заносится как вершина стэка (должно указывать на параметры запускаемой программы), откуда идет прогрузка всех регистров и однократный вызов подпрограммы считывания данных с ROM диска, которая завершаясь через RET выйдет уже в загружаемую программу. Смысл кнопок в том, что по таблице ASCII 'M' < 'N' < 'Y'. Но будут работать все кнопки согласно весу ASCII относительно кода 'N'.Код:C8FC CD 03 C8 CALL 0C803H C8FF D1 POP D C900 FE 4E CPI 4EH C902 CA D9 C8 JZ 0C8D9H C905 D8 RC C906 F9 SPHL C907 C1 POP B C908 D1 POP D C909 E1 POP H C90A 31 FD 7F LXI SP,7FFDH C90D 00 NOP C90E 00 NOP
- - - Добавлено - - -
- - - Добавлено - - -
А не, автозапуска не происходит, ведь стэк обнуляется до стандартного мониторного адреса. Только загрузка кода в память. Статью надо читать внимательнее:
- - - Добавлено - - -
Нужно делать строго как описано в статье. Код вычисляет строку от 0000H, делая -0010H за каждый проход цикла вывода имени и свойств файла. Т.е. сначала 7FF0H, затем 7FE0H и так далее (старший бит игнорируется в адресации ROM диска), с каждым нажатием на 'N', но это перед выводом. А на момент запуска этот указатель в начале параметров, откуда уже через серию POP они и попадают в регистры. Это плата за простоту и компактность кода. Порядок же описываемых программ действительно не важен.
Последний раз редактировалось HardWareMan; 03.10.2019 в 14:46.
Предлагаю модераторам перенести сообщения 156-172 из темы Линевский Специалист сюда, дабы не оффтопить там. - СДЕЛАНО
- - - Добавлено - - -
Во вложении исправленный монитор, им fifan_у следует заменить тот файл, что выложен сейчас у него на сайте.
Еще во вложении продублирован конфиг, который не изменился от выложенного ранее и исправленный образ диска.
Касательно образа, я не вполне понял, для чего нужно старший бит адреса выставлять в 1 (я это не делаю, сейчас он в 0), по указанию в статье? или таким образом в этом цикле:
C90F 22 01 F0 SHLD 0xF001
C912 3E 0E MVI A,0x0E
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
планировалось старшим битом выключать по /OE ПЗУ? так здесь, похоже, ошибка, тк мы выключаем ПЗУ, а след командой ее читаем, и для древних, медленных, ПЗУ это похоже работать будет, то для современных и быстрых получим мусор... Плюс еще и 32КБ возможной адресации теряем. Предлагаю этот
C912 3E 0E MVI A,0x0E
C914 32 03 F0 STA 0xF003
кусок кода выбросить, и получим РОМдиск на 64КБ. Такая доработка еще на РК-86 делалась, когда /OE и /CS ПЗУ всегда в нуле.
PS в образе диска LRUNNER я странный зашил, он и в оригинале так работает, те не работает по факту, только экраны меняются...
Последний раз редактировалось fifan; 04.10.2019 в 13:14.
Pluto (03.10.2019)
PVV, схему посмотри и догадайся:
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)