User Tag List

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

Тема: Работа с графикой EGA (320x200x16) ATM-Turbo 2+

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

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

    Регистрация
    25.10.2007
    Адрес
    Москва
    Сообщений
    392
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Работа с графикой EGA (320x200x16) ATM-Turbo 2+

    Итак. Попробуем разобраться.
    Исходные:
    Эмулятор Unreal Speccy. CP/M, Turbo Pascal 3.0.
    На написание графической библиотеки не претендую, для начала нужно чтобы компьютер корректно входил в графический режим 320x200x16, очищал экран и выходил обратно в консоль.

    Pascal:
    Минимальный стартовый адрес: 20E2 (я ставлю 8000), максимальный конечный адрес D942 (у меня BFFF), компилится в COM-файл.
    Procedure SetVidMode;
    begin
    inline($3e/$7A/$01/$7ff7/$ed/$79/$3e/$7E/$01/$fff7/$ed/$79/$3e/$a8/$01/$fd77/$ed/$79);
    end;

    Procedure ClrScrRt;
    begin
    inline($f5/$e5/$c5/$d5/$af/$21/$00/$40/$11/$01/$40/$01/$ff/$1a/$77/$00/$ed/$b0/$d1/$c1/$e1/$f1);
    end;

    Procedure CloseVidMode;
    begin
    inline($3e/$7b/$01/$7ff7/$ed/$79/$3e/$7c/$01/$fff7/$ed/$79/$3e/$ae/$01/$fd77/$ed/$79);
    end;

    Begin
    SetVidMode;
    ClrScrRt;
    CloseVidMode;
    End.

    Для реализации процедур используется машинный код.

    подробнее:
    переключение в режим EGA с 5 и 1 страницей памяти...
    7f1d 3e7a ld a,7ah
    7f1f 01f77f ld bc,7ff7h
    7f22 ed79 out (c),a
    7f24 3e7e ld a,7eh
    7f26 01f7ff ld bc,0fff7h
    7f29 ed79 out (c),a
    7f2b 3ea8 ld a,0a8h
    7f2d 0177fd ld bc,0fd77h
    7f30 ed79 out (c),a

    очистка экрана:
    7f33 f5 push af
    7f34 e5 push hl
    7f35 c5 push bc
    7f36 d5 push de
    7f37 af xor a
    7f38 210040 ld hl,4000h
    7f3b 110140 ld de,4001h
    7f3e 01ff1a ld bc,3fffh
    7f41 77 ld (hl),a
    7f42 00 nop
    7f43 edb0 ldir
    7f38 210040 ld hl,c000h
    7f3b 110140 ld de,c001h
    7f3e 01ff1a ld bc,3fffh
    7f41 77 ld (hl),a
    7f42 00 nop
    7f43 edb0 ldir
    7f45 d1 pop de
    7f46 c1 pop bc
    7f47 e1 pop hl
    7f48 f1 pop af

    Выход в терминал:

    7f4a 3e7b ld a,7bh
    7f4c 01f77f ld bc,7ff7h
    7f4f ed79 out (c),a
    7f51 3e7c ld a,7ch
    7f53 01f7ff ld bc,0fff7h
    7f56 ed79 out (c),a
    7f58 3eae ld a,0aeh
    7f5a 0177fd ld bc,0fd77h
    7f5d ed79 out (c),a

    при пошаговом исполнении в отладчике все проходит нормально.
    При стандартном запуске программа зависает на этапе очистки экрана, в районе команды ldir.
    экран остается неочищенным, а процессор продолжает гулять по просторам четвертой страницы.

    Вопрос такой: почему так происходит и как это исправить...
    ZX Evolution

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

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

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

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

Похожие темы

  1. Ответов: 9
    Последнее: 15.06.2020, 02:02
  2. Ответов: 33
    Последнее: 24.12.2019, 10:17
  3. Приобрету ATM-turbo 2+
    от Максагор в разделе Барахолка (архив)
    Ответов: 9
    Последнее: 30.05.2012, 21:18
  4. Работа NemoBus устройств в TURBO режиме
    от Black_Cat в разделе Внешние накопители
    Ответов: 4
    Последнее: 06.07.2011, 08:33

Ваши права

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