[zxspectrum] Re: udg esteso

  • From: Paolo Ferraris <pieffe8@xxxxxxxxxxxxx>
  • To: zxspectrum@xxxxxxxxxxxxx
  • Date: Thu, 16 Feb 2006 17:35:08 -0600

Stefano wrote:

Secondo voi e' possibile modificare l'ascii dello Spectrum? Mi spiego meglio: 
mi e' capitato diverse volte che dando uno sguardo al listato dei giochi 
talvolta i caratteri erano stati modificati (un po' come se il programmatore 
avesse cambiato il fonts). In che modo e' possibile fare cio'? In questo modo 
oltre ai classici udg (che sono un po' pochi) si potrebbero usare anche i 
caratteri standard come estensione.
Stasera sono capitato su un trafiletto apparso in Papersoft n.8 dove viene 
menzionato un POKE 2360,xxx
dove al posto di xxx, variando il valore da 0 a 255 si ottengono risultati davvero strani. Il 
classico stile e' POKE 2360,60. E' possibile invece "disegnare" in qualche modo tutti i 
caratteri (magari col classico POKE USR "lettera", BIN ecc. ecc.?

Il funzionamento del caratteri ASCII (32-127) e` simile a quelli degli UDG: come in cima alla RAM ci sono delle bitmap modificabili per i caratteri UDG da "A" a "U", in una zona della ROM sono definite le bitmap dei caratteri ascii dall spazio (ASCII 32) al copyright (ASCII 127). Il problema e` che, essendo queste bitmap in ROM, non sono modificabili.
Quello che si puo` fare, quindi, e` crearsi un nuovo set di caratteri in RAM e farlo puntare dalla variabile di sistema CHARS, che normalmente punta al set di caratteri in ROM:


2       5C36h (23606)   CHARS   256 less than address of character set
                                (which starts with space and carries
                                on to (C)). Normally in ROM, but you
                                can set up your down in RAM and make
                                CHARS point to it.

(Dal manuale dello Spectrum; il 2 iniziale significa due bytes.)

Se quindi crei un nuovo character set dall'indirizzo 40000 al 40767 (il character set e` di 96 bitmaps, e quindi 768 bytes), devi settare CHARS
a 40000-256=39744.


(il -256 permette la ricerca della bitmap con la seguente operazione:
CHARS+char*8).

Se inserisci invece valori a caso in CHARS allora tutte le scritte diventano strane.


Sapendo di non essere stato molto chiaro, vi saluto.

-p


Other related posts: