Наиболее простой по железу и ПО. Зачем в процедуре Page_nibble команда CMP M?
Paguo-86PK wrote:под API всё же следует выделить штуки 53 «FD» до F835, чтобы функции БСВВ выбирать не через регистр процессора, а адресом.
Зачем надо стандартные п/программы F8xx вызывать позиционно? Проще же делать уход на них по RET загрузив в стек адрес вызываемой подпрограммы. Я выше показал, что это проще и даёт всё, что надо. Зачем ещё какие-то прибамбасы и хитрости? Зачем нужны байты FD?
Зачем аж 256 страниц по 2 кб в ПЗУ ROM-BIOS ? Для расширения системных функций ПЗУ по вводу/выводу хватит одного дополнительного РФ2, т.е двух страниц ПЗУ (а, если лишь для якобы оконности, то хватит и тех 200 байт, что свободны в базовом ПЗУ). Для хранения прикладных программ больше подходят другие средства. А если стоит задача хранить неколько программ именно в страничном ПЗУ в окне ROM-BIOS, то для этого совершенно не требуется изменять концепцию ROM-BIOS, достаточно ввести директиву для запуска прошитых резидентно программ по номеру (например, можно их запускать командой @n<ВК>, а ещё удобнее клавиатурными прерываниями, т.е сочетанием УС+СС+клавиша).
Вы же хотели только оконность добавить и занялись добавкой второй РФ2 только потому, что для этого в базовом ПЗУ не хватило места. После чего у Вас вдруг "разыгрался аппетит" на объём ПЗУ и Вы теперь хотите иметь аж 256 страниц (т.е ПЗУ в 512 кб, а ведь столько и у IBM PC нет).
А оконность драйвера это вовсе не возможность задать окно, чтобы вывод происходил только в него. Я уже упоминал, что есть бытовые ЭВМ на КР580, где есть раб.ячейки задающие окно, но это вовсе не оконность (лишь упрощает очистку окна экрана). Оконность подразумевает возможность при открытии автоматически сохранять, а по закрытию восстанавливать окна, открывать окна поверх. А для этого нужно добавить в РК, как минимум, инверсию знакомест (или цвет). А если этого нет, то оконность в базовом РК это нонсенс.
Я думаю, что если уж вводить огромное ПЗУ, то лучше окном в 16 кб, или хотя бы окном в 8 кб. Это разумнее даже потому, что ОЗУ в РК86 мало, в частности, нортону намного лучше работать из памяти выше 8000, чем в ОЗУ ниже 8000 (ведь, чем меньше у него буфер копирования, тем копирование медленнее). DOS для РК вообще возможна только если она работает из памяти выше 8000. Отладчик тоже должен работать из памяти выше 8000 (чтобы можно было отлаживать в любых адресах основного ОЗУ). В качестве резидентного ПО нужен только отладчик, программа обмена по линии, желательно DOS, иначе - её холодный загрузчик.
А прикладные программы, что работают из ОЗУ удобнее иметь в ROM-диске, т.к там они без проблем заменяются, ROM-диски без сбоев переставляются даже при включённом компьютере.
Вообще ROM-диск это неверный термин. Т.к диск это лишь для DOS, а у РК нет такой DOS для которой это диск. Так что ROM-диск (подключенный через ППА) это и есть настоящий ROM-картридж. Такая дурная терминология пошла из-за публикации ORDOS, где платку ROM-картриджа в рекламных целях обозвали ROM-диском.
Paguo-86PK wrote:#1…9 - разные версии Мониторов за все годы
это Вы погорячились. Столько версий ПЗУ для РК нет. По сути есть только одна версия. Не было нужды что-то менять в коде процедур ввода/вывода (вариант на 16 кб это не версия, а лишь редкая разновидность, код тот же, причём этого и 30 лет назад практически ни у кого не было, а уж сейчас тем-более).
А то, что появились варианты для ещё двух типов клавиатур (МС-7007 и ASCII-аппаратной типа 15ВВВ-97-006), так это не меняет ROM-BIOS. И пользователю не нужны в ПЗУ драйвера для всех клавиатур. У него только один тип клавиатуры, зачем ему остальные? А сейчас у всех - РК-клавиатура (или реальная или эмулируемая из писи-шной на Atmega). РК-клавиатура удобнее потому, что те игры, что сами лезут в матрицу кнопок, рассчитаны именно на РК-матрицу.
Мало кто мог или хотел доработать или хотя бы изменить ПЗУ РК86, т.к её "зафиксировали" вредители из 80-тых, - они сдуру сделали стандартом внутренние точки ПЗУ, сделав вызовы этих подпрограмм в своих программах. Из-за чего стало трудно хоть что-то совместимо изменить в ПЗУ. И только резко уплющив ПЗУ стало можно что-то изменить или дополнить. Но и имея возможность никто не стал бы менять стандартные п/п-ммы ввода/вывода.
Убавление/прибавление/улучшение директив RAM-монитора не относится к ROM-BIOS. Это равноценно смене версии отладчика в ОЗУ. Я тоже, когда в 2016 году решил выиграть немного байтов в ПЗУ РК86 не менял логику кода ПЗУ F800. Сначала я убрал директиву X (она 48 байт) и исправил директиву G. Что в сумме освободило 97 ячеек. А затем, ковыряя на досуге код в течение пары лет, за счёт оптимизации выиграл ещё более 110 ячеек. Сейчас в ПЗУ F800 свободно 209 ячеек. Но больше резервов почти не осталось (можно выиграть ещё лишь пару байт).
Про доп.железо. Если уж делать печ.платку дающую РК86 какой-то маленький прибамбас, то самым полезным стала бы платка переходник (втыкаемая в панельку штырьками DIP-40 вместо процессора КР580), позволяющая владельцам РК86 (да и других машинок на КР580) без большого стресса для основной платы заменить КР580 на Z80.
Про доработку ПЗУ. У каждого, у кого на этот счёт мнение есть, к ПЗУ F800 свои пожелания и представления, как разумнее его улучшить. Вот мои представления на тему улучшений ПЗУ РК86. Что не значит, что я жажду это сделать (сейчас РК86 не особо меня интересует, ему не хватает Hi-Res графики).
На мой взгляд процедуры ввода/вывода ПЗУ РК вообще менять не имеет смысла. Имеет некоторый смысл лишь улучшать/дополнять директивы и м.б. добавить несколько подпрограмм. Например, имеет смысл добавить подпрограммы чтения/записи байта из доп.ОЗУ (это, по крайней мере, ввело бы универсальность программ для разных реализаций расширенного ОЗУ). Имеет смысл ввести загрузку и автостарт по сбросу DOS из ROM-диска и клавиатурные прерывания.
Ещё есть задача сделать для РК86 второе ПЗУ F000 (расширяющее монитор), на что и рассчитывали его авторы делая JMP F000. В это второе ПЗУ чисто из спортивного интереса можно написать примитивную DOS для дисковода размером в 2 кб. Лучше RK-DOS не сделать, но чтобы хранить/запускать файлы в 2 кб уложиться можно (особенно для Z80 и заняв под это еще 400...500 байт в ПЗУ F800 выкинув оттуда некоторые ненужные директивы).
А если подумать о том, что сразу принесёт реальную пользу людям от модификации ПЗУ, то его следует доработать так, чтобы разделителем в командах мог использоваться пробел, наряду с запятой. Запятая нервирует, т.к теперь все уже привыкли к командам разных DOS в которых разделителем служит проблел.
- - - Добавлено - - -
Напомню про один недостаток ПЗУ РК86. Может наведёт на мысли по доработке ПЗУ. У РК раб.ячейки ПЗУ сделаны ниже экрана. Потому размер экрана нельзя увеличить (иначе экранный буфер затрёт раб.ячейки ПЗУ и подпрограммы ввода/вывода перестанут работать).
РК86 аппаратно может выводить текст в 25, 28 и 31 строку (в зависимости от установленной высоты знакоместа в 10, 9 и 8 линий). Но программно драйвер в ПЗУ может выводить только в режиме 25 строк. Потому что, при увеличении числа строк размер экранного буфера пропорционально увеличивается и выходит за отведённый размер, затирая раб.ячейки.
Например, для DOS удобнее было бы иметь 28 или 30 строк. Но увы, из-за ориентированности ROM-BIOS только на 25 строк с текстом все вынуждены работать только так. Если уж делается доработка ПЗУ, то желательно, чтобы альтернативный ROM-BIOS РК поддерживал любое число строк.
Paguo-86PK wrote:На кой я додумался до идеи Супер-ПЗУ? Легче плюнуть и забыть…
Уже скисли ? Потому что не надо замахиваться на 512 кб. Сделайте для начала 4 кб (или даже те же 2 кб, выкинув неактуальные директивы), а для прикладных программ введите в ПЗУ поддержку настоящего ROM-картриджа читаемого через ППА D14. Это полностью соответствует вашему условию "невторгаемости" в готовое изделие.
По функциям (даже исключив функции в скобках) можно подумать, что Вы и крутую DOS собираетесь в ПЗУ прошить. Непонятно о какой DOS идёт речь. Это что файлы прикладных программ в ПЗУ будут оформлены не просто в виде списка, а в виде диска DOS ? Или речь о настоящей DOS работающей с внешними носителями?
Часто бывает, - люди загораются какой-нибудь идеей и нет сомнения, что всё реально и это можно быстро сделать. Проблема всегда в том, что энтузиазм быстро кончается, интерес исчезает, остаются только планы.