С уважением, Дмитрий.
Pentagon-128 вер.2023+Turbo Sound+ZXM-GeneralSound
ZXM-Phoenix 2048+Turbo Sound+ZXM-GeneralSound+ZXM-SoundCard Lite
ZXM-Phoenix в Телеграмм
Свои ROM-диски я готовил так:
- с помощью WinHex отделял от образа RKR, PKI или GAM кодовый блок, т.е. убирал начальный и конечный адреса, синхробайты и контрольную сумму
- в том же WinHex склеивал несколько кодовых блоков до достижения нужной длины будущего ROM-диска
- в ассемблере готовил загрузчик ROM-диска, используя шаблон из журнала "Радио" и взятые из образов адреса
- компилировал загрузчик с адреса 7400h ( в качестве ассемблера использовал 8085 SIMULATOR IDE от Oshonsoft )Код:; ПРОГРАММА УПРАВЛЕНИЯ ROM-DISK/32K ДЛЯ КОМПЬЮТЕРА ; "РАДИО-В6РК" С OБ'EMOM ОЗУ ПОЛЬЗОВАТЕЛЯ 32К. ; ПРОГРАММА УПРАВЛЕНИЯ ЗАФИКСИРОВАНА В ПЗУ ; ПО АДРЕСАМ 7E00H-7FFFH. УКАЗАННУЮ ОБЛАСТЬ ПЗУ ; ЗАПРЕЩЕНО ИСПОЛЬЗОВАТЬ ПОД ROM-DISK. ; ПРОГРАММА ИЗ ПЗУ В ОЗУ ПЕРЕНОСИТСЯ ЗАГРУЗЧИКОМ, ; (В MONITORE) ПО ДИРЕКТИВЕ "U" И ЗАНИМАЕТ ; ВЕРХНИЕ АДРЕСА ОЗУ, НАЧИНАЯ С 7400Н. .ORG 07400H ; PRINT .EQU 0F818H ; ВЫВОД СООБЩЕНИЯ НА ЭКРАН WW .EQU 0F803H ; ВВОД С КЛАВИАТУРЫ WYW .EQU 0F809H ; ВЫВОД СИМВОЛА НА ЭКРАН CONST .EQU 6 ; ЧИСЛО ПРОГРАММ M0: LXI H,S01 ; ВЫВЕСТИ КАТАЛОГ M1: CALL PRINT ; ROM-DISK/32K CALL WW ; ВЫБОР МЕНЮ. CPI 'Z' ; УСТАНОВКА ПАМЯТИ В 0? JZ ZERO ; НЕТ, CPI 'S' ; ЗАПИСЬ ВО ВРЕМЕННЫЙ JZ SAVE ; БУФЕР?- НЕТ, CPI 'L' ; СЧИТЫВАНИЕ В ТЕКСТОВЫЙ JZ LOAD ; БУФЕР?-НЕТ, SUI 30H ; ВХОДИТ ЛИ НАЖАТАЯ JM M0 ; ЦИФРА В ДИАПАЗОН CPI CONST ; УКАЗАННЫХ ЗНАЧЕНИЙ? JNC M0 ; НЕТ, ПОВТОРИТЬ ВВОД. MOV B,A ; ДА, КОД СОХРАНИТЬ. ORA A ; ЭТО 0? JNZ M2 ; НЕТ, НА ВЫЧИСЛЕНИЕ АДРЕСОВ. XRA A ; ДА, ОЧИСТИТЬ СЛУЖЕБНУЮ STA 2117H ; ЯЧЕЙКУ ПАМЯТИ BASIC. M2: LXI D,6 ; ШАГ ПОИСКА ПО ТАБЛИЦЕ. LXI H,TABL ; БАЗОВЫЙ АДРЕС ТАБЛИЦЫ. XRA A ; СОДЕРЖИМОЕ АККУМУЛЯТОРА M3: CMP B ; РАВНО ХРАНИМОМУ КОДУ? JZ M4 ; ДА, ВЗЯТЬ АДРЕСА ПРОГРАММЫ. DAD D ; НЕТ, ПЕРЕЙТИ НА СЛЕДУЮЩУЮ INR A ; СТРОКУ ТАБЛИЦЫ, УВЕЛИЧИТЬ ДАННЫЕ JMP M3 ; АККУМУЛЯТОРА И ВНОВЬ СРАВНИТЬ M4: SPHL ; ИСПОЛЬЗУЯ СТЕК, POP H ; ВЗЯТЬ POP D ; АДРЕСА POP B ; ПРОГРАММЫ. DCX SP ; ПОСЛЕДНИЙ АДРЕС DCX SP ; -СТАРТОВЫЙ . ; ПОДПРОГРАММА MONITORA, ОБЕСПЕЧИВАЮЩАЯ КОПИРОВАНИЕ ; ДАННЫХ ИЗ АДРЕСУЕМОЙ ОБЛАСТИ ПЗУ В АДРЕСУЕМУЮ ; ОБЛАСТЬ ОЗУ ПОЛЬЗОВАТЕЛЯ. CALL 0FA68H ; ПЕРЕСЫЛКА ПРОГРАММЫ. POP H ; ВЗЯТЬ АДРЕС PCHL ; И ЗАПУСТИТЬ ПРОГРАММУ. ; ПОДПРОГРАММА СЧИТЫВАНИЯ ФАЙЛА ИЗ ВРЕМЕННОГО БУФЕРА ; В ТЕКСТОВЫЙ БУФЕР РЕДАКТОРА "МИКРОН". LOAD: LXI H, S04 ; ПОДТВЕРДИТЬ CALL PRINT ; ВЫБОР СЧИТЫВАНИЯ. LXI H,4A00H ; НАЧАЛЬНЫЙ АДРЕС LXI D,2100H ; BPEMEHHOГO БУФЕРА. RD0: LXI B,28FFH ; OБ'EM ФАЙЛА. RD1: MOV A,M ; ПЕРЕСЛАТЬ STAX D ; ФАЙЛ INX H ; И3 INX D ; ВРЕМЕННОГО БУФЕРА DCX B ; B ТЕКСТОВЫЙ БУФЕР MOV A,B ; С АДРЕСА 2100Н. ORA C ; JNZ RD1 ; JMP M0 ; ВЫЙТИ В МЕНЮ. ; ПОДПРОГРАММА СОХРАНЕНИЯ ФАЙЛА ВО ВРЕМЕННОМ ; БУФЕРЕ. ЕСЛИ ОБ'ЕМ ФАЙЛА ПРЕВЫШАЕТ 28FFH, ТО ; ОПЕРАЦИЯ ПО ХРАНЕНИЮ НЕ ВЫПОЛНЯЕТСЯ. SAVE: LXI H, 2100H S1: MOV A,M ; ПРОВЕРИТЬ РАЗМЕР CPI 0FFH ; ФАЙЛА. JZ S2 ; ЕСЛИ ФАЙЛ HE УМЕЩАЕТСЯ INX H ; ВО ВРЕМЕННОМ MOV A,H ; БУФЕРЕ, ТО CPI 4AH ; JNZ S1 ; LXI H,S06 ; СООБЩИТЬ, А ПЕРЕСЫЛКУ JMP M1 ; HE ПРОИЗВОДИТЬ. S2: LXI H,S03 ; ИНАЧЕ CALL PRINT ; ПОДТВЕРДИТЬ ЗАПИСЬ LXI H,2100H ; ВО ВРЕМЕННЫЙ БУФЕР. LXI D,4A00H ; JMP RD0 ; УйТИ НА ЗАПИСЬ. ; ПОДПРОГРАММА ОЧИСТКИ ПАМЯТИ (ЗАПИСЬ "0" ; BO ВСЕ ДОСТУПНЫЕ ПОЛЬЗОВАТЕЛЮ ЯЧЕЙКИ ОЗУ, ; КРОМЕ ЯЧЕЕК, НАЧИНАЯ С 7400Н). ZERO: LXI H,S05 ; ПОДТВЕРДИТЬ ПРИЕМ CALL PRINT ; ОПЕРАЦИИ СБРОСА RAM. LXI H,0 ; Z1: MVI M,0 ; ОЧИСТИТЬ INX H ; ПАМЯТЬ. MOV A,H ; CPI 74H ; ЕСЛИ АДРЕС БОЛЬШЕ JNZ Z1 ; 7400Н, ТО ВЫЙТИ JMP M0 ; В МЕНЮ. S01: .DB 1FH,0CH,0AH,2AH,52H,4FH,4DH; .DB 2DH,44H,49H,53H,4BH,2FH,33H; .DB 32H,4BH,2AH,20H,56H,32H,2EH; .DB 30H,2DH,39H,31H; .DB 0AH,0AH,0DH,'DIR:'; .DB 0DH,0AH,'<0>-BASIC'; .DB 0DH,0AH,'<1>-ED/ASSM'; .DB 0DH,0AH,'<2>-DP/DDT'; .DB 0DH,0AH,'<3>-SORT UT'; .DB 0DH,0AH,'<4>-DRIV/260'; .DB 0DH,0AH,'<5>-PROGR' ; .DB 0AH,0DH .DB 0AH,0DH,' <S>-BUFF' ; .DB 0AH,0DH,' <L>-RED' ; .DB 0AH,0DH,' <2>-0/RAM' ; .DB 0DH,0AH,0 S03: .DB 19H ; S04: .DB 19H ; S05: .DB 19H,7FH,08H,0 S06: .DB 0DH,'OUT OF BUFF',0 ; ТАБЛИЦА АДРЕСОВ ФАЙЛОВ ROM-DISK/32K. ; ПОСЛЕДОВАТЕЛЬНО ПО КАТАЛОГУ УКАЗАНЫ: ; НАЧАЛЬНЫЙ, КОНЕЧНЫЙ АДРЕСА ФАЙЛА В ПЗУ, ; НАЧАЛЬНЫЙ АДРЕС ЭТОГО ЖЕ ФАЙЛА В ОЗУ. TABL: .DW 0,1FFFH,0 ; BASIC .DW 2000H,2FFFH,0 ; RED/ASSM .DW 3000H,3FFFH,6400H ; DP/DDT .DW 6E4EH,74E3H,800H ; SORT/UT .DW 74E4H,7A94H,800H ; DRIV/260 .DW 7A95H,7DFFH,0 ; PROGR .END
- откомпилированный загрузчик добавлял в ROM-диск с адреса 7E00h ( тоже в WinHex ), затем нулями дополнял длину диска до 7FFFh
- готовый образ ROM-диска сохранял в виде отдельного файла, который и зашивал в ПЗУ
Ленинград-1
Composite+AY+BDI+256K
Scorpion ZS256(желтый)
МК-61; Радио-86РК; БК 0010-01
matr0s А зачем отрезали адреса начала/конца, синхробайты и КС?
Я помню, что целиком программировал программу в ПЗУ. Из глубин памяти всплывает, что вроде как можно "писать" в ПЗУ не сразу весь дамп, а отдельными кусками, программируя их друг за другом в стык. Вот только не помню как нужно писать в память, снизу-вверх или сверху-вниз.
Читаю пока.
С уважением, Дмитрий.
Pentagon-128 вер.2023+Turbo Sound+ZXM-GeneralSound
ZXM-Phoenix 2048+Turbo Sound+ZXM-GeneralSound+ZXM-SoundCard Lite
ZXM-Phoenix в Телеграмм
При загрузке с ROM-диска они не нужны; место экономится, проще стыковать блоки и рассчитывать адреса загрузки.
Вроде это в журнале "Радио" объясняли, как компоновать ROM-диск, состоящий из нескольких РФ6. Мой программатор не позволяет писать ПЗУ по частям, т.к. сначала требует очистить всю микросхему.
Ленинград-1
Composite+AY+BDI+256K
Scorpion ZS256(желтый)
МК-61; Радио-86РК; БК 0010-01
Сформировать РОМ-диск не сложно на самом РК-86.
Нам поможет директива Т Монитора и карандаш с листочком бумаги!
Смотрим и записываем адреса начала и конца первой программы, потом грузим в память вторую программу и директивой Т перемещаем ее в конец первой программы. Подобным образом поступаем с третьей и последующими программами. В результате формируем весь диск, оставляя место под "служебную" программу обслуживания РОМ-диска. Для простого программатора я разбил общий дамп кусками по 8Кб, т.к. этот программатор может только такими кусками по максимуму шить.
Как видно процесс создания диска довольно не сложный и все вполне Олдово
С уважением, Дмитрий.
Pentagon-128 вер.2023+Turbo Sound+ZXM-GeneralSound
ZXM-Phoenix 2048+Turbo Sound+ZXM-GeneralSound+ZXM-SoundCard Lite
ZXM-Phoenix в Телеграмм
Vladimir_S, Подскажи какую ещё можно использовать Флешину в твоём Флесш диске, а то идея ведь хорошая, а никто не реализовал.
Пока есть мысль что АТ20С020 подойдёт, а вот АТ20С010 нет, т.к. сектор 128, может из 39 серии что подойдёт?
РК86 ещё жив!!! а теперь и ЮТ-88!!!
VovanRK86, Читаются то они все одинаково, но вот алгоритм записи у них всех кто в лес, кто по дрова.
РК86 ещё жив!!! а теперь и ЮТ-88!!!
Может взглянуть на вопрос с другой стороны, так сказать обновить взгляд на вещи.
Схема от Матроса почему-то упорно игнорируется. http://zx.pk.ru/showpost.php?p=680018&postcount=34
НО, есть софт, есть схема которая нуждается в корректировке.
Схема расчитана на доступные флеши. Неужели не привлекательно?
Буквально недавно Alex_LG выложил свою схему эмулятора магнитофона с функцией работы РОМ-диском. http://zx.pk.ru/showpost.php?p=679255&postcount=346
Конечно хорошо-бы организовать запись на флешку, и в таком варианте, даже без записи на "магнитофон" будет просто отличная схема!
Что нам еще нужно, флешка читает/пишет, все здорово!
Думаю стоит переключиться на эту схемку
С уважением, Дмитрий.
Pentagon-128 вер.2023+Turbo Sound+ZXM-GeneralSound
ZXM-Phoenix 2048+Turbo Sound+ZXM-GeneralSound+ZXM-SoundCard Lite
ZXM-Phoenix в Телеграмм
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)