Autor Wątek: polskie znaki w ZX Spectrum  (Przeczytany 13877 razy)

tooloud

  • *****
  • Wiadomości: 3188
  • Miejsce pobytu:
    Warszawa
  • mydłem go!
polskie znaki w ZX Spectrum
« dnia: 2017.04.14, 13:04:55 »
Wiem, że temat archaiczny, ale po przeszukaniu (być może zbyt pobieżnym) netu nie wyskoczyło mi nic sensownego.

Jest jakieś jedno usystematyzowanie tematu?

Chcę wyświetlać polskie znaki i je drukować (ZX Printer, Timex 2040).
dużo sprzętu mało czasu.

ZX Freeq

  • *****
  • Wiadomości: 1835
  • Miejsce pobytu:
    Warszawa
Odp: polskie znaki w ZX Spectrum
« Odpowiedź #1 dnia: 2017.04.14, 13:23:27 »
Trzeba sobie własne znaki UDG zdefiniować. Nigdy nie bawiłem się drukowaniem, nie wiem czy LPRINT korzysta z UDG. Zapewne tak.

W Bajtku było o tym, tylko którym? :)
ZX80|ZX81+16kB+PandAY|ZX 48k/+/128k+/+2/+2A/+3/Vega/Next|QL+QIDE|JS128|Timex 2048+2040|UK2086|FDD3000+3.5''|AY|ZX HD|Divide2k11/2k14|DivMMC/PicoDivSD|BetaDisk 128|Opus|Masakrator FM|If 1/2/Microdrv|Multiface 1|+2A\B SDI-1|SJS 1/2|ZX Printer|TZXDuino|+3 HxC USB|ZXUno|Omni
Z88|A500/600|PC200|Ent128

tooloud

  • *****
  • Wiadomości: 3188
  • Miejsce pobytu:
    Warszawa
  • mydłem go!
Odp: polskie znaki w ZX Spectrum
« Odpowiedź #2 dnia: 2017.04.14, 13:27:13 »
to że UGD to wiem - na drukarkę to chyba w trybie graficznym idzie?
dużo sprzętu mało czasu.

ZX Freeq

  • *****
  • Wiadomości: 1835
  • Miejsce pobytu:
    Warszawa
Odp: polskie znaki w ZX Spectrum
« Odpowiedź #3 dnia: 2017.04.14, 13:36:25 »
Z tego co pamiętam, to w BASICu jest zmienna, dwu bajtowa, która wskazuje adres pamięci, zawierający zestaw wyświetlanych znaków. Ten zestaw jest stały, czyli jeśli chcemy polskie ogonki:
- albo rezygnujemy z jakichś znaków spaecjalnych i definiujemy polskie znaki
- albo używamy tylko dużych liter a w adresy przypadające małym definiujemy duże litery z ogonkami (lub odwrotnie)

Standardowo, po uruchomieniu, zmienna wskazuje na adres to 60*256+0 czyli 15360, tam są "bitmapy" ze znakami.

O definiowaniu UDG:
http://www.worldofspectrum.org/ZXBasicManual/zxmanchap14.html

ZX80|ZX81+16kB+PandAY|ZX 48k/+/128k+/+2/+2A/+3/Vega/Next|QL+QIDE|JS128|Timex 2048+2040|UK2086|FDD3000+3.5''|AY|ZX HD|Divide2k11/2k14|DivMMC/PicoDivSD|BetaDisk 128|Opus|Masakrator FM|If 1/2/Microdrv|Multiface 1|+2A\B SDI-1|SJS 1/2|ZX Printer|TZXDuino|+3 HxC USB|ZXUno|Omni
Z88|A500/600|PC200|Ent128

ZbyniuR

  • *****
  • Wiadomości: 3333
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: polskie znaki w ZX Spectrum
« Odpowiedź #4 dnia: 2017.04.14, 13:39:05 »
Jak zrobić polskie znaki było w Bajtku specjalnym dla początkujących z 88 roku na str 21.

Pewnie jakoś można drukować w trybie graficznym, a jakby co to pewnie można cofać karetkę kodem 8 i dodawać ogonki przecinkami czy apostrofami. :)
- Jeśli masz w domu światło i wodę, tzn. że masz światłowód. ;)

ZX Freeq

  • *****
  • Wiadomości: 1835
  • Miejsce pobytu:
    Warszawa
Odp: polskie znaki w ZX Spectrum
« Odpowiedź #5 dnia: 2017.04.14, 13:41:38 »
Musiałem odpalić emulator, żeby sobie przypomnieć POKEi:
23606 i 23607 - tu wskazuje się adres bitmap do wyświetlania. Pamiętamy, iż najpierw zapisany jest "młodszy" bajt, potem "starszy". :)
ZX80|ZX81+16kB+PandAY|ZX 48k/+/128k+/+2/+2A/+3/Vega/Next|QL+QIDE|JS128|Timex 2048+2040|UK2086|FDD3000+3.5''|AY|ZX HD|Divide2k11/2k14|DivMMC/PicoDivSD|BetaDisk 128|Opus|Masakrator FM|If 1/2/Microdrv|Multiface 1|+2A\B SDI-1|SJS 1/2|ZX Printer|TZXDuino|+3 HxC USB|ZXUno|Omni
Z88|A500/600|PC200|Ent128

ZbyniuR

  • *****
  • Wiadomości: 3333
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: polskie znaki w ZX Spectrum
« Odpowiedź #6 dnia: 2017.04.14, 14:00:38 »
Aaa czyli trzeba sobie te bitmapy gdzieś skopiować (bo te 15360 to chyba jest w ROMie tak?) i wtedy wstawić pod ten 23606, adres aktualnej czcionki. Jakie to proste, choć UDG jest jeszcze prostsze. :)
- Jeśli masz w domu światło i wodę, tzn. że masz światłowód. ;)

ZX Freeq

  • *****
  • Wiadomości: 1835
  • Miejsce pobytu:
    Warszawa
Odp: polskie znaki w ZX Spectrum
« Odpowiedź #7 dnia: 2017.04.14, 14:31:21 »
Aaa czyli trzeba sobie te bitmapy gdzieś skopiować (bo te 15360 to chyba jest w ROMie tak?) i wtedy wstawić pod ten 23606, adres aktualnej czcionki. Jakie to proste, choć UDG jest jeszcze prostsze. :)

Tak.

Pamiętam, że chyba w Bajtku, albo ZX Shareware (a może w Komputerze) był prosty programik w BASICu, który operując tymi dwoma adresami pozwalał na poszukiwanie "fontów" w grach. Zmieniany był adres w komórkach 23606 oraz 23607 i wykonywany PRINT po kolei wszystkich liter. Jak się w końcu zamiast szumu na ekranie ukazał tekst, było wiadomo pod jakim adresem przechowywany jest tenże font. :)
ZX80|ZX81+16kB+PandAY|ZX 48k/+/128k+/+2/+2A/+3/Vega/Next|QL+QIDE|JS128|Timex 2048+2040|UK2086|FDD3000+3.5''|AY|ZX HD|Divide2k11/2k14|DivMMC/PicoDivSD|BetaDisk 128|Opus|Masakrator FM|If 1/2/Microdrv|Multiface 1|+2A\B SDI-1|SJS 1/2|ZX Printer|TZXDuino|+3 HxC USB|ZXUno|Omni
Z88|A500/600|PC200|Ent128

Phonex

  • *****
  • Wiadomości: 1261
  • Miejsce pobytu:
    Warszawa
Odp: polskie znaki w ZX Spectrum
« Odpowiedź #8 dnia: 2017.04.14, 15:05:46 »
PRINTem w Basicu??? To chyba można było osiwieć, zanim coś się znalazło. Lepszy jest Finder http://www.speccy.pl/archive/prod.php?id=215 z wyświetlaniem zwężonym do 1 znaku.

ZX Freeq

  • *****
  • Wiadomości: 1835
  • Miejsce pobytu:
    Warszawa
Odp: polskie znaki w ZX Spectrum
« Odpowiedź #9 dnia: 2017.04.14, 15:33:04 »
Racja, to mogło być w BASICu i mieć wstawki w ASMie. Albo całkowicie w ASM i po zakończeniu wracało do BASICa. Działało raczej płynnie, chociaż kiedyś to pojęcie mogło mieć inny wydźwięk. :)
ZX80|ZX81+16kB+PandAY|ZX 48k/+/128k+/+2/+2A/+3/Vega/Next|QL+QIDE|JS128|Timex 2048+2040|UK2086|FDD3000+3.5''|AY|ZX HD|Divide2k11/2k14|DivMMC/PicoDivSD|BetaDisk 128|Opus|Masakrator FM|If 1/2/Microdrv|Multiface 1|+2A\B SDI-1|SJS 1/2|ZX Printer|TZXDuino|+3 HxC USB|ZXUno|Omni
Z88|A500/600|PC200|Ent128

anton

  • ****
  • Wiadomości: 351
  • Miejsce pobytu:
    Nowa Sól
Odp: polskie znaki w ZX Spectrum
« Odpowiedź #10 dnia: 2017.04.15, 00:20:37 »
W przewodniku po ZX SPECTRUM od strony 103 coś piszą od polskich znakach.
lista moich komputerów nie mieści się tutaj.

macko76

  • **
  • Wiadomości: 81
  • Miejsce pobytu:
    Radzymin
Odp: polskie znaki w ZX Spectrum
« Odpowiedź #11 dnia: 2017.04.15, 20:29:27 »
Rzeczywiście program dodający polskie litery znajdował się w dodatkowym numerze Bajtka. Oprócz wersji dla Spectrum był także dla Atari, Amstrada i Commodore.
10 FOR k=1 TO 14: READ adr: READ bajt: POKE 65000+adr,bajt: NEXT k
20 DATA 375,8,384,8,407,8
30 DATA 459,112,472,8,480,8
40 DATA 512,8,496,8,497,126
50 DATA 498,4,499,8,500,16
60 DATA 501,32,502,126
70 CLS: PRINT "Polski alfabet ok"
« Ostatnia zmiana: 2017.04.15, 20:47:39 wysłana przez macko76 »

tooloud

  • *****
  • Wiadomości: 3188
  • Miejsce pobytu:
    Warszawa
  • mydłem go!
Odp: polskie znaki w ZX Spectrum
« Odpowiedź #12 dnia: 2017.04.15, 21:13:06 »
dzięki!
dużo sprzętu mało czasu.

ZX Freeq

  • *****
  • Wiadomości: 1835
  • Miejsce pobytu:
    Warszawa
Odp: polskie znaki w ZX Spectrum
« Odpowiedź #13 dnia: 2017.04.15, 21:26:04 »
Słodkie jest to "Polski alfabet ok", bez wyrzucenia na ekran chociaż jednego ogonka ;)
ZX80|ZX81+16kB+PandAY|ZX 48k/+/128k+/+2/+2A/+3/Vega/Next|QL+QIDE|JS128|Timex 2048+2040|UK2086|FDD3000+3.5''|AY|ZX HD|Divide2k11/2k14|DivMMC/PicoDivSD|BetaDisk 128|Opus|Masakrator FM|If 1/2/Microdrv|Multiface 1|+2A\B SDI-1|SJS 1/2|ZX Printer|TZXDuino|+3 HxC USB|ZXUno|Omni
Z88|A500/600|PC200|Ent128

ZbyniuR

  • *****
  • Wiadomości: 3333
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: polskie znaki w ZX Spectrum
« Odpowiedź #14 dnia: 2017.04.15, 23:22:35 »
Wiem że znaczki UDG domyślnie wyglądają jak litery od A do U, (w trybie 128K o 2 mniej), ale czy są małymi literami czy dużymi to nie wiem, bo jedne źródła piszą tak inne inaczej. Choć sądząc po tym ostatnim bajcie 126 to dość duży ogonek i pasuje raczej tylko do poprzecznej kreski w dużym Ż. Wprawdzie są gry w których wszystkie teksty są pisane dużymi literami, ale ja tam bym wolał mieć małe znaczki plus ze 3 najpotrzebniejsze ŁŚŻ duże. Zostałoby jeszcze 9 UDG do dyspozycji na ramki serduszka czy co tam kto lubi.

Szkoda że wśród klawiszy ze znakami UDG nie ma VWXYZ, a zwłaszcza ZX, na których zwyczajowo są znaki żź, więc trzeba im znaleźć inne miejsce. np tak:

ĄWęĘ„Y€♥óÓ
ąśŚżŻŹźŁł
ZXćVĆńŃ

Posiłkując się Przewodnikiem po ZX... piszę na sucho mój pierwszy program na Spectruma. Nie był testowany i nie mam pewności czy nie zrobiłem jakiegoś błędu składni. Nie wiem jakie długie mogą być linijki w ZX Basic.
Polskie znaki do ZX by ZbyniuR wersja light 12 znaków. :)

5 REM - PL wg Zbynia
10 FOR z=1 TO 12:READ l$:FOR i=0 TO 7:READ n:POKE USR l$+i,n:NEXT i:NEXT z:PRINT "ACELNOSJFKDG":DATA K,0,32,40,48,96,32,62,0,D,8,60,64,60,2,66,60,0,G,24,126,4,8,16,32,126,0
20 DATA A,0,0,56,4,60,68,60,8,C,4,8,28,32,32,32,28,0,E,0,0,56,68,124,64,60,8,L,0,16,20,24,48,16,12,0,N,8,16,120,68,68,68,68,0
30 DATA o,4,8,60,66,66,66,60,0,S,8,16,60,64,60,2,124,0,J,8,16,124,8,16,32,124,0,F,24,0,124,8,16,32,124,0
35 REM - Bonus -
40 FOR z=1 TO 6:READ l$:FOR i=0 TO 7:READ n:POKE USR l$+i,n:NEXT i:NEXT z:PRINT "QRTUIP":DATA Q,0,0,63,32,63,0,63,0,R,32,0,175,40,168,168,168,0,T,0,0,239,40,40,40,47,0,U,8,8,235,8,11,10,235,0,I,2,0,250,10,250,10,250,0,P,0,0,254,128,128,128,128,0

Litery w PRINTach  powinny być wklepane w trybie graficznym. Bądźcie łagodni. ;)
- Jeśli masz w domu światło i wodę, tzn. że masz światłowód. ;)