С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Я так понимаю что сначала загрузчик с ленты полностью размещается в оперативной памяти, затем происходит out 15, 0, и только потом файл пзу записывется с адреса 0x0000. Когда -то у меня была такая кассета для робика, скорее всего не сохранилась, посмотрю когда поеду к родителям.
atmavan (16.06.2021)
Пишется с кассеты в память, с адреса 49152, образ ПЗУ, потом OUT 15,0 и переброс по LDIR из памяти в область ПЗУ, следующая комманда JP 0
Робик 1024(пентагоновские тайминги),+ 7Мц+, 2AY(TS),+ контроллер дисковода,+ 3.5,+ 5.25 флоп,+CMOS,+ mouse(caro),+ Flash.
Pentagon 128(1991г.)+YМ
программатор 2732-27512.
atmavan (17.06.2021)
спасибо!
я же все правильно делал, только слона-то не заметил, забыл саму команду LDIR дописать для переброски назад))
Вот такой код сработал для меня.
После запуска могу менять содержимое ПЗУ
LD HL,0
LD DE,30000
LD BC,16384
LDIR
LD A,0
OUT (15),A
LD HL,30000
LD DE,0
LD BC,16384
LDIR
JP 0
а еще, первые 5 байт остаются неперезаписываемыми почему-то
Последний раз редактировалось atmavan; 17.06.2021 в 03:45.
Робик 1024(пентагоновские тайминги),+ 7Мц+, 2AY(TS),+ контроллер дисковода,+ 3.5,+ 5.25 флоп,+CMOS,+ mouse(caro),+ Flash.
Pentagon 128(1991г.)+YМ
программатор 2732-27512.
что сделал я
запустил такую программу на Робике:
LD HL,0
LD DE,30000
LD BC,16384
LDIR
LD A,0
OUT (15),A
LD HL,30000
LD DE,0
LD BC,16384
LDIR
JP 0
Произошел сброс
После чего я могу написать POKE 5,1 (а там было не 1) и потом прочитать оттуда 1. До запуска программы такое сделать было невозможно, так как ПЗУ не перезаписывается, только читается обычно. Но такое не прокатывает с байтами по адрессам от 0 от 4. Значения переписать нельзя, что там есть, то есть.
>Попробуйте после нажатия ресет, сделать OUT 15,0 и rendomise USR 0 увидите. Теневое, до нажатия ресет, должно уже быть в памяти
Когда бы я не нажал Ресет на Робике (две клавишы Ресет), Робик всегда возвращается в изначальное состояние, с обычным не перепезаписываемым ПЗУ, то есть мне нужно по новой проводить подобную операцию переброса информации ПЗУ в теневое ПЗУ. Ну по крайней мере мне все так показалось.
Робик 1024(пентагоновские тайминги),+ 7Мц+, 2AY(TS),+ контроллер дисковода,+ 3.5,+ 5.25 флоп,+CMOS,+ mouse(caro),+ Flash.
Pentagon 128(1991г.)+YМ
программатор 2732-27512.
atmavan (26.06.2021)
Только заметил Ваш ответ и сразу проверил на своем Робике. Просто круто. Я не ожидал. Как я сам не проверил - не знаю. Видно посмотрел что ОЗУ сбросилось на стандартное и все. А попробовать снова OUT 15,1 и увидеть измененное ПЗУ - не делал! Теперь можно будет поэкспериментировать со скоростными загрузками (2х и 3х). Будут результаты - напишу. Благодарю!
На робике запись в теневую память происходит всегда, переключение работает только на чтение, поэтому можно сделать
LD HL, 0
LD DE, 0
LD BC, 16384
LDIR
LD A, 1
OUT (15),A
RET
Там кстати и видеоконтроллер устроен точно так-же, запись происходит одновременно в две страницы, а видеоконтроллер потом читает при выводе на экран одну а процессор вторую.
Последний раз редактировалось ram_scan; 29.06.2021 в 16:34.
Добрый день, год назад стал счастливым обладателем Робика 1990 года выпуска, с прошивкой V02 (точно такой, какой был в моём детстве, в 1993-1994). Над подключением к VGA как раз заморачиваюсь, но "вслепую" удалось сдампить прошивку (через SAVE и line-in компа). Т.к. в сети есть только V03 - выкладываю, может кому интересно
- - - Добавлено - - -
а еще, первые 5 байт остаются неперезаписываемыми почему-то
Баг Spectrum BASIC. Лично не проверял, но говорят что правится заменой байта по адресу #33FD с 00 на 2B
cherkasy (16.11.2021)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)