Sei sulla pagina 1di 4

l'area di cui effettuare il salvataggio.

45-46: fine del programma o dell'a-


rea di memoria.

PRINT PEEK(43)+PEEK(44).256, PE-


EK(45) + PEEK(46) ·256

visualizzerà il loro contenuto.


Normalmente gestiti dal S.O., pos-
sono però essere alterati, tramite delle
POKE, in modo da poter registrare
una qualsiasi area di memoria.
Supponendo che le variabili INI-
ZIO e FINE contengano rispettiva-
mente le locazioni iniziale e finale del-
la nuova area, la sequenza di operazio-
ni da eseguire sarà:

POKE43, INIZIO- (INT(INIZIO/256))· 256


a cura di Tommaso Pantuso POKE44, INT(INIZIO/256))·256
POKE45, FINE - (INT(FINE/256))' 256
POKE46, INT(FINE/256)
SAVE «nome file», dv

VERIFY: una richiesta di verifica non


modifica alcuna cosa né su disco né in
memoria ma controlla che il file speci-
ficato sia identico a quello che è pre-
sente in quel momento in memoria.
Riprendiamo il discorso, iniziato nel nu- LOAD «nome file», dv, cmd
VERIFY «nome file», dv
mero di luglio-agosto, sul funzionamen-
to e i segreti del drive 1541. Contraria- «dv» è il numero di periferica da cui
si effettua il caricamento (8 o 9 per il Particolarità
mente a quanto avevamo previsto, l'ar-
gomento non sarà esaurito in questa drive, l per il datasette). Quando effettuiamo un SAVE, il
puntata, ma sarà riaffrontato nella Come abbiamo visto, quando viene nome del file può essere costruito in
prossima. effettuato il «salvataggio» di un pro- maniera tale da creare effetti incon-
gramma, in testa ad esso viene regi- sueti nella successiva visualizzazione
strato il suo indirizzo iniziale. «cmd», della directory:
normalmente valorizzato ad l, se pre-
sente, segnala al computer di ·caricarlo CHR$(160) + «nome file»
in memoria a cominciare appunto da
quest'indirizzo. In caso contrario, cioè entrambi i doppi apici precederanno il
Il 1541: i comandi se il cmd non fosse presente, il carica- nome del file. E un modo di protegge-
di Luigi Tavolato mento verrà effettuato a cominciare re il programma da scratch erronei.
dall'indirizzo di default $0800 (2049).
CHR$(20) + «nome file»
Prima di passare alla parte critica Esistono dei caratteri speciali atti a
per la gestione del 1541 è opportuno sostituire parzialmente o totalmente il non verrà visualizzato il primo doppio
vedere o rivedere i vari comandi Basic nome del file da caricare: «*» e apice.
che abbiamo a disposizione, anche se «1».L'asterisco (<< *») sostituisce la
molti posseggono già una buona dime- parte finale di un nome o il nome stes- «nome file» + CHR$(160) + CHR$(147)
stichezza nel loro uso. Possono essere so. LOAD "0:*", 8 caricherà il primo
suddivisi nelle seguenti categorie in programma presente nella directory verrà effettuato un HOME prima della
funzione delle loro caratteristiche: del disco azzerando contemporanea- visualizzazione del successivo nome
mente lo «status» del drive. della directory.
- Coman.di per la gestione di file Il punto interrogativo invece sotitui-
'«nome file» + CHR$(O)
programmi sce le lettere intermedie di un nome.
- Comandi per la manipolazione di Dovranno essere digitati tanti «1»
il S.O. cercherà di indentificare i dati
file dati quante sono le lettere da sostituire e
di un nuovo file dai caratteri che se-
Comandi Disco nelle posizioni ad esse corrispondenti.
guono visualizzando le cose più im-
Comandi Block Questi due caratteri hanno un po' la
prevedibili. Effetti altrettanto strani si
Comandi User funzione di «Jolly» nella gestione file
avranno inserendo un CHR$(O) in
Comandi Memory anche non di tipo programma; venga- mezzo al nome del file.
no indicati come il nome di «wildcard
Comandi per file programmi fiags». «nome file» + CHR$(O) + CHR$(O) +
CHR$(O)
Su di essi non c'è moltissimo di SA VE: registra sull'unità periferica
nuovo da dire, essendo sicuramente, specificata il contenuto dell'area di la visualizzazione della Directory ver-
fra tutti i comandi Basic (e non solo), i memoria delimitata dai due puntatori rà interrotta dopo il nome di questo fi-
più noti. di inizio e fine programma. Questi le. I file che seguono resteranno co-
puntatori, espressi nella consueta for- munque accessibili.
LO AD : carica di memoria in file pro- ma di byte basso/byte alto, sono:
gramma specificato. 43-44: inizio del programma e del- «nome file» + CHR$(160) + CHR$(13)

150 MCmicrocomputer n. 56 - ottòbre 1986


Vie da zero + 64

visualizzerà il tipo file a capo .

••nome file» + CHR$(160) + CHR$(COL)


Alcune routine di esempio
sostituendo alla variabile COL il codi-
111 REf'1~~~ /'IUOVELA TESTI NA I! I TF;ACCI A Hl TRACCI A U~
ce ASCII di un colore, i nomi dei file 20
che seguono verranno visualizzati con 300PENI,S,15,"I0"
4@ FORTR=IT035
quel colore. Aggiungendo un diverso 5':' PRHlntl .. "/H,l"CHR:H6)CHRf«(l)CHRH l )CHRHTR) 'REf'1H~ !l'IPOSTA TRACCIA E SETTORE
codice a ciascun nome file, potremo 6@ PRlHT~I .. "M-W"CHR$(Ij)CH~:H0)CHRH I )CHRH 176) : RH1~ C~lD LETTURA - "lUOVE R/~J HEAI!
70 FORI=IT0600:NEXT .
così creare delle directory multicolori. 80 tlEXTTR
90 CLOSEI
Se le lettere del nome del file hanno
un valore ASCII maggiore di 128 ver-
rà visualizzata una directory piuttosto 10 REM"""
. LEGGE ID , •• *,' 10 REM'" LEGGE BLOCCHI LIBERI .~*
caotica. 2(1 20 :
:::OOPEtU,8,.15."Ie" 300PENI,e,15."I0"
Un CHR$(160) in mezzo al nome 4@ PRIt-lTIII. "1'l-R"CHR$( IS)CHRS(0)CHRH2) 40 PRINTt l. "/1-R"CHRS(250)CHRS(2) : GETIII ..LOS
determinerà la visualizzazione del se- 5@ INPUTIII,AS'PRINTAS 50 PR It-lTt I , "~I-R"CHR$(252)CHRS(2)' GETIII, HI$
6121CLOSEl 60 PRINTASC(LOS+CHRS(@)+ASC(HIS+CHRS(0>>'256
condo apice al suo posto. 70 CLOSEI
Se invece inseriamo un CHR$(20),
la lettera che lo precede scomparirà.
:~IREM•..••. LEC,C.E IL NO~lE DEL DRl' ...•E •• lt!
2-:' RH-l .•.••• E LA VERSIi:INE DEL ~'os .•.•+.~
••nome file» + CHR$(160) + CHR$(8) +
CHR$(14) 40 OPEN1.:::. 15
'5121p~:Hn#l_. "t'l-~~"CHP~( 1~2/CHR.·. 229)CHF'$(8)
60 INPI)T.l.l'1'$
causerà, ogni volta che visualizzeremo 70 PRItIT"DR1VE "NII!S(AS, 5, 3!CHRS(A",(JolGHH(AS" l) :..AND127>
8~1 PRINT"DOS "LEFTj:(At,:3)
la directory, il passaggio automatico al 96 CLOSEl
set di caratteri minuscolo e disabiliterà
lo SHIFT-COMMODORE che effet-
tua il passaggio da un set all'altro. l" REM"'* CONTROLLA SE IL FLOPPV .,"
20 RHI"" E' PROTETTO DA ",CRITTURA U"
Provate ad esempio a salvare un file :;:(1
il cui nome sia costituito dalla sequen- 4L] OF'Et.JL8~ 15
5@ PR It-nt I .. ""'-""CHR.(e)CHR'(2S)
za di caratteri: e.0 INPUTtl,L"L=ASC(L'+CHR'(B»ANDI6
70 IFL=eTHENPRmT"IolRITE PROTECT ON l''
8e CLOSEI
CHR$(20) + CHR$(20) + CHR$(20) + CHR$-
(20) + CHR$(20) + CHR$(20) + ..Pro» + CH-
R$(160) + CHR$(20) + ..va»

Comparirà la parola «prova» alli-


neata con il bordo sinistro dello scher- cui vengono immessi e lasciati a dispo- mi, l'uno è invece usato per salvarli, il
mo e non delimitata da alcun apice. sizione dell'utente i dati che sono stati canale quindici permette di accedere
Dunque, codici «strani» per effetti letti dal tloppy o inviati dal C-64: que- allo STATUS del disco. I restanti indi-
«strani». ste aree, che si estendono nel 1541 da rizzi sono usati per operare sui dati.
Queste particolarità, singolarmente $0300 a $07FF, vengono anche utiliz- Un canale, che non sia di comando
o combinate, possono, già, di per sé, zate per ospitare i vari programmi di (1015), può essere associato o ad un
costruire un tipo di protezione, anche utilità (scritti in assembler), che per- buffer o ad un file. Avremo allora, nel
se non insormontabile, che metterà in metteranno di potenziare le possibilità primo caso:
seria difficoltà chiunque tenterà di ca- del drive (ex. fast format, fast copy,
ricare un file così trattato senza cono-
scere la «chiave di lettura». «Folli» di-
speed DOS, i vari TURBO ...). OPEN ch, up, is, «,,* bu ••
Il primo e l'ultimo canale di comu-
rectory potranno essere così generate: nicazione vengono usati per inviare mentre per il secondo
provare per credere. comandi, mentre i restanti sono dedi-
cati alla gestione dati. Unico limite nel OPEN ch, up, is, «O: nome file, tf, op ••
Apertura di un canale loro uso è che, contemporaneamente,
di comunicazione non possiamo tenerne aperti più di dove:
cinque né usare più di tre buffer (dato bu è il buffer che intendiamo selezio-
Ogni qual volta desideriamo far che il DOS se ne riserva uno per me- nare (0-4).
compiere ad una unità periferica, nel morizzarsi la BAM ed un altro per ef- tf è il tipo di file che vogliamo gestire
nostro caso il drive una o più opera- fettuare le proprie operazioni di ge- (PRG-USR-SEQ-REL).
zioni è necessario comunicare per pri- stione). op è l'operazione da effettuare (<<W»
ma cosa che intendiamo «colloquia- per scrivere un file o «R» per legger-
re» con lei e, successivamente, quali OPEN ch, up, is lo).
operazioni desideriamo che effettui. Una volta effettuata la OPEN, po-
Tramite l'operazione di OPEN, sta- è la corretta sintassi per aprire un tremo comunicare con il drive. Trami-
biliremo uno o più canali di comuni- canale, dove «ch» è il canale che vo- te un PRINT# potremo inviare i dati
cazione con essa, un po' come si fa gliamo aprire, <<up» è l'unità periferi- o i comandi, mentre con un GET# o
componendo un numero telefonico; ca con cui intendiamo comunicare (8 un INMPUT# riceveremo dati o i
attraverso essi invieremo o riceveremo o 9 per il drive) e «is» è l'indirizzo se- messaggi sullo stato del drive.
tutte le informazioni (dati, comandi, condario. Nel caso in cui quest'ultimo Concettualmente, il funzionamento
messaggi ...). Abbiamo a disposizione non venga specificato, il sistema assu- di questi comandi è identico a quello
quindici canali, numerati da I a 15 e 5 me per default lo zero. dei corrispettivi PRINT, GET e IN-
buffer (0-4). Vengono utilizzati 16 indirizzi se- PUT.
Questi ultimi sono delle aree di me- condari (0-15): lo zero viene usato per In linea generale, prima di usare
moria RAM di 256 byte ciascuna in operazioni di caricamento di program-
.
uno qualsiasi dei comandi disponibili,

MCmicrocomputer n. 56 - ottobre 1986 151


Vie da zero + 64

bisogna avere preventivamente aperto NEW (N): diverso dal NEW del BA- te del settore, che non verranno letti.
almeno due canali: uno per trasmette- SIC, comunica al drive di effettuare la Se volessimo effettuare la lettura com-
re i comandi e ricevere i messaggi sul- formattazione del floppy. Insieme ad pleta del blocco, dovremmo utilizzare
lo STATUS del drive, ed un altro per esso vanno specificati il nome del di- il comando U I, mantenendo la mede-
inviare o ricevere i dati. Fanno ecce- sco ed il suo identificatore. sima sintassi:
zione i soli comandi Memory: se in-
tendiamo operare unicamente con es- 40 PRINT # 1, "NO: nome disco, identifica- 40 PRINT # 1, "U1 :"6;0;18;0
si, sarà necessario aprire il solo canale tore» 50 GET#6.A$, B$
di comando (:I*:1 o :I*:15).
Se il floppy era già stato formattato La riga 50 effettua la lettura dei pri-
10 OPEN 1,8,15 e non intendiamo modificare l'ID, è mi due byte disponibili nel buffer, im-
20 OPEN 6,8. 6, "# 2" sufficiente specificare il solo nome del mettendoli nelle variabili A$ e B$.
disco: la routine di formattazione si li- Tramite ulteriori GET:I*: potremo leg-
In questo modo abbiamo aperto il miterà unicamente a cancellare la di- gere i successivi byte.
canale di comando (:I*:1) ed il canale rectory e ad azzerare la BAM, regi- Ad ogni richiesta di un nuovo byte
per la gestione dati (:I*:6), al quale ab- strando quindi il nuovo nome del flop- viene aggiornato il valore del BUF-
biamo associato il buffer :I*:2, in esso py. FER POINTER: esso contiene la posi-
transiteranno i dati di arrivo o in par- zione nel buffer del successivo byte di-
tenza. SCRATCH (S): cancella il file specifi- spqnibile.
È opportuno controllare sempre lo cato. E possibile assegnare a questo pun-
STATUS del disco dopo una OPEN (o tatore un valore predeterminato in
dopo aver effettuato una qualsiasi 40 PRINT # 1. "SO: nome file» modo da poter accedere senza difficol-
operazione su disco). Una ulteriore ri- tà ad un qualsiasi byte del buffer in
ga di programma sarà: RENAME (R): cambia il nome di un ogni momento senza dover per questo
file. scorrere tutti quelli che lo precedono.
30 INPUT#1,ER,ME$.TR,SE: IF ER > 19 Per leggere il centottantesimo byte
40 PRINT # 1. "RO: nuovo nome = vecchio
THEN PRINT "Errore:» ER,ME$,TR.SE presente nel buffer associato al canale
nome»
6 digiteremo:
Dove ER è il numero dell'errore, COpy (C): duplica un file sul medesi-
ME$ ne è la descrizione; TR ed SE mo floppy (se non si dispone di due 60 PRINT#1. "B-P"6;180
danno indicazione rispettivamente drive), ma con un nome diverso. 70 GET#6. A$
della traccia e del settore in cui questo
è stato riscontrato. 40 PRINT#1, "CO: nome file copia=nome
Naturalmente la posizione all'inter-
file origine» no del buffer sarà espressa mediante
Comandi disco un numero compreso tra O e 255.
È possibile, tramite di esso, effettuare Se invece volessimo scrivere un by-
Questi comandi verranno inviati, anche il merge di più file: te, la procedura sarà la medesima, con
normalmente in forma abbreviata, in- la differenza che al G ET:I*:6, A$ sosti-
sieme al numero del drive verso cui so- 40 PRINT # 1, "CO: nome file merge = O:file tuiremo un PRINT:I*:6, A$. È impor-
no indirizzati (O o 1), tramite un 1.0: file 2 ....0: file N» tante mettere il punto e virgola dopo
PRINT:I*:, seguiti, quando richiesto, A$, poiché altrimenti verrebbe inviato
da una serie di parametri: Lo zero che precede ogni nome file in- anche un CHR$(l3) che modifichereb-
dica da quale drive esso deve essere be, magari indesideratamente, il byte
PRINT # ch, "cmd: "+» parametri» letto. successivo a quello interessato.

Comandi Block BLOCK-WRITE (B-W): tutte le varia-


INIZIALIZZAZIONE (I): determina zioni vengono effettuare all'interno
il posizionamento della testina di let- Possono essere definiti comandi ad del buffer selezionato e non diretta-
tura/ scrittura sulla traccia I, per con- accesso diretto, poiché permettono di mente sul settore richiesto, è pertanto
trollare eventuali problemi di allinea- accedere direttamente al settore speci- necessario, ultimate tutte le modifiche,
mento, e quindi effettua il caricamen- ficato, per poterlo successivamente riscrivere il settore aggiornato. A que-
to in memoria della BAM, del nome leggere ed aggiornare. Una qualsiasi sto scopo useremo il comando di
del disco e dell'identificatore. Finite richiesta di un settore non previsto dal Block-Write, Questo ha però il mede-
queste operazioni, viene comunicato DOS genererà un «ILLEGAL simo difetto del precedente: ignora i
sull'opportuno canale la situazione ri- TRACK OR SECTOR». primi due byte del buffer (e del setto-
scontrata. re). Questo inconveniente può essere
È opportuno inviarlo prima di co- BLOCK-READ (B-R): immette il facilmente superato utilizzando in sua
minciare ad operare su di un floppy blocco dati specificato nel buffer che vece il comando U2.
per controllarne lo stato. stiamo utilizzando (specificato nella Supponiamo di voler cambiare il
OPEN del file di manipolazione dati). nome di un floppy senza doveri o rifor-
VALIDATE (V): effettua una riorga- In quest'ultimo, tramite delle GET:I*:, mattare: le variabili N$ ed S$ conten-
nizzazione del floppy recuperando leggeremo i dati presenti nel settore ri- gono rispettivamente il nuovo nome
eventuali settori non più utilizzati, ma chiesto. Con: degli shifted space (CH R$(l60». La
ancora segnalati come tali nella BAM, procedura sarà:
e ottimizzando l'occupazione di me- 40 PRINT#1, "B-R:"6,0; 18;0
moria disco. Attenzione però che sul
floppy non siano presentati file Ran- richiediamo di leggere il settore O del- 40 PRINT # 1, "U1 :"6;0;18;0
dom poiché i blocchi da essi occupati la traccia 18 del floppy che si trova nel 50 PRINT # 1, "B-P"6;144
60 PRINT#6,LEFT$(N$+S$,16);
verrebbero disallocati. Questo avviene drive O e di immettere il contenuto nel
70 PRINT#1. "U2:"6;0;18;0
perché il DOS considera occupati sol- buffer 2 associato al canale 6. Questo
tanto quei blocchi facenti parte dei file comando, però, per come è stato rea-
che compaiono nella directory. lizzato, ignora del tutto i primi due by- Tramite la U2 abbiamo scritto nel

152 MCmicrocomputer n. 56 - ottobre 1986


Vic da zero + 64

settore O della traccia 18 il contenuto


del buffer associato al canale 6.
Si nt.:.-.5::. i
BLOCK-ALLOCATE (B-A): richiede B l ocj( -p.€ ·~.d E-P; c.~.n.=,.l~·.;d,-'i VI?;tr.=,.,=t::i~.; s~tt."r·l?
al DOS di controllare se un settore è ti! :c~.na lo?; dri ve; tr.;,I':c13..; s4?ttoro?
B106 -l,Jr i te B-t-L c.~.n~.lo:·; dr-i v.c;·; t.r·~.cci~.;sJo?tt.or-'?
disponibile o meno. Nel caso in cui lo U2:canalo?;drivo?jtr~t::cia;s€ttvr~
sia, aggiorna la BAM segnalandolo co- Bl 06 -A l l o,:.~.te B-A; c:-.n.3.1,=.; clr-i '.lt:'; t.r~.o:i .;,1.; :5.ettOt·,o;'"
B l o,:k -Free B-F; c.='.n,;r.lt?; dr-i vo;-.; tr~.Ct:i.;!,.; s'?ttor'?
me occupato, altrimenti invia un mes- Bl ,),:k -L,ec', te B-E.; c3.r,~.1".?;ar' ive.; tr.3'.cci~; ::.l?ttlJrE"
saggio di «NO BLOCK». BIJfr~,..·-pl)intol?r B-P;can~t'?;Posizion~
Viene utilizzato prevalentemente t1o?rl't(H ..··~ -Po?yj
Mo: rI)(,t··~ -I,.Jt-. i t.;·
~l-P; CHF.::HBB"CHF'$(BA)CHP:fO""·,,,·ro E:"t",".)
~l-l,j;CHP:I:(BB)CHF':f(BA)CHP:fO·l. B"te"·)CHF.::f(E"t.e 1 ì .•• CHP$(B"t.e t·o
nella gestione dei file Random, per r'l-:·r •.•I),...·~-E::~~':IJ to? ~l-E: CHF.::f(B~)CHF.::f(BA)
cautelarsi da rischi di sovrascrittura e
quindi di una deleteria e irreversibile Questo è un piccolo pro.gramma di utilità che potrà ulteriormente chiarire qualche idea sull'uso dei
perdita di dati. comandi appena visti. E diviso in due parti: la prima ha lo scopo di proteggere unjloppy da scrillura
o da scratch permanentemente, mentre la seconda serve ad eliminare la protezione.
BLOCK-FREE (B-F): effettua l'opera-
zione inversa della precedente, ren-
dendo disponibile un settore segnalato
nella BAM come occupato. Comandi Memory zioni consecutive tramite un unico co-
mando, dovremo inviare, insieme al-
BLOCK-EXECUTE (B-E): legge il Tramite essi è possibile accedere fa- l'indirizzo, anche il numero di byte
programma in linguaggio macchina cilmente ad ogni area di memoria del
(N B) che si intendono ricevere, fino
contenuto nel settore specificato, lo 1541, byte per byte, senza difficoltà. ad un massimo di 80. Quindi tramite
immette nel buffer selezionato e quin- Scrivere nuove routine in linguaggio un INPUT# chiederemo al DOS di
di lo esegue. macchina, leggere o alterare i parame- immetterli nella variabile specificata.
tri del DOS (blocchi liberi, identifica- Volendo leggere, ad esempio, la ver-
Comandi User tore, nome del disco, contatori ...) sarà sione del DOS, digiteremo:
un'operazione estremamente semplice,
Questi comandi determinano l'ese- dovremo però imparare a conoscere 40 PRINT:II: 1, "M-R" CHR$(192) CHR$(229)
cuzione di routine in linguaggio mac- bene il modo di operare di questo dri- CHR$(3)
china ad iniziare da indirizzi predeter- ve e del suo microprocessore per sfrut- 50 INPUT:II: 1. A$: PRINT A$
minati: tare completamente gli «strumenti»
che ci vengono messi a disposizione. Quest'ultimo modo di usare la Me-
UA o U1 - > $C05F (Block Read) In seguito vedremo come è organizza- mory-Read non funziona sempre: ci
UB o U2 - > $OC97 (Block Write) ta la memoria del 1541. sono alcune aree di memoria nelle
UC o U3 - > $0500 Gli indirizzi su cui opereremo sa- quali non è possibile accedere a più di
UO o U4 - > $0503 ranno sempre espressi sotto forma di un byte per volta.
UE o U5 - > $0506 Byte Basso/Byte Alto (BB/BA).
UF o U6 - > $0509 MEMORY-WRITE (M-W): mediante
UG o U7 - > $050C MEMORY-READ (M-R): tramite es- esso protremo scrivere nella memoria
UH o U8 - > $050F
UI o U9 - > $FF01 (Set Speed or Indi-
so è possibile leggere il contenuto di del drive le nostre routine in linguag-
rect Jump Over) una o più locazione successive RAM o gio macchina o modificare i parametri
UJ o U: - > $EAAO (Reset Vector) ROM. con cui opera il drive. Possiamo tra-
Se volessimo leggere il contenuto smettere contemporaneamente fino a
della locazione 28 ($1 C), il quinto bit 32 byte, con modalità molto simili a
I comandi da U3 a U8 effettuano un
della quale indica se il disco su cui quelle del precedente comando.
salto ai corrispondenti indirizzi del
stiamo lavorando è protetto da scrittu- Per modificare il numero di device
buffer 2 ($0500 - $05FF).
ra o meno, non dovremmo fare altro del nostro drive via software (da 8 a
Il comando UJ determina l'esecu-
che inserire nei nostri programmi que- 9), dovremo digitare:
zione della routine di RESET del dri-
ve. Con UI e U9 viene settata la velo- sta routine:
40 PRINT:II:1, "M-W" CHR$(119) CHR$(O)
cità del drive se insieme ad esso è sta- 40 PRINT:II: 1, "M-R"CHR$(23)CHR$(0) CHR$(2) CHR$(9 + 32)CHR$(9+64)
to inviato un «+» o un «- », altri- 50 GET:II:1, A$:A = ASC(A$ + CHR$(O))
menti viene eseguita la routine il cui ANO 16 MEMORY-EXCUTE (M-E): determi-
indirizzo è stato memorizzato nelle lo- 60 IF A=O THEN PRINT "PROTETIO!» na l'esecuzione del programma in lin-
cazioni RAM $65 e $66 (IO I-I 02). I guaggio macchina, presente nella me-
comandi U I e U2 li conosciamo già. Per leggere il contenuto di più loca- moria del drive, a partire dalla loca-
zione di memoria specificata (sempre
nella forma BB/BA).
Mandando in esecuzione la routine
che inizia a $C 12C potremo far lam-
peggiare il LED del drive come se si
1 ~1(t OPEN 1 8" 1'5) " 1(1"
J 200 OPEN1/8} 15/"10": fosse verificata una condizione di er-
1100PEN6,8,6,"#3" 210 OPEN6}8}6/"~3"
120 PPINT#I,"IJI'''6:13;18:0 220 PRINT#I,"IJI:"6:0;18;0
rore:
1::(' PPlNT#I ..•. E:-P •.6:2 23C:' PRUH#I, "B-P"6.;2
14') F'F.:INT#6 ..CHR$(76;'; 240 PRHH#I .. "t'H,J"CHP$( 1 )CHP.$( 1 )CHR:$( 1 )CHR:f.(65, 40 PRINT:II: 1, "M-E"CHR$(44)CHR$(193)
150 PPINT#I,"1J2"6:0;18;O 250 PRUH#6, CHRS(65);
160 ClOSE6: ClOSE I: EtlD 268 PRINT#1/"U2:"6;0; 18;0
270 CLOSE6: CUJ'::El N.D. I comandi Block, Memory e User
funzionano soltanto in modo pro-
gramma, in modo diretto genereranno
un? SYNTAX ERROR.

MCmicrocomputer n. 56 - ottobre 1986 153

Potrebbero piacerti anche