PDA

Просмотр полной версии : 64х64 симвлов на экране и графика 192x60



Atari
16.04.2012, 21:54
Вопрос наверное будет к vinxru.

это вообще как и если можно с живми примерами.

vinxru
16.04.2012, 23:26
Видеоконтроллер РК86 имеет разрешение 78 символов (по 6 пикселей) в ширину и 300 пикселей в высоту. Но из за чьих то кривых рук, на экране в лучшем случае видно 64 символа и 250 линий. Остальное за краем экрана.

Высоту символа (1-16) и количество текстовых строк (1-64) мы можем выбрать любое, но так, что бы в итоге получилось 250-300 графических строк. Иначе попылывут кадры.

Мы можем указать 64 строки высотой 4 пикселя. Получится нестандартная частота кадров. Вроде как ~60 Гц. Кадр станет уже.

---------- Post added at 23:19 ---------- Previous post was at 23:13 ----------

А у компьютера Апогей в знакогенераторе есть псевдографические символы 6x8, делящие знакоместо по ширине на 3 части, а по высоте на 2.

То есть, мы можем утроить разрешение по ширине и удвоить по высоте.

Но, само собой, если мы поставим высоту строки в 4 пикселя, но не увидим нижнюю половину символа и удвоения не произойдет.

Тут один вариант, высота строки 8 пикселей. И у нас получается 250/8 = 31 строка.

То есть по ширине 64*3=192 пикселя, а по высоте 31*2=62.

---------- Post added at 23:21 ---------- Previous post was at 23:19 ----------

Я с этим в живую экспериментировал. Включал разные видеорежимы и рисовал всякие картинки.

Если очень интересно, то могу поискать примеры на диске.

---------- Post added at 23:26 ---------- Previous post was at 23:21 ----------

А у стандартного РК86 в знгакогенераторе только псевдографические символы 6x8, делящие знакоместо по ширине на 2 части и по высоте на 2.

И псевдографическое разрешение по ширине 64*2=128 пикселей, а по высоте 31*2=62.

Vladimir_S
17.04.2012, 04:44
Если очень интересно, то могу поискать примеры на диске.
Как же не интересно? Очень даже.

Atari
17.04.2012, 09:32
у компьютера Апогей в знакогенераторе есть псевдографические символы 6x8

Я с этим в живую экспериментировал. Включал разные видеорежимы и рисовал всякие картинки.

это... вобщем эксперименты с Апогеем не означают, что такое бывает в жизни с Микрошей и 86РК.

vinxru
17.04.2012, 10:07
это... вобщем эксперименты с Апогеем не означают, что такое бывает в жизни с Микрошей и 86РК.

Дак вроде там стоит тот же ВГ75. И то же разрешение 64x25 при высоте символа 10 пикслей.

Итого 128x50.

Если мы уменьшим высоту символа до 8, что бы псевдографика не распадалась на строки, то получим 25*10/8 = 31 строка.

Итого те же 128x62

Vladimir_S
17.04.2012, 10:10
vinxru, А как насчет примеров?

vinxru
17.04.2012, 10:12
vinxru, А как насчет примеров?

Они дома где то на ноуте.

Vladimir_S
17.04.2012, 10:13
Они дома где то на ноуте.
Тогда ждем.

Atari
17.04.2012, 10:49
Если мы уменьшим высоту символа до 8, что бы псевдографика не распадалась на строки, то получим 25*10/8 = 31 строка.

Итого те же 128x62
если мы это сделаем, то видеопамять залезет на ячеки монитора и стек, или надо полностью перепрограмировать на другую область памяти.
вобщем ни одна известная мне программа для Микроши этого не делает.

---------- Post added at 09:49 ---------- Previous post was at 09:40 ----------

vinxru, это я собственно к чему...
вынесите ваши изыски с ВГ75 в отдельный раздел ВИКИ, и не вводите читателя в оману.

Vladimir_S
17.04.2012, 10:53
не вводите читателя в оману.
Я думаю тут нет никаких противоречий, тут речь скорей всего про Апогей.

Atari
17.04.2012, 10:59
Я думаю тут нет никаких противоречий, тут речь скорей всего про Апогей.
речь идет об этом http://zx-pk.ru/wiki/Микроша

Vladimir_S
17.04.2012, 11:02
Atari, я думаю vinxru имел ввиду Апогей когда писал про примеры.

vinxru
17.04.2012, 11:05
Да, примеры для Апогея. Но на форуме есть адаптированный пример для Радио 86РК. Там отличия только в адресе ВГ75.

Я напишу для эмулятора пример тогда.

Atari
17.04.2012, 11:09
примеры для Апогея. ... форуме есть адаптированный пример для Радио 86РК.
батенька, я починю ваши правки назад и пожайлуста больше не надо править там где ненадо.

Vladimir_S
17.04.2012, 11:10
Там отличия только в адресе ВГ75.
Это получается чтобы на 100% использовать этот режим адрес ВГ75 надо перенести до 75FF ?

Atari
17.04.2012, 11:16
75FF - это верхняя граница свободного ОЗУ для 32к версии компов. в примерах надо перенести сам адрес портов ВГ75, адрес порта ВТ57 для Микроши и 86РК одинаков.

vinxru
17.04.2012, 11:17
батенька, я починю ваши правки назад и пожайлуста больше не надо править там где ненадо.

Да, стопудова псевдографическое разрешение у Микроши 128x62 ! Какие могут быть сомнения?

Vladimir_S
17.04.2012, 11:19
75FF - это верхняя граница свободного ОЗУ для 32к версии компов. в примерах надо перенести сам адрес портов ВГ75, адрес порта ВТ57 для Микроши и 86РК одинаков.
Программно адреса ВГ75 можно перенести куда угодно.

Atari
17.04.2012, 11:20
но, если будут использоваться обращения к монитору, то последний будет хранить временные переменные в стандарнтной области 7600h-76CFh ибо она является "зашитой".
а там хранятся константы работы с магнитофоном, адреса курсора и много еще чего забавного.

vinxru
17.04.2012, 11:22
Это получается чтобы на 100% использовать этот режим адрес ВГ75 надо перенести до 75FF ?

Не понял.

В компьютерах Апогей, 86РК и Микроша отличается адрес порта ввода вывода ВГ75 и ВТ57 в оперативной памяти. В программе надо будет подправить только их адреса.

А сама программа скажет контроллерам, что теперь у нас высота символа, кол-во строк и размер буфера в памяти другое.

---------- Post added at 11:22 ---------- Previous post was at 11:20 ----------


но, если будут использоваться обращения к монитору, то последний будет хранить временные переменные в стандарнтной области 7600h-76CFh ибо она является "зашитой".
а там хранятся константы работы с магнитофоном, адреса курсора и много еще чего забавного.

Конечно. Адрес видеопамяти переносится. Либо. В видеопамяти можно разместить значения F1 (стоп ПДП), что "сожмет" видеопамять.

Я так то же делал.

Vladimir_S
17.04.2012, 11:23
А сама программа скажет контроллерам, что теперь у нас высота символа, кол-во строк и размер буфера в памяти другое.
Тоесть объем видеопамяти не меняется?

vinxru
17.04.2012, 11:26
Каждая строка занимает 78 байт. При этом первые 5 байт не используются, так как символы попадают за левый край экрана. И последние 9 байт не используются.

Стандартный объем видеопамяти 78*30 = 2340 байт.

Но если мы разместим в видеопамяти значение F1, то это будет считаться началом следующей строки. То есть не надо будет тратить 9 байт памяти для правого поля.

И не надо тратить 78*5 = 390 байт для верхнего и нижнего поля.

Проверено.

Atari
17.04.2012, 11:28
Программно адреса ВГ75 можно перенести куда угодно.
чаво? еще раз подумайте.

стопудова псевдографическое разрешение у Микроши 128x62 !
ну приведите в пример хоть одну игровую программу использующую это? или може интепретатор бейсика.
не стоит путать потенциально возможные вещи с фактически существующими.

vinxru
17.04.2012, 11:29
Тоесть объем видеопамяти не меняется?

Итого, видеопамяти у нас в обрез 2340 байта. Но в этом объеме мы сможем поместить режим 64x31, если мы будем использовать значение F1.

9 слева + 64 полезное + 1 стоп = 74 байта на строку

Еще 3 пустых строки сверху и 3 снизу. Байты F1 не могут идти подряд, поэтому по 2 байта на строку.

74 * 31 + 2 * 6 = 2306 байт.

Еще 34 байта в запасе осталось :)

---------- Post added at 11:29 ---------- Previous post was at 11:28 ----------


ну приведите в пример хоть одну игровую программу использующую это? или може интепретатор бейсика.
не стоит путать потенциально возможные вещи с фактически существующими.

Гонки на Апогее заполняют всё ОЗУ рисунком трассы, а потом просто изменяют адрес видеопамяти. И получается аппаратный скролл.

Atari
17.04.2012, 11:33
vinxru, и еще о прозе...
я там написал что на ПДП тратится 10% машинного времени, но что-то мне кажется, что эта цифра сильно занижена, и наверное реально стремится к 30%.

какие будут идеи как проверить?

---------- Post added at 10:33 ---------- Previous post was at 10:31 ----------


Гонки на Апогее заполняют всё ОЗУ рисунком трассы
отлично, в статьях о Апогее я вам не запрещаю писать все что вам хочется.

Vladimir_S
17.04.2012, 11:37
чаво? еще раз подумайте.
В Радио-86РК - 7600, в Апогее E1D0, что там ВГ75 другой?

vinxru
17.04.2012, 11:40
отлично, в статьях о Апогее я вам не запрещаю писать все что вам хочется.

В Микроше используются те же микросхемы ВТ57 + ВГ75.

Адрес видеопамяти загружается в ВТ57 при старте компьютера и может быть изменен. Это стандартный контроллер DMA. Микросхема ВТ57 читает из указанной области памяти байт и отдает его ВГ75.

Сама ВГ75 ни к какой памяти не привязана. Она умеет только у ВТ57 просить один байт.

Atari
17.04.2012, 11:40
В Радио-86РК - 7600, в Апогее E1D0, что там ВГ75 другой?

адреса ВГ75
вы путаете адреса портов микрухи и адреса видеопамяти.

vinxru
17.04.2012, 11:43
vinxru, и еще о прозе...
я там написал что на ПДП тратится 10% машинного времени, но что-то мне кажется, что эта цифра сильно занижена, и наверное реально стремится к 30%.

какие будут идеи как проверить?

--

Пишем цикл, который дергает CLI и STI. Подключаем тестер в режиме измерения частоты к динамику.

a:
cli
sti
jmp a

Программно отключаем ВТ57 (это делается при загрузке программы с магнитофона, иначе процессор непредсказуемо тормозит). И запускаем ту же программу, и так же измеряем частоту динамика.

Vladimir_S
17.04.2012, 11:44
вы путаете адреса портов микрухи и адреса видеопамяти.
Адрес видеопамяти задается из "монитора" при инициализации , почему его не задать из практически любой программы? Выход только по F800.

Atari
17.04.2012, 11:46
vinxru, у микроши динамик висит на таймере, и к INTE не привязан.

vinxru
17.04.2012, 11:46
vinxru, у микроши динамик висит на таймере, и к INTE не привязан.

Значит тестер на выход INTE.

Atari
17.04.2012, 11:48
почему его не задать из практически любой программы? Выход только по F800
можно, но зачем? + придется таскать за собой пол "монитора".
и при любом сбое, отсутсвие ПДП разрушит всю ОЗУ.

Vladimir_S
17.04.2012, 11:50
можно, но зачем? + придется таскать за собой пол монитора.
и при любом сбое, отсутсвие ПДП разрушит всю ОЗУ.
Да это я так, чисто теоретически.

vinxru
17.04.2012, 11:51
можно, но зачем?

Что бы получить более высокое разрешение. Хотя это не обязательно, я писал простой способ.


+ придется таскать за собой пол "монитора".

Только единственную функцию вывода текстовой строки. ~20 команд.


и при любом сбое, отсутсвие ПДП разрушит всю ОЗУ.

ПДП никуда не делся.

Atari
17.04.2012, 11:54
Значит тестер на выход INTE.
наверное повешу осцилоскоп на сигнале занятости шины.

---------- Post added at 10:54 ---------- Previous post was at 10:52 ----------


Только единственную функцию вывода текстовой строки. ~20 команд.
аматоры :v2_dizzy_wall:

а курсор двигать? а скролл? а ESC последовательности?

vinxru
17.04.2012, 11:58
а курсор двигать? а скролл? а ESC последовательности?

А зачем тебе это нужно? Если ты пишешь программу работающую в псевдографике, то ты явно будешь выводить графику не ESC последвательностями, а напрямую записью в видеопамять.

Курсор устанавливается через порт быстро и просто.

Все поголовно работают с видеопамятью и железом напрямую. Иначе бы программы Апогея, Микроши, РК86 были бы совместимые. Программ работающих через ПЗУ всего десяток.

Atari
17.04.2012, 12:12
А зачем тебе это нужно? Если ты пишешь программу работающую в псевдографике, то ты явно будешь выводить графику не ESC последвательностями, а напрямую записью в видеопамять.
гениально, а если мне понадобиться вывести текст?
конечно, одну строчку можно и прицелиться, но когда их больше одной?


Курсор устанавливается через порт быстро и просто.
да, если стоит вопрос только запхнуть байты в порты. но говорят (наверное врут) что иногда надо соотносить позицию курсора с адресом в видео ОЗУ. и говорят (наверное опять врут) что для этого надо провести некоторые математические действия.


Все поголовно работают с видеопамятью и железом напрямую. Иначе бы программы Апогея, Микроши, РК86 были бы совместимые. Программ работающих через ПЗУ всего десяток.
если под словом "железо" понимать клаву и таймер то да.
пограмм которые напрямую работают с ВГ75 и ВТ57 единицы.

vinxru
17.04.2012, 13:44
если под словом "железо" понимать клаву и таймер то да.
пограмм которые напрямую работают с ВГ75 и ВТ57 единицы.

И еще видеопамять.

vinxru
17.04.2012, 13:49
Вот тебе программа для Микроши включающая псевдографический режим 128x62, причем этот режим использует меньше ОЗУ, чем оригинальный 128x50



; Пример псевдографического режима
; (с) 17-04-2012 vinxru
; Используется компилятор sjasm

device zxspectrum48

hdr: db 0,4
dw 0

start: ; Ждем обратный ход

ld hl, 0D001h ; для Апогея 0EF01h
ld a, (hl) ; Обязательно пару команд!
wait1: ld a, (hl)
and 20h
jp z, wait1

; Вырубаем видео

ld hl, 0D001h ; для Апогея 0EF01h
ld (hl), 0

; Заполняем видеопамять (из за байта F1 это надо делать пока видео выключено)

ld bc, data
ld hl, 76D0h ; для Апогея 0E1D0h
copy: ld a, (bc)
cp 0FFh
jp z, endCopy
ld (hl), a
inc bc
inc hl
jp copy
endCopy:

; Устаналиваем режим и врубаем видео

ld hl, 0D000h ; для Апогея 0EF00h
ld (hl), 04Dh ; 78 символов
ld (hl), 36 ; 37 линий
ld (hl), 7 ; Высота символа 8
ld (hl), 083h

; Врубаем видео

inc l
ld (hl), 27h

; Висим

jp $

data: db 0,0F1h,0,0F1h,0,0F1h
db 0,0,0,0,0,0,0,0,0, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,0F1h ; 0
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567 890123456789012',5,0F1h ; 1
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567 890123456789012',5,0F1h ; 2
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567 890123456789012',5,0F1h ; 3
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567 890123456789012',5,0F1h ; 4
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567 890123456789012',5,0F1h ; 5
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567 890123456789012',5,0F1h ; 6
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567 890123456789012',5,0F1h ; 7
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567 890123456789012',5,0F1h ; 8
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567 890123456789012',5,0F1h ; 9
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567 890123456789012',5,0F1h ; 10
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567 890123456789012',5,0F1h ; 11
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567 890123456789012',5,0F1h ; 12
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567 890123456789012',5,0F1h ; 13
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567 890123456789012',5,0F1h ; 14
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567 890123456789012',5,0F1h ; 15
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567 890123456789012',5,0F1h ; 16
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567 890123456789012',5,0F1h ; 17
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567 890123456789012',5,0F1h ; 18
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567 890123456789012',5,0F1h ; 19
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567 890123456789012',5,0F1h ; 20
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567 890123456789012',5,0F1h ; 21
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567 890123456789012',5,0F1h ; 22
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567 890123456789012',5,0F1h ; 23
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567 890123456789012',5,0F1h ; 24
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567 890123456789012',5,0F1h ; 25
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567 890123456789012',5,0F1h ; 26
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567 890123456789012',5,0F1h ; 27
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567 890123456789012',5,0F1h ; 28
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567 890123456789012',5,0F1h ; 29
db 0,0,0,0,0,0,0,0,0, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,0F1h ; 0
db 0,0F1h,0,0F1h,0,0F1h

dataEnd: DUP 78*30 - (dataEnd-data)
db 0
EDUP

db 0FFh

end: savebin "test.rkm",hdr,end-hdr

vinxru
17.04.2012, 14:03
гениально, а если мне понадобиться вывести текст?
конечно, одну строчку можно и прицелиться, но когда их больше одной?

ld hl, text1
call myPrintFunction
ld hl, text2
call myPrintFunction
ld hl, text3
call myPrintFunction

---------- Post added at 14:03 ---------- Previous post was at 13:51 ----------


батенька, я починю ваши правки назад и пожайлуста больше не надо править там где ненадо.


отлично, в статьях о Апогее я вам не запрещаю писать все что вам хочется.

Я понял, что вы имеете в виду. Вам не нравится то, что я тронул вашу статью. Я не буду трогать вашу статью и не хотел. Я просто добавил вверх статьи шапку, что бы все статьи были в одном стиле.

Atari
17.04.2012, 14:15
Вам не нравится то, что я тронул вашу статью.
в некотором смысле да, я не против правок ибо данное творение общественное, но не стоит путать энциклопедичность с сослагательным наклонением "может".

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

думаю мы придем к единому стилю при подаче материала :v2_cheer:
тем более, что меня хватит только на пару разделов о том, с чем лично долго и плотно знаком.

Vladimir_S
17.04.2012, 14:37
не имеет актуального смысла
Извини за каламбур, но в каком то смысле все чем мы все здесь занимаемся не имеет актуального смысла. Мы последние из магикан.

Atari
17.04.2012, 14:46
в каком то смысле все чем мы все здесь занимаемся не имеет актуального смысла.
в данном случае тема освещает конкретный предмет (86РК, Микроша) и его обсуждение имеет конкретный исторический смысл.
отсутсвие "могикан войны 1812 года" не делает войну 1812 года бессмысленной.

vinxru
17.04.2012, 14:46
Мы последние из магикан.

Мне кажется, что интерес к древним компьютерам стабилизировался. И пропадет интерес только когда все компьютеры и все микросхемы типа 155ЛА3 осядут в подвалах коллекционеров.

Ковыряться с компьютерами всяко интереснее, чем годами играть MMORPG. Это хорошая зарядка для ума.

Vladimir_S
17.04.2012, 14:49
Ковыряться с компьютерами всяко интереснее, чем годами играть MMORPG.
Согласен.Но под актуальным смыслом я имел ввиду прикладное назначение.

vinxru
17.04.2012, 14:50
Согласен.Но под актуальным смыслом я имел ввиду прикладное значение.

Кроме добычи пищи всё в нашей жизни не имеет смысла.

Atari
17.04.2012, 14:54
поехала софистика :v2_crazy:

Vladimir_S
17.04.2012, 22:16
vinxru, что там с примерами?

vinxru
18.04.2012, 11:22
Я провел поиск на трёх компьютерах всех *.asm файлов и не нашел. Я написал программу преобразующую BMP файлы в формат видеопамяти РК86. Вот пример её работы:

http://habrastorage.org/storage1/94a2e981/ed3eb430/b90455da/a0c1d5e8.jpg

Не нашел. Но скомпилированные программы где то есть в форуме. И еще у меня была на 50% написанная игра River Raid. Игровое поле, самолетик и плавающие вправо-влево корабли. Вот и всё.

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

И еще были наброски с горизонтальным и вертикальным скроллом. Стрелками можно было просматривать весь уровень игры Zeliard. При нажатии на стрелку дорисовывалось только две линии изображения и изменялся адрес видеопамяти.

Ничего пока не нашел. :(

Vladimir_S
18.04.2012, 11:26
Жалко.

vinxru
18.04.2012, 13:05
Еще поищу. Я ведь их не удалял.

---------- Post added at 13:05 ---------- Previous post was at 11:33 ----------

Я всех обманул.

128x62 справедливо для всех клонов РК86.

Но я внезапно вспомнил. что у Апогея альтернативный шрифт 6x4 пикселя. Так что разрешение у него еще больше.

300 линий по 4 пикселя = это 75 строк. Такое ВГ75 не сможет показать.

Максимум 64 строки, итого 64*4 = 256 линий.

На экране видно только 206 линий или 206/4 = 51,5 строка.

Второе псевдографическое разрешение у Апогея 192x103 пикселя.

Сейчас демку напишу.

vinxru
18.04.2012, 14:02
192x104 с нестандартной частой кадров 60 Гц

Хотя, отдельные элементы имеют разрешение 386x205

http://s019.radikal.ru/i611/1204/56/74226f7c0748.png




; Пример псевдографического режима
; (с) 17-04-2012 vinxru
; Используется компилятор sjasm

VG75_ADDR = 0EF00h
VT57_ADDR = 0F000h
VIDEOMEM_ADDR = 08000h
VIDEOMEM_SIZE = 78*64

device zxspectrum48

; Заголовок RKA файла

hdr: db start>>8, start&0xFF
dw 0

start: ; Ждем обратный ход

ld hl, VG75_ADDR+1
ld a, (hl)
wait1: ld a, (hl)
and 20h
jp z, wait1

; Выключаем видео и устаналиваем режим

ld hl, VG75_ADDR+1
ld (hl), 0
dec hl
ld (hl), 77 ; 78 символов
ld (hl), 63 ; 64 линии
ld (hl), 3 ; Высота символа 4
ld (hl), 053h

; Включаем альтернативный знакогенератор

ei

; Устаналиваем положение и размер видеопамяти

ld hl, VT57_ADDR+8
ld (hl), 80h

ld l, 4
ld (hl), VIDEOMEM_ADDR & 0xFF
ld (hl), VIDEOMEM_ADDR >> 8

inc l
ld (hl), (VIDEOMEM_SIZE-1) & 0xFF
ld (hl), 40h | ((VIDEOMEM_SIZE-1) >> 8)

ld l, 8
ld (hl), 0A4h

; Очищаем видеопамять

ld hl, VIDEOMEM_ADDR
ld bc, VIDEOMEM_SIZE
ld a, 0
clearMem: ld (hl), a
inc hl
dec c
jp nz, clearMem
dec b
jp nz, clearMem

; Включаем видео

ld hl, VG75_ADDR+1
ld (hl), 27h

; Копируем в видеопамять

ld hl, VIDEOMEM_ADDR + 78*6 + 9
ld bc, screen
ld d, 52
loop1: ld e, 64
loop2: ld a, (bc)
inc bc
ld (hl), a
inc hl
dec e
jp nz, loop2
push de
ld de, 14
add hl, de
pop de
dec d
jp nz, loop1

; Висим

jp $

;----------------------------------------------------------------------------

A = 5Eh
B = 58h
C = 60h
D = 52h
E = 57h
F = 5Fh
G = 5Bh
H = 61h
I = 15h
J = 2Ah
K = 7Fh
L = 67h
M = 45h
N = 4Ch
O = 4Eh
P = 43h
Q = 68h
R = 65h
S = 64h
T = 7Ah
U = 7Bh
V = 7Ch
W = 4Eh
X = 4Ch
Y = 43h
Z = 45h
_ = 0

screen: db A,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B, B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B, B,B,B,B,B,B,B,B,B,B,B,B,B,C
db D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,E
db D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,E
db D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,E
db D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,E
db D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,E
db D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,E
db D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,E
db D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,E
db D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,E
db D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,E
db D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,E
db D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,E
db D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,E
db D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,E
db D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,E
db D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,E
db D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,E
db D,_,I,J,I,J,I,J,I,J,I,J,_,_,K,K,K,K,K,K,K,K,K,K,_, _,R,B,B,B,B,B,B,B,B,B,C,_,_,T,T,T,T,T,T,T,T,T,T,_, _,W,W,W,W,W,W,W,W,W,W,_,_,E
db D,_,I,J,I,J,I,J,I,J,I,J,_,_,K,K,K,K,K,K,K,K,K,K,_, _,D,_,L,_,_,L,_,_,L,_,E,_,_,U,U,U,U,U,U,U,U,U,U,_, _,X,X,X,X,X,X,X,X,X,X,_,_,E
db D,_,I,J,I,J,I,J,I,J,I,J,_,_,K,K,K,K,K,K,K,K,K,K,_, _,D,M,_,N,E,_,D,M,_,N,E,_,_,V,V,V,V,V,V,V,V,V,V,_, _,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,_,_,E
db D,_,I,J,I,J,I,J,I,J,I,J,_,_,K,K,K,K,K,K,K,K,K,K,_, _,D,O,_,P,E,_,D,O,_,P,E,_,_,T,T,T,T,T,T,T,T,T,T,_, _,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,_,_,E
db D,_,I,J,I,J,I,J,I,J,I,J,_,_,K,K,K,K,K,K,K,K,K,K,_, _,D,_,Q,_,_,Q,_,_,Q,_,E,_,_,U,U,U,U,U,U,U,U,U,U,_, _,W,W,W,W,W,W,W,W,W,W,_,_,E
db D,_,I,J,I,J,I,J,I,J,I,J,_,_,K,K,K,K,K,K,K,K,K,K,_, _,F,G,G,G,_,_,_,G,G,G,S,_,_,V,V,V,V,V,V,V,V,V,V,_, _,X,X,X,X,X,X,X,X,X,X,_,_,E
db D,_,I,J,I,J,I,J,I,J,I,J,_,_,K,K,K,K,K,K,K,K,K,K,_, _,_,_,_,_,X,_,Z,_,_,_,_,_,_,T,T,T,T,T,T,T,T,T,T,_, _,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,_,_,E
db D,_,I,J,I,J,I,J,I,J,I,J,_,_,K,K,K,K,K,K,K,K,K,K,_, _,_,_,_,_,Y,_,W,_,_,_,_,_,_,U,U,U,U,U,U,U,U,U,U,_, _,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,_,_,E
db D,_,I,J,I,J,I,J,I,J,I,J,_,_,K,K,K,K,K,K,K,K,K,K,_, _,R,B,B,B,_,_,_,B,B,B,C,_,_,V,V,V,V,V,V,V,V,V,V,_, _,W,W,W,W,W,W,W,W,W,W,_,_,E
db D,_,I,J,I,J,I,J,I,J,I,J,_,_,K,K,K,K,K,K,K,K,K,K,_, _,D,_,L,_,_,L,_,_,L,_,E,_,_,T,T,T,T,T,T,T,T,T,T,_, _,X,X,X,X,X,X,X,X,X,X,_,_,E
db D,_,I,J,I,J,I,J,I,J,I,J,_,_,K,K,K,K,K,K,K,K,K,K,_, _,D,M,_,N,E,_,D,M,_,N,E,_,_,U,U,U,U,U,U,U,U,U,U,_, _,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,_,_,E
db D,_,I,J,I,J,I,J,I,J,I,J,_,_,K,K,K,K,K,K,K,K,K,K,_, _,D,O,_,P,E,_,D,O,_,P,E,_,_,V,V,V,V,V,V,V,V,V,V,_, _,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,_,_,E
db D,_,I,J,I,J,I,J,I,J,I,J,_,_,K,K,K,K,K,K,K,K,K,K,_, _,D,_,Q,_,_,Q,_,_,Q,_,E,_,_,T,T,T,T,T,T,T,T,T,T,_, _,W,W,W,W,W,W,W,W,W,W,_,_,E
db D,_,I,J,I,J,I,J,I,J,I,J,_,_,K,K,K,K,K,K,K,K,K,K,_, _,F,G,G,G,G,G,G,G,G,G,S,_,_,U,U,U,U,U,U,U,U,U,U,_, _,X,X,X,X,X,X,X,X,X,X,_,_,E
db D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,E
db D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,E
db D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,E
db D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,E
db D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,E
db D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,E
db D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,E
db D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,E
db D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,E
db D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,E
db D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,E
db D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,E
db D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,E
db D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,E
db D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,E
db D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,E
db D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,E
db D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,E
db D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,E
db F,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G, G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G, G,G,G,G,G,G,G,G,G,G,G,G,G,H

end: savebin "test.rka",hdr,end-hdr


http://zx-pk.ru/w/images/c/cf/Apogbk01chg.png

vinxru
18.04.2012, 14:50
И еще заметка.

Эффект GigaScreen, который который реализуется в ZX Spectrum 128 быстрым переключением двух видеостраниц в компьютерах РК86 реализуется крайне просто.
Надо просто увеличить объем видеопамяти в 2 раза.

Rokl
18.04.2012, 18:44
если мы это сделаем, то видеопамять залезет на ячеки монитора и стек, или надо полностью перепрограмировать на другую область памяти.
вобщем ни одна известная мне программа для Микроши этого не делает.[COLOR="Silver"]

Возможно нужно просто изменить знакогенератор в области псевдографических символов, что бы разбить их на более мелкие (в смысле по вертикали, т.е. не на половину знакоместа по вертикали, а на 1/3 знакоместа по вертикали. Но непонятно, куда девать избыточные псевдографические символы.
PS:собственно, так оно и оказалось. Нужно перешивать знакогенератор.
Весьма интересный вариант. Ещё бы пример вывода картинки на экран для конкретного экземпляра компьютера. Вообще бы красота была.

vinxru
19.04.2012, 14:37
Засунул в викию оба примера из этой ветки.

http://zx-pk.ru/wiki/%D0%9F%D1%81%D0%B5%D0%B2%D0%B4%D0%BE%D0%B3%D1%80%D 0%B0%D1%84%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0% B9_%D1%80%D0%B5%D0%B6%D0%B8%D0%BC_128x62_%D0%BA%D0 %BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%B E%D0%B2_%D0%A0%D0%9A86

http://zx-pk.ru/wiki/%D0%9F%D1%81%D0%B5%D0%B2%D0%B4%D0%BE%D0%B3%D1%80%D 0%B0%D1%84%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0% B9_%D1%80%D0%B5%D0%B6%D0%B8%D0%BC_192x104_%D0%BA%D 0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0% B0_%D0%90%D0%BF%D0%BE%D0%B3%D0%B5%D0%B9_%D0%91%D0% 9A-01

Atari
19.04.2012, 14:46
Rokl, все это возможно, и как показал vinxru вполне реализуемо.
но забивать половину знакогенератора псевдографикой при всего 7-ми битах (128 символах) это большая роскошь.