Важная информация

User Tag List

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

Тема: Программирование модуля МЦПГ для Партнёр 01.01

  1. #1
    Veteran Аватар для Kakos_nonos
    Регистрация
    26.12.2010
    Адрес
    Кубань
    Сообщений
    1,154
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    39
    Поблагодарили
    23 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Программирование модуля МЦПГ для Партнёр 01.01

    Заинтерисовался этим модулем, который добавляет к Партнёру большие графические возможности. К сожалению, информации по нему в интернете очень мало, однако его поддерживает эмулятор b2m.
    Использую существующую информацию и эмуляцию, стал методом тыка изучать как что работает. В итоге вышло вот что.

    Партнёр 01.01 это клон Радио 86рк, с некоторыми доработками. Одна из самых главных - маппирование памяти. При записи байта в определённый адрес меняются адреса устройств и блоков памяти.
    Для использования модуля нам нужна 8-ая или 9-ая карта памяти, в ней есть по адресу $C800 - $D800 распологается окно для доступа к внешним устройствам.
    Делаем так
    Код:
       MVI A,$80 ;номер - в старших 4 битах
       STA $DA00 ;адрес порта для переключения карт
    Однако это не всё. Ведь к партнёру может быть подключено несколько устройств, а нам нужен только модуль МЦПГ. Для этого у каждого устройства есть номер. Его тоже надо прописать в порт. У модуля этот номер - 3.
    Код:
       MVI A,3 
       STA $DE00
    Всё. Теперь по адресам $C800 - $D800 распологается знакогенератор, который можно изменять прямо во время работы программы.

    Также нужно Настроить ВГ75 чтоб не было расстояний между символами.
    Вот подпрограмма.
    Код:
       #DEFINE VG75=$D800
    SETV:
       CALL WAITIN
       LXI H,VG75+1
       MVI M,0
       DCX H
       MVI M,77
       MVI M,29   
       MVI M,7
       MVI M,53H
       INR L
       MVI M,23h      
       RET
    
    WAITIN:
       LXI H, VG75+1
       MOV A,M
    WAIT1:	
       MOV A,M
       ANI $20
       JZ WAIT1
       RET
    Рассмотрим структуру памяти знакогенератора. Каждый символ имеет размер 4*8 пикселей, 8 цветов на точку.
    Биты расположены так:

    PZNNNNNNNRRR


    N - номер символа.
    R - ряд в символе
    P - половинка символа. Каждый байт кодирует 2 пикселя. Поэтому чтоб закодировать ряд пикселей надо записать данный в два места.
    Z - поддерживаются 2 знакогенератора. Переключаться можно между ними программно, на экране они могут присутствовать оба и сразу (об этом позже)

    Каждый байт имеет структуру:
    xxBGRbgr
    по R,G и B компоненте на пиксель. Биты инвертированные, поэтому 111 - чёрный, 000 - белый.
    Знакогенераторы переключаются такими символами - $80 - МЦПГ1, $90 - МЦПГ2, $8C - стандартный знакогенератор РК.
    Вот внизу подробно на картинке

    Написал небольшую программу, которая берёт изображение 100*80, и обрабатывает его, генерирует знакогенератор для него и выводит эти символы. В изображении 100*80 используется 2 набора по 125 символов - почти всё.
    Получается так - поле 100*80 и цвет на точку. Даже в спектруме и такого нет. (Диззи грустит )


    Для конвертации запустите Project1.exe, выберите картинку, подберите настройки и нажмите конвертировать. Сгерерируется Pic.asm в той же папке. Запустите compile.bat (не запустится на x64), всё скомпилируется и запустится эмулятор. Нажмите кнопку для переключения в цветной режим и появится картинка.
    Если хотите посмотреьт не компилируя, то запустите runonly.bat

    https://yadi.sk/d/im9j-VKddzntg

    Данный компьютер имеет неплохой потанциал для игр и демок, надо его раскрыть.

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

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

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

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

Похожие темы

  1. Ответов: 87
    Последнее: 02.09.2018, 21:18
  2. Схема модуля ИРПС
    от Andrnow в разделе БК-0010/0011
    Ответов: 64
    Последнее: 05.03.2018, 22:27
  3. Схема сетевого модуля YIS503IIIR
    от vladi в разделе MSX
    Ответов: 6
    Последнее: 23.02.2014, 06:53
  4. Расчет модуля разности чисел
    от Andrew771 в разделе Программирование
    Ответов: 15
    Последнее: 15.02.2013, 21:06
  5. Опознание процессорного модуля :)
    от Жека:) в разделе Зарубежные компьютеры
    Ответов: 5
    Последнее: 22.09.2010, 22:23

Ваши права

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