Enterprise Forever

:HUN => VIDEO: => Topic started by: szipucsu on 2017.December.03. 21:41:10

Title: Karakterek
Post by: szipucsu on 2017.December.03. 21:41:10
Kicsit furán van megoldva eredetileg, hogy a nagybetűk (és talán a számok, más írásjelek is) a karakterrács legfelső sorában kezdődnek, alul pedig két sor kimarad. Néha (pl. bizonyos videólapoknál) jobban mutatna, ha középen lennének a betűk, például itt:
[attachimg=1]
Talán ezért is van külön HSoft karakterkészlet.
Azt hogyan lehetne spoke utasításokkal megoldani, hogy azt a "néhány" karaktert, ami fel van csúszva, de lehetne középen is, lejjebb rakja? (Talán a kisbetűket is lejjebb kéne rakni velük együtt, de nem biztos, mert talán úgy sem néznének ki rosszul.) Persze legegyszerűbb betölteni egy másik karakterkészletet. De annak pl. basic programoknál külön fájlban kell lennie.
Title: Re: Karakterek
Post by: IstvanV on 2017.December.03. 23:19:16
Kicsit furán van megoldva eredetileg, hogy a nagybetűk (és talán a számok, más írásjelek is) a karakterrács legfelső sorában kezdődnek, alul pedig két sor kimarad.

Az alsó sorokban az üres helyre a kisbetűk miatt van szükség, például a 'g', 'y', és hasonló karaktereknél.
Title: Re: Karakterek
Post by: szipucsu on 2018.August.26. 20:14:49
Valahol az ep128.hu-n láttam egyszer különböző karakterkészleteket, de most nem találom. Van valahol betölthető rendes, magyar ékezetes karakterkészlet?
Title: Re: Karakterek
Post by: Lacika on 2018.August.26. 22:36:41
Valahol az ep128.hu-n láttam egyszer különböző karakterkészleteket, de most nem találom.

A karaktertervező programodnál vannak a BASIC programcsokorban. :ds_icon_cheesygrin:
Title: Re: Karakterek
Post by: endi on 2018.October.07. 20:38:16
érdekesség: https://index.hu/mindekozben/poszt/2018/10/07/dobjon_el_mindent_itt_a_betutipus_amitol_jobban_emlekszunk_a_szovegre/
Title: Re: Karakterek
Post by: szipucsu on 2018.December.23. 22:14:55
Endi, egyszer tettél fel saját tervezésű grafikus karakterkészletet (számok és nagybetűk). (Ahol 4 oszlopban kellett megoldani a karaktereket.) A Cybernoid 2 CPC-s verziójában szerintem ilyen karakterek vannak (snapshot mellékelve).
[attach=1]

UI: Most nézem, az Operation Alexandra is ilyen.
Title: Re: Karakterek
Post by: szipucsu on 2022.February.25. 00:16:32
EP 64-en máshol kezdődik a karakterkészlet a memóriában, mint EP 128-on. Elvileg ezzel a programmal lehet belőni a karaktermátrix elejét:

 9900 LET LPB_ADD=SPEEK(255,16372)+((SPEEK(255,16373)-128)*256)
 9910 LET CHAR_TAB=16384-(256-SPEEK(255,LPB_ADD+6))*128

A CHAR_TAB fogja jelezni a karakterkészlet első karakterének a felső sorát.

Ha ki akarjuk menteni a karakterkészletet, akkor azt így lehet:

 9920 OPEN #106:"FILE.CHR" ACCESS OUTPUT
 9930 FOR X=CHAR_TAB TO CHAR_TAB+128*9
 9940   PRINT #106:CHR$(SPEEK(255,X));
 9950 NEXT
 9960 CLOSE #106

A 9930-as sor vége felé azért van 128, mert összesen 128 karakter van, és azért kell megszorozni 9-cel, mert minden karakter 9 pixelsorból áll.

Az lenne a cél, hogy a nagybetűk képét átmásoljuk az ALT-tal elérhető karakterekére. Az első nagybetűnek, az A-nak a kódja 65 a basicben, de mivel a legelső karakteré nem 1, hanem 32, így lehet, hogy a 65-ből ki kell vonni a 32-t. Az ALT+a kódja 129, de lehet, hogy ebből is ki kell vonni 32-t.
A karakterek képének átmásolásához a 129-es kódú karakter első sorától kezdődően be kell spoke-olni azokat az értékeket, amiket a 65-ös kódú karaktertől kezdve speek-kel olvashatunk ki.
Ha minden igaz, egy adott karakter pixelsorai nem egy kupacban vannak, hanem a felső pixelsora az összes karakternek van egy kupacban, utána jön a második sor, stb. Így még meg kell fejteni, mennyi az az érték, amit hozzá kell adnunk egy sor kiolvasása után a címhez. (Ha pl. CHAR_TAB lesz az első karakter első sora, akkor CHAR_TAB+mennyi lesz a második sora?)

Egyelőre eddig jutottam elméletben. Eddig van benne hiba?  Ezek alapján majd megpróbálom megcsinálni a dot collectoros karakterátmásolós programot.
Title: Re: Karakterek
Post by: geco on 2022.February.25. 08:11:01
Jónak tűnik, a CHAR_TAB 2. sora az a CHAR_TAB 1. sora + 128 byte.
Title: Re: Karakterek
Post by: szipucsu on 2022.February.25. 10:44:07
a CHAR_TAB 2. sora az a CHAR_TAB 1. sora + 128 byte.
Hát persze, mennyi is lehetne, valahogy belebotlottam párszor már a 128-as számba EP-n...

Kicsit cseles, mert az első karakter a mátrixban (nem a filmben) nem a szóköz, pedig a kódtáblázatban ez az első. A bekarikázott C betű az első, innen a basic kódtáblázat szerint halad sorban, majd mikor a végére ér, akkor jön a szóköz, és onnan megy tovább szépen.

Az előzőek alapján egy adott karakter átdefiniálása direkte a memóriában:

SPOKE 255,CHAR_TAB+x+(128*y),z

x értéke attól függ, melyik karaktert akarjuk piszkálni (0 a bekarikázott C betű, 32 a szóköz, 65 a nagy A betű, 1 az alt+a;
y értéke attól függ, az adott karakter melyik sora a soros (0 az első sor, 8 a legalsó);
z értéke attól függ, mit akarok az adott karakter adott sorába tenni (0 semmi nincs, 255 minden van).

De SPEEK-kel le is kérdezhető adott karakter adott sora. Innen már magától értetődő a megoldás, a valamivel nagyobb mátrixkódú karakterek pixelsorait oda kell spoke-olni a valamivel kisebb mátrixkódú karakterek soraira:

  160 FOR X=1 TO 26
  170   FOR Y=0 TO 8
  180     SPOKE 255,CHAR_TAB+X+(128*Y),SPEEK(255,CHAR_TAB+64+X+(128*Y))
  190   NEXT Y
  200 NEXT X

Az X azért megy 1-től 26-ig, mert 26 betű van az angol ábécében. Az altos és shiftes nagybetűk sorban jönnek egymás után, csak 64 bájttal odébb vannak.

Jó ez a spoke. Még jobb is, mint a set character, mert ha egy karakternek csak egyetlen sorát akarnánk megváltoztatni, a set characterrel nem lehetne.