Ребенка не обманешь (а было мне 10 лет)

Moderator: Shaos
Модульность без сомнения удобна, не зря же авторы компьютера ИРИША (1984) сделали отдельными модулями плату процессора и плату видео адаптера. Именно для того, чтобы в крейтовую конструкцию было удобно не только вставлять периферийные платы, но и было легко заменить процессорную плату на другую с процессором 8088.Alekcandr wrote:Был бы я фанатом РАДИО-86РК, сделал бы модульный комп
Есть такое. Без ВГ75 и ПДП модуль ЦП с динамическим ОЗУ не работает из-за утраты регенерации. Хотя, конечно, никто модульный РК на 8088 делать не будет. Но если забыть, что на 6845 с десятком корпусов обвязки получится лучший (т.к с КОИ-8 и без тормозов) текстовый адаптер, то порассуждать на эту тему можно.Mixa64 wrote:Про модульность +1, только 86РК довольно монолитен имхо.
Прямо сегодня прочитал мнение специалиста (пост 142), что благодаря конвейру 8088 всего ~5% уступает 8086-му по скорости. Эта информация нуждается в проверке, но если это так, то 8086 неинтересен в применении к РК86.barsik wrote:8086 работает быстрее, чем 8088
Вряд-ли. Иначе и Роботрон-1715 - тоже обрезок терминала, а в его документации чётко указано, что это персональный компьютер. Интересно были ли отечественные промышленные (не бытовые) компьютеры с ВГ75? Ведь не ради РК86 и клонов скопировали CRT контроллер 8275, а значит был заказ МЭП-у и для чего-то они предназначались.Alekcandr wrote:В журнале РАДИО нам опубликовали обрезок терминала
Сначала надо получить работающий образец. Кстати, я монтирую очень медленно (а ещё даже не начал), так что начну отладку в лучшем случае через неделю.PVV wrote:нужно по пунктам составить некий план работ
Возможна лишь для корректных программ и при написании нового грамотного конвертора. Трудности не из-за убогости конвертора (хотя его недостатки отнимают время на ручную коррекцию), а в сложности получения полноценных исходников.PVV wrote:Автоматическая конвертация программ, вероятнее всего, невозможна
Стало ясно, что конверсия РК-игр возможна (системное ПО от РК не нужно). А насколько сложно получить корректные исходники игр пока не могу сказать, т.к попробовал лишь несколько самых простых игр. И выяснилось, что некоторые из них некорректные и не конвертируются в лоб или с минимальной доделкой. Всё зависит от того какой процент авторов игр увлекались модификацией кода.PVV wrote:Идея РК-8086 живет на ожидании конвертированных программ с РК86
Так не думаю.PVV wrote:без этих программ этот ПК не жизнеспособен
Не так. Настоящей DOS всё-равно какой накопитель используется. Т.к DOS производит обмен секторами (логическими по 128 байт или физическими, обычно 512 байт). Потому для переноса DOS на другое железо, если консольные функции одинаковы, достаточно заменить подпрограммы чтения и записи сектора. Естественно, могут быть неграмотные DOS в которых обмен секторами переменной длины. Вот их адаптировать под другой накопитель сложно. А для нормальной DOS каждый может "прикрутить" любой накопитель.PVV wrote:Для того, чтобы обсуждать какую ДОС применить нужно решить какой накопитель будет использоваться
Можно конвертировать TINY-бейсик (1800 байт) и бейсик 1A20 (т.к их исходники у меня есть и для TINY-бейсика есть программы). Это полезно, чтобы использовать игры на бейсике (вообще-то это никому не надо, но создаёт впечатление). Увы, TINY бейсик ради экономии объёма само модифицирующийся. В бейсике РК тоже есть трюки от Билла Гейтса (в частности JMP внутрь команды).PVV wrote:нужен любой ЯВУ, и basic это первый кандидат
Этот компилятор сейчас непосредственно включен в пакет Протеус?PVV wrote:писать на С https://www.digitalmars.com/ - это компилятор из протеуса для х86.
Нет, не включен, но протеус имеет предустановки на загрузку из сети компиляторов для разных ЦП, и этот по умолчанию загружается для х86, но можно настроить и другой.Lavr wrote:Этот компилятор сейчас непосредственно включен в пакет Протеус?
Если 8088 принять в расширенном виде, включая NEC V20 ( а "или 8086" включая "или NEC V30" ), то у японцев есть режим непосредственного исполнения кодов 8080. Я этот режим не пробовал, поэтому подробностей не знаю.PVV wrote: Еще пришла шальная мысль по конвертации программ, а может ну ее, эту конвертацию, написать эмулятор процессора ВМ80
Есть возможность писать на ЯВУ, например на Си, Паскале и бейсик-компиляторе используя CP/M-компиляторы. Потому что ЯВУ создают корректный код, без извратов. Потому конвертировать выходной код компилятора для КР580 не вызовет больших хлопот, т.к ЯВУ создают код без хитростей, который легко дизассемблируется и без проблем конвертируется.PVV wrote:нужен любой ЯВУ
Не хочу пока заниматься CP/M-86, но интересно узнать какой у неё программный интерфейс. CP/M-86 пока не нужна, т.к она написана для PC и потому интерфейс в ней с помощью INT в ROM-BIOS. Если узнать её интерфейс, то, т.к функции, по крайней мере BDOS, совпадают, то думаю, получится частичная совместимость и некоторые COM-программы из CP/M-86 смогут работать.PVV wrote:Транслировать CPM-80 в коды х86 нет смысла, ведь для х86 уже была написана CPM-86
Да, отсутствие необходимости отлова записи в экран, пересчёта экр.адресов и вызова при записи в экран процедуры визуализации, немного ускорит. Отсутствие необходимости отлавливать обращения в порт клавиатуры тоже ускорит, но лишь чуть-чуть (на тысячные доли процента). Также это существенно сократит код эмулятора, т.к отпадает эмуляция экрана и клавиатуры, думаю, код вполне уместится в 16 кб.PVV wrote:Еще пришла мысль по конвертации программ, а может ну её, эту конвертацию, написать эмулятор процессора ВМ80 и запускать на нашей РК-8086 через него наши РК-шные программы, при наличии экрана и портов как у РК-86 это будет не сложно
Замечу, что в emu винчестер поддерживается! по схеме Ориона, через ВВ55.barsik wrote: Версию CP/M для эл.диска из ОЗУ сделать просто потому, что в EMU есть возможность иметь столько ОЗУ, сколько хочется. А РК-КНГМД в EMU не поддерживается. Т.е дисковод и винчестер отладить можно только в реале. Кстати, ОС для РК-КНГМД работает только, если реальное быстродействие не превышает 2.5 МГЦ.
А нет там у вас возможности выложить прямую ссылку, чтобы скачать прямо этот компилятор?PVV wrote:Нет, не включен, но протеус имеет предустановки на загрузку из сети компиляторов для разных ЦП,Lavr wrote:Этот компилятор сейчас непосредственно включен в пакет Протеус?
и этот по умолчанию загружается для х86, но можно настроить и другой.
Разобрался с этим. Ранее для экономии, я переставил инициализацию RAMTOP до процедуры очистки всех служ.ячеек (отчего и ячейка RAMTOP обнулялась до начала использования). Сейчас исправил (выложено там же) и даже благодаря системе команд 8088 выиграл один байт.PVV wrote:В мониторе РК-8086 что то не так с переменной RAMTOP, при вызове функции проверки верхней границы возвращается 0000... с этим надо что то решить.
Переделать надо и оставить только одно место размещения монитора 'дальнее'. Я тут заглянул в НЕХ коды 8086 на предмет call, jmp, ret и увидел, что там на каждый вызов 3-5 типов кодов и пришла мысль - если переделать макросы вызовов как DB xx, xx, xx, xx, xx тогда получится:barsik wrote: Думаю, что ПЗУ РК имеет смысл переделать сделав стандартные входы ПЗУ дальними (по CALL FAR). Или же надо иметь два коммутируемых ПЗУ, одно с дальними входами в подпрограммы, другое с ближними.
Code: Select all
DB 09Ah, 03h, 0F8h, 00h, 0F0h - call FAR F000:F803 но нужно возврат из функции в мониторе делать RETF (0CBh), иначе CS остается F000 и стек на два байта недовыгрузится...
Исправил исходник и свой предыдущий пост, добавив туда ссылку. Кстати, обратите внимание, что теперь монитор при старте инициализирует сегментные регистры на F000, так что и конфиг изменён (не только ПЗУ, но и порты теперь адресуются в сегменте 15).PVV wrote:В мониторе РК-8086 что-то не так с переменной RAMTOP, - при вызове функции проверки верхней границы возвращается 0000... с этим надо что то решить.
Да, так получится меньше байтов, чем при:PVV wrote:Переделать надо и оставить только одно место размещения монитора 'дальнее'... если переделать макросы вызовов как DB xx, xx, xx, xx, xx тогда получится:но нужно возврат из функции в мониторе делать RETF (0CBh), иначе при вызовах ПЗУ будет происходить утечка стека и через секунды код программы будет затёрт и произойдёт улёт.Code: Select all
DB 09Ah, 03h, 0F8h, 00h, 0F0h - call FAR F000:F803
Code: Select all
MOV BP,0F000H
PUSH BP
MOV BP,F8xx
CALL BP
Code: Select all
MOV BP,F8xx
CALL ES:[BP]
В этом нет необходимости. Внутри ПЗУ все подпрограммы могут оставаться близкими, только сами входы должны быть FAR. Для этого для каждого из 17 стандартных входов придётся добавить промежуточный CALL NEAR и входы будут иметь такой вид:PVV wrote:надо еще проследить в самом мониторе вызовы этих же функций монитора, и близкие call заменить на такие же макросы для RET, иначе стек посыпется...
Code: Select all
XF809: CALL near YF809
RETF