2) come salvo il mio listato? e il programma assemblato? cioè io lo digito nel monitor, poi esco digitando X, e lancio il mio programma, ma se prima di lanciarlo voglio salvarlo su floppy, per poi caricarlo con il classico load "xyz",8,1 come faccio?
Per questa sono sicuro: hai due modi, principalmente.
Il primo, e più comodo: lo salvi da monitor con (esempio)
S "nome" 08 C000 C031
che salva su floppy (08) la memoria da C000 a C030. Per la cassetta usa 01 invece di 08. [edit: devi aumentare di 1 la locazione, come ha corretto eregil]
Il secondo metodo è salvare da BASIC: ponendo sempre il caso dell'area tra C000 e C030 (decimale 49152-49200) devi settare i puntatori di inizio e fine BASIC (43-44 e 45-46) in questo modo:
A=INT(49152/256):B=(49152-(256*A)):C=INT(49200/256):D=(49152-(256*C))
(READY.)
POKE 43,B:POKE44,A:POKE45,D+1:POKE46,C
[edit: a D va aggiunto 1 per lo stesso motivo di prima, vedi msg sotto di eregil]
(READY.)
[edit: se dovesse spararti un illegal quantity error scrivigli D=0:C=C+1 e ripetigli l'istruzione di sopra]
SAVE "nome",8
oppure
SAVE "nome"
per la cassetta.
Il caricamento dovrà avvenire, naturalmente, con
LOAD "nome",8,1
oppure
LOAD "nome",1,1
rispettivamente per floppy e cassetta.
Come hai già detto ma che è bene ribadire, omettendo il ",1" ci troveremmo un caricamento a partire da 2049 (hex $0801), che nel caso in cui il programma L/M abbia dei "salti" risulterebbe ben poco funzionante. Col ",1" finale diciamo al sistema operativo di caricare il programma dalla locazione in cui l'abbiamo salvato.
Tecnicamente i puntatori sono:
43 --> byte basso dell'inizio dell'area usata dal BASIC.
44 --> byte alto dell'inizio dell'area usata dal BASIC.
ossia la locazione data da (PEEK(44)*256)+PEEK(43)
45 --> byte basso della fine del BASIC e solitamente inizio delle variabili
46 --> byte alto della fine del BASIC e solitamente inizio delle variabili
ossia la locazione data da (PEEK(46)*256)+PEEK(45)
C'è in realtà un metodo migliore che sarebbe quello di iniziare il programma in L/M in una zona vicina all'inizio del BASIC (tipo da 2061 o giù di lì), fare un programma BASIC che abbia una SYS come avviene per il 99% dei giochi.
L'alternativa al rilocare la routine c'è ed è usare un caricamento in due parti. Oppure salvare tutta l'area di memoria da 2049 fino alla fine della routine (ma sarebbe un enorme spreco di spazio).
Ricorda di pokare tre zeri dopo la fine del BASIC "vero" (ossia il programma dopo-run con le eventuali variabili usate) prima di cominciare la routine in L/M.
Esiste in verità un ultimo metodo che consiste nell'usare una cartuccia, ma non differisce molto come concetto dal salvataggio del monitor, inoltre è molto più "sporco" come metodo