User Tag List

Показано с 1 по 4 из 4

Тема: Расширение ПЗУ РК86

Древовидный режим

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

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

    По умолчанию

    Цитата Сообщение от Vladimir_S
    barsik, А почему только 15Кб? А не с адреса 8400?
    Как же можно сделать столь большое ПЗУ?

    Я признаю только совместимые доработки. А на C000 у нас адресуется ВГ75, потому в РК86 сплошной кусок ПЗУ более 15 кб совместимо никак не сделать. И к тому же, раз речь о монтаже проводочками вторым этажом, то переделки должны быть предельно простыми.

    Конечно можно занять под ПЗУ и второе окно 8400...BFFF, но это не даст никаких преимуществ. И если уж требуется поставить много ПЗУ, то окно ПЗУ лучше наоборот сократить, с целью сделать его кратным и более пригодным для страничной коммутации. Окно ПЗУ в 8 кб (E000...FFFF) в общем-то даже выгоднее и с точки зрения расширения ОЗУ.

    Для расширения ПЗУ в этом случае идеально подойдёт 27256/27512 с кучей страниц в окне по 8 кб. 8 кб достаточно большой кусок, чтобы разместить здесь какую-нибудь программу, а при использовании ПЗУ лишь в качестве хранилища резидентных программ (которые для прогона всегда копируются в ОЗУ) размер окна, через которое мы имеем доступ к ПЗУ не играет роли.

    А ПЗУ ограниченного размера, зато, даёт возможность удобно расширить ОЗУ до 56 кб, хотя и с использованием двухрежимной коммутации. Здесь же идёт речь лишь о случае когда в РК требуется иметь максимально большое сплошное ПЗУ, а не о какой-то иной несовместимой архитектуре.

    Xrust прав в том, что участок 8000...BFFF гораздо разумнее, так же как и в МИКРОШЕ, истратить на дополнительнок ОЗУ, а не ПЗУ. Окно 8400 (где в отличие от области E000, допустимо ОЗУ) пригодится при доработке РК86 до полной графики (на базе идей от freddy), а также для CP/M и т.п.

    Нескольно слов о том, что удобно прошивать в сплошное ПЗУ 15 кб. Понятно, что 2 кб из этого размера "открызает" базовый ROM-BIOS РК86. Вообще в ПЗУ в первую очередь хранят ROM-BIOS. Например, в ещё 1 кб можно разместить небольшой набор подпрограмм для поддержки оконного интерфейса РК86 имеющего альтернативный фонт (переключаемый PC0). Такой фонт даёт инверсию знакомест и нормальные рамки, что и позволяет открывать на экране инверсные окна. К сожалению неперекрывающиеся, как делают с цветными окнами (т.е с глубиной вложенности 1).

    Хотя конечно, никто не мешает добавить цвет и иметь многооконность. Я об этом не пишу, т.к не имел цвета и опыта его использования нет. Потому что бросить один проводок к ПЗУ фонта намного проще, чем сделать схему Толкалина из ж.Радиолюбитель 04.1992 или схему цвета из АПОГЕЯ. Да и программирование без цвета на порядок проще.

    Так вот, в 1 кб можно уместить простейшие оконные подпрограммы OPEN и CLOSE. По OPEN в подпрограмму передаются координата верхнего левого угла окна X,Y и размер окна dX,dY. Тогда эта процедура сливает старое содержимое окна в оконный буфер (вот для чего в графических системах надо дохрена ОЗУ). Затем рисует на экране белое окно с рамкой по краю окна и заголовком. К сожалению ROM-BIOS РК86 не оконный (что как раз наличие второй страницы ПЗУ в 8 кб позволяет исправить). А для оконного драйвера вывода при открытии окна и размер экрана вывода устанавливается в это "открытое" окно. Т.е, если ранее координата 0,0 была в левом верхнем углу экрана, то теперь координата 0,0 это правый верхний угол окна. Это к слову (о том как работает нормальный графический BIOS). В РК86 такого нет, да и при однооконности не особо и надо, тут отслеживание, чтобы вывод попадал в открытое окно а не мимо, возлагается на программиста.

    Закончив работу с окном, вызывается п/п-мма CLOSE, которая как бы закрывает окно, просто восстанавливая старое содержимое окна из буфера. Можно открыть 2 и более окна, но чтобы они не перекрывались. Понятно, что поддержка неперекрывающихся окон в инверсии проста и имеет малый объём, отчего легко может встраиваться в сами программы. Но наличие стандартных процедур в ПЗУ даёт единообразие и экономит объём кода. Вот иллюстрации

    Далее, в ПЗУ обычно хранят драйверы внешних устройств. Так, встроив в ПЗУ подпрограммы чтения, записи сектора и процедуру формат трека мы избавляемся от зависимости от конкретного железа. Тогда DOS (а к железу в нормальных системах лезет только DOS, прикладные программы никогда не лезут к железу на низком уровне) поддерживает все имеющиеся у разных пользователей носители, например, винчестер, дисковод, RAM-диск и различные флэш-накопители с микроконтроллерами. И соответственно все программы для этой DOS без всякого изменения кода будут работать на всех носителях независимо от их физической природы.

    В ПЗУ полезно иметь мелкие сервисные программы и драйвера. В частности, программу обслуживания прошивателя УФ-ПЗУ, программу обслуживания ROM-диска (ROM-Service), драйвер принтера, драйвер и программу обмена по проводной линии с IBM PC и т.п.

    А в самом простейшем случае, для РК86 без внешних носителей в такое ПЗУ 15 кб можно прошить бейсик и ассемблер, работающие уже непосредственно из старших адресов, а не с 0. Это увеличивает объём исходного текста могущего быть странслированным и максимальный размер бейсик программы (а размер бейсик программы написанной для бейсик-интерпретара с вкраплением ассемблера может быть большим, т.к операторы DATA сжирают много места).

    Учтите, что бейсик нельзя просто перетранслировать, указав иной адрес трансляции. Т.к в этом бейсике "уши растут" от бейсика Билла Гейтса из 1975, который активно использует RST-команды, отчего может работать только с 0. Поэтому для перемещения кода на другой адрес Вам придётся все вызовы RST переделать на CALL, отчего объём кода немного разбухнет на 50 байт (но всё равно, думаю, влезет в 8 кб, а если нет, то можно забить какие-то малонужные операторы).

    Какой-нибудь РК-Бейсик я собираюсь позднее попробовать перетранслировать на работу без RST, а также странслирую свой текстов редактор для РК86 и макроассемблер для прошивки в ПЗУ C400.
    Последний раз редактировалось barsik; 09.04.2018 в 11:44.

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

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

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

Похожие темы

  1. Ответов: 76
    Последнее: 22.08.2019, 21:33
  2. Маленькие поэтапные доработки РК86
    от barsik в разделе Радио-86РК
    Ответов: 18
    Последнее: 24.08.2017, 10:41
  3. РК86 с статическим ОЗУ
    от Vladimir_S в разделе Новодел
    Ответов: 1
    Последнее: 05.07.2012, 07:15
  4. Платы Радио РК86
    от Павел Рябцов в разделе Барахолка (архив)
    Ответов: 136
    Последнее: 20.01.2012, 14:38
  5. продам корпус рк86
    от oracleua в разделе Барахолка (архив)
    Ответов: 10
    Последнее: 29.01.2011, 00:51

Ваши права

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