Quantcast
Channel: vinxru
Viewing all articles
Browse latest Browse all 319

Цветные Линии для Ориона-128

$
0
0
Скачать lines$.bru



У компьютера Специалист есть брат под названием Орион 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 притормаживает анимацию, если пользователь нажал клавишу.

Исходники выложу чуть позже.

Viewing all articles
Browse latest Browse all 319

Trending Articles