Csak A-tól U-ig? :-(

Elevenítsük fel amit illik tudni a Spectrum 48 BASIC-jéről, BASIC programozásáról...
Avatar
britt
Speccyalista
Hozzászólások: 13
Csatlakozott: 2013.08.12. 13:27
Tartózkodási hely: Budapest
Kapcsolat:

Csak A-tól U-ig? :-(

Hozzászólás Szerző: britt » 2013.09.04. 08:53

Sziasztok Speccyalisták!
Lehetetlent akarok akkor, ha a BASIC-ben készülő játékprogramomhoz valahogy több szabadon tervezhető karakterre lenne szükségem :roll: mint ami A-tól U-ig adott?
Előre is köszi a segítséget. :idea: :(
Üdv:
britt.hu

Avatar
Pgyuri
Speccyalista
Hozzászólások: 482
Csatlakozott: 2012.01.06. 13:34

Re: Csak A-tól U-ig? :-(

Hozzászólás Szerző: Pgyuri » 2013.09.04. 12:46

Üdv,

Nem lehetetlen, de UDG-ből valóban csak 21 karakter érhető el. Ha többet szeretnél, akkor 2 megoldás létezik:

1; Cserélgeted ... ez lassú

2; A teljes betűkészletet átdefiniálhatod, illetve annak tetszőleges karaktereit és utána a 23606-23607 rendszerváltozó átállításával (és szükség esetén visszaállításával) tudsz szinte korlátlan saját definiált karakterek közt válogatni.

Várom a rázós kérdéseket :)

Pgyuri

Avatar
britt
Speccyalista
Hozzászólások: 13
Csatlakozott: 2013.08.12. 13:27
Tartózkodási hely: Budapest
Kapcsolat:

Re: Csak A-tól U-ig? :-(

Hozzászólás Szerző: britt » 2013.09.04. 15:00

Köszönöm!

Az 1. megoldást próbáltam... és tényleg nagyon lassítja a progi futását. Nem lesz jó. :-(
Az igazán rázós kér(d)és az lenne, hogy a 2. megoldást kifejtsd nekem részletesebben... :shock:
Üdv:
britt.hu

Avatar
Pgyuri
Speccyalista
Hozzászólások: 482
Csatlakozott: 2012.01.06. 13:34

Re: Csak A-tól U-ig? :-(

Hozzászólás Szerző: Pgyuri » 2013.09.04. 15:31

Üdv,

Holnapra itt lesz a minta :) Addig írd tovább a programod, a 2. megoldás nem fog nehézséget okozni !

Pgyuri

Avatar
britt
Speccyalista
Hozzászólások: 13
Csatlakozott: 2013.08.12. 13:27
Tartózkodási hely: Budapest
Kapcsolat:

Re: Csak A-tól U-ig? :-(

Hozzászólás Szerző: britt » 2013.09.04. 16:16

:o Előre is köszönöm!
Üdv:
britt.hu

Avatar
makranc
Speccyalista
Hozzászólások: 242
Csatlakozott: 2012.01.11. 11:00
Tartózkodási hely: Budapest, III.

Re: Csak A-tól U-ig? :-(

Hozzászólás Szerző: makranc » 2013.09.05. 04:21

Pgyuri írta:Ha többet szeretnél, akkor 2 megoldás létezik:

1; Cserélgeted ... ez lassú
UDG-karakterkészletből is lehet többet csinálni és 23675-23676 rendszerváltozóknál beállítani
az éppen használatos karakterkészlet kezdőcímét.
Bár valóban egyszerűbb a normál karakterkészlet használata, ha ott egyszerre rendelkezésre
áll a szükséges karakter-szám, nem kell program futása közben átváltogatni.

Üdv,
makranc

Avatar
Pgyuri
Speccyalista
Hozzászólások: 482
Csatlakozott: 2012.01.06. 13:34

Re: Csak A-tól U-ig? :-(

Hozzászólás Szerző: Pgyuri » 2013.09.05. 16:29

Üdv,

Az UDG cserélgetése jobb megoldás, ha nem egyszerre kell 21-nél több saját definiálású karakter. Mindenesetre lássuk a betűkészlet átdefiniálás lehetőségét:

Az alap Sinclair betűkészlet a ROM-ban található 15616-os címtől. Itt a 32-127 kódok tartományában szerepelnek a karakterek képei egymást követően. Felépítésük ugyanolyan, mint az UDG definiálása, tehát az "A" betű így néz ki:

00000000 = 0
00111100 = 60
01000010 = 66
01000010 = 66
01111110 = 126
01000010 = 66
01000010 = 66
00000000 = 0

Nos, nincs más dolgod, mint a memóriában a programod mögött bárhová elhelyezni egy új betűkészlet definíciót (768 byte lesz összesen) és utána máris át lehet rá kapcsolni.

Mondjuk tegyük 64000-es címtől az összes karakternek megfelelő képet, ez esetben érdemes:

CLEAR 63999

LOAD "FONT" CODE 64000,768

POKE 23607,249 és máris az új karakterek láthatók.

Miért is ?

A 23606 és 23607 rendszerváltozók mutatják a betűkészlet memória kezdőcímét ellenőrizve: PRINT ((PEEK 23607)+1)*256+PEEK 23606

Ha van egy címed (a példában 64000), akkor az alábbi szerint kell a rendszerváltozó(k) értékét átírni:

POKE 23607, INT(64000/256)-1 (az 1 levonása a ROM rutinok működése miatt kell)
POKE 23606, 64000-INT(64000/256)*256

A példám szerint mivel a 23606 alapból 0-n áll, így elég csak a 23607-et átírni (250*256=64000 nem elfelejteni az 1-et levonni).

Tehát ezek után definiálhatsz akár minden betűre, jelre tetszőleges sprite-ocskát, utána a PRINT "A" már nem az "A"-t írja ki, hanem amit oda definiáltál. Természetesen ha rendes szöveget akarsz kiírni az alap Sinclair betűkészlettel, akkor vissza kell váltanod, azaz ki is számíthatod, de POKE 23606,0 és POKE 23607,60 kell (én meghagynám a nagybetűket, a kisbetűket, jeleket pedig átdefiniálnám, akkor nem kell ide-oda váltogatni).

Ezzel a módszerrel csinálhatsz szép, saját megjelenésű betűkészletet is a programodhoz.

Ha folytassam a segítséget ebben a témában, csak jelezd, írok példát :) amúgy meg próbáld ki POKE 23606,8 vagy POKE 23607,0

Pgyuri

Avatar
britt
Speccyalista
Hozzászólások: 13
Csatlakozott: 2013.08.12. 13:27
Tartózkodási hely: Budapest
Kapcsolat:

Re: Csak A-tól U-ig? :-(

Hozzászólás Szerző: britt » 2013.09.06. 07:26

NAGYON szépen köszönöm a segítséget!
Mivel én legutóbb a 80-as években foglalkoztam programozással (akkor is alap szinten), ezért kell egy kis idő amíg megemésztem... :oops:
...de már 93 százalékosan értelmezte az agyam... :idea:
BIZTOSAN lesznek még kérdéseim (...már vannak is)! :mrgreen:
Ha tényleg nem gond, akkor hamarosan jelentkezem újra.

THX!
Üdv:
britt.hu

Avatar
Pgyuri
Speccyalista
Hozzászólások: 482
Csatlakozott: 2012.01.06. 13:34

Re: Csak A-tól U-ig? :-(

Hozzászólás Szerző: Pgyuri » 2013.09.06. 08:44

Üdv,

Igazából pont azért nem pontos, konkrét példát írtam, hogy Neked is kelljen gondolkodni, töprengeni. A BASIC programozásban pont az a jó, amikor az ember megfejti, hogyan kell valamit megoldani. Persze idegesítő dolog azon kínlódni, hogy pl. miként kell egy függvényt használni (lásd a string műveletek a Sinclair BASIC-ben igencsak ravaszak), ott jó a közvetlen segítség.

Ha elakadsz, szívesen bármiben. Mintapélda, ötlet, technika, gyorsítás és még ezernyi más. Csak bátran és sose add fel! Sok sikert!

Pgyuri

Avatar
Bali
Site Admin
Hozzászólások: 1886
Csatlakozott: 2012.01.06. 13:34
Tartózkodási hely: Budapest III.
Kapcsolat:

Re: Csak A-tól U-ig? :-(

Hozzászólás Szerző: Bali » 2013.09.06. 16:10

A font elkészítéséhez használhatod Mopi programját.

viewtopic.php?f=15&t=223
-= Bali =-
(c) 1983-2017 Evil-Soft

Válasz küldése

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég