User Tag List

Показано с 1 по 10 из 311

Тема: РАДИО-86РК на Z80

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Pyk
    РК-ДОС. Оригинальная версия, та, что была в журнале
    RK-DOS не было в журнале РАДИО, а там была только реклама МП "Лианозово", где можно было купить эту ДОС. В каком журнале и когда публиковали RK-DOS?

    Цитата Сообщение от Pyk
    Что, кроме IN/OUT там такого использовалось, что делало ее несовместимой с Z80?
    Чтобы увидеть, что изменено в исходниках RK-DOS сделайте в текстовом редакторе поиск '****' и слова 'W_INC'. Вообще все изменения помечены, как минимум так: '; *'. Т.е можно искать точку с запятой, пробел и звёздочку (астерикс).

    Цитата Сообщение от Pyk
    Что касается мониторов, то не заметил проблем ни с Z80-вариантом, ни с совместимым с Z80
    Вообще-то, если у Вас эмулируется базовая архитектура, то с этими ПЗУ должен быть какой-нибудь глюк.

    Т.к в этих ПЗУ по WBOOT (а для РК86 WBOOT это и есть вход в CCP) делается инициализация доп.ППА F100 (все порты на вывод) и по адресу F102 (т.е в порт C) записывается число 2. Иначе в окне 8400...BFFF оказывается включённым основное ОЗУ и при попытке использовать ОЗУ 8400 портится программа в основном ОЗУ. Таким образом при записи на F100..F103 на базовом РК86 мы попадаем в ДМА ВТ57, что адресуется по адресам E000...FFFF. И ожидаю, что режим ПДП изменится и будет улёт.

    Но проверить это реально не могу, т.к во-первых, у меня с 1993 стоит дешифратор на адрес F000, как делается при установке РК-КНГМД, а во-вторых, мой РК86 дохлый и заняться его ремонтом в ближайшее время не имею возможности и желания. Т.к жаль тратить время на РК86, - сейчас мне интереснее ИРИША, а РК86, сейчас я рассматриваю лишь как источник программ для ИРИШИ. Но через некоторое время я собираюсь поставить на РК86 процессор Z80 и подключить к нему дохлый винчестер (в смысле уже не пригодный для IBM PC).

    Если в Вашем эмуляторе ещё нет "верхнего ОЗУ", просто забейте в исходнике ПЗУ F800 инициализацию доп.ППА, а ещё лучше просто верните адрес доп.ППА на стандартные A000. Тогда на реальном базовом РК86 без РК-КНГМД конфликта с ДМА ВТ57 не будет.

    В эмуляторе переключение кусков в ОЗУ в окне 8400...BFFF сделать сложнее, но просто включить в этом окне некоммутируемое ОЗУ намного проще (именно так сделано в моём эмуляторе РК на PC, а в эмуляторе РК на ОРИОНЕ расширенного ОЗУ вообще нет, только 32К, т.к в ОРИОНЕ сам код эмулятора расположен в ОЗУ 8000...BFFF).

    Цитата Сообщение от Pyk
    почему-то при выводе списка файлов не происходит возврат каретки и перевод строки
    Вероятно, DIR дохлый из-за того, что я что-то нарушил при модификации. В версиях для ОРИОНА команда DIR была доработана, чтобы список файлов выдавался не в одну колонку (что идиотизм), а в 2 или 3 колонки (в зависимости от числа символов в строке), т.е чтобы можно было видеть все файлы, если их на диске больше, чем 24.

    Я попозже странслирую те же версии с "родным" DIR-ом или посмотрю что там, подставив этот DIR в версию РК-ДОС для эмулятора РК86 на ОРИОНЕ (т.к моя версия эмулятора РК86 на PC не поддерживает РК-ДОС, точнее не было версии RK-DOS). В этом DIR должно было проверяться число символов в строке, т.к при разных драйверах RK-DOS м.быть 48/55/64 символов в строке, и в зависимости от этого в команде DIR менялось число колонок в которых выводится каталог.

    Могу скинуть версию CP/M РК86 работающую с РК-КНГМД. Хотя она и для "верхнего ОЗУ". Так как для основного ОЗУ CP/M вообще не имеет смысла (т.к она сама занимает 10К, оставляя для программ всего ~17 кб). Но для эксперимента (в смысле проверки верности эмуляции РК-КНГМД в Вашем эмуляторе) её можно странслировать в основное ОЗУ.

    Цитата Сообщение от Pyk
    Basic Plus не работает на Z80
    Все бейсики производные от бэйсика МИКРО-80 на процессоре Z80 не работают. Хорошо бы, если бы кто-нибудь занялся этой проблемой. Что там надо менять знает только В.Пушков, который исправил бэйсик ОРИОНА для Z80. Меня бэйсик никогда не волновал, так что ничего не знаю на эту тему.
    Последний раз редактировалось barsik; 23.01.2017 в 22:25.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    05.04.2013
    Адрес
    Починки, Нижегородская обл.
    Сообщений
    1,377
    Спасибо Благодарностей отдано 
    407
    Спасибо Благодарностей получено 
    657
    Поблагодарили
    257 сообщений
    Mentioned
    27 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    barsik, итак, по-порядку:

    1. Действительно, листинга РКДОС в журнале не было. Были лишь ссылки на нее и контроллер, предназначенный для работы с ней. Это моя неточность.

    2. Смотрю, кроме обращений к портам там еще много где меняется INR M на LD A, (HL) \ INC A. Смысл последней замены от меня пока ускользает, видимо по каким-то причинам нужно, чтобы в памяти по адресу (HL) оставалось неизменное значение? За что вообще W_INC отвечает и при чем тут Z80, пока не понимаю; если поясните, буду благодарен. Как я уже писал, после разрешения обращения к устройствам как к портам я проблем в работе РКДОС не заметил, не вижу пока в чем может быть дело, и в исходнике - команд JP PE / JP PO там нет...

    3. Тестировал, действительно, на базовой архитектуре. Глюков не заметил, так как в базовой архитектуре порт F102 попадает в порт канала 1 ПДП, который на РК не используется. Расширенную архитектуру готов сделать, можно только резюмировать, правильно ли я понял, что где находится?
    - 8000-83FF - осн. ППА
    - 8400-BFFF - доп./ основное ОЗУ, переключаемое битом D0 порта C дополительного ППА. если d0=0, то совпадает с основным ОЗУ по адресам 400-3FFF (не уверен, что правильно понял)
    - C000-DFFF - вг75
    - E000-EFFF - вт57 / РКДОС
    - F100-F1FF - доп. ППА
    - F200-F2FF - ПИТ
    - F300-F3FF - порт переключения банок основного ОЗУ... тут не понял, совпадает ли вторая банка с тем, что отображается на 8400-BFFF когда D0=1 либо это самостоятельная область памяти?
    - F800-FFFF - ПДП/ПЗУ
    Не понял насчет переключения шрифтов битом d7. Вроде бы ранее было предложено менять шрифты атрибутом rvv? Альтернативный шрифт в бинарном виде пока недоступен? Да и основной, смотрю, тоже высотой 8 строк, а не 10...

    4. От CP/M не откажусь, можно посмотреть. По возможности было бы неплохо еще готовые образы дисков для нее. Перекомпилировать для основного ОЗУ нет необходимости, добавить "верхнее" не проблема.

    P.S. Кстати, формат .rk без синхробайта - как раз мой, а вот gam с ведущим синхробайтом был использован А. Деминым (aka begoon)...
    Последний раз редактировалось Pyk; 23.01.2017 в 23:35.

  4. #3

    Регистрация
    14.01.2010
    Адрес
    г. Шумерля, Чувашия
    Сообщений
    1,358
    Спасибо Благодарностей отдано 
    27
    Спасибо Благодарностей получено 
    42
    Поблагодарили
    37 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от barsik Посмотреть сообщение
    В каком журнале и когда публиковали RK-DOS?
    Это не то?
    https://yadi.sk/d/9_8GUIyQ3AXdQK

  5. #4

    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Pyk
    За что вообще W_INC отвечает и при чем тут Z80, пока не понимаю; если поясните, буду благодарен
    W_INC (with INC) значит с командами INC (HL), когда HL адресуется в порт. INC (HL) делает считывание из порта и тут же запись в него. Это работает на РК86, но не всегда работает на ОРИОНЕ, даже с тактом всего в 2.5 МГЦ. А при Z80 в ОРИОНЕ такт всегда 5 МГЦ, неважно сделана схема ТУРБО с WAIT (142%) или ТУРБО-200%. ВВ55 не любит когда два обращения в порт происходят сразу друг за другом. Нужна пауза между обращениями. Поэтому была применена условная трансляция, чтобы иметь оба варианта. По этим же соображениям многие константы были увеличены вдвое.

    8000...83FF - ППА клавиатуры
    8400...BFFF - доп.ОЗУ, переключаемое битами D0...D5 порта C доп.ППА
    C000...DFFF - ВГ75
    E000...EFFF - ВТ57 / ПЗУ с RK-DOS или другим кодом
    F000...F0FF - РК-КНГМД (факультативно)
    F100...F1FF - доп.ППА (тот что называется D14)
    F200...F2FF - ВИ53 (факультативно)
    F800...FFFF - ПДП/ПЗУ с ROM-BIOS

    То, какое ОЗУ прокачивается в окне 8400...BFFF, зависит от физической реализации. Может быть совмещённое ОЗУ и две разных банки ОЗУ (РУ5+62256). Самый дешевый вариант это РУ5 и прокачка в окне 4-х сегментов из неё размером по 16К (хотя доступно лишь 15К из 16-ти). При этом отображаемые в окне 8400 сегменты с номерами 0 и 1 оказываются из основного ОЗУ с адресов 0400...3FFF и 4400...7FFF. Можно сделать так, чтобы при РУ5-тых было только два сегмента, т.е управление только битом D0, тогда это получается как будто есть 2 банки ОЗУ, одна - основное ОЗУ, другое - оконное, хотя физически всё в одной банке РУ5-тых. Но при РУ7-мых такой трюк не проходит, т.к 32К не являются половиной от 256К.

    Но если ОЗУ - несовмещённое, т.е состоит из двух разных банок ОЗУ, то в окне 8400...BFFF никак не включить основное ОЗУ из РУ5-тых, там всегда включается ОЗУ из 62256 или W24257. Это программно может определить программа и соответственно назначить начальный адрес эл.диска, так что эл.диск не конфликтует с основным ОЗУ при любой физической конструкции.

    В эмуляторе надо реализовать большое ОЗУ. А значит, это совмещённое ОЗУ в 288К с прокачкой всех 288 Кб в окне 8400...BFFF. Т.е сегменты 0 и 1 в окне 8400 должны быть совмещены с основным ОЗУ 0...7FFF. 288К, а не 256К потому что, из-за недоступности в окне в каждом куске в 16К участка в 1 кб, чтобы логически иметь 256К, физически надо иметь 288К, т.е 4 банки по 64К + ещё пол-банки 32К. А на реальном РК на РУ7-мых подпрограммами F836/39 в последней 3-тьей банке доступно лишь 48К из 64К, т.е всего 32+30*7=242К, что чуть больше, чем 241К физически доступных в ОРИОНЕ на РУ7-мых..

    На реальном РК86 с РУ7 при чтении сегмента с номером 16 будет читаться кусок основного ОЗУ 0400...3FFF, т.к физически банки 4...7, 8...11, 12...15 и т.д, это тоже самое, что банки 0...3, т.к управление выбором сегмента только 4-мя битами (в КП11 всего 4 разряда).

    Регистр, для пробы установленный по адресу F300, в эмуляторе B2M должен был переключать целую полубанку в адресах 0...7FFF, по принципу цельнобанковой коммутации ОРИОНА. Т.о при РУ5-тых получалось две полубанки, а при РУ7 - 8 полубанок.

    Никто такого реально никогда не имел. Хотя реализация при РУ5 самая простейшая из всех доработок. Если для коммутации использовать бит PC1 ППА клавиатуры, то расход деталей - кусок проволоки. На адрес A15 у мультиплексора КП11 просто заводится бит. Сюжет заключается в том, что тогда есть доступ ко всему ОЗУ без потерь. Минусом такой архитектуры является то, что только подпрограммой из ПЗУ F800 можно читать и писать в дополнительных полубанках.

    Однако иметь ОЗУ выше 8000 важнее, чем потеря ОЗУ в 6% при окне не кратном 8 Кб. Делать и окно на 8400 и цельно полу-банковую коммутацию по 32К одновременно - слишком громоздко. Хотя при наличии 62256, что включена двумя страницами в окне 8400...BFFF, имеющуюся на плате банку РУ5 разумно использовать целиком как две полубанки (т.к куска проволоки никому не жалко). Что даёт в сумме 94 (32+32+30) кб.

    Цитата Сообщение от Pyk
    Не понял насчёт переключения шрифтов битом D7. Вроде бы ранее было предложено менять шрифты атрибутом RVV?
    Атрибут RVV это ReVerseVideo и его всегда применяют для инверсии знакомест. А атрибуты HGLT, GPA1, GPA2 (General Purpose Attribute) могут использоваться произвольно. Во-первых одного атрибута для фонтов - мало. Считайте сами. Как минимум, нужен фонт для режима графики 192*100, нужен фонт с инверсией, нужен фонт КОИ-8 и базовый фонт. Поэтому управлять фонтами атрибутами не надо. Пусть атрибуты идут на цвет.

    Управление инверсией атрибутом неудобно, т.к не позволяет использовать встроенный в ПЗУ драйвер вывода символов. В то время как инверсия за счёт фонта на порядок удобнее и проще. И главное позволяет иметь инверсные окна с рамками, что даёт программам совсем другой вид. Я использовал в своё время атрибут RVV для инверсии, но отказался. Но сама переделка для RVV на моём РК сделана и она ничему не мешала. И её надо иметь, потому что инверсия фонтом неполноценная и пригодна только для системных программ. Т.к число символов сокращается вдвое с 128 до 64 и остаются только латинские буквы.

    Цитата Сообщение от Pyk
    Альтернативный шрифт в бинарном виде пока недоступен? Да и основной, смотрю, тоже высотой 8 строк, а не 10
    У меня на реальном РК86 фонт в РФ2, т.е всего 2К. Изначально на РК с 60 кб для CP/M был фонт с матрицей 8*10 (только ASCII), но не было никакой совместимости. Впоследствии, я догадался как расширить ОЗУ в РК совместимо, вернул архитектуру РК и стал использовать фонт 8*8 с инверсией. Потому что старые игры РК рассчитаны на фонт высотой в 8 точек. Т.е при 2-х кб ПЗУ можно иметь на выбор, - или фонт 8*10 или два фонта 8*8, один из которых с инверсией. Но для эмулятора нет проблемы иметь фонт и в 4К и 8К, так что такой выбор не стоит. Иметь фонт 8*10 удобно только если в РК есть много фонтов, один из которых - базовый и высотой в 8 точек, чтобы иметь совместимость.

    Фонт с инверсией у меня есть в ПЗУ реального РК, надо лишь перенести на PC, есть также где-то в виде листинга в исходнике эмулятора. Но пока нечего смотреть с фонтом с инверсией, т.к это использовано только в НОРТОН-ах, а они только для ДОС.

    С трудом сделал ROM-BIOS для КР580 с подпрограммами F836/39. После выкидывания директивы X и стоп точки в директиве G, освободилось почти 90 байт. За счёт этого удалось уместить подпрограммы F836/39 и ввести 2 новые команды. Доп.информация в начале листинга. Используйте этот ROM-BIOS в эмуляторе B2M. Версию ROM-BIOS для Z80 тоже обновлю, т.к нашёл способ выиграть ещё несколько байт. Обращайте внимание на число просмотров и на дату упаковки архива, а также даты в исходниках. Если число просмотров для давно выложенного RAR-файла равно 0, значит этот архив был обновлён, т.к всё устаревшее или дохлое в выложенных ранее RAR-файлах я удаляю или заменяю.

    - - - Добавлено - - -

    Цитата Сообщение от uart
    Микроша круче
    Никто с этим спорить не может. Но "ещё не вечер"... Может быть и РК86 с дополнительным ОЗУ будет не хуже. Кстати, скажите, фонт в МИКРОШЕ более красивый 8*8 или её изготовители не додумались и оставили фонт такой же как в базовом РК - 6*8?

    Цитата Сообщение от uart
    Чего вы так к РК86 привязались?
    Люди пользуются реальной РК86, потому что её имеют. А в эмуляторе, потому что про РК86 что-то знают, а про МИКРОШУ и ПАРТНЁР никто ничего не знает, т.к это малораспространённые среди самодельщиков машины. Готовые промышленные ЭВМ покупали "отцы семейств", а радиолюбители РК86 делали себе сами. А так как на этом сайте больше радиолюбителей, то отсюда и "привязка" к РК86.

    Хорошо, что Вы напомнили о МИКРОШЕ, т.к это связано с темой ПЗУ.

    У меня программ от МИКРОШИ никогда не было, но в дистрибутиве EMU80 в 1999 я нашёл кучу программ от МИКРОШИ и убедился, что они не работают в моём эмуляторе РК86 на ОРИОНЕ, т.к в эмуляторе совсем иной код ПЗУ F800. Дело в том, что в МИКРОШЕ несовместимое с РК86 ПЗУ, даже по стандартным точкам. В частности WBOOT там не F86C, а F89D. Ну а внутренние точки вообще несовместимы, и также для МИКРОШИ полно глупых авторов, что лезут в нестантартные точки ПЗУ глубоко внутри ПЗУ F800. Идиотизм, ради экономии трёх байтов терять совместимсоть.

    Обнаружил, что программы МИКРОШИ по большей части вообще наглые и неграмотные. Вместо того чтобы считать стек в HL и проверить старший байт, чтобы узнать ОЗУ 16К или 32К, там сдуру лезут в ПЗУ в то место где стоит команда LD SP,STACK и смотрят старший байт. Это идиотизм (что, кто-то не согласен?). Причём, т.к в РК86 и в МИКРОШЕ эти байты - в разных адресах, то сначала идиотским способом выясняется тип машины - это РК86 или МИКРОША?. Для чего смотрится куда идёт JMP с адреса F800. Если там стоит адрес F836, то это РК86, иначе - МИКРОША. Т.е программы МИКРОШИ сделанные универсальными, - "привязаны" к коду ПЗУ РК86.

    Поэтому если использовать 100% совместимое, но не базовое ПЗУ F800, то программы МИКРОШИ успешно глюкаются на РК86. Исправление такой глупости конечно несложно, но неприятно. Теоретически, можно даже написать программку, которая ищет в коде программ МИКРОШИ команды которые считывают несколько популярных точек внутри ПЗУ F800, чтобы сделать вывод о том, МИКРОША это или РК86. Но вообще-то руки надо отрывать авторам таких программ. Всякий, кто "привязывается" к конкретному коду ПЗУ, - это явный "враг народа". Чтобы определить МИКРОША или РК86 надо тестировать где стоят В/У. Например, ППА легко определить. Также идентифицировать другие БИС несложно.
    Вложения Вложения
    Последний раз редактировалось barsik; 27.01.2017 в 00:47.

  6. #5

    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vladimir_S
    Вот схема ADR.JPG
    Посмотрел схему ADR.JPG. Сначала увидел /IORQ и решил, что Вы эксклюзивно включили РК-КНГМД в область В/У, т.е с ним можно работать ТОЛЬКО командами IN/OUT? Но RK-DOS и программы для неё работают командами LD, т.к в реальности РК-КНГМД включён в области памяти, а не в области В/У. Если так сделать, то придётся корректировать все программы, в том числе и RK-DOS. Причём эта коррекция очень сложна. Как заменить конструкцию вида LD A,(HL), где HL меняется по INC или ещё как-то. Сделать так, было бы "самовредительством". Т.к команды OUT Е.Седов применил лишь в тех местах, где идёт прямая адресация. Но в основном RK-DOS работает с РК-КНМД с помощью команда LD A,(HL) и LD (HL),A. К тому же Е.Седов использует некорректную команду INC (HL), когда HL указывает в ППА. Это единственная в мире попытка инкрементировать порт. ППА для этого не предназначен. Он нуждается в паузе между двумя командами записи в него (порядка 1 МКСЕК), оттого этот трюк работает только на скорости 1.77 МГЦ.

    Однако в итоге, заметил, что выходы дешифратора портов объединяются на ЛИ1 с какими то сигналами. Предположительно, выборками портов в памяти. Такая конструкция должна работать.

    Vladimir_S и Pyk. Вот пожалуйста. Самая близкая к оригиналу версия RK-DOS для Z80. Содержит полностью идентичный оригиналу код, за исключением того, что команды IN/OUT заменены на LD. Эта версия просто обязана работать. Если работает версия для КР580, то точно будет работать и эта версия.

    NB: Если у Вас порт доп.ППА (D14) стоит не на F100, то Вам надо корректировать адрес порта на реальный. Иначе, если дешифратора нет, то адрес F100 эквивалентен адресу F000, где стоит ППА платы РК-КНГМД. А так как при старте ДОС эти порты программируются по разному, то в этом случае порт РК-КНГМД окажется запрограммированным, как порт принтера, и естественно RK-DOS работать не будет. В этой версии, я на всякий случай изменил адрес доп.ППА на оригинальный A000 и тем самым при работе RK-DOS ОЗУ по этому адресу будет портиться (поэтому не транслируйте RKDOS в этот адрес). Это справедливо для моих версий RK-DOS, версия Е.Седова вообще не инициализирует порт принтера (считая, что он уже инициализирован при старте монитора).

    Здесь, чтобы выиграть 25 байтов, мне пришлось забить вывод на принтер. Теперь при печати на принтер вывод пойдёт на экран. Эта версия будет работать и при Z80 и при КР580.

    Но! Сигнал READY здесь, как и в оригинале должен быть аппаратным. В крайнем случае закоротите READY на землю. Если будут сбои из-за медленной раскрутки, то и сигнал START закоротите на землю. Тогда колесо будет всегда вращаться, поэтому на сигнал START лучше поставить тумблер и отключать вращение колеса при ненадобности. Такая проблема возможна на старом DD-дисководе 5.25". Дисководы 3.5" и HD-5.25" (включённые перемычками в режим DD, чтобы скорость колеса была 300 об/мин) разгоняются быстро и т.к делается 10 попыток чтения перед признанием сектора дохлым, то на них всё работает.

    Цитата Сообщение от Pyk
    почему-то при выводе списка файлов не происходит возврат каретки и перевод строки
    Относительно версий RK-DOS для Z80 полученных из версий ОРИОНА и выложенных 3 дня назад, в которых у Вас не работала команда DIR. Я визуально просмотрел текст команды DIR и глюков не обнаружил. Зато обнаружил, что в исходнике файла с именем RKDOS сохранён оригинальный код DIR, выводящий в одну колонку. Чтобы получить версию с "родным" DIR, достаточно откомментировать оригинальный DIR и закомментировать DIR, что выводит файлы в 3 колонки. Чтобы проверить процедуру DIR я взял и целиком подставил её в версию RK-DOS работающую в моём эмуляторе РК86 на ОРИОНЕ. Там процедура чтения/записи сектора работает не с РК-КНГМД, а с ОЗУ ОРИОНА, но для DIR это без разницы. И всё работало. Так что в команде DIR ошибок нет.

    При выводе DIR имена файлов выводятся на консоль, а возврат каретки выводится подпрограммой OUT_13, которая выводит код 13 в канал (т.е вызывается подпрограмма, адрес которой в векторе канала на вывод). Вывод кода 13 (что собственно перевод строки) в РК86 автоматически как бы дополняется кодом 10 (что и есть перевод строки), т.е производится переход на другую строку. Это идиотское свойство, которого нет в других компьютерах (для перехода в начало следующей строки там надо выводить на консоль и код ВК и код ПС). Чтобы проверить, что неверно инициализирован канал вывода, замените 'CALL OUT_13' на 'LD C,13 : CALL 0F809H' (только в процедуре DIR ) и посмотрите не будет ли выводиться возврат каретки в команде DIR. Впрочем, я это тоже сделал для Вас.

    Прилагаю те же самые версии RK-DOS, но в них введена условная трансляция по ключу
    DIRORG. Если этот флаг не нулевой, то транслируется полностью оригинальный DIR, иначе
    DIR с выводом в 3 колонки.

    Ключ NO_KAN заменяет в командах DIR вывод кода 13 в канал вывода - на вывод кода 13 на MCOUT (F809).
    Вложения Вложения
    Последний раз редактировалось barsik; 28.01.2017 в 04:10.

  7. #6

    Регистрация
    12.12.2011
    Адрес
    г. Иркутск
    Сообщений
    2,509
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    22
    Поблагодарили
    20 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    barsik, Завтра попробую.

    - - - Добавлено - - -

    Хотя теперь со схемой дешифрации портов IN/OUT в формате Z80 работает.

    - - - Добавлено - - -

    Цитата Сообщение от barsik Посмотреть сообщение
    Но! Сигнал READY здесь, как и в оригинале должен быть аппаратным.
    У меня несколько 3.5 дисководов с полноценным сигналом READY.

    - - - Добавлено - - -

    Цитата Сообщение от barsik Посмотреть сообщение
    Вы что же включили РК-КНГМД в область В/У, т.е с ним можно работать ТОЛЬКО командами IN/OUT?
    По схеме ведь видно, что по команде IN/OUT сигналом IORQ подключаются порты С(х), Е(х), и F(х). В остальное время через элементы 2И дешифрация стандартная. Т.е. например к ВГ75 можно обратится и OUT С8 и по адресу С008. И кстати, если бы обращение было ТОЛЬКО по IN/OUT, то комп бы вообще не работал в мониторе.

    - - - Добавлено - - -

    barsik, не работает и с Z80 и ВМ85.
    Последний раз редактировалось Vladimir_S; 25.01.2017 в 18:03.

  8. #7

    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vladimir_S
    RK-DOS, где лишь только команды OUT заменены на LD не работает ни с Z80 ни с с 8085.
    Печально и удивительно.

    Но очень плохо, что Вы не даёте подробной информации, о том, что и как. Какое поведение? Что-то же должно работать. Ну хотябы-бы колесо-то стартует? Готовка отползает на 32-тый трек (где каталог)? Я почти уверен, что не посадил ляпов при замене OUT на LD. Хотя про тот листинг, что был взят за исходник, ничего сказать не могу. Он "пришёл" из глубины веков... из 1993-94. Да и при хранении на древних носителях могло что-то произойти (после крушения винта в 2000, мне пришлось все файлы переносить на PC заново с древних носителей, и естественно, я уже не помнил как какие-то файлы получены, потому переносил, всё подряд, оттого так много дублирующих файлов). Оттого в моём архиве полно версий RK-DOS и в некоторых даже написано "Полный оригинал".

    Замена кодов OUT отнимает 5 минут (перестановкой строк из версии, где это уже сделано). Так что я сейчас повторю замену кодов OUT с другим исходником RK-DOS и выложу, через час. Но чтобы уже и "комар не подкопался", то предварительно проверю исходный текст на полную идентичность с оригиналом. Точнее, нет. Я просто в эту версию введу условную трансляцию с ключом W_OUT (with OUT), т.е смогу реверсировать замену команд OUT, и получить, якобы, оригинал и полученный объектный код сверю с оригиналом Е.Седова.

    А вообще-то в таких случаях надо писать специальный тест, где работоспособнать проверяется по пунктам. Тогда можно точно выяснить, что конкретно не работает. Это тоже несложно, если все подпрограммы работающие с железом есть по отдельности. А у меня как-ра это есть, т.к пришлось это сделать, когда делал CP/M на безе РК-КНГМД для ОРИОНА. Тогда тест не понадобился, т.к железо было отлажено ещё на РК86, а CP/M заработала сразу.

    Но на написание теста надо уже потратить пару часов. Надеюсь обойдется без этого, т.к написать новую программу без возможности её проверки, чревато ошибками.

    В какое ОЗУ Вы транслировали этот исходник. Я там поставил 6000, исходя из того, что Вы не будете использовать AUTOEXEC, т.к при открытии каждого файла уровень RAMTOP снижается, кажется, на 512+160 байтов. Попробуйте странслировать в другие адреса - на 5000, на 9000.
    Последний раз редактировалось barsik; 21.02.2017 в 11:18.

  9. #8

    Регистрация
    12.12.2011
    Адрес
    г. Иркутск
    Сообщений
    2,509
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    22
    Поблагодарили
    20 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от barsik Посмотреть сообщение
    Но очень плохо, что Вы не даёте подробной информации, о том, что и как.
    Оригинальная прошивка DOS с процессором ВМ85 уже не первый год работает без единого сбоя. С Z80 вроде как стартует, головка перемещается, движок крутит и светодиод загорается. Потом все останавливается и пишет I/O ERROR и выводится промт А> и на любую (даже безсмысленную) команду все повторяется как при старте. В прошивке с замененными IN/OUT то же самое уже с любым процессором.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Радио-86РК: Видеовыход
    от m.d. в разделе Радио-86РК
    Ответов: 13
    Последнее: 21.05.2015, 08:19
  2. Радио-86РК: По страницам журнала "Радио"
    от Viktor2312 в разделе Радио-86РК
    Ответов: 79
    Последнее: 13.02.2014, 08:34
  3. эмулятор радио-86рк
    от sergey2b в разделе Эмуляторы отечественных компьютеров
    Ответов: 4
    Последнее: 09.06.2011, 15:59
  4. Радио 86РК
    от Shnurkov в разделе Барахолка (архив)
    Ответов: 1
    Последнее: 02.01.2009, 12:52

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •