forum speccy.pl

ZX Spectrum => SOFTWARE => Wątek zaczęty przez: tooloud w 2017.04.14, 13:04:55

Tytuł: polskie znaki w ZX Spectrum
Wiadomość wysłana przez: tooloud w 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).
Tytuł: Odp: polskie znaki w ZX Spectrum
Wiadomość wysłana przez: ZX Freeq w 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? :)
Tytuł: Odp: polskie znaki w ZX Spectrum
Wiadomość wysłana przez: tooloud w 2017.04.14, 13:27:13
to że UGD to wiem - na drukarkę to chyba w trybie graficznym idzie?
Tytuł: Odp: polskie znaki w ZX Spectrum
Wiadomość wysłana przez: ZX Freeq w 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 (http://www.worldofspectrum.org/ZXBasicManual/zxmanchap14.html)

Tytuł: Odp: polskie znaki w ZX Spectrum
Wiadomość wysłana przez: ZbyniuR w 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. :)
Tytuł: Odp: polskie znaki w ZX Spectrum
Wiadomość wysłana przez: ZX Freeq w 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". :)
Tytuł: Odp: polskie znaki w ZX Spectrum
Wiadomość wysłana przez: ZbyniuR w 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. :)
Tytuł: Odp: polskie znaki w ZX Spectrum
Wiadomość wysłana przez: ZX Freeq w 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. :)
Tytuł: Odp: polskie znaki w ZX Spectrum
Wiadomość wysłana przez: Phonex w 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 (http://www.speccy.pl/archive/prod.php?id=215) z wyświetlaniem zwężonym do 1 znaku.
Tytuł: Odp: polskie znaki w ZX Spectrum
Wiadomość wysłana przez: ZX Freeq w 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. :)
Tytuł: Odp: polskie znaki w ZX Spectrum
Wiadomość wysłana przez: anton w 2017.04.15, 00:20:37
W przewodniku po ZX SPECTRUM od strony 103 coś piszą od polskich znakach.
Tytuł: Odp: polskie znaki w ZX Spectrum
Wiadomość wysłana przez: macko76 w 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"
Tytuł: Odp: polskie znaki w ZX Spectrum
Wiadomość wysłana przez: tooloud w 2017.04.15, 21:13:06
dzięki!
Tytuł: Odp: polskie znaki w ZX Spectrum
Wiadomość wysłana przez: ZX Freeq w 2017.04.15, 21:26:04
Słodkie jest to "Polski alfabet ok", bez wyrzucenia na ekran chociaż jednego ogonka ;)
Tytuł: Odp: polskie znaki w ZX Spectrum
Wiadomość wysłana przez: ZbyniuR w 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. ;)
Tytuł: Odp: polskie znaki w ZX Spectrum
Wiadomość wysłana przez: ZbyniuR w 2017.04.16, 08:25:07
Oki już wiem że zmienne tekstowe w DATA trzeba podawać w cudzysłowie. Ale udało mi się ten program skrócić o niemal połowę, choć trwa teraz aż ze dwie sekundy. Nie byłbym sobą gdybym nie wcisnął całości w jednej linijce Basica, bo wykombinowałem sposób aby każdy bajt definiowanej literki zajmował w listingu tylko jeden bajt. Tym razem przetestowane w emulatorze. I działa !!. :D

10 LET p$="A00L2NRN4C24>@@@>0E00LRnPN4L08:<H860N48lRRRR0O24NQQQN0S48NPN1n0J48n48@n0F<0n48@n0K0@DH£@O0D4NPN1QN0G<o248@o0":FOR a=1 TO 108 STEP 9:LET z$=p$(a TO a):FOR b=0 TO 7:LET c=a+b+1:POKE USR z$+b,(CODE p$(c TO c)-48)*2:NEXT b:NEXT a:PRINT "ACELNOSJFKDG"
Wymyślona przeze mnie metoda upychania definicji  znaku w zaledwie 9 bajtach działa pod warunkiem że najstarszy i najmłodszy bit każdego bajta to zero, albo jak kto woli skrajne prawa i lewa kolumna matrycy znaku jest pusta. Jeśli ktoś zna krótszy program na zdefiniowanie podobnej ilości UDG, to chciałbym to zobaczyć. :)
Tytuł: Odp: polskie znaki w ZX Spectrum
Wiadomość wysłana przez: ZbyniuR w 2017.04.16, 17:03:40
Zauważyłem że kilka pikseli jest w niewłaściwym miejscu, i że jedno z działań robi do każdego bajta, a wystarczy raz na znak. U siebie poprawiłem ale skoro zainteresowanie takie znikome to nie chce mi się tu wklejać...

A tymczasem zrobiłem, (na razie na CPC), 7 znaków do robienia fajnych ramek i zawijasów. Żeby wykorzystać te wolne UDG jakie zostały. Po dodaniu tych ramek zostaną już tylko 2. 

4 znaki to rogi mogące też służyć do robienia ukośników, po 1 na pion i poziom, oraz kuleczka do łączenia maks 4ech końcówek. CPC ma ponad 20 znaków do ramek i paskowych mozajek, a nie wyglądają równie fajnie jak te.

10 SYMBOL 240,0:SYMBOL 241,0,0,0,1,2,5,11,22:SYMBOL 242,0,0,0,128,64,160,208,88:SYMBOL 243,22,11,4,3,1:SYMBOL 244,88,176,96,192,128:SYMBOL 245,60,44,44,44,44,44,44,60:SYMBOL 246,0,0,255,129,255,255:SYMBOL 247,44,110,199,1,199,239,110,60:SYMBOL 248,0
20 PRINT CHR$(INT(RND*9+240));:GOTO 20
Tytuł: Odp: polskie znaki w ZX Spectrum
Wiadomość wysłana przez: Phonex w 2017.04.16, 18:09:12
Szacunek za pisanie dla konkurencji ;), nie trzeba na Spectrum pisać (a TO a).
FOR a=1 TO 108 STEP 9:FOR b=0 TO 7:POKE USR p$(a)+b,(CODE p$(a+b+1)-48)*2:NEXT b:NEXT a
Tytuł: Odp: polskie znaki w ZX Spectrum
Wiadomość wysłana przez: ZbyniuR w 2017.04.16, 18:48:24
Od paru godzin wiem i już mam poprawione, ale taki przykład był w Przewodniku. Ciągle bardzo niezręcznie się czuję w nowym edytorze, i szkoda że nie mam tych wszystkich słówek na klawiszach to by trochę ułatwiło. Didaktik ma ładną czcionkę. Próbowałem też w trybie 128K, wreszcie można normalnie pisać, tylko że nie wiem jak się tam przełącza kursor na G,  ale ostatniej nocy czułem się tak jak przed laty gdy dopiero zaczynałem poznawać Amstrada. Nadal nie umiem korzystać ze stacji dysków więc sejwuję jako snapszoty. :D  Pierwsze wrażenie jest takie że ten Basic nie jest aż taki zły. Mimo braku pewnych komend istnieją sensowne mechanizmy na pewne rzeczy. Ale jest wolniejszy i dziwnie jest widzieć te same słowa które robią coś innego. Jestem niewyspany, a obiecywałem sobie że nie będę się w takie rzeczy wciągał. Tylko jak wyłączyć to że Escape wyłącza emulator? A wciskam go z przyzwyczajenia gdy chcę coś zatrzymać.  wrrrr
Tytuł: Odp: polskie znaki w ZX Spectrum
Wiadomość wysłana przez: Phonex w 2017.04.16, 18:58:47
Kursor G włącza się tak samo jak w 48k: Shift 9, wyłącza samym 9.
Mojego emulatora Escape nie wyłącza, więc tu nie pomogę...
Tytuł: Odp: polskie znaki w ZX Spectrum
Wiadomość wysłana przez: macko76 w 2017.04.16, 19:21:32
Te ramki w CPC wyglądają świetnie aż się prosi żeby ich gdzieś uzyć.
Tytuł: Odp: polskie znaki w ZX Spectrum
Wiadomość wysłana przez: pgru w 2017.05.10, 10:36:25
Może będziemy używać jako obowiązującego - tego formatu z Elwro 800 Junior? Tylko chyba on z kompabitylnych z ZX Spectrum miał klawiaturkę z ogonkami(nie licząc rzadkiego 700 Solum). Zapraszam na Wapniaka(na 99%) będzie Elwro i jak ktoś weźmie kartęczkę z programem, lub odpowiedni magnetofon to może spróbować sobie poszukać jak one działają. http://www.speccy.pl/forum/index.php?topic=3337.0 (http://www.speccy.pl/forum/index.php?topic=3337.0)
Tytuł: Odp: polskie znaki w ZX Spectrum
Wiadomość wysłana przez: ZbyniuR w 2017.08.02, 20:36:53
Czas na poprawioną wersję moich PL znaczków do ZX-a. Tym razem mimo podobnej długości wykonuje się szybciej a definiuje 21 zamiast 12 znaczków. :)
Tytuł: Odp: polskie znaki w ZX Spectrum
Wiadomość wysłana przez: ZX Freeq w 2017.08.02, 21:25:11
Dzięki!
Tytuł: Odp: polskie znaki w ZX Spectrum
Wiadomość wysłana przez: ZbyniuR w 2017.08.14, 03:26:28
Poprawiłem rameczki. Teraz na dzień dobry rysuje z nich niekończącą się mozaikę.
Można to przerwać i wpisać RUN 40 wtedy można bazgrać po ekranie także polskimi znaczkami i ramkami ze Symbol Shiftem. Niestety na razie kursor jest jak buldożer i kasuje wszystko na co "wjedzie".
Edytor Spectruma to mordęga. Przydałoby się jakaś komenda/metoda która pozwala zrobić coś takiego, że w reakcji na wciśnięcie kodu z ciągu znaków np "asdfghjkl" ma wyświetlać znak o tej samej pozycji z innego ciągu np. "ąśŚżźŻŹŁł", bo na razie każdy taki znak zrobiłem osobną linijką z IF-em.
Tytuł: Odp: polskie znaki w ZX Spectrum
Wiadomość wysłana przez: ZbyniuR w 2018.02.04, 17:47:48
Zrobiłem sobie ściągę do wszystkich znaczków i komend na klawiszach bo bez tego w emulcu ani rusz. :)

Czy chce ktoś w tekstowym?  Tylko nie wiem jak to będzie na białym tle wyglądało, bo ja mam nietypowo czarne.