4cura di Va/ter Di Dio2
Due programmi per chi programmaQuesta puntata del software Apple è riservata ai programmatori, sia a quelli che
programmano in Basic, sia ai programmatori in linguaggio macchina. Infatti pre-sentiamo due utility abbastanza interessanti: la prima permetje di attivare gli attri-buti video (INVERSE, NORMA L, FLASH) direttamente da tastiera e dentro aglistessi programmi; la seconda serve invece per rilocare (il più possibile automatica-mente) un programma in linguaggio macchina di cui non si abbia il sorgente.
Come si faIl programma base è quello di figu-
ra I, come si vede è lungo solo trentabyte ed inoltre può essere trasferito, elavorare, in qualsiasi zona libera dellamemoria. Una volta determinata laposizione in cui si vuole il programma,si deve avvisare il DOS di modificare ipuntatori alla routine di stampa inmodo che guardino al nostro program-mino. Questo si ottiene scrivendo laparte bassa dell'indirizzo nella loca-
Questo «miniprogramma» in lin-guaggio macchina permette di ottene-re tutti e tre gli attributi video diretta-mente dentro una stessa stringa di out-put, semplicemente battendo da tastie-ra Control I per INVERSE, Contro I Nper NORMAL e Control F perFLASH. Inoltre, avendo la utility atti-vata, si possono vedere, già nel listato,le stampe che contengono parole in in-verso o in flash, esattamente come ver-ranno sullo schermo.
La utility non fa altro che intercetta-re il carattere inviato al video e, sequesto è uno dei tre carateri di con-trollo, attivare, tramite il contenutodella locazione 50, la relativa visualiz-zazione.
Data l'esigua occupazione di memo-ria (e un po' come esercizio program-matorio) si è deciso di mettere il pro-gramma direttamente dentro a quelloin Basic.
3) Battere:•80B < 300.31 DM < return )-
questo sposta il programma in lin-guaggio macchina al posto dei puntini,dentro la REM. Se a questo punto tor-nate al Basic ed effettuate un LIST viritrovate con la seguente riga ...
10 ••••• REM - HLlN = SPEED = h DEL 2'- DIM = SPEED = DEL 2' - TEXT = SPE-ED = ? DEL 2'L OVERFLOW h
Che altro non è che il codice del no-stro programma, interpretato come sefosse Basic. Per eliminare l'antiesteti-ca riga ci saranno utili quei cinqueasterischi messi prima del REM.
4) Dal monitor battete:·805:020202020·etrl C5) tornate al Basic e riprovate il
LIST. Della riga IO è rimasto solo ilnumero di riga (IO appunto). Scriveteora la chiamata al DOS:
20 POKE 54,11 :POKE55,8:CALL 1002o al proDOS
20 PRINT CHR$(4) "PR # ,A$80B ••Provate ora a scrivere un'altra riga
in questo modo:60 PRINT "Questo è < F> FLASH < N >
e questo < I > INVERSO < N > ••Dove i caratteri tra parentesi acute
vanno battuti con il tasto Control pre-muto; salvate il programma con unnome qualsiasi, poi date il RUN, setutto è stato fatto con cura, la scrittadeve avere la parola FLASH lampeg-giante e quella INVERSO in inverso.Se ora provate a listare il programmavedrete direttamente nel listato lescritte esattamente come apparirannoin fase di RU .
ota: Avere il programma diretta-mente dentro a quello Basic permettedi caricare la routine insieme al pro-gramma stesso senza dover utilizzarefile binari o liste di DATA, se però sicarica un altro programma con la rou-tine ancora attiva, si rischia di inc/lio-dare il sistema (niente paura, basta ilRESET), prima di cambiare program-ma conviene allora battere PR:Il:O op-pure premere djrpttamente il tasto RE-
'....•300- C9 8E CMP 1I$8E0302- 00 C'5 BNE $03090.3',)4- 0'\9FF LDA lI$FF031)6- 85 32 STA $3203(;8- be, RTS0309- C9 86 CMP 11$860308- D0 05 BNE $031.20300- A9 7F LDA #$7F1~!:5(JF- 85 32 STA $'":"'")->~
0311- 60 RTS')312- C9 69 C~lP lI$990314- DO 05 BNE $031B0316- A9 :::;F LDA li$3F0318- 85 32 STA $32t:!.31A- Ol) RTS031B- 4C FO FD JMP $FDFO
Figura I: Rouline che permerre di geslire gli arrri-buli video (Flash ed Inverse) direrrame11fe all'inler-no delle sIringhe di slampa.
zione 54, quella alta nella 55 e poi ef-fettuando una CALL alla routine 1002che effettua il cosiddetto ricollega-mento del DOS. Per chi 'lavora sottoproDOS il comando è stato semplifi-cato in PR:Il:,A indirizzo (indirizzo chepuò anche essere scritto in esadecima-le se preceduto dal simbolo $).
Per nascondere la routine dentro alprogramma che la utilizza occorre se-guire le seguenti istruzioni:
1) Scrivere una riga come la se-guente:10····· REM .i puntini dopo il REM sono 30; AT-TENZIONE, non mettere lo spaziotra il REM e il primo puntino!
2) Caricare in memoria nella zona300 il codice oggetto di figura I (quin-di CALL-151, poi 300:C9 8E DO4C FO FD < return >).
Attributi videoda tastieraI
116 MCmicrocomputer n. 48 - gennaio 1986
----------- .....softwareSET. Chi volesse lasciare la routine al-l'indirizzo $300 (dee. 768) deve cam-biare la riga 20 in:20 POKE 54,0:POKE 55,3:CALL 1002oppure, sotto proDOS, battere PR #,A$300 direttamente da tastiera o den-tro al programma.
Nel caso che la routine sia allocatafuori dall'area Basic, rimane attiva fi-no alla pressione del RESET o all'ese-cuzione di un comando PR #.
IRilocatoredi programmi in LM
Quando si scrive un programma inlinguaggio macchina occorre sapere inpartenza in quale zona della memoriaquesto dovrà risiedere; ciò perché, al-cune delle istruzioni del microproces-sore (ad esc::mpio i salti) fanno riferi-mento ad una precisa locazione di me-moria. Anche molte aree dati si trova-no in posizioni predeterminate e, sequalcuno le sposta, il programma nonè più in grado di trovarle.
Spesso, però, si presenta la necessitàdi trasferire'un programma in una zo-na di memoria diversa da quella percui era stato scritto (ad esempio per-ché si è allungato, oppure perché creaconflitti con le aree variabili del Ba-sic). Trasferire un programma in lin-guaggio macchina, da una posizionedi memoria ad un'altra, si dice «riloca-re», ed è il classico «lavoro da certosi-no». Infatti, con il disassemblato inmano, occorre trovare tutte le istruzio-ni con indirizzamento assoluto, cioètutte quelle che fanno riferimento aduna determinata locazione (ad esem-pio LDA $4?FF che legge il contenutodella locazione $45FF).
Le istruzioni ad indirizzamento as-soluto, o assoluto indicizzato, si rico-noscono dalle altre perché sono lun-ghe tre byte: il prill)o byte è il codicedel comando, gli altri due rappresenta-no l'indirizzo scritto «al contrario»(nell'esempib precedente FF 45).
Una volt~ individuate tutte le istru-zioni a tre byte, bisogna ancora vederequali sono quelle relative al blocco diprogramma che si sta spostando e qua-li, invece, sono relative al resto delprogramma, alla ROM del sistemaoperativo o ai soft-switch, e che, quin-di, non devono essere toccate. Trovatele istruzioni da cambiare, occorre an-cora calcolare, in base alla nuova posi-zione del p~ogramma, quale dovrà es-sere l'indirizzo definitivo e correggereopportunamente i due byte del campoindirizzo di ciascuna di queste istru-ZIOnI.
Tutto questo però, spesso, non ba-sta; infatti anche alcune istruzioni adue byte intervengono, indirettamente,nel processo di rilocazione, sono quel-
MCmicrocomputer n. 48 - gennaio 1986
le relative alla individuazione di tabel-le e punti di entrata particolari. Adesempio, se dobbiamo informare il si-stema operativo che il prossimo IN-PUT deve venire da una routine delprogramma, il codice relativo sarà:
LDA #PARTE ALTASTA INPUT ALTOLDA # PARTE BASSASTA INPUT BASSOJMP DOS INPUTOvvero, si scrive in due locazioni in
pagina zero il nuovo indirizzo e poi siavverte il DOS di andare a leggere lamodifica. Le due istruzioni LDA# NN sono istruzioni a due soli byte,e quindi non sembrerebbero da riloca-re, ma i valori Parte Alta e Parte Bassasono relativi al nuovo punto di entratadel programma e vanno, perciò, modi-ficati ugualmente.
0800- A9 FF 85 31 AO 00 20 ED0808- 08 20 F9
ti85 EB 84 EC
0810- AO 13 20 08 20 F9 080818- 85 ED 84 38 A5 ED E50820- EB 85 CE A5 EE ES EC 850828- CF 90 10 A5 CE 49 FF 690830- 00 SS CE A5 CF 49 FF 690838- 00 85 CF AO 26 20 ED 080840- 20 F9 08 85 FB 84 FC AO')848- 39 20 ED 08 20 F9 08 850850- FD 84 FE AO 4C 20 ED 08
I0858- 20 F9 08 38 E5 EB 85 F90860- 98 E5 EC 85 FA 18 AS F90868- 69 00 85 F9 A5 FA 69 200870- 85 FA AO 5F 20 ED 08 200878- OC FD C9 CD 66 FF A9 200880- 85 3B A9 00 85 3A AD 000888- CO C9 83 FO 5C 20 DO F80890- AO 02 C4 2F DO 42 38 880898- 81 3A E5 FS C8 81 3A E508AO- FC 90 ~c- A5 FD 88 Fl 3A';''J
08A8- A5 FE C8 Fl 3A 90 29 2408BO- FF 10 07 20 OC FD C9 CE0888- FO lE 18 AO 01 81 3A 65C>8CO- CE 91 3A C8 81 3A 65 CF08C8- 91 3A 20 80 FE 20 DO F808DO- 20 84 FE A9 05 20 C9 FC08D8- 20 C-~ F9 85 3A 84 38 C4'J.J
08EO- FA 90 A3 A5 F9 C5 3A 8008E8- 9D 2C 10 cb 60 A9 8D 2008FO- ED FD C8 89 05 09 DO F708F8- 60 20 6F FD AO 00 20 A70900- FF A5 3E A4 3F 60 C9 CE0908- C9 DA C9 CF AO DO D2 CF0910- C7 D2 Cl CD CD Cl BA AO0918- 00 C4 C5 D3 D4 C9 CE Cl0920- DA C9 CF CE C5 AO AO AO0928- AO EA AO 00 C9 CE C9 DA0930- C9 CF AO Cl D2 C5 Cl AO0938- D2 C9 CC AE 8A AO 00 Cb0940- C9 CE C5 AO AO AO Cl D20948- C5 Cl AO D2 Cc;>CC AE BA0950- AO 00 C6 C9 CE C5 AO DO0958- D2 CF C7 D2 Cl eD CD Cl0960- AO AO SA AO 00 Cl AD Cl0968- D5 D4 CF AO CD AD CD Cl09'"70- CE D5 Cl CC AO SA AO 00
Figura 2: Modulo oggetlo del programma rilocato-re. Va copiato in memoria e salvato con BSAVERILOCATORE,A$800,L$178.
Un secondo problema è rappresen-tato dalle tabelle di caratteri ASCII(tipicamente le scritte) che il disassem-bler Apple tenta di interpretare comeistruzioni (e spesso ci riesce), talvoltaquesta interpretazione produce un co-dice a tre byte (spesso però l'indirizzonon è tra quelli da rilocare) apparente-mente da modificare.
Questi ultimi due casi non possonoessere eseguiti da un programma auto-matico e andranno perciò controllatimanualmente; se il secondo non creaproblemi (al massimo qualche testo in-comprensibile, ma facilmente indivi-duabile) il primo porta al blocco delprogramma (e a volte alla distruzionedello stesso); per cui, dopo aver effet-tuato la rilocazione, si deve controlla-re attentamente il programma alla ri-cerca di simili occorrenze.
Il rilocatoreIl programma rilocatore funziona
sfruttando le capacità del disassem-bler interno dell'Apple. Una alla voltadisassembla le istruzioni, poi guardase sono a tre byte e se l'indirizzo è diquelli da modificare; se si, lo modificae riscrive l'istruzione corretta, altri-menti prosegue la ricerca. Nel caso sisappia in anticipo che nel programmasi possono trovare delle scritte è possi-bile fare in modo che il rilocatore siarresti prima di ciascuna istruzione damodificare chiedendo il permesso al-l'operatore. Inoltre, per permettere larilocazione anche di singole parti diprogramma, l'area di indirizzi da mo-dificare può essere definita a piacere(si può ad esempio spostare solo unasubroutine e modificare nel program-ma originale tutte le chiamate a quellaspecifica subroutine).
Per caricare la routine rilocatrice sipuò utilizzare un assemblatore (co-piando il listato sorgente di figura 3)oppure immetterla direttamente dalmonitor con il solito CALL-151 e poil'indirizzo iniziale, i due punti e i datidella figura 2 separati dallo spazio.Terminato l'inserimento si salva il tut-to battendo:
BSAVE RILOCATORE,A$800,L$178.
Naturalmente chi vuole, ora, lo puòrilocare altrove!
Nota: Alla riga 160/161 compareuna istruzione di attesa (DELA Y),questa è relativa alla gestione del regi-stratore a cassetta (ritarda ACC*.1664secondi) e non esiste nel IIc. Si puòsostituire con un LDA # $87 e JSRCOUT, naturalmente abbassando ilvolume!
117
....••
....••
3C
l)•
I1
0800
1;
08
84
85
3A
119
STA
PCL
punt
ala
Work
.are
a.08
002
,PR
OGRA
Mt-1
A08
86AO
OOCO
120
LOOP
LOA
I<EY
**lo
oppr
inci
pale
.08
003
,08
89C9
8312
1CM
P.S
83CT
RLC
=in
terr
ompe
0800
4,
RILO
CATO
RE08
8BF0
5e1
22
BEQ
RTSl
illa
voro
.08
005
,08
8020
00F8
123
JSR
ISTD
SPdi
sass
embl
ada
PC,
0800
6~1
00E
EPZ
$31
0890
AOO2
124
LOY
*$2
seè
lung
a08
007
NUML
EPZ
S3E
0892
C,",
2F12
5CP
YLE
N3
byte
0600
8NU
~lH
EPZ
$3F
0694
0042
126
BNE
CONT
Ial
lora
va08
009
PCL
EPZ
93A
0896
3812
7SE
Cri
lacata
,08
00lO
PCH
EPZ
$3B
0897
8812
8OE
Yco
ntro
lla
seil
0800
IlLE
NEP
Z92
F08
98B1
3A12
9LP
A(P
CL)
•Yca
mpo
indi
rizz
o08
001"
AUTO
EPZ
$FF
089A
E5FB
130
SBC
INRL
dell
'ist
ruzi
one
~08
001
3ST
ARTL
EPZ
$EB
089C
C813
1IN
Yè
comp
reso
0800
14ST
ARTH
EPZ
$EC
0890
B13A
13
2LD
A(P
CLl
,Yne
ll'a
rea
rllo
cabi
le.
0800
15OS
TLEP
ZSE
D08
9FES
F"C
133
SSC
INRH
0800
16OS
THEP
Z$E
E08
Al90
3513
4BC
CCO
NTI
0800
17DI
FFL
EPZ
SCE
08A3
A5FD
135
LDA
Fllo
lL08
0018
OIFF
HEP
Z$C
F08
A588
136
OEY
0800
19EN
DLEP
ZSF
908
A6F1
3A13
7SB
C(P
CLi,
Y08
0020
ENOH
EPZ
SFA
OBA8
A5FE
138
LDA
FINH
0800
21IN
RLEP
Z$F
B08
AAC8
139
INV
0800
22!N
RHEF
'Z$F
C08
ABF1
3A14
0se
c(P
CLl
,Yal
tri.
ment
in
on
va
0800
23FI
NLEP
Z$F
D08
AO90
2914
1BC
CCO
NTi
rilo
cata
~.
se51
0800
24FI
NHEP
Z$F
E06
AF24
FF14
2BI
TAU
TOde
voas
pett
are
la08
0025
;08
Bl10
0714
3BP
LGO
ONco
nier
-ma?
0800
26WO
RI<
EPZ
$20
08B3
200C
FO14
4JS
RI<
EVIN
Si,
legg
ila
tast
iera
:08
0027
;08
86C9
CE14
5CM
P""
N"se
è"N
"08
0028
~lSG
lEP
Z(;
08B8
FOIE
146
BEQ
CONT
Inon
rilo
care
~,
0800
29MS
G2EP
Z19
08SA
1814
7GO
ONCL
C**
rilo
ca**
0800
30MS
G3EP
Z38
08BB
AOOl
148
LDY
*$1
somm
a08
0031
MSG4
EPZ
5708
BOB1
3A14
9LO
A(F
U)
,Val
l'in
diri
zzo
0800
32t1
SG5
EPZ
7608
BF65
CE150
AOC
OIFF
Lde
ll~l
strL
t::l
one
0800
33
MSGb
EPZ
9~08
Cl91
3A15
1ST
A(P
CLl,
Yla
d'ls
tanz
a08
0(,\
34;
08C3
C81
52
INY
diri
loca
zion
e08
0035
COUT
EQU
$FDE
O08
C4BI
3A153
LDA
(PCL
).Y
eri
mett
e08
0036
GETL
NEQ
U$F
06F
08C6
65CF
154
AOC
DIFF
Ha
post
oil
camp
o08
0037
GETN
UMEQ
USF
FA7
0~C8
913A
155
STA
(PCL
l,Y
indi
rizz
o.08
0038
ISTD
SPEQ
USF
800
08CA
156
;08
0039
PCAD
JEQ
USF
953
08CA
2080
FE15
7JS
RSe
:TIN
VRi
stam
pain
inve
rso
0800
40SE
TINV
EQU
$FE8
008
CO20
00F8
158
JSR
ISTD
SPla
nuov
ais
truzi
one"
,5:
0800
41SE
TNRM
e:QU
SFE8
408
0020
B4FE
159
JSR
SETN
RMNo
rmal
.()
0800
42KE
YIN
EQU
$FOO
C08
03A9
0516
0WA
ITLO
A*$
5as
pett
aun
seco
ndo
308
0043
BELL
EQU
SFBD
D08
D52O
C9FC
161
JSR
DEl.
AVpe
rle
gger
la,
o08
0044
OELA
YEQ
USF
CC9
0808
162
;O
0800
45,
0808
2053
F916
3CO
NT1
JSR
PCAD
Jpo
iin
crem
enta
O08
0046
KSTR
EQU
SCOl
OST
APC
Lil
prog
ram
coun
ter
O08
0B85
3A16
43
0800
47KE
YEQ
USC
OOO
08
00
84
3B
165
STV
PCH
e-O
0800
48;
08DF
C4FA
166
CPY
ENOH
vede
seil
C m-08
0049
;I-
lonit
or08
El90
A316
7ec
cL
Q[F
prog
ramm
a....•
080e
jA9
FF50
lNIT
LOA
#$FF
pr-
ep
ara
Il08
E3A5
F916
8LO
AEN
OLè
fini
to.
:J08
0285
3151
STA
MODE
all'
uso
diGE
TNUM
.al
trim
enti
stam
pa11
prim
o08
E5C5
3A16
9C/
'IPP
CL.
-lO>-
0804
AOOO
52ST
ART
LOY
*MSG
I08
E7B0
9D17
08C
SLO
OPco
ntin
ua..
Cl)
0806
20ED
0853
JSR
OSP
mess
aggi
o",
E'
JSR
INPU
Tri
ceve
lari
spos
ta08
E917
1;
lO08
0920
F908
5408
E92C
I0CO
172
RTSl
BIT
KSTR
puli
sce
lost
robe
Cl>OB
OC85
EB55
STA
STAR
TLa
sedIc
ibi
tin
:JST
YST
ARTH
Star
t.08
EC60
173
RTS
edes
ce.
:J08
0E84
EC56
Il>57
08ED
1ì4
;è5
0810
,08
ED17
5;
SUBR
OUT
INES
0810
A013
56
LDY
lI~l
SG2
Stam
paIl
se
co
nd
o~
08EO
1ì6
(O08
1.2
20E
D')8
59JS
ROS
Pme
ss~:
.]gl
O.E'
Cl)
0815
2l)F
9l.!
8::
"JJ5
RIN
PUT
,l,-e
'oe
lo.
rela
tl'ld
08ED
A98D
177
DSP
LDA
ttSE
II)
Stam
paun
CRe
(j)
~2
4() 3
0818
85ED
61ST
ADS
TLri
spost
ain
08EF
20EO
FO17
8NE
XTJS
RCO
UTpo
iil
test
oo'
OSlA
84EE
62ST
YoS
THDe
st.
08F2
ca17
9IN
Ya
part
ire
dal
.., O08
tC63
;08
F389
0509
180
LoA
TEST
I.Y
punt
oY
efi
noa
()08
F6OO
F718
1BN
ENE
XTch
en
on
tr-o
'laO
081C
3864
SEC
308
10A5
Eo65
LDA
DSTL
Calc
ola
08F8
6018
2RT
Su
no
zero
."O
081F
E5EB
66SB
CST
ARTL
ladi
stan
za08
F918
3C ro
0821
8SCE
67ST
ADI
FFL
tra
la08
F918
4..,
08
23
A5
EE
68LD
AoS
THloc
a:::
ione
08F9
206F
FD18
5IN
PUT
JSR
GETL
NAc
cett
aun
ali
nea
?08
25E5
EC69
SBC
STAR
THin
izia
lee
08FC
AOOO
186
LDY
*SO
data
stle
rae
la~
0827
85CF
70ST
AoI
FFH
quel
la08
FE20
A7FF
187
JSR
GETN
UMfr
.ott
~nel
b~ff
er,
(Xl ,
0829
9010
71BC
CNO
COMP
final
e;se
0901
A53
E18
8LD
ANU
MLpo
i]
dtr
asfo
rma
in(Q
082B
A5CE
72
LOA
DIFF
Lè
posi
tiva
,01
<•
0903
A43F
189
Loy
NUMH
unnL
lmer
oe$
ddeC
lmal
eCl)
0820
49FF
73EO
RII
SFF
altr
imen
ti0905
6(,
190
TEST
IRT
Sch
eme
tte
lnA
edY.
:J :J08
2F69
0074
AoC
liSO
effe
ttua
il09
0619
1DJ o'
0831
85CE
75ST
ADI
FFL
comp
leme
nto
0906
C9CE
C91<;
1':'
ASC
"IN
IlIO
PROG
RAMì
-1A:
....•.
0833
A5CF
'76
LoA
olFF
Ha
due
dell
a09
09DA
C9CF
<O08
3549
FF77
EOR
.SFF
dist
anza
,ch
e,09
CJC
AODO
D2(X
l(j
)08
3769
0078
ADC
liSO
cDsì
,and
rà09
0FCF
C7D2
0839
85CF
79ST
ADI
FFH
semp
reso
mmat
a.09
12CI
CDCD
083B
80;
0915
CIBA
AO08
3BA0
2681
NOCO
MPLD
Y.~
63Te
rzo
0918
0019
3HE
X00
083D
20ED
0882
JSR
OSP
mess
aggi
oe
0919
C4C5
0319
4AS
C"D
ESTI
NAl
IONE
0840
20F9
0883
JSR
INPl
1l'
rela
tiva
risp
osta
091C
04C9
CE08
4385
FB84
STA
INRL
diin
izio
area
091F
CIDA
C908
4584
FC85
STY
INRH
ri
1!:le
abi
le.
('9~
:?CF
CEC5
0847
86;
0925
AOAO
AO08
47A0
3987
LDY
.MSG
4Ad
esso
C'92
8AO
BAAO
0849
20ED
C,8
88JS
RDS
Pch
iede
la09
2B00
195
HEX
0008
4C20
F908
89JS
RIN
PUT
fine
dell
'ar-
ea!J
92C
C9CE
C919
6AS
C"I
NIZI
OAR
EARI
L.:
"08
4F85
FO90
STA
FINL
"-'i
loca
bile
.O'
?2F
DAC9
CF08
5184
FE91
STY
FINH
09~
·;;2
AO
C1r;
~0
85
392
;09
35C5
CIAO
0853
AD4C
93LO
Y*/
'lSG
5Ch
iede
09:5
802
C9CC
0855
2OED
0894
JSR
OSP
l:'i
ndi,
.-.i
zzo
093B
AEBA
AO08
58:r
oF9O
S95
JSR
INPU
Tfi
nale
del
O~
?3E
0019
7H
EX
0008
5B38
96SE
Cp,
-ogr
amma
e09
3FC6
C9CE
198
ASC
"FIN
EAR
EARI
L.:
"as
5CE5
EB97
SBC
STAR
TLlo
usa
per
0942
C5AO
AO08
5E85
F998
STA
ENDL
calc
olar
nela
0945
AOCI
D208
6098
99TY
Alu
nghe
zza_
0948
C5CI
AO08
61E5
EC10
0SB
CST
AF:T
Hch
e.,
094B
D2C9
CC08
6385
FA10
1ST
AEN
DHso
mmat
a0'
t4E
AEBA
AO08
6518
10
2CL
Cal
l'in
di
rizz
o0
95
100
199
HEX
0008
66A5
F910
3LO
AEN
nLin
izia
lede
lla
(,95
2C
6C9C
E20
0AS
C"F
lNE
F'F\
OGRA
~1~1
A08
6869
0010
4AD
C*S
O(I
Jor-
k.a
r-e
a,
dar
'à09
55C5
AODO
086A
85F9
105
STA
ENDL
l:'i
ndir
izzo
0958
D2CF
C708
6CA5
FA10
6LD
AEN
DH'"
inal
ede
l09
5BD2
CICD
086E
6920
107
ADC
llWO
RKp.
.-og
ramm
a09
5ECD
CIAO
0870
85FA
108
STA
ENOH
r-i
loca
t,o.
0961
AOBA
AO08
7210
9;
09':
,400
201
HEX
0008
72A0
5F11
0LD
YII
MSG6
Ulti
mome
ssag
gio;
0965
CIAD
Cl20
2AS
C"A
-AUT
ON-
NANU
AL08
7420
ED08
111
JSR
D5P
auto
mati
coo
0';>
68D5
D4CF
0877
200C
FD11
2JS
RKE
YIN
manu
ale,
11Ca
r-ry
0968
AOCD
AO08
7AC9
CD11
3CM
P."
N"fi
nisc
ene
lbi
t7
O';>
6ECo
C1CE
087C
66FF
114
ROR
AUTO
diAu
to.
0971
05CI
CC08
7E11
5;
0974
A08A
AO0
87
EA
92
011
6GO
LoA
II~J
OR~"
Irll::
aep
era=
10ne
0977
0070
3HE
X00
v880
8538
117
STA
PCH
Cll
r-lJ
.oca
:lon
e.l
i.•
lI8S
:A9
0011
8LD
A~$t..'
prog
r-am
co
un
tpr
Figu
ra3:
Sorg
ente
LISA
delp
rogr
amm
ari
loca
lore
,....•
.•I
....•.
<O