Un’altra utility interessante è il lettore della memoria del computer con il quale si può leggere il contenuto di una parte qualsiasi della ROM o della RAM a partire dall’indirizzo impostato.
[righe 3-6] Il range di memoria consultabile va da 0 a 65536 (massimo numero rappresentabile con 16 bit). La CPU Z80 può indirizzare appunto fino a massimo 64Kb (considerando RAM e ROM)) Il Sinclair ZX81 veniva venduto con 1Kb di RAM ed 8Kb di ROM (il Timex 1000, versione dello zx81 distribuita negli USA, montava di default 2Kb di RAM). Vi è un estensione ufficiale per portare la RAM a 16kb, ed altre prodotte da aziende terze o da hobbisti per 32kb, ed oltre.
10 REM LETTORE MEMORIA
100 SLOW
110 PRINT "INSERIRE INDIRIZZO DI PARTENZA"
120 PRINT "( 0--65535 ) E PREMERE INVIO"
130 INPUT INDIRIZZO
140 IF INDIRIZZO<0 OR INDIRIZZO>65535 THEN GOTO 130
150 CLS
160 PRINT " INDIRIZZO CONTENUTO CARATTERE"
170 PRINT "-------------------------------"
180 FOR L=2 TO 21
190 PRINT AT L,3;INDIRIZZO+L-2;TAB 15; PEEK (INDIRIZZO+L-2)
200 IF PEEK (INDIRIZZO+L-2) <>118
THEN PRINT AT L,24; CHR$ PEEK (INDIRIZZO+L-2)
210 NEXT L
220 COPY
230 INPUT X$
240 CLS
250 GOTO 110
Un esempio di lettura della RAM ed in particolare proprio di una zona nella quale è scritto il programma.
INSERIRE INDIRIZZO DI PARTENZA
( 0--65535 ) E PREMERE NEWLINE
16513
Vengono visualizzato i primi 21 byte, che corrisponde alla dimensione di una pagina video. Bisognerebbe avere la mappatura della memoria dello zx81 sotto mano per fare delle prove divertenti e utili : – ). Chiaramente se si punta ad una locazione inesistente (oltre il nostro kbyte di RAM e fuori dallo spazio ROM), l’interprete Basic ci restituirà un errore del tipo out-of-memory.
Ad ogni indirizzo (di 8 bit) può essere memorizzata una cifra numerica (tra 0 e 255). La codifica utilizzata sui Sinclair non è ne ASCII ne tantomeno ABCDIC, ma una propria, in cui ad esempio lo “spazio” viene codificato con 0 (in ASCII è 32).
INDIRIZZO CONTENUTO CARATTERE
--------------------------------
16513 234 REM
16514 0
16515 49 L
16516 42 E
16517 57 T
16518 57 T
16519 52 O
16520 55 R
16521 42 E
16522 0
16523 50 M
16524 42 E
16525 50 M
16526 52 O
16527 55 R
16528 46 I
16529 38 A
16530 118
16531 0
16532 100 ?
Ho preso spunto dal libro “66 programmi per ZX81 e ZX80 con nuova ROM+Hardware” di Gaetano Marano – edito da Gruppo Editoriale Jackson (1982) https://www.microatena.it/download_libri/66%20programmi%20per%20ZX81%20e%20ZX80%20con%20nuova%20ROM%20+%20hardware%20(Gaetano%20Marano%20-%20Gruppo%20Editoriale%20Jackson).zip
Per dubbi sul listato, esistono tantissime pubblicazioni in rete sul Sinclair Basic per ZX81, come ad esempio questa https://archive.org/details/zx-81-basic-book-1982-reprintedacme