Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
May, 1982, 19S2. Issue 201 24 COMPUUI<br />
COMPUTE! 151<br />
151<br />
0067 0332<br />
0068 o 3~~~;<br />
GO 68 0335<br />
0069 0335 033~;<br />
0070 o 0335 33~)<br />
0071 033B<br />
0 338<br />
0072 033130 338<br />
0073 o 0 3:3B 338<br />
007'10 0 7-4 033130 338<br />
0075 033A<br />
0 A<br />
0076 033D<br />
0077 033E<br />
0078 03'11 0341<br />
0079 7? 03'1Z<br />
0 342<br />
00 BO 03'130 343<br />
00131 0081 03'130 343<br />
00 El2 82 03'1:3 0343<br />
0003 83 03'1:3 03^3<br />
0004 03'1:3<br />
00 84 0343<br />
0OOEl~'j 085<br />
0343<br />
0086 o 0 345<br />
34~'j<br />
00 B7 87 03'17 0347<br />
000 0 B8 88 0349<br />
00 D9 89 03480 346<br />
00'10 90 0341)<br />
0 34D<br />
0091 00'11 03'1F 034F<br />
00 '12 03~jl<br />
00 92 0351<br />
0093 0353<br />
03~'j3<br />
009'1 035'1<br />
00 94 0354<br />
00950 0 O:l~'j"<br />
0 354<br />
006 0096<br />
0354 3~j"<br />
0097 o 0354<br />
3~:ji+<br />
0098 0354<br />
3~'j"<br />
0099 0354<br />
3~'j"<br />
01. 00 o 3~j'l<br />
01 0 0 0354<br />
o 010 lli 1 o 0354<br />
3~'j'l<br />
0102 0 2 03~'j6<br />
356<br />
0103<br />
03 0 357 3~)7<br />
0104 04<br />
0 359<br />
3~),?<br />
0105 05 o 035A :l~)A<br />
0105 05 035E:<br />
0 35B<br />
0105 0:l5C<br />
0 35C<br />
01060 6 o 0 35D<br />
3~'j1)<br />
0107 0:l5D 035D<br />
0108 o :l~'j0<br />
0108 0 35D<br />
0109 035D<br />
O:l~)D<br />
o 11 0 0350<br />
0110 0 35D<br />
01 :I. LI1 o 035D 3~:;1)<br />
0112 035D<br />
01<br />
0 35D<br />
01:1. 1.33 035D<br />
01 :I. 1.4 'I 035D<br />
0 01:1. 1.55 035D<br />
01 :1.6 035D<br />
0 0117 035D<br />
01 1.7 035D<br />
0118 0:3~'j[)<br />
35D<br />
01 :1.9 03~)D<br />
01 19 0 35D<br />
0170 0120 035D O:3~m<br />
4CE:700 4CB7 0 0 OUT JMP CHHGOT CHRGOT IGET JGET CHAH CHAR AT TXTPTH<br />
TXTPTR<br />
AND HETUHN RETURN TO APPLESDFT<br />
APPLESOFT<br />
+<br />
t<br />
'1CC9DE ERROUT JMP SYNEHH<br />
4CC9DE ERRQUT JMP SYNERR JDO SYNTAX ERROR<br />
85B6<br />
8~jE:6<br />
E:D53 BD53Q3 0:3<br />
'18 48<br />
E:D5Z03<br />
ED5203<br />
'1El 48<br />
60<br />
60<br />
A94C<br />
A94C<br />
85E::l 85B1<br />
A'?OO A9 0 0<br />
851::2 B5B2<br />
A'?03 A? 0 3<br />
85B3<br />
B~jE::3<br />
A'IOO A? 0 0<br />
85B6<br />
60<br />
60<br />
SCO ~5CO:3 3<br />
E:O<br />
IE: D<br />
7603 760:3<br />
AB<br />
00<br />
000 0<br />
00<br />
00<br />
GOTONE STA FLAG JFLAG COMMAND IN PROGRESS<br />
L.DA LDA CMDTE:L-1,X<br />
CMDTBL-l,X I JGET HIGH E:YTE BYTE<br />
PHA<br />
lAND JAND DEPOSIT ON<br />
STACK<br />
LOA LDA CMDTE:L CMDTBL-2,X -Z, X IGET JGET LOW<br />
BYTE<br />
PHA<br />
lAND JAND DEPOSIT ON STACK<br />
RTS JEXECUTE USER PATCH<br />
JINITIALIZATION PATCH!<br />
IA JA CALL 835 FROM E:ASIC BASIC WILL INITIALIZE<br />
JTHE ROM SUB-INTERPRETER*<br />
LDA * $ 4 L<br />
H..OAD A 'JMP' AND<br />
STA *Bi $Bl<br />
JSTORE ISTORE AT CHRGET<br />
CHr~GET<br />
L.OA LDA *NEWGET IHICH JHIGH BYTE<br />
STA $E::3 $B3<br />
L.DA LDA to #0<br />
ICLEAH JCLEAR THE<br />
STA FLAC FLAG<br />
JCOMMAND IN PROCESS FLAG<br />
RTS<br />
! RETURN TO BASIC<br />
;command table:<br />
ICOMMANDS jcommands AND and THEIR their PATCH patch ADDRESSES<br />
addresses<br />
IARE ;are STDRED stored TOGETHER together IN in L.OW-BYTE, low-byte, HIGH high BYTE,<br />
byte,<br />
ICOMMAND jcommand TOKEN token ORDER.<br />
order* THE the LAST last THREE three BYTES<br />
bytes<br />
jof the table must be zeros*<br />
CMDTBL *WOR GOSUB-1<br />
.E:YT ♦BYT $E:O *B0<br />
fWOR<br />
. WClI~ GOTO-l<br />
GOTO-1<br />
• ♦BYT<br />
$M,: *AB<br />
.BYT 0,0,0<br />
JGOSUB PATCH ADDRESS<br />
; fGOSUB GOSUE: Tm(EN<br />
TOKEN<br />
IGOTO JGOTO PATCH ADDRESS<br />
; fGOTQ GCllO TOf(EN<br />
TOKEN<br />
(END OF TABLE<br />
;as an example of using the rom token interpreter,<br />
Ijwe WE INCLUDE include A a L.ISTING listing OF of A a PATCH patch THAT that PROVIDES<br />
provides<br />
jlabelled gosubs and gotos in applesoft basic*<br />
jthis code is from m»r» smith (compute,<br />
jfor the gosub patch, it is effectively a<br />
IREL.oCATIoN jrelocation OF of THE the INITIAL. initial PORTION portion OF of THE the<br />
IAPPLESOFT japplesoft GOSUB gosub CODE.<br />
code* THIS this ENABLES enables A a<br />
IMODIFICATION jmodification OF of THE the SECTION section OF of CODE code THAT that<br />
IJUMPS jjumps TO to THE the APPLESOFT applesoft GOTO goto CODE. code, where WHERE<br />
jthe effective change is made*<br />
JAPPLESOFT POINTERS<br />
CURLIN =$75 **75<br />
NGOSUB =$D7D2<br />
IDO SYNTAX ERROR<br />
ISET tSET UP FORCED JMP VIA RTS AND SET FLAG<br />
GOT ONE STA FLAG<br />
RTS<br />
IINITIALIZATION PATCH:<br />
ITHE ROM<br />
SUB-INTERPRETER.<br />
IFLAG COMMAND IN PROGRESS<br />
IEXECUTE USER PATCH<br />
INIT IT l..DA U'IC IL.OAD A \JMP AND<br />
I I<br />
ICoMMAND IN PROGE!:;S FLAG.<br />
RTS I I~ETUr(N TO BASIC<br />
I CDMMAND TAE:LE:<br />
IOF THE TABLE MUST BE ZEROS.<br />
CMDTBL<br />
lAS AN<br />
.WoR GoSUB-l<br />
.E:YT 0,0 , 0<br />
IGOSUB PATCH ADDRESS<br />
lEND OF TAE:LE<br />
EXAMPLE OF USING THE ROM TOKEN INTERPRETER,<br />
IL.ABEL.L.ED GOSUBS AND GOT OS IN APPLESOFT BASIC.<br />
ITHIS CODE IS FROM M.R. SMITH (COMPUTE, 12, 1981'.<br />
IFOR THE GOSUB PATCH, IT IS EFFECTIVEL.Y A<br />
ITHE EFFECTIVE CHANGE IS MADE.<br />
IAPPL.ESOFT POINTEHS AND ROUTINES:<br />
NGOSUB =$D7D2<br />
AND ROUTINES!<br />
ICURRENT JCURRENT LINE NUMBER<br />
f NORMAL GO SUE:<br />
INORMAL. COSUB