Скачать lines$.bru
![]()
У компьютера Специалист есть брат под названием Орион 128. Правильнее сказать, что Орион потомок Специалиста. Но слишком уж у них похожие параметры и схемотехника. Адаптировать версию для Специалиста оказалось очень просто.
* в самой первой модели Специалиста цвета вообще не было. А в первой модели Ориона уже были все режимы.
При этом полной программной совместимости нет. Адрес ПЗУ/BIOS отличается C800->F800. Адрес видеопамяти отличается 9000->C000, хотя её формат совпадает. Адрес клавиатуры и расположение кнопок отличаются. Порт бипера отличается.
Но главное, отличается реализация цвета. У Специалиста есть регистр цвета, в который один раз мы заносим цвет и далее все нарисованное на экране будет этого цвета. В Орионе память цвета расположена во второй странице адресного пространства и программист должен вручную заносить туда данные. А код переключающий страницы должен размещаться по адресу F000-F7FF, это участок непереключаемой памяти.
В общем, поправить было не долго. Почти всё что пришлось сделать, это:
Единственное, мне пока лень писать собственный драйвер клавиатуры и я использую BIOS. А этот самый BIOS притормаживает анимацию, если пользователь нажал клавишу.
Исходники выложу чуть позже.

У компьютера Специалист есть брат под названием Орион 128. Правильнее сказать, что Орион потомок Специалиста. Но слишком уж у них похожие параметры и схемотехника. Адаптировать версию для Специалиста оказалось очень просто.
Специалист Процессор КР580ВМ80 2 Мгц Видео 384x256 2/4/8/16 цветов* Основное ОЗУ 48..64 Кб Дополнительное ОЗУ 12 Кб только на запись Звук - бипер Клавиатура - на основе ВВ55. | Орион Процессор КР580ВМ80 2.5 Мгц Видео 384x256 2/4/16 цветов Основное ОЗУ 64 Кб Дополнительное ОЗУ 64 Кб Звук - бипер Клавиатура - на основе ВВ55. |
* в самой первой модели Специалиста цвета вообще не было. А в первой модели Ориона уже были все режимы.
При этом полной программной совместимости нет. Адрес ПЗУ/BIOS отличается C800->F800. Адрес видеопамяти отличается 9000->C000, хотя её формат совпадает. Адрес клавиатуры и расположение кнопок отличаются. Порт бипера отличается.
Но главное, отличается реализация цвета. У Специалиста есть регистр цвета, в который один раз мы заносим цвет и далее все нарисованное на экране будет этого цвета. В Орионе память цвета расположена во второй странице адресного пространства и программист должен вручную заносить туда данные. А код переключающий страницы должен размещаться по адресу F000-F7FF, это участок непереключаемой памяти.
В общем, поправить было не долго. Почти всё что пришлось сделать, это:
void bitBlt(uchar* d => de, uchar* s => hl, uint wh => bc) { asm { bitBlt_l1: push d push b bitBlt_l2: mov b, m ; Читаем байт цвета inx h mvi a, 1 ; Дополнительное ОЗУ sta 0F900H mov a, b ; Записываем байт цвета stax d xra a ; Основное ОЗУ sta 0F900H mov a, m ; Читаем байт пикселей inx h stax d ; Записывает байт пикселей inx d dcr c ; Цикл по ширине jnz bitBlt_l2 pop b pop d inr d ; Цикл по высоте dcr b jnz bitBlt_l1 } }
Единственное, мне пока лень писать собственный драйвер клавиатуры и я использую BIOS. А этот самый BIOS притормаживает анимацию, если пользователь нажал клавишу.
Исходники выложу чуть позже.