Сделайте генерацию QR кода!
Сделайте генерацию QR кода!
Благодарю. Не дождался, полез дизассемблировать))) Но всё равно спасибо, так нагляднее.
Кажется, стало получатся.
- - - Добавлено - - -
Чуть позже доберусь до реального РК и поэкспериментирую на нём.
- - - Добавлено - - -
Верно ли я понимаю, не вдаваясь в детали, что для программирования цвета мне нужно на ВГ75 отправить команду остановки вывода символов, далее какой-то спецкод цвета, далее снова включить вывод символов и далее все символы будут печататься тем цветом, код которого я отправил в ВГшку?
Результаты на реальном компе пока такие.
На 60 герцах - http://radikal.ru/video/HpMbb3nnEhI
На 50 герцах (исходник прилагаю) - http://radikal.ru/video/2iZhyg7rFFZ
Цветные игры (в т.ч. болдер) на этом тв-тюнере тоже слетают, а вот демка от DDp функционирует корректно.
Какие у неё параметры?
Скрытый текст
;Compile with "Macro Assembler AS" http://john.ccac.rwth-aachen.de:8000/as/
HIGH FUNCTION X,((X>>8)&0ffh)
LOW FUNCTION X,(X&0ffh)
;
include "config.asm"
SCREEN: equ 746ch ;0x8000-78*38
IF RADIO86RK
CTRL_CRT: equ 0c000h
CTRL_DMA: equ 0e000h
ELSEIF MIKROSHA
CTRL_CRT: equ 0d000h
CTRL_DMA: equ 0f800h
ELSEIF APOGEE
CTRL_CRT: equ 0ef00h
CTRL_DMA: equ 0f000h
ENDIF
org 0000h
lxi sp,SCREEN-1
lxi h,SCREEN
xra a
mov c,a
clrscr1:mov m,c
inx h
ora h
jp clrscr1
lxi h,CTRL_CRT+1
mvi m,80h
dcx h
mov m,c
mov m,c
inx h
mov m,c
dcx h
mvi m,4dh
mvi m,25h
mvi m,07h
mvi m,73h
inx h
mvi m,27h
mov a,m
wait0: mov a,m
ani 20h
jz wait0
lxi h,CTRL_DMA+8
mvi m,80h
mvi l,04h
mvi m,LOW(SCREEN)
mvi m,HIGH(SCREEN)
inr l
mvi m,93h
mvi m,4bh
mvi l,08h
mvi m,0a4h[свернуть]
Из того, что я понял,
0x4D - символов в строке = 78
0x25 - строк в кадровом импульсе - ?, строк в кадре = 38 (?) или нет?
собственно, больше я ничего и не понял.
1) Как расшифровать 07h и 73h(3 и 4 параметры ВГшки)?
2) Неясны значения функций, а точнее, непонятно как соотносятся
screen_addr & 0x00FF из примера с LOW FUNCTION X,(X&0ffh) из исходника DDp (но здесь хотя бы логика аналогична), а вот тут
screen_addr >> 8 из примера с HIGH FUNCTION X,((X>>8)&0ffh) из исходника.
3) Как расшифровать 93h и 4bh (3 и 4 параметры ВТшки)?
Чувствую, я уже близко)
- - - Добавлено - - -
Такое ощущение, что с частотой и настройками ВГшки всё ок, а вот адресация видеопамяти идёт не пойми куда...
Последний раз редактировалось norduk; 24.11.2017 в 22:18.
В этом исходнике (что в файле) экран вылазит за 0x7FFF - а что там у РК86, вроде ОЗУ уже нет?
//0x76D0 + (78*38=2964) = 0x8264
Может в этом проблема?
В моём тестовом примере адрес экранной области можно указывать произвольный, тем самым не загоняя себя в рамки стандартного экрана. А зачем вообще его помещать с адреса 0x76DO? Пускай там живёт экран Монитора.
Ну или если очень надо, то применять спецсимволы 0xF0, 0xF1, 0xF2 и 0xF3. Тогда нужно пересчитать размер экранной области пересылаемой контроллером ПДП.
- - - Добавлено - - -
0x07 = UUUU_LLLL = 0000_0111
0000 - линия подчёркивания = 1
0111 - линий в строке = 8
0x73 = M_F_CC_ZZZZ = 0_1_11_0011
0 - символ выводится нормально, без сдвига
1 - атрибуты отображаются в виде пустого знакоместа
11 - курсор немигающее подчёркивание
0011 - 8 символов в строчном синхроимпульсе
Вот тут всё расписано http://emuverse.ru/wiki/Intel_8275/Документация. См. параметры команды Сброс.
- - - Добавлено - - -
= 0x4B93, где 0x4 это вид обмена ПДП (чтение), а 0xB93 = 2963 (78*38=2964 байта для пересылки контроллером ПДП в экранную область).
Вроде так. Подробнее тут http://emuverse.ru/wiki/Intel_8257/Документация
- - - Добавлено - - -
Это просто способ получить для ассемблера старший и младший байт начала экранной области.
Последний раз редактировалось SegaBoy; 25.11.2017 в 11:22.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Очень похоже. Мистика, в общем. Как оно и бывает)
Взял дизассемблировал демку DDp, построчно вбил инициализацию ВГ и ВТ, отрисовал несколько кубиков - заработало.
Перенёс код из примера со всеми константами - всё ещё работало.
Перенёс свой код с рисунком - оно продолжает работать))
В эмуляторе пашет, попозже попробую на реале.
- - - Добавлено - - -
И на реале пашет! УРА!
Да, актуально, спасибо. Но это я знаю) Речь о запуске самого эмуля сразу в режиме отладки.
Это к вопросу об использовании оболочки winasm+fasm. Так вот в winasm можно указать путь к эмулятору как для запуска в нём транслированного кода, так и для отладки.
В общем, не такая уж это необходимость запуск в режиме отладчика прямо из коммандной строки, но определённый смысл в этом есть)
Продолжу свои нубские распросы.
Итак, мы получили экран 50Hz без двух линий растра в каждой строке, таким образом склеили псевдографику, которой теперь можно полноценно рисовать.
Естественно, что теперь охота получить цвет.
Взял исходник, убрал всю алгоритмическую чушь, оставил только настройки видео и попытался вывести пару разукрашенных символов псевдографики - не вышло ничего.
Ожидаемо при no_trans_attr=1 экран уплывает (уплывает, а атрибуты всё равно не применяются), при ноль - атрибуты также не применяются...
Что делать?
Исходник прилагаю.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)