nedoPC.org

Community for electronics hobbyists, established in 2002
Last visit was: 08 Nov 2024 16:23
It is currently 08 Nov 2024 16:23



 [ 68 posts ]  Go to page 1, 2, 3, 4, 5  Next
Программное перемещение видеопамяти в РК-совместимых компах 
Author Message
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23398
Location: Silicon Valley
Вот как Монитор РК-86 настраивает ВГ75 и ВТ57 (с моими комментариями):
Code:
FACE:           entry_video:                            ; -- start video
FACE: E5                        push    h               ; CODE XREF: F82Dj F83Ep F858p F9AAp FB75j FC38p
FACF: 2101C0                    lxi     h, 0C001h ; VG75+1
FAD2: 3600                      mvi     m, 0 ; format screen
FAD4: 2B                        dcx     h ; VG75+0
FAD5: 364D                      mvi     m, 4Dh ; S=0 (all columns) H=4Dh=77 (width=77+1=78)
FAD7: 361D                      mvi     m, 1Dh ; V=00 (vertical blank 1T) P=1Dh=29 (height=29+1=30)
FAD9: 3699                      mvi     m, 99h ; U=9 (underline at 10th line) L=9 (10 lines per character)
FADB: 3693                      mvi     m, 93h ; M=1 (offset 1) F=0 (invisible attributes) C=01 (cursor is blinking line) Z=3 (horizontal blank 8Tclk)
FADD: 23                        inx     h ; VG75+1
FADE: 3627                      mvi     m, 27h ; start video (S=001 - DMA time 7clk, B=11 - 8 bytes per DMA packet)
FAE0: 7E                        mov     a, m
FAE1:           loc_0_FAE1:
FAE1: 7E                        mov     a, m            ; CODE XREF: FAE4j
FAE2: E620                      ani     20h
FAE4: CAE1FA                    jz      loc_0_FAE1      ; wait for start video
FAE7: 2108E0                    lxi     h, 0e008h ; VT57+8
FAEA: 3680                      mvi     m, 80h ; AL
FAEC: 2E04                      mvi     l, 4 ; VT57+4 ; CH-2 DMA Address
FAEE: 36D0                      mvi     m, 0D0h ; <<<<<<<<<<<<<< LO BYTE
FAF0: 3676                      mvi     m, 76h  ; <<<<<<<<<<<<<< HI BYTE
FAF2: 2C                        inr     l ; VT57+5 ; CH-2 Terminal Count
FAF3: 3623                      mvi     m, 23h ; Clow=23h
FAF5: 3649                      mvi     m, 49h ; Rd=F Wr=T Chi=09h (C=923h=2339=N-1 so N=2340 or 78x30)
FAF7: 2E08                      mvi     l, 8 ; VT57+8
FAF9: 36A4                      mvi     m, 0A4h ; AL+EW+TC2
FAFB: E1                        pop     h
FAFC: C9                        ret
(я пометил стрелочками где адрес экрана 76D0h задаётся)

Вот тут обсуждалось почему эта подпрограмма вызывается дважды при инициализации периферии после включения РК.

Программно можно не только адрес видеопамяти, ширину и высоту экрана настраивать, но также количество строк в знакоместе - при этом надо следить, чтобы размер экрана в настройках ПДП совпадал с размером экрана в настройках ВГ75 и потом есть ещё трюки, например для укорочения строки видеопамяти в конце видимой части каждой строки ставят код F1, который останавливает ПДП (т.е. на хвост строки можно не тратить видеопамять). Потом я для своих РК-поделок буду делать режим с видимыми атрибутами как в Апогее (чтобы экран не съезжал и не нужно было заморачиваться с тонкой настройкой ПДП при раскрашивании картинки) для этого по адресу FADC вместо 93h надо записать D3h, что приведёт к тому, что атрибуты будут видны как пробелы.

Путём перепрограммирования адреса начала видеопамяти можно делать вертикальный или горизонтальный скролл с шагом в размер знакоместа (высоту которого можно настраивать программно от обычных 10 вниз вплоть до 4, но не ширину, которая в РК-совместимых компьютерах всегда равна 6 пикселам).

P.S. Однако в "расширенных" до VGA новоделах (типа Микрокома или Пальмиры) ширина символа равна 8 пикселам...

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


19 Feb 2024 09:46 WWW
Doomed
User avatar

Joined: 14 Oct 2019 18:10
Posts: 346
Location: Tashkent
Пользовать утилитой можно следующим образом:
  • «G» - восстановление режима по умолчанию
  • «G,,<адрес_буфера_экрана>» - где адрес должен быть больше 0100 и меньше 8000
  • «G,<высота><ширина>» - где ширина и высота указываются слитно
  • «G,<высота><ширина>,<адрес_буфера_экрана>»
Например:
  • «G,1E4E» - размер экрана по умолчанию 78x30 (30 = 0x1E, 78 = 0x4E)
  • «G,,76D1» - где 76D1 сдвинут на 1 позицию относительно основного буфера
  • «G,194E,77C2» - почти идеальный режим! :mrgreen:


You do not have the required permissions to view the files attached to this post.


19 Feb 2024 10:00 WWW
Maniac
User avatar

Joined: 14 Oct 2023 06:59
Posts: 268
не знаком с монитором, но похоже, что G - это вызов адреса?

_________________
uselessretro.blogspot.com


19 Feb 2024 10:09
Doomed
User avatar

Joined: 14 Oct 2019 18:10
Posts: 346
Location: Tashkent
Двоично-десятичный вариант
Пользоваться утилитой можно следующим образом:
  • «G» - восстановление режима по умолчанию
  • «G,,<адрес_буфера_экрана>» - где адрес должен быть больше 0100 и меньше 8000
  • «G,<высота><ширина>» - где ширина и высота указываются в двоично-десятичном виде
  • «G,<высота><ширина>,<адрес_буфера_экрана>»
Например:
  • «G,3078» или «G,30 78» - размер экрана по умолчанию 78x30
  • «G,,76D1» - где 76D1 сдвинут на 1 позицию относительно основного буфера
  • «G,2578,77C2» или «G,25 78,77C2» - почти идеальный режим! :mrgreen:
shiny wrote:
не знаком с монитором, но похоже, что G - это вызов адреса?
Передача управления и параметров коду по указанному адресу и указание точки остановки для отладки с последующим изучением/изменением регистров в директиве X.


You do not have the required permissions to view the files attached to this post.


Last edited by Alikberov on 19 Feb 2024 11:02, edited 1 time in total.



19 Feb 2024 11:00 WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23398
Location: Silicon Valley
Ещё бы высоту символов задавать :)
Или она автоматом рассчитывается?
Ещё вот такой настройщик был: http://www.nedopc.org/forum/viewtopic.php?p=159826#p159826
А так с примерами кода надо - вечерком подберу из разных источников и прицеплю в первое сообщение топика…

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


19 Feb 2024 11:01 WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23398
Location: Silicon Valley
Shaos wrote:
А так с примерами кода надо - вечерком подберу из разных источников и прицеплю в первое сообщение топика…
Пока прицепил как в классическом мониторе РК-86 было

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


19 Feb 2024 22:13 WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23398
Location: Silicon Valley
Вот интересный пример от vinxru, который я переработал под pdp11asm85 и сделал совместимым с Emu80 v.4 - пример показывает как можно в пределах той же области экрана 76D0...7FF3 сделать режим 64x31 (внутри режима 78х37x8@51Гц) программируя только ВГ75 (и форматируя экран обрезанными с правой стороны строчками) и не трогая ВТ57:

Code:
; Пример псевдографического режима
; (с) 17-04-2012 vinxru

; Converted to pdp11asm85 by Shaos on 21-Feb-2024

                .i8080

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

                lxi h, 0C001h   ; для Апогея 0EF01h
                mov a,m
wait1:          mov a,m
                ani 20h
                jz wait1

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

                mvi m, 0h

                ; Устаналиваем режим

                lxi h, 0C000h   ; для Апогея 0EF00h
                mvi m, 04Dh     ; 78 символов
                mvi m, 36       ; 37 линий
                mvi m, 7        ; Высота символа 8
                mvi m, 003h

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

                lxi b, data
                lxi h, 76D0h ; для Апогея 0E1D0h
copy:           ldax b
                cpi 0FFh
                jz endCopy
                mov m,a
                inx b
                inx h
                jmp copy
endCopy:

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

                lxi h, 0C001h
                mvi m, 27h

                ; Висим

                jmp $

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,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 1
                db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 2
                db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 3
                db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 4
                db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 5
                db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 6
                db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 7
                db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 8
                db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 9
                db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 10
                db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 11
                db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 12
                db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 13
                db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 14
                db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 15
                db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 16
                db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 17
                db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 18
                db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 19
                db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 20
                db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 21
                db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 22
                db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 23
                db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 24
                db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 25
                db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 26
                db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 27
                db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 28
                db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',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 ; 30
                db 0,0F1h,0,0F1h,0,0F3h

dataEnd:
                .blkb 34

                db 0FFh

                make_radio86rk_rom "test_vinxru.rkr"


Attachment:
Screenshot from 2024-02-21 02-00-37.png

Code:
Archive:  test_vinxru.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
       47  2024-02-21 01:49   test_vinxru_mk
     2400  2024-02-21 02:00   test_vinxru.rkr
     6009  2024-02-21 02:00   test_vinxru.lst
     4373  2024-02-21 02:00   test_vinxru.asm
---------                     -------
    12829                     4 files


You do not have the required permissions to view the files attached to this post.

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


21 Feb 2024 03:12 WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23398
Location: Silicon Valley
Shaos wrote:
Вот интересный пример от vinxru, который я переработал под pdp11asm85 и сделал совместимым с Emu80 v.4 - пример показывает как можно в пределах той же области экрана 76D0...7FF3 сделать режим 64x31 (внутри режима 78х37x8@51Гц) программируя только ВГ75 (и форматируя экран обрезанными с правой стороны строчками) и не трогая ВТ57
Если сделать 38 строк, то частота кадров станет 49.69 Гц (но количество активных строк всё также будет 31 т.к. нам надо оставаться в пределах той же экранной области):

Attachment:
Screenshot from 2024-02-21 02-12-07.png

По идее можно сдвинуть активные строки на 2 символа влево (на 1 не выходит - строки разъезжаются), тогда их количество можно увеличить до 32:

 test_vinxru32.asm
Code:
; Пример псевдографического режима
; (с) 17-04-2012 vinxru

; Converted to pdp11asm85 by Shaos on 21-Feb-2024

      .i8080

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

      lxi h, 0C001h   ; для Апогея 0EF01h
      mov a,m
wait1:      mov a,m
      ani 20h
      jz wait1

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

      mvi m, 0h

      ; Устаналиваем режим

      lxi h, 0C000h   ; для Апогея 0EF00h
      mvi m, 04Dh   ; 78 символов
      mvi m, 37   ; 38 линий
      mvi m, 7   ; Высота символа 8
      mvi m, 003h

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

      lxi b, data
      lxi h, 76D0h ; для Апогея 0E1D0h
copy:      ldax b
      cpi 0FFh
      jz endCopy
      mov m,a
      inx b
      inx h
      jmp copy
endCopy:

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

      lxi h, 0C001h
      mvi m, 27h

      ; Висим

      jmp $

data:      db 0,0F1h,0,0F1h,0,0F1h
      db 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, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 1
      db 0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 2
      db 0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 3
      db 0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 4
      db 0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 5
      db 0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 6
      db 0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 7
      db 0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 8
      db 0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 9
      db 0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 10
      db 0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 11
      db 0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 12
      db 0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 13
      db 0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 14
      db 0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 15
      db 0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 16
      db 0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 17
      db 0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 18
      db 0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 19
      db 0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 20
      db 0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 21
      db 0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 22
      db 0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 23
      db 0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 24
      db 0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 25
      db 0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 26
      db 0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 27
      db 0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 28
      db 0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 29
      db 0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 30
      db 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,0F3h ; 31
dataEnd:
      db 0FFh

      make_radio86rk_rom "test_vinxru32.rkr"


Attachment:
Screenshot from 2024-02-21 02-32-02.png

Что даёт возможность рисовать псевдографику 128x64

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


You do not have the required permissions to view the files attached to this post.

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


21 Feb 2024 03:47 WWW
Maniac
User avatar

Joined: 14 Oct 2023 06:59
Posts: 268
Shaos wrote:
Что даёт возможность рисовать псевдографику 128x64...


рисовать символами псевдографики или переопределять данные шрифта? А это возможно вообще - переопределить шрифт?

_________________
uselessretro.blogspot.com


21 Feb 2024 04:14
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23398
Location: Silicon Valley
В шрифте РК есть 16 символов псевдографики 2х2 (в скриншоте видно один из них по краям)
Переопределять шрифт можно только в продвинутых клонах типа Северной Пальмиры
А так это обычно один шрифт в ПЗУ 1КБ либо 2 шрифта в ПЗУ 2КБ

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


21 Feb 2024 11:15 WWW
Maniac
User avatar

Joined: 14 Oct 2023 06:59
Posts: 268
Кстати, а какой формат удобнее - .rk или .rkr? Эмуль ест всё.

_________________
uselessretro.blogspot.com


22 Feb 2024 00:04
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23398
Location: Silicon Valley
shiny wrote:
Кстати, а какой формат удобнее - .rk или .rkr? Эмуль ест всё.

.rkr это вроде конкретно РК-86, а .rk - любой РК-совместимый компьютер (т.е. подразумевается работа только через подпрограммы монитора)

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


22 Feb 2024 00:35 WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23398
Location: Silicon Valley
Shaos wrote:
Путём перепрограммирования адреса начала видеопамяти можно делать вертикальный или горизонтальный скролл с шагом в размер знакоместа (высоту которого можно настраивать программно от обычных 10 вниз вплоть до 1, но не ширину, которая в РК-совместимых компьютерах всегда равна 6 пикселам).

Кстати если сделать спец-шрифт высотой в 1 линию с 6 пикселами, то 64-мя символами можно перебрать все комбинации, получив по сути растровую видеопамять - размещемые в ней байты будут кодировать комбинации пикселов по 6 пикселов на байт дав нам настоящие 384 х 248 монохромных пикселов, правда памяти это займёт ну очень много: 24*2 + 74*31*8 + 24*2 = 18448 байт :o

Attachment:
shaos384x248.gif


P.S. Хотя не - не выйдет т.к. для ВГ75 количество текстовых строк не может превышать 64, что ограничивает нас четырьмя пикселами по высоте:

Attachment:
Screenshot from 2024-02-22 00-18-55.png

Вот и в в Апогее был шрифт псевдографики высотой в 4 пиксела, что давало возможность рисовать псевдопикселами 2х2, что по ширине будет 64*3=192, а по высоте наверное порядка 104:

Attachment:
shaos234x104.gif

Памяти при этом надо 12*2 + 52*74 = 3872 байта

P.P.S. Кстати у vinxru была демка 192х104 для Апогея как раз на этот второй шрифт рассчитанная:

Attachment:
Screenshot from 2024-02-22 00-38-17.png


P.P.P.S. Хотя тут некоторые линии чётче чем 192x104 нарисованы т.к. для них использовалась нижняя часть шрифта, где линии в 1 пиксел:

Attachment:
Screenshot from 2024-02-22 00-42-37.png

Исходник в мнемониках Z80 под спойлером:

 test102x104.asm
Code:
; Пример псевдографического режима
; (с) 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


P.P.P.P.S. На стандартном РК-86 можно попробовать интерполировать картинки верхушками букв стандартного шрифта (вроде на зхпк чото такое проскакивало уже):

Attachment:
Screenshot from 2024-02-22 01-15-59.png


P.P.P.P.P.S. А вот режим со смещением на 1 пиксел (эмулятор правда вращает в пределах тех же 4 линий похоже - надо на реале поглядеть):

Attachment:
rk-4pixels-plus1.png


Attachment:
test_vinxru_.zip


You do not have the required permissions to view the files attached to this post.

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


22 Feb 2024 01:09 WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23398
Location: Silicon Valley
Shaos wrote:
Image

Хотя не - не выйдет т.к. для ВГ75 количество текстовых строк не может превышать 64, что ограничивает нас четырьмя пикселами по высоте:
А вот если поставить ДВЕ ВГ75 цепочкой друг за другом :o
Тогда можно уменьшить высоту символа до 2 и показывать экран два раза по 64 строки, тогда можно псевдографику с точностью до пиксела по высоте показывать, однако по ширине всё также придётся парами пикселы кодировать, что даст видимое разрешение 192x208 :lol:

Где-то я про две ВГ75 уже читал...
а блин вот жеж у нас в сентябре 2013 было :mrgreen:
(там правда про 8-битные символы, а не про более чёткую псевдографику)

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


23 Feb 2024 20:37 WWW
Maniac
User avatar

Joined: 14 Oct 2023 06:59
Posts: 268
Видел статьи про доработки для цветов
http://www.radioliga.com/RL_91-95/3.2.htm

Такое делали вообще?

_________________
uselessretro.blogspot.com


23 Feb 2024 23:02
 [ 68 posts ]  Go to page 1, 2, 3, 4, 5  Next

Who is online

Users browsing this forum: Claude AI [Bot] and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.