nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 07:20



Reply to topic  [ 219 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6, 7, 8 ... 15  Next
Радио-86РК на 8088 (или 8086) 
Author Message
Doomed
User avatar

Joined: 19 Feb 2017 03:46
Posts: 584
Location: Санкт-Петербург, Россия, третья планета от Солнца, галактика Млечный Путь
Reply with quote
Post 
PVV wrote:
to barsik - конвертированные исходники можно выложить?
Конечно, но пока ещё нЕчего выкладывать. Я не собирался сегодня конвертировать монитор РК86 в работающие коды 8088 процессора.

Меня интересовало лишь сравнение объёмов кода программ написанных для 8080 и 8088. Лишь для примера взял ROM-BIOS РК86, т.к "он был под рукой", его размер мне известен, а другие исходники под КР580 было долго искать. Я сконвертировал и потратил 20 минут на редактирование. Даже не добивался, чтобы не было ошибок при трансляции TASM-ом (настоящим TASM-ом, т.е борландовским, а не табличным). Сейчас транслируется с ошибками, для устранения надо ещё чуть отредактировать. А затем надо отлаживать в эмуляторе.

Удачно, если эмулятор B2M эмулирует процессор 8088. Если это так, то достаточно в начале конфиг-файла задать соответствующий тип процессора и частоту клока. Постараюсь вскоре выложить конвертированный исходник. Но нет гарантии, что рабочий. Необходимо отладить это в эмуляторе от b2m, если там эмуляция РК с процессором 8088 действительно возможна.

Для начала выкладываю КР580-исходник ПЗУ РК86 с 177 свободными байтами (а если Вы удалите добавленные мной директивы K и H, то будет свободно более 200 байтов) из которого делал конверсию. Исходник изначально был в кодах Z80, потому предварительно пришлось его конвертировать из Z80 в КР580, т.к в мнемониках КР580 я с трудом разбираюсь (из-за конверсии русские тексты стали заглавными буквами). Так что можете сами конвертировать и отредактировать.

Вообще-то интереснее написать свой ROM-BIOS, а не конвертировать эр-кашечный. Эр-кашечный монитор как раз неудобный. Есть более лучшие реализации, хотя не факт, что компактнее. Видимо, совместимость по стандартным входам разумно оставить, - так привычнее.

PVV wrote:
Для начала надо обдумать карту адресного пространства
Желательно иметь как минимум 4 кб ПЗУ (или ОЗУ) для размещения ROM-BIOS в области F000 (т.к 2 кб для 8088 маловато). Служебные ячейки д.быть выше экранного ОЗУ. Тогда при увеличении размера экранного ОЗУ при перепрограммировании ВГ75 на большее число строк (отчего объём экранного буфера растёт пропорционально числу строк) служебные ячейки ПЗУ не будут затираться. Должно быть возможно расширение экрана вниз при увеличении числа строк с 25 видимых строк до 31 строки, и далее до 43 строк, и даже до 51 строки.

Теоретически желательно бы иметь отключаемое "теневое ПЗУ" в области 0...7FFF, а при его отключении всё адресное пространство - ОЗУ, чтобы можно было оперативно модифицировать ROM-BIOS. Но на реальной плате РК86, чтобы было минимум коррекций, придётся ограничиться 48 кб ОЗУ (до C000) и имеющимся ПЗУ в 2 кб, предусмотрев загрузку ОС из ROM-диска, читаемого через порт запасного ППА D14.


Attachments:
ROM RK86 source.rar [40.64 KiB]
Downloaded 284 times


Last edited by barsik on 02 Jun 2018 23:14, edited 3 times in total.

02 Jun 2018 13:08
Profile
Devil

Joined: 26 May 2003 06:57
Posts: 859
Reply with quote
PVV wrote:
Для начала надо обдумать карту адресного пространства и собрать конфигурацию в b2m.

Если будешь делать, возьми за основу Поиск. Обрати внимание, как сделана раскладка памяти - эмулятор делался с упором на 16-битную адресацию, и MemMap в этом конфиге используется нетрадиционно (для 20-битного адреса).

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


02 Jun 2018 13:50
Profile WWW
Maniac

Joined: 18 Nov 2013 15:15
Posts: 209
Location: все оттуда ;)
Reply with quote
b2m wrote:
Если будешь делать, возьми за основу Поиск.

Зачем брать за основу пародию ?
Лучше уж оригинальный IBM PC/XT !


02 Jun 2018 14:58
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Склеил вместе 3 топика про РК86 на 8086/8088 - продолжайтесь :roll:

_________________
:dj: https://mastodon.social/@Shaos


02 Jun 2018 21:53
Profile WWW
Doomed
User avatar

Joined: 19 Feb 2017 03:46
Posts: 584
Location: Санкт-Петербург, Россия, третья планета от Солнца, галактика Млечный Путь
Reply with quote
Post 
Во вложении якобы монитор для РК86 с процессором 8088. Удалось уместить всё в 2 килобайта. Т.е сохранены все команды базового монитора, в том числе и магнитофонные (а они уж явно не будут работать, т.к все времянки иные). Но из-за нехватки места пришлось убрать добавленные мною директивы K и H (при этом в оригинале на КР580 свободно более 200 байтов).

Здесь конвертированный 8088-исходник и два компилятора TASM. Древний 2.0 из 1986 и более свежий уже из 90-тых. СтоИт ключ .8086. Но почему-то древний компилятор 2.0 не хочет признавать команды сдвига типа ROL AL,4.

А более свежий компилятор транслирует без проблем. Не знаю есть ли в 8088 такие команды. Возможно есть только ROL AL,CL. Может быть из-за этого ошибка. А более свежий компилятор возможно просто не знает об этом, считая, что целевой процессор, как минимум 286-той. Но если сдвиги заменить на многократные ROL AL,1 , то не хватает примерно 10 байтов места. Если таких команд в 8088 нет, то видимо, придётся удалять какую-то директиву, чтобы освободить место.

Теперь из OBJ надо как-то получить коды без MSDOS загрузчика. Естественно, это непроверенный и скорее всего дохлый вариант. Надо отлаживать. Этим не занимался. Если имеющиеся эмуляторы РК86 поддерживают процессор 8088, то в ближайшие дни проверю и если не работает, то отлажу. Но Вы можете уже начинать отладку, как для базовой архитектуры, так и изменив её.

Вложения: вложение отсюда удалил, т.к оно с ошибками, выложил исправленный вариант далее.


Last edited by barsik on 03 Jun 2018 03:39, edited 1 time in total.



02 Jun 2018 22:49
Profile
Doomed

Joined: 12 Feb 2016 13:39
Posts: 463
Reply with quote
у 8086 адрес старта по сбросу 0xFFF0, а не 0000 как у 8080, соответственно нужно добавить
Code:
                CSEG
                ORG     0FFF0H

               JMPF    BEGIN                   ;JMPF to start of this Monitor


03 Jun 2018 00:31
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post Re:
barsik wrote:
почему-то древний компилятор 2.0 не хочет признавать команды сдвига типа ROL AL,4.
А более свежий компилятор транслирует без проблем. Не знаю есть ли в 8088 такие команды. Возможно есть только ROL AL,CL.

Attachment:
ror1.gif
ror1.gif [ 5.62 KiB | Viewed 7918 times ]

_________________
iLavr


03 Jun 2018 00:54
Profile
Doomed
User avatar

Joined: 19 Feb 2017 03:46
Posts: 584
Location: Санкт-Петербург, Россия, третья планета от Солнца, галактика Млечный Путь
Reply with quote
PVV wrote:
у 8086 адрес старта по сбросу 0xFFF0, а не 0000 как у 8080

Не знал.

Значит узел сброса в РК86, включающий по сбросу ПЗУ с 0, не нужен. Это удобно, потому что и 6502 и 6800 тоже стартуют в старших адресах ПЗУ F800. С'экономил полсотни байтов на коротких переходах (переставляя оптимальнее куски кода), потому места хватило и для ROR AL,CL и вернул одну директиву H и старт по сбросу сделал на FFF0.

Напрасно, в 8088 нет команд типа ROR AL,N, т.к часто CL занят и приходится ставить цепочку одинарных сдвигов. А я всегда пользовался такими командами, причём с ключом .8086, не зная, что раз в 8088 таких команд нет, то на XT будет завис. Правда PC XT и в середине 90-тых был уже большой редкостью, а сейчас XT это уже винтажный объект коллекционирования, а не бытовой компьютер для игры в Digger-а.

При конверсии все нестандартные внутренние точки внутри ПЗУ (в которые нагло лезут программы вредителей) сохранять уже не требуется, нужны только стандартные входы и из альтруизма возможно ещё Warm Boot F86C.

Внутренние точки перехвата МГ-подпрограмм (точки входа и выхода) нет смысла сохранять, т.к конфиги эмулятора B2M для Z80/КР580 всё-равно не годятся (да и хлопотно совмещать точку выхода, т.к длины подпрограмм отличаются), а раз конфиг для 80888 всё-равно составлять заново, то не сложно поставить другие адреса. А эмулятор EMU80 вообще не эмулирует процессор 8088.

Не знаю, что в процессоре 8088 происходит по сбросу. Возможно и CS и DS по сбросу устанавливаются в 0 и потому в варианте TINY модели, когда регистры CS=DS=0, т.е сегмент кода совпадает с сегментом данных, регистр DS не требуется специально инициализировать нулём.

При 8088 имеет смысл заменить РУ5 на РУ7, чтобы ОЗУ было много. А ещё лучше на SIMM-30 на 1 мб. Хотя тогда нужны какие-то меры, чтобы когда CPU в захвате шины, адресами A16, A17, A18, А19 включался тот сегмент, где экранный буфер, иначе на экране будет мусор. Из-за того, что ПДП ВТ57 управляет только 16-тью адресами и не знает про старшие адреса, на которых будет Z-состояние, когда процессор в захвате. Кстати, 565 РУ7 в РК86 ставили и, несмотря на больший (чем положенные 4 МСЕК) период регенерации, это работало. А вот SIMM никто не ставил, и неизвестно будет ли регенерация (без специальных мер, типа регенрации за счёт CAS before RAS).

Теперь вопрос как получить блок кодов для прошивки ПЗУ, без всего лишнего, что линкер создаёт для старта из MSDOS.

Вот текущая версия РК-ПЗУ конвертированного для 8088.


Last edited by barsik on 06 Jun 2018 20:09, edited 3 times in total.



03 Jun 2018 03:22
Profile
Doomed

Joined: 01 Oct 2007 10:30
Posts: 665
Location: Ukraine
Reply with quote
Не понимаю я РАДИО-86РК на х86 процессоре. Зачем это нужно? Не пускай просто некий комп на х86 процессоре. РАДИО-86РК тут лишнее.

А так есть отличный открытый проект Xi 8088 PC. Кого ностальгия по XT замучила, самое то :)
Или даже вот покомпактней - Micro 8088.

Или MiniMax8085. Не XT, зато на 8085 и очень маленький :kruto:

_________________
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru


03 Jun 2018 05:04
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
barsik wrote:
Напрасно, в 8088 нет команд типа ROR AL,N, т.к часто CL занят и приходится ставить цепочку одинарных сдвигов. .

Ну что поделаешь - нет... :-? За это 8088/8086 архитектуру часто ругают за "неортогональность".
Я и сам, помню, спотыкался об это ROR AL,N и иже с ним, поэтому и полез уточнить...

_________________
iLavr


03 Jun 2018 05:32
Profile
Doomed

Joined: 12 Feb 2016 13:39
Posts: 463
Reply with quote
Alekcandr wrote:
Не понимаю я РАДИО-86РК на х86 процессоре. Зачем это нужно? Не пускай просто некий комп на х86 процессоре. РАДИО-86РК тут лишнее.

Так это и будет некий комп на х86 процессоре, просто так 'случайно' :ebiggrin: получается, что этот некий комп будет использовать ВГ75, структуру экрана и карту памяти приближенную к РК-86... и при наличии конверторов из 8080 в 8086 ( и желания убить время, мне до вылета домой еще 7 часов сидеть в гостинице :) ) можно позаниматься такой конструкцией.

во вложении набор инструментов для сборки, поправленный исходник и конфиг для b2m (rom size=8KB только получился с такими инструментами) и ROR с ROL я пока закомментировал ;;; , что бы собрался. Для отладки запускать emu -d.


Attachments:
8086.zip [174.96 KiB]
Downloaded 274 times
03 Jun 2018 05:48
Profile
Devil

Joined: 30 Nov 2013 11:08
Posts: 706
Location: WWW
Reply with quote
PVV wrote:
получается, что этот некий комп будет использовать ВГ75, структуру экрана и карту памяти приближенную к РК-86...

Вообще-то мой вопрос - "Что такое РК86 на ххх ? Каким требованиям он должен отвечать, чтобы считаться РК86 ?" как раз и был об этом... Что должно быть у данного гипотетического компьютера, кроме процессора ххх, чтобы он считался "РК86 на ххх" ?


03 Jun 2018 07:46
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
newold86 wrote:
вопрос - "Что такое РК86 на ххх ? Каким требованиям он должен отвечать, чтобы считаться РК86 ?" как раз и был об этом... Что должно быть у данного гипотетического компьютера, кроме процессора ххх, чтобы он считался "РК86 на ххх" ?

Я так полагаю, что карта памяти, похожая на карту РК86 .
Чипсет, аналогичный или близкий к РК86 .
Ну и тест-мониторная программа в системном ПЗУ, совпадающая, насколько это можно,
по вызовам и функциональности с РК86 .

Так что "Поиск" в качестве прототипа здесь, видимо, не подойдет.
А софт, характерный для оригинального РК86, предполагается перекинуть конвертером.

_________________
iLavr


03 Jun 2018 08:18
Profile
Doomed
User avatar

Joined: 19 Feb 2017 03:46
Posts: 584
Location: Санкт-Петербург, Россия, третья планета от Солнца, галактика Млечный Путь
Reply with quote
Post 
PVV wrote:
во вложении набор инструментов для сборки, поправленный исходник и конфиг для b2m
Вложение скачал, BAT-файлом транслируется и создаётся MON.BIN размером в 8 кб (кстати, удобнее, если между строками BAT-файла вставлены строки 'pause', чтобы видеть результаты каждого этапа). В LST-файле видно, что на FF00 стоит FAR JMP на F800.

И кстати, обязательно FAR JMP ? Это лишние 2 байта? Я не подумал о сегментах и в первом варианте применил 3-х байтовый NEAR JMP. Не сработает ? Ведь адреса A16 ... A19 в минимальном включении не задействованы и 0FFFF0H (самый старший сегмент) тоже самое, что 00FFF0H (это в самом первом сегменте в начале памяти).

Получается, что по сбросу (по крайней мере не в минимальном включении, процессор загружает регистр CS так, чтобы текущий сегмент кода начинался с адреса 0FFFF0H, обнуляя регистр PC. Или же он ставит сегмент кода на последние 64К, а регистр PC на 0FFF0H. Никогда об этом не задумывался, да и почти 20 лет не программировал для 8086. Даже, если и знал, то забыл. Впрочем, такие нюансы надо знать только при разработке ПО для собственных железок. В ROM-BIOS XT по сбросу делается FAR JMP на F000:E05B, т.е сегмент кода ставится на последние 64К.

Скопировал предложенный конфиг в каталого EMU/CONFIG, а файл ПЗУ MON.BIN в каталог EMU/8086 (куда скопировал все файлы из оригинального каталога EMU/radio). Но всё равно эмулятор B2M не стартует, в смысле, похоже зависает на этапе инициализации. Эмулятор EMU от b2m не даёт никакой информации и просто виснет, если при старте не находит какой-либо нужный файл, что очень противно при отладке конфигов.

Попробовал просто подставлять MON.BIN в каталог EMU/radio (соответственно указав каталог для поиска файла ПЗУ в Вашем конфиге). Но всё равно не получилось запустить и выйти в отладчик, эмулятор просто виснет при старте с чёрным экраном.

Это не важно, сам отредактирую базовый конфиг для РК86 на КР580 (для чего кажется достаточно просто указать тип процессора 8086). Для меня была проблемой получить код самого ПЗУ без стартёра MSDOS. Если я правильно понял, это делает программка EXE2ROM из Вашего вложения. Полученный MON.BIN почему-то имеет длину 8 кб, а не 2 кб, хотя в коде 6 кб это нули.

В общем, попробую поразбираться с эмулятором и добиться хотя бы выхода в отладчик, а дальше уже можно начать разбираться в программе ПЗУ РК.

Alekcandr wrote:
Не понимаю я РАДИО-86РК на х86 процессоре. Зачем это нужно? Ну пускай просто "некий комп на х86 процессоре". РАДИО-86РК тут лишнее.

Кому-то привычно программировать используя традиционные подпрограммы F800. А кому-то это не надо, но если делать совсем новую конструкцию, то для неё надо придумывать стандарты ROM-BIOS и писать этот ROM-BIOS.

Да и для "некоего компа на x86" надо где-то брать внешнюю плату текстового или графического адаптера и писать соответствующий ROM-BIOS. Это долгие хлопоты. Как раз для этого случая отлично подходит плата графич.адаптера ИРИШИ всего на 60 микросхемах, что даёт CGA, и тем самым этот "некий комп на x86" превращается в ПОИСК.

А используя ненужную платку РК86, можно буквально за пару часов наедине с электро паяльником получить из него экспериментальный компьютер на 8088 или на 6502. А вот для CPU 6802 электро-траха больше, т.к у него нет полноценного режима HOLD (называемого DMA), т.к в этом режиме его шина не уходит в Z-состояние, отчего нужно ставить ещё 3 буфера 555 АП6, чтобы полностью освобождать шину для ПДП.

Ну и есть ещё маленький довод, что можно конвертировать некоторые системные программы РК (например текстов редактор МИКРОН-2, а редактор МИКРОН-1 и даром не нужен) и некоторые игры (например, двух килобайтовый ксоникс, который вполне играбелен, лучшего не встречал). Правда, без наличия хотя бы примитивного ассемблера для 8088, текстов редактор не нужен. Написать даже примитивный ассемблер 8088 намного сложнее, чем написать ассемблер КР580. Но это и не надо, если есть доступ к программам MSDOS. Отладчик для 8088, думаю, не очень сложно можно получить переделкой DEBUG.

newold86 wrote:
Каким требованиям он должен отвечать, чтобы считаться РК86 ? ... Что должно быть у данного гипотетического компьютера, кроме процессора ххх, чтобы он считался "РК86 на ххх" ?
Неверный вопрос. Компьютер может считаться РК86, если на нём работают программы РК86. Потому компьютер на другом CPU может считаться РК86 только, если в нём стоит V20 и вся адресация совпадает с оригиналом.

Видимо вопрос был, каким должен быть радиолюбительский компьютер и стОит ли для нового РК сохранять даже частичную совместимость с РК86.

Вообще делая комп на базе ВГ75 разумно убрать одну ошибку авторов РК86. Они вынуждены были бордюр по вертикали сделать программным, т.к в противном случае ОЗУ РУ3 не могут работать (регенерация во время аппаратного бордюра ВГ75 прекращается на большее время, чем допустимо). Но вот по горизонтали неверно было делать такой же программный бордюр.

Из-за чего не только впустую теряются байты (в режиме по сбросу 30*14=420 байтов, в базовом граф.режиме 38*14=532 байта, а при графике 192*102 впустую теряется аж 64*14=896 байтов), но главное, нельзя изменить размер строки в байтах (всегда 78), хотя ВГ75 позволяет это программно менять. Авторы РК86 это сделали ради экономии одного ТТЛ-корпуса.

А надо было формировать ССИ из сигнала горизонтального бордюра HRTC с помощью логики, а не использовать сам этот сигнал HRTC в качестве ССИ. Для этого ставится 155 АГ3, в нём два одновибратора. Первый одновибратор взводится по началу бордюра (сигналом HRTC) и формирует задержку до начала ССИ (чтобы ССИ был в центре строчного бланка), а второй одновибратор определяет длительность ССИ.

Имея возможность менять число байтов в строке, можно программно переключать режимы, имея как 64, так и 80 символов в строке и одновременно 40 символов в строке с полноценным цветом (чётные позиции задают символ, нечётные дают 7 битов для цвета знакоместа). Именно такой режим 40 символов в строке с полноценным цветом с учётом задач этого компьютера был самым разумным и в 1985 при проектировании РК86.

Почти все западные бытовые компьютеры до середины 90-тых имели 40 символов в строке (знаю даже один компьютер, где было 13 символов в строке на 8 строках). 64 символа в строке, с учётом низкого разрешения телевизоров и отсутствием необходимости текстообработки (у населения не было принтеров не только тогда, но даже и в последующие 10-15 лет) были просто не нужны для бытового компьютера.

Интересен также 8086, т.к он работает быстрее, чем 8088. Если не волнует совместимость по структуре экрана с РК86, то можно "прицепить" ОЗУ 62256/w24257 и второе ПЗУ РФ2, включив их по нечётным адресам. Тогда ячейки с чётными аресами будут читаться из 32 кб динамического ОЗУ, а нечётные ячейки будут браться из 32 кб дополнительного ОЗУ. Также и с ПЗУ.

А вот видео буфер тогда будет устроен через-байтово, т.к ПДП ВТ57 8-ми разрядный и будет читать только из динамического ОЗУ. 8086 удобно ставить в ОРИОН, там уже есть две параллельные банки ОЗУ.

Если же жалко тратить на экран удвоенный объём ОЗУ или надо обеспечить организацию экрана как в базовом РК86, то придется на входы выходы ОЗУ делать сложный демультиплексор из 16-ти разрядной шины в 8-ми разрядную.

Вот здесь текущая версия РК-ПЗУ конвертированного для 8088.


Last edited by barsik on 06 Jun 2018 20:19, edited 5 times in total.



03 Jun 2018 10:12
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
barsik wrote:
...буквально за пару часов наедине с электро паяльником получить из него экспериментальный компьютер на 8088 или на 6502. А вот для CPU 6802 электро-траха больше, т.к у него нет полноценного режима HOLD (называемого DMA), т.к в этом режиме его шина не уходит в Z-состояние...

У 6502 шина также не уходит в Z-состояние...

_________________
iLavr


03 Jun 2018 14:13
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 219 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6, 7, 8 ... 15  Next

Who is online

Users browsing this forum: No registered users and 12 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.