[zxspectrum] Re: loader gbmax

  • From: Luca Bisti <lucbisti@xxxxxx>
  • To: zxspectrum@xxxxxxxxxxxxx
  • Date: Sun, 02 Nov 2003 18:24:35 +0100

Buonasera cari Sinclairisti, e ben ritrovati per svelare il mistero del caricatore del Biturbo III =)

Effettivamente in quel pezzettino di BASIC ci sono un po' di trucchetti sporchi e la linea non e' assolutamente in forma standard; nella fattispecie:

1- La lunghezza dichiarata nell'intestazione della linea BASIC (90 bytes) non e' quella effettiva.

2- Dopo il comando RANDOMIZE USR (l'ultimo) manca completamente il marcatore di fine riga (0x0D) e invece inizia immediatamente la routine L/M. Manca anche il marcatore di fine programma (0x80). Dal punto di vista dell'interprete BASIC, il programma sarebbe corrotto e un qualsiasi tentativo di editing (anche il list) manderebbe in crash il sistema operativo.

3- Il "56" che compare nell'espressione del comando di lancio RANDOMIZE USR (PEEK 23635+256*PEEK 23636+56), e' in realta' un 91 offuscato per confondere le acque. Lo testimonia il valore FP memorizzato nella linea (CHR$ 14), che e' l'unico effettivamente considerato dall'interprete BASIC ai fini dell'esecuzione del programma.

Non essendo standard la struttura della linea BASIC, la versione attuale di DamTape non puo' recuperare il programma in maniera corretta; non esistendo una regola piu' generale che consenta a DamTape di discriminare la struttura di una linea BASIC cosi' manomessa (punto 1), l'unica soluzione sarebbe di prevedere il Biturbo III come caso speciale a parte.

E bravo il nostro GBMax! :)

Luca


Other related posts: