01.03.2014 Views

Section 2 - Commodore Computers

Section 2 - Commodore Computers

Section 2 - Commodore Computers

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!