Это для звука эмуляция INTE. Но работает очень хреново.
Это для звука эмуляция INTE. Но работает очень хреново.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
ОЗУ - какая микруха ? На фото не видно.
При установленной Z80 в Радио-86РК не работают многие программы. Например ассемблер, дизассемблер, отладчик. Но например в Орион-про, хотя там тоже Z80 они работают. Приходит на мысль, что дело в "мониторе". Покопался и чуток поправил в мониторе п/п F818. теперь большинство программ заработали, но не пашет DOS2.95. Может кто копался на предмет работы DOS2.95 с Z80?
- - - Добавлено - - -
Blade оказался совершенно прав.
http://zx-pk.ru/threads/20887-radio-...l=1#post580891
Кажется, единственное место где надо править, - это 'JPO' указанное BLADE. Я в своё время тоже с этим столкнулся, когда делал ROM-BIOS РК86 для эмулятора РК на ОРИОНЕ с Z80 и исправил это место. Написал "кажется", потому, что может быть есть ещё где-то непереностимость Z80, но я этого не знаю. Т.к для эмулятора РК на ОРИОНЕ использовал только стандартные подпрограммы, а командный монитор РК выкинул. Таким образом в стандарных подпрограммах других несовместимостей нет, но надо посмотреть все ли команды RAM-монитора работают.Сообщение от Vladimir_s
Поэтому править надо п/п-мму F809 (COUT_C), а не F818 (MSSG). При коррекциях и перетрансляциях можно произвольно менять код ПЗУ РК86, но некоторые внутренние точки двигать нельзя. Надеюсь Вы посмотрели в моём исходнике монитора РК86 те внутренние входные точки ПЗУ F800 РК86, которые необходимо сохранить для совместимости. На всякий случай привожу их.
Эти точки внутренние и теоретически не обязаны соблюдаться, но к сожалению среди программистов для РК86 нашлось несколько, грубо говоря идиотов, которые не послушались советов авторов РК86 и "лезли" во внутренние точки ПЗУ.Код:. GETLIN EQU 0F8EEH CMPDH EQU 0F990H CRHLBL EQU 0FB78H ; Выводит ВК, вправо на 4 позиции и ADR_BL RIGHT4 EQU 0F9B0H ; Выводит ВК и вправо на 4 позиции GETPRM EQU 0F92CH PUSK_VG EQU 0FACEH
Хотя идея выпустить платы РК86 на Z80 "накрылась" из-за отсутствия интереса у пользователей, но теперь я сам собираюсь починить свой РК86 и поставить туда Z80. Поэтому, на досуге странслировал ПЗУ F800 РК86 для Z80 сохраняющее все указанные внутренние точки. При этом заменой на JR-команды, без труда выиграно 110 байт. Однако пока не проверил на практике. Для начала можно проверить в виде версии для ОЗУ, чтобы не перезашивать ПЗУ.
Привожу фрагмент, чтобы показать как я избавился от неверно используемой команды JPO. Заодно посмотрите на подпрограмму HEX_A (F815). В мониторе РК она дико неэффективна (впрочем, в ПЗУ всех остальных отечественных 8-ми разрядок эта п/п-мма лишь на байт эффективнее). Я применил самый эффективный алгоритм, отчего на 11 байтах выиграл целых 3 байта ! Изменения в ПЗУ заключаются в том, чтобы заменить команду JPO (см.там где точка с запятой закомментирует JPO).
Скрытый текст
Код:. HEX_A: PUSH AF RRCA RRCA RRCA RRCA CALL NIBBLE POP AF NIBBLE: AND 0FH CP 10 CCF ADC A,30H DAA COUT_A: LD C,A COUT_C: PUSH AF PUSH BC PUSH DE PUSH HL CALL STATUS LD HL,TOBACK PUSH HL LD HL,(POSX) EX DE,HL LD HL,(EK_ADR) LD A,(ESC_F) DEC A JP M,NO_ESC ; если нет ESC-флага JR Z,BYTE2 ; если ещё не было второго байта 'Y' (1) ; JP PO,AFD73 ; <------ !!!!!! если 3-тий байт DEC A JR Z,AFD73 ; если 3-тий байт LD A,C ; четвёртый байт SUB 20H LD C,A AFCDD: DEC C JP M,ESCRES ; СБРОС ESC_F И ВЫХОД PUSH BC CALL COD18 ; на следующее знакоместо POP BC JR AFCDD ; ---------------------------------------------- AFD73: LD A,C ; третий байт SUB 20H LD C,A ; номер строки AFD77: DEC C LD A,4 JP M,SETESC PUSH BC CALL COD1A ; на строку вниз POP BC JR AFD77 ; ---------------------------------------------- BYTE2: LD A,C CP 'Y' JR NZ,ESCRES CALL HOME LD A,2 ; ПРИНЯТО 2 БАЙТА ESC,'Y' JR SETESC ; ---------------------------------------------- COD27: LD A,1 ; НАЧАЛАСЬ ESC-ПОСЛЕД-СТЬ JR SETESC ; ---------------------------------------------- ESCRES: XOR A SETESC: LD (ESC_F),A RET .[свернуть]
Кажется Вы выводите звук по INTE ?
Т.к звук в программах РК86 задействован слабо и качество его никудышное, я лично не планирую возиться со звуком по EI/DI на выходе INTE, т.е делать аппаратный эмулятор звука по схеме ОРИОН-СЕРВИС. Я собираюсь иметь звук по 'OUT FF', т.к тогда проще всего переделывать звуковые программы РК86 для Z80.
Меня интересует список игр, которые не работают на Z80, т.к мне надо адаптировать все игры РК86 для ИРИШИ, причём так, чтобы это работало как на КР580 так и на Z80.
Кроме меня никто этого не делал, а я это очень давно сделал. Там не только убрал команды вызывающие несовместимость с Z80, но и убрал работу с сигналом READY (готовность эмулируется из сигнала INDEX). Я ранее публиковал готовый листинг версии RK-DOS для Z80 в варианте для ОРИОНА.Сообщение от Vladimir_s
Чтобы это работало на РК86, надо сменить адреса размещения ДОС (на E000) и базы служебных ячеек (на 7600) и в одном месте вернуть команду инициализации ВГ75. Больше ничего менять не надо, т.к это чисто текстовая программа. Т.е надо изменить 2 цифры и вставить 2 строчки текста.
Если ещё сами не сделали и не хотите этим заниматься, то мне не трудно это для Вас сделать (тем более самому это может пригодиться, если я найду исправный НГМД, контроллер есть, а исправного дисковода нет, все 6 сдохли). Но сначала надо странслировать для ОЗУ и всё проверить. И только, потом странслировать для ПЗУ и прошить. Глупо сразу прошивать ПЗУ. Т.е, если хотите, я Вам странслирую версию RK-DOS для работы из ОЗУ и когда Вы её проверите, то можно странслировать версию для прошивки в ПЗУ.
Когда переделываете ROM-BIOS РК86 для Z80, не обязательно сразу прошивать его в ПЗУ. Гораздо разумнее сначала проверить работу новой версии ROM-BIOS в эмуляторе B2M. Для этого в конфигурационном файле РК86 достаточно указать, что процессор Z80.
NB: Новая версия эмулятора B2M (декабрь 2016) при эмуляции РК86 - не может работать со старым каталогом 'Radio', т.е недостаточно скопировать файл EMU.EXE - надо брать весь новый архив целиком. Кроме того, благодаря эмулятору можно понять какие программы РК86 не работают с Z80. К сожалению, РК-КНГМД эмулятор B2M не эмулирует и проверить RK-DOS в эмуляторе нельзя.
Последний раз редактировалось barsik; 10.01.2017 в 06:39.
Читали ли Вы исходники Монитора в книге Miller, Alan 8080/Z80 Assembly Language, techniques for improved programming ?
Последний раз редактировалось kolk; 10.01.2017 в 00:35.
Как я мог это читать? Ведь когда я изучал ассемблер в конце 80-х Интернета не было. Но если Вы мне скинете ссылку, то охотно прочитаю. Вражеский язык не является проблемой. Но зачем такие наводящие вопросы, ответы на которые ясны? Проще сразу написать в чём суть, чтобы не тратить трафик (у меня не безлимитный Интернет).Сообщение от Kolk
Последний раз редактировалось barsik; 10.01.2017 в 00:56.
Я вообще-то имел в виду сейчас. В Киеве я читал ее в 1988 в бумажном виде. И в последующих правках Монитора применял. В поиске Google качается с archive.org https://archive.org/download/8080_an..._and_Sons.djvu или https://archive.org/download/8080_an...y_and_Sons.pdf
А суть в обсуждаемом hexprint, я его оттуда брал. Поэтому и спросил. Скорее всего, этот вариант ходячий, и мог быть найден в другом месте или переизобретен. А вообще, Монитор РК сильно ужимается выносом в подпрограммы дублирующего кода и повальным IN/OUT (к сожалению, непригодно для Z80).
Последний раз редактировалось kolk; 10.01.2017 в 01:21.
Оно в конечном итоге так и есть. Я в оболочке своего FDOSa прятал курсор так - записывал в последнюю доступную для монитора ячейку код 8F (черные символы на черном фоне), а потом с помощью директивы F818 (1BH,59H,38H,5EH,0) помещал туда курсор, который становится совершенно невидимым. Так вот с Z80 курсор хаотично прыгал по левому краю экрана. Ошибку я начал искать естественно с F818, где переход на п/п вывода символа с аккумулятора, ну и F809.
Нет, у меня стоит ВИ53. И прекрасно выводит звук.
Я думаю это многим будет полезно. Так что заранее благодарен.
- - - Добавлено - - -
И да - в этих же адресах то же самое нужно править в Апогее.
- - - Добавлено - - -
В каких адресах?
- - - Добавлено - - -
У меня на плате предусмотрена возможность включения как ВМ85, так и Z80. И на них нет вывода INTE.
Последний раз редактировалось Vladimir_S; 10.01.2017 в 04:54.
Привожу перетранслированный для Z80 ROM-BIOS РК86. Здесь более 120 свободных ячеек. Сам код почти оригинал. Если выкинуть из монитора никому ненужные зачатки отладчика, то освободится еще 20-30 байтов. Если флаг ORIG поставить =0, то курсор большой. Но проверить это можно только в реале, т.к эмулятор B2M не точно эмулирует вывод курсора. Данная версия не проверена в реале, а только в эмуляторе B2M с config-файлом РК86 изменённым для Z80.
Речь шла о схеме ловушке, которая используя сигнал /M1 и биты данных, отлавливает команлы EI и DI, соответственно выставляя триггер. Эта схема входила в вариант установки Z80 на ОРИОН от МП ОРИОН-СЕРВИС, позволяя слышать INTE звук на Z80.Сообщение от Vladimir_S
Странный вопрос. Странслировать можно для любого адреса. Изменить цифру в тексте не проблема. Но для совместимости с программами для RK-DOS РК86 ничего изменить нельзя - совместима будет только RK-DOS на E000 (в ПЗУ) с рабочими ячейками ДОС в области 7600H. А для проверки дискетных подпрограмм - годится любой адрес в ОЗУ (например 6000), переделывать внешние SYS-команды для проверки не требуется, т.к команды SAVE, LOAD внутренние.Сообщение от Vladimir_S
Последний раз редактировалось barsik; 15.01.2017 в 01:52.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)