Skip to content

Instantly share code, notes, and snippets.

@maly
Created December 23, 2018 10:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save maly/4acdd5e725ca42d03213a9a0551f7fe9 to your computer and use it in GitHub Desktop.
Save maly/4acdd5e725ca42d03213a9a0551f7fe9 to your computer and use it in GitHub Desktop.
OMEN Kilo
lda test
lda <test
lda >test
.org 100
test: db 0
.org 1
test0: db 0
.org $102
test1: db 0
.org $203
test2: db 0
.org $1000
tfr b,2
lda test0
lda test1
lda test2
setdp 1
lda test0
lda test1
lda test2
setdp 2
lda test0
lda test1
lda test2
setdp 257
lda test0
lda test1
lda test2
:0700000096649664B60064EB
:01006400009B
:00000001FF
:0100010000FE
:0101020000FC
:0102030000FA
:1010000096009601B60102B60203B600019602B63A
:101010000203B60001B601029603B60001B6010252
:03102000B6020312
:00000001FF
0000 96 64 LDA test
0002 96 64 LDA <test
0004 B6 00 64 LDA >test
0007 ;
0064 .ORG 100
0064 00 TEST: DB 0
TEST: 0064 DEFINED AT LINE 6
> USED AT LINE 1
> USED AT LINE 2
> USED AT LINE 3
0001 .ORG 1
0001 00 TEST0: DB 0
0102 .ORG $102
0102 00 TEST1: DB 0
0103 ;
0203 .ORG $203
0203 00 TEST2: DB 0
0204 ;
1000 .ORG $1000
1000 ;
1000 96 00 LDA 0a
1002 ;
1002 96 01 LDA test0
1004 B6 01 02 LDA test1
1007 B6 02 03 LDA test2
100A ;
100A SETDP 1
100A B6 00 01 LDA test0
100D 96 02 LDA test1
100F B6 02 03 LDA test2
1012 ;
1012 SETDP 2
1012 B6 00 01 LDA test0
1015 B6 01 02 LDA test1
1018 96 03 LDA test2
101A ;
101A ;
101A SETDP 257
101A B6 00 01 LDA test0
101D B6 01 02 LDA test1
1020 B6 02 03 LDA test2
TEST0: 0001 DEFINED AT LINE 2
> USED AT LINE 13
> USED AT LINE 18
> USED AT LINE 23
> USED AT LINE 29
TEST1: 0102 DEFINED AT LINE 4
> USED AT LINE 14
> USED AT LINE 19
> USED AT LINE 24
> USED AT LINE 30
TEST2: 0203 DEFINED AT LINE 7
> USED AT LINE 15
> USED AT LINE 20
> USED AT LINE 25
> USED AT LINE 31
S10600001F411288
S9030000FC
lda test
lda <test
lda >test
.org 100
test: db 0
:06000000A564A564A50043
:01006400009B
:00000001FF
0000 A5 64 LDA test
0002 A5 64 LDA <test
0004 A5 00 LDA >test
0006 ;
0064 .ORG 100
0064 00 TEST: DB 0
TEST: 0064 DEFINED AT LINE 6
> USED AT LINE 1
> USED AT LINE 2
> USED AT LINE 3
; Monitor vectors:
MRESET EQU $E000
MSERIN EQU $E003
MSEROUT EQU $E006
MPRINT2 EQU $E009
MPRINTX EQU $E00C
MPRIMM EQU $E00F
.ORG $100
.ENT $
; test 20
; here are your space:
TESTMOD:
jsr mprimm
.cstr "Hello folks",$d,$a
JSR hdtest
BEQ m68
JSR MPRIMM
.CSTR $0d,$0a,"Hi from HD6309",$0d,$0a
JMP MRESET
M68:
JSR MPRIMM
.CSTR $0d,$0a,"Hi from MC6809",$0d,$0a
JMP MRESET
HDTEST:
PSHS d
FDB $1043
CMPB 1,s
PULS d,pc
:10010000BDE00F48656C6C6F20666F6C6B730D0AF9
:1001100000BD01482719BDE00F0D0A48692066722D
:100120006F6D204844363330390D0A007EE000BD43
:10013000E00F0D0A48692066726F6D204D43363816
:1001400030390D0A007EE00034061043E161358647
:00000001FF
0000 ; Monitor vectors:
0000 MRESET: EQU $E000
0000 MSERIN: EQU $E003
0000 MSEROUT: EQU $E006
0000 MPRINT2: EQU $E009
0000 MPRINTX: EQU $E00C
0000 MPRIMM: EQU $E00F
0100 .ORG $100
0100 .ENT $
0100 ; test 20
0100 ; here are your space:
0100 TESTMOD:
0100 BD E0 0F JSR mprimm
0103 48 65 6C 6C 6F 20 66 6F 6C 6B 73 0D 0A 00 .CSTR "Hello folks",$d,$a
0111 BD 01 48 JSR hdtest
0114 27 19 BEQ m68
0116 BD E0 0F JSR MPRIMM
0119 0D 0A 48 69 20 66 72 6F 6D 20 48 44 36 33 30 39 0D 0A 00 .CSTR $0d,$0a,"Hi from HD6309",$0d,$0a
012C 7E E0 00 JMP MRESET
012F M68:
012F BD E0 0F JSR MPRIMM
0132 0D 0A 48 69 20 66 72 6F 6D 20 4D 43 36 38 30 39 0D 0A 00 .CSTR $0d,$0a,"Hi from MC6809",$0d,$0a
0145 7E E0 00 JMP MRESET
0148 HDTEST:
0148 34 06 PSHS d
014A 10 43 FDB $1043
014C E1 61 CMPB 1,s
014E 35 86 PULS d,pc
MRESET: E000 DEFINED AT LINE 2
> USED AT LINE 22
> USED AT LINE 26
MSERIN: E003 DEFINED AT LINE 3
MSEROUT: E006 DEFINED AT LINE 4
MPRINT2: E009 DEFINED AT LINE 5
MPRINTX: E00C DEFINED AT LINE 6
MPRIMM: E00F DEFINED AT LINE 7
> USED AT LINE 16
> USED AT LINE 20
> USED AT LINE 24
TESTMOD: 0100 DEFINED AT LINE 15
M68: 012F DEFINED AT LINE 23
> USED AT LINE 19
HDTEST: 0148 DEFINED AT LINE 28
> USED AT LINE 18
S113010000BD01372719BDE00F0D0A48692066726FDC
S1130110006D204844363330390D0A007EE000BDE0DF
S1130120000F0D0A48692066726F6D204D43363830D3
S112013000390D0A007EE00034061043E161358685
S9030000FC
.macro wait_until_bit_6
loop%%M:
IN A, %%1
BIT 6,A
JR Z,loop%%M
.endm
l000 ;test
lasky equ 22
lasky equ 55
db lasky
wait_until_bit_6 lasky
wait_until_bit_6 6
lasky equ 33
db lasky
wait_until_bit_6 lasky
:1000000037DB37CB7728FADB06CB7728FA21DB21E1
:04001000CB7728FA88
:00000001FF
0000 ;
0000 LASKY: EQU 22
0000 LASKY: EQU 55
0000 37 DB lasky
0001 ;
**MACRO UNROLL - WAIT_UNTIL_BIT_6
0001 LOOPM_5:
0001 DB 37 IN A,lasky
0003 CB 77 BIT 6,A
0005 28 FA JR Z,loopM_5
**MACRO UNROLL - WAIT_UNTIL_BIT_6
0007 LOOPM_6:
0007 DB 06 IN A,6
0009 CB 77 BIT 6,A
000B 28 FA JR Z,loopM_6
000D ;
000D LASKY: EQU 33
000D 21 DB lasky
**MACRO UNROLL - WAIT_UNTIL_BIT_6
000E LOOPM_10:
000E DB 21 IN A,lasky
0010 CB 77 BIT 6,A
0012 28 FA JR Z,loopM_10
LASKY: 0021 DEFINED AT LINE 15
> USED AT LINE 10
> USED AT LINE 3
> USED AT LINE 16
> USED AT LINE 3
LOOPM_5: 0001 DEFINED AT LINE 2
> USED AT LINE 5
LOOPM_6: 0007 DEFINED AT LINE 2
> USED AT LINE 5
LOOPM_10: 000E DEFINED AT LINE 2
> USED AT LINE 5
;NAM TB01V137
;* WRITTEN 20-OCT-77 BY JOHN BYRNS
;* REVISED 30-DEC-77
;* REVISED 18-JAN-78
;* REVISED 10-APR-78
;* REVISED 08-MAY-79 TO ELIMINATE USE OF SP
;* REVISED 24-JAN-80 TO USE 6801 ON CHIP RAM
;* REVISED 26-JAN-80 FOR NEW 6801 INSTRUCTIONS
;* REVISED 24-JUL-81 FOR WHISTON BOARD
;* REVISED 24-SEP-81 INCLUDE USER FUNCTION
;* REVISED 08-APR-82 MAKE STANDALONE INCLUDE HEX CONSTANTS AND MEM FUNCTION
;* REVISED 21-NOV-84 FOR 6809
;* REVISED FEB 94 ADAPTED TO SIMULATOR AND BUGFIXES BY L.C. BENSCHOP.
;*
.engine kilo
EOL: EQU $04
ETX: EQU $03
SPACE: EQU $20
CR: EQU $0D
LF: EQU $0A
BS: EQU $08
CAN: EQU $18
BELL: EQU $07
FILL: EQU $00
DEL: EQU $7F
BSIZE: EQU 73
STKCUS: EQU 48
;*
bACIA equ $83FE
RMCR EQU bACIA
TRCS EQU bACIA
RECEV EQU bACIA+1
TRANS EQU bACIA+1
CNTL1 EQU $03
CNTL2 EQU $15
RDRF EQU $01
ORFE EQU $20
TDRE EQU $02
;* EDIT THE FOLLOWING EQUATES TO REFLECT THE
;* DESIRED ROM AND RAM LAYOUT
LORAM EQU $0080 ;ADDRESS OF DIRECT PAGE SCRATCH RAM
BUFFER EQU $0200 ;ADDRESS OF MAIN RAM
RAMSIZ EQU $2000 ;SIZE OF MAIN RAM
ROMADR EQU $f000 ;ADDRESS OF TINY BASIC ROM
;*
RAMBEG EQU BUFFER+BSIZE
RAMEND EQU BUFFER+RAMSIZ
;*
RAMPAT EQU $AA0F
ROMPAT EQU $F055
;*
; ORG LORAM
.bsseg
.org 6
USRBAS: RMB 2
USRTOP: RMB 2
STKLIM: RMB 2
STKTOP: RMB 2
CURSOR: RMB 2
SAVESP: RMB 2
LINENB: RMB 2
SCRTCH: RMB 2
CHAR: RMB 2
ZONE: RMB 1
MODE: RMB 1
RESRVD: RMB 1
LOEND: EQU $
;*
.cseg
.ORG 0xfff0
;reserved
DW reset
;SWI3
DW reset
;SWI2
DW reset
;FIRQ
DW reset
;IRQ
DW reset
;SWI
DW reset
;NMI
DW reset
;RES
DW reset
.block
org $e400
@reset:
.ent $
BASIC: JMP SETUP
.cstr "MOD9BASIC"
WARMS LDS STKTOP
JSR INTEEE
BRA WMS05
SETUP LDS #RAMEND-52
SET03 STS STKTOP
JSR INTEEE
CLEAR LDD #RAMBEG
STD USRBAS
STD USRTOP
CLR02 STD STKLIM
WMS05 JSR CRLF
LDX #VSTR
JSR PUTSTR
CMDB LDS STKTOP
CLR MODE
JSR CRLF
LDX USRBAS
STX CURSOR
CMDE LDX #0000
STX LINENB
TST MODE
BNE CMD01
LDA #":"
JSR PUTCHR
CMD01 JSR GETLIN
JSR TSTNBR
BCC CMD02
BVS CMD05
JSR SKIPSP
CMPA #EOL
BEQ CMDE
JSR MSLINE
BRA CMDB
CMD02 PSHS X
LDX USRTOP
CMPX STKLIM
PULS X
BEQ CMD03
JMP ERRORR
CMD03 ADDD #0
BEQ CMD05
CMD04 PSHS D
SUBD #9999
PULS D
BHI CMD05
BSR EDITOR
BRA CMDE
CMD05 JMP ERRORS
VSTR DB "TINY V1.37"
FCB EOL
;******************************
;******************************
EDITOR PSHS D
JSR SKIPSP
STX SCRTCH
LDA 0,S
LDX CURSOR
CMPX USRTOP
BEQ ED00
CMPD 0,X
BCC ED01
ED00 LDX USRBAS
ED01 JSR FNDLIN
STX CURSOR
BCS ED04
STX SAVESP
LEAX 2,X
ED02 LDA ,X+
CMPA #EOL
BNE ED02
ED03 CMPX USRTOP
BEQ ED35
LDA ,X+
STX CHAR
LDX SAVESP
STA ,X+
STX SAVESP
LDX CHAR
BRA ED03
ED35 LDX SAVESP
STX USRTOP
STX STKLIM
ED04 LDX SCRTCH
LDB #-1
ED05 INCB
LDA ,X+
CMPA #EOL
BNE ED05
TSTB
BNE ED55
LEAS 2,S
RTS
ED55 LEAX -1,X
ADDB #4
ED06 LEAX -1,X
DECB
LDA 0,X
CMPA #SPACE
BEQ ED06
LDA #EOL
STA 1,X
CLRA
LDX USRTOP
STX CHAR
ADDD USRTOP
STD USRTOP
STD STKLIM
JSR TSTSTK
BCC ED07
STX USRTOP
STX STKLIM
JMP ERRORF
ED07 LDX USRTOP
ED08 STX SAVESP
LDX CHAR
CMPX CURSOR
BEQ ED09
LDA ,-X
STX CHAR
LDX SAVESP
STA ,-X
BRA ED08
ED09 PULS D
LDX CURSOR
STD ,X++
STX CHAR
ED10 LDX SCRTCH
LDA ,X+
STX SCRTCH
LDX CHAR
STA ,X+
STX CHAR
CMPA #EOL
BNE ED10
RTS
;******************************
;******************************
PUTS01 JSR PUTCHR
LEAX 1,X
PUTSTR LDA 0,X
CMPA #EOL
BNE PUTS01
RTS
;******************************
;******************************
CRLF LDX #CRLFST
BSR PUTSTR
CLR ZONE
RTS
CRLFST FCB CR,LF,DEL,FILL,FILL,FILL,EOL
;******************************
;******************************
ERRORF BSR ER01
DB "SORRY"
FCB EOL
ERRORS BSR ER01
DB "WHAT ?"
FCB EOL
ERRORR BSR ER01
DB "HOW ?"
FCB EOL
BREAK BSR ER01
DB "BREAK"
FCB EOL
END: BSR ER01
DB "STOP"
FCB EOL
ER01 BSR CRLF
LDA #BELL
JSR PUTCHR
LDD LINENB
JSR PRNT4
LDA #SPACE
JSR PUTCHR
PULS X
BSR PUTSTR
BSR CRLF
JMP CMDB
;******************************
;******************************
GL00 BSR CRLF
GETLIN LDX #BUFFER
GL03 JSR GETCHR
CMPA #SPACE
BCS GL05
CMPA #$7F
BEQ GL03
CMPX #BUFFER+BSIZE-1
BNE GL04
LDA #BELL
BRA GL02
GL04 STA ,X+
GL02 JSR PUTCHR
BRA GL03
GL05 CMPA #BS
BEQ GL07
CMPA #CAN
BEQ GL00
CMPA #LF
BEQ GL09
CMPA #CR
BNE GL03
TST MODE
BEQ GL06
JSR PUTCHR
BRA GL08
GL06 PSHS X
JSR CRLF
PULS X
GL08 LDA #EOL
STA 0,X
LDX #BUFFER
RTS
GL07 CMPX #BUFFER
BEQ GL03
LEAX -1,X
LDA #BS
JSR PUTCHR
LDA #SPACE
JSR PUTCHR
LDA #BS
BRA GL02
GL09 ORCC #$01
ROR MODE
BRA GL02
;******************************
;******************************
REM00 LEAX 1,X
REM BSR SKIPSP
CMPA #EOL
BNE REM00
ENDSMT JSR TSTEOL
ENDS02 LDA LINENB
ORA LINENB+1
BEQ REM09
REM05 CMPX USRTOP
BNE NXTLIN
JMP ERRORR
NXTLIN LDD ,X++
STD LINENB
MSLINE JSR TSTBRK
BSR IFAN
BCS IMPLET
PSHS D
REM09 RTS
IMPLET JMP LET
;******************************
;******************************
IFAN BSR SKIPSP
STX CURSOR
LDX #VERBT
FAN00: LDA ,X+
CMPA #EOL
BNE FAN04
LDX CURSOR
ORCC #$01
RTS
FAN04 STX CHAR
LDX CURSOR
STX SCRTCH
FAN05 LDX SCRTCH
CMPA 0,X
BNE FAN07
LEAX 1,X
STX SCRTCH
LDX CHAR
LDA ,X+
STX CHAR
CMPA #EOL
BNE FAN05
LDD 0,X
LDX SCRTCH
ANDCC #$FE
RTS
FAN07 LDX CHAR
FAN08 LDA ,X+
CMPA #EOL
BNE FAN08
LEAX 2,X
BRA FAN00
;******************************
;******************************
NXTNSP LEAX 1,X
SKIPSP LDA 0,X
CMPA #SPACE
BEQ NXTNSP
RTS
;******************************
;******************************
TSTHEX BSR TSTDIG
BCC TST05
CMPA #"A"
BCS TST03
CMPA #"F"
BHI TST03
SUBA #"A"-10
ANDCC #$FE
RTS
;******************************
;******************************
TSTLTR CMPA #"A"
BCS TST03
CMPA #"Z"
BLS TST05
TST03 ORCC #$01
RTS
;******************************
;******************************
TSTDIG CMPA #"0"
BCS TST03
CMPA #"9"
BHI TST03
SUBA #"0"
TST05 ANDCC #$FE
RTS
;******************************
;******************************
TSTVAR BSR SKIPSP
BSR TSTLTR
BCS TSTV03
TFR A,B
LDA 1,X
BSR TSTLTR
BCC TST03
LEAX 1,X
SUBB #"A"
ASLB
CLRA
ADDD STKTOP
TSTV02 ANDCC #$FE
TSTV03 RTS
;******************************
;******************************
USER JSR ARGONE
PSHS D
JSR SKIPSP
CMPA #","
BEQ USER03
CMPA #")"
ORCC #$01
BEQ USER05
USER02 JMP ERRORS
USER03 LEAX 1,X
JSR EXPR
PSHS A
JSR SKIPSP
CMPA #")"
PULS A
BNE USER02
ANDCC #$FE
USER05 LEAX 1,X
STX CURSOR
JSR [,S++]
LDX CURSOR
ANDCC #$FE
RTS
;******************************
;******************************
TSTSNB JSR SKIPSP
CMPA #"-"
BNE TSTNBR
LEAX 1,X
BSR TSTNBR
BCS TSN02
NEGA
NEGB
SBCA #0
ANDCC #$FC
TSN02 RTS
;******************************
;******************************
TSTNBR JSR SKIPSP
JSR TSTDIG
BCC TSTN02
CMPA #"$"
ORCC #$01
BNE TSTN09
TSTN20 LEAX 1,X
CLR ,-S
CLR ,-S
TSTN23 LDA 0,X
JSR TSTHEX
BCS TSTN07
LEAX 1,X
PSHS X
PSHS A
LDD 3,S
BITA #$F0
BNE TSTN11
ASLB
ROLA
ASLB
ROLA
ASLB
ROLA
ASLB
ROLA
ADDB ,S+
STD 2,S
PULS X
BRA TSTN23
TSTN02 LEAX 1,X
PSHS A
CLR ,-S
TSTN03 LDA 0,X
JSR TSTDIG
BCS TSTN07
LEAX 1,X
PSHS X
PSHS A
LDD 3,S
ASLB
ROLA
BVS TSTN11
ASLB
ROLA
BVS TSTN11
ADDD 3,S
BVS TSTN11
ASLB
ROLA
BVS TSTN11
ADDB 0,S
ADCA #0
BVS TSTN11
STD 3,S
LEAS 1,S
PULS X
BRA TSTN03
TSTN07 PULS D
ANDCC #$FE
TSTN09 ANDCC #$FD
RTS
TSTN11 LDX 1,S
LEAS 5,S
ORCC #$03
RTS
;******************************
;******************************
TSTSTK STS SAVESP
LDD SAVESP
SUBD #STKCUS
SUBD STKLIM
RTS
;******************************
;******************************
PEEK JSR PAREXP
PSHS D
PSHS X
LDB [2,S]
PULS X
LEAS 2,S
CLRA
RTS
;******************************
;******************************
POKE JSR PAREXP
PSHS D
JSR SKIPSP
CMPA #"="
BEQ POKE05
JMP ERRORS
POKE05 LEAX 1,X
JSR EXPR
JSR TSTEOL
PSHS X
STB [2,S]
PULS X
LEAS 2,S
JMP ENDS02
;******************************
;******************************
TSTFUN JSR SKIPSP
STX CURSOR
LDX #FUNT
JSR FAN00
BCS TSTF05
PSHS D
TSTF05 RTS
;******************************
;******************************
FUNT DB "USR"
FCB EOL
FDB USER
DB "PEEK"
FCB EOL
FDB PEEK
DB "MEM"
FCB EOL
FDB TSTSTK
FCB EOL
;******************************
;******************************
FLINE LDX USRBAS
FNDLIN CMPX USRTOP
BNE FND03
ORCC #$03
RTS
FND03 CMPD 0,X
BNE FND05
ANDCC #$FC
RTS
FND05 BCC FND07
ORCC #$01
ANDCC #$FD
RTS
FND07 PSHS A
LDA #EOL
LEAX 1,X
FND09 LEAX 1,X
CMPA 0,X
BNE FND09
PULS A
LEAX 1,X
BRA FNDLIN
;******************************
;******************************
RELEXP BSR EXPR
PSHS D
CLRB
JSR SKIPSP
CMPA #"="
BEQ REL06
CMPA #"<"
BNE REL03
LEAX 1,X
INCB
JSR SKIPSP
CMPA #">"
BNE REL05
LEAX 1,X
ADDB #4
BRA REL07
REL03 CMPA #">"
BNE EXPR06
LEAX 1,X
ADDB #4
JSR SKIPSP
REL05 CMPA #"="
BNE REL07
REL06 LEAX 1,X
ADDB #2
REL07 PSHS B
BSR EXPR
PSHS X
SUBD 3,S
TFR CC,A
LSRA
TFR A,B
ASLA
ASLA
PSHS B
ADDA ,S+
ANDA #$06
BNE REL08
INCA
REL08 CLRB
ANDA 2,S
BEQ REL09
COMB
REL09 CLRA
PULS X
LEAS 3,S
RTS
;******************************
;******************************
EXPR CLR ,-S
CLR ,-S
JSR SKIPSP
CMPA #"-"
BEQ EXPR05
CMPA #"+"
BNE EXPR03
EXPR02 LEAX 1,X
EXPR03 BSR TERM
EXPR04 ADDD 0,S
STD 0,S
JSR SKIPSP
CMPA #"+"
BEQ EXPR02
CMPA #"-"
BNE EXPR06
EXPR05 LEAX 1,X
BSR TERM
NEGA
NEGB
SBCA #0
BRA EXPR04
EXPR06 PULS D
RTS
;******************************
;******************************
TERM JSR FACT
PSHS D
TERM03 JSR SKIPSP
CMPA #"*"
BEQ TERM07
CMPA #"/"
BEQ TERM05
PULS D
RTS
TERM05 LEAX 1,X
BSR FACT
PSHS X
LEAX 2,S
PSHS D
EORA 0,X
JSR ABSX
LEAX 0,S
JSR ABSX
PSHS A
LDA #17
PSHS A
CLRA
CLRB
DIV05 SUBD 2,S
BCC DIV07
ADDD 2,S
ANDCC #$FE
BRA DIV09
DIV07 ORCC #$01
DIV09 ROL 7,S
ROL 6,S
ROLB
ROLA
DEC 0,S
BNE DIV05
LDA 1,S
LEAS 4,S
TSTA
BPL TERM06
LEAX 2,S
BSR NEGX
TERM06 PULS X
BRA TERM03
TERM07 LEAX 1,X
BSR FACT
MULT PSHS B
LDB 2,S
MUL
LDA 1,S
STB 1,S
LDB 0,S
MUL
LDA 2,S
STB 2,S
PULS B
MUL
ADDA 0,S
ADDA 1,S
STD 0,S
BRA TERM03
;******************************
;******************************
FACT JSR TSTVAR
BCS FACT03
PSHS X
TFR D,X
LDD 0,X
PULS X
FACT02 RTS
FACT03 JSR TSTNBR
BCC FACT02
JSR TSTFUN
BCC FACT02
PAREXP BSR ARGONE
PSHS A
JSR SKIPSP
CMPA #")"
PULS A
BNE FACT05
LEAX 1,X
RTS
FACT05 JMP ERRORS
;******************************
;******************************
ARGONE JSR TSTSTK
BCC FACT04
JMP ERRORF
FACT04 JSR SKIPSP
CMPA #"("
BNE FACT05
LEAX 1,X
JMP EXPR
;******************************
;******************************
ABSX TST 0,X
BPL NEG05
NEGX NEG 0,X
NEG 1,X
BCC NEG05
DEC 0,X
NEG05 RTS
;******************************
;******************************
TSTEOL PSHS A
JSR SKIPSP
CMPA #EOL
BEQ TEOL03
JMP ERRORS
TEOL03 LEAX 1,X
PULS A
RTS
;******************************
;******************************
LET JSR TSTVAR
BCC LET03
JMP ERRORS
LET03 PSHS D
JSR SKIPSP
CMPA #"="
BEQ LET05
JMP ERRORS
LET05 LEAX 1,X
JSR EXPR
BSR TSTEOL
STX CURSOR
PULS X
STD 0,X
LDX CURSOR
JMP ENDS02
;******************************
;******************************
IF: JSR RELEXP
TSTB
BEQ IF03
JMP MSLINE
IF03: JMP REM
;******************************
;******************************
GOTO JSR EXPR
BSR TSTEOL
JSR FLINE
BCS GOSB04
JMP NXTLIN
;******************************
;******************************
GOSUB JSR EXPR
BSR TSTEOL
STX CURSOR
JSR FLINE
BCC GOSB03
GOSB04 JMP ERRORR
GOSB03 JSR TSTSTK
BCC GOSB05
JMP ERRORF
GOSB05 LDD CURSOR
PSHS D
LDD LINENB
PSHS D
JSR NXTLIN
PULS D
STD LINENB
PULS X
JMP ENDS02
;******************************
;******************************
RETURN EQU TSTEOL
;******************************
;******************************
PRINT JSR SKIPSP
PR01 CMPA #","
BEQ PR05
CMPA #";"
BEQ PR07
CMPA #EOL
BEQ PR04
CMPA #$22
BNE PR02
LEAX 1,X
BSR PRNTQS
BRA PR03
PR02 JSR EXPR
PSHS X
BSR PRNTN
PULS X
PR03 JSR SKIPSP
CMPA #","
BEQ PR05
CMPA #";"
BEQ PR07
CMPA #EOL
BEQ PR04
JMP ERRORS
PR04 PSHS X
JSR CRLF
PULS X
BRA PR08
PR05 LDB #$7
PR06 LDA #SPACE
JSR PUTCHR
BITB ZONE
BNE PR06
PR07 LEAX 1,X
JSR SKIPSP
CMPA #EOL
BNE PR01
PR08 LEAX 1,X
JMP ENDS02
;*
;*
PRQ01 JSR PUTCHR
PRNTQS LDA ,X+
CMPA #EOL
BNE PRQ03
JMP ERRORS
PRQ03 CMPA #$22
BNE PRQ01
RTS
;*
PRNTN TSTA
BPL PRN03
NEGA
NEGB
SBCA #0
PSHS A
LDA #"-"
JSR PUTCHR
PULS A
PRN03 LDX #PRNPT-2
PRN05 LEAX 2,X
CMPD 0,X
BCC PRN07
CMPX #PRNPTO
BNE PRN05
PRN07 CLR CHAR
PRN09 CMPD 0,X
BCS PRN11
SUBD 0,X
INC CHAR
BRA PRN09
PRN11 PSHS A
LDA #"0"
ADDA CHAR
JSR PUTCHR
PULS A
CMPX #PRNPTO
BEQ PRN13
LEAX 2,X
BRA PRN07
PRN13 RTS
PRNPT FDB 10000
FDB 1000
FDB 100
FDB 10
PRNPTO FDB 1
;*
PRNT4 LDX #PRNPT+2
BRA PRN07
;******************************
;******************************
INPUT JSR TSTVAR
BCS IN11
PSHS D
STX CURSOR
IN03 LDA #"?"
JSR PUTCHR
JSR GETLIN
IN05 JSR SKIPSP
CMPA #EOL
BEQ IN03
JSR TSTSNB
BCC IN07
LDX #RMESS
JSR PUTSTR
JSR CRLF
BRA IN03
IN07 STX SCRTCH
PULS X
STD 0,X
LDX CURSOR
JSR SKIPSP
CMPA #","
BEQ IN09
JMP ENDSMT
IN09 LEAX 1,X
JSR TSTVAR
BCC IN13
IN11 JMP ERRORS
IN13 PSHS D
PSHS X
LDX SCRTCH
JSR SKIPSP
CMPA #","
BNE IN05
LEAX 1,X
BRA IN05
RMESS DB "RE-ENTER"
FCB EOL
;******************************
;******************************
RUN LDX STKTOP
LDA #52
RUN01 CLR ,X+
DECA
BNE RUN01
LDX USRBAS
JMP REM05
;******************************
;******************************
LIST JSR TSTNBR
BCC LIST03
CLRA
CLRB
STD CURSOR
LDA #$7F
BRA LIST07
LIST03 STD CURSOR
JSR SKIPSP
CMPA #","
BEQ LIST05
LDA CURSOR
BRA LIST07
LIST05 LEAX 1,X
JSR TSTNBR
BCC LIST07
JMP ERRORS
LIST07 JSR TSTEOL
PSHS D
LDD CURSOR
STX CURSOR
JSR FLINE
LIST09 CMPX USRTOP
BEQ LIST10
PULS D
CMPD 0,X
BCS LIST11
PSHS D
LDD ,X++
PSHS X
JSR PRNT4
PULS X
LDA #SPACE
JSR PUTCHR
JSR PUTSTR
LEAX 1,X
PSHS X
JSR CRLF
PULS X
JSR TSTBRK
BRA LIST09
LIST10 LEAS 2,S
LDA #ETX
JSR PUTCHR
LIST11 LDX CURSOR
JMP ENDS02
;******************************
;******************************
VERBT DB "LET"
FCB EOL
FDB LET
DB "IF"
FCB EOL
FDB IF
DB "GOTO"
FCB EOL
FDB GOTO
DB "GOSUB"
FCB EOL
FDB GOSUB
DB "RETURN"
FCB EOL
FDB RETURN
DB "POKE"
FCB EOL
FDB POKE
DB "PRINT"
FCB EOL
FDB PRINT
DB "INPUT"
FCB EOL
FDB INPUT
DB "REM"
FCB EOL
FDB REM
DB "STOP"
FCB EOL
FDB END
DB "END"
FCB EOL
FDB END
DB "RUN"
FCB EOL
FDB RUN
DB "LIST"
FCB EOL
FDB LIST
DB "NEW"
FCB EOL
FDB CLEAR
DB "?"
FCB EOL
FDB PRINT
FCB EOL
;******************************
;******************************
TSTBRK bsr BRKEEE
beq GETC05
GETCHR bsr INEEE
CMPA #ETX
BNE GETC05
JMP BREAK
GETC05 RTS
PUTCHR INC ZONE
JMP OUTEEE
;******************************
;******************************
INEEE BSR BRKEEE
BEQ INEEE
LDA RECEV
ANDA #$7F
RTS
OUTEEE PSHS A
OUT01 LDA TRCS
BITA #TDRE
BEQ OUT01
PULS A
STA TRANS
RTS
BRKEEE PSHS A
BRK03 LDA TRCS
BITA #ORFE
BEQ BRK05
LDA RECEV
BRA BRK03
BRK05 BITA #RDRF
PULS A
RTS
;*
LDA #CNTL1
STA RMCR
LDA #CNTL2
STA TRCS
INTEEE EQU $
RTS
;******************************
;******************************
.endblock
:10FFF000E400E400E400E400E400E400E400E400E1
:10E400007EE4154D4F443942415349430010DE0C20
:10E41000BDEBE7201310CE21CC10DF0CBDEBE7CC19
:10E420000249DD06DD08DD0ABDE53F8EE483BDE57A
:10E430003810DE0C0F19BDE53F9E069F0E8E0000C2
:10E440009F120D192605863ABDEBACBDE592BDE6DF
:10E45000EC240E292BBDE65D810427E1BDE60F20EB
:10E46000D034109E089C0A351027037EE55FC30058
:10E4700000270D340683270F350622048D1020BD9A
:10E480007EE55654494E592056312E333704340612
:10E49000BDE65D9F14A6609E0E9C08270510A30094
:10E4A00024029E06BDE7C69F0E25229F103002A6BD
:10E4B00080810426FA9C08270EA6809F169E10A72E
:10E4C000809F109E1620EE9E109F089F0A9E14C6E5
:10E4D000FF5CA680810426F95D2603326239301F75
:10E4E000CB04301F5AA600812027F78604A7014FCE
:10E4F0009E089F16D308DD08DD0ABDE76424079F48
:10E50000089F0A7EE54E9E089F109E169C0E270AC5
:10E51000A6829F169E10A78220EE35069E0EED81E4
:10E520009F169E14A6809F149E16A7809F16810496
:10E5300026F039BDEBAC3001A600810426F5398EFA
:10E54000E5478DF40F18390D0A7F000000048D2671
:10E55000534F525259048D1E57484154203F048D49
:10E5600015484F57203F048D0D425245414B048DB5
:10E570000553544F50048DC78607BDEBACDC12BD6C
:10E58000EA608620BDEBAC35108DAD8DB27EE431F6
:10E590008DAD8E0200BDEBA281202514817F27F571
:10E5A0008C0248260486072002A780BDEBAC20E53C
:10E5B00081082724811827D8810A2731810D26D583
:10E5C0000D192705BDEBAC20073410BDE53F351014
:10E5D0008604A7008E0200398C020027B8301F86FF
:10E5E00008BDEBAC8620BDEBAC860820BE1A010648
:10E5F0001920B830018D66810426F8BDE9339612E2
:10E600009A1327149C0826037EE55FEC81DD12BD7A
:10E61000EB9E8D0825033406397EE9448D3F9F0E1D
:10E620008EEB39A680810426059E0E1A01399F16AD
:10E630009E0E9F149E14A100261530019F149E1655
:10E64000A6809F16810426ECEC009E141CFE399EC9
:10E6500016A680810426FA300220C83001A6008167
:10E660002027F8398D1A2422814125118146220D57
:10E6700080371CFE3981412504815A230D1A013946
:10E68000813025F9813922F580301CFE398DCE8DFF
:10E69000E425121F89A6018DDC24E23001C0415817
:10E6A0004FD30C1CFE39BDE9123406BDE65D812C4A
:10E6B000270981291A0127157EE5563001BDE84555
:10E6C0003402BDE65D8129350226ED1CFE30019F36
:10E6D0000EADF19E0E1CFE39BDE65D812D260D307E
:10E6E000018D092506405082001CFC39BDE65DBD48
:10E6F000E680242F81241A01266030016FE26FE248
:10E70000A600BDE664254F300134103402EC638569
:10E71000F0264A5849584958495849EBE0ED6235C6
:10E720001020DD300134026FE2A600BDE680252610
:10E73000300134103402EC63584929215849291D0D
:10E74000E363291958492915EB608900290FED6306
:10E750003261351020D335061CFE1CFD39AE613206
:10E76000651A033910DF10DC10830030930A39BDBD
:10E77000E8FF34063410E672351032624F39BDE8D6
:10E78000FF3406BDE65D813D27037EE5563001BDC1
:10E79000E845BDE9333410E772351032627EE5FE9C
:10E7A000BDE65D9F0E8EE7B0BDE623250234063937
:10E7B00055535204E6A65045454B04E76F4D454D71
:10E7C00004E764049E069C0826031A033910A3007C
:10E7D00026031CFC3924051A011CFD393402860469
:10E7E00030013001A10026FA3502300120D88D55C4
:10E7F00034065FBDE65D813D2723813C2610300154
:10E800005CBDE65D813E26113001CB042013813EC4
:10E81000265F3001CB04BDE65D813D26043001CB8F
:10E820000234048D203410A3631FA8441F89484874
:10E830003404ABE0840626014C5FA4622701534FE9
:10E8400035103263396FE26FE2BDE65D812D271727
:10E85000812B260230018D1CE360ED60BDE65D81F9
:10E860002B27F1812D260A30018D0940508200208E
:10E87000E7350639BDE8E73406BDE65D812A27485D
:10E88000812F270335063930018D5C341030623416
:10E8900006A800BDE9263060BDE9263402861134A1
:10E8A000024F5FA3622406E3621CFE20021A016984
:10E8B00067696659496A6026EAA66132644D2A048E
:10E8C00030628D66351020B130018D1B3404E66254
:10E8D0003DA661E761E6603DA662E76235043DABB7
:10E8E00060AB61ED602092BDE68D250934101F01FB
:10E8F000EC00351039BDE6EC24FABDE7A024F58D17
:10E90000113402BDE65D8129350226033001397ECE
:10E91000E556BDE76424037EE54EBDE65D8128260D
:10E92000EE30017EE8456D002A0860006001240297
:10E930006A00393402BDE65D810427037EE5563066
:10E9400001350239BDE68D24037EE5563406BDE669
:10E950005D813D27037EE5563001BDE8458DD49F9E
:10E960000E3510ED009E0E7EE5FEBDE7EE5D270341
:10E970007EE60F7EE5F5BDE8458DB8BDE7C4250F01
:10E980007EE60BBDE8458DAB9F0EBDE7C424037E3C
:10E99000E55FBDE76424037EE54EDC0E3406DC1241
:10E9A0003406BDE60B3506DD1235107EE5FEBDE60C
:10E9B0005D812C2736813B273D8104272581222636
:10E9C0000630018D422009BDE84534108D473510D1
:10E9D000BDE65D812C2714813B271B810427037E24
:10E9E000E5563410BDE53F35102014C6078620BD1E
:10E9F000EBACD51826F73001BDE65D810426B230B8
:10EA0000017EE5FEBDEBACA680810426037EE556C3
:10EA1000812226F0394D2A0D405082003402862D85
:10EA2000BDEBAC35028EEA54300210A30024058CF5
:10EA3000EA5E26F40F1610A3002506A3000C16208C
:10EA4000F5340286309B16BDEBAC35028CEA5E27AE
:10EA500004300220DF39271003E80064000A0001B7
:10EA60008EEA5820CFBDE68D253C34069F0E863FAA
:10EA7000BDEBACBDE592BDE65D810427F1BDE6D8F6
:10EA8000240B8EEABABDE538BDE53F20E19F143581
:10EA900010ED009E0EBDE65D812C27037EE5FB3068
:10EAA00001BDE68D24037EE556340634109E14BD68
:10EAB000E65D812C26C0300120BC52452D454E54C8
:10EAC0004552049E0C86346F804A26FB9E067EE6E5
:10EAD00004BDE6EC24084F5FDD0E867F2017DD0EB7
:10EAE000BDE65D812C2704960E200A3001BDE6ECC0
:10EAF00024037EE556BDE9333406DC0E9F0EBDE7E8
:10EB0000C49C082728350610A30025283406EC816C
:10EB10003410BDEA6035108620BDEBACBDE5383061
:10EB2000013410BDE53F3510BDEB9E20D432628626
:10EB300003BDEBAC9E0E7EE5FE4C455404E9444912
:10EB40004604E96A474F544F04E976474F5355420C
:10EB500004E98352455455524E04E933504F4B4516
:10EB600004E77E5052494E5404E9AE494E50555484
:10EB700004EA6552454D04E5F553544F5004E56FE2
:10EB8000454E4404E56F52554E04EAC34C49535474
:10EB900004EAD14E455704E41F3F04E9AE048D2A30
:10EBA00027098D0D810326037EE567390C187EEB5E
:10EBB000BB8D1727FCB683FF847F393402B683FEF2
:10EBC000850227F93502B783FF393402B683FE8503
:10EBD000202705B683FF20F485013502398603B767
:08EBE00083FE8615B783FE39A0
:00000001FF
0000 ;NAM TB01V137
0000 ;* WRITTEN 20-OCT-77 BY JOHN BYRNS
0000 ;* REVISED 30-DEC-77
0000 ;* REVISED 18-JAN-78
0000 ;* REVISED 10-APR-78
0000 ;* REVISED 08-MAY-79 TO ELIMINATE USE OF SP
0000 ;* REVISED 24-JAN-80 TO USE 6801 ON CHIP RAM
0000 ;* REVISED 26-JAN-80 FOR NEW 6801 INSTRUCTIONS
0000 ;* REVISED 24-JUL-81 FOR WHISTON BOARD
0000 ;* REVISED 24-SEP-81 INCLUDE USER FUNCTION
0000 ;* REVISED 08-APR-82 MAKE STANDALONE INCLUDE HEX CONSTANTS AND MEM FUNCTION
0000 ;* REVISED 21-NOV-84 FOR 6809
0000 ;* REVISED FEB 94 ADAPTED TO SIMULATOR AND BUGFIXES BY L.C. BENSCHOP.
0000 ;*
0000 .ENGINE kilo
0000 EOL: EQU $04
0000 ETX: EQU $03
0000 SPACE: EQU $20
0000 CR: EQU $0D
0000 LF: EQU $0A
0000 BS: EQU $08
0000 CAN: EQU $18
0000 BELL: EQU $07
0000 FILL: EQU $00
0000 DEL: EQU $7F
0000 BSIZE: EQU 73
0000 STKCUS: EQU 48
0000 ;*
0000 BACIA: EQU $83FE
0000 RMCR: EQU bACIA
0000 TRCS: EQU bACIA
0000 RECEV: EQU bACIA+1
0000 TRANS: EQU bACIA+1
0000 CNTL1: EQU $03
0000 CNTL2: EQU $15
0000 RDRF: EQU $01
0000 ORFE: EQU $20
0000 TDRE: EQU $02
0000 ;* EDIT THE FOLLOWING EQUATES TO REFLECT THE
0000 ;* DESIRED ROM AND RAM LAYOUT
0000 LORAM: EQU $0080
0000 BUFFER: EQU $0200
0000 RAMSIZ: EQU $2000
0000 ROMADR: EQU $f000
0000 ;*
0000 RAMBEG: EQU BUFFER+BSIZE
0000 RAMEND: EQU BUFFER+RAMSIZ
0000 ;*
0000 RAMPAT: EQU $AA0F
0000 ROMPAT: EQU $F055
0000 ;*
0000 ; ORG LORAM
0000 .BSSEG
0006 .ORG 6
0006 USRBAS: RMB 2
0008 USRTOP: RMB 2
000A STKLIM: RMB 2
000C STKTOP: RMB 2
000E CURSOR: RMB 2
0010 SAVESP: RMB 2
0012 LINENB: RMB 2
0014 SCRTCH: RMB 2
0016 CHAR: RMB 2
0018 ZONE: RMB 1
0019 MODE: RMB 1
001A RESRVD: RMB 1
001B LOEND: EQU $
001B ;*
0000 .CSEG
FFF0 .ORG 0xfff0
FFF0 ;reserved
FFF0 E4 00 DW reset
FFF2 ;SWI3
FFF2 E4 00 DW reset
FFF4 ;SWI2
FFF4 E4 00 DW reset
FFF6 ;FIRQ
FFF6 E4 00 DW reset
FFF8 ;IRQ
FFF8 E4 00 DW reset
FFFA ;SWI
FFFA E4 00 DW reset
FFFC ;NMI
FFFC E4 00 DW reset
FFFE ;RES
FFFE E4 00 DW reset
10000 .BLOCK
E400 .ORG $e400
E400 RESET:
E400 .ENT $
E400 7E E4 15 BASIC: JMP SETUP
E403 4D 4F 44 39 42 41 53 49 43 00 .CSTR "MOD9BASIC"
E40D 10 DE 0C WARMS: LDS STKTOP
E410 BD EB E7 JSR INTEEE
E413 20 13 BRA WMS05
E415 10 CE 21 CC SETUP: LDS #RAMEND-52
E419 10 DF 0C SET03: STS STKTOP
E41C BD EB E7 JSR INTEEE
E41F CC 02 49 CLEAR: LDD #RAMBEG
E422 DD 06 STD USRBAS
E424 DD 08 STD USRTOP
E426 DD 0A CLR02: STD STKLIM
E428 BD E5 3F WMS05: JSR CRLF
E42B 8E E4 83 LDX #VSTR
E42E BD E5 38 JSR PUTSTR
E431 10 DE 0C CMDB: LDS STKTOP
E434 0F 19 CLR MODE
E436 BD E5 3F JSR CRLF
E439 9E 06 LDX USRBAS
E43B 9F 0E STX CURSOR
E43D 8E 00 00 CMDE: LDX #0000
E440 9F 12 STX LINENB
E442 0D 19 TST MODE
E444 26 05 BNE CMD01
E446 86 3A LDA #":"
E448 BD EB AC JSR PUTCHR
E44B BD E5 92 CMD01: JSR GETLIN
E44E BD E6 EC JSR TSTNBR
E451 24 0E BCC CMD02
E453 29 2B BVS CMD05
E455 BD E6 5D JSR SKIPSP
E458 81 04 CMPA #EOL
E45A 27 E1 BEQ CMDE
E45C BD E6 0F JSR MSLINE
E45F 20 D0 BRA CMDB
E461 34 10 CMD02: PSHS X
E463 9E 08 LDX USRTOP
E465 9C 0A CMPX STKLIM
E467 35 10 PULS X
E469 27 03 BEQ CMD03
E46B 7E E5 5F JMP ERRORR
E46E C3 00 00 CMD03: ADDD #0
E471 27 0D BEQ CMD05
E473 34 06 CMD04: PSHS D
E475 83 27 0F SUBD #9999
E478 35 06 PULS D
E47A 22 04 BHI CMD05
E47C 8D 10 BSR EDITOR
E47E 20 BD BRA CMDE
E480 7E E5 56 CMD05: JMP ERRORS
E483 54 49 4E 59 20 56 31 2E 33 37 VSTR: DB "TINY V1.37"
E48D 04 FCB EOL
E48E ;******************************
E48E ;******************************
E48E 34 06 EDITOR: PSHS D
E490 BD E6 5D JSR SKIPSP
E493 9F 14 STX SCRTCH
E495 A6 60 LDA 0,S
E497 9E 0E LDX CURSOR
E499 9C 08 CMPX USRTOP
E49B 27 05 BEQ ED00
E49D 10 A3 00 CMPD 0,X
E4A0 24 02 BCC ED01
E4A2 9E 06 ED00: LDX USRBAS
E4A4 BD E7 C6 ED01: JSR FNDLIN
E4A7 9F 0E STX CURSOR
E4A9 25 22 BCS ED04
E4AB 9F 10 STX SAVESP
E4AD 30 02 LEAX 2,X
E4AF A6 80 ED02: LDA ,X+
E4B1 81 04 CMPA #EOL
E4B3 26 FA BNE ED02
E4B5 9C 08 ED03: CMPX USRTOP
E4B7 27 0E BEQ ED35
E4B9 A6 80 LDA ,X+
E4BB 9F 16 STX CHAR
E4BD 9E 10 LDX SAVESP
E4BF A7 80 STA ,X+
E4C1 9F 10 STX SAVESP
E4C3 9E 16 LDX CHAR
E4C5 20 EE BRA ED03
E4C7 9E 10 ED35: LDX SAVESP
E4C9 9F 08 STX USRTOP
E4CB 9F 0A STX STKLIM
E4CD 9E 14 ED04: LDX SCRTCH
E4CF C6 FF LDB #-1
E4D1 5C ED05: INCB
E4D2 A6 80 LDA ,X+
E4D4 81 04 CMPA #EOL
E4D6 26 F9 BNE ED05
E4D8 5D TSTB
E4D9 26 03 BNE ED55
E4DB 32 62 LEAS 2,S
E4DD 39 RTS
E4DE 30 1F ED55: LEAX -1,X
E4E0 CB 04 ADDB #4
E4E2 30 1F ED06: LEAX -1,X
E4E4 5A DECB
E4E5 A6 00 LDA 0,X
E4E7 81 20 CMPA #SPACE
E4E9 27 F7 BEQ ED06
E4EB 86 04 LDA #EOL
E4ED A7 01 STA 1,X
E4EF 4F CLRA
E4F0 9E 08 LDX USRTOP
E4F2 9F 16 STX CHAR
E4F4 D3 08 ADDD USRTOP
E4F6 DD 08 STD USRTOP
E4F8 DD 0A STD STKLIM
E4FA BD E7 64 JSR TSTSTK
E4FD 24 07 BCC ED07
E4FF 9F 08 STX USRTOP
E501 9F 0A STX STKLIM
E503 7E E5 4E JMP ERRORF
E506 9E 08 ED07: LDX USRTOP
E508 9F 10 ED08: STX SAVESP
E50A 9E 16 LDX CHAR
E50C 9C 0E CMPX CURSOR
E50E 27 0A BEQ ED09
E510 A6 82 LDA ,-X
E512 9F 16 STX CHAR
E514 9E 10 LDX SAVESP
E516 A7 82 STA ,-X
E518 20 EE BRA ED08
E51A 35 06 ED09: PULS D
E51C 9E 0E LDX CURSOR
E51E ED 81 STD ,X++
E520 9F 16 STX CHAR
E522 9E 14 ED10: LDX SCRTCH
E524 A6 80 LDA ,X+
E526 9F 14 STX SCRTCH
E528 9E 16 LDX CHAR
E52A A7 80 STA ,X+
E52C 9F 16 STX CHAR
E52E 81 04 CMPA #EOL
E530 26 F0 BNE ED10
E532 39 RTS
E533 ;******************************
E533 ;******************************
E533 BD EB AC PUTS01: JSR PUTCHR
E536 30 01 LEAX 1,X
E538 A6 00 PUTSTR: LDA 0,X
E53A 81 04 CMPA #EOL
E53C 26 F5 BNE PUTS01
E53E 39 RTS
E53F ;******************************
E53F ;******************************
E53F 8E E5 47 CRLF: LDX #CRLFST
E542 8D F4 BSR PUTSTR
E544 0F 18 CLR ZONE
E546 39 RTS
E547 0D 0A 7F 00 00 00 04 CRLFST: FCB CR,LF,DEL,FILL,FILL,FILL,EOL
E54E ;******************************
E54E ;******************************
E54E 8D 26 ERRORF: BSR ER01
E550 53 4F 52 52 59 DB "SORRY"
E555 04 FCB EOL
E556 8D 1E ERRORS: BSR ER01
E558 57 48 41 54 20 3F DB "WHAT ?"
E55E 04 FCB EOL
E55F 8D 15 ERRORR: BSR ER01
E561 48 4F 57 20 3F DB "HOW ?"
E566 04 FCB EOL
E567 8D 0D BREAK: BSR ER01
E569 42 52 45 41 4B DB "BREAK"
E56E 04 FCB EOL
E56F 8D 05 END: BSR ER01
E571 53 54 4F 50 DB "STOP"
E575 04 FCB EOL
E576 8D C7 ER01: BSR CRLF
E578 86 07 LDA #BELL
E57A BD EB AC JSR PUTCHR
E57D DC 12 LDD LINENB
E57F BD EA 60 JSR PRNT4
E582 86 20 LDA #SPACE
E584 BD EB AC JSR PUTCHR
E587 35 10 PULS X
E589 8D AD BSR PUTSTR
E58B 8D B2 BSR CRLF
E58D 7E E4 31 JMP CMDB
E590 ;******************************
E590 ;******************************
E590 8D AD GL00: BSR CRLF
E592 8E 02 00 GETLIN: LDX #BUFFER
E595 BD EB A2 GL03: JSR GETCHR
E598 81 20 CMPA #SPACE
E59A 25 14 BCS GL05
E59C 81 7F CMPA #$7F
E59E 27 F5 BEQ GL03
E5A0 8C 02 48 CMPX #BUFFER+BSIZE-1
E5A3 26 04 BNE GL04
E5A5 86 07 LDA #BELL
E5A7 20 02 BRA GL02
E5A9 A7 80 GL04: STA ,X+
E5AB BD EB AC GL02: JSR PUTCHR
E5AE 20 E5 BRA GL03
E5B0 81 08 GL05: CMPA #BS
E5B2 27 24 BEQ GL07
E5B4 81 18 CMPA #CAN
E5B6 27 D8 BEQ GL00
E5B8 81 0A CMPA #LF
E5BA 27 31 BEQ GL09
E5BC 81 0D CMPA #CR
E5BE 26 D5 BNE GL03
E5C0 0D 19 TST MODE
E5C2 27 05 BEQ GL06
E5C4 BD EB AC JSR PUTCHR
E5C7 20 07 BRA GL08
E5C9 34 10 GL06: PSHS X
E5CB BD E5 3F JSR CRLF
E5CE 35 10 PULS X
E5D0 86 04 GL08: LDA #EOL
E5D2 A7 00 STA 0,X
E5D4 8E 02 00 LDX #BUFFER
E5D7 39 RTS
E5D8 8C 02 00 GL07: CMPX #BUFFER
E5DB 27 B8 BEQ GL03
E5DD 30 1F LEAX -1,X
E5DF 86 08 LDA #BS
E5E1 BD EB AC JSR PUTCHR
E5E4 86 20 LDA #SPACE
E5E6 BD EB AC JSR PUTCHR
E5E9 86 08 LDA #BS
E5EB 20 BE BRA GL02
E5ED 1A 01 GL09: ORCC #$01
E5EF 06 19 ROR MODE
E5F1 20 B8 BRA GL02
E5F3 ;******************************
E5F3 ;******************************
E5F3 30 01 REM00: LEAX 1,X
E5F5 8D 66 REM: BSR SKIPSP
E5F7 81 04 CMPA #EOL
E5F9 26 F8 BNE REM00
E5FB BD E9 33 ENDSMT: JSR TSTEOL
E5FE 96 12 ENDS02: LDA LINENB
E600 9A 13 ORA LINENB+1
E602 27 14 BEQ REM09
E604 9C 08 REM05: CMPX USRTOP
E606 26 03 BNE NXTLIN
E608 7E E5 5F JMP ERRORR
E60B EC 81 NXTLIN: LDD ,X++
E60D DD 12 STD LINENB
E60F BD EB 9E MSLINE: JSR TSTBRK
E612 8D 08 BSR IFAN
E614 25 03 BCS IMPLET
E616 34 06 PSHS D
E618 39 REM09: RTS
E619 7E E9 44 IMPLET: JMP LET
E61C ;******************************
E61C ;******************************
E61C 8D 3F IFAN: BSR SKIPSP
E61E 9F 0E STX CURSOR
E620 8E EB 39 LDX #VERBT
E623 A6 80 FAN00: LDA ,X+
E625 81 04 CMPA #EOL
E627 26 05 BNE FAN04
E629 9E 0E LDX CURSOR
E62B 1A 01 ORCC #$01
E62D 39 RTS
E62E 9F 16 FAN04: STX CHAR
E630 9E 0E LDX CURSOR
E632 9F 14 STX SCRTCH
E634 9E 14 FAN05: LDX SCRTCH
E636 A1 00 CMPA 0,X
E638 26 15 BNE FAN07
E63A 30 01 LEAX 1,X
E63C 9F 14 STX SCRTCH
E63E 9E 16 LDX CHAR
E640 A6 80 LDA ,X+
E642 9F 16 STX CHAR
E644 81 04 CMPA #EOL
E646 26 EC BNE FAN05
E648 EC 00 LDD 0,X
E64A 9E 14 LDX SCRTCH
E64C 1C FE ANDCC #$FE
E64E 39 RTS
E64F 9E 16 FAN07: LDX CHAR
E651 A6 80 FAN08: LDA ,X+
E653 81 04 CMPA #EOL
E655 26 FA BNE FAN08
E657 30 02 LEAX 2,X
E659 20 C8 BRA FAN00
E65B ;******************************
E65B ;******************************
E65B 30 01 NXTNSP: LEAX 1,X
E65D A6 00 SKIPSP: LDA 0,X
E65F 81 20 CMPA #SPACE
E661 27 F8 BEQ NXTNSP
E663 39 RTS
E664 ;******************************
E664 ;******************************
E664 8D 1A TSTHEX: BSR TSTDIG
E666 24 22 BCC TST05
E668 81 41 CMPA #"A"
E66A 25 11 BCS TST03
E66C 81 46 CMPA #"F"
E66E 22 0D BHI TST03
E670 80 37 SUBA #"A"-10
E672 1C FE ANDCC #$FE
E674 39 RTS
E675 ;******************************
E675 ;******************************
E675 81 41 TSTLTR: CMPA #"A"
E677 25 04 BCS TST03
E679 81 5A CMPA #"Z"
E67B 23 0D BLS TST05
E67D 1A 01 TST03: ORCC #$01
E67F 39 RTS
E680 ;******************************
E680 ;******************************
E680 81 30 TSTDIG: CMPA #"0"
E682 25 F9 BCS TST03
E684 81 39 CMPA #"9"
E686 22 F5 BHI TST03
E688 80 30 SUBA #"0"
E68A 1C FE TST05: ANDCC #$FE
E68C 39 RTS
E68D ;******************************
E68D ;******************************
E68D 8D CE TSTVAR: BSR SKIPSP
E68F 8D E4 BSR TSTLTR
E691 25 12 BCS TSTV03
E693 1F 89 TFR A,B
E695 A6 01 LDA 1,X
E697 8D DC BSR TSTLTR
E699 24 E2 BCC TST03
E69B 30 01 LEAX 1,X
E69D C0 41 SUBB #"A"
E69F 58 ASLB
E6A0 4F CLRA
E6A1 D3 0C ADDD STKTOP
E6A3 1C FE TSTV02: ANDCC #$FE
E6A5 39 TSTV03: RTS
E6A6 ;******************************
E6A6 ;******************************
E6A6 BD E9 12 USER: JSR ARGONE
E6A9 34 06 PSHS D
E6AB BD E6 5D JSR SKIPSP
E6AE 81 2C CMPA #","
E6B0 27 09 BEQ USER03
E6B2 81 29 CMPA #")"
E6B4 1A 01 ORCC #$01
E6B6 27 15 BEQ USER05
E6B8 7E E5 56 USER02: JMP ERRORS
E6BB 30 01 USER03: LEAX 1,X
E6BD BD E8 45 JSR EXPR
E6C0 34 02 PSHS A
E6C2 BD E6 5D JSR SKIPSP
E6C5 81 29 CMPA #")"
E6C7 35 02 PULS A
E6C9 26 ED BNE USER02
E6CB 1C FE ANDCC #$FE
E6CD 30 01 USER05: LEAX 1,X
E6CF 9F 0E STX CURSOR
E6D1 AD F1 JSR [,S++]
E6D3 9E 0E LDX CURSOR
E6D5 1C FE ANDCC #$FE
E6D7 39 RTS
E6D8 ;******************************
E6D8 ;******************************
E6D8 BD E6 5D TSTSNB: JSR SKIPSP
E6DB 81 2D CMPA #"-"
E6DD 26 0D BNE TSTNBR
E6DF 30 01 LEAX 1,X
E6E1 8D 09 BSR TSTNBR
E6E3 25 06 BCS TSN02
E6E5 40 NEGA
E6E6 50 NEGB
E6E7 82 00 SBCA #0
E6E9 1C FC ANDCC #$FC
E6EB 39 TSN02: RTS
E6EC ;******************************
E6EC ;******************************
E6EC BD E6 5D TSTNBR: JSR SKIPSP
E6EF BD E6 80 JSR TSTDIG
E6F2 24 2F BCC TSTN02
E6F4 81 24 CMPA #"$"
E6F6 1A 01 ORCC #$01
E6F8 26 60 BNE TSTN09
E6FA 30 01 TSTN20: LEAX 1,X
E6FC 6F E2 CLR ,-S
E6FE 6F E2 CLR ,-S
E700 A6 00 TSTN23: LDA 0,X
E702 BD E6 64 JSR TSTHEX
E705 25 4F BCS TSTN07
E707 30 01 LEAX 1,X
E709 34 10 PSHS X
E70B 34 02 PSHS A
E70D EC 63 LDD 3,S
E70F 85 F0 BITA #$F0
E711 26 4A BNE TSTN11
E713 58 ASLB
E714 49 ROLA
E715 58 ASLB
E716 49 ROLA
E717 58 ASLB
E718 49 ROLA
E719 58 ASLB
E71A 49 ROLA
E71B EB E0 ADDB ,S+
E71D ED 62 STD 2,S
E71F 35 10 PULS X
E721 20 DD BRA TSTN23
E723 30 01 TSTN02: LEAX 1,X
E725 34 02 PSHS A
E727 6F E2 CLR ,-S
E729 A6 00 TSTN03: LDA 0,X
E72B BD E6 80 JSR TSTDIG
E72E 25 26 BCS TSTN07
E730 30 01 LEAX 1,X
E732 34 10 PSHS X
E734 34 02 PSHS A
E736 EC 63 LDD 3,S
E738 58 ASLB
E739 49 ROLA
E73A 29 21 BVS TSTN11
E73C 58 ASLB
E73D 49 ROLA
E73E 29 1D BVS TSTN11
E740 E3 63 ADDD 3,S
E742 29 19 BVS TSTN11
E744 58 ASLB
E745 49 ROLA
E746 29 15 BVS TSTN11
E748 EB 60 ADDB 0,S
E74A 89 00 ADCA #0
E74C 29 0F BVS TSTN11
E74E ED 63 STD 3,S
E750 32 61 LEAS 1,S
E752 35 10 PULS X
E754 20 D3 BRA TSTN03
E756 35 06 TSTN07: PULS D
E758 1C FE ANDCC #$FE
E75A 1C FD TSTN09: ANDCC #$FD
E75C 39 RTS
E75D AE 61 TSTN11: LDX 1,S
E75F 32 65 LEAS 5,S
E761 1A 03 ORCC #$03
E763 39 RTS
E764 ;******************************
E764 ;******************************
E764 10 DF 10 TSTSTK: STS SAVESP
E767 DC 10 LDD SAVESP
E769 83 00 30 SUBD #STKCUS
E76C 93 0A SUBD STKLIM
E76E 39 RTS
E76F ;******************************
E76F ;******************************
E76F BD E8 FF PEEK: JSR PAREXP
E772 34 06 PSHS D
E774 34 10 PSHS X
E776 E6 72 LDB [2,S]
E778 35 10 PULS X
E77A 32 62 LEAS 2,S
E77C 4F CLRA
E77D 39 RTS
E77E ;******************************
E77E ;******************************
E77E BD E8 FF POKE: JSR PAREXP
E781 34 06 PSHS D
E783 BD E6 5D JSR SKIPSP
E786 81 3D CMPA #"="
E788 27 03 BEQ POKE05
E78A 7E E5 56 JMP ERRORS
E78D 30 01 POKE05: LEAX 1,X
E78F BD E8 45 JSR EXPR
E792 BD E9 33 JSR TSTEOL
E795 34 10 PSHS X
E797 E7 72 STB [2,S]
E799 35 10 PULS X
E79B 32 62 LEAS 2,S
E79D 7E E5 FE JMP ENDS02
E7A0 ;******************************
E7A0 ;******************************
E7A0 BD E6 5D TSTFUN: JSR SKIPSP
E7A3 9F 0E STX CURSOR
E7A5 8E E7 B0 LDX #FUNT
E7A8 BD E6 23 JSR FAN00
E7AB 25 02 BCS TSTF05
E7AD 34 06 PSHS D
E7AF 39 TSTF05: RTS
E7B0 ;******************************
E7B0 ;******************************
E7B0 55 53 52 FUNT: DB "USR"
E7B3 04 FCB EOL
E7B4 E6 A6 FDB USER
E7B6 50 45 45 4B DB "PEEK"
E7BA 04 FCB EOL
E7BB E7 6F FDB PEEK
E7BD 4D 45 4D DB "MEM"
E7C0 04 FCB EOL
E7C1 E7 64 FDB TSTSTK
E7C3 04 FCB EOL
E7C4 ;******************************
E7C4 ;******************************
E7C4 9E 06 FLINE: LDX USRBAS
E7C6 9C 08 FNDLIN: CMPX USRTOP
E7C8 26 03 BNE FND03
E7CA 1A 03 ORCC #$03
E7CC 39 RTS
E7CD 10 A3 00 FND03: CMPD 0,X
E7D0 26 03 BNE FND05
E7D2 1C FC ANDCC #$FC
E7D4 39 RTS
E7D5 24 05 FND05: BCC FND07
E7D7 1A 01 ORCC #$01
E7D9 1C FD ANDCC #$FD
E7DB 39 RTS
E7DC 34 02 FND07: PSHS A
E7DE 86 04 LDA #EOL
E7E0 30 01 LEAX 1,X
E7E2 30 01 FND09: LEAX 1,X
E7E4 A1 00 CMPA 0,X
E7E6 26 FA BNE FND09
E7E8 35 02 PULS A
E7EA 30 01 LEAX 1,X
E7EC 20 D8 BRA FNDLIN
E7EE ;******************************
E7EE ;******************************
E7EE 8D 55 RELEXP: BSR EXPR
E7F0 34 06 PSHS D
E7F2 5F CLRB
E7F3 BD E6 5D JSR SKIPSP
E7F6 81 3D CMPA #"="
E7F8 27 23 BEQ REL06
E7FA 81 3C CMPA #"<"
E7FC 26 10 BNE REL03
E7FE 30 01 LEAX 1,X
E800 5C INCB
E801 BD E6 5D JSR SKIPSP
E804 81 3E CMPA #">"
E806 26 11 BNE REL05
E808 30 01 LEAX 1,X
E80A CB 04 ADDB #4
E80C 20 13 BRA REL07
E80E 81 3E REL03: CMPA #">"
E810 26 5F BNE EXPR06
E812 30 01 LEAX 1,X
E814 CB 04 ADDB #4
E816 BD E6 5D JSR SKIPSP
E819 81 3D REL05: CMPA #"="
E81B 26 04 BNE REL07
E81D 30 01 REL06: LEAX 1,X
E81F CB 02 ADDB #2
E821 34 04 REL07: PSHS B
E823 8D 20 BSR EXPR
E825 34 10 PSHS X
E827 A3 63 SUBD 3,S
E829 1F A8 TFR CC,A
E82B 44 LSRA
E82C 1F 89 TFR A,B
E82E 48 ASLA
E82F 48 ASLA
E830 34 04 PSHS B
E832 AB E0 ADDA ,S+
E834 84 06 ANDA #$06
E836 26 01 BNE REL08
E838 4C INCA
E839 5F REL08: CLRB
E83A A4 62 ANDA 2,S
E83C 27 01 BEQ REL09
E83E 53 COMB
E83F 4F REL09: CLRA
E840 35 10 PULS X
E842 32 63 LEAS 3,S
E844 39 RTS
E845 ;******************************
E845 ;******************************
E845 6F E2 EXPR: CLR ,-S
E847 6F E2 CLR ,-S
E849 BD E6 5D JSR SKIPSP
E84C 81 2D CMPA #"-"
E84E 27 17 BEQ EXPR05
E850 81 2B CMPA #"+"
E852 26 02 BNE EXPR03
E854 30 01 EXPR02: LEAX 1,X
E856 8D 1C EXPR03: BSR TERM
E858 E3 60 EXPR04: ADDD 0,S
E85A ED 60 STD 0,S
E85C BD E6 5D JSR SKIPSP
E85F 81 2B CMPA #"+"
E861 27 F1 BEQ EXPR02
E863 81 2D CMPA #"-"
E865 26 0A BNE EXPR06
E867 30 01 EXPR05: LEAX 1,X
E869 8D 09 BSR TERM
E86B 40 NEGA
E86C 50 NEGB
E86D 82 00 SBCA #0
E86F 20 E7 BRA EXPR04
E871 35 06 EXPR06: PULS D
E873 39 RTS
E874 ;******************************
E874 ;******************************
E874 BD E8 E7 TERM: JSR FACT
E877 34 06 PSHS D
E879 BD E6 5D TERM03: JSR SKIPSP
E87C 81 2A CMPA #"*"
E87E 27 48 BEQ TERM07
E880 81 2F CMPA #"/"
E882 27 03 BEQ TERM05
E884 35 06 PULS D
E886 39 RTS
E887 30 01 TERM05: LEAX 1,X
E889 8D 5C BSR FACT
E88B 34 10 PSHS X
E88D 30 62 LEAX 2,S
E88F 34 06 PSHS D
E891 A8 00 EORA 0,X
E893 BD E9 26 JSR ABSX
E896 30 60 LEAX 0,S
E898 BD E9 26 JSR ABSX
E89B 34 02 PSHS A
E89D 86 11 LDA #17
E89F 34 02 PSHS A
E8A1 4F CLRA
E8A2 5F CLRB
E8A3 A3 62 DIV05: SUBD 2,S
E8A5 24 06 BCC DIV07
E8A7 E3 62 ADDD 2,S
E8A9 1C FE ANDCC #$FE
E8AB 20 02 BRA DIV09
E8AD 1A 01 DIV07: ORCC #$01
E8AF 69 67 DIV09: ROL 7,S
E8B1 69 66 ROL 6,S
E8B3 59 ROLB
E8B4 49 ROLA
E8B5 6A 60 DEC 0,S
E8B7 26 EA BNE DIV05
E8B9 A6 61 LDA 1,S
E8BB 32 64 LEAS 4,S
E8BD 4D TSTA
E8BE 2A 04 BPL TERM06
E8C0 30 62 LEAX 2,S
E8C2 8D 66 BSR NEGX
E8C4 35 10 TERM06: PULS X
E8C6 20 B1 BRA TERM03
E8C8 30 01 TERM07: LEAX 1,X
E8CA 8D 1B BSR FACT
E8CC 34 04 MULT: PSHS B
E8CE E6 62 LDB 2,S
E8D0 3D MUL
E8D1 A6 61 LDA 1,S
E8D3 E7 61 STB 1,S
E8D5 E6 60 LDB 0,S
E8D7 3D MUL
E8D8 A6 62 LDA 2,S
E8DA E7 62 STB 2,S
E8DC 35 04 PULS B
E8DE 3D MUL
E8DF AB 60 ADDA 0,S
E8E1 AB 61 ADDA 1,S
E8E3 ED 60 STD 0,S
E8E5 20 92 BRA TERM03
E8E7 ;******************************
E8E7 ;******************************
E8E7 BD E6 8D FACT: JSR TSTVAR
E8EA 25 09 BCS FACT03
E8EC 34 10 PSHS X
E8EE 1F 01 TFR D,X
E8F0 EC 00 LDD 0,X
E8F2 35 10 PULS X
E8F4 39 FACT02: RTS
E8F5 BD E6 EC FACT03: JSR TSTNBR
E8F8 24 FA BCC FACT02
E8FA BD E7 A0 JSR TSTFUN
E8FD 24 F5 BCC FACT02
E8FF 8D 11 PAREXP: BSR ARGONE
E901 34 02 PSHS A
E903 BD E6 5D JSR SKIPSP
E906 81 29 CMPA #")"
E908 35 02 PULS A
E90A 26 03 BNE FACT05
E90C 30 01 LEAX 1,X
E90E 39 RTS
E90F 7E E5 56 FACT05: JMP ERRORS
E912 ;******************************
E912 ;******************************
E912 BD E7 64 ARGONE: JSR TSTSTK
E915 24 03 BCC FACT04
E917 7E E5 4E JMP ERRORF
E91A BD E6 5D FACT04: JSR SKIPSP
E91D 81 28 CMPA #"("
E91F 26 EE BNE FACT05
E921 30 01 LEAX 1,X
E923 7E E8 45 JMP EXPR
E926 ;******************************
E926 ;******************************
E926 6D 00 ABSX: TST 0,X
E928 2A 08 BPL NEG05
E92A 60 00 NEGX: NEG 0,X
E92C 60 01 NEG 1,X
E92E 24 02 BCC NEG05
E930 6A 00 DEC 0,X
E932 39 NEG05: RTS
E933 ;******************************
E933 ;******************************
E933 34 02 TSTEOL: PSHS A
E935 BD E6 5D JSR SKIPSP
E938 81 04 CMPA #EOL
E93A 27 03 BEQ TEOL03
E93C 7E E5 56 JMP ERRORS
E93F 30 01 TEOL03: LEAX 1,X
E941 35 02 PULS A
E943 39 RTS
E944 ;******************************
E944 ;******************************
E944 BD E6 8D LET: JSR TSTVAR
E947 24 03 BCC LET03
E949 7E E5 56 JMP ERRORS
E94C 34 06 LET03: PSHS D
E94E BD E6 5D JSR SKIPSP
E951 81 3D CMPA #"="
E953 27 03 BEQ LET05
E955 7E E5 56 JMP ERRORS
E958 30 01 LET05: LEAX 1,X
E95A BD E8 45 JSR EXPR
E95D 8D D4 BSR TSTEOL
E95F 9F 0E STX CURSOR
E961 35 10 PULS X
E963 ED 00 STD 0,X
E965 9E 0E LDX CURSOR
E967 7E E5 FE JMP ENDS02
E96A ;******************************
E96A ;******************************
E96A BD E7 EE IF: JSR RELEXP
E96D 5D TSTB
E96E 27 03 BEQ IF03
E970 7E E6 0F JMP MSLINE
E973 7E E5 F5 IF03: JMP REM
E976 ;******************************
E976 ;******************************
E976 BD E8 45 GOTO: JSR EXPR
E979 8D B8 BSR TSTEOL
E97B BD E7 C4 JSR FLINE
E97E 25 0F BCS GOSB04
E980 7E E6 0B JMP NXTLIN
E983 ;******************************
E983 ;******************************
E983 BD E8 45 GOSUB: JSR EXPR
E986 8D AB BSR TSTEOL
E988 9F 0E STX CURSOR
E98A BD E7 C4 JSR FLINE
E98D 24 03 BCC GOSB03
E98F 7E E5 5F GOSB04: JMP ERRORR
E992 BD E7 64 GOSB03: JSR TSTSTK
E995 24 03 BCC GOSB05
E997 7E E5 4E JMP ERRORF
E99A DC 0E GOSB05: LDD CURSOR
E99C 34 06 PSHS D
E99E DC 12 LDD LINENB
E9A0 34 06 PSHS D
E9A2 BD E6 0B JSR NXTLIN
E9A5 35 06 PULS D
E9A7 DD 12 STD LINENB
E9A9 35 10 PULS X
E9AB 7E E5 FE JMP ENDS02
E9AE ;******************************
E9AE ;******************************
E9AE RETURN: EQU TSTEOL
E9AE ;******************************
E9AE ;******************************
E9AE BD E6 5D PRINT: JSR SKIPSP
E9B1 81 2C PR01: CMPA #","
E9B3 27 36 BEQ PR05
E9B5 81 3B CMPA #";"
E9B7 27 3D BEQ PR07
E9B9 81 04 CMPA #EOL
E9BB 27 25 BEQ PR04
E9BD 81 22 CMPA #$22
E9BF 26 06 BNE PR02
E9C1 30 01 LEAX 1,X
E9C3 8D 42 BSR PRNTQS
E9C5 20 09 BRA PR03
E9C7 BD E8 45 PR02: JSR EXPR
E9CA 34 10 PSHS X
E9CC 8D 47 BSR PRNTN
E9CE 35 10 PULS X
E9D0 BD E6 5D PR03: JSR SKIPSP
E9D3 81 2C CMPA #","
E9D5 27 14 BEQ PR05
E9D7 81 3B CMPA #";"
E9D9 27 1B BEQ PR07
E9DB 81 04 CMPA #EOL
E9DD 27 03 BEQ PR04
E9DF 7E E5 56 JMP ERRORS
E9E2 34 10 PR04: PSHS X
E9E4 BD E5 3F JSR CRLF
E9E7 35 10 PULS X
E9E9 20 14 BRA PR08
E9EB C6 07 PR05: LDB #$7
E9ED 86 20 PR06: LDA #SPACE
E9EF BD EB AC JSR PUTCHR
E9F2 D5 18 BITB ZONE
E9F4 26 F7 BNE PR06
E9F6 30 01 PR07: LEAX 1,X
E9F8 BD E6 5D JSR SKIPSP
E9FB 81 04 CMPA #EOL
E9FD 26 B2 BNE PR01
E9FF 30 01 PR08: LEAX 1,X
EA01 7E E5 FE JMP ENDS02
EA04 ;*
EA04 ;*
EA04 BD EB AC PRQ01: JSR PUTCHR
EA07 A6 80 PRNTQS: LDA ,X+
EA09 81 04 CMPA #EOL
EA0B 26 03 BNE PRQ03
EA0D 7E E5 56 JMP ERRORS
EA10 81 22 PRQ03: CMPA #$22
EA12 26 F0 BNE PRQ01
EA14 39 RTS
EA15 ;*
EA15 4D PRNTN: TSTA
EA16 2A 0D BPL PRN03
EA18 40 NEGA
EA19 50 NEGB
EA1A 82 00 SBCA #0
EA1C 34 02 PSHS A
EA1E 86 2D LDA #"-"
EA20 BD EB AC JSR PUTCHR
EA23 35 02 PULS A
EA25 8E EA 54 PRN03: LDX #PRNPT-2
EA28 30 02 PRN05: LEAX 2,X
EA2A 10 A3 00 CMPD 0,X
EA2D 24 05 BCC PRN07
EA2F 8C EA 5E CMPX #PRNPTO
EA32 26 F4 BNE PRN05
EA34 0F 16 PRN07: CLR CHAR
EA36 10 A3 00 PRN09: CMPD 0,X
EA39 25 06 BCS PRN11
EA3B A3 00 SUBD 0,X
EA3D 0C 16 INC CHAR
EA3F 20 F5 BRA PRN09
EA41 34 02 PRN11: PSHS A
EA43 86 30 LDA #"0"
EA45 9B 16 ADDA CHAR
EA47 BD EB AC JSR PUTCHR
EA4A 35 02 PULS A
EA4C 8C EA 5E CMPX #PRNPTO
EA4F 27 04 BEQ PRN13
EA51 30 02 LEAX 2,X
EA53 20 DF BRA PRN07
EA55 39 PRN13: RTS
EA56 27 10 PRNPT: FDB 10000
EA58 03 E8 FDB 1000
EA5A 00 64 FDB 100
EA5C 00 0A FDB 10
EA5E 00 01 PRNPTO: FDB 1
EA60 ;*
EA60 8E EA 58 PRNT4: LDX #PRNPT+2
EA63 20 CF BRA PRN07
EA65 ;******************************
EA65 ;******************************
EA65 BD E6 8D INPUT: JSR TSTVAR
EA68 25 3C BCS IN11
EA6A 34 06 PSHS D
EA6C 9F 0E STX CURSOR
EA6E 86 3F IN03: LDA #"?"
EA70 BD EB AC JSR PUTCHR
EA73 BD E5 92 JSR GETLIN
EA76 BD E6 5D IN05: JSR SKIPSP
EA79 81 04 CMPA #EOL
EA7B 27 F1 BEQ IN03
EA7D BD E6 D8 JSR TSTSNB
EA80 24 0B BCC IN07
EA82 8E EA BA LDX #RMESS
EA85 BD E5 38 JSR PUTSTR
EA88 BD E5 3F JSR CRLF
EA8B 20 E1 BRA IN03
EA8D 9F 14 IN07: STX SCRTCH
EA8F 35 10 PULS X
EA91 ED 00 STD 0,X
EA93 9E 0E LDX CURSOR
EA95 BD E6 5D JSR SKIPSP
EA98 81 2C CMPA #","
EA9A 27 03 BEQ IN09
EA9C 7E E5 FB JMP ENDSMT
EA9F 30 01 IN09: LEAX 1,X
EAA1 BD E6 8D JSR TSTVAR
EAA4 24 03 BCC IN13
EAA6 7E E5 56 IN11: JMP ERRORS
EAA9 34 06 IN13: PSHS D
EAAB 34 10 PSHS X
EAAD 9E 14 LDX SCRTCH
EAAF BD E6 5D JSR SKIPSP
EAB2 81 2C CMPA #","
EAB4 26 C0 BNE IN05
EAB6 30 01 LEAX 1,X
EAB8 20 BC BRA IN05
EABA 52 45 2D 45 4E 54 45 52 RMESS: DB "RE-ENTER"
EAC2 04 FCB EOL
EAC3 ;******************************
EAC3 ;******************************
EAC3 9E 0C RUN: LDX STKTOP
EAC5 86 34 LDA #52
EAC7 6F 80 RUN01: CLR ,X+
EAC9 4A DECA
EACA 26 FB BNE RUN01
EACC 9E 06 LDX USRBAS
EACE 7E E6 04 JMP REM05
EAD1 ;******************************
EAD1 ;******************************
EAD1 BD E6 EC LIST: JSR TSTNBR
EAD4 24 08 BCC LIST03
EAD6 4F CLRA
EAD7 5F CLRB
EAD8 DD 0E STD CURSOR
EADA 86 7F LDA #$7F
EADC 20 17 BRA LIST07
EADE DD 0E LIST03: STD CURSOR
EAE0 BD E6 5D JSR SKIPSP
EAE3 81 2C CMPA #","
EAE5 27 04 BEQ LIST05
EAE7 96 0E LDA CURSOR
EAE9 20 0A BRA LIST07
EAEB 30 01 LIST05: LEAX 1,X
EAED BD E6 EC JSR TSTNBR
EAF0 24 03 BCC LIST07
EAF2 7E E5 56 JMP ERRORS
EAF5 BD E9 33 LIST07: JSR TSTEOL
EAF8 34 06 PSHS D
EAFA DC 0E LDD CURSOR
EAFC 9F 0E STX CURSOR
EAFE BD E7 C4 JSR FLINE
EB01 9C 08 LIST09: CMPX USRTOP
EB03 27 28 BEQ LIST10
EB05 35 06 PULS D
EB07 10 A3 00 CMPD 0,X
EB0A 25 28 BCS LIST11
EB0C 34 06 PSHS D
EB0E EC 81 LDD ,X++
EB10 34 10 PSHS X
EB12 BD EA 60 JSR PRNT4
EB15 35 10 PULS X
EB17 86 20 LDA #SPACE
EB19 BD EB AC JSR PUTCHR
EB1C BD E5 38 JSR PUTSTR
EB1F 30 01 LEAX 1,X
EB21 34 10 PSHS X
EB23 BD E5 3F JSR CRLF
EB26 35 10 PULS X
EB28 BD EB 9E JSR TSTBRK
EB2B 20 D4 BRA LIST09
EB2D 32 62 LIST10: LEAS 2,S
EB2F 86 03 LDA #ETX
EB31 BD EB AC JSR PUTCHR
EB34 9E 0E LIST11: LDX CURSOR
EB36 7E E5 FE JMP ENDS02
EB39 ;******************************
EB39 ;******************************
EB39 4C 45 54 VERBT: DB "LET"
EB3C 04 FCB EOL
EB3D E9 44 FDB LET
EB3F 49 46 DB "IF"
EB41 04 FCB EOL
EB42 E9 6A FDB IF
EB44 47 4F 54 4F DB "GOTO"
EB48 04 FCB EOL
EB49 E9 76 FDB GOTO
EB4B 47 4F 53 55 42 DB "GOSUB"
EB50 04 FCB EOL
EB51 E9 83 FDB GOSUB
EB53 52 45 54 55 52 4E DB "RETURN"
EB59 04 FCB EOL
EB5A E9 33 FDB RETURN
EB5C 50 4F 4B 45 DB "POKE"
EB60 04 FCB EOL
EB61 E7 7E FDB POKE
EB63 50 52 49 4E 54 DB "PRINT"
EB68 04 FCB EOL
EB69 E9 AE FDB PRINT
EB6B 49 4E 50 55 54 DB "INPUT"
EB70 04 FCB EOL
EB71 EA 65 FDB INPUT
EB73 52 45 4D DB "REM"
EB76 04 FCB EOL
EB77 E5 F5 FDB REM
EB79 53 54 4F 50 DB "STOP"
EB7D 04 FCB EOL
EB7E E5 6F FDB END
EB80 45 4E 44 DB "END"
EB83 04 FCB EOL
EB84 E5 6F FDB END
EB86 52 55 4E DB "RUN"
EB89 04 FCB EOL
EB8A EA C3 FDB RUN
EB8C 4C 49 53 54 DB "LIST"
EB90 04 FCB EOL
EB91 EA D1 FDB LIST
EB93 4E 45 57 DB "NEW"
EB96 04 FCB EOL
EB97 E4 1F FDB CLEAR
EB99 3F DB "?"
EB9A 04 FCB EOL
EB9B E9 AE FDB PRINT
EB9D 04 FCB EOL
EB9E ;******************************
EB9E ;******************************
EB9E 8D 2A TSTBRK: BSR BRKEEE
EBA0 27 09 BEQ GETC05
EBA2 8D 0D GETCHR: BSR INEEE
EBA4 81 03 CMPA #ETX
EBA6 26 03 BNE GETC05
EBA8 7E E5 67 JMP BREAK
EBAB 39 GETC05: RTS
EBAC 0C 18 PUTCHR: INC ZONE
EBAE 7E EB BB JMP OUTEEE
EBB1 ;******************************
EBB1 ;******************************
EBB1 8D 17 INEEE: BSR BRKEEE
EBB3 27 FC BEQ INEEE
EBB5 B6 83 FF LDA RECEV
EBB8 84 7F ANDA #$7F
EBBA 39 RTS
EBBB 34 02 OUTEEE: PSHS A
EBBD B6 83 FE OUT01: LDA TRCS
EBC0 85 02 BITA #TDRE
EBC2 27 F9 BEQ OUT01
EBC4 35 02 PULS A
EBC6 B7 83 FF STA TRANS
EBC9 39 RTS
EBCA 34 02 BRKEEE: PSHS A
EBCC B6 83 FE BRK03: LDA TRCS
EBCF 85 20 BITA #ORFE
EBD1 27 05 BEQ BRK05
EBD3 B6 83 FF LDA RECEV
EBD6 20 F4 BRA BRK03
EBD8 85 01 BRK05: BITA #RDRF
EBDA 35 02 PULS A
EBDC 39 RTS
EBDD ;*
EBDD 86 03 LDA #CNTL1
EBDF B7 83 FE STA RMCR
EBE2 86 15 LDA #CNTL2
EBE4 B7 83 FE STA TRCS
EBE7 INTEEE: EQU $
EBE7 39 RTS
EBE8 ;******************************
EBE8 ;******************************
EBE8 .ENDBLOCK
EOL: 0004 DEFINED AT LINE 17
> USED AT LINE 148
> USED AT LINE 253
> USED AT LINE 256
> USED AT LINE 259
> USED AT LINE 262
> USED AT LINE 265
> USED AT LINE 581
> USED AT LINE 584
> USED AT LINE 587
> USED AT LINE 589
> USED AT LINE 987
> USED AT LINE 1048
> USED AT LINE 1051
> USED AT LINE 1054
> USED AT LINE 1057
> USED AT LINE 1060
> USED AT LINE 1063
> USED AT LINE 1066
> USED AT LINE 1069
> USED AT LINE 1072
> USED AT LINE 1075
> USED AT LINE 1078
> USED AT LINE 1081
> USED AT LINE 1084
> USED AT LINE 1087
> USED AT LINE 1090
> USED AT LINE 1092
ETX: 0003 DEFINED AT LINE 18
SPACE: 0020 DEFINED AT LINE 19
CR: 000D DEFINED AT LINE 20
> USED AT LINE 248
LF: 000A DEFINED AT LINE 21
> USED AT LINE 248
BS: 0008 DEFINED AT LINE 22
CAN: 0018 DEFINED AT LINE 23
BELL: 0007 DEFINED AT LINE 24
FILL: 0000 DEFINED AT LINE 25
DEL: 007F DEFINED AT LINE 26
BSIZE: 0049 DEFINED AT LINE 27
> USED AT LINE 47
STKCUS: 0030 DEFINED AT LINE 28
BACIA: 83FE DEFINED AT LINE 30
> USED AT LINE 31
> USED AT LINE 32
> USED AT LINE 33
> USED AT LINE 34
RMCR: 83FE DEFINED AT LINE 31
> USED AT LINE 1129
TRCS: 83FE DEFINED AT LINE 32
> USED AT LINE 1112
> USED AT LINE 1119
> USED AT LINE 1131
RECEV: 83FF DEFINED AT LINE 33
> USED AT LINE 1108
> USED AT LINE 1122
TRANS: 83FF DEFINED AT LINE 34
> USED AT LINE 1116
CNTL1: 0003 DEFINED AT LINE 35
CNTL2: 0015 DEFINED AT LINE 36
RDRF: 0001 DEFINED AT LINE 37
ORFE: 0020 DEFINED AT LINE 38
TDRE: 0002 DEFINED AT LINE 39
LORAM: 0080 DEFINED AT LINE 42
BUFFER: 0200 DEFINED AT LINE 43
> USED AT LINE 47
> USED AT LINE 48
RAMSIZ: 2000 DEFINED AT LINE 44
> USED AT LINE 48
ROMADR: F000 DEFINED AT LINE 45
RAMBEG: 0249 DEFINED AT LINE 47
RAMEND: 2200 DEFINED AT LINE 48
RAMPAT: AA0F DEFINED AT LINE 50
ROMPAT: F055 DEFINED AT LINE 51
USRBAS: 0006 DEFINED AT LINE 56
> USED AT LINE 106
> USED AT LINE 115
> USED AT LINE 160
> USED AT LINE 592
> USED AT LINE 995
USRTOP: 0008 DEFINED AT LINE 57
> USED AT LINE 107
> USED AT LINE 133
> USED AT LINE 156
> USED AT LINE 169
> USED AT LINE 179
> USED AT LINE 201
> USED AT LINE 203
> USED AT LINE 204
> USED AT LINE 208
> USED AT LINE 211
> USED AT LINE 334
> USED AT LINE 593
> USED AT LINE 1021
STKLIM: 000A DEFINED AT LINE 58
> USED AT LINE 108
> USED AT LINE 134
> USED AT LINE 180
> USED AT LINE 205
> USED AT LINE 209
> USED AT LINE 541
STKTOP: 000C DEFINED AT LINE 59
> USED AT LINE 99
> USED AT LINE 103
> USED AT LINE 112
> USED AT LINE 427
> USED AT LINE 990
CURSOR: 000E DEFINED AT LINE 60
> USED AT LINE 116
> USED AT LINE 155
> USED AT LINE 162
> USED AT LINE 214
> USED AT LINE 222
> USED AT LINE 348
> USED AT LINE 353
> USED AT LINE 357
> USED AT LINE 450
> USED AT LINE 452
> USED AT LINE 572
> USED AT LINE 815
> USED AT LINE 818
> USED AT LINE 838
> USED AT LINE 845
> USED AT LINE 953
> USED AT LINE 969
> USED AT LINE 1003
> USED AT LINE 1006
> USED AT LINE 1010
> USED AT LINE 1018
> USED AT LINE 1019
> USED AT LINE 1043
SAVESP: 0010 DEFINED AT LINE 61
> USED AT LINE 164
> USED AT LINE 173
> USED AT LINE 175
> USED AT LINE 178
> USED AT LINE 212
> USED AT LINE 218
> USED AT LINE 538
> USED AT LINE 539
LINENB: 0012 DEFINED AT LINE 62
> USED AT LINE 118
> USED AT LINE 269
> USED AT LINE 331
> USED AT LINE 332
> USED AT LINE 338
> USED AT LINE 847
> USED AT LINE 851
SCRTCH: 0014 DEFINED AT LINE 63
> USED AT LINE 153
> USED AT LINE 181
> USED AT LINE 225
> USED AT LINE 227
> USED AT LINE 358
> USED AT LINE 359
> USED AT LINE 363
> USED AT LINE 370
> USED AT LINE 966
> USED AT LINE 980
CHAR: 0016 DEFINED AT LINE 64
> USED AT LINE 172
> USED AT LINE 176
> USED AT LINE 202
> USED AT LINE 213
> USED AT LINE 217
> USED AT LINE 224
> USED AT LINE 228
> USED AT LINE 230
> USED AT LINE 356
> USED AT LINE 364
> USED AT LINE 366
> USED AT LINE 373
> USED AT LINE 924
> USED AT LINE 928
> USED AT LINE 932
ZONE: 0018 DEFINED AT LINE 65
> USED AT LINE 246
> USED AT LINE 890
> USED AT LINE 1102
MODE: 0019 DEFINED AT LINE 66
> USED AT LINE 113
> USED AT LINE 119
> USED AT LINE 301
> USED AT LINE 322
RESRVD: 001A DEFINED AT LINE 67
LOEND: 001B DEFINED AT LINE 68
RESET: E400 DEFINED AT LINE 94
> USED AT LINE 75
> USED AT LINE 77
> USED AT LINE 79
> USED AT LINE 81
> USED AT LINE 83
> USED AT LINE 85
> USED AT LINE 87
> USED AT LINE 89
BASIC: E400 DEFINED AT LINE 97
WARMS: E40D DEFINED AT LINE 99
SETUP: E415 DEFINED AT LINE 102
> USED AT LINE 97
SET03: E419 DEFINED AT LINE 103
CLEAR: E41F DEFINED AT LINE 105
> USED AT LINE 1088
CLR02: E426 DEFINED AT LINE 108
WMS05: E428 DEFINED AT LINE 109
> USED AT LINE 101
CMDB: E431 DEFINED AT LINE 112
> USED AT LINE 131
> USED AT LINE 276
CMDE: E43D DEFINED AT LINE 117
> USED AT LINE 129
> USED AT LINE 145
CMD01: E44B DEFINED AT LINE 123
> USED AT LINE 120
CMD02: E461 DEFINED AT LINE 132
> USED AT LINE 125
CMD03: E46E DEFINED AT LINE 138
> USED AT LINE 136
CMD04: E473 DEFINED AT LINE 140
CMD05: E480 DEFINED AT LINE 146
> USED AT LINE 126
> USED AT LINE 139
> USED AT LINE 143
VSTR: E483 DEFINED AT LINE 147
EDITOR: E48E DEFINED AT LINE 151
> USED AT LINE 144
ED00: E4A2 DEFINED AT LINE 160
> USED AT LINE 157
ED01: E4A4 DEFINED AT LINE 161
> USED AT LINE 159
ED02: E4AF DEFINED AT LINE 166
> USED AT LINE 168
ED03: E4B5 DEFINED AT LINE 169
> USED AT LINE 177
ED35: E4C7 DEFINED AT LINE 178
> USED AT LINE 170
ED04: E4CD DEFINED AT LINE 181
> USED AT LINE 163
ED05: E4D1 DEFINED AT LINE 183
> USED AT LINE 186
ED55: E4DE DEFINED AT LINE 191
> USED AT LINE 188
ED06: E4E2 DEFINED AT LINE 193
> USED AT LINE 197
ED07: E506 DEFINED AT LINE 211
> USED AT LINE 207
ED08: E508 DEFINED AT LINE 212
> USED AT LINE 220
ED09: E51A DEFINED AT LINE 221
> USED AT LINE 215
ED10: E522 DEFINED AT LINE 225
> USED AT LINE 232
PUTS01: E533 DEFINED AT LINE 236
> USED AT LINE 240
PUTSTR: E538 DEFINED AT LINE 238
> USED AT LINE 111
> USED AT LINE 245
> USED AT LINE 274
> USED AT LINE 963
> USED AT LINE 1033
CRLF: E53F DEFINED AT LINE 244
> USED AT LINE 109
> USED AT LINE 114
> USED AT LINE 266
> USED AT LINE 275
> USED AT LINE 279
> USED AT LINE 306
> USED AT LINE 884
> USED AT LINE 964
> USED AT LINE 1036
CRLFST: E547 DEFINED AT LINE 248
ERRORF: E54E DEFINED AT LINE 251
> USED AT LINE 210
> USED AT LINE 777
> USED AT LINE 844
ERRORS: E556 DEFINED AT LINE 254
> USED AT LINE 146
> USED AT LINE 440
> USED AT LINE 560
> USED AT LINE 772
> USED AT LINE 798
> USED AT LINE 806
> USED AT LINE 811
> USED AT LINE 882
> USED AT LINE 904
> USED AT LINE 977
> USED AT LINE 1015
ERRORR: E55F DEFINED AT LINE 257
> USED AT LINE 137
> USED AT LINE 336
> USED AT LINE 841
BREAK: E567 DEFINED AT LINE 260
> USED AT LINE 1100
END: E56F DEFINED AT LINE 263
> USED AT LINE 1076
> USED AT LINE 1079
ER01: E576 DEFINED AT LINE 266
> USED AT LINE 251
> USED AT LINE 254
> USED AT LINE 257
> USED AT LINE 260
> USED AT LINE 263
GL00: E590 DEFINED AT LINE 279
> USED AT LINE 296
GETLIN: E592 DEFINED AT LINE 280
> USED AT LINE 123
> USED AT LINE 956
GL03: E595 DEFINED AT LINE 281
> USED AT LINE 285
> USED AT LINE 292
> USED AT LINE 300
> USED AT LINE 313
GL04: E5A9 DEFINED AT LINE 290
> USED AT LINE 287
GL02: E5AB DEFINED AT LINE 291
> USED AT LINE 289
> USED AT LINE 320
> USED AT LINE 323
GL05: E5B0 DEFINED AT LINE 293
> USED AT LINE 283
GL06: E5C9 DEFINED AT LINE 305
> USED AT LINE 302
GL08: E5D0 DEFINED AT LINE 308
> USED AT LINE 304
GL07: E5D8 DEFINED AT LINE 312
> USED AT LINE 294
GL09: E5ED DEFINED AT LINE 321
> USED AT LINE 298
REM00: E5F3 DEFINED AT LINE 326
> USED AT LINE 329
REM: E5F5 DEFINED AT LINE 327
> USED AT LINE 826
> USED AT LINE 1073
ENDSMT: E5FB DEFINED AT LINE 330
> USED AT LINE 973
ENDS02: E5FE DEFINED AT LINE 331
> USED AT LINE 568
> USED AT LINE 819
> USED AT LINE 853
> USED AT LINE 897
> USED AT LINE 1044
REM05: E604 DEFINED AT LINE 334
> USED AT LINE 996
NXTLIN: E60B DEFINED AT LINE 337
> USED AT LINE 335
> USED AT LINE 833
> USED AT LINE 849
MSLINE: E60F DEFINED AT LINE 339
> USED AT LINE 130
> USED AT LINE 825
REM09: E618 DEFINED AT LINE 343
> USED AT LINE 333
IMPLET: E619 DEFINED AT LINE 344
> USED AT LINE 341
IFAN: E61C DEFINED AT LINE 347
> USED AT LINE 340
FAN00: E623 DEFINED AT LINE 350
> USED AT LINE 378
> USED AT LINE 574
FAN04: E62E DEFINED AT LINE 356
> USED AT LINE 352
FAN05: E634 DEFINED AT LINE 359
> USED AT LINE 368
FAN07: E64F DEFINED AT LINE 373
> USED AT LINE 361
FAN08: E651 DEFINED AT LINE 374
> USED AT LINE 376
NXTNSP: E65B DEFINED AT LINE 381
> USED AT LINE 384
SKIPSP: E65D DEFINED AT LINE 382
> USED AT LINE 127
> USED AT LINE 152
> USED AT LINE 327
> USED AT LINE 347
> USED AT LINE 416
> USED AT LINE 434
> USED AT LINE 444
> USED AT LINE 457
> USED AT LINE 470
> USED AT LINE 557
> USED AT LINE 571
> USED AT LINE 619
> USED AT LINE 626
> USED AT LINE 636
> USED AT LINE 667
> USED AT LINE 676
> USED AT LINE 693
> USED AT LINE 766
> USED AT LINE 778
> USED AT LINE 795
> USED AT LINE 808
> USED AT LINE 859
> USED AT LINE 875
> USED AT LINE 893
> USED AT LINE 957
> USED AT LINE 970
> USED AT LINE 981
> USED AT LINE 1007
TSTHEX: E664 DEFINED AT LINE 388
> USED AT LINE 480
TSTLTR: E675 DEFINED AT LINE 399
> USED AT LINE 417
> USED AT LINE 421
TST03: E67D DEFINED AT LINE 403
> USED AT LINE 391
> USED AT LINE 393
> USED AT LINE 400
> USED AT LINE 408
> USED AT LINE 410
> USED AT LINE 422
TSTDIG: E680 DEFINED AT LINE 407
> USED AT LINE 388
> USED AT LINE 471
> USED AT LINE 504
TST05: E68A DEFINED AT LINE 412
> USED AT LINE 389
> USED AT LINE 402
TSTVAR: E68D DEFINED AT LINE 416
> USED AT LINE 753
> USED AT LINE 804
> USED AT LINE 950
> USED AT LINE 975
TSTV02: E6A3 DEFINED AT LINE 428
TSTV03: E6A5 DEFINED AT LINE 429
> USED AT LINE 418
USER: E6A6 DEFINED AT LINE 432
> USED AT LINE 582
USER02: E6B8 DEFINED AT LINE 440
> USED AT LINE 447
USER03: E6BB DEFINED AT LINE 441
> USED AT LINE 436
USER05: E6CD DEFINED AT LINE 449
> USED AT LINE 439
TSTSNB: E6D8 DEFINED AT LINE 457
> USED AT LINE 960
TSN02: E6EB DEFINED AT LINE 467
> USED AT LINE 462
TSTNBR: E6EC DEFINED AT LINE 470
> USED AT LINE 124
> USED AT LINE 459
> USED AT LINE 461
> USED AT LINE 760
> USED AT LINE 999
> USED AT LINE 1013
TSTN20: E6FA DEFINED AT LINE 476
TSTN23: E700 DEFINED AT LINE 479
> USED AT LINE 499
TSTN02: E723 DEFINED AT LINE 500
> USED AT LINE 472
TSTN03: E729 DEFINED AT LINE 503
> USED AT LINE 527
TSTN07: E756 DEFINED AT LINE 528
> USED AT LINE 481
> USED AT LINE 505
TSTN09: E75A DEFINED AT LINE 530
> USED AT LINE 475
TSTN11: E75D DEFINED AT LINE 532
> USED AT LINE 487
> USED AT LINE 512
> USED AT LINE 515
> USED AT LINE 517
> USED AT LINE 520
> USED AT LINE 523
TSTSTK: E764 DEFINED AT LINE 538
> USED AT LINE 206
> USED AT LINE 588
> USED AT LINE 775
> USED AT LINE 842
PEEK: E76F DEFINED AT LINE 545
> USED AT LINE 585
POKE: E77E DEFINED AT LINE 555
> USED AT LINE 1064
POKE05: E78D DEFINED AT LINE 561
> USED AT LINE 559
TSTFUN: E7A0 DEFINED AT LINE 571
> USED AT LINE 762
TSTF05: E7AF DEFINED AT LINE 577
> USED AT LINE 575
FUNT: E7B0 DEFINED AT LINE 580
FLINE: E7C4 DEFINED AT LINE 592
> USED AT LINE 831
> USED AT LINE 839
> USED AT LINE 1020
FNDLIN: E7C6 DEFINED AT LINE 593
> USED AT LINE 161
> USED AT LINE 613
FND03: E7CD DEFINED AT LINE 597
> USED AT LINE 594
FND05: E7D5 DEFINED AT LINE 601
> USED AT LINE 598
FND07: E7DC DEFINED AT LINE 605
> USED AT LINE 601
FND09: E7E2 DEFINED AT LINE 608
> USED AT LINE 610
RELEXP: E7EE DEFINED AT LINE 616
> USED AT LINE 822
REL03: E80E DEFINED AT LINE 632
> USED AT LINE 623
REL05: E819 DEFINED AT LINE 637
> USED AT LINE 628
REL06: E81D DEFINED AT LINE 639
> USED AT LINE 621
REL07: E821 DEFINED AT LINE 641
> USED AT LINE 631
> USED AT LINE 638
REL08: E839 DEFINED AT LINE 655
> USED AT LINE 653
REL09: E83F DEFINED AT LINE 659
> USED AT LINE 657
EXPR: E845 DEFINED AT LINE 665
> USED AT LINE 442
> USED AT LINE 562
> USED AT LINE 616
> USED AT LINE 642
> USED AT LINE 782
> USED AT LINE 813
> USED AT LINE 829
> USED AT LINE 836
> USED AT LINE 871
EXPR02: E854 DEFINED AT LINE 672
> USED AT LINE 678
EXPR03: E856 DEFINED AT LINE 673
> USED AT LINE 671
EXPR04: E858 DEFINED AT LINE 674
> USED AT LINE 686
EXPR05: E867 DEFINED AT LINE 681
> USED AT LINE 669
EXPR06: E871 DEFINED AT LINE 687
> USED AT LINE 633
> USED AT LINE 680
TERM: E874 DEFINED AT LINE 691
> USED AT LINE 673
> USED AT LINE 682
TERM03: E879 DEFINED AT LINE 693
> USED AT LINE 733
> USED AT LINE 750
TERM05: E887 DEFINED AT LINE 700
> USED AT LINE 697
DIV05: E8A3 DEFINED AT LINE 714
> USED AT LINE 725
DIV07: E8AD DEFINED AT LINE 719
> USED AT LINE 715
DIV09: E8AF DEFINED AT LINE 720
> USED AT LINE 718
TERM06: E8C4 DEFINED AT LINE 732
> USED AT LINE 729
TERM07: E8C8 DEFINED AT LINE 734
> USED AT LINE 695
MULT: E8CC DEFINED AT LINE 736
FACT: E8E7 DEFINED AT LINE 753
> USED AT LINE 691
> USED AT LINE 701
> USED AT LINE 735
FACT02: E8F4 DEFINED AT LINE 759
> USED AT LINE 761
> USED AT LINE 763
FACT03: E8F5 DEFINED AT LINE 760
> USED AT LINE 754
PAREXP: E8FF DEFINED AT LINE 764
> USED AT LINE 545
> USED AT LINE 555
FACT05: E90F DEFINED AT LINE 772
> USED AT LINE 769
> USED AT LINE 780
ARGONE: E912 DEFINED AT LINE 775
> USED AT LINE 432
> USED AT LINE 764
FACT04: E91A DEFINED AT LINE 778
> USED AT LINE 776
ABSX: E926 DEFINED AT LINE 785
> USED AT LINE 706
> USED AT LINE 708
NEGX: E92A DEFINED AT LINE 787
> USED AT LINE 731
NEG05: E932 DEFINED AT LINE 791
> USED AT LINE 786
> USED AT LINE 789
TSTEOL: E933 DEFINED AT LINE 794
> USED AT LINE 330
> USED AT LINE 563
> USED AT LINE 814
> USED AT LINE 830
> USED AT LINE 837
> USED AT LINE 856
> USED AT LINE 1016
TEOL03: E93F DEFINED AT LINE 799
> USED AT LINE 797
LET: E944 DEFINED AT LINE 804
> USED AT LINE 344
> USED AT LINE 1049
LET03: E94C DEFINED AT LINE 807
> USED AT LINE 805
LET05: E958 DEFINED AT LINE 812
> USED AT LINE 810
IF: E96A DEFINED AT LINE 822
> USED AT LINE 1052
IF03: E973 DEFINED AT LINE 826
> USED AT LINE 824
GOTO: E976 DEFINED AT LINE 829
> USED AT LINE 1055
GOSUB: E983 DEFINED AT LINE 836
> USED AT LINE 1058
GOSB04: E98F DEFINED AT LINE 841
> USED AT LINE 832
GOSB03: E992 DEFINED AT LINE 842
> USED AT LINE 840
GOSB05: E99A DEFINED AT LINE 845
> USED AT LINE 843
RETURN: E933 DEFINED AT LINE 856
> USED AT LINE 1061
PRINT: E9AE DEFINED AT LINE 859
> USED AT LINE 1067
> USED AT LINE 1091
PR01: E9B1 DEFINED AT LINE 860
> USED AT LINE 895
PR02: E9C7 DEFINED AT LINE 871
> USED AT LINE 867
PR03: E9D0 DEFINED AT LINE 875
> USED AT LINE 870
PR04: E9E2 DEFINED AT LINE 883
> USED AT LINE 865
> USED AT LINE 881
PR05: E9EB DEFINED AT LINE 887
> USED AT LINE 861
> USED AT LINE 877
PR06: E9ED DEFINED AT LINE 888
> USED AT LINE 891
PR07: E9F6 DEFINED AT LINE 892
> USED AT LINE 863
> USED AT LINE 879
PR08: E9FF DEFINED AT LINE 896
> USED AT LINE 886
PRQ01: EA04 DEFINED AT LINE 900
> USED AT LINE 906
PRNTQS: EA07 DEFINED AT LINE 901
> USED AT LINE 869
PRQ03: EA10 DEFINED AT LINE 905
> USED AT LINE 903
PRNTN: EA15 DEFINED AT LINE 909
> USED AT LINE 873
PRN03: EA25 DEFINED AT LINE 918
> USED AT LINE 910
PRN05: EA28 DEFINED AT LINE 919
> USED AT LINE 923
PRN07: EA34 DEFINED AT LINE 924
> USED AT LINE 921
> USED AT LINE 938
> USED AT LINE 947
PRN09: EA36 DEFINED AT LINE 925
> USED AT LINE 929
PRN11: EA41 DEFINED AT LINE 930
> USED AT LINE 926
PRN13: EA55 DEFINED AT LINE 939
> USED AT LINE 936
PRNPT: EA56 DEFINED AT LINE 940
PRNPTO: EA5E DEFINED AT LINE 944
PRNT4: EA60 DEFINED AT LINE 946
> USED AT LINE 270
> USED AT LINE 1029
INPUT: EA65 DEFINED AT LINE 950
> USED AT LINE 1070
IN03: EA6E DEFINED AT LINE 954
> USED AT LINE 959
> USED AT LINE 965
IN05: EA76 DEFINED AT LINE 957
> USED AT LINE 983
> USED AT LINE 985
IN07: EA8D DEFINED AT LINE 966
> USED AT LINE 961
IN09: EA9F DEFINED AT LINE 974
> USED AT LINE 972
IN11: EAA6 DEFINED AT LINE 977
> USED AT LINE 951
IN13: EAA9 DEFINED AT LINE 978
> USED AT LINE 976
RMESS: EABA DEFINED AT LINE 986
RUN: EAC3 DEFINED AT LINE 990
> USED AT LINE 1082
RUN01: EAC7 DEFINED AT LINE 992
> USED AT LINE 994
LIST: EAD1 DEFINED AT LINE 999
> USED AT LINE 1085
LIST03: EADE DEFINED AT LINE 1006
> USED AT LINE 1000
LIST05: EAEB DEFINED AT LINE 1012
> USED AT LINE 1009
LIST07: EAF5 DEFINED AT LINE 1016
> USED AT LINE 1005
> USED AT LINE 1011
> USED AT LINE 1014
LIST09: EB01 DEFINED AT LINE 1021
> USED AT LINE 1039
LIST10: EB2D DEFINED AT LINE 1040
> USED AT LINE 1022
LIST11: EB34 DEFINED AT LINE 1043
> USED AT LINE 1025
VERBT: EB39 DEFINED AT LINE 1047
TSTBRK: EB9E DEFINED AT LINE 1095
> USED AT LINE 339
> USED AT LINE 1038
GETCHR: EBA2 DEFINED AT LINE 1097
> USED AT LINE 281
GETC05: EBAB DEFINED AT LINE 1101
> USED AT LINE 1096
> USED AT LINE 1099
PUTCHR: EBAC DEFINED AT LINE 1102
> USED AT LINE 122
> USED AT LINE 236
> USED AT LINE 268
> USED AT LINE 272
> USED AT LINE 291
> USED AT LINE 303
> USED AT LINE 316
> USED AT LINE 318
> USED AT LINE 889
> USED AT LINE 900
> USED AT LINE 916
> USED AT LINE 933
> USED AT LINE 955
> USED AT LINE 1032
> USED AT LINE 1042
INEEE: EBB1 DEFINED AT LINE 1106
> USED AT LINE 1097
> USED AT LINE 1107
OUTEEE: EBBB DEFINED AT LINE 1111
> USED AT LINE 1103
OUT01: EBBD DEFINED AT LINE 1112
> USED AT LINE 1114
BRKEEE: EBCA DEFINED AT LINE 1118
> USED AT LINE 1095
> USED AT LINE 1106
BRK03: EBCC DEFINED AT LINE 1119
> USED AT LINE 1123
BRK05: EBD8 DEFINED AT LINE 1124
> USED AT LINE 1121
INTEEE: EBE7 DEFINED AT LINE 1132
> USED AT LINE 100
> USED AT LINE 104
;NAM TB01V137
;* WRITTEN 20-OCT-77 BY JOHN BYRNS
;* REVISED 30-DEC-77
;* REVISED 18-JAN-78
;* REVISED 10-APR-78
;* REVISED 08-MAY-79 TO ELIMINATE USE OF SP
;* REVISED 24-JAN-80 TO USE 6801 ON CHIP RAM
;* REVISED 26-JAN-80 FOR NEW 6801 INSTRUCTIONS
;* REVISED 24-JUL-81 FOR WHISTON BOARD
;* REVISED 24-SEP-81 INCLUDE USER FUNCTION
;* REVISED 08-APR-82 MAKE STANDALONE INCLUDE HEX CONSTANTS AND MEM FUNCTION
;* REVISED 21-NOV-84 FOR 6809
;* REVISED FEB 94 ADAPTED TO SIMULATOR AND BUGFIXES BY L.C. BENSCHOP.
;*
.engine kilo
EOL: EQU $04
ETX: EQU $03
SPACE: EQU $20
CR: EQU $0D
LF: EQU $0A
BS: EQU $08
CAN: EQU $18
BELL: EQU $07
FILL: EQU $00
DEL: EQU $7F
BSIZE: EQU 73
STKCUS: EQU 48
;*
bACIA equ $83FE
RMCR EQU bACIA
TRCS EQU bACIA
RECEV EQU bACIA+1
TRANS EQU bACIA+1
CNTL1 EQU $03
CNTL2 EQU $15
RDRF EQU $01
ORFE EQU $20
TDRE EQU $02
;* EDIT THE FOLLOWING EQUATES TO REFLECT THE
;* DESIRED ROM AND RAM LAYOUT
LORAM EQU $0080 ;ADDRESS OF DIRECT PAGE SCRATCH RAM
BUFFER EQU $0200 ;ADDRESS OF MAIN RAM
RAMSIZ EQU $2000 ;SIZE OF MAIN RAM
ROMADR EQU $f000 ;ADDRESS OF TINY BASIC ROM
;*
RAMBEG EQU BUFFER+BSIZE
RAMEND EQU BUFFER+RAMSIZ
;*
RAMPAT EQU $AA0F
ROMPAT EQU $F055
;*
; ORG LORAM
.bsseg
.org 6
USRBAS: RMB 2
USRTOP: RMB 2
STKLIM: RMB 2
STKTOP: RMB 2
CURSOR: RMB 2
SAVESP: RMB 2
LINENB: RMB 2
SCRTCH: RMB 2
CHAR: RMB 2
ZONE: RMB 1
MODE: RMB 1
RESRVD: RMB 1
LOEND: EQU $
;*
.cseg
.ORG 0xfff0
;reserved
DW reset
;SWI3
DW reset
;SWI2
DW reset
;FIRQ
DW reset
;IRQ
DW reset
;SWI
DW reset
;NMI
DW reset
;RES
DW reset
org $e400
reset:
.ent $
BASIC: JMP SETUP
.cstr "MOD9BASIC"
WARMS LDS STKTOP
JSR INTEEE
BRA WMS05
SETUP LDS #RAMEND-52
SET03 STS STKTOP
JSR INTEEE
CLEAR LDD #RAMBEG
STD USRBAS
STD USRTOP
CLR02 STD STKLIM
WMS05 JSR CRLF
LDX #VSTR
JSR PUTSTR
CMDB LDS STKTOP
CLR MODE
JSR CRLF
LDX USRBAS
STX CURSOR
CMDE LDX #0000
STX LINENB
TST MODE
BNE CMD01
LDA #":"
JSR PUTCHR
CMD01 JSR GETLIN
JSR TSTNBR
BCC CMD02
BVS CMD05
JSR SKIPSP
CMPA #EOL
BEQ CMDE
JSR MSLINE
BRA CMDB
CMD02 PSHS X
LDX USRTOP
CMPX STKLIM
PULS X
BEQ CMD03
JMP ERRORR
CMD03 ADDD #0
BEQ CMD05
CMD04 PSHS D
SUBD #9999
PULS D
BHI CMD05
BSR EDITOR
BRA CMDE
CMD05 JMP ERRORS
VSTR DB "TINY V1.37"
FCB EOL
;******************************
;******************************
EDITOR PSHS D
JSR SKIPSP
STX SCRTCH
LDA 0,S
LDX CURSOR
CMPX USRTOP
BEQ ED00
CMPD 0,X
BCC ED01
ED00 LDX USRBAS
ED01 JSR FNDLIN
STX CURSOR
BCS ED04
STX SAVESP
LEAX 2,X
ED02 LDA ,X+
CMPA #EOL
BNE ED02
ED03 CMPX USRTOP
BEQ ED35
LDA ,X+
STX CHAR
LDX SAVESP
STA ,X+
STX SAVESP
LDX CHAR
BRA ED03
ED35 LDX SAVESP
STX USRTOP
STX STKLIM
ED04 LDX SCRTCH
LDB #-1
ED05 INCB
LDA ,X+
CMPA #EOL
BNE ED05
TSTB
BNE ED55
LEAS 2,S
RTS
ED55 LEAX -1,X
ADDB #4
ED06 LEAX -1,X
DECB
LDA 0,X
CMPA #SPACE
BEQ ED06
LDA #EOL
STA 1,X
CLRA
LDX USRTOP
STX CHAR
ADDD USRTOP
STD USRTOP
STD STKLIM
JSR TSTSTK
BCC ED07
STX USRTOP
STX STKLIM
JMP ERRORF
ED07 LDX USRTOP
ED08 STX SAVESP
LDX CHAR
CMPX CURSOR
BEQ ED09
LDA ,-X
STX CHAR
LDX SAVESP
STA ,-X
BRA ED08
ED09 PULS D
LDX CURSOR
STD ,X++
STX CHAR
ED10 LDX SCRTCH
LDA ,X+
STX SCRTCH
LDX CHAR
STA ,X+
STX CHAR
CMPA #EOL
BNE ED10
RTS
;******************************
;******************************
PUTS01 JSR PUTCHR
LEAX 1,X
PUTSTR LDA 0,X
CMPA #EOL
BNE PUTS01
RTS
;******************************
;******************************
CRLF LDX #CRLFST
BSR PUTSTR
CLR ZONE
RTS
CRLFST FCB CR,LF,DEL,FILL,FILL,FILL,EOL
;******************************
;******************************
ERRORF BSR ER01
DB "SORRY"
FCB EOL
ERRORS BSR ER01
DB "WHAT ?"
FCB EOL
ERRORR BSR ER01
DB "HOW ?"
FCB EOL
BREAK BSR ER01
DB "BREAK"
FCB EOL
END BSR ER01
DB "STOP"
FCB EOL
ER01 BSR CRLF
LDA #BELL
JSR PUTCHR
LDD LINENB
JSR PRNT4
LDA #SPACE
JSR PUTCHR
PULS X
BSR PUTSTR
BSR CRLF
JMP CMDB
;******************************
;******************************
GL00 BSR CRLF
GETLIN LDX #BUFFER
GL03 JSR GETCHR
CMPA #SPACE
BCS GL05
CMPA #$7F
BEQ GL03
CMPX #BUFFER+BSIZE-1
BNE GL04
LDA #BELL
BRA GL02
GL04 STA ,X+
GL02 JSR PUTCHR
BRA GL03
GL05 CMPA #BS
BEQ GL07
CMPA #CAN
BEQ GL00
CMPA #LF
BEQ GL09
CMPA #CR
BNE GL03
TST MODE
BEQ GL06
JSR PUTCHR
BRA GL08
GL06 PSHS X
JSR CRLF
PULS X
GL08 LDA #EOL
STA 0,X
LDX #BUFFER
RTS
GL07 CMPX #BUFFER
BEQ GL03
LEAX -1,X
LDA #BS
JSR PUTCHR
LDA #SPACE
JSR PUTCHR
LDA #BS
BRA GL02
GL09 ORCC #$01
ROR MODE
BRA GL02
;******************************
;******************************
REM00 LEAX 1,X
REM BSR SKIPSP
CMPA #EOL
BNE REM00
ENDSMT JSR TSTEOL
ENDS02 LDA LINENB
ORA LINENB+1
BEQ REM09
REM05 CMPX USRTOP
BNE NXTLIN
JMP ERRORR
NXTLIN LDD ,X++
STD LINENB
MSLINE JSR TSTBRK
BSR IFAN
BCS IMPLET
PSHS D
REM09 RTS
IMPLET JMP LET
;******************************
;******************************
IFAN BSR SKIPSP
STX CURSOR
LDX #VERBT
FAN00: LDA ,X+
CMPA #EOL
BNE FAN04
LDX CURSOR
ORCC #$01
RTS
FAN04 STX CHAR
LDX CURSOR
STX SCRTCH
FAN05 LDX SCRTCH
CMPA 0,X
BNE FAN07
LEAX 1,X
STX SCRTCH
LDX CHAR
LDA ,X+
STX CHAR
CMPA #EOL
BNE FAN05
LDD 0,X
LDX SCRTCH
ANDCC #$FE
RTS
FAN07 LDX CHAR
FAN08 LDA ,X+
CMPA #EOL
BNE FAN08
LEAX 2,X
BRA FAN00
;******************************
;******************************
NXTNSP LEAX 1,X
SKIPSP LDA 0,X
CMPA #SPACE
BEQ NXTNSP
RTS
;******************************
;******************************
TSTHEX BSR TSTDIG
BCC TST05
CMPA #"A"
BCS TST03
CMPA #"F"
BHI TST03
SUBA #"A"-10
ANDCC #$FE
RTS
;******************************
;******************************
TSTLTR CMPA #"A"
BCS TST03
CMPA #"Z"
BLS TST05
TST03 ORCC #$01
RTS
;******************************
;******************************
TSTDIG CMPA #"0"
BCS TST03
CMPA #"9"
BHI TST03
SUBA #"0"
TST05 ANDCC #$FE
RTS
;******************************
;******************************
TSTVAR BSR SKIPSP
BSR TSTLTR
BCS TSTV03
TFR A,B
LDA 1,X
BSR TSTLTR
BCC TST03
LEAX 1,X
SUBB #"A"
ASLB
CLRA
ADDD STKTOP
TSTV02 ANDCC #$FE
TSTV03 RTS
;******************************
;******************************
USER JSR ARGONE
PSHS D
JSR SKIPSP
CMPA #","
BEQ USER03
CMPA #")"
ORCC #$01
BEQ USER05
USER02 JMP ERRORS
USER03 LEAX 1,X
JSR EXPR
PSHS A
JSR SKIPSP
CMPA #")"
PULS A
BNE USER02
ANDCC #$FE
USER05 LEAX 1,X
STX CURSOR
JSR [,S++]
LDX CURSOR
ANDCC #$FE
RTS
;******************************
;******************************
TSTSNB JSR SKIPSP
CMPA #"-"
BNE TSTNBR
LEAX 1,X
BSR TSTNBR
BCS TSN02
NEGA
NEGB
SBCA #0
ANDCC #$FC
TSN02 RTS
;******************************
;******************************
TSTNBR JSR SKIPSP
JSR TSTDIG
BCC TSTN02
CMPA #"$"
ORCC #$01
BNE TSTN09
TSTN20 LEAX 1,X
CLR ,-S
CLR ,-S
TSTN23 LDA 0,X
JSR TSTHEX
BCS TSTN07
LEAX 1,X
PSHS X
PSHS A
LDD 3,S
BITA #$F0
BNE TSTN11
ASLB
ROLA
ASLB
ROLA
ASLB
ROLA
ASLB
ROLA
ADDB ,S+
STD 2,S
PULS X
BRA TSTN23
TSTN02 LEAX 1,X
PSHS A
CLR ,-S
TSTN03 LDA 0,X
JSR TSTDIG
BCS TSTN07
LEAX 1,X
PSHS X
PSHS A
LDD 3,S
ASLB
ROLA
BVS TSTN11
ASLB
ROLA
BVS TSTN11
ADDD 3,S
BVS TSTN11
ASLB
ROLA
BVS TSTN11
ADDB 0,S
ADCA #0
BVS TSTN11
STD 3,S
LEAS 1,S
PULS X
BRA TSTN03
TSTN07 PULS D
ANDCC #$FE
TSTN09 ANDCC #$FD
RTS
TSTN11 LDX 1,S
LEAS 5,S
ORCC #$03
RTS
;******************************
;******************************
TSTSTK STS SAVESP
LDD SAVESP
SUBD #STKCUS
SUBD STKLIM
RTS
;******************************
;******************************
PEEK JSR PAREXP
PSHS D
PSHS X
LDB [2,S]
PULS X
LEAS 2,S
CLRA
RTS
;******************************
;******************************
POKE JSR PAREXP
PSHS D
JSR SKIPSP
CMPA #"="
BEQ POKE05
JMP ERRORS
POKE05 LEAX 1,X
JSR EXPR
JSR TSTEOL
PSHS X
STB [2,S]
PULS X
LEAS 2,S
JMP ENDS02
;******************************
;******************************
TSTFUN JSR SKIPSP
STX CURSOR
LDX #FUNT
JSR FAN00
BCS TSTF05
PSHS D
TSTF05 RTS
;******************************
;******************************
FUNT DB "USR"
FCB EOL
FDB USER
DB "PEEK"
FCB EOL
FDB PEEK
DB "MEM"
FCB EOL
FDB TSTSTK
FCB EOL
;******************************
;******************************
FLINE LDX USRBAS
FNDLIN CMPX USRTOP
BNE FND03
ORCC #$03
RTS
FND03 CMPD 0,X
BNE FND05
ANDCC #$FC
RTS
FND05 BCC FND07
ORCC #$01
ANDCC #$FD
RTS
FND07 PSHS A
LDA #EOL
LEAX 1,X
FND09 LEAX 1,X
CMPA 0,X
BNE FND09
PULS A
LEAX 1,X
BRA FNDLIN
;******************************
;******************************
RELEXP BSR EXPR
PSHS D
CLRB
JSR SKIPSP
CMPA #"="
BEQ REL06
CMPA #"<"
BNE REL03
LEAX 1,X
INCB
JSR SKIPSP
CMPA #">"
BNE REL05
LEAX 1,X
ADDB #4
BRA REL07
REL03 CMPA #">"
BNE EXPR06
LEAX 1,X
ADDB #4
JSR SKIPSP
REL05 CMPA #"="
BNE REL07
REL06 LEAX 1,X
ADDB #2
REL07 PSHS B
BSR EXPR
PSHS X
SUBD 3,S
TFR CC,A
LSRA
TFR A,B
ASLA
ASLA
PSHS B
ADDA ,S+
ANDA #$06
BNE REL08
INCA
REL08 CLRB
ANDA 2,S
BEQ REL09
COMB
REL09 CLRA
PULS X
LEAS 3,S
RTS
;******************************
;******************************
EXPR CLR ,-S
CLR ,-S
JSR SKIPSP
CMPA #"-"
BEQ EXPR05
CMPA #"+"
BNE EXPR03
EXPR02 LEAX 1,X
EXPR03 BSR TERM
EXPR04 ADDD 0,S
STD 0,S
JSR SKIPSP
CMPA #"+"
BEQ EXPR02
CMPA #"-"
BNE EXPR06
EXPR05 LEAX 1,X
BSR TERM
NEGA
NEGB
SBCA #0
BRA EXPR04
EXPR06 PULS D
RTS
;******************************
;******************************
TERM JSR FACT
PSHS D
TERM03 JSR SKIPSP
CMPA #"*"
BEQ TERM07
CMPA #"/"
BEQ TERM05
PULS D
RTS
TERM05 LEAX 1,X
BSR FACT
PSHS X
LEAX 2,S
PSHS D
EORA 0,X
JSR ABSX
LEAX 0,S
JSR ABSX
PSHS A
LDA #17
PSHS A
CLRA
CLRB
DIV05 SUBD 2,S
BCC DIV07
ADDD 2,S
ANDCC #$FE
BRA DIV09
DIV07 ORCC #$01
DIV09 ROL 7,S
ROL 6,S
ROLB
ROLA
DEC 0,S
BNE DIV05
LDA 1,S
LEAS 4,S
TSTA
BPL TERM06
LEAX 2,S
BSR NEGX
TERM06 PULS X
BRA TERM03
TERM07 LEAX 1,X
BSR FACT
MULT PSHS B
LDB 2,S
MUL
LDA 1,S
STB 1,S
LDB 0,S
MUL
LDA 2,S
STB 2,S
PULS B
MUL
ADDA 0,S
ADDA 1,S
STD 0,S
BRA TERM03
;******************************
;******************************
FACT JSR TSTVAR
BCS FACT03
PSHS X
TFR D,X
LDD 0,X
PULS X
FACT02 RTS
FACT03 JSR TSTNBR
BCC FACT02
JSR TSTFUN
BCC FACT02
PAREXP BSR ARGONE
PSHS A
JSR SKIPSP
CMPA #")"
PULS A
BNE FACT05
LEAX 1,X
RTS
FACT05 JMP ERRORS
;******************************
;******************************
ARGONE JSR TSTSTK
BCC FACT04
JMP ERRORF
FACT04 JSR SKIPSP
CMPA #"("
BNE FACT05
LEAX 1,X
JMP EXPR
;******************************
;******************************
ABSX TST 0,X
BPL NEG05
NEGX NEG 0,X
NEG 1,X
BCC NEG05
DEC 0,X
NEG05 RTS
;******************************
;******************************
TSTEOL PSHS A
JSR SKIPSP
CMPA #EOL
BEQ TEOL03
JMP ERRORS
TEOL03 LEAX 1,X
PULS A
RTS
;******************************
;******************************
LET JSR TSTVAR
BCC LET03
JMP ERRORS
LET03 PSHS D
JSR SKIPSP
CMPA #"="
BEQ LET05
JMP ERRORS
LET05 LEAX 1,X
JSR EXPR
BSR TSTEOL
STX CURSOR
PULS X
STD 0,X
LDX CURSOR
JMP ENDS02
;******************************
;******************************
IF: JSR RELEXP
TSTB
BEQ IF03
JMP MSLINE
IF03: JMP REM
;******************************
;******************************
GOTO JSR EXPR
BSR TSTEOL
JSR FLINE
BCS GOSB04
JMP NXTLIN
;******************************
;******************************
GOSUB JSR EXPR
BSR TSTEOL
STX CURSOR
JSR FLINE
BCC GOSB03
GOSB04 JMP ERRORR
GOSB03 JSR TSTSTK
BCC GOSB05
JMP ERRORF
GOSB05 LDD CURSOR
PSHS D
LDD LINENB
PSHS D
JSR NXTLIN
PULS D
STD LINENB
PULS X
JMP ENDS02
;******************************
;******************************
RETURN EQU TSTEOL
;******************************
;******************************
PRINT JSR SKIPSP
PR01 CMPA #","
BEQ PR05
CMPA #";"
BEQ PR07
CMPA #EOL
BEQ PR04
CMPA #$22
BNE PR02
LEAX 1,X
BSR PRNTQS
BRA PR03
PR02 JSR EXPR
PSHS X
BSR PRNTN
PULS X
PR03 JSR SKIPSP
CMPA #","
BEQ PR05
CMPA #";"
BEQ PR07
CMPA #EOL
BEQ PR04
JMP ERRORS
PR04 PSHS X
JSR CRLF
PULS X
BRA PR08
PR05 LDB #$7
PR06 LDA #SPACE
JSR PUTCHR
BITB ZONE
BNE PR06
PR07 LEAX 1,X
JSR SKIPSP
CMPA #EOL
BNE PR01
PR08 LEAX 1,X
JMP ENDS02
;*
;*
PRQ01 JSR PUTCHR
PRNTQS LDA ,X+
CMPA #EOL
BNE PRQ03
JMP ERRORS
PRQ03 CMPA #$22
BNE PRQ01
RTS
;*
PRNTN TSTA
BPL PRN03
NEGA
NEGB
SBCA #0
PSHS A
LDA #"-"
JSR PUTCHR
PULS A
PRN03 LDX #PRNPT-2
PRN05 LEAX 2,X
CMPD 0,X
BCC PRN07
CMPX #PRNPTO
BNE PRN05
PRN07 CLR CHAR
PRN09 CMPD 0,X
BCS PRN11
SUBD 0,X
INC CHAR
BRA PRN09
PRN11 PSHS A
LDA #"0"
ADDA CHAR
JSR PUTCHR
PULS A
CMPX #PRNPTO
BEQ PRN13
LEAX 2,X
BRA PRN07
PRN13 RTS
PRNPT FDB 10000
FDB 1000
FDB 100
FDB 10
PRNPTO FDB 1
;*
PRNT4 LDX #PRNPT+2
BRA PRN07
;******************************
;******************************
INPUT JSR TSTVAR
BCS IN11
PSHS D
STX CURSOR
IN03 LDA #"?"
JSR PUTCHR
JSR GETLIN
IN05 JSR SKIPSP
CMPA #EOL
BEQ IN03
JSR TSTSNB
BCC IN07
LDX #RMESS
JSR PUTSTR
JSR CRLF
BRA IN03
IN07 STX SCRTCH
PULS X
STD 0,X
LDX CURSOR
JSR SKIPSP
CMPA #","
BEQ IN09
JMP ENDSMT
IN09 LEAX 1,X
JSR TSTVAR
BCC IN13
IN11 JMP ERRORS
IN13 PSHS D
PSHS X
LDX SCRTCH
JSR SKIPSP
CMPA #","
BNE IN05
LEAX 1,X
BRA IN05
RMESS DB "RE-ENTER"
FCB EOL
;******************************
;******************************
RUN LDX STKTOP
LDA #52
RUN01 CLR ,X+
DECA
BNE RUN01
LDX USRBAS
JMP REM05
;******************************
;******************************
LIST JSR TSTNBR
BCC LIST03
CLRA
CLRB
STD CURSOR
LDA #$7F
BRA LIST07
LIST03 STD CURSOR
JSR SKIPSP
CMPA #","
BEQ LIST05
LDA CURSOR
BRA LIST07
LIST05 LEAX 1,X
JSR TSTNBR
BCC LIST07
JMP ERRORS
LIST07 JSR TSTEOL
PSHS D
LDD CURSOR
STX CURSOR
JSR FLINE
LIST09 CMPX USRTOP
BEQ LIST10
PULS D
CMPD 0,X
BCS LIST11
PSHS D
LDD ,X++
PSHS X
JSR PRNT4
PULS X
LDA #SPACE
JSR PUTCHR
JSR PUTSTR
LEAX 1,X
PSHS X
JSR CRLF
PULS X
JSR TSTBRK
BRA LIST09
LIST10 LEAS 2,S
LDA #ETX
JSR PUTCHR
LIST11 LDX CURSOR
JMP ENDS02
;******************************
;******************************
VERBT DB "LET"
FCB EOL
FDB LET
DB "IF"
FCB EOL
FDB IF
DB "GOTO"
FCB EOL
FDB GOTO
DB "GOSUB"
FCB EOL
FDB GOSUB
DB "RETURN"
FCB EOL
FDB RETURN
DB "POKE"
FCB EOL
FDB POKE
DB "PRINT"
FCB EOL
FDB PRINT
DB "INPUT"
FCB EOL
FDB INPUT
DB "REM"
FCB EOL
FDB REM
DB "STOP"
FCB EOL
FDB END
DB "END"
FCB EOL
FDB END
DB "RUN"
FCB EOL
FDB RUN
DB "LIST"
FCB EOL
FDB LIST
DB "NEW"
FCB EOL
FDB CLEAR
DB "?"
FCB EOL
FDB PRINT
FCB EOL
;******************************
;******************************
TSTBRK bsr BRKEEE
beq GETC05
GETCHR bsr INEEE
CMPA #ETX
BNE GETC05
JMP BREAK
GETC05 RTS
PUTCHR INC ZONE
JMP OUTEEE
;******************************
;******************************
INEEE BSR BRKEEE
BEQ INEEE
LDA RECEV
ANDA #$7F
RTS
OUTEEE PSHS A
OUT01 LDA TRCS
BITA #TDRE
BEQ OUT01
PULS A
STA TRANS
RTS
BRKEEE PSHS A
BRK03 LDA TRCS
BITA #ORFE
BEQ BRK05
LDA RECEV
BRA BRK03
BRK05 BITA #RDRF
PULS A
RTS
;*
LDA #CNTL1
STA RMCR
LDA #CNTL2
STA TRCS
INTEEE EQU $
RTS
;******************************
;******************************
END:
jmp reset
:10FFF000E400E400E400E400E400E400E400E400E1
:10E400007EE4154D4F443942415349430010DE0C20
:10E41000BDEBE5201310CE21CC10DF0CBDEBE5CC1D
:10E420000249DD06DD08DD0ABDE53F8EE483BDE57A
:10E430003810DE0C0F19BDE53F9E069F0E8E0000C2
:10E440009F120D192605863ABDEBAABDE590BDE6E3
:10E45000EA240E292BBDE65B810427E1BDE60D20F1
:10E46000D034109E089C0A351027037EE55FC30058
:10E4700000270D340683270F350622048D1020BD9A
:10E480007EE55654494E592056312E333704340612
:10E49000BDE65B9F14A6609E0E9C08270510A30096
:10E4A00024029E06BDE7C49F0E25229F103002A6BF
:10E4B00080810426FA9C08270EA6809F169E10A72E
:10E4C000809F109E1620EE9E109F089F0A9E14C6E5
:10E4D000FF5CA680810426F95D2603326239301F75
:10E4E000CB04301F5AA600812027F78604A7014FCE
:10E4F0009E089F16D308DD08DD0ABDE76224079F4A
:10E50000089F0A7EE54E9E089F109E169C0E270AC5
:10E51000A6829F169E10A78220EE35069E0EED81E4
:10E520009F169E14A6809F149E16A7809F16810496
:10E5300026F039BDEBAA3001A600810426F5398EFC
:10E54000E5478DF40F18390D0A7F000000048D2473
:10E55000534F525259048D1C57484154203F048D4B
:10E5600013484F57203F048D0B425245414B0453F3
:10E57000544F50048DC98607BDEBAADC12BDEA5E7C
:10E580008620BDEBAA35108DAF8DB47EE4318DAF02
:10E590008E0200BDEBA081202514817F27F58C021F
:10E5A00048260486072002A780BDEBAA20E5810843
:10E5B0002724811827D8810A2731810D26D50D19E6
:10E5C0002705BDEBAA20073410BDE53F35108604B2
:10E5D000A7008E0200398C020027B8301F8608BDC4
:10E5E000EBAA8620BDEBAA860820BE1A01061920D8
:10E5F000B830018D66810426F8BDE93196129A1370
:10E6000027149C0826037EE55FEC81DD12BDEB9CA0
:10E610008D0825033406397EE9428D3F9F0E8EEB2F
:10E6200037A680810426059E0E1A01399F169E0E7C
:10E630009F149E14A100261530019F149E16A680DB
:10E640009F16810426ECEC009E141CFE399E16A633
:10E6500080810426FA300220C83001A600812027DC
:10E66000F8398D1A2422814125118146220D8037E7
:10E670001CFE3981412504815A230D1A013981304C
:10E6800025F9813922F580301CFE398DCE8DE425A7
:10E69000121F89A6018DDC24E23001C041584FD3FE
:10E6A0000C1CFE39BDE9103406BDE65B812C270940
:10E6B00081291A0127157EE5563001BDE843340251
:10E6C000BDE65B8129350226ED1CFE30019F0EADB3
:10E6D000F19E0E1CFE39BDE65B812D260D30018DAD
:10E6E000092506405082001CFC39BDE65BBDE67E74
:10E6F000242F81241A01266030016FE26FE2A60008
:10E70000BDE662254F300134103402EC6385F026FB
:10E710004A5849584958495849EBE0ED62351020AC
:10E72000DD300134026FE2A600BDE67E2526300111
:10E7300034103402EC63584929215849291DE363F8
:10E74000291958492915EB608900290FED633261B9
:10E75000351020D335061CFE1CFD39AE6132651A1A
:10E76000033910DF10DC10830030930A39BDE8FD57
:10E7700034063410E672351032624F39BDE8FD348C
:10E7800006BDE65B813D27037EE5563001BDE843CB
:10E79000BDE9313410E772351032627EE5FCBDE62A
:10E7A0005B9F0E8EE7AEBDE6212502340639555338
:10E7B0005204E6A45045454B04E76D4D454D04E732
:10E7C00062049E069C0826031A033910A300260340
:10E7D0001CFC3924051A011CFD3934028604300161
:10E7E0003001A10026FA3502300120D88D553406BB
:10E7F0005FBDE65B813D2723813C261030015CBD77
:10E80000E65B813E26113001CB042013813E265F5A
:10E810003001CB04BDE65B813D26043001CB0234E0
:10E82000048D203410A3631FA8441F894848340472
:10E83000ABE0840626014C5FA4622701534F3510DC
:10E840003263396FE26FE2BDE65B812D2717812BC2
:10E85000260230018D1CE360ED60BDE65B812B2755
:10E86000F1812D260A30018D094050820020E735C4
:10E870000639BDE8E53406BDE65B812A2748812FCD
:10E88000270335063930018D5C341030623406A818
:10E8900000BDE9243060BDE9243402861134024F02
:10E8A0005FA3622406E3621CFE20021A0169676905
:10E8B0006659496A6026EAA66132644D2A043062CC
:10E8C0008D66351020B130018D1B3404E6623DA603
:10E8D00061E761E6603DA662E76235043DAB60AB8F
:10E8E00061ED602092BDE68B250934101F01EC001C
:10E8F000351039BDE6EA24FABDE79E24F58D1134C2
:10E9000002BDE65B8129350226033001397EE556DA
:10E91000BDE76224037EE54EBDE65B812826EE302E
:10E92000017EE8436D002A086000600124026A004D
:10E93000393402BDE65B810427037EE5563001359C
:10E940000239BDE68B24037EE5563406BDE65B81C5
:10E950003D27037EE5563001BDE8438DD49F0E353B
:10E9600010ED009E0E7EE5FCBDE7EC5D27037EE624
:10E970000D7EE5F3BDE8438DB8BDE7C2250F7EE609
:10E9800009BDE8438DAB9F0EBDE7C224037EE55F62
:10E99000BDE76224037EE54EDC0E3406DC1234064D
:10E9A000BDE6093506DD1235107EE5FCBDE65B816E
:10E9B0002C2736813B273D810427258122260630DE
:10E9C000018D422009BDE84334108D473510BDE666
:10E9D0005B812C2714813B271B810427037EE5568E
:10E9E0003410BDE53F35102014C6078620BDEBAAC4
:10E9F000D51826F73001BDE65B810426B230017ED2
:10EA0000E5FCBDEBAAA680810426037EE5568122A3
:10EA100026F0394D2A0D405082003402862DBDEB80
:10EA2000AA35028EEA52300210A30024058CEA5C5B
:10EA300026F40F1610A3002506A3000C1620F534AB
:10EA40000286309B16BDEBAA35028CEA5C270430A7
:10EA50000220DF39271003E80064000A00018EEA73
:10EA60005620CFBDE68B253C34069F0E863FBDEB7E
:10EA7000AABDE590BDE65B810427F1BDE6D6240B77
:10EA80008EEAB8BDE538BDE53F20E19F143510EDB5
:10EA9000009E0EBDE65B812C27037EE5F93001BDAB
:10EAA000E68B24037EE556340634109E14BDE65BE7
:10EAB000812C26C0300120BC52452D454E54455274
:10EAC000049E0C86346F804A26FB9E067EE602BDBD
:10EAD000E6EA24084F5FDD0E867F2017DD0EBDE6D7
:10EAE0005B812C2704960E200A3001BDE6EA240340
:10EAF0007EE556BDE9313406DC0E9F0EBDE7C29CB3
:10EB0000082728350610A30025283406EC81341088
:10EB1000BDEA5E35108620BDEBAABDE53830013474
:10EB200010BDE53F3510BDEB9C20D432628603BD9D
:10EB3000EBAA9E0E7EE5FC4C455404E9424946048E
:10EB4000E968474F544F04E974474F53554204E96D
:10EB50008152455455524E04E931504F4B4504E71C
:10EB60007C5052494E5404E9AC494E50555404EA85
:10EB70006352454D04E5F353544F5004EBE6454EC4
:10EB80004404EBE652554E04EAC14C49535404EA9E
:10EB9000CF4E455704E41F3F04E9AC048D2A2709F2
:10EBA0008D0D810326037EE567390C187EEBB98D48
:10EBB0001727FCB683FF847F393402B683FE8502B3
:10EBC00027F93502B783FF393402B683FE85202743
:10EBD00005B683FF20F485013502398603B783FE2D
:09EBE0008615B783FE397EE400BE
:00000001FF
0000 ;NAM TB01V137
0000 ;* WRITTEN 20-OCT-77 BY JOHN BYRNS
0000 ;* REVISED 30-DEC-77
0000 ;* REVISED 18-JAN-78
0000 ;* REVISED 10-APR-78
0000 ;* REVISED 08-MAY-79 TO ELIMINATE USE OF SP
0000 ;* REVISED 24-JAN-80 TO USE 6801 ON CHIP RAM
0000 ;* REVISED 26-JAN-80 FOR NEW 6801 INSTRUCTIONS
0000 ;* REVISED 24-JUL-81 FOR WHISTON BOARD
0000 ;* REVISED 24-SEP-81 INCLUDE USER FUNCTION
0000 ;* REVISED 08-APR-82 MAKE STANDALONE INCLUDE HEX CONSTANTS AND MEM FUNCTION
0000 ;* REVISED 21-NOV-84 FOR 6809
0000 ;* REVISED FEB 94 ADAPTED TO SIMULATOR AND BUGFIXES BY L.C. BENSCHOP.
0000 ;*
0000 .ENGINE kilo
0000 EOL: EQU $04
0000 ETX: EQU $03
0000 SPACE: EQU $20
0000 CR: EQU $0D
0000 LF: EQU $0A
0000 BS: EQU $08
0000 CAN: EQU $18
0000 BELL: EQU $07
0000 FILL: EQU $00
0000 DEL: EQU $7F
0000 BSIZE: EQU 73
0000 STKCUS: EQU 48
0000 ;*
0000 BACIA: EQU $83FE
0000 RMCR: EQU bACIA
0000 TRCS: EQU bACIA
0000 RECEV: EQU bACIA+1
0000 TRANS: EQU bACIA+1
0000 CNTL1: EQU $03
0000 CNTL2: EQU $15
0000 RDRF: EQU $01
0000 ORFE: EQU $20
0000 TDRE: EQU $02
0000 ;* EDIT THE FOLLOWING EQUATES TO REFLECT THE
0000 ;* DESIRED ROM AND RAM LAYOUT
0000 LORAM: EQU $0080
0000 BUFFER: EQU $0200
0000 RAMSIZ: EQU $2000
0000 ROMADR: EQU $f000
0000 ;*
0000 RAMBEG: EQU BUFFER+BSIZE
0000 RAMEND: EQU BUFFER+RAMSIZ
0000 ;*
0000 RAMPAT: EQU $AA0F
0000 ROMPAT: EQU $F055
0000 ;*
0000 ; ORG LORAM
0000 .BSSEG
0006 .ORG 6
0006 USRBAS: RMB 2
0008 USRTOP: RMB 2
000A STKLIM: RMB 2
000C STKTOP: RMB 2
000E CURSOR: RMB 2
0010 SAVESP: RMB 2
0012 LINENB: RMB 2
0014 SCRTCH: RMB 2
0016 CHAR: RMB 2
0018 ZONE: RMB 1
0019 MODE: RMB 1
001A RESRVD: RMB 1
001B LOEND: EQU $
001B ;*
0000 .CSEG
FFF0 .ORG 0xfff0
FFF0 ;reserved
FFF0 E4 00 DW reset
FFF2 ;SWI3
FFF2 E4 00 DW reset
FFF4 ;SWI2
FFF4 E4 00 DW reset
FFF6 ;FIRQ
FFF6 E4 00 DW reset
FFF8 ;IRQ
FFF8 E4 00 DW reset
FFFA ;SWI
FFFA E4 00 DW reset
FFFC ;NMI
FFFC E4 00 DW reset
FFFE ;RES
FFFE E4 00 DW reset
E400 .ORG $e400
E400 RESET:
E400 .ENT $
E400 7E E4 15 BASIC: JMP SETUP
E403 4D 4F 44 39 42 41 53 49 43 00 .CSTR "MOD9BASIC"
E40D 10 DE 0C WARMS: LDS STKTOP
E410 BD EB E5 JSR INTEEE
E413 20 13 BRA WMS05
E415 10 CE 21 CC SETUP: LDS #RAMEND-52
E419 10 DF 0C SET03: STS STKTOP
E41C BD EB E5 JSR INTEEE
E41F CC 02 49 CLEAR: LDD #RAMBEG
E422 DD 06 STD USRBAS
E424 DD 08 STD USRTOP
E426 DD 0A CLR02: STD STKLIM
E428 BD E5 3F WMS05: JSR CRLF
E42B 8E E4 83 LDX #VSTR
E42E BD E5 38 JSR PUTSTR
E431 10 DE 0C CMDB: LDS STKTOP
E434 0F 19 CLR MODE
E436 BD E5 3F JSR CRLF
E439 9E 06 LDX USRBAS
E43B 9F 0E STX CURSOR
E43D 8E 00 00 CMDE: LDX #0000
E440 9F 12 STX LINENB
E442 0D 19 TST MODE
E444 26 05 BNE CMD01
E446 86 3A LDA #":"
E448 BD EB AA JSR PUTCHR
E44B BD E5 90 CMD01: JSR GETLIN
E44E BD E6 EA JSR TSTNBR
E451 24 0E BCC CMD02
E453 29 2B BVS CMD05
E455 BD E6 5B JSR SKIPSP
E458 81 04 CMPA #EOL
E45A 27 E1 BEQ CMDE
E45C BD E6 0D JSR MSLINE
E45F 20 D0 BRA CMDB
E461 34 10 CMD02: PSHS X
E463 9E 08 LDX USRTOP
E465 9C 0A CMPX STKLIM
E467 35 10 PULS X
E469 27 03 BEQ CMD03
E46B 7E E5 5F JMP ERRORR
E46E C3 00 00 CMD03: ADDD #0
E471 27 0D BEQ CMD05
E473 34 06 CMD04: PSHS D
E475 83 27 0F SUBD #9999
E478 35 06 PULS D
E47A 22 04 BHI CMD05
E47C 8D 10 BSR EDITOR
E47E 20 BD BRA CMDE
E480 7E E5 56 CMD05: JMP ERRORS
E483 54 49 4E 59 20 56 31 2E 33 37 VSTR: DB "TINY V1.37"
E48D 04 FCB EOL
E48E ;******************************
E48E ;******************************
E48E 34 06 EDITOR: PSHS D
E490 BD E6 5B JSR SKIPSP
E493 9F 14 STX SCRTCH
E495 A6 60 LDA 0,S
E497 9E 0E LDX CURSOR
E499 9C 08 CMPX USRTOP
E49B 27 05 BEQ ED00
E49D 10 A3 00 CMPD 0,X
E4A0 24 02 BCC ED01
E4A2 9E 06 ED00: LDX USRBAS
E4A4 BD E7 C4 ED01: JSR FNDLIN
E4A7 9F 0E STX CURSOR
E4A9 25 22 BCS ED04
E4AB 9F 10 STX SAVESP
E4AD 30 02 LEAX 2,X
E4AF A6 80 ED02: LDA ,X+
E4B1 81 04 CMPA #EOL
E4B3 26 FA BNE ED02
E4B5 9C 08 ED03: CMPX USRTOP
E4B7 27 0E BEQ ED35
E4B9 A6 80 LDA ,X+
E4BB 9F 16 STX CHAR
E4BD 9E 10 LDX SAVESP
E4BF A7 80 STA ,X+
E4C1 9F 10 STX SAVESP
E4C3 9E 16 LDX CHAR
E4C5 20 EE BRA ED03
E4C7 9E 10 ED35: LDX SAVESP
E4C9 9F 08 STX USRTOP
E4CB 9F 0A STX STKLIM
E4CD 9E 14 ED04: LDX SCRTCH
E4CF C6 FF LDB #-1
E4D1 5C ED05: INCB
E4D2 A6 80 LDA ,X+
E4D4 81 04 CMPA #EOL
E4D6 26 F9 BNE ED05
E4D8 5D TSTB
E4D9 26 03 BNE ED55
E4DB 32 62 LEAS 2,S
E4DD 39 RTS
E4DE 30 1F ED55: LEAX -1,X
E4E0 CB 04 ADDB #4
E4E2 30 1F ED06: LEAX -1,X
E4E4 5A DECB
E4E5 A6 00 LDA 0,X
E4E7 81 20 CMPA #SPACE
E4E9 27 F7 BEQ ED06
E4EB 86 04 LDA #EOL
E4ED A7 01 STA 1,X
E4EF 4F CLRA
E4F0 9E 08 LDX USRTOP
E4F2 9F 16 STX CHAR
E4F4 D3 08 ADDD USRTOP
E4F6 DD 08 STD USRTOP
E4F8 DD 0A STD STKLIM
E4FA BD E7 62 JSR TSTSTK
E4FD 24 07 BCC ED07
E4FF 9F 08 STX USRTOP
E501 9F 0A STX STKLIM
E503 7E E5 4E JMP ERRORF
E506 9E 08 ED07: LDX USRTOP
E508 9F 10 ED08: STX SAVESP
E50A 9E 16 LDX CHAR
E50C 9C 0E CMPX CURSOR
E50E 27 0A BEQ ED09
E510 A6 82 LDA ,-X
E512 9F 16 STX CHAR
E514 9E 10 LDX SAVESP
E516 A7 82 STA ,-X
E518 20 EE BRA ED08
E51A 35 06 ED09: PULS D
E51C 9E 0E LDX CURSOR
E51E ED 81 STD ,X++
E520 9F 16 STX CHAR
E522 9E 14 ED10: LDX SCRTCH
E524 A6 80 LDA ,X+
E526 9F 14 STX SCRTCH
E528 9E 16 LDX CHAR
E52A A7 80 STA ,X+
E52C 9F 16 STX CHAR
E52E 81 04 CMPA #EOL
E530 26 F0 BNE ED10
E532 39 RTS
E533 ;******************************
E533 ;******************************
E533 BD EB AA PUTS01: JSR PUTCHR
E536 30 01 LEAX 1,X
E538 A6 00 PUTSTR: LDA 0,X
E53A 81 04 CMPA #EOL
E53C 26 F5 BNE PUTS01
E53E 39 RTS
E53F ;******************************
E53F ;******************************
E53F 8E E5 47 CRLF: LDX #CRLFST
E542 8D F4 BSR PUTSTR
E544 0F 18 CLR ZONE
E546 39 RTS
E547 0D 0A 7F 00 00 00 04 CRLFST: FCB CR,LF,DEL,FILL,FILL,FILL,EOL
E54E ;******************************
E54E ;******************************
E54E 8D 24 ERRORF: BSR ER01
E550 53 4F 52 52 59 DB "SORRY"
E555 04 FCB EOL
E556 8D 1C ERRORS: BSR ER01
E558 57 48 41 54 20 3F DB "WHAT ?"
E55E 04 FCB EOL
E55F 8D 13 ERRORR: BSR ER01
E561 48 4F 57 20 3F DB "HOW ?"
E566 04 FCB EOL
E567 8D 0B BREAK: BSR ER01
E569 42 52 45 41 4B DB "BREAK"
E56E 04 FCB EOL
E56F END BSR ER01
E56F 53 54 4F 50 DB "STOP"
E573 04 FCB EOL
E574 8D C9 ER01: BSR CRLF
E576 86 07 LDA #BELL
E578 BD EB AA JSR PUTCHR
E57B DC 12 LDD LINENB
E57D BD EA 5E JSR PRNT4
E580 86 20 LDA #SPACE
E582 BD EB AA JSR PUTCHR
E585 35 10 PULS X
E587 8D AF BSR PUTSTR
E589 8D B4 BSR CRLF
E58B 7E E4 31 JMP CMDB
E58E ;******************************
E58E ;******************************
E58E 8D AF GL00: BSR CRLF
E590 8E 02 00 GETLIN: LDX #BUFFER
E593 BD EB A0 GL03: JSR GETCHR
E596 81 20 CMPA #SPACE
E598 25 14 BCS GL05
E59A 81 7F CMPA #$7F
E59C 27 F5 BEQ GL03
E59E 8C 02 48 CMPX #BUFFER+BSIZE-1
E5A1 26 04 BNE GL04
E5A3 86 07 LDA #BELL
E5A5 20 02 BRA GL02
E5A7 A7 80 GL04: STA ,X+
E5A9 BD EB AA GL02: JSR PUTCHR
E5AC 20 E5 BRA GL03
E5AE 81 08 GL05: CMPA #BS
E5B0 27 24 BEQ GL07
E5B2 81 18 CMPA #CAN
E5B4 27 D8 BEQ GL00
E5B6 81 0A CMPA #LF
E5B8 27 31 BEQ GL09
E5BA 81 0D CMPA #CR
E5BC 26 D5 BNE GL03
E5BE 0D 19 TST MODE
E5C0 27 05 BEQ GL06
E5C2 BD EB AA JSR PUTCHR
E5C5 20 07 BRA GL08
E5C7 34 10 GL06: PSHS X
E5C9 BD E5 3F JSR CRLF
E5CC 35 10 PULS X
E5CE 86 04 GL08: LDA #EOL
E5D0 A7 00 STA 0,X
E5D2 8E 02 00 LDX #BUFFER
E5D5 39 RTS
E5D6 8C 02 00 GL07: CMPX #BUFFER
E5D9 27 B8 BEQ GL03
E5DB 30 1F LEAX -1,X
E5DD 86 08 LDA #BS
E5DF BD EB AA JSR PUTCHR
E5E2 86 20 LDA #SPACE
E5E4 BD EB AA JSR PUTCHR
E5E7 86 08 LDA #BS
E5E9 20 BE BRA GL02
E5EB 1A 01 GL09: ORCC #$01
E5ED 06 19 ROR MODE
E5EF 20 B8 BRA GL02
E5F1 ;******************************
E5F1 ;******************************
E5F1 30 01 REM00: LEAX 1,X
E5F3 8D 66 REM: BSR SKIPSP
E5F5 81 04 CMPA #EOL
E5F7 26 F8 BNE REM00
E5F9 BD E9 31 ENDSMT: JSR TSTEOL
E5FC 96 12 ENDS02: LDA LINENB
E5FE 9A 13 ORA LINENB+1
E600 27 14 BEQ REM09
E602 9C 08 REM05: CMPX USRTOP
E604 26 03 BNE NXTLIN
E606 7E E5 5F JMP ERRORR
E609 EC 81 NXTLIN: LDD ,X++
E60B DD 12 STD LINENB
E60D BD EB 9C MSLINE: JSR TSTBRK
E610 8D 08 BSR IFAN
E612 25 03 BCS IMPLET
E614 34 06 PSHS D
E616 39 REM09: RTS
E617 7E E9 42 IMPLET: JMP LET
E61A ;******************************
E61A ;******************************
E61A 8D 3F IFAN: BSR SKIPSP
E61C 9F 0E STX CURSOR
E61E 8E EB 37 LDX #VERBT
E621 A6 80 FAN00: LDA ,X+
E623 81 04 CMPA #EOL
E625 26 05 BNE FAN04
E627 9E 0E LDX CURSOR
E629 1A 01 ORCC #$01
E62B 39 RTS
E62C 9F 16 FAN04: STX CHAR
E62E 9E 0E LDX CURSOR
E630 9F 14 STX SCRTCH
E632 9E 14 FAN05: LDX SCRTCH
E634 A1 00 CMPA 0,X
E636 26 15 BNE FAN07
E638 30 01 LEAX 1,X
E63A 9F 14 STX SCRTCH
E63C 9E 16 LDX CHAR
E63E A6 80 LDA ,X+
E640 9F 16 STX CHAR
E642 81 04 CMPA #EOL
E644 26 EC BNE FAN05
E646 EC 00 LDD 0,X
E648 9E 14 LDX SCRTCH
E64A 1C FE ANDCC #$FE
E64C 39 RTS
E64D 9E 16 FAN07: LDX CHAR
E64F A6 80 FAN08: LDA ,X+
E651 81 04 CMPA #EOL
E653 26 FA BNE FAN08
E655 30 02 LEAX 2,X
E657 20 C8 BRA FAN00
E659 ;******************************
E659 ;******************************
E659 30 01 NXTNSP: LEAX 1,X
E65B A6 00 SKIPSP: LDA 0,X
E65D 81 20 CMPA #SPACE
E65F 27 F8 BEQ NXTNSP
E661 39 RTS
E662 ;******************************
E662 ;******************************
E662 8D 1A TSTHEX: BSR TSTDIG
E664 24 22 BCC TST05
E666 81 41 CMPA #"A"
E668 25 11 BCS TST03
E66A 81 46 CMPA #"F"
E66C 22 0D BHI TST03
E66E 80 37 SUBA #"A"-10
E670 1C FE ANDCC #$FE
E672 39 RTS
E673 ;******************************
E673 ;******************************
E673 81 41 TSTLTR: CMPA #"A"
E675 25 04 BCS TST03
E677 81 5A CMPA #"Z"
E679 23 0D BLS TST05
E67B 1A 01 TST03: ORCC #$01
E67D 39 RTS
E67E ;******************************
E67E ;******************************
E67E 81 30 TSTDIG: CMPA #"0"
E680 25 F9 BCS TST03
E682 81 39 CMPA #"9"
E684 22 F5 BHI TST03
E686 80 30 SUBA #"0"
E688 1C FE TST05: ANDCC #$FE
E68A 39 RTS
E68B ;******************************
E68B ;******************************
E68B 8D CE TSTVAR: BSR SKIPSP
E68D 8D E4 BSR TSTLTR
E68F 25 12 BCS TSTV03
E691 1F 89 TFR A,B
E693 A6 01 LDA 1,X
E695 8D DC BSR TSTLTR
E697 24 E2 BCC TST03
E699 30 01 LEAX 1,X
E69B C0 41 SUBB #"A"
E69D 58 ASLB
E69E 4F CLRA
E69F D3 0C ADDD STKTOP
E6A1 1C FE TSTV02: ANDCC #$FE
E6A3 39 TSTV03: RTS
E6A4 ;******************************
E6A4 ;******************************
E6A4 BD E9 10 USER: JSR ARGONE
E6A7 34 06 PSHS D
E6A9 BD E6 5B JSR SKIPSP
E6AC 81 2C CMPA #","
E6AE 27 09 BEQ USER03
E6B0 81 29 CMPA #")"
E6B2 1A 01 ORCC #$01
E6B4 27 15 BEQ USER05
E6B6 7E E5 56 USER02: JMP ERRORS
E6B9 30 01 USER03: LEAX 1,X
E6BB BD E8 43 JSR EXPR
E6BE 34 02 PSHS A
E6C0 BD E6 5B JSR SKIPSP
E6C3 81 29 CMPA #")"
E6C5 35 02 PULS A
E6C7 26 ED BNE USER02
E6C9 1C FE ANDCC #$FE
E6CB 30 01 USER05: LEAX 1,X
E6CD 9F 0E STX CURSOR
E6CF AD F1 JSR [,S++]
E6D1 9E 0E LDX CURSOR
E6D3 1C FE ANDCC #$FE
E6D5 39 RTS
E6D6 ;******************************
E6D6 ;******************************
E6D6 BD E6 5B TSTSNB: JSR SKIPSP
E6D9 81 2D CMPA #"-"
E6DB 26 0D BNE TSTNBR
E6DD 30 01 LEAX 1,X
E6DF 8D 09 BSR TSTNBR
E6E1 25 06 BCS TSN02
E6E3 40 NEGA
E6E4 50 NEGB
E6E5 82 00 SBCA #0
E6E7 1C FC ANDCC #$FC
E6E9 39 TSN02: RTS
E6EA ;******************************
E6EA ;******************************
E6EA BD E6 5B TSTNBR: JSR SKIPSP
E6ED BD E6 7E JSR TSTDIG
E6F0 24 2F BCC TSTN02
E6F2 81 24 CMPA #"$"
E6F4 1A 01 ORCC #$01
E6F6 26 60 BNE TSTN09
E6F8 30 01 TSTN20: LEAX 1,X
E6FA 6F E2 CLR ,-S
E6FC 6F E2 CLR ,-S
E6FE A6 00 TSTN23: LDA 0,X
E700 BD E6 62 JSR TSTHEX
E703 25 4F BCS TSTN07
E705 30 01 LEAX 1,X
E707 34 10 PSHS X
E709 34 02 PSHS A
E70B EC 63 LDD 3,S
E70D 85 F0 BITA #$F0
E70F 26 4A BNE TSTN11
E711 58 ASLB
E712 49 ROLA
E713 58 ASLB
E714 49 ROLA
E715 58 ASLB
E716 49 ROLA
E717 58 ASLB
E718 49 ROLA
E719 EB E0 ADDB ,S+
E71B ED 62 STD 2,S
E71D 35 10 PULS X
E71F 20 DD BRA TSTN23
E721 30 01 TSTN02: LEAX 1,X
E723 34 02 PSHS A
E725 6F E2 CLR ,-S
E727 A6 00 TSTN03: LDA 0,X
E729 BD E6 7E JSR TSTDIG
E72C 25 26 BCS TSTN07
E72E 30 01 LEAX 1,X
E730 34 10 PSHS X
E732 34 02 PSHS A
E734 EC 63 LDD 3,S
E736 58 ASLB
E737 49 ROLA
E738 29 21 BVS TSTN11
E73A 58 ASLB
E73B 49 ROLA
E73C 29 1D BVS TSTN11
E73E E3 63 ADDD 3,S
E740 29 19 BVS TSTN11
E742 58 ASLB
E743 49 ROLA
E744 29 15 BVS TSTN11
E746 EB 60 ADDB 0,S
E748 89 00 ADCA #0
E74A 29 0F BVS TSTN11
E74C ED 63 STD 3,S
E74E 32 61 LEAS 1,S
E750 35 10 PULS X
E752 20 D3 BRA TSTN03
E754 35 06 TSTN07: PULS D
E756 1C FE ANDCC #$FE
E758 1C FD TSTN09: ANDCC #$FD
E75A 39 RTS
E75B AE 61 TSTN11: LDX 1,S
E75D 32 65 LEAS 5,S
E75F 1A 03 ORCC #$03
E761 39 RTS
E762 ;******************************
E762 ;******************************
E762 10 DF 10 TSTSTK: STS SAVESP
E765 DC 10 LDD SAVESP
E767 83 00 30 SUBD #STKCUS
E76A 93 0A SUBD STKLIM
E76C 39 RTS
E76D ;******************************
E76D ;******************************
E76D BD E8 FD PEEK: JSR PAREXP
E770 34 06 PSHS D
E772 34 10 PSHS X
E774 E6 72 LDB [2,S]
E776 35 10 PULS X
E778 32 62 LEAS 2,S
E77A 4F CLRA
E77B 39 RTS
E77C ;******************************
E77C ;******************************
E77C BD E8 FD POKE: JSR PAREXP
E77F 34 06 PSHS D
E781 BD E6 5B JSR SKIPSP
E784 81 3D CMPA #"="
E786 27 03 BEQ POKE05
E788 7E E5 56 JMP ERRORS
E78B 30 01 POKE05: LEAX 1,X
E78D BD E8 43 JSR EXPR
E790 BD E9 31 JSR TSTEOL
E793 34 10 PSHS X
E795 E7 72 STB [2,S]
E797 35 10 PULS X
E799 32 62 LEAS 2,S
E79B 7E E5 FC JMP ENDS02
E79E ;******************************
E79E ;******************************
E79E BD E6 5B TSTFUN: JSR SKIPSP
E7A1 9F 0E STX CURSOR
E7A3 8E E7 AE LDX #FUNT
E7A6 BD E6 21 JSR FAN00
E7A9 25 02 BCS TSTF05
E7AB 34 06 PSHS D
E7AD 39 TSTF05: RTS
E7AE ;******************************
E7AE ;******************************
E7AE 55 53 52 FUNT: DB "USR"
E7B1 04 FCB EOL
E7B2 E6 A4 FDB USER
E7B4 50 45 45 4B DB "PEEK"
E7B8 04 FCB EOL
E7B9 E7 6D FDB PEEK
E7BB 4D 45 4D DB "MEM"
E7BE 04 FCB EOL
E7BF E7 62 FDB TSTSTK
E7C1 04 FCB EOL
E7C2 ;******************************
E7C2 ;******************************
E7C2 9E 06 FLINE: LDX USRBAS
E7C4 9C 08 FNDLIN: CMPX USRTOP
E7C6 26 03 BNE FND03
E7C8 1A 03 ORCC #$03
E7CA 39 RTS
E7CB 10 A3 00 FND03: CMPD 0,X
E7CE 26 03 BNE FND05
E7D0 1C FC ANDCC #$FC
E7D2 39 RTS
E7D3 24 05 FND05: BCC FND07
E7D5 1A 01 ORCC #$01
E7D7 1C FD ANDCC #$FD
E7D9 39 RTS
E7DA 34 02 FND07: PSHS A
E7DC 86 04 LDA #EOL
E7DE 30 01 LEAX 1,X
E7E0 30 01 FND09: LEAX 1,X
E7E2 A1 00 CMPA 0,X
E7E4 26 FA BNE FND09
E7E6 35 02 PULS A
E7E8 30 01 LEAX 1,X
E7EA 20 D8 BRA FNDLIN
E7EC ;******************************
E7EC ;******************************
E7EC 8D 55 RELEXP: BSR EXPR
E7EE 34 06 PSHS D
E7F0 5F CLRB
E7F1 BD E6 5B JSR SKIPSP
E7F4 81 3D CMPA #"="
E7F6 27 23 BEQ REL06
E7F8 81 3C CMPA #"<"
E7FA 26 10 BNE REL03
E7FC 30 01 LEAX 1,X
E7FE 5C INCB
E7FF BD E6 5B JSR SKIPSP
E802 81 3E CMPA #">"
E804 26 11 BNE REL05
E806 30 01 LEAX 1,X
E808 CB 04 ADDB #4
E80A 20 13 BRA REL07
E80C 81 3E REL03: CMPA #">"
E80E 26 5F BNE EXPR06
E810 30 01 LEAX 1,X
E812 CB 04 ADDB #4
E814 BD E6 5B JSR SKIPSP
E817 81 3D REL05: CMPA #"="
E819 26 04 BNE REL07
E81B 30 01 REL06: LEAX 1,X
E81D CB 02 ADDB #2
E81F 34 04 REL07: PSHS B
E821 8D 20 BSR EXPR
E823 34 10 PSHS X
E825 A3 63 SUBD 3,S
E827 1F A8 TFR CC,A
E829 44 LSRA
E82A 1F 89 TFR A,B
E82C 48 ASLA
E82D 48 ASLA
E82E 34 04 PSHS B
E830 AB E0 ADDA ,S+
E832 84 06 ANDA #$06
E834 26 01 BNE REL08
E836 4C INCA
E837 5F REL08: CLRB
E838 A4 62 ANDA 2,S
E83A 27 01 BEQ REL09
E83C 53 COMB
E83D 4F REL09: CLRA
E83E 35 10 PULS X
E840 32 63 LEAS 3,S
E842 39 RTS
E843 ;******************************
E843 ;******************************
E843 6F E2 EXPR: CLR ,-S
E845 6F E2 CLR ,-S
E847 BD E6 5B JSR SKIPSP
E84A 81 2D CMPA #"-"
E84C 27 17 BEQ EXPR05
E84E 81 2B CMPA #"+"
E850 26 02 BNE EXPR03
E852 30 01 EXPR02: LEAX 1,X
E854 8D 1C EXPR03: BSR TERM
E856 E3 60 EXPR04: ADDD 0,S
E858 ED 60 STD 0,S
E85A BD E6 5B JSR SKIPSP
E85D 81 2B CMPA #"+"
E85F 27 F1 BEQ EXPR02
E861 81 2D CMPA #"-"
E863 26 0A BNE EXPR06
E865 30 01 EXPR05: LEAX 1,X
E867 8D 09 BSR TERM
E869 40 NEGA
E86A 50 NEGB
E86B 82 00 SBCA #0
E86D 20 E7 BRA EXPR04
E86F 35 06 EXPR06: PULS D
E871 39 RTS
E872 ;******************************
E872 ;******************************
E872 BD E8 E5 TERM: JSR FACT
E875 34 06 PSHS D
E877 BD E6 5B TERM03: JSR SKIPSP
E87A 81 2A CMPA #"*"
E87C 27 48 BEQ TERM07
E87E 81 2F CMPA #"/"
E880 27 03 BEQ TERM05
E882 35 06 PULS D
E884 39 RTS
E885 30 01 TERM05: LEAX 1,X
E887 8D 5C BSR FACT
E889 34 10 PSHS X
E88B 30 62 LEAX 2,S
E88D 34 06 PSHS D
E88F A8 00 EORA 0,X
E891 BD E9 24 JSR ABSX
E894 30 60 LEAX 0,S
E896 BD E9 24 JSR ABSX
E899 34 02 PSHS A
E89B 86 11 LDA #17
E89D 34 02 PSHS A
E89F 4F CLRA
E8A0 5F CLRB
E8A1 A3 62 DIV05: SUBD 2,S
E8A3 24 06 BCC DIV07
E8A5 E3 62 ADDD 2,S
E8A7 1C FE ANDCC #$FE
E8A9 20 02 BRA DIV09
E8AB 1A 01 DIV07: ORCC #$01
E8AD 69 67 DIV09: ROL 7,S
E8AF 69 66 ROL 6,S
E8B1 59 ROLB
E8B2 49 ROLA
E8B3 6A 60 DEC 0,S
E8B5 26 EA BNE DIV05
E8B7 A6 61 LDA 1,S
E8B9 32 64 LEAS 4,S
E8BB 4D TSTA
E8BC 2A 04 BPL TERM06
E8BE 30 62 LEAX 2,S
E8C0 8D 66 BSR NEGX
E8C2 35 10 TERM06: PULS X
E8C4 20 B1 BRA TERM03
E8C6 30 01 TERM07: LEAX 1,X
E8C8 8D 1B BSR FACT
E8CA 34 04 MULT: PSHS B
E8CC E6 62 LDB 2,S
E8CE 3D MUL
E8CF A6 61 LDA 1,S
E8D1 E7 61 STB 1,S
E8D3 E6 60 LDB 0,S
E8D5 3D MUL
E8D6 A6 62 LDA 2,S
E8D8 E7 62 STB 2,S
E8DA 35 04 PULS B
E8DC 3D MUL
E8DD AB 60 ADDA 0,S
E8DF AB 61 ADDA 1,S
E8E1 ED 60 STD 0,S
E8E3 20 92 BRA TERM03
E8E5 ;******************************
E8E5 ;******************************
E8E5 BD E6 8B FACT: JSR TSTVAR
E8E8 25 09 BCS FACT03
E8EA 34 10 PSHS X
E8EC 1F 01 TFR D,X
E8EE EC 00 LDD 0,X
E8F0 35 10 PULS X
E8F2 39 FACT02: RTS
E8F3 BD E6 EA FACT03: JSR TSTNBR
E8F6 24 FA BCC FACT02
E8F8 BD E7 9E JSR TSTFUN
E8FB 24 F5 BCC FACT02
E8FD 8D 11 PAREXP: BSR ARGONE
E8FF 34 02 PSHS A
E901 BD E6 5B JSR SKIPSP
E904 81 29 CMPA #")"
E906 35 02 PULS A
E908 26 03 BNE FACT05
E90A 30 01 LEAX 1,X
E90C 39 RTS
E90D 7E E5 56 FACT05: JMP ERRORS
E910 ;******************************
E910 ;******************************
E910 BD E7 62 ARGONE: JSR TSTSTK
E913 24 03 BCC FACT04
E915 7E E5 4E JMP ERRORF
E918 BD E6 5B FACT04: JSR SKIPSP
E91B 81 28 CMPA #"("
E91D 26 EE BNE FACT05
E91F 30 01 LEAX 1,X
E921 7E E8 43 JMP EXPR
E924 ;******************************
E924 ;******************************
E924 6D 00 ABSX: TST 0,X
E926 2A 08 BPL NEG05
E928 60 00 NEGX: NEG 0,X
E92A 60 01 NEG 1,X
E92C 24 02 BCC NEG05
E92E 6A 00 DEC 0,X
E930 39 NEG05: RTS
E931 ;******************************
E931 ;******************************
E931 34 02 TSTEOL: PSHS A
E933 BD E6 5B JSR SKIPSP
E936 81 04 CMPA #EOL
E938 27 03 BEQ TEOL03
E93A 7E E5 56 JMP ERRORS
E93D 30 01 TEOL03: LEAX 1,X
E93F 35 02 PULS A
E941 39 RTS
E942 ;******************************
E942 ;******************************
E942 BD E6 8B LET: JSR TSTVAR
E945 24 03 BCC LET03
E947 7E E5 56 JMP ERRORS
E94A 34 06 LET03: PSHS D
E94C BD E6 5B JSR SKIPSP
E94F 81 3D CMPA #"="
E951 27 03 BEQ LET05
E953 7E E5 56 JMP ERRORS
E956 30 01 LET05: LEAX 1,X
E958 BD E8 43 JSR EXPR
E95B 8D D4 BSR TSTEOL
E95D 9F 0E STX CURSOR
E95F 35 10 PULS X
E961 ED 00 STD 0,X
E963 9E 0E LDX CURSOR
E965 7E E5 FC JMP ENDS02
E968 ;******************************
E968 ;******************************
E968 BD E7 EC IF: JSR RELEXP
E96B 5D TSTB
E96C 27 03 BEQ IF03
E96E 7E E6 0D JMP MSLINE
E971 7E E5 F3 IF03: JMP REM
E974 ;******************************
E974 ;******************************
E974 BD E8 43 GOTO: JSR EXPR
E977 8D B8 BSR TSTEOL
E979 BD E7 C2 JSR FLINE
E97C 25 0F BCS GOSB04
E97E 7E E6 09 JMP NXTLIN
E981 ;******************************
E981 ;******************************
E981 BD E8 43 GOSUB: JSR EXPR
E984 8D AB BSR TSTEOL
E986 9F 0E STX CURSOR
E988 BD E7 C2 JSR FLINE
E98B 24 03 BCC GOSB03
E98D 7E E5 5F GOSB04: JMP ERRORR
E990 BD E7 62 GOSB03: JSR TSTSTK
E993 24 03 BCC GOSB05
E995 7E E5 4E JMP ERRORF
E998 DC 0E GOSB05: LDD CURSOR
E99A 34 06 PSHS D
E99C DC 12 LDD LINENB
E99E 34 06 PSHS D
E9A0 BD E6 09 JSR NXTLIN
E9A3 35 06 PULS D
E9A5 DD 12 STD LINENB
E9A7 35 10 PULS X
E9A9 7E E5 FC JMP ENDS02
E9AC ;******************************
E9AC ;******************************
E9AC RETURN: EQU TSTEOL
E9AC ;******************************
E9AC ;******************************
E9AC BD E6 5B PRINT: JSR SKIPSP
E9AF 81 2C PR01: CMPA #","
E9B1 27 36 BEQ PR05
E9B3 81 3B CMPA #";"
E9B5 27 3D BEQ PR07
E9B7 81 04 CMPA #EOL
E9B9 27 25 BEQ PR04
E9BB 81 22 CMPA #$22
E9BD 26 06 BNE PR02
E9BF 30 01 LEAX 1,X
E9C1 8D 42 BSR PRNTQS
E9C3 20 09 BRA PR03
E9C5 BD E8 43 PR02: JSR EXPR
E9C8 34 10 PSHS X
E9CA 8D 47 BSR PRNTN
E9CC 35 10 PULS X
E9CE BD E6 5B PR03: JSR SKIPSP
E9D1 81 2C CMPA #","
E9D3 27 14 BEQ PR05
E9D5 81 3B CMPA #";"
E9D7 27 1B BEQ PR07
E9D9 81 04 CMPA #EOL
E9DB 27 03 BEQ PR04
E9DD 7E E5 56 JMP ERRORS
E9E0 34 10 PR04: PSHS X
E9E2 BD E5 3F JSR CRLF
E9E5 35 10 PULS X
E9E7 20 14 BRA PR08
E9E9 C6 07 PR05: LDB #$7
E9EB 86 20 PR06: LDA #SPACE
E9ED BD EB AA JSR PUTCHR
E9F0 D5 18 BITB ZONE
E9F2 26 F7 BNE PR06
E9F4 30 01 PR07: LEAX 1,X
E9F6 BD E6 5B JSR SKIPSP
E9F9 81 04 CMPA #EOL
E9FB 26 B2 BNE PR01
E9FD 30 01 PR08: LEAX 1,X
E9FF 7E E5 FC JMP ENDS02
EA02 ;*
EA02 ;*
EA02 BD EB AA PRQ01: JSR PUTCHR
EA05 A6 80 PRNTQS: LDA ,X+
EA07 81 04 CMPA #EOL
EA09 26 03 BNE PRQ03
EA0B 7E E5 56 JMP ERRORS
EA0E 81 22 PRQ03: CMPA #$22
EA10 26 F0 BNE PRQ01
EA12 39 RTS
EA13 ;*
EA13 4D PRNTN: TSTA
EA14 2A 0D BPL PRN03
EA16 40 NEGA
EA17 50 NEGB
EA18 82 00 SBCA #0
EA1A 34 02 PSHS A
EA1C 86 2D LDA #"-"
EA1E BD EB AA JSR PUTCHR
EA21 35 02 PULS A
EA23 8E EA 52 PRN03: LDX #PRNPT-2
EA26 30 02 PRN05: LEAX 2,X
EA28 10 A3 00 CMPD 0,X
EA2B 24 05 BCC PRN07
EA2D 8C EA 5C CMPX #PRNPTO
EA30 26 F4 BNE PRN05
EA32 0F 16 PRN07: CLR CHAR
EA34 10 A3 00 PRN09: CMPD 0,X
EA37 25 06 BCS PRN11
EA39 A3 00 SUBD 0,X
EA3B 0C 16 INC CHAR
EA3D 20 F5 BRA PRN09
EA3F 34 02 PRN11: PSHS A
EA41 86 30 LDA #"0"
EA43 9B 16 ADDA CHAR
EA45 BD EB AA JSR PUTCHR
EA48 35 02 PULS A
EA4A 8C EA 5C CMPX #PRNPTO
EA4D 27 04 BEQ PRN13
EA4F 30 02 LEAX 2,X
EA51 20 DF BRA PRN07
EA53 39 PRN13: RTS
EA54 27 10 PRNPT: FDB 10000
EA56 03 E8 FDB 1000
EA58 00 64 FDB 100
EA5A 00 0A FDB 10
EA5C 00 01 PRNPTO: FDB 1
EA5E ;*
EA5E 8E EA 56 PRNT4: LDX #PRNPT+2
EA61 20 CF BRA PRN07
EA63 ;******************************
EA63 ;******************************
EA63 BD E6 8B INPUT: JSR TSTVAR
EA66 25 3C BCS IN11
EA68 34 06 PSHS D
EA6A 9F 0E STX CURSOR
EA6C 86 3F IN03: LDA #"?"
EA6E BD EB AA JSR PUTCHR
EA71 BD E5 90 JSR GETLIN
EA74 BD E6 5B IN05: JSR SKIPSP
EA77 81 04 CMPA #EOL
EA79 27 F1 BEQ IN03
EA7B BD E6 D6 JSR TSTSNB
EA7E 24 0B BCC IN07
EA80 8E EA B8 LDX #RMESS
EA83 BD E5 38 JSR PUTSTR
EA86 BD E5 3F JSR CRLF
EA89 20 E1 BRA IN03
EA8B 9F 14 IN07: STX SCRTCH
EA8D 35 10 PULS X
EA8F ED 00 STD 0,X
EA91 9E 0E LDX CURSOR
EA93 BD E6 5B JSR SKIPSP
EA96 81 2C CMPA #","
EA98 27 03 BEQ IN09
EA9A 7E E5 F9 JMP ENDSMT
EA9D 30 01 IN09: LEAX 1,X
EA9F BD E6 8B JSR TSTVAR
EAA2 24 03 BCC IN13
EAA4 7E E5 56 IN11: JMP ERRORS
EAA7 34 06 IN13: PSHS D
EAA9 34 10 PSHS X
EAAB 9E 14 LDX SCRTCH
EAAD BD E6 5B JSR SKIPSP
EAB0 81 2C CMPA #","
EAB2 26 C0 BNE IN05
EAB4 30 01 LEAX 1,X
EAB6 20 BC BRA IN05
EAB8 52 45 2D 45 4E 54 45 52 RMESS: DB "RE-ENTER"
EAC0 04 FCB EOL
EAC1 ;******************************
EAC1 ;******************************
EAC1 9E 0C RUN: LDX STKTOP
EAC3 86 34 LDA #52
EAC5 6F 80 RUN01: CLR ,X+
EAC7 4A DECA
EAC8 26 FB BNE RUN01
EACA 9E 06 LDX USRBAS
EACC 7E E6 02 JMP REM05
EACF ;******************************
EACF ;******************************
EACF BD E6 EA LIST: JSR TSTNBR
EAD2 24 08 BCC LIST03
EAD4 4F CLRA
EAD5 5F CLRB
EAD6 DD 0E STD CURSOR
EAD8 86 7F LDA #$7F
EADA 20 17 BRA LIST07
EADC DD 0E LIST03: STD CURSOR
EADE BD E6 5B JSR SKIPSP
EAE1 81 2C CMPA #","
EAE3 27 04 BEQ LIST05
EAE5 96 0E LDA CURSOR
EAE7 20 0A BRA LIST07
EAE9 30 01 LIST05: LEAX 1,X
EAEB BD E6 EA JSR TSTNBR
EAEE 24 03 BCC LIST07
EAF0 7E E5 56 JMP ERRORS
EAF3 BD E9 31 LIST07: JSR TSTEOL
EAF6 34 06 PSHS D
EAF8 DC 0E LDD CURSOR
EAFA 9F 0E STX CURSOR
EAFC BD E7 C2 JSR FLINE
EAFF 9C 08 LIST09: CMPX USRTOP
EB01 27 28 BEQ LIST10
EB03 35 06 PULS D
EB05 10 A3 00 CMPD 0,X
EB08 25 28 BCS LIST11
EB0A 34 06 PSHS D
EB0C EC 81 LDD ,X++
EB0E 34 10 PSHS X
EB10 BD EA 5E JSR PRNT4
EB13 35 10 PULS X
EB15 86 20 LDA #SPACE
EB17 BD EB AA JSR PUTCHR
EB1A BD E5 38 JSR PUTSTR
EB1D 30 01 LEAX 1,X
EB1F 34 10 PSHS X
EB21 BD E5 3F JSR CRLF
EB24 35 10 PULS X
EB26 BD EB 9C JSR TSTBRK
EB29 20 D4 BRA LIST09
EB2B 32 62 LIST10: LEAS 2,S
EB2D 86 03 LDA #ETX
EB2F BD EB AA JSR PUTCHR
EB32 9E 0E LIST11: LDX CURSOR
EB34 7E E5 FC JMP ENDS02
EB37 ;******************************
EB37 ;******************************
EB37 4C 45 54 VERBT: DB "LET"
EB3A 04 FCB EOL
EB3B E9 42 FDB LET
EB3D 49 46 DB "IF"
EB3F 04 FCB EOL
EB40 E9 68 FDB IF
EB42 47 4F 54 4F DB "GOTO"
EB46 04 FCB EOL
EB47 E9 74 FDB GOTO
EB49 47 4F 53 55 42 DB "GOSUB"
EB4E 04 FCB EOL
EB4F E9 81 FDB GOSUB
EB51 52 45 54 55 52 4E DB "RETURN"
EB57 04 FCB EOL
EB58 E9 31 FDB RETURN
EB5A 50 4F 4B 45 DB "POKE"
EB5E 04 FCB EOL
EB5F E7 7C FDB POKE
EB61 50 52 49 4E 54 DB "PRINT"
EB66 04 FCB EOL
EB67 E9 AC FDB PRINT
EB69 49 4E 50 55 54 DB "INPUT"
EB6E 04 FCB EOL
EB6F EA 63 FDB INPUT
EB71 52 45 4D DB "REM"
EB74 04 FCB EOL
EB75 E5 F3 FDB REM
EB77 53 54 4F 50 DB "STOP"
EB7B 04 FCB EOL
EB7C EB E6 FDB END
EB7E 45 4E 44 DB "END"
EB81 04 FCB EOL
EB82 EB E6 FDB END
EB84 52 55 4E DB "RUN"
EB87 04 FCB EOL
EB88 EA C1 FDB RUN
EB8A 4C 49 53 54 DB "LIST"
EB8E 04 FCB EOL
EB8F EA CF FDB LIST
EB91 4E 45 57 DB "NEW"
EB94 04 FCB EOL
EB95 E4 1F FDB CLEAR
EB97 3F DB "?"
EB98 04 FCB EOL
EB99 E9 AC FDB PRINT
EB9B 04 FCB EOL
EB9C ;******************************
EB9C ;******************************
EB9C 8D 2A TSTBRK: BSR BRKEEE
EB9E 27 09 BEQ GETC05
EBA0 8D 0D GETCHR: BSR INEEE
EBA2 81 03 CMPA #ETX
EBA4 26 03 BNE GETC05
EBA6 7E E5 67 JMP BREAK
EBA9 39 GETC05: RTS
EBAA 0C 18 PUTCHR: INC ZONE
EBAC 7E EB B9 JMP OUTEEE
EBAF ;******************************
EBAF ;******************************
EBAF 8D 17 INEEE: BSR BRKEEE
EBB1 27 FC BEQ INEEE
EBB3 B6 83 FF LDA RECEV
EBB6 84 7F ANDA #$7F
EBB8 39 RTS
EBB9 34 02 OUTEEE: PSHS A
EBBB B6 83 FE OUT01: LDA TRCS
EBBE 85 02 BITA #TDRE
EBC0 27 F9 BEQ OUT01
EBC2 35 02 PULS A
EBC4 B7 83 FF STA TRANS
EBC7 39 RTS
EBC8 34 02 BRKEEE: PSHS A
EBCA B6 83 FE BRK03: LDA TRCS
EBCD 85 20 BITA #ORFE
EBCF 27 05 BEQ BRK05
EBD1 B6 83 FF LDA RECEV
EBD4 20 F4 BRA BRK03
EBD6 85 01 BRK05: BITA #RDRF
EBD8 35 02 PULS A
EBDA 39 RTS
EBDB ;*
EBDB 86 03 LDA #CNTL1
EBDD B7 83 FE STA RMCR
EBE0 86 15 LDA #CNTL2
EBE2 B7 83 FE STA TRCS
EBE5 INTEEE: EQU $
EBE5 39 RTS
EBE6 ;******************************
EBE6 ;******************************
EBE6 END:
EBE6 7E E4 00 JMP reset
EOL: 0004 DEFINED AT LINE 17
> USED AT LINE 146
> USED AT LINE 251
> USED AT LINE 254
> USED AT LINE 257
> USED AT LINE 260
> USED AT LINE 263
> USED AT LINE 579
> USED AT LINE 582
> USED AT LINE 585
> USED AT LINE 587
> USED AT LINE 985
> USED AT LINE 1046
> USED AT LINE 1049
> USED AT LINE 1052
> USED AT LINE 1055
> USED AT LINE 1058
> USED AT LINE 1061
> USED AT LINE 1064
> USED AT LINE 1067
> USED AT LINE 1070
> USED AT LINE 1073
> USED AT LINE 1076
> USED AT LINE 1079
> USED AT LINE 1082
> USED AT LINE 1085
> USED AT LINE 1088
> USED AT LINE 1090
ETX: 0003 DEFINED AT LINE 18
SPACE: 0020 DEFINED AT LINE 19
CR: 000D DEFINED AT LINE 20
> USED AT LINE 246
LF: 000A DEFINED AT LINE 21
> USED AT LINE 246
BS: 0008 DEFINED AT LINE 22
CAN: 0018 DEFINED AT LINE 23
BELL: 0007 DEFINED AT LINE 24
FILL: 0000 DEFINED AT LINE 25
DEL: 007F DEFINED AT LINE 26
BSIZE: 0049 DEFINED AT LINE 27
> USED AT LINE 47
STKCUS: 0030 DEFINED AT LINE 28
BACIA: 83FE DEFINED AT LINE 30
> USED AT LINE 31
> USED AT LINE 32
> USED AT LINE 33
> USED AT LINE 34
RMCR: 83FE DEFINED AT LINE 31
> USED AT LINE 1127
TRCS: 83FE DEFINED AT LINE 32
> USED AT LINE 1110
> USED AT LINE 1117
> USED AT LINE 1129
RECEV: 83FF DEFINED AT LINE 33
> USED AT LINE 1106
> USED AT LINE 1120
TRANS: 83FF DEFINED AT LINE 34
> USED AT LINE 1114
CNTL1: 0003 DEFINED AT LINE 35
CNTL2: 0015 DEFINED AT LINE 36
RDRF: 0001 DEFINED AT LINE 37
ORFE: 0020 DEFINED AT LINE 38
TDRE: 0002 DEFINED AT LINE 39
LORAM: 0080 DEFINED AT LINE 42
BUFFER: 0200 DEFINED AT LINE 43
> USED AT LINE 47
> USED AT LINE 48
RAMSIZ: 2000 DEFINED AT LINE 44
> USED AT LINE 48
ROMADR: F000 DEFINED AT LINE 45
RAMBEG: 0249 DEFINED AT LINE 47
RAMEND: 2200 DEFINED AT LINE 48
RAMPAT: AA0F DEFINED AT LINE 50
ROMPAT: F055 DEFINED AT LINE 51
USRBAS: 0006 DEFINED AT LINE 56
> USED AT LINE 104
> USED AT LINE 113
> USED AT LINE 158
> USED AT LINE 590
> USED AT LINE 993
USRTOP: 0008 DEFINED AT LINE 57
> USED AT LINE 105
> USED AT LINE 131
> USED AT LINE 154
> USED AT LINE 167
> USED AT LINE 177
> USED AT LINE 199
> USED AT LINE 201
> USED AT LINE 202
> USED AT LINE 206
> USED AT LINE 209
> USED AT LINE 332
> USED AT LINE 591
> USED AT LINE 1019
STKLIM: 000A DEFINED AT LINE 58
> USED AT LINE 106
> USED AT LINE 132
> USED AT LINE 178
> USED AT LINE 203
> USED AT LINE 207
> USED AT LINE 539
STKTOP: 000C DEFINED AT LINE 59
> USED AT LINE 97
> USED AT LINE 101
> USED AT LINE 110
> USED AT LINE 425
> USED AT LINE 988
CURSOR: 000E DEFINED AT LINE 60
> USED AT LINE 114
> USED AT LINE 153
> USED AT LINE 160
> USED AT LINE 212
> USED AT LINE 220
> USED AT LINE 346
> USED AT LINE 351
> USED AT LINE 355
> USED AT LINE 448
> USED AT LINE 450
> USED AT LINE 570
> USED AT LINE 813
> USED AT LINE 816
> USED AT LINE 836
> USED AT LINE 843
> USED AT LINE 951
> USED AT LINE 967
> USED AT LINE 1001
> USED AT LINE 1004
> USED AT LINE 1008
> USED AT LINE 1016
> USED AT LINE 1017
> USED AT LINE 1041
SAVESP: 0010 DEFINED AT LINE 61
> USED AT LINE 162
> USED AT LINE 171
> USED AT LINE 173
> USED AT LINE 176
> USED AT LINE 210
> USED AT LINE 216
> USED AT LINE 536
> USED AT LINE 537
LINENB: 0012 DEFINED AT LINE 62
> USED AT LINE 116
> USED AT LINE 267
> USED AT LINE 329
> USED AT LINE 330
> USED AT LINE 336
> USED AT LINE 845
> USED AT LINE 849
SCRTCH: 0014 DEFINED AT LINE 63
> USED AT LINE 151
> USED AT LINE 179
> USED AT LINE 223
> USED AT LINE 225
> USED AT LINE 356
> USED AT LINE 357
> USED AT LINE 361
> USED AT LINE 368
> USED AT LINE 964
> USED AT LINE 978
CHAR: 0016 DEFINED AT LINE 64
> USED AT LINE 170
> USED AT LINE 174
> USED AT LINE 200
> USED AT LINE 211
> USED AT LINE 215
> USED AT LINE 222
> USED AT LINE 226
> USED AT LINE 228
> USED AT LINE 354
> USED AT LINE 362
> USED AT LINE 364
> USED AT LINE 371
> USED AT LINE 922
> USED AT LINE 926
> USED AT LINE 930
ZONE: 0018 DEFINED AT LINE 65
> USED AT LINE 244
> USED AT LINE 888
> USED AT LINE 1100
MODE: 0019 DEFINED AT LINE 66
> USED AT LINE 111
> USED AT LINE 117
> USED AT LINE 299
> USED AT LINE 320
RESRVD: 001A DEFINED AT LINE 67
LOEND: 001B DEFINED AT LINE 68
RESET: E400 DEFINED AT LINE 92
> USED AT LINE 75
> USED AT LINE 77
> USED AT LINE 79
> USED AT LINE 81
> USED AT LINE 83
> USED AT LINE 85
> USED AT LINE 87
> USED AT LINE 89
> USED AT LINE 1138
BASIC: E400 DEFINED AT LINE 95
WARMS: E40D DEFINED AT LINE 97
SETUP: E415 DEFINED AT LINE 100
> USED AT LINE 95
SET03: E419 DEFINED AT LINE 101
CLEAR: E41F DEFINED AT LINE 103
> USED AT LINE 1086
CLR02: E426 DEFINED AT LINE 106
WMS05: E428 DEFINED AT LINE 107
> USED AT LINE 99
CMDB: E431 DEFINED AT LINE 110
> USED AT LINE 129
> USED AT LINE 274
CMDE: E43D DEFINED AT LINE 115
> USED AT LINE 127
> USED AT LINE 143
CMD01: E44B DEFINED AT LINE 121
> USED AT LINE 118
CMD02: E461 DEFINED AT LINE 130
> USED AT LINE 123
CMD03: E46E DEFINED AT LINE 136
> USED AT LINE 134
CMD04: E473 DEFINED AT LINE 138
CMD05: E480 DEFINED AT LINE 144
> USED AT LINE 124
> USED AT LINE 137
> USED AT LINE 141
VSTR: E483 DEFINED AT LINE 145
EDITOR: E48E DEFINED AT LINE 149
> USED AT LINE 142
ED00: E4A2 DEFINED AT LINE 158
> USED AT LINE 155
ED01: E4A4 DEFINED AT LINE 159
> USED AT LINE 157
ED02: E4AF DEFINED AT LINE 164
> USED AT LINE 166
ED03: E4B5 DEFINED AT LINE 167
> USED AT LINE 175
ED35: E4C7 DEFINED AT LINE 176
> USED AT LINE 168
ED04: E4CD DEFINED AT LINE 179
> USED AT LINE 161
ED05: E4D1 DEFINED AT LINE 181
> USED AT LINE 184
ED55: E4DE DEFINED AT LINE 189
> USED AT LINE 186
ED06: E4E2 DEFINED AT LINE 191
> USED AT LINE 195
ED07: E506 DEFINED AT LINE 209
> USED AT LINE 205
ED08: E508 DEFINED AT LINE 210
> USED AT LINE 218
ED09: E51A DEFINED AT LINE 219
> USED AT LINE 213
ED10: E522 DEFINED AT LINE 223
> USED AT LINE 230
PUTS01: E533 DEFINED AT LINE 234
> USED AT LINE 238
PUTSTR: E538 DEFINED AT LINE 236
> USED AT LINE 109
> USED AT LINE 243
> USED AT LINE 272
> USED AT LINE 961
> USED AT LINE 1031
CRLF: E53F DEFINED AT LINE 242
> USED AT LINE 107
> USED AT LINE 112
> USED AT LINE 264
> USED AT LINE 273
> USED AT LINE 277
> USED AT LINE 304
> USED AT LINE 882
> USED AT LINE 962
> USED AT LINE 1034
CRLFST: E547 DEFINED AT LINE 246
ERRORF: E54E DEFINED AT LINE 249
> USED AT LINE 208
> USED AT LINE 775
> USED AT LINE 842
ERRORS: E556 DEFINED AT LINE 252
> USED AT LINE 144
> USED AT LINE 438
> USED AT LINE 558
> USED AT LINE 770
> USED AT LINE 796
> USED AT LINE 804
> USED AT LINE 809
> USED AT LINE 880
> USED AT LINE 902
> USED AT LINE 975
> USED AT LINE 1013
ERRORR: E55F DEFINED AT LINE 255
> USED AT LINE 135
> USED AT LINE 334
> USED AT LINE 839
BREAK: E567 DEFINED AT LINE 258
> USED AT LINE 1098
ER01: E574 DEFINED AT LINE 264
> USED AT LINE 249
> USED AT LINE 252
> USED AT LINE 255
> USED AT LINE 258
GL00: E58E DEFINED AT LINE 277
> USED AT LINE 294
GETLIN: E590 DEFINED AT LINE 278
> USED AT LINE 121
> USED AT LINE 954
GL03: E593 DEFINED AT LINE 279
> USED AT LINE 283
> USED AT LINE 290
> USED AT LINE 298
> USED AT LINE 311
GL04: E5A7 DEFINED AT LINE 288
> USED AT LINE 285
GL02: E5A9 DEFINED AT LINE 289
> USED AT LINE 287
> USED AT LINE 318
> USED AT LINE 321
GL05: E5AE DEFINED AT LINE 291
> USED AT LINE 281
GL06: E5C7 DEFINED AT LINE 303
> USED AT LINE 300
GL08: E5CE DEFINED AT LINE 306
> USED AT LINE 302
GL07: E5D6 DEFINED AT LINE 310
> USED AT LINE 292
GL09: E5EB DEFINED AT LINE 319
> USED AT LINE 296
REM00: E5F1 DEFINED AT LINE 324
> USED AT LINE 327
REM: E5F3 DEFINED AT LINE 325
> USED AT LINE 824
> USED AT LINE 1071
ENDSMT: E5F9 DEFINED AT LINE 328
> USED AT LINE 971
ENDS02: E5FC DEFINED AT LINE 329
> USED AT LINE 566
> USED AT LINE 817
> USED AT LINE 851
> USED AT LINE 895
> USED AT LINE 1042
REM05: E602 DEFINED AT LINE 332
> USED AT LINE 994
NXTLIN: E609 DEFINED AT LINE 335
> USED AT LINE 333
> USED AT LINE 831
> USED AT LINE 847
MSLINE: E60D DEFINED AT LINE 337
> USED AT LINE 128
> USED AT LINE 823
REM09: E616 DEFINED AT LINE 341
> USED AT LINE 331
IMPLET: E617 DEFINED AT LINE 342
> USED AT LINE 339
IFAN: E61A DEFINED AT LINE 345
> USED AT LINE 338
FAN00: E621 DEFINED AT LINE 348
> USED AT LINE 376
> USED AT LINE 572
FAN04: E62C DEFINED AT LINE 354
> USED AT LINE 350
FAN05: E632 DEFINED AT LINE 357
> USED AT LINE 366
FAN07: E64D DEFINED AT LINE 371
> USED AT LINE 359
FAN08: E64F DEFINED AT LINE 372
> USED AT LINE 374
NXTNSP: E659 DEFINED AT LINE 379
> USED AT LINE 382
SKIPSP: E65B DEFINED AT LINE 380
> USED AT LINE 125
> USED AT LINE 150
> USED AT LINE 325
> USED AT LINE 345
> USED AT LINE 414
> USED AT LINE 432
> USED AT LINE 442
> USED AT LINE 455
> USED AT LINE 468
> USED AT LINE 555
> USED AT LINE 569
> USED AT LINE 617
> USED AT LINE 624
> USED AT LINE 634
> USED AT LINE 665
> USED AT LINE 674
> USED AT LINE 691
> USED AT LINE 764
> USED AT LINE 776
> USED AT LINE 793
> USED AT LINE 806
> USED AT LINE 857
> USED AT LINE 873
> USED AT LINE 891
> USED AT LINE 955
> USED AT LINE 968
> USED AT LINE 979
> USED AT LINE 1005
TSTHEX: E662 DEFINED AT LINE 386
> USED AT LINE 478
TSTLTR: E673 DEFINED AT LINE 397
> USED AT LINE 415
> USED AT LINE 419
TST03: E67B DEFINED AT LINE 401
> USED AT LINE 389
> USED AT LINE 391
> USED AT LINE 398
> USED AT LINE 406
> USED AT LINE 408
> USED AT LINE 420
TSTDIG: E67E DEFINED AT LINE 405
> USED AT LINE 386
> USED AT LINE 469
> USED AT LINE 502
TST05: E688 DEFINED AT LINE 410
> USED AT LINE 387
> USED AT LINE 400
TSTVAR: E68B DEFINED AT LINE 414
> USED AT LINE 751
> USED AT LINE 802
> USED AT LINE 948
> USED AT LINE 973
TSTV02: E6A1 DEFINED AT LINE 426
TSTV03: E6A3 DEFINED AT LINE 427
> USED AT LINE 416
USER: E6A4 DEFINED AT LINE 430
> USED AT LINE 580
USER02: E6B6 DEFINED AT LINE 438
> USED AT LINE 445
USER03: E6B9 DEFINED AT LINE 439
> USED AT LINE 434
USER05: E6CB DEFINED AT LINE 447
> USED AT LINE 437
TSTSNB: E6D6 DEFINED AT LINE 455
> USED AT LINE 958
TSN02: E6E9 DEFINED AT LINE 465
> USED AT LINE 460
TSTNBR: E6EA DEFINED AT LINE 468
> USED AT LINE 122
> USED AT LINE 457
> USED AT LINE 459
> USED AT LINE 758
> USED AT LINE 997
> USED AT LINE 1011
TSTN20: E6F8 DEFINED AT LINE 474
TSTN23: E6FE DEFINED AT LINE 477
> USED AT LINE 497
TSTN02: E721 DEFINED AT LINE 498
> USED AT LINE 470
TSTN03: E727 DEFINED AT LINE 501
> USED AT LINE 525
TSTN07: E754 DEFINED AT LINE 526
> USED AT LINE 479
> USED AT LINE 503
TSTN09: E758 DEFINED AT LINE 528
> USED AT LINE 473
TSTN11: E75B DEFINED AT LINE 530
> USED AT LINE 485
> USED AT LINE 510
> USED AT LINE 513
> USED AT LINE 515
> USED AT LINE 518
> USED AT LINE 521
TSTSTK: E762 DEFINED AT LINE 536
> USED AT LINE 204
> USED AT LINE 586
> USED AT LINE 773
> USED AT LINE 840
PEEK: E76D DEFINED AT LINE 543
> USED AT LINE 583
POKE: E77C DEFINED AT LINE 553
> USED AT LINE 1062
POKE05: E78B DEFINED AT LINE 559
> USED AT LINE 557
TSTFUN: E79E DEFINED AT LINE 569
> USED AT LINE 760
TSTF05: E7AD DEFINED AT LINE 575
> USED AT LINE 573
FUNT: E7AE DEFINED AT LINE 578
FLINE: E7C2 DEFINED AT LINE 590
> USED AT LINE 829
> USED AT LINE 837
> USED AT LINE 1018
FNDLIN: E7C4 DEFINED AT LINE 591
> USED AT LINE 159
> USED AT LINE 611
FND03: E7CB DEFINED AT LINE 595
> USED AT LINE 592
FND05: E7D3 DEFINED AT LINE 599
> USED AT LINE 596
FND07: E7DA DEFINED AT LINE 603
> USED AT LINE 599
FND09: E7E0 DEFINED AT LINE 606
> USED AT LINE 608
RELEXP: E7EC DEFINED AT LINE 614
> USED AT LINE 820
REL03: E80C DEFINED AT LINE 630
> USED AT LINE 621
REL05: E817 DEFINED AT LINE 635
> USED AT LINE 626
REL06: E81B DEFINED AT LINE 637
> USED AT LINE 619
REL07: E81F DEFINED AT LINE 639
> USED AT LINE 629
> USED AT LINE 636
REL08: E837 DEFINED AT LINE 653
> USED AT LINE 651
REL09: E83D DEFINED AT LINE 657
> USED AT LINE 655
EXPR: E843 DEFINED AT LINE 663
> USED AT LINE 440
> USED AT LINE 560
> USED AT LINE 614
> USED AT LINE 640
> USED AT LINE 780
> USED AT LINE 811
> USED AT LINE 827
> USED AT LINE 834
> USED AT LINE 869
EXPR02: E852 DEFINED AT LINE 670
> USED AT LINE 676
EXPR03: E854 DEFINED AT LINE 671
> USED AT LINE 669
EXPR04: E856 DEFINED AT LINE 672
> USED AT LINE 684
EXPR05: E865 DEFINED AT LINE 679
> USED AT LINE 667
EXPR06: E86F DEFINED AT LINE 685
> USED AT LINE 631
> USED AT LINE 678
TERM: E872 DEFINED AT LINE 689
> USED AT LINE 671
> USED AT LINE 680
TERM03: E877 DEFINED AT LINE 691
> USED AT LINE 731
> USED AT LINE 748
TERM05: E885 DEFINED AT LINE 698
> USED AT LINE 695
DIV05: E8A1 DEFINED AT LINE 712
> USED AT LINE 723
DIV07: E8AB DEFINED AT LINE 717
> USED AT LINE 713
DIV09: E8AD DEFINED AT LINE 718
> USED AT LINE 716
TERM06: E8C2 DEFINED AT LINE 730
> USED AT LINE 727
TERM07: E8C6 DEFINED AT LINE 732
> USED AT LINE 693
MULT: E8CA DEFINED AT LINE 734
FACT: E8E5 DEFINED AT LINE 751
> USED AT LINE 689
> USED AT LINE 699
> USED AT LINE 733
FACT02: E8F2 DEFINED AT LINE 757
> USED AT LINE 759
> USED AT LINE 761
FACT03: E8F3 DEFINED AT LINE 758
> USED AT LINE 752
PAREXP: E8FD DEFINED AT LINE 762
> USED AT LINE 543
> USED AT LINE 553
FACT05: E90D DEFINED AT LINE 770
> USED AT LINE 767
> USED AT LINE 778
ARGONE: E910 DEFINED AT LINE 773
> USED AT LINE 430
> USED AT LINE 762
FACT04: E918 DEFINED AT LINE 776
> USED AT LINE 774
ABSX: E924 DEFINED AT LINE 783
> USED AT LINE 704
> USED AT LINE 706
NEGX: E928 DEFINED AT LINE 785
> USED AT LINE 729
NEG05: E930 DEFINED AT LINE 789
> USED AT LINE 784
> USED AT LINE 787
TSTEOL: E931 DEFINED AT LINE 792
> USED AT LINE 328
> USED AT LINE 561
> USED AT LINE 812
> USED AT LINE 828
> USED AT LINE 835
> USED AT LINE 854
> USED AT LINE 1014
TEOL03: E93D DEFINED AT LINE 797
> USED AT LINE 795
LET: E942 DEFINED AT LINE 802
> USED AT LINE 342
> USED AT LINE 1047
LET03: E94A DEFINED AT LINE 805
> USED AT LINE 803
LET05: E956 DEFINED AT LINE 810
> USED AT LINE 808
IF: E968 DEFINED AT LINE 820
> USED AT LINE 1050
IF03: E971 DEFINED AT LINE 824
> USED AT LINE 822
GOTO: E974 DEFINED AT LINE 827
> USED AT LINE 1053
GOSUB: E981 DEFINED AT LINE 834
> USED AT LINE 1056
GOSB04: E98D DEFINED AT LINE 839
> USED AT LINE 830
GOSB03: E990 DEFINED AT LINE 840
> USED AT LINE 838
GOSB05: E998 DEFINED AT LINE 843
> USED AT LINE 841
RETURN: E931 DEFINED AT LINE 854
> USED AT LINE 1059
PRINT: E9AC DEFINED AT LINE 857
> USED AT LINE 1065
> USED AT LINE 1089
PR01: E9AF DEFINED AT LINE 858
> USED AT LINE 893
PR02: E9C5 DEFINED AT LINE 869
> USED AT LINE 865
PR03: E9CE DEFINED AT LINE 873
> USED AT LINE 868
PR04: E9E0 DEFINED AT LINE 881
> USED AT LINE 863
> USED AT LINE 879
PR05: E9E9 DEFINED AT LINE 885
> USED AT LINE 859
> USED AT LINE 875
PR06: E9EB DEFINED AT LINE 886
> USED AT LINE 889
PR07: E9F4 DEFINED AT LINE 890
> USED AT LINE 861
> USED AT LINE 877
PR08: E9FD DEFINED AT LINE 894
> USED AT LINE 884
PRQ01: EA02 DEFINED AT LINE 898
> USED AT LINE 904
PRNTQS: EA05 DEFINED AT LINE 899
> USED AT LINE 867
PRQ03: EA0E DEFINED AT LINE 903
> USED AT LINE 901
PRNTN: EA13 DEFINED AT LINE 907
> USED AT LINE 871
PRN03: EA23 DEFINED AT LINE 916
> USED AT LINE 908
PRN05: EA26 DEFINED AT LINE 917
> USED AT LINE 921
PRN07: EA32 DEFINED AT LINE 922
> USED AT LINE 919
> USED AT LINE 936
> USED AT LINE 945
PRN09: EA34 DEFINED AT LINE 923
> USED AT LINE 927
PRN11: EA3F DEFINED AT LINE 928
> USED AT LINE 924
PRN13: EA53 DEFINED AT LINE 937
> USED AT LINE 934
PRNPT: EA54 DEFINED AT LINE 938
PRNPTO: EA5C DEFINED AT LINE 942
PRNT4: EA5E DEFINED AT LINE 944
> USED AT LINE 268
> USED AT LINE 1027
INPUT: EA63 DEFINED AT LINE 948
> USED AT LINE 1068
IN03: EA6C DEFINED AT LINE 952
> USED AT LINE 957
> USED AT LINE 963
IN05: EA74 DEFINED AT LINE 955
> USED AT LINE 981
> USED AT LINE 983
IN07: EA8B DEFINED AT LINE 964
> USED AT LINE 959
IN09: EA9D DEFINED AT LINE 972
> USED AT LINE 970
IN11: EAA4 DEFINED AT LINE 975
> USED AT LINE 949
IN13: EAA7 DEFINED AT LINE 976
> USED AT LINE 974
RMESS: EAB8 DEFINED AT LINE 984
RUN: EAC1 DEFINED AT LINE 988
> USED AT LINE 1080
RUN01: EAC5 DEFINED AT LINE 990
> USED AT LINE 992
LIST: EACF DEFINED AT LINE 997
> USED AT LINE 1083
LIST03: EADC DEFINED AT LINE 1004
> USED AT LINE 998
LIST05: EAE9 DEFINED AT LINE 1010
> USED AT LINE 1007
LIST07: EAF3 DEFINED AT LINE 1014
> USED AT LINE 1003
> USED AT LINE 1009
> USED AT LINE 1012
LIST09: EAFF DEFINED AT LINE 1019
> USED AT LINE 1037
LIST10: EB2B DEFINED AT LINE 1038
> USED AT LINE 1020
LIST11: EB32 DEFINED AT LINE 1041
> USED AT LINE 1023
VERBT: EB37 DEFINED AT LINE 1045
TSTBRK: EB9C DEFINED AT LINE 1093
> USED AT LINE 337
> USED AT LINE 1036
GETCHR: EBA0 DEFINED AT LINE 1095
> USED AT LINE 279
GETC05: EBA9 DEFINED AT LINE 1099
> USED AT LINE 1094
> USED AT LINE 1097
PUTCHR: EBAA DEFINED AT LINE 1100
> USED AT LINE 120
> USED AT LINE 234
> USED AT LINE 266
> USED AT LINE 270
> USED AT LINE 289
> USED AT LINE 301
> USED AT LINE 314
> USED AT LINE 316
> USED AT LINE 887
> USED AT LINE 898
> USED AT LINE 914
> USED AT LINE 931
> USED AT LINE 953
> USED AT LINE 1030
> USED AT LINE 1040
INEEE: EBAF DEFINED AT LINE 1104
> USED AT LINE 1095
> USED AT LINE 1105
OUTEEE: EBB9 DEFINED AT LINE 1109
> USED AT LINE 1101
OUT01: EBBB DEFINED AT LINE 1110
> USED AT LINE 1112
BRKEEE: EBC8 DEFINED AT LINE 1116
> USED AT LINE 1093
> USED AT LINE 1104
BRK03: EBCA DEFINED AT LINE 1117
> USED AT LINE 1121
BRK05: EBD6 DEFINED AT LINE 1122
> USED AT LINE 1119
INTEEE: EBE5 DEFINED AT LINE 1130
> USED AT LINE 98
> USED AT LINE 102
END: EBE6 DEFINED AT LINE 1137
> USED AT LINE 1074
> USED AT LINE 1077
;NAM TB01V137
;* WRITTEN 20-OCT-77 BY JOHN BYRNS
;* REVISED 30-DEC-77
;* REVISED 18-JAN-78
;* REVISED 10-APR-78
;* REVISED 08-MAY-79 TO ELIMINATE USE OF SP
;* REVISED 24-JAN-80 TO USE 6801 ON CHIP RAM
;* REVISED 26-JAN-80 FOR NEW 6801 INSTRUCTIONS
;* REVISED 24-JUL-81 FOR WHISTON BOARD
;* REVISED 24-SEP-81 INCLUDE USER FUNCTION
;* REVISED 08-APR-82 MAKE STANDALONE INCLUDE HEX CONSTANTS AND MEM FUNCTION
;* REVISED 21-NOV-84 FOR 6809
;* REVISED FEB 94 ADAPTED TO SIMULATOR AND BUGFIXES BY L.C. BENSCHOP.
;*
.engine kilo
EOL: EQU $04
ETX: EQU $03
SPACE: EQU $20
CR: EQU $0D
LF: EQU $0A
BS: EQU $08
CAN: EQU $18
BELL: EQU $07
FILL: EQU $00
DEL: EQU $7F
BSIZE: EQU 73
STKCUS: EQU 48
;*
bACIA = $83FE
RMCR: EQU bACIA
TRCS: EQU bACIA
RECEV: EQU bACIA+1
TRANS: EQU bACIA+1
CNTL1: EQU $03
CNTL2: EQU $15
RDRF: EQU $01
ORFE: EQU $20
TDRE: EQU $02
;* EDIT THE FOLLOWING EQUATES TO REFLECT THE
;* DESIRED ROM AND RAM LAYOUT
LORAM: EQU $0080 ;ADDRESS OF DIRECT PAGE SCRATCH RAM
BUFFER: EQU $0200 ;ADDRESS OF MAIN RAM
RAMSIZ: EQU $2000 ;SIZE OF MAIN RAM
ROMADR: EQU $f000 ;ADDRESS OF TINY BASIC ROM
;*
RAMBEG: EQU BUFFER+BSIZE
RAMEND: EQU BUFFER+RAMSIZ
;*
RAMPAT: EQU $AA0F
ROMPAT: EQU $F055
;*
; ORG LORAM
.bsseg
USRBAS: RMB 2
USRTOP: RMB 2
STKLIM: RMB 2
STKTOP: RMB 2
CURSOR: RMB 2
SAVESP: RMB 2
LINENB: RMB 2
SCRTCH: RMB 2
CHAR: RMB 2
ZONE: RMB 1
MODE: RMB 1
RESRVD: RMB 1
LOEND: EQU $
;*
.cseg
;;; ORG ROMADR
.align 256
.ent $
BASIC: JMP SETUP
.cstr "MOD9BASIC"
WARMS LDS STKTOP
JSR INTEEE
BRA WMS05
SETUP LDS #RAMEND-52
SET03 STS STKTOP
JSR INTEEE
CLEAR LDD #RAMBEG
STD USRBAS
STD USRTOP
CLR02 STD STKLIM
WMS05 JSR CRLF
LDX #VSTR
JSR PUTSTR
CMDB LDS STKTOP
CLR MODE
JSR CRLF
LDX USRBAS
STX CURSOR
CMDE LDX #0000
STX LINENB
TST MODE
BNE CMD01
LDA #":"
JSR PUTCHR
CMD01 JSR GETLIN
JSR TSTNBR
BCC CMD02
BVS CMD05
JSR SKIPSP
CMPA #EOL
BEQ CMDE
JSR MSLINE
BRA CMDB
CMD02 PSHS X
LDX USRTOP
CMPX STKLIM
PULS X
BEQ CMD03
JMP ERRORR
CMD03 ADDD #0
BEQ CMD05
CMD04 PSHS D
SUBD #9999
PULS D
BHI CMD05
BSR EDITOR
BRA CMDE
CMD05 JMP ERRORS
VSTR DB "TINY V1.37"
FCB EOL
;******************************
;******************************
EDITOR PSHS D
JSR SKIPSP
STX SCRTCH
LDA 0,S
LDX CURSOR
CMPX USRTOP
BEQ ED00
CMPD 0,X
BCC ED01
ED00 LDX USRBAS
ED01 JSR FNDLIN
STX CURSOR
BCS ED04
STX SAVESP
LEAX 2,X
ED02 LDA ,X+
CMPA #EOL
BNE ED02
ED03 CMPX USRTOP
BEQ ED35
LDA ,X+
STX CHAR
LDX SAVESP
STA ,X+
STX SAVESP
LDX CHAR
BRA ED03
ED35 LDX SAVESP
STX USRTOP
STX STKLIM
ED04 LDX SCRTCH
LDB #-1
ED05 INCB
LDA ,X+
CMPA #EOL
BNE ED05
TSTB
BNE ED55
LEAS 2,S
RTS
ED55 LEAX -1,X
ADDB #4
ED06 LEAX -1,X
DECB
LDA 0,X
CMPA #SPACE
BEQ ED06
LDA #EOL
STA 1,X
CLRA
LDX USRTOP
STX CHAR
ADDD USRTOP
STD USRTOP
STD STKLIM
JSR TSTSTK
BCC ED07
STX USRTOP
STX STKLIM
JMP ERRORF
ED07 LDX USRTOP
ED08 STX SAVESP
LDX CHAR
CMPX CURSOR
BEQ ED09
LDA ,-X
STX CHAR
LDX SAVESP
STA ,-X
BRA ED08
ED09 PULS D
LDX CURSOR
STD ,X++
STX CHAR
ED10 LDX SCRTCH
LDA ,X+
STX SCRTCH
LDX CHAR
STA ,X+
STX CHAR
CMPA #EOL
BNE ED10
RTS
;******************************
;******************************
PUTS01 JSR PUTCHR
LEAX 1,X
PUTSTR LDA 0,X
CMPA #EOL
BNE PUTS01
RTS
;******************************
;******************************
CRLF LDX #CRLFST
BSR PUTSTR
CLR ZONE
RTS
CRLFST FCB CR,LF,DEL,FILL,FILL,FILL,EOL
;******************************
;******************************
ERRORF BSR ER01
DB "SORRY"
FCB EOL
ERRORS BSR ER01
DB "WHAT ?"
FCB EOL
ERRORR BSR ER01
DB "HOW ?"
FCB EOL
BREAK BSR ER01
DB "BREAK"
FCB EOL
END BSR ER01
DB "STOP"
FCB EOL
ER01 BSR CRLF
LDA #BELL
JSR PUTCHR
LDD LINENB
JSR PRNT4
LDA #SPACE
JSR PUTCHR
PULS X
BSR PUTSTR
BSR CRLF
JMP CMDB
;******************************
;******************************
GL00 BSR CRLF
GETLIN LDX #BUFFER
GL03 JSR GETCHR
CMPA #SPACE
BCS GL05
CMPA #$7F
BEQ GL03
CMPX #BUFFER+BSIZE-1
BNE GL04
LDA #BELL
BRA GL02
GL04 STA ,X+
GL02 JSR PUTCHR
BRA GL03
GL05 CMPA #BS
BEQ GL07
CMPA #CAN
BEQ GL00
CMPA #LF
BEQ GL09
CMPA #CR
BNE GL03
TST MODE
BEQ GL06
JSR PUTCHR
BRA GL08
GL06 PSHS X
JSR CRLF
PULS X
GL08 LDA #EOL
STA 0,X
LDX #BUFFER
RTS
GL07 CMPX #BUFFER
BEQ GL03
LEAX -1,X
LDA #BS
JSR PUTCHR
LDA #SPACE
JSR PUTCHR
LDA #BS
BRA GL02
GL09 ORCC #$01
ROR MODE
BRA GL02
;******************************
;******************************
REM00 LEAX 1,X
REM BSR SKIPSP
CMPA #EOL
BNE REM00
ENDSMT JSR TSTEOL
ENDS02 LDA LINENB
ORA LINENB+1
BEQ REM09
REM05 CMPX USRTOP
BNE NXTLIN
JMP ERRORR
NXTLIN LDD ,X++
STD LINENB
MSLINE JSR TSTBRK
BSR IFAN
BCS IMPLET
PSHS D
REM09 RTS
IMPLET JMP LET
;******************************
;******************************
IFAN BSR SKIPSP
STX CURSOR
LDX #VERBT
FAN00: LDA ,X+
CMPA #EOL
BNE FAN04
LDX CURSOR
ORCC #$01
RTS
FAN04 STX CHAR
LDX CURSOR
STX SCRTCH
FAN05 LDX SCRTCH
CMPA 0,X
BNE FAN07
LEAX 1,X
STX SCRTCH
LDX CHAR
LDA ,X+
STX CHAR
CMPA #EOL
BNE FAN05
LDD 0,X
LDX SCRTCH
ANDCC #$FE
RTS
FAN07 LDX CHAR
FAN08 LDA ,X+
CMPA #EOL
BNE FAN08
LEAX 2,X
BRA FAN00
;******************************
;******************************
NXTNSP LEAX 1,X
SKIPSP LDA 0,X
CMPA #SPACE
BEQ NXTNSP
RTS
;******************************
;******************************
TSTHEX BSR TSTDIG
BCC TST05
CMPA #"A"
BCS TST03
CMPA #"F"
BHI TST03
SUBA #"A"-10
ANDCC #$FE
RTS
;******************************
;******************************
TSTLTR CMPA #"A"
BCS TST03
CMPA #"Z"
BLS TST05
TST03 ORCC #$01
RTS
;******************************
;******************************
TSTDIG CMPA #"0"
BCS TST03
CMPA #"9"
BHI TST03
SUBA #"0"
TST05 ANDCC #$FE
RTS
;******************************
;******************************
TSTVAR BSR SKIPSP
BSR TSTLTR
BCS TSTV03
TFR A,B
LDA 1,X
BSR TSTLTR
BCC TST03
LEAX 1,X
SUBB #"A"
ASLB
CLRA
ADDD STKTOP
TSTV02 ANDCC #$FE
TSTV03 RTS
;******************************
;******************************
USER JSR ARGONE
PSHS D
JSR SKIPSP
CMPA #","
BEQ USER03
CMPA #")"
ORCC #$01
BEQ USER05
USER02 JMP ERRORS
USER03 LEAX 1,X
JSR EXPR
PSHS A
JSR SKIPSP
CMPA #")"
PULS A
BNE USER02
ANDCC #$FE
USER05 LEAX 1,X
STX CURSOR
JSR [,S++]
LDX CURSOR
ANDCC #$FE
RTS
;******************************
;******************************
TSTSNB JSR SKIPSP
CMPA #"-"
BNE TSTNBR
LEAX 1,X
BSR TSTNBR
BCS TSN02
NEGA
NEGB
SBCA #0
ANDCC #$FC
TSN02 RTS
;******************************
;******************************
TSTNBR JSR SKIPSP
JSR TSTDIG
BCC TSTN02
CMPA #"$"
ORCC #$01
BNE TSTN09
TSTN20 LEAX 1,X
CLR ,-S
CLR ,-S
TSTN23 LDA 0,X
JSR TSTHEX
BCS TSTN07
LEAX 1,X
PSHS X
PSHS A
LDD 3,S
BITA #$F0
BNE TSTN11
ASLB
ROLA
ASLB
ROLA
ASLB
ROLA
ASLB
ROLA
ADDB ,S+
STD 2,S
PULS X
BRA TSTN23
TSTN02 LEAX 1,X
PSHS A
CLR ,-S
TSTN03 LDA 0,X
JSR TSTDIG
BCS TSTN07
LEAX 1,X
PSHS X
PSHS A
LDD 3,S
ASLB
ROLA
BVS TSTN11
ASLB
ROLA
BVS TSTN11
ADDD 3,S
BVS TSTN11
ASLB
ROLA
BVS TSTN11
ADDB 0,S
ADCA #0
BVS TSTN11
STD 3,S
LEAS 1,S
PULS X
BRA TSTN03
TSTN07 PULS D
ANDCC #$FE
TSTN09 ANDCC #$FD
RTS
TSTN11 LDX 1,S
LEAS 5,S
ORCC #$03
RTS
;******************************
;******************************
TSTSTK STS SAVESP
LDD SAVESP
SUBD #STKCUS
SUBD STKLIM
RTS
;******************************
;******************************
PEEK JSR PAREXP
PSHS D
PSHS X
LDB [2,S]
PULS X
LEAS 2,S
CLRA
RTS
;******************************
;******************************
POKE JSR PAREXP
PSHS D
JSR SKIPSP
CMPA #"="
BEQ POKE05
JMP ERRORS
POKE05 LEAX 1,X
JSR EXPR
JSR TSTEOL
PSHS X
STB [2,S]
PULS X
LEAS 2,S
JMP ENDS02
;******************************
;******************************
TSTFUN JSR SKIPSP
STX CURSOR
LDX #FUNT
JSR FAN00
BCS TSTF05
PSHS D
TSTF05 RTS
;******************************
;******************************
FUNT DB "USR"
FCB EOL
FDB USER
DB "PEEK"
FCB EOL
FDB PEEK
DB "MEM"
FCB EOL
FDB TSTSTK
FCB EOL
;******************************
;******************************
FLINE LDX USRBAS
FNDLIN CMPX USRTOP
BNE FND03
ORCC #$03
RTS
FND03 CMPD 0,X
BNE FND05
ANDCC #$FC
RTS
FND05 BCC FND07
ORCC #$01
ANDCC #$FD
RTS
FND07 PSHS A
LDA #EOL
LEAX 1,X
FND09 LEAX 1,X
CMPA 0,X
BNE FND09
PULS A
LEAX 1,X
BRA FNDLIN
;******************************
;******************************
RELEXP BSR EXPR
PSHS D
CLRB
JSR SKIPSP
CMPA #"="
BEQ REL06
CMPA #"<"
BNE REL03
LEAX 1,X
INCB
JSR SKIPSP
CMPA #">"
BNE REL05
LEAX 1,X
ADDB #4
BRA REL07
REL03 CMPA #">"
BNE EXPR06
LEAX 1,X
ADDB #4
JSR SKIPSP
REL05 CMPA #"="
BNE REL07
REL06 LEAX 1,X
ADDB #2
REL07 PSHS B
BSR EXPR
PSHS X
SUBD 3,S
TFR CC,A
LSRA
TFR A,B
ASLA
ASLA
PSHS B
ADDA ,S+
ANDA #$06
BNE REL08
INCA
REL08 CLRB
ANDA 2,S
BEQ REL09
COMB
REL09 CLRA
PULS X
LEAS 3,S
RTS
;******************************
;******************************
EXPR CLR ,-S
CLR ,-S
JSR SKIPSP
CMPA #"-"
BEQ EXPR05
CMPA #"+"
BNE EXPR03
EXPR02 LEAX 1,X
EXPR03 BSR TERM
EXPR04 ADDD 0,S
STD 0,S
JSR SKIPSP
CMPA #"+"
BEQ EXPR02
CMPA #"-"
BNE EXPR06
EXPR05 LEAX 1,X
BSR TERM
NEGA
NEGB
SBCA #0
BRA EXPR04
EXPR06 PULS D
RTS
;******************************
;******************************
TERM JSR FACT
PSHS D
TERM03 JSR SKIPSP
CMPA #"*"
BEQ TERM07
CMPA #"/"
BEQ TERM05
PULS D
RTS
TERM05 LEAX 1,X
BSR FACT
PSHS X
LEAX 2,S
PSHS D
EORA 0,X
JSR ABSX
LEAX 0,S
JSR ABSX
PSHS A
LDA #17
PSHS A
CLRA
CLRB
DIV05 SUBD 2,S
BCC DIV07
ADDD 2,S
ANDCC #$FE
BRA DIV09
DIV07 ORCC #$01
DIV09 ROL 7,S
ROL 6,S
ROLB
ROLA
DEC 0,S
BNE DIV05
LDA 1,S
LEAS 4,S
TSTA
BPL TERM06
LEAX 2,S
BSR NEGX
TERM06 PULS X
BRA TERM03
TERM07 LEAX 1,X
BSR FACT
MULT PSHS B
LDB 2,S
MUL
LDA 1,S
STB 1,S
LDB 0,S
MUL
LDA 2,S
STB 2,S
PULS B
MUL
ADDA 0,S
ADDA 1,S
STD 0,S
BRA TERM03
;******************************
;******************************
FACT JSR TSTVAR
BCS FACT03
PSHS X
TFR D,X
LDD 0,X
PULS X
FACT02 RTS
FACT03 JSR TSTNBR
BCC FACT02
JSR TSTFUN
BCC FACT02
PAREXP BSR ARGONE
PSHS A
JSR SKIPSP
CMPA #")"
PULS A
BNE FACT05
LEAX 1,X
RTS
FACT05 JMP ERRORS
;******************************
;******************************
ARGONE JSR TSTSTK
BCC FACT04
JMP ERRORF
FACT04 JSR SKIPSP
CMPA #"("
BNE FACT05
LEAX 1,X
JMP EXPR
;******************************
;******************************
ABSX TST 0,X
BPL NEG05
NEGX NEG 0,X
NEG 1,X
BCC NEG05
DEC 0,X
NEG05 RTS
;******************************
;******************************
TSTEOL PSHS A
JSR SKIPSP
CMPA #EOL
BEQ TEOL03
JMP ERRORS
TEOL03 LEAX 1,X
PULS A
RTS
;******************************
;******************************
LET JSR TSTVAR
BCC LET03
JMP ERRORS
LET03 PSHS D
JSR SKIPSP
CMPA #"="
BEQ LET05
JMP ERRORS
LET05 LEAX 1,X
JSR EXPR
BSR TSTEOL
STX CURSOR
PULS X
STD 0,X
LDX CURSOR
JMP ENDS02
;******************************
;******************************
IF: JSR RELEXP
TSTB
BEQ IF03
JMP MSLINE
IF03: JMP REM
;******************************
;******************************
GOTO JSR EXPR
BSR TSTEOL
JSR FLINE
BCS GOSB04
JMP NXTLIN
;******************************
;******************************
GOSUB JSR EXPR
BSR TSTEOL
STX CURSOR
JSR FLINE
BCC GOSB03
GOSB04 JMP ERRORR
GOSB03 JSR TSTSTK
BCC GOSB05
JMP ERRORF
GOSB05 LDD CURSOR
PSHS D
LDD LINENB
PSHS D
JSR NXTLIN
PULS D
STD LINENB
PULS X
JMP ENDS02
;******************************
;******************************
RETURN EQU TSTEOL
;******************************
;******************************
PRINT JSR SKIPSP
PR01 CMPA #","
BEQ PR05
CMPA #";"
BEQ PR07
CMPA #EOL
BEQ PR04
CMPA #$22
BNE PR02
LEAX 1,X
BSR PRNTQS
BRA PR03
PR02 JSR EXPR
PSHS X
BSR PRNTN
PULS X
PR03 JSR SKIPSP
CMPA #","
BEQ PR05
CMPA #";"
BEQ PR07
CMPA #EOL
BEQ PR04
JMP ERRORS
PR04 PSHS X
JSR CRLF
PULS X
BRA PR08
PR05 LDB #$7
PR06 LDA #SPACE
JSR PUTCHR
BITB ZONE
BNE PR06
PR07 LEAX 1,X
JSR SKIPSP
CMPA #EOL
BNE PR01
PR08 LEAX 1,X
JMP ENDS02
;*
;*
PRQ01 JSR PUTCHR
PRNTQS LDA ,X+
CMPA #EOL
BNE PRQ03
JMP ERRORS
PRQ03 CMPA #$22
BNE PRQ01
RTS
;*
PRNTN TSTA
BPL PRN03
NEGA
NEGB
SBCA #0
PSHS A
LDA #"-"
JSR PUTCHR
PULS A
PRN03 LDX #PRNPT-2
PRN05 LEAX 2,X
CMPD 0,X
BCC PRN07
CMPX #PRNPTO
BNE PRN05
PRN07 CLR CHAR
PRN09 CMPD 0,X
BCS PRN11
SUBD 0,X
INC CHAR
BRA PRN09
PRN11 PSHS A
LDA #"0"
ADDA CHAR
JSR PUTCHR
PULS A
CMPX #PRNPTO
BEQ PRN13
LEAX 2,X
BRA PRN07
PRN13 RTS
PRNPT FDB 10000
FDB 1000
FDB 100
FDB 10
PRNPTO FDB 1
;*
PRNT4 LDX #PRNPT+2
BRA PRN07
;******************************
;******************************
INPUT JSR TSTVAR
BCS IN11
PSHS D
STX CURSOR
IN03 LDA #"?"
JSR PUTCHR
JSR GETLIN
IN05 JSR SKIPSP
CMPA #EOL
BEQ IN03
JSR TSTSNB
BCC IN07
LDX #RMESS
JSR PUTSTR
JSR CRLF
BRA IN03
IN07 STX SCRTCH
PULS X
STD 0,X
LDX CURSOR
JSR SKIPSP
CMPA #","
BEQ IN09
JMP ENDSMT
IN09 LEAX 1,X
JSR TSTVAR
BCC IN13
IN11 JMP ERRORS
IN13 PSHS D
PSHS X
LDX SCRTCH
JSR SKIPSP
CMPA #","
BNE IN05
LEAX 1,X
BRA IN05
RMESS DB "RE-ENTER"
FCB EOL
;******************************
;******************************
RUN LDX STKTOP
LDA #52
RUN01 CLR ,X+
DECA
BNE RUN01
LDX USRBAS
JMP REM05
;******************************
;******************************
LIST JSR TSTNBR
BCC LIST03
CLRA
CLRB
STD CURSOR
LDA #$7F
BRA LIST07
LIST03 STD CURSOR
JSR SKIPSP
CMPA #","
BEQ LIST05
LDA CURSOR
BRA LIST07
LIST05 LEAX 1,X
JSR TSTNBR
BCC LIST07
JMP ERRORS
LIST07 JSR TSTEOL
PSHS D
LDD CURSOR
STX CURSOR
JSR FLINE
LIST09 CMPX USRTOP
BEQ LIST10
PULS D
CMPD 0,X
BCS LIST11
PSHS D
LDD ,X++
PSHS X
JSR PRNT4
PULS X
LDA #SPACE
JSR PUTCHR
JSR PUTSTR
LEAX 1,X
PSHS X
JSR CRLF
PULS X
JSR TSTBRK
BRA LIST09
LIST10 LEAS 2,S
LDA #ETX
JSR PUTCHR
LIST11 LDX CURSOR
JMP ENDS02
;******************************
;******************************
VERBT DB "LET"
FCB EOL
FDB LET
DB "IF"
FCB EOL
FDB IF
DB "GOTO"
FCB EOL
FDB GOTO
DB "GOSUB"
FCB EOL
FDB GOSUB
DB "RETURN"
FCB EOL
FDB RETURN
DB "POKE"
FCB EOL
FDB POKE
DB "PRINT"
FCB EOL
FDB PRINT
DB "INPUT"
FCB EOL
FDB INPUT
DB "REM"
FCB EOL
FDB REM
DB "STOP"
FCB EOL
FDB END
DB "END"
FCB EOL
FDB END
DB "RUN"
FCB EOL
FDB RUN
DB "LIST"
FCB EOL
FDB LIST
DB "NEW"
FCB EOL
FDB CLEAR
DB "?"
FCB EOL
FDB PRINT
FCB EOL
;******************************
;******************************
TSTBRK bsr BRKEEE
beq GETC05
GETCHR bsr INEEE
CMPA #ETX
BNE GETC05
JMP BREAK
GETC05 RTS
PUTCHR INC ZONE
JMP OUTEEE
;******************************
;******************************
INEEE BSR BRKEEE
BEQ INEEE
LDA RECEV
ANDA #$7F
RTS
OUTEEE PSHS A
OUT01 LDA TRCS
BITA #TDRE
BEQ OUT01
PULS A
STA TRANS
RTS
BRKEEE PSHS A
BRK03 LDA TRCS
BITA #ORFE
BEQ BRK05
LDA RECEV
BRA BRK03
BRK05 BITA #RDRF
PULS A
RTS
;*
LDA #CNTL1
STA RMCR
LDA #CNTL2
STA TRCS
INTEEE EQU $
RTS
;******************************
;******************************
END:
;NAM TB01V137
;* WRITTEN 20-OCT-77 BY JOHN BYRNS
;* REVISED 30-DEC-77
;* REVISED 18-JAN-78
;* REVISED 10-APR-78
;* REVISED 08-MAY-79 TO ELIMINATE USE OF SP
;* REVISED 24-JAN-80 TO USE 6801 ON CHIP RAM
;* REVISED 26-JAN-80 FOR NEW 6801 INSTRUCTIONS
;* REVISED 24-JUL-81 FOR WHISTON BOARD
;* REVISED 24-SEP-81 INCLUDE USER FUNCTION
;* REVISED 08-APR-82 MAKE STANDALONE INCLUDE HEX CONSTANTS AND MEM FUNCTION
;* REVISED 21-NOV-84 FOR 6809
;* REVISED FEB 94 ADAPTED TO SIMULATOR AND BUGFIXES BY L.C. BENSCHOP.
;*
;.engine kilo
EOL: EQU $04
ETX: EQU $03
SPACE: EQU $20
CR: EQU $0D
LF: EQU $0A
BS: EQU $08
CAN: EQU $18
BELL: EQU $07
FILL: EQU $00
DEL: EQU $7F
BSIZE: EQU 73
STKCUS: EQU 48
;*
bACIA equ $83FE
RMCR EQU bACIA
TRCS EQU bACIA
RECEV EQU bACIA+1
TRANS EQU bACIA+1
CNTL1 EQU $03
CNTL2 EQU $15
RDRF EQU $01
ORFE EQU $20
TDRE EQU $02
;* EDIT THE FOLLOWING EQUATES TO REFLECT THE
;* DESIRED ROM AND RAM LAYOUT
LORAM EQU $0080 ;ADDRESS OF DIRECT PAGE SCRATCH RAM
BUFFER EQU $0200 ;ADDRESS OF MAIN RAM
RAMSIZ EQU $2000 ;SIZE OF MAIN RAM
ROMADR EQU $f000 ;ADDRESS OF TINY BASIC ROM
;*
RAMBEG EQU BUFFER+BSIZE
RAMEND EQU BUFFER+RAMSIZ
;*
RAMPAT EQU $AA0F
ROMPAT EQU $F055
;*
; ORG LORAM
.bsseg
USRBAS: RMB 2
USRTOP: RMB 2
STKLIM: RMB 2
STKTOP: RMB 2
CURSOR: RMB 2
SAVESP: RMB 2
LINENB: RMB 2
SCRTCH: RMB 2
CHAR: RMB 2
ZONE: RMB 1
MODE: RMB 1
RESRVD: RMB 1
LOEND: EQU $
;*
.cseg
;;; ORG ROMADR
.align 256
.ent $
.block
BASIC: JMP SETUP
.cstr "MOD9BASIC"
WARMS LDS STKTOP
JSR INTEEE
BRA WMS05
SETUP LDS #RAMEND-52
SET03 STS STKTOP
JSR INTEEE
CLEAR LDD #RAMBEG
STD USRBAS
STD USRTOP
CLR02 STD STKLIM
WMS05 JSR CRLF
LDX #VSTR
JSR PUTSTR
CMDB LDS STKTOP
CLR MODE
JSR CRLF
LDX USRBAS
STX CURSOR
CMDE LDX #0000
STX LINENB
TST MODE
BNE CMD01
LDA #":"
JSR PUTCHR
CMD01 JSR GETLIN
JSR TSTNBR
BCC CMD02
BVS CMD05
JSR SKIPSP
CMPA #EOL
BEQ CMDE
JSR MSLINE
BRA CMDB
CMD02 PSHS X
LDX USRTOP
CMPX STKLIM
PULS X
BEQ CMD03
JMP ERRORR
CMD03 ADDD #0
BEQ CMD05
CMD04 PSHS D
SUBD #9999
PULS D
BHI CMD05
BSR EDITOR
BRA CMDE
CMD05 JMP ERRORS
VSTR DB "TINY V1.37"
FCB EOL
;******************************
;******************************
EDITOR PSHS D
JSR SKIPSP
STX SCRTCH
LDA 0,S
LDX CURSOR
CMPX USRTOP
BEQ ED00
CMPD 0,X
BCC ED01
ED00 LDX USRBAS
ED01 JSR FNDLIN
STX CURSOR
BCS ED04
STX SAVESP
LEAX 2,X
ED02 LDA ,X+
CMPA #EOL
BNE ED02
ED03 CMPX USRTOP
BEQ ED35
LDA ,X+
STX CHAR
LDX SAVESP
STA ,X+
STX SAVESP
LDX CHAR
BRA ED03
ED35 LDX SAVESP
STX USRTOP
STX STKLIM
ED04 LDX SCRTCH
LDB #-1
ED05 INCB
LDA ,X+
CMPA #EOL
BNE ED05
TSTB
BNE ED55
LEAS 2,S
RTS
ED55 LEAX -1,X
ADDB #4
ED06 LEAX -1,X
DECB
LDA 0,X
CMPA #SPACE
BEQ ED06
LDA #EOL
STA 1,X
CLRA
LDX USRTOP
STX CHAR
ADDD USRTOP
STD USRTOP
STD STKLIM
JSR TSTSTK
BCC ED07
STX USRTOP
STX STKLIM
JMP ERRORF
ED07 LDX USRTOP
ED08 STX SAVESP
LDX CHAR
CMPX CURSOR
BEQ ED09
LDA ,-X
STX CHAR
LDX SAVESP
STA ,-X
BRA ED08
ED09 PULS D
LDX CURSOR
STD ,X++
STX CHAR
ED10 LDX SCRTCH
LDA ,X+
STX SCRTCH
LDX CHAR
STA ,X+
STX CHAR
CMPA #EOL
BNE ED10
RTS
;******************************
;******************************
PUTS01 JSR PUTCHR
LEAX 1,X
PUTSTR LDA 0,X
CMPA #EOL
BNE PUTS01
RTS
;******************************
;******************************
CRLF LDX #CRLFST
BSR PUTSTR
CLR ZONE
RTS
CRLFST FCB CR,LF,DEL,FILL,FILL,FILL,EOL
;******************************
;******************************
ERRORF BSR ER01
DB "SORRY"
FCB EOL
ERRORS BSR ER01
DB "WHAT ?"
FCB EOL
ERRORR BSR ER01
DB "HOW ?"
FCB EOL
BREAK BSR ER01
DB "BREAK"
FCB EOL
END: BSR ER01
DB "STOP"
FCB EOL
ER01 BSR CRLF
LDA #BELL
JSR PUTCHR
LDD LINENB
JSR PRNT4
LDA #SPACE
JSR PUTCHR
PULS X
BSR PUTSTR
BSR CRLF
JMP CMDB
;******************************
;******************************
GL00 BSR CRLF
GETLIN LDX #BUFFER
GL03 JSR GETCHR
CMPA #SPACE
BCS GL05
CMPA #$7F
BEQ GL03
CMPX #BUFFER+BSIZE-1
BNE GL04
LDA #BELL
BRA GL02
GL04 STA ,X+
GL02 JSR PUTCHR
BRA GL03
GL05 CMPA #BS
BEQ GL07
CMPA #CAN
BEQ GL00
CMPA #LF
BEQ GL09
CMPA #CR
BNE GL03
TST MODE
BEQ GL06
JSR PUTCHR
BRA GL08
GL06 PSHS X
JSR CRLF
PULS X
GL08 LDA #EOL
STA 0,X
LDX #BUFFER
RTS
GL07 CMPX #BUFFER
BEQ GL03
LEAX -1,X
LDA #BS
JSR PUTCHR
LDA #SPACE
JSR PUTCHR
LDA #BS
BRA GL02
GL09 ORCC #$01
ROR MODE
BRA GL02
;******************************
;******************************
REM00 LEAX 1,X
REM BSR SKIPSP
CMPA #EOL
BNE REM00
ENDSMT JSR TSTEOL
ENDS02 LDA LINENB
ORA LINENB+1
BEQ REM09
REM05 CMPX USRTOP
BNE NXTLIN
JMP ERRORR
NXTLIN LDD ,X++
STD LINENB
MSLINE JSR TSTBRK
BSR IFAN
BCS IMPLET
PSHS D
REM09 RTS
IMPLET JMP LET
;******************************
;******************************
IFAN BSR SKIPSP
STX CURSOR
LDX #VERBT
FAN00: LDA ,X+
CMPA #EOL
BNE FAN04
LDX CURSOR
ORCC #$01
RTS
FAN04 STX CHAR
LDX CURSOR
STX SCRTCH
FAN05 LDX SCRTCH
CMPA 0,X
BNE FAN07
LEAX 1,X
STX SCRTCH
LDX CHAR
LDA ,X+
STX CHAR
CMPA #EOL
BNE FAN05
LDD 0,X
LDX SCRTCH
ANDCC #$FE
RTS
FAN07 LDX CHAR
FAN08 LDA ,X+
CMPA #EOL
BNE FAN08
LEAX 2,X
BRA FAN00
;******************************
;******************************
NXTNSP LEAX 1,X
SKIPSP LDA 0,X
CMPA #SPACE
BEQ NXTNSP
RTS
;******************************
;******************************
TSTHEX BSR TSTDIG
BCC TST05
CMPA #"A"
BCS TST03
CMPA #"F"
BHI TST03
SUBA #"A"-10
ANDCC #$FE
RTS
;******************************
;******************************
TSTLTR CMPA #"A"
BCS TST03
CMPA #"Z"
BLS TST05
TST03 ORCC #$01
RTS
;******************************
;******************************
TSTDIG CMPA #"0"
BCS TST03
CMPA #"9"
BHI TST03
SUBA #"0"
TST05 ANDCC #$FE
RTS
;******************************
;******************************
TSTVAR BSR SKIPSP
BSR TSTLTR
BCS TSTV03
TFR A,B
LDA 1,X
BSR TSTLTR
BCC TST03
LEAX 1,X
SUBB #"A"
ASLB
CLRA
ADDD STKTOP
TSTV02 ANDCC #$FE
TSTV03 RTS
;******************************
;******************************
USER JSR ARGONE
PSHS D
JSR SKIPSP
CMPA #","
BEQ USER03
CMPA #")"
ORCC #$01
BEQ USER05
USER02 JMP ERRORS
USER03 LEAX 1,X
JSR EXPR
PSHS A
JSR SKIPSP
CMPA #")"
PULS A
BNE USER02
ANDCC #$FE
USER05 LEAX 1,X
STX CURSOR
JSR [,S++]
LDX CURSOR
ANDCC #$FE
RTS
;******************************
;******************************
TSTSNB JSR SKIPSP
CMPA #"-"
BNE TSTNBR
LEAX 1,X
BSR TSTNBR
BCS TSN02
NEGA
NEGB
SBCA #0
ANDCC #$FC
TSN02 RTS
;******************************
;******************************
TSTNBR JSR SKIPSP
JSR TSTDIG
BCC TSTN02
CMPA #"$"
ORCC #$01
BNE TSTN09
TSTN20 LEAX 1,X
CLR ,-S
CLR ,-S
TSTN23 LDA 0,X
JSR TSTHEX
BCS TSTN07
LEAX 1,X
PSHS X
PSHS A
LDD 3,S
BITA #$F0
BNE TSTN11
ASLB
ROLA
ASLB
ROLA
ASLB
ROLA
ASLB
ROLA
ADDB ,S+
STD 2,S
PULS X
BRA TSTN23
TSTN02 LEAX 1,X
PSHS A
CLR ,-S
TSTN03 LDA 0,X
JSR TSTDIG
BCS TSTN07
LEAX 1,X
PSHS X
PSHS A
LDD 3,S
ASLB
ROLA
BVS TSTN11
ASLB
ROLA
BVS TSTN11
ADDD 3,S
BVS TSTN11
ASLB
ROLA
BVS TSTN11
ADDB 0,S
ADCA #0
BVS TSTN11
STD 3,S
LEAS 1,S
PULS X
BRA TSTN03
TSTN07 PULS D
ANDCC #$FE
TSTN09 ANDCC #$FD
RTS
TSTN11 LDX 1,S
LEAS 5,S
ORCC #$03
RTS
;******************************
;******************************
TSTSTK STS SAVESP
LDD SAVESP
SUBD #STKCUS
SUBD STKLIM
RTS
;******************************
;******************************
PEEK JSR PAREXP
PSHS D
PSHS X
LDB [2,S]
PULS X
LEAS 2,S
CLRA
RTS
;******************************
;******************************
POKE JSR PAREXP
PSHS D
JSR SKIPSP
CMPA #"="
BEQ POKE05
JMP ERRORS
POKE05 LEAX 1,X
JSR EXPR
JSR TSTEOL
PSHS X
STB [2,S]
PULS X
LEAS 2,S
JMP ENDS02
;******************************
;******************************
TSTFUN JSR SKIPSP
STX CURSOR
LDX #FUNT
JSR FAN00
BCS TSTF05
PSHS D
TSTF05 RTS
;******************************
;******************************
FUNT DB "USR"
FCB EOL
FDB USER
DB "PEEK"
FCB EOL
FDB PEEK
DB "MEM"
FCB EOL
FDB TSTSTK
FCB EOL
;******************************
;******************************
FLINE LDX USRBAS
FNDLIN CMPX USRTOP
BNE FND03
ORCC #$03
RTS
FND03 CMPD 0,X
BNE FND05
ANDCC #$FC
RTS
FND05 BCC FND07
ORCC #$01
ANDCC #$FD
RTS
FND07 PSHS A
LDA #EOL
LEAX 1,X
FND09 LEAX 1,X
CMPA 0,X
BNE FND09
PULS A
LEAX 1,X
BRA FNDLIN
;******************************
;******************************
RELEXP BSR EXPR
PSHS D
CLRB
JSR SKIPSP
CMPA #"="
BEQ REL06
CMPA #"<"
BNE REL03
LEAX 1,X
INCB
JSR SKIPSP
CMPA #">"
BNE REL05
LEAX 1,X
ADDB #4
BRA REL07
REL03 CMPA #">"
BNE EXPR06
LEAX 1,X
ADDB #4
JSR SKIPSP
REL05 CMPA #"="
BNE REL07
REL06 LEAX 1,X
ADDB #2
REL07 PSHS B
BSR EXPR
PSHS X
SUBD 3,S
TFR CC,A
LSRA
TFR A,B
ASLA
ASLA
PSHS B
ADDA ,S+
ANDA #$06
BNE REL08
INCA
REL08 CLRB
ANDA 2,S
BEQ REL09
COMB
REL09 CLRA
PULS X
LEAS 3,S
RTS
;******************************
;******************************
EXPR CLR ,-S
CLR ,-S
JSR SKIPSP
CMPA #"-"
BEQ EXPR05
CMPA #"+"
BNE EXPR03
EXPR02 LEAX 1,X
EXPR03 BSR TERM
EXPR04 ADDD 0,S
STD 0,S
JSR SKIPSP
CMPA #"+"
BEQ EXPR02
CMPA #"-"
BNE EXPR06
EXPR05 LEAX 1,X
BSR TERM
NEGA
NEGB
SBCA #0
BRA EXPR04
EXPR06 PULS D
RTS
;******************************
;******************************
TERM JSR FACT
PSHS D
TERM03 JSR SKIPSP
CMPA #"*"
BEQ TERM07
CMPA #"/"
BEQ TERM05
PULS D
RTS
TERM05 LEAX 1,X
BSR FACT
PSHS X
LEAX 2,S
PSHS D
EORA 0,X
JSR ABSX
LEAX 0,S
JSR ABSX
PSHS A
LDA #17
PSHS A
CLRA
CLRB
DIV05 SUBD 2,S
BCC DIV07
ADDD 2,S
ANDCC #$FE
BRA DIV09
DIV07 ORCC #$01
DIV09 ROL 7,S
ROL 6,S
ROLB
ROLA
DEC 0,S
BNE DIV05
LDA 1,S
LEAS 4,S
TSTA
BPL TERM06
LEAX 2,S
BSR NEGX
TERM06 PULS X
BRA TERM03
TERM07 LEAX 1,X
BSR FACT
MULT PSHS B
LDB 2,S
MUL
LDA 1,S
STB 1,S
LDB 0,S
MUL
LDA 2,S
STB 2,S
PULS B
MUL
ADDA 0,S
ADDA 1,S
STD 0,S
BRA TERM03
;******************************
;******************************
FACT JSR TSTVAR
BCS FACT03
PSHS X
TFR D,X
LDD 0,X
PULS X
FACT02 RTS
FACT03 JSR TSTNBR
BCC FACT02
JSR TSTFUN
BCC FACT02
PAREXP BSR ARGONE
PSHS A
JSR SKIPSP
CMPA #")"
PULS A
BNE FACT05
LEAX 1,X
RTS
FACT05 JMP ERRORS
;******************************
;******************************
ARGONE JSR TSTSTK
BCC FACT04
JMP ERRORF
FACT04 JSR SKIPSP
CMPA #"("
BNE FACT05
LEAX 1,X
JMP EXPR
;******************************
;******************************
ABSX TST 0,X
BPL NEG05
NEGX NEG 0,X
NEG 1,X
BCC NEG05
DEC 0,X
NEG05 RTS
;******************************
;******************************
TSTEOL PSHS A
JSR SKIPSP
CMPA #EOL
BEQ TEOL03
JMP ERRORS
TEOL03 LEAX 1,X
PULS A
RTS
;******************************
;******************************
LET JSR TSTVAR
BCC LET03
JMP ERRORS
LET03 PSHS D
JSR SKIPSP
CMPA #"="
BEQ LET05
JMP ERRORS
LET05 LEAX 1,X
JSR EXPR
BSR TSTEOL
STX CURSOR
PULS X
STD 0,X
LDX CURSOR
JMP ENDS02
;******************************
;******************************
IF: JSR RELEXP
TSTB
BEQ IF03
JMP MSLINE
IF03: JMP REM
;******************************
;******************************
GOTO JSR EXPR
BSR TSTEOL
JSR FLINE
BCS GOSB04
JMP NXTLIN
;******************************
;******************************
GOSUB JSR EXPR
BSR TSTEOL
STX CURSOR
JSR FLINE
BCC GOSB03
GOSB04 JMP ERRORR
GOSB03 JSR TSTSTK
BCC GOSB05
JMP ERRORF
GOSB05 LDD CURSOR
PSHS D
LDD LINENB
PSHS D
JSR NXTLIN
PULS D
STD LINENB
PULS X
JMP ENDS02
;******************************
;******************************
RETURN EQU TSTEOL
;******************************
;******************************
PRINT JSR SKIPSP
PR01 CMPA #","
BEQ PR05
CMPA #";"
BEQ PR07
CMPA #EOL
BEQ PR04
CMPA #$22
BNE PR02
LEAX 1,X
BSR PRNTQS
BRA PR03
PR02 JSR EXPR
PSHS X
BSR PRNTN
PULS X
PR03 JSR SKIPSP
CMPA #","
BEQ PR05
CMPA #";"
BEQ PR07
CMPA #EOL
BEQ PR04
JMP ERRORS
PR04 PSHS X
JSR CRLF
PULS X
BRA PR08
PR05 LDB #$7
PR06 LDA #SPACE
JSR PUTCHR
BITB ZONE
BNE PR06
PR07 LEAX 1,X
JSR SKIPSP
CMPA #EOL
BNE PR01
PR08 LEAX 1,X
JMP ENDS02
;*
;*
PRQ01 JSR PUTCHR
PRNTQS LDA ,X+
CMPA #EOL
BNE PRQ03
JMP ERRORS
PRQ03 CMPA #$22
BNE PRQ01
RTS
;*
PRNTN TSTA
BPL PRN03
NEGA
NEGB
SBCA #0
PSHS A
LDA #"-"
JSR PUTCHR
PULS A
PRN03 LDX #PRNPT-2
PRN05 LEAX 2,X
CMPD 0,X
BCC PRN07
CMPX #PRNPTO
BNE PRN05
PRN07 CLR CHAR
PRN09 CMPD 0,X
BCS PRN11
SUBD 0,X
INC CHAR
BRA PRN09
PRN11 PSHS A
LDA #"0"
ADDA CHAR
JSR PUTCHR
PULS A
CMPX #PRNPTO
BEQ PRN13
LEAX 2,X
BRA PRN07
PRN13 RTS
PRNPT FDB 10000
FDB 1000
FDB 100
FDB 10
PRNPTO FDB 1
;*
PRNT4 LDX #PRNPT+2
BRA PRN07
;******************************
;******************************
INPUT JSR TSTVAR
BCS IN11
PSHS D
STX CURSOR
IN03 LDA #"?"
JSR PUTCHR
JSR GETLIN
IN05 JSR SKIPSP
CMPA #EOL
BEQ IN03
JSR TSTSNB
BCC IN07
LDX #RMESS
JSR PUTSTR
JSR CRLF
BRA IN03
IN07 STX SCRTCH
PULS X
STD 0,X
LDX CURSOR
JSR SKIPSP
CMPA #","
BEQ IN09
JMP ENDSMT
IN09 LEAX 1,X
JSR TSTVAR
BCC IN13
IN11 JMP ERRORS
IN13 PSHS D
PSHS X
LDX SCRTCH
JSR SKIPSP
CMPA #","
BNE IN05
LEAX 1,X
BRA IN05
RMESS DB "RE-ENTER"
FCB EOL
;******************************
;******************************
RUN LDX STKTOP
LDA #52
RUN01 CLR ,X+
DECA
BNE RUN01
LDX USRBAS
JMP REM05
;******************************
;******************************
LIST JSR TSTNBR
BCC LIST03
CLRA
CLRB
STD CURSOR
LDA #$7F
BRA LIST07
LIST03 STD CURSOR
JSR SKIPSP
CMPA #","
BEQ LIST05
LDA CURSOR
BRA LIST07
LIST05 LEAX 1,X
JSR TSTNBR
BCC LIST07
JMP ERRORS
LIST07 JSR TSTEOL
PSHS D
LDD CURSOR
STX CURSOR
JSR FLINE
LIST09 CMPX USRTOP
BEQ LIST10
PULS D
CMPD 0,X
BCS LIST11
PSHS D
LDD ,X++
PSHS X
JSR PRNT4
PULS X
LDA #SPACE
JSR PUTCHR
JSR PUTSTR
LEAX 1,X
PSHS X
JSR CRLF
PULS X
JSR TSTBRK
BRA LIST09
LIST10 LEAS 2,S
LDA #ETX
JSR PUTCHR
LIST11 LDX CURSOR
JMP ENDS02
;******************************
;******************************
VERBT DB "LET"
FCB EOL
FDB LET
DB "IF"
FCB EOL
FDB IF
DB "GOTO"
FCB EOL
FDB GOTO
DB "GOSUB"
FCB EOL
FDB GOSUB
DB "RETURN"
FCB EOL
FDB RETURN
DB "POKE"
FCB EOL
FDB POKE
DB "PRINT"
FCB EOL
FDB PRINT
DB "INPUT"
FCB EOL
FDB INPUT
DB "REM"
FCB EOL
FDB REM
DB "STOP"
FCB EOL
FDB END
DB "END"
FCB EOL
FDB END
DB "RUN"
FCB EOL
FDB RUN
DB "LIST"
FCB EOL
FDB LIST
DB "NEW"
FCB EOL
FDB CLEAR
DB "?"
FCB EOL
FDB PRINT
FCB EOL
;******************************
;******************************
TSTBRK bsr BRKEEE
beq GETC05
GETCHR bsr INEEE
CMPA #ETX
BNE GETC05
JMP BREAK
GETC05 RTS
PUTCHR INC ZONE
JMP OUTEEE
;******************************
;******************************
INEEE BSR BRKEEE
BEQ INEEE
LDA RECEV
ANDA #$7F
RTS
OUTEEE PSHS A
OUT01 LDA TRCS
BITA #TDRE
BEQ OUT01
PULS A
STA TRANS
RTS
BRKEEE PSHS A
BRK03 LDA TRCS
BITA #ORFE
BEQ BRK05
LDA RECEV
BRA BRK03
BRK05 BITA #RDRF
PULS A
RTS
;*
LDA #CNTL1
STA RMCR
LDA #CNTL2
STA TRCS
INTEEE EQU $
RTS
;******************************
;******************************
.endblock
:100000000E144D4F443942415349430010DE06BDA2
:1000100007E3201310CE21CC10DF06BD07E3CC028E
:1000200049DD00DD02DD04BD013E8E0082BD0137E9
:1000300010DE060F13BD013E9E009F088E00009F3C
:100040000C0D132605863ABD07A8BD018EBD02E83A
:10005000240E292BBD0259810427E1BD020B20D0BB
:1000600034109E029C04351027037E015EC30000FD
:10007000270D340683270F350622048D1020BD7E00
:10008000015554494E592056312E3337043406BD9C
:1000900002599F0EA6609E089C02270510A300240B
:1000A000029E00BD03C29F0825229F0A3002A6803F
:1000B000810426FA9C02270EA6809F109E0AA78024
:1000C0009F0A9E1020EE9E0A9F029F049E0EC6FF6E
:1000D0005CA680810426F95D2603326239301FCB8D
:1000E00004301F5AA600812027F78604A7014F9EDF
:1000F000029F10D302DD02DD04BD036024079F02CE
:100100009F047E014D9E029F0A9E109C08270AA60E
:10011000829F109E0AA78220EE35069E08ED819FE1
:10012000109E0EA6809F0E9E10A7809F1081042611
:10013000F039BD07A83001A600810426F5398E01EB
:10014000468DF40F12390D0A7F000000048D2453F0
:100150004F525259048D1C57484154203F048D136F
:10016000484F57203F048D0B425245414B04535496
:100170004F50048DC98607BD07A8DC0CBD065C8600
:1001800020BD07A835108DAF8DB40E308DB08E0216
:1001900000BD079E81202514817F27F58C0248260B
:1001A0000486072002A780BD07A820E58108272430
:1001B000811827D8810A2731810D26D50D132705EF
:1001C000BD07A820073410BD013E35108604A700E6
:1001D0008E0200398C020027B8301F8608BD07A8A0
:1001E0008620BD07A8860820BE1A01061320B83055
:1001F000018D66810426F8BD052F960C9A0D2714F3
:100200009C0226037E015EEC81DD0CBD079A8D0801
:1002100025033406397E05408D3F9F088E0735A69D
:1002200080810426059E081A01399F109E089F0EA2
:100230009E0EA100261530019F0E9E10A6809F10D5
:10024000810426ECEC009E0E1CFE399E10A68081D7
:100250000426FA300220C83001A600812027F83990
:100260008D1A2422814125118146220D80371CFEE2
:100270003981412504815A230D1A0139813025F92C
:10028000813922F580301CFE398DCE8DE425121F78
:1002900089A6018DDC24E23001C041584FD3061CF1
:1002A000FE39BD050E3406BD0259812C270981296E
:1002B0001A0127157E01553001BD04413402BD02EB
:1002C000598129350226ED1CFE30019F08ADF19EB3
:1002D000081CFE39BD0259812D260D30018D0925DE
:1002E00006405082001CFC39BD0259BD027C242FFF
:1002F00081241A01266030016FE26FE2A600BD0280
:1003000060254F300134103402EC6385F0264A58E2
:1003100049584958495849EBE0ED62351020DD3025
:100320000134026FE2A600BD027C252630013410A4
:100330003402EC63584929215849291DE3632919DE
:1003400058492915EB608900290FED63326135109A
:1003500020D335061CFE1CFD39AE6132651A033907
:1003600010DF0ADC0A830030930439BD04FB340635
:100370003410E672351032624F39BD04FB3406BDCD
:100380000259813D27037E01553001BD0441BD0561
:100390002F3410E772351032627E01FABD02599F88
:1003A000088E03ACBD021F25023406395553520492
:1003B00002A25045454B04036B4D454D04036004B8
:1003C0009E009C0226031A033910A30026031CFC7E
:1003D0003924051A011CFD3934028604300130012C
:1003E000A10026FA3502300120D88D5534065FBDB4
:1003F0000259813D2723813C261030015CBD025902
:10040000813E26113001CB042013813E265F30014E
:10041000CB04BD0259813D26043001CB0234048D4A
:10042000203410A3631FA8441F8948483404ABE05C
:10043000840626014C5FA4622701534F35103263B6
:10044000396FE26FE2BD0259812D2717812B2602F9
:1004500030018D1CE360ED60BD0259812B27F181D5
:100460002D260A30018D094050820020E7350639DB
:10047000BD04E33406BD0259812A2748812F270392
:1004800035063930018D5C341030623406A800BD69
:1004900005223060BD05223402861134024F5FA36D
:1004A000622406E3621CFE20021A0169676966592C
:1004B000496A6026EAA66132644D2A0430628D667C
:1004C000351020B130018D1B3404E6623DA661E792
:1004D00061E6603DA662E76235043DAB60AB61ED6D
:1004E000602092BD0289250934101F01EC003510EF
:1004F00039BD02E824FABD039C24F58D113402BDF8
:1005000002598129350226033001397E0155BD0388
:100510006024037E014DBD0259812826EE30017E04
:1005200004416D002A086000600124026A00393429
:1005300002BD0259810427037E015530013502397D
:10054000BD028924037E01553406BD0259813D2731
:10055000037E01553001BD04418DD49F083510ED57
:10056000009E087E01FABD03EA5D27037E020B7E32
:1005700001F1BD04418DB8BD03C0250F7E0207BD4A
:1005800004418DAB9F08BD03C024037E015EBD0303
:100590006024037E014DDC083406DC0C3406BD0209
:1005A000073506DD0C35107E01FABD0259812C2776
:1005B00036813B273D810427258122260630018D87
:1005C000422009BD044134108D473510BD025981C8
:1005D0002C2714813B271B810427037E01553410EF
:1005E000BD013E35102014C6078620BD07A8D512D0
:1005F00026F73001BD0259810426B230017E01FA8E
:10060000BD07A8A680810426037E0155812226F01D
:10061000394D2A0D405082003402862DBD07A83581
:10062000028E0650300210A30024058C065A26F4D0
:100630000F1010A3002506A3000C1020F53402862D
:10064000309B10BD07A835028C065A2704300220C3
:10065000DF39271003E80064000A00018E065420E9
:10066000CFBD0289253C34069F08863FBD07A8BD43
:10067000018EBD0259810427F1BD02D4240B8E06E0
:10068000B6BD0137BD013E20E19F0E3510ED009E45
:1006900008BD0259812C27037E01F73001BD028974
:1006A00024037E0155340634109E0EBD0259812C60
:1006B00026C0300120BC52452D454E544552049E63
:1006C0000686346F804A26FB9E007E0200BD02E84B
:1006D00024084F5FDD08867F2017DD08BD025981A1
:1006E0002C27049608200A3001BD02E824037E016D
:1006F00055BD052F3406DC089F08BD03C09C0227AA
:1007000028350610A30025283406EC813410BD06D8
:100710005C35108620BD07A8BD013730013410BDFF
:10072000013E3510BD079A20D432628603BD07A86A
:100730009E087E01FA4C455404054049460405666E
:10074000474F544F040572474F53554204057F529B
:10075000455455524E04052F504F4B4504037A50D3
:1007600052494E540405AA494E505554040661524C
:10077000454D0401F153544F500407E4454E4404E1
:1007800007E452554E0406BF4C4953540406CD4E5F
:10079000455704001E3F0405AA048D2A27098D0D24
:1007A000810326037E0166390C127E07B78D172759
:1007B000FCB683FF847F393402B683FE850227F9B5
:1007C0003502B783FF393402B683FE85202705B68C
:1007D00083FF20F485013502398603B783FE861531
:0407E000B783FE39A4
:00000001FF
:100000000E144D4F443942415349430010DE06BDA2
:1000100007E5201310CE21CC10DF06BD07E5CC028A
:1000200049DD00DD02DD04BD013E8E0082BD0137E9
:1000300010DE060F13BD013E9E009F088E00009F3C
:100040000C0D132605863ABD07AABD0190BD02EA34
:10005000240E292BBD025B810427E1BD020D20D0B7
:1000600034109E029C04351027037E015EC30000FD
:10007000270D340683270F350622048D1020BD7E00
:10008000015554494E592056312E3337043406BD9C
:10009000025B9F0EA6609E089C02270510A3002409
:1000A000029E00BD03C49F0825229F0A3002A6803D
:1000B000810426FA9C02270EA6809F109E0AA78024
:1000C0009F0A9E1020EE9E0A9F029F049E0EC6FF6E
:1000D0005CA680810426F95D2603326239301FCB8D
:1000E00004301F5AA600812027F78604A7014F9EDF
:1000F000029F10D302DD02DD04BD036224079F02CC
:100100009F047E014D9E029F0A9E109C08270AA60E
:10011000829F109E0AA78220EE35069E08ED819FE1
:10012000109E0EA6809F0E9E10A7809F1081042611
:10013000F039BD07AA3001A600810426F5398E01E9
:10014000468DF40F12390D0A7F000000048D2653EE
:100150004F525259048D1E57484154203F048D156B
:10016000484F57203F048D0D425245414B048D05A9
:1001700053544F50048DC78607BD07AADC0CBD063B
:100180005E8620BD07AA35108DAD8DB20E308DAEC6
:100190008E0200BD07A081202514817F27F58C02E7
:1001A00048260486072002A780BD07AA20E581080B
:1001B0002724811827D8810A2731810D26D50D13D0
:1001C0002705BD07AA20073410BD013E351086045F
:1001D000A7008E0200398C020027B8301F8608BDA8
:1001E00007AA8620BD07AA860820BE1A010613208A
:1001F000B830018D66810426F8BD0531960C9A0D44
:1002000027149C0226037E015EEC81DD0CBD079C59
:100210008D0825033406397E05428D3F9F088E07E1
:1002200037A680810426059E081A01399F109E0872
:100230009F0E9E0EA100261530019F0E9E10A680D7
:100240009F10810426ECEC009E0E1CFE399E10A629
:1002500080810426FA300220C83001A600812027C0
:10026000F8398D1A2422814125118146220D8037CB
:100270001CFE3981412504815A230D1A0139813030
:1002800025F9813922F580301CFE398DCE8DE4258B
:10029000121F89A6018DDC24E23001C041584FD3E2
:1002A000061CFE39BD05103406BD025B812C2709F2
:1002B00081291A0127157E01553001BD04433402FE
:1002C000BD025B8129350226ED1CFE30019F08AD81
:1002D000F19E081CFE39BD025B812D260D30018D7B
:1002E000092506405082001CFC39BD025BBD027E20
:1002F000242F81241A01266030016FE26FE2A600EC
:10030000BD0262254F300134103402EC6385F026C3
:100310004A5849584958495849EBE0ED6235102090
:10032000DD300134026FE2A600BD027E25263001D9
:1003300034103402EC63584929215849291DE363DC
:10034000291958492915EB608900290FED6332619D
:10035000351020D335061CFE1CFD39AE6132651AFE
:10036000033910DF0ADC0A830030930439BD04FD31
:1003700034063410E672351032624F39BD04FD3454
:1003800006BD025B813D27037E01553001BD04435C
:10039000BD05313410E772351032627E01FCBD02BA
:1003A0005B9F088E03AEBD022125023406395553EA
:1003B000520402A45045454B04036D4D454D0403C2
:1003C00062049E009C0226031A033910A300260330
:1003D0001CFC3924051A011CFD3934028604300145
:1003E0003001A10026FA3502300120D88D5534069F
:1003F0005FBD025B813D2723813C261030015CBD3F
:10040000025B813E26113001CB042013813E265F22
:100410003001CB04BD025B813D26043001CB0234A8
:10042000048D203410A3631FA8441F894848340456
:10043000ABE0840626014C5FA4622701534F3510C0
:100440003263396FE26FE2BD025B812D2717812B8A
:10045000260230018D1CE360ED60BD025B812B271D
:10046000F1812D260A30018D094050820020E735A8
:100470000639BD04E53406BD025B812A2748812F79
:10048000270335063930018D5C341030623406A8FC
:1004900000BD05243060BD05243402861134024FAE
:1004A0005FA3622406E3621CFE20021A01696769E9
:1004B0006659496A6026EAA66132644D2A043062B0
:1004C0008D66351020B130018D1B3404E6623DA6E7
:1004D00061E761E6603DA662E76235043DAB60AB73
:1004E00061ED602092BD028B250934101F01EC00E4
:1004F000351039BD02EA24FABD039E24F58D11346E
:1005000002BD025B8129350226033001397E015587
:10051000BD036224037E014DBD025B812826EE30BF
:10052000017E04436D002A086000600124026A0015
:10053000393402BD025B810427037E015530013549
:100540000239BD028B24037E01553406BD025B8156
:100550003D27037E01553001BD04438DD49F0835EE
:1005600010ED009E087E01FCBD03EC5D27037E02BA
:100570000D7E01F3BD04438DB8BD03C2250F7E027D
:1005800009BD04438DAB9F08BD03C224037E015EF9
:10059000BD036224037E014DDC083406DC0C340606
:1005A000BD02093506DD0C35107E01FCBD025B8104
:1005B0002C2736813B273D810427258122260630C2
:1005C000018D422009BD044334108D473510BD0212
:1005D0005B812C2714813B271B810427037E015557
:1005E0003410BD013E35102014C6078620BD07AA71
:1005F000D51226F73001BD025B810426B230017EA0
:1006000001FCBD07AAA680810426037E0155812234
:1006100026F0394D2A0D405082003402862DBD0748
:10062000AA35028E0652300210A30024058C065C07
:1006300026F40F1010A3002506A3000C1020F5349B
:100640000286309B10BD07AA35028C065C27043059
:100650000220DF39271003E80064000A00018E063B
:100660005620CFBD028B253C34069F08863FBD0730
:10067000AABD0190BD025B810427F1BD02D6240B07
:100680008E06B8BD0137BD013E20E19F0E3510ED4D
:10069000009E08BD025B812C27037E01F93001BD5D
:1006A000028B24037E0155340634109E0EBD025B7E
:1006B000812C26C0300120BC52452D454E54455258
:1006C000049E0686346F804A26FB9E007E0202BD91
:1006D00002EA24084F5FDD08867F2017DD08BD028F
:1006E0005B812C27049608200A3001BD02EA24030E
:1006F0007E0155BD05313406DC089F08BD03C29C50
:10070000022728350610A30025283406EC81341072
:10071000BD065E35108620BD07AABD013730013405
:1007200010BD013E3510BD079C20D432628603BD4A
:1007300007AA9E087E01FC4C455404054249460424
:100740000568474F544F040574474F5355420405FD
:100750008152455455524E040531504F4B450403C8
:100760007C5052494E540405AC494E505554040631
:100770006352454D0401F353544F5004016E454EEE
:100780004404016E52554E0406C14C4953540406AC
:10079000CF4E455704001E3F0405AC048D2A27099F
:1007A0008D0D810326037E0166390C127E07B98DFB
:1007B0001727FCB683FF847F393402B683FE850297
:1007C00027F93502B783FF393402B683FE85202727
:1007D00005B683FF20F485013502398603B783FE11
:0607E0008615B783FE3907
:00000001FF
0000 ;NAM TB01V137
0000 ;* WRITTEN 20-OCT-77 BY JOHN BYRNS
0000 ;* REVISED 30-DEC-77
0000 ;* REVISED 18-JAN-78
0000 ;* REVISED 10-APR-78
0000 ;* REVISED 08-MAY-79 TO ELIMINATE USE OF SP
0000 ;* REVISED 24-JAN-80 TO USE 6801 ON CHIP RAM
0000 ;* REVISED 26-JAN-80 FOR NEW 6801 INSTRUCTIONS
0000 ;* REVISED 24-JUL-81 FOR WHISTON BOARD
0000 ;* REVISED 24-SEP-81 INCLUDE USER FUNCTION
0000 ;* REVISED 08-APR-82 MAKE STANDALONE INCLUDE HEX CONSTANTS AND MEM FUNCTION
0000 ;* REVISED 21-NOV-84 FOR 6809
0000 ;* REVISED FEB 94 ADAPTED TO SIMULATOR AND BUGFIXES BY L.C. BENSCHOP.
0000 ;*
0000 .ENGINE kilo
0000 EOL: EQU $04
0000 ETX: EQU $03
0000 SPACE: EQU $20
0000 CR: EQU $0D
0000 LF: EQU $0A
0000 BS: EQU $08
0000 CAN: EQU $18
0000 BELL: EQU $07
0000 FILL: EQU $00
0000 DEL: EQU $7F
0000 BSIZE: EQU 73
0000 STKCUS: EQU 48
0000 ;*
0000 BACIA: = $83FE
0000 RMCR: EQU bACIA
0000 TRCS: EQU bACIA
0000 RECEV: EQU bACIA+1
0000 TRANS: EQU bACIA+1
0000 CNTL1: EQU $03
0000 CNTL2: EQU $15
0000 RDRF: EQU $01
0000 ORFE: EQU $20
0000 TDRE: EQU $02
0000 ;* EDIT THE FOLLOWING EQUATES TO REFLECT THE
0000 ;* DESIRED ROM AND RAM LAYOUT
0000 LORAM: EQU $0080 ;ADDRESS OF DIRECT PAGE SCRATCH RAM
0000 BUFFER: EQU $0200 ;ADDRESS OF MAIN RAM
0000 RAMSIZ: EQU $2000 ;SIZE OF MAIN RAM
0000 ROMADR: EQU $f000 ;ADDRESS OF TINY BASIC ROM
0000 ;*
0000 RAMBEG: EQU BUFFER+BSIZE
0000 RAMEND: EQU BUFFER+RAMSIZ
0000 ;*
0000 RAMPAT: EQU $AA0F
0000 ROMPAT: EQU $F055
0000 ;*
0000 ; ORG LORAM
0000 .BSSEG
0000 USRBAS: RMB 2
0002 USRTOP: RMB 2
0004 STKLIM: RMB 2
0006 STKTOP: RMB 2
0008 CURSOR: RMB 2
000A SAVESP: RMB 2
000C LINENB: RMB 2
000E SCRTCH: RMB 2
0010 CHAR: RMB 2
0012 ZONE: RMB 1
0013 MODE: RMB 1
0014 RESRVD: RMB 1
0015 LOEND: EQU $
0015 ;*
0000 .CSEG
0000 ; ORG ROMADR
0000 ALIGN 256
0000 .ENT $
0000 0E 14 BASIC: JMP SETUP
0002 4D 4F 44 39 42 41 53 49 43 00 .CSTR "MOD9BASIC"
000C 10 DE 06 WARMS: LDS STKTOP
000F BD 07 E3 JSR INTEEE
0012 20 13 BRA WMS05
0014 10 CE 21 CC SETUP: LDS #RAMEND-52
0018 10 DF 06 SET03: STS STKTOP
001B BD 07 E3 JSR INTEEE
001E CC 02 49 CLEAR: LDD #RAMBEG
0021 DD 00 STD USRBAS
0023 DD 02 STD USRTOP
0025 DD 04 CLR02: STD STKLIM
0027 BD 01 3E WMS05: JSR CRLF
002A 8E 00 82 LDX #VSTR
002D BD 01 37 JSR PUTSTR
0030 10 DE 06 CMDB: LDS STKTOP
0033 0F 13 CLR MODE
0035 BD 01 3E JSR CRLF
0038 9E 00 LDX USRBAS
003A 9F 08 STX CURSOR
003C 8E 00 00 CMDE: LDX #0000
003F 9F 0C STX LINENB
0041 0D 13 TST MODE
0043 26 05 BNE CMD01
0045 86 3A LDA #":"
0047 BD 07 A8 JSR PUTCHR
004A BD 01 8E CMD01: JSR GETLIN
004D BD 02 E8 JSR TSTNBR
0050 24 0E BCC CMD02
0052 29 2B BVS CMD05
0054 BD 02 59 JSR SKIPSP
0057 81 04 CMPA #EOL
0059 27 E1 BEQ CMDE
005B BD 02 0B JSR MSLINE
005E 20 D0 BRA CMDB
0060 34 10 CMD02: PSHS X
0062 9E 02 LDX USRTOP
0064 9C 04 CMPX STKLIM
0066 35 10 PULS X
0068 27 03 BEQ CMD03
006A 7E 01 5E JMP ERRORR
006D C3 00 00 CMD03: ADDD #0
0070 27 0D BEQ CMD05
0072 34 06 CMD04: PSHS D
0074 83 27 0F SUBD #9999
0077 35 06 PULS D
0079 22 04 BHI CMD05
007B 8D 10 BSR EDITOR
007D 20 BD BRA CMDE
007F 7E 01 55 CMD05: JMP ERRORS
0082 54 49 4E 59 20 56 31 2E 33 37 VSTR: DB "TINY V1.37"
008C 04 FCB EOL
008D ;******************************
008D ;******************************
008D 34 06 EDITOR: PSHS D
008F BD 02 59 JSR SKIPSP
0092 9F 0E STX SCRTCH
0094 A6 60 LDA 0,S
0096 9E 08 LDX CURSOR
0098 9C 02 CMPX USRTOP
009A 27 05 BEQ ED00
009C 10 A3 00 CMPD 0,X
009F 24 02 BCC ED01
00A1 9E 00 ED00: LDX USRBAS
00A3 BD 03 C2 ED01: JSR FNDLIN
00A6 9F 08 STX CURSOR
00A8 25 22 BCS ED04
00AA 9F 0A STX SAVESP
00AC 30 02 LEAX 2,X
00AE A6 80 ED02: LDA ,X+
00B0 81 04 CMPA #EOL
00B2 26 FA BNE ED02
00B4 9C 02 ED03: CMPX USRTOP
00B6 27 0E BEQ ED35
00B8 A6 80 LDA ,X+
00BA 9F 10 STX CHAR
00BC 9E 0A LDX SAVESP
00BE A7 80 STA ,X+
00C0 9F 0A STX SAVESP
00C2 9E 10 LDX CHAR
00C4 20 EE BRA ED03
00C6 9E 0A ED35: LDX SAVESP
00C8 9F 02 STX USRTOP
00CA 9F 04 STX STKLIM
00CC 9E 0E ED04: LDX SCRTCH
00CE C6 FF LDB #-1
00D0 5C ED05: INCB
00D1 A6 80 LDA ,X+
00D3 81 04 CMPA #EOL
00D5 26 F9 BNE ED05
00D7 5D TSTB
00D8 26 03 BNE ED55
00DA 32 62 LEAS 2,S
00DC 39 RTS
00DD 30 1F ED55: LEAX -1,X
00DF CB 04 ADDB #4
00E1 30 1F ED06: LEAX -1,X
00E3 5A DECB
00E4 A6 00 LDA 0,X
00E6 81 20 CMPA #SPACE
00E8 27 F7 BEQ ED06
00EA 86 04 LDA #EOL
00EC A7 01 STA 1,X
00EE 4F CLRA
00EF 9E 02 LDX USRTOP
00F1 9F 10 STX CHAR
00F3 D3 02 ADDD USRTOP
00F5 DD 02 STD USRTOP
00F7 DD 04 STD STKLIM
00F9 BD 03 60 JSR TSTSTK
00FC 24 07 BCC ED07
00FE 9F 02 STX USRTOP
0100 9F 04 STX STKLIM
0102 7E 01 4D JMP ERRORF
0105 9E 02 ED07: LDX USRTOP
0107 9F 0A ED08: STX SAVESP
0109 9E 10 LDX CHAR
010B 9C 08 CMPX CURSOR
010D 27 0A BEQ ED09
010F A6 82 LDA ,-X
0111 9F 10 STX CHAR
0113 9E 0A LDX SAVESP
0115 A7 82 STA ,-X
0117 20 EE BRA ED08
0119 35 06 ED09: PULS D
011B 9E 08 LDX CURSOR
011D ED 81 STD ,X++
011F 9F 10 STX CHAR
0121 9E 0E ED10: LDX SCRTCH
0123 A6 80 LDA ,X+
0125 9F 0E STX SCRTCH
0127 9E 10 LDX CHAR
0129 A7 80 STA ,X+
012B 9F 10 STX CHAR
012D 81 04 CMPA #EOL
012F 26 F0 BNE ED10
0131 39 RTS
0132 ;******************************
0132 ;******************************
0132 BD 07 A8 PUTS01: JSR PUTCHR
0135 30 01 LEAX 1,X
0137 A6 00 PUTSTR: LDA 0,X
0139 81 04 CMPA #EOL
013B 26 F5 BNE PUTS01
013D 39 RTS
013E ;******************************
013E ;******************************
013E 8E 01 46 CRLF: LDX #CRLFST
0141 8D F4 BSR PUTSTR
0143 0F 12 CLR ZONE
0145 39 RTS
0146 0D 0A 7F 00 00 00 04 CRLFST: FCB CR,LF,DEL,FILL,FILL,FILL,EOL
014D ;******************************
014D ;******************************
014D 8D 24 ERRORF: BSR ER01
014F 53 4F 52 52 59 DB "SORRY"
0154 04 FCB EOL
0155 8D 1C ERRORS: BSR ER01
0157 57 48 41 54 20 3F DB "WHAT ?"
015D 04 FCB EOL
015E 8D 13 ERRORR: BSR ER01
0160 48 4F 57 20 3F DB "HOW ?"
0165 04 FCB EOL
0166 8D 0B BREAK: BSR ER01
0168 42 52 45 41 4B DB "BREAK"
016D 04 FCB EOL
016E END BSR ER01
016E 53 54 4F 50 DB "STOP"
0172 04 FCB EOL
0173 8D C9 ER01: BSR CRLF
0175 86 07 LDA #BELL
0177 BD 07 A8 JSR PUTCHR
017A DC 0C LDD LINENB
017C BD 06 5C JSR PRNT4
017F 86 20 LDA #SPACE
0181 BD 07 A8 JSR PUTCHR
0184 35 10 PULS X
0186 8D AF BSR PUTSTR
0188 8D B4 BSR CRLF
018A 0E 30 JMP CMDB
018C ;******************************
018C ;******************************
018C 8D B0 GL00: BSR CRLF
018E 8E 02 00 GETLIN: LDX #BUFFER
0191 BD 07 9E GL03: JSR GETCHR
0194 81 20 CMPA #SPACE
0196 25 14 BCS GL05
0198 81 7F CMPA #$7F
019A 27 F5 BEQ GL03
019C 8C 02 48 CMPX #BUFFER+BSIZE-1
019F 26 04 BNE GL04
01A1 86 07 LDA #BELL
01A3 20 02 BRA GL02
01A5 A7 80 GL04: STA ,X+
01A7 BD 07 A8 GL02: JSR PUTCHR
01AA 20 E5 BRA GL03
01AC 81 08 GL05: CMPA #BS
01AE 27 24 BEQ GL07
01B0 81 18 CMPA #CAN
01B2 27 D8 BEQ GL00
01B4 81 0A CMPA #LF
01B6 27 31 BEQ GL09
01B8 81 0D CMPA #CR
01BA 26 D5 BNE GL03
01BC 0D 13 TST MODE
01BE 27 05 BEQ GL06
01C0 BD 07 A8 JSR PUTCHR
01C3 20 07 BRA GL08
01C5 34 10 GL06: PSHS X
01C7 BD 01 3E JSR CRLF
01CA 35 10 PULS X
01CC 86 04 GL08: LDA #EOL
01CE A7 00 STA 0,X
01D0 8E 02 00 LDX #BUFFER
01D3 39 RTS
01D4 8C 02 00 GL07: CMPX #BUFFER
01D7 27 B8 BEQ GL03
01D9 30 1F LEAX -1,X
01DB 86 08 LDA #BS
01DD BD 07 A8 JSR PUTCHR
01E0 86 20 LDA #SPACE
01E2 BD 07 A8 JSR PUTCHR
01E5 86 08 LDA #BS
01E7 20 BE BRA GL02
01E9 1A 01 GL09: ORCC #$01
01EB 06 13 ROR MODE
01ED 20 B8 BRA GL02
01EF ;******************************
01EF ;******************************
01EF 30 01 REM00: LEAX 1,X
01F1 8D 66 REM: BSR SKIPSP
01F3 81 04 CMPA #EOL
01F5 26 F8 BNE REM00
01F7 BD 05 2F ENDSMT: JSR TSTEOL
01FA 96 0C ENDS02: LDA LINENB
01FC 9A 0D ORA LINENB+1
01FE 27 14 BEQ REM09
0200 9C 02 REM05: CMPX USRTOP
0202 26 03 BNE NXTLIN
0204 7E 01 5E JMP ERRORR
0207 EC 81 NXTLIN: LDD ,X++
0209 DD 0C STD LINENB
020B BD 07 9A MSLINE: JSR TSTBRK
020E 8D 08 BSR IFAN
0210 25 03 BCS IMPLET
0212 34 06 PSHS D
0214 39 REM09: RTS
0215 7E 05 40 IMPLET: JMP LET
0218 ;******************************
0218 ;******************************
0218 8D 3F IFAN: BSR SKIPSP
021A 9F 08 STX CURSOR
021C 8E 07 35 LDX #VERBT
021F A6 80 FAN00: LDA ,X+
0221 81 04 CMPA #EOL
0223 26 05 BNE FAN04
0225 9E 08 LDX CURSOR
0227 1A 01 ORCC #$01
0229 39 RTS
022A 9F 10 FAN04: STX CHAR
022C 9E 08 LDX CURSOR
022E 9F 0E STX SCRTCH
0230 9E 0E FAN05: LDX SCRTCH
0232 A1 00 CMPA 0,X
0234 26 15 BNE FAN07
0236 30 01 LEAX 1,X
0238 9F 0E STX SCRTCH
023A 9E 10 LDX CHAR
023C A6 80 LDA ,X+
023E 9F 10 STX CHAR
0240 81 04 CMPA #EOL
0242 26 EC BNE FAN05
0244 EC 00 LDD 0,X
0246 9E 0E LDX SCRTCH
0248 1C FE ANDCC #$FE
024A 39 RTS
024B 9E 10 FAN07: LDX CHAR
024D A6 80 FAN08: LDA ,X+
024F 81 04 CMPA #EOL
0251 26 FA BNE FAN08
0253 30 02 LEAX 2,X
0255 20 C8 BRA FAN00
0257 ;******************************
0257 ;******************************
0257 30 01 NXTNSP: LEAX 1,X
0259 A6 00 SKIPSP: LDA 0,X
025B 81 20 CMPA #SPACE
025D 27 F8 BEQ NXTNSP
025F 39 RTS
0260 ;******************************
0260 ;******************************
0260 8D 1A TSTHEX: BSR TSTDIG
0262 24 22 BCC TST05
0264 81 41 CMPA #"A"
0266 25 11 BCS TST03
0268 81 46 CMPA #"F"
026A 22 0D BHI TST03
026C 80 37 SUBA #"A"-10
026E 1C FE ANDCC #$FE
0270 39 RTS
0271 ;******************************
0271 ;******************************
0271 81 41 TSTLTR: CMPA #"A"
0273 25 04 BCS TST03
0275 81 5A CMPA #"Z"
0277 23 0D BLS TST05
0279 1A 01 TST03: ORCC #$01
027B 39 RTS
027C ;******************************
027C ;******************************
027C 81 30 TSTDIG: CMPA #"0"
027E 25 F9 BCS TST03
0280 81 39 CMPA #"9"
0282 22 F5 BHI TST03
0284 80 30 SUBA #"0"
0286 1C FE TST05: ANDCC #$FE
0288 39 RTS
0289 ;******************************
0289 ;******************************
0289 8D CE TSTVAR: BSR SKIPSP
028B 8D E4 BSR TSTLTR
028D 25 12 BCS TSTV03
028F 1F 89 TFR A,B
0291 A6 01 LDA 1,X
0293 8D DC BSR TSTLTR
0295 24 E2 BCC TST03
0297 30 01 LEAX 1,X
0299 C0 41 SUBB #"A"
029B 58 ASLB
029C 4F CLRA
029D D3 06 ADDD STKTOP
029F 1C FE TSTV02: ANDCC #$FE
02A1 39 TSTV03: RTS
02A2 ;******************************
02A2 ;******************************
02A2 BD 05 0E USER: JSR ARGONE
02A5 34 06 PSHS D
02A7 BD 02 59 JSR SKIPSP
02AA 81 2C CMPA #","
02AC 27 09 BEQ USER03
02AE 81 29 CMPA #")"
02B0 1A 01 ORCC #$01
02B2 27 15 BEQ USER05
02B4 7E 01 55 USER02: JMP ERRORS
02B7 30 01 USER03: LEAX 1,X
02B9 BD 04 41 JSR EXPR
02BC 34 02 PSHS A
02BE BD 02 59 JSR SKIPSP
02C1 81 29 CMPA #")"
02C3 35 02 PULS A
02C5 26 ED BNE USER02
02C7 1C FE ANDCC #$FE
02C9 30 01 USER05: LEAX 1,X
02CB 9F 08 STX CURSOR
02CD AD F1 JSR [,S++]
02CF 9E 08 LDX CURSOR
02D1 1C FE ANDCC #$FE
02D3 39 RTS
02D4 ;******************************
02D4 ;******************************
02D4 BD 02 59 TSTSNB: JSR SKIPSP
02D7 81 2D CMPA #"-"
02D9 26 0D BNE TSTNBR
02DB 30 01 LEAX 1,X
02DD 8D 09 BSR TSTNBR
02DF 25 06 BCS TSN02
02E1 40 NEGA
02E2 50 NEGB
02E3 82 00 SBCA #0
02E5 1C FC ANDCC #$FC
02E7 39 TSN02: RTS
02E8 ;******************************
02E8 ;******************************
02E8 BD 02 59 TSTNBR: JSR SKIPSP
02EB BD 02 7C JSR TSTDIG
02EE 24 2F BCC TSTN02
02F0 81 24 CMPA #"$"
02F2 1A 01 ORCC #$01
02F4 26 60 BNE TSTN09
02F6 30 01 TSTN20: LEAX 1,X
02F8 6F E2 CLR ,-S
02FA 6F E2 CLR ,-S
02FC A6 00 TSTN23: LDA 0,X
02FE BD 02 60 JSR TSTHEX
0301 25 4F BCS TSTN07
0303 30 01 LEAX 1,X
0305 34 10 PSHS X
0307 34 02 PSHS A
0309 EC 63 LDD 3,S
030B 85 F0 BITA #$F0
030D 26 4A BNE TSTN11
030F 58 ASLB
0310 49 ROLA
0311 58 ASLB
0312 49 ROLA
0313 58 ASLB
0314 49 ROLA
0315 58 ASLB
0316 49 ROLA
0317 EB E0 ADDB ,S+
0319 ED 62 STD 2,S
031B 35 10 PULS X
031D 20 DD BRA TSTN23
031F 30 01 TSTN02: LEAX 1,X
0321 34 02 PSHS A
0323 6F E2 CLR ,-S
0325 A6 00 TSTN03: LDA 0,X
0327 BD 02 7C JSR TSTDIG
032A 25 26 BCS TSTN07
032C 30 01 LEAX 1,X
032E 34 10 PSHS X
0330 34 02 PSHS A
0332 EC 63 LDD 3,S
0334 58 ASLB
0335 49 ROLA
0336 29 21 BVS TSTN11
0338 58 ASLB
0339 49 ROLA
033A 29 1D BVS TSTN11
033C E3 63 ADDD 3,S
033E 29 19 BVS TSTN11
0340 58 ASLB
0341 49 ROLA
0342 29 15 BVS TSTN11
0344 EB 60 ADDB 0,S
0346 89 00 ADCA #0
0348 29 0F BVS TSTN11
034A ED 63 STD 3,S
034C 32 61 LEAS 1,S
034E 35 10 PULS X
0350 20 D3 BRA TSTN03
0352 35 06 TSTN07: PULS D
0354 1C FE ANDCC #$FE
0356 1C FD TSTN09: ANDCC #$FD
0358 39 RTS
0359 AE 61 TSTN11: LDX 1,S
035B 32 65 LEAS 5,S
035D 1A 03 ORCC #$03
035F 39 RTS
0360 ;******************************
0360 ;******************************
0360 10 DF 0A TSTSTK: STS SAVESP
0363 DC 0A LDD SAVESP
0365 83 00 30 SUBD #STKCUS
0368 93 04 SUBD STKLIM
036A 39 RTS
036B ;******************************
036B ;******************************
036B BD 04 FB PEEK: JSR PAREXP
036E 34 06 PSHS D
0370 34 10 PSHS X
0372 E6 72 LDB [2,S]
0374 35 10 PULS X
0376 32 62 LEAS 2,S
0378 4F CLRA
0379 39 RTS
037A ;******************************
037A ;******************************
037A BD 04 FB POKE: JSR PAREXP
037D 34 06 PSHS D
037F BD 02 59 JSR SKIPSP
0382 81 3D CMPA #"="
0384 27 03 BEQ POKE05
0386 7E 01 55 JMP ERRORS
0389 30 01 POKE05: LEAX 1,X
038B BD 04 41 JSR EXPR
038E BD 05 2F JSR TSTEOL
0391 34 10 PSHS X
0393 E7 72 STB [2,S]
0395 35 10 PULS X
0397 32 62 LEAS 2,S
0399 7E 01 FA JMP ENDS02
039C ;******************************
039C ;******************************
039C BD 02 59 TSTFUN: JSR SKIPSP
039F 9F 08 STX CURSOR
03A1 8E 03 AC LDX #FUNT
03A4 BD 02 1F JSR FAN00
03A7 25 02 BCS TSTF05
03A9 34 06 PSHS D
03AB 39 TSTF05: RTS
03AC ;******************************
03AC ;******************************
03AC 55 53 52 FUNT: DB "USR"
03AF 04 FCB EOL
03B0 02 A2 FDB USER
03B2 50 45 45 4B DB "PEEK"
03B6 04 FCB EOL
03B7 03 6B FDB PEEK
03B9 4D 45 4D DB "MEM"
03BC 04 FCB EOL
03BD 03 60 FDB TSTSTK
03BF 04 FCB EOL
03C0 ;******************************
03C0 ;******************************
03C0 9E 00 FLINE: LDX USRBAS
03C2 9C 02 FNDLIN: CMPX USRTOP
03C4 26 03 BNE FND03
03C6 1A 03 ORCC #$03
03C8 39 RTS
03C9 10 A3 00 FND03: CMPD 0,X
03CC 26 03 BNE FND05
03CE 1C FC ANDCC #$FC
03D0 39 RTS
03D1 24 05 FND05: BCC FND07
03D3 1A 01 ORCC #$01
03D5 1C FD ANDCC #$FD
03D7 39 RTS
03D8 34 02 FND07: PSHS A
03DA 86 04 LDA #EOL
03DC 30 01 LEAX 1,X
03DE 30 01 FND09: LEAX 1,X
03E0 A1 00 CMPA 0,X
03E2 26 FA BNE FND09
03E4 35 02 PULS A
03E6 30 01 LEAX 1,X
03E8 20 D8 BRA FNDLIN
03EA ;******************************
03EA ;******************************
03EA 8D 55 RELEXP: BSR EXPR
03EC 34 06 PSHS D
03EE 5F CLRB
03EF BD 02 59 JSR SKIPSP
03F2 81 3D CMPA #"="
03F4 27 23 BEQ REL06
03F6 81 3C CMPA #"<"
03F8 26 10 BNE REL03
03FA 30 01 LEAX 1,X
03FC 5C INCB
03FD BD 02 59 JSR SKIPSP
0400 81 3E CMPA #">"
0402 26 11 BNE REL05
0404 30 01 LEAX 1,X
0406 CB 04 ADDB #4
0408 20 13 BRA REL07
040A 81 3E REL03: CMPA #">"
040C 26 5F BNE EXPR06
040E 30 01 LEAX 1,X
0410 CB 04 ADDB #4
0412 BD 02 59 JSR SKIPSP
0415 81 3D REL05: CMPA #"="
0417 26 04 BNE REL07
0419 30 01 REL06: LEAX 1,X
041B CB 02 ADDB #2
041D 34 04 REL07: PSHS B
041F 8D 20 BSR EXPR
0421 34 10 PSHS X
0423 A3 63 SUBD 3,S
0425 1F A8 TFR CC,A
0427 44 LSRA
0428 1F 89 TFR A,B
042A 48 ASLA
042B 48 ASLA
042C 34 04 PSHS B
042E AB E0 ADDA ,S+
0430 84 06 ANDA #$06
0432 26 01 BNE REL08
0434 4C INCA
0435 5F REL08: CLRB
0436 A4 62 ANDA 2,S
0438 27 01 BEQ REL09
043A 53 COMB
043B 4F REL09: CLRA
043C 35 10 PULS X
043E 32 63 LEAS 3,S
0440 39 RTS
0441 ;******************************
0441 ;******************************
0441 6F E2 EXPR: CLR ,-S
0443 6F E2 CLR ,-S
0445 BD 02 59 JSR SKIPSP
0448 81 2D CMPA #"-"
044A 27 17 BEQ EXPR05
044C 81 2B CMPA #"+"
044E 26 02 BNE EXPR03
0450 30 01 EXPR02: LEAX 1,X
0452 8D 1C EXPR03: BSR TERM
0454 E3 60 EXPR04: ADDD 0,S
0456 ED 60 STD 0,S
0458 BD 02 59 JSR SKIPSP
045B 81 2B CMPA #"+"
045D 27 F1 BEQ EXPR02
045F 81 2D CMPA #"-"
0461 26 0A BNE EXPR06
0463 30 01 EXPR05: LEAX 1,X
0465 8D 09 BSR TERM
0467 40 NEGA
0468 50 NEGB
0469 82 00 SBCA #0
046B 20 E7 BRA EXPR04
046D 35 06 EXPR06: PULS D
046F 39 RTS
0470 ;******************************
0470 ;******************************
0470 BD 04 E3 TERM: JSR FACT
0473 34 06 PSHS D
0475 BD 02 59 TERM03: JSR SKIPSP
0478 81 2A CMPA #"*"
047A 27 48 BEQ TERM07
047C 81 2F CMPA #"/"
047E 27 03 BEQ TERM05
0480 35 06 PULS D
0482 39 RTS
0483 30 01 TERM05: LEAX 1,X
0485 8D 5C BSR FACT
0487 34 10 PSHS X
0489 30 62 LEAX 2,S
048B 34 06 PSHS D
048D A8 00 EORA 0,X
048F BD 05 22 JSR ABSX
0492 30 60 LEAX 0,S
0494 BD 05 22 JSR ABSX
0497 34 02 PSHS A
0499 86 11 LDA #17
049B 34 02 PSHS A
049D 4F CLRA
049E 5F CLRB
049F A3 62 DIV05: SUBD 2,S
04A1 24 06 BCC DIV07
04A3 E3 62 ADDD 2,S
04A5 1C FE ANDCC #$FE
04A7 20 02 BRA DIV09
04A9 1A 01 DIV07: ORCC #$01
04AB 69 67 DIV09: ROL 7,S
04AD 69 66 ROL 6,S
04AF 59 ROLB
04B0 49 ROLA
04B1 6A 60 DEC 0,S
04B3 26 EA BNE DIV05
04B5 A6 61 LDA 1,S
04B7 32 64 LEAS 4,S
04B9 4D TSTA
04BA 2A 04 BPL TERM06
04BC 30 62 LEAX 2,S
04BE 8D 66 BSR NEGX
04C0 35 10 TERM06: PULS X
04C2 20 B1 BRA TERM03
04C4 30 01 TERM07: LEAX 1,X
04C6 8D 1B BSR FACT
04C8 34 04 MULT: PSHS B
04CA E6 62 LDB 2,S
04CC 3D MUL
04CD A6 61 LDA 1,S
04CF E7 61 STB 1,S
04D1 E6 60 LDB 0,S
04D3 3D MUL
04D4 A6 62 LDA 2,S
04D6 E7 62 STB 2,S
04D8 35 04 PULS B
04DA 3D MUL
04DB AB 60 ADDA 0,S
04DD AB 61 ADDA 1,S
04DF ED 60 STD 0,S
04E1 20 92 BRA TERM03
04E3 ;******************************
04E3 ;******************************
04E3 BD 02 89 FACT: JSR TSTVAR
04E6 25 09 BCS FACT03
04E8 34 10 PSHS X
04EA 1F 01 TFR D,X
04EC EC 00 LDD 0,X
04EE 35 10 PULS X
04F0 39 FACT02: RTS
04F1 BD 02 E8 FACT03: JSR TSTNBR
04F4 24 FA BCC FACT02
04F6 BD 03 9C JSR TSTFUN
04F9 24 F5 BCC FACT02
04FB 8D 11 PAREXP: BSR ARGONE
04FD 34 02 PSHS A
04FF BD 02 59 JSR SKIPSP
0502 81 29 CMPA #")"
0504 35 02 PULS A
0506 26 03 BNE FACT05
0508 30 01 LEAX 1,X
050A 39 RTS
050B 7E 01 55 FACT05: JMP ERRORS
050E ;******************************
050E ;******************************
050E BD 03 60 ARGONE: JSR TSTSTK
0511 24 03 BCC FACT04
0513 7E 01 4D JMP ERRORF
0516 BD 02 59 FACT04: JSR SKIPSP
0519 81 28 CMPA #"("
051B 26 EE BNE FACT05
051D 30 01 LEAX 1,X
051F 7E 04 41 JMP EXPR
0522 ;******************************
0522 ;******************************
0522 6D 00 ABSX: TST 0,X
0524 2A 08 BPL NEG05
0526 60 00 NEGX: NEG 0,X
0528 60 01 NEG 1,X
052A 24 02 BCC NEG05
052C 6A 00 DEC 0,X
052E 39 NEG05: RTS
052F ;******************************
052F ;******************************
052F 34 02 TSTEOL: PSHS A
0531 BD 02 59 JSR SKIPSP
0534 81 04 CMPA #EOL
0536 27 03 BEQ TEOL03
0538 7E 01 55 JMP ERRORS
053B 30 01 TEOL03: LEAX 1,X
053D 35 02 PULS A
053F 39 RTS
0540 ;******************************
0540 ;******************************
0540 BD 02 89 LET: JSR TSTVAR
0543 24 03 BCC LET03
0545 7E 01 55 JMP ERRORS
0548 34 06 LET03: PSHS D
054A BD 02 59 JSR SKIPSP
054D 81 3D CMPA #"="
054F 27 03 BEQ LET05
0551 7E 01 55 JMP ERRORS
0554 30 01 LET05: LEAX 1,X
0556 BD 04 41 JSR EXPR
0559 8D D4 BSR TSTEOL
055B 9F 08 STX CURSOR
055D 35 10 PULS X
055F ED 00 STD 0,X
0561 9E 08 LDX CURSOR
0563 7E 01 FA JMP ENDS02
0566 ;******************************
0566 ;******************************
0566 BD 03 EA IF: JSR RELEXP
0569 5D TSTB
056A 27 03 BEQ IF03
056C 7E 02 0B JMP MSLINE
056F 7E 01 F1 IF03: JMP REM
0572 ;******************************
0572 ;******************************
0572 BD 04 41 GOTO: JSR EXPR
0575 8D B8 BSR TSTEOL
0577 BD 03 C0 JSR FLINE
057A 25 0F BCS GOSB04
057C 7E 02 07 JMP NXTLIN
057F ;******************************
057F ;******************************
057F BD 04 41 GOSUB: JSR EXPR
0582 8D AB BSR TSTEOL
0584 9F 08 STX CURSOR
0586 BD 03 C0 JSR FLINE
0589 24 03 BCC GOSB03
058B 7E 01 5E GOSB04: JMP ERRORR
058E BD 03 60 GOSB03: JSR TSTSTK
0591 24 03 BCC GOSB05
0593 7E 01 4D JMP ERRORF
0596 DC 08 GOSB05: LDD CURSOR
0598 34 06 PSHS D
059A DC 0C LDD LINENB
059C 34 06 PSHS D
059E BD 02 07 JSR NXTLIN
05A1 35 06 PULS D
05A3 DD 0C STD LINENB
05A5 35 10 PULS X
05A7 7E 01 FA JMP ENDS02
05AA ;******************************
05AA ;******************************
05AA RETURN: EQU TSTEOL
05AA ;******************************
05AA ;******************************
05AA BD 02 59 PRINT: JSR SKIPSP
05AD 81 2C PR01: CMPA #","
05AF 27 36 BEQ PR05
05B1 81 3B CMPA #";"
05B3 27 3D BEQ PR07
05B5 81 04 CMPA #EOL
05B7 27 25 BEQ PR04
05B9 81 22 CMPA #$22
05BB 26 06 BNE PR02
05BD 30 01 LEAX 1,X
05BF 8D 42 BSR PRNTQS
05C1 20 09 BRA PR03
05C3 BD 04 41 PR02: JSR EXPR
05C6 34 10 PSHS X
05C8 8D 47 BSR PRNTN
05CA 35 10 PULS X
05CC BD 02 59 PR03: JSR SKIPSP
05CF 81 2C CMPA #","
05D1 27 14 BEQ PR05
05D3 81 3B CMPA #";"
05D5 27 1B BEQ PR07
05D7 81 04 CMPA #EOL
05D9 27 03 BEQ PR04
05DB 7E 01 55 JMP ERRORS
05DE 34 10 PR04: PSHS X
05E0 BD 01 3E JSR CRLF
05E3 35 10 PULS X
05E5 20 14 BRA PR08
05E7 C6 07 PR05: LDB #$7
05E9 86 20 PR06: LDA #SPACE
05EB BD 07 A8 JSR PUTCHR
05EE D5 12 BITB ZONE
05F0 26 F7 BNE PR06
05F2 30 01 PR07: LEAX 1,X
05F4 BD 02 59 JSR SKIPSP
05F7 81 04 CMPA #EOL
05F9 26 B2 BNE PR01
05FB 30 01 PR08: LEAX 1,X
05FD 7E 01 FA JMP ENDS02
0600 ;*
0600 ;*
0600 BD 07 A8 PRQ01: JSR PUTCHR
0603 A6 80 PRNTQS: LDA ,X+
0605 81 04 CMPA #EOL
0607 26 03 BNE PRQ03
0609 7E 01 55 JMP ERRORS
060C 81 22 PRQ03: CMPA #$22
060E 26 F0 BNE PRQ01
0610 39 RTS
0611 ;*
0611 4D PRNTN: TSTA
0612 2A 0D BPL PRN03
0614 40 NEGA
0615 50 NEGB
0616 82 00 SBCA #0
0618 34 02 PSHS A
061A 86 2D LDA #"-"
061C BD 07 A8 JSR PUTCHR
061F 35 02 PULS A
0621 8E 06 50 PRN03: LDX #PRNPT-2
0624 30 02 PRN05: LEAX 2,X
0626 10 A3 00 CMPD 0,X
0629 24 05 BCC PRN07
062B 8C 06 5A CMPX #PRNPTO
062E 26 F4 BNE PRN05
0630 0F 10 PRN07: CLR CHAR
0632 10 A3 00 PRN09: CMPD 0,X
0635 25 06 BCS PRN11
0637 A3 00 SUBD 0,X
0639 0C 10 INC CHAR
063B 20 F5 BRA PRN09
063D 34 02 PRN11: PSHS A
063F 86 30 LDA #"0"
0641 9B 10 ADDA CHAR
0643 BD 07 A8 JSR PUTCHR
0646 35 02 PULS A
0648 8C 06 5A CMPX #PRNPTO
064B 27 04 BEQ PRN13
064D 30 02 LEAX 2,X
064F 20 DF BRA PRN07
0651 39 PRN13: RTS
0652 27 10 PRNPT: FDB 10000
0654 03 E8 FDB 1000
0656 00 64 FDB 100
0658 00 0A FDB 10
065A 00 01 PRNPTO: FDB 1
065C ;*
065C 8E 06 54 PRNT4: LDX #PRNPT+2
065F 20 CF BRA PRN07
0661 ;******************************
0661 ;******************************
0661 BD 02 89 INPUT: JSR TSTVAR
0664 25 3C BCS IN11
0666 34 06 PSHS D
0668 9F 08 STX CURSOR
066A 86 3F IN03: LDA #"?"
066C BD 07 A8 JSR PUTCHR
066F BD 01 8E JSR GETLIN
0672 BD 02 59 IN05: JSR SKIPSP
0675 81 04 CMPA #EOL
0677 27 F1 BEQ IN03
0679 BD 02 D4 JSR TSTSNB
067C 24 0B BCC IN07
067E 8E 06 B6 LDX #RMESS
0681 BD 01 37 JSR PUTSTR
0684 BD 01 3E JSR CRLF
0687 20 E1 BRA IN03
0689 9F 0E IN07: STX SCRTCH
068B 35 10 PULS X
068D ED 00 STD 0,X
068F 9E 08 LDX CURSOR
0691 BD 02 59 JSR SKIPSP
0694 81 2C CMPA #","
0696 27 03 BEQ IN09
0698 7E 01 F7 JMP ENDSMT
069B 30 01 IN09: LEAX 1,X
069D BD 02 89 JSR TSTVAR
06A0 24 03 BCC IN13
06A2 7E 01 55 IN11: JMP ERRORS
06A5 34 06 IN13: PSHS D
06A7 34 10 PSHS X
06A9 9E 0E LDX SCRTCH
06AB BD 02 59 JSR SKIPSP
06AE 81 2C CMPA #","
06B0 26 C0 BNE IN05
06B2 30 01 LEAX 1,X
06B4 20 BC BRA IN05
06B6 52 45 2D 45 4E 54 45 52 RMESS: DB "RE-ENTER"
06BE 04 FCB EOL
06BF ;******************************
06BF ;******************************
06BF 9E 06 RUN: LDX STKTOP
06C1 86 34 LDA #52
06C3 6F 80 RUN01: CLR ,X+
06C5 4A DECA
06C6 26 FB BNE RUN01
06C8 9E 00 LDX USRBAS
06CA 7E 02 00 JMP REM05
06CD ;******************************
06CD ;******************************
06CD BD 02 E8 LIST: JSR TSTNBR
06D0 24 08 BCC LIST03
06D2 4F CLRA
06D3 5F CLRB
06D4 DD 08 STD CURSOR
06D6 86 7F LDA #$7F
06D8 20 17 BRA LIST07
06DA DD 08 LIST03: STD CURSOR
06DC BD 02 59 JSR SKIPSP
06DF 81 2C CMPA #","
06E1 27 04 BEQ LIST05
06E3 96 08 LDA CURSOR
06E5 20 0A BRA LIST07
06E7 30 01 LIST05: LEAX 1,X
06E9 BD 02 E8 JSR TSTNBR
06EC 24 03 BCC LIST07
06EE 7E 01 55 JMP ERRORS
06F1 BD 05 2F LIST07: JSR TSTEOL
06F4 34 06 PSHS D
06F6 DC 08 LDD CURSOR
06F8 9F 08 STX CURSOR
06FA BD 03 C0 JSR FLINE
06FD 9C 02 LIST09: CMPX USRTOP
06FF 27 28 BEQ LIST10
0701 35 06 PULS D
0703 10 A3 00 CMPD 0,X
0706 25 28 BCS LIST11
0708 34 06 PSHS D
070A EC 81 LDD ,X++
070C 34 10 PSHS X
070E BD 06 5C JSR PRNT4
0711 35 10 PULS X
0713 86 20 LDA #SPACE
0715 BD 07 A8 JSR PUTCHR
0718 BD 01 37 JSR PUTSTR
071B 30 01 LEAX 1,X
071D 34 10 PSHS X
071F BD 01 3E JSR CRLF
0722 35 10 PULS X
0724 BD 07 9A JSR TSTBRK
0727 20 D4 BRA LIST09
0729 32 62 LIST10: LEAS 2,S
072B 86 03 LDA #ETX
072D BD 07 A8 JSR PUTCHR
0730 9E 08 LIST11: LDX CURSOR
0732 7E 01 FA JMP ENDS02
0735 ;******************************
0735 ;******************************
0735 4C 45 54 VERBT: DB "LET"
0738 04 FCB EOL
0739 05 40 FDB LET
073B 49 46 DB "IF"
073D 04 FCB EOL
073E 05 66 FDB IF
0740 47 4F 54 4F DB "GOTO"
0744 04 FCB EOL
0745 05 72 FDB GOTO
0747 47 4F 53 55 42 DB "GOSUB"
074C 04 FCB EOL
074D 05 7F FDB GOSUB
074F 52 45 54 55 52 4E DB "RETURN"
0755 04 FCB EOL
0756 05 2F FDB RETURN
0758 50 4F 4B 45 DB "POKE"
075C 04 FCB EOL
075D 03 7A FDB POKE
075F 50 52 49 4E 54 DB "PRINT"
0764 04 FCB EOL
0765 05 AA FDB PRINT
0767 49 4E 50 55 54 DB "INPUT"
076C 04 FCB EOL
076D 06 61 FDB INPUT
076F 52 45 4D DB "REM"
0772 04 FCB EOL
0773 01 F1 FDB REM
0775 53 54 4F 50 DB "STOP"
0779 04 FCB EOL
077A 07 E4 FDB END
077C 45 4E 44 DB "END"
077F 04 FCB EOL
0780 07 E4 FDB END
0782 52 55 4E DB "RUN"
0785 04 FCB EOL
0786 06 BF FDB RUN
0788 4C 49 53 54 DB "LIST"
078C 04 FCB EOL
078D 06 CD FDB LIST
078F 4E 45 57 DB "NEW"
0792 04 FCB EOL
0793 00 1E FDB CLEAR
0795 3F DB "?"
0796 04 FCB EOL
0797 05 AA FDB PRINT
0799 04 FCB EOL
079A ;******************************
079A ;******************************
079A 8D 2A TSTBRK: BSR BRKEEE
079C 27 09 BEQ GETC05
079E 8D 0D GETCHR: BSR INEEE
07A0 81 03 CMPA #ETX
07A2 26 03 BNE GETC05
07A4 7E 01 66 JMP BREAK
07A7 39 GETC05: RTS
07A8 0C 12 PUTCHR: INC ZONE
07AA 7E 07 B7 JMP OUTEEE
07AD ;******************************
07AD ;******************************
07AD 8D 17 INEEE: BSR BRKEEE
07AF 27 FC BEQ INEEE
07B1 B6 83 FF LDA RECEV
07B4 84 7F ANDA #$7F
07B6 39 RTS
07B7 34 02 OUTEEE: PSHS A
07B9 B6 83 FE OUT01: LDA TRCS
07BC 85 02 BITA #TDRE
07BE 27 F9 BEQ OUT01
07C0 35 02 PULS A
07C2 B7 83 FF STA TRANS
07C5 39 RTS
07C6 34 02 BRKEEE: PSHS A
07C8 B6 83 FE BRK03: LDA TRCS
07CB 85 20 BITA #ORFE
07CD 27 05 BEQ BRK05
07CF B6 83 FF LDA RECEV
07D2 20 F4 BRA BRK03
07D4 85 01 BRK05: BITA #RDRF
07D6 35 02 PULS A
07D8 39 RTS
07D9 ;*
07D9 86 03 LDA #CNTL1
07DB B7 83 FE STA RMCR
07DE 86 15 LDA #CNTL2
07E0 B7 83 FE STA TRCS
07E3 INTEEE: EQU $
07E3 39 RTS
07E4 ;******************************
07E4 ;******************************
07E4 END:
EOL: 0004 DEFINED AT LINE 18
> USED AT LINE 127
> USED AT LINE 232
> USED AT LINE 235
> USED AT LINE 238
> USED AT LINE 241
> USED AT LINE 244
> USED AT LINE 560
> USED AT LINE 563
> USED AT LINE 566
> USED AT LINE 568
> USED AT LINE 966
> USED AT LINE 1027
> USED AT LINE 1030
> USED AT LINE 1033
> USED AT LINE 1036
> USED AT LINE 1039
> USED AT LINE 1042
> USED AT LINE 1045
> USED AT LINE 1048
> USED AT LINE 1051
> USED AT LINE 1054
> USED AT LINE 1057
> USED AT LINE 1060
> USED AT LINE 1063
> USED AT LINE 1066
> USED AT LINE 1069
> USED AT LINE 1071
ETX: 0003 DEFINED AT LINE 19
SPACE: 0020 DEFINED AT LINE 20
CR: 000D DEFINED AT LINE 21
> USED AT LINE 227
LF: 000A DEFINED AT LINE 22
> USED AT LINE 227
BS: 0008 DEFINED AT LINE 23
CAN: 0018 DEFINED AT LINE 24
BELL: 0007 DEFINED AT LINE 25
FILL: 0000 DEFINED AT LINE 26
DEL: 007F DEFINED AT LINE 27
BSIZE: 0049 DEFINED AT LINE 28
> USED AT LINE 48
STKCUS: 0030 DEFINED AT LINE 29
BACIA: 83FE DEFINED AT LINE 31
> USED AT LINE 32
> USED AT LINE 33
> USED AT LINE 34
> USED AT LINE 35
RMCR: 83FE DEFINED AT LINE 32
> USED AT LINE 1108
TRCS: 83FE DEFINED AT LINE 33
> USED AT LINE 1091
> USED AT LINE 1098
> USED AT LINE 1110
RECEV: 83FF DEFINED AT LINE 34
> USED AT LINE 1087
> USED AT LINE 1101
TRANS: 83FF DEFINED AT LINE 35
> USED AT LINE 1095
CNTL1: 0003 DEFINED AT LINE 36
CNTL2: 0015 DEFINED AT LINE 37
RDRF: 0001 DEFINED AT LINE 38
ORFE: 0020 DEFINED AT LINE 39
TDRE: 0002 DEFINED AT LINE 40
LORAM: 0080 DEFINED AT LINE 43
BUFFER: 0200 DEFINED AT LINE 44
> USED AT LINE 48
> USED AT LINE 49
RAMSIZ: 2000 DEFINED AT LINE 45
> USED AT LINE 49
ROMADR: F000 DEFINED AT LINE 46
RAMBEG: 0249 DEFINED AT LINE 48
RAMEND: 2200 DEFINED AT LINE 49
RAMPAT: AA0F DEFINED AT LINE 51
ROMPAT: F055 DEFINED AT LINE 52
USRBAS: 0000 DEFINED AT LINE 56
> USED AT LINE 85
> USED AT LINE 94
> USED AT LINE 139
> USED AT LINE 571
> USED AT LINE 974
USRTOP: 0002 DEFINED AT LINE 57
> USED AT LINE 86
> USED AT LINE 112
> USED AT LINE 135
> USED AT LINE 148
> USED AT LINE 158
> USED AT LINE 180
> USED AT LINE 182
> USED AT LINE 183
> USED AT LINE 187
> USED AT LINE 190
> USED AT LINE 313
> USED AT LINE 572
> USED AT LINE 1000
STKLIM: 0004 DEFINED AT LINE 58
> USED AT LINE 87
> USED AT LINE 113
> USED AT LINE 159
> USED AT LINE 184
> USED AT LINE 188
> USED AT LINE 520
STKTOP: 0006 DEFINED AT LINE 59
> USED AT LINE 78
> USED AT LINE 82
> USED AT LINE 91
> USED AT LINE 406
> USED AT LINE 969
CURSOR: 0008 DEFINED AT LINE 60
> USED AT LINE 95
> USED AT LINE 134
> USED AT LINE 141
> USED AT LINE 193
> USED AT LINE 201
> USED AT LINE 327
> USED AT LINE 332
> USED AT LINE 336
> USED AT LINE 429
> USED AT LINE 431
> USED AT LINE 551
> USED AT LINE 794
> USED AT LINE 797
> USED AT LINE 817
> USED AT LINE 824
> USED AT LINE 932
> USED AT LINE 948
> USED AT LINE 982
> USED AT LINE 985
> USED AT LINE 989
> USED AT LINE 997
> USED AT LINE 998
> USED AT LINE 1022
SAVESP: 000A DEFINED AT LINE 61
> USED AT LINE 143
> USED AT LINE 152
> USED AT LINE 154
> USED AT LINE 157
> USED AT LINE 191
> USED AT LINE 197
> USED AT LINE 517
> USED AT LINE 518
LINENB: 000C DEFINED AT LINE 62
> USED AT LINE 97
> USED AT LINE 248
> USED AT LINE 310
> USED AT LINE 311
> USED AT LINE 317
> USED AT LINE 826
> USED AT LINE 830
SCRTCH: 000E DEFINED AT LINE 63
> USED AT LINE 132
> USED AT LINE 160
> USED AT LINE 204
> USED AT LINE 206
> USED AT LINE 337
> USED AT LINE 338
> USED AT LINE 342
> USED AT LINE 349
> USED AT LINE 945
> USED AT LINE 959
CHAR: 0010 DEFINED AT LINE 64
> USED AT LINE 151
> USED AT LINE 155
> USED AT LINE 181
> USED AT LINE 192
> USED AT LINE 196
> USED AT LINE 203
> USED AT LINE 207
> USED AT LINE 209
> USED AT LINE 335
> USED AT LINE 343
> USED AT LINE 345
> USED AT LINE 352
> USED AT LINE 903
> USED AT LINE 907
> USED AT LINE 911
ZONE: 0012 DEFINED AT LINE 65
> USED AT LINE 225
> USED AT LINE 869
> USED AT LINE 1081
MODE: 0013 DEFINED AT LINE 66
> USED AT LINE 92
> USED AT LINE 98
> USED AT LINE 280
> USED AT LINE 301
RESRVD: 0014 DEFINED AT LINE 67
LOEND: 0015 DEFINED AT LINE 68
BASIC: 0000 DEFINED AT LINE 76
WARMS: 000C DEFINED AT LINE 78
SETUP: 0014 DEFINED AT LINE 81
> USED AT LINE 76
SET03: 0018 DEFINED AT LINE 82
CLEAR: 001E DEFINED AT LINE 84
> USED AT LINE 1067
CLR02: 0025 DEFINED AT LINE 87
WMS05: 0027 DEFINED AT LINE 88
> USED AT LINE 80
CMDB: 0030 DEFINED AT LINE 91
> USED AT LINE 110
> USED AT LINE 255
CMDE: 003C DEFINED AT LINE 96
> USED AT LINE 108
> USED AT LINE 124
CMD01: 004A DEFINED AT LINE 102
> USED AT LINE 99
CMD02: 0060 DEFINED AT LINE 111
> USED AT LINE 104
CMD03: 006D DEFINED AT LINE 117
> USED AT LINE 115
CMD04: 0072 DEFINED AT LINE 119
CMD05: 007F DEFINED AT LINE 125
> USED AT LINE 105
> USED AT LINE 118
> USED AT LINE 122
VSTR: 0082 DEFINED AT LINE 126
EDITOR: 008D DEFINED AT LINE 130
> USED AT LINE 123
ED00: 00A1 DEFINED AT LINE 139
> USED AT LINE 136
ED01: 00A3 DEFINED AT LINE 140
> USED AT LINE 138
ED02: 00AE DEFINED AT LINE 145
> USED AT LINE 147
ED03: 00B4 DEFINED AT LINE 148
> USED AT LINE 156
ED35: 00C6 DEFINED AT LINE 157
> USED AT LINE 149
ED04: 00CC DEFINED AT LINE 160
> USED AT LINE 142
ED05: 00D0 DEFINED AT LINE 162
> USED AT LINE 165
ED55: 00DD DEFINED AT LINE 170
> USED AT LINE 167
ED06: 00E1 DEFINED AT LINE 172
> USED AT LINE 176
ED07: 0105 DEFINED AT LINE 190
> USED AT LINE 186
ED08: 0107 DEFINED AT LINE 191
> USED AT LINE 199
ED09: 0119 DEFINED AT LINE 200
> USED AT LINE 194
ED10: 0121 DEFINED AT LINE 204
> USED AT LINE 211
PUTS01: 0132 DEFINED AT LINE 215
> USED AT LINE 219
PUTSTR: 0137 DEFINED AT LINE 217
> USED AT LINE 90
> USED AT LINE 224
> USED AT LINE 253
> USED AT LINE 942
> USED AT LINE 1012
CRLF: 013E DEFINED AT LINE 223
> USED AT LINE 88
> USED AT LINE 93
> USED AT LINE 245
> USED AT LINE 254
> USED AT LINE 258
> USED AT LINE 285
> USED AT LINE 863
> USED AT LINE 943
> USED AT LINE 1015
CRLFST: 0146 DEFINED AT LINE 227
ERRORF: 014D DEFINED AT LINE 230
> USED AT LINE 189
> USED AT LINE 756
> USED AT LINE 823
ERRORS: 0155 DEFINED AT LINE 233
> USED AT LINE 125
> USED AT LINE 419
> USED AT LINE 539
> USED AT LINE 751
> USED AT LINE 777
> USED AT LINE 785
> USED AT LINE 790
> USED AT LINE 861
> USED AT LINE 883
> USED AT LINE 956
> USED AT LINE 994
ERRORR: 015E DEFINED AT LINE 236
> USED AT LINE 116
> USED AT LINE 315
> USED AT LINE 820
BREAK: 0166 DEFINED AT LINE 239
> USED AT LINE 1079
ER01: 0173 DEFINED AT LINE 245
> USED AT LINE 230
> USED AT LINE 233
> USED AT LINE 236
> USED AT LINE 239
GL00: 018C DEFINED AT LINE 258
> USED AT LINE 275
GETLIN: 018E DEFINED AT LINE 259
> USED AT LINE 102
> USED AT LINE 935
GL03: 0191 DEFINED AT LINE 260
> USED AT LINE 264
> USED AT LINE 271
> USED AT LINE 279
> USED AT LINE 292
GL04: 01A5 DEFINED AT LINE 269
> USED AT LINE 266
GL02: 01A7 DEFINED AT LINE 270
> USED AT LINE 268
> USED AT LINE 299
> USED AT LINE 302
GL05: 01AC DEFINED AT LINE 272
> USED AT LINE 262
GL06: 01C5 DEFINED AT LINE 284
> USED AT LINE 281
GL08: 01CC DEFINED AT LINE 287
> USED AT LINE 283
GL07: 01D4 DEFINED AT LINE 291
> USED AT LINE 273
GL09: 01E9 DEFINED AT LINE 300
> USED AT LINE 277
REM00: 01EF DEFINED AT LINE 305
> USED AT LINE 308
REM: 01F1 DEFINED AT LINE 306
> USED AT LINE 805
> USED AT LINE 1052
ENDSMT: 01F7 DEFINED AT LINE 309
> USED AT LINE 952
ENDS02: 01FA DEFINED AT LINE 310
> USED AT LINE 547
> USED AT LINE 798
> USED AT LINE 832
> USED AT LINE 876
> USED AT LINE 1023
REM05: 0200 DEFINED AT LINE 313
> USED AT LINE 975
NXTLIN: 0207 DEFINED AT LINE 316
> USED AT LINE 314
> USED AT LINE 812
> USED AT LINE 828
MSLINE: 020B DEFINED AT LINE 318
> USED AT LINE 109
> USED AT LINE 804
REM09: 0214 DEFINED AT LINE 322
> USED AT LINE 312
IMPLET: 0215 DEFINED AT LINE 323
> USED AT LINE 320
IFAN: 0218 DEFINED AT LINE 326
> USED AT LINE 319
FAN00: 021F DEFINED AT LINE 329
> USED AT LINE 357
> USED AT LINE 553
FAN04: 022A DEFINED AT LINE 335
> USED AT LINE 331
FAN05: 0230 DEFINED AT LINE 338
> USED AT LINE 347
FAN07: 024B DEFINED AT LINE 352
> USED AT LINE 340
FAN08: 024D DEFINED AT LINE 353
> USED AT LINE 355
NXTNSP: 0257 DEFINED AT LINE 360
> USED AT LINE 363
SKIPSP: 0259 DEFINED AT LINE 361
> USED AT LINE 106
> USED AT LINE 131
> USED AT LINE 306
> USED AT LINE 326
> USED AT LINE 395
> USED AT LINE 413
> USED AT LINE 423
> USED AT LINE 436
> USED AT LINE 449
> USED AT LINE 536
> USED AT LINE 550
> USED AT LINE 598
> USED AT LINE 605
> USED AT LINE 615
> USED AT LINE 646
> USED AT LINE 655
> USED AT LINE 672
> USED AT LINE 745
> USED AT LINE 757
> USED AT LINE 774
> USED AT LINE 787
> USED AT LINE 838
> USED AT LINE 854
> USED AT LINE 872
> USED AT LINE 936
> USED AT LINE 949
> USED AT LINE 960
> USED AT LINE 986
TSTHEX: 0260 DEFINED AT LINE 367
> USED AT LINE 459
TSTLTR: 0271 DEFINED AT LINE 378
> USED AT LINE 396
> USED AT LINE 400
TST03: 0279 DEFINED AT LINE 382
> USED AT LINE 370
> USED AT LINE 372
> USED AT LINE 379
> USED AT LINE 387
> USED AT LINE 389
> USED AT LINE 401
TSTDIG: 027C DEFINED AT LINE 386
> USED AT LINE 367
> USED AT LINE 450
> USED AT LINE 483
TST05: 0286 DEFINED AT LINE 391
> USED AT LINE 368
> USED AT LINE 381
TSTVAR: 0289 DEFINED AT LINE 395
> USED AT LINE 732
> USED AT LINE 783
> USED AT LINE 929
> USED AT LINE 954
TSTV02: 029F DEFINED AT LINE 407
TSTV03: 02A1 DEFINED AT LINE 408
> USED AT LINE 397
USER: 02A2 DEFINED AT LINE 411
> USED AT LINE 561
USER02: 02B4 DEFINED AT LINE 419
> USED AT LINE 426
USER03: 02B7 DEFINED AT LINE 420
> USED AT LINE 415
USER05: 02C9 DEFINED AT LINE 428
> USED AT LINE 418
TSTSNB: 02D4 DEFINED AT LINE 436
> USED AT LINE 939
TSN02: 02E7 DEFINED AT LINE 446
> USED AT LINE 441
TSTNBR: 02E8 DEFINED AT LINE 449
> USED AT LINE 103
> USED AT LINE 438
> USED AT LINE 440
> USED AT LINE 739
> USED AT LINE 978
> USED AT LINE 992
TSTN20: 02F6 DEFINED AT LINE 455
TSTN23: 02FC DEFINED AT LINE 458
> USED AT LINE 478
TSTN02: 031F DEFINED AT LINE 479
> USED AT LINE 451
TSTN03: 0325 DEFINED AT LINE 482
> USED AT LINE 506
TSTN07: 0352 DEFINED AT LINE 507
> USED AT LINE 460
> USED AT LINE 484
TSTN09: 0356 DEFINED AT LINE 509
> USED AT LINE 454
TSTN11: 0359 DEFINED AT LINE 511
> USED AT LINE 466
> USED AT LINE 491
> USED AT LINE 494
> USED AT LINE 496
> USED AT LINE 499
> USED AT LINE 502
TSTSTK: 0360 DEFINED AT LINE 517
> USED AT LINE 185
> USED AT LINE 567
> USED AT LINE 754
> USED AT LINE 821
PEEK: 036B DEFINED AT LINE 524
> USED AT LINE 564
POKE: 037A DEFINED AT LINE 534
> USED AT LINE 1043
POKE05: 0389 DEFINED AT LINE 540
> USED AT LINE 538
TSTFUN: 039C DEFINED AT LINE 550
> USED AT LINE 741
TSTF05: 03AB DEFINED AT LINE 556
> USED AT LINE 554
FUNT: 03AC DEFINED AT LINE 559
FLINE: 03C0 DEFINED AT LINE 571
> USED AT LINE 810
> USED AT LINE 818
> USED AT LINE 999
FNDLIN: 03C2 DEFINED AT LINE 572
> USED AT LINE 140
> USED AT LINE 592
FND03: 03C9 DEFINED AT LINE 576
> USED AT LINE 573
FND05: 03D1 DEFINED AT LINE 580
> USED AT LINE 577
FND07: 03D8 DEFINED AT LINE 584
> USED AT LINE 580
FND09: 03DE DEFINED AT LINE 587
> USED AT LINE 589
RELEXP: 03EA DEFINED AT LINE 595
> USED AT LINE 801
REL03: 040A DEFINED AT LINE 611
> USED AT LINE 602
REL05: 0415 DEFINED AT LINE 616
> USED AT LINE 607
REL06: 0419 DEFINED AT LINE 618
> USED AT LINE 600
REL07: 041D DEFINED AT LINE 620
> USED AT LINE 610
> USED AT LINE 617
REL08: 0435 DEFINED AT LINE 634
> USED AT LINE 632
REL09: 043B DEFINED AT LINE 638
> USED AT LINE 636
EXPR: 0441 DEFINED AT LINE 644
> USED AT LINE 421
> USED AT LINE 541
> USED AT LINE 595
> USED AT LINE 621
> USED AT LINE 761
> USED AT LINE 792
> USED AT LINE 808
> USED AT LINE 815
> USED AT LINE 850
EXPR02: 0450 DEFINED AT LINE 651
> USED AT LINE 657
EXPR03: 0452 DEFINED AT LINE 652
> USED AT LINE 650
EXPR04: 0454 DEFINED AT LINE 653
> USED AT LINE 665
EXPR05: 0463 DEFINED AT LINE 660
> USED AT LINE 648
EXPR06: 046D DEFINED AT LINE 666
> USED AT LINE 612
> USED AT LINE 659
TERM: 0470 DEFINED AT LINE 670
> USED AT LINE 652
> USED AT LINE 661
TERM03: 0475 DEFINED AT LINE 672
> USED AT LINE 712
> USED AT LINE 729
TERM05: 0483 DEFINED AT LINE 679
> USED AT LINE 676
DIV05: 049F DEFINED AT LINE 693
> USED AT LINE 704
DIV07: 04A9 DEFINED AT LINE 698
> USED AT LINE 694
DIV09: 04AB DEFINED AT LINE 699
> USED AT LINE 697
TERM06: 04C0 DEFINED AT LINE 711
> USED AT LINE 708
TERM07: 04C4 DEFINED AT LINE 713
> USED AT LINE 674
MULT: 04C8 DEFINED AT LINE 715
FACT: 04E3 DEFINED AT LINE 732
> USED AT LINE 670
> USED AT LINE 680
> USED AT LINE 714
FACT02: 04F0 DEFINED AT LINE 738
> USED AT LINE 740
> USED AT LINE 742
FACT03: 04F1 DEFINED AT LINE 739
> USED AT LINE 733
PAREXP: 04FB DEFINED AT LINE 743
> USED AT LINE 524
> USED AT LINE 534
FACT05: 050B DEFINED AT LINE 751
> USED AT LINE 748
> USED AT LINE 759
ARGONE: 050E DEFINED AT LINE 754
> USED AT LINE 411
> USED AT LINE 743
FACT04: 0516 DEFINED AT LINE 757
> USED AT LINE 755
ABSX: 0522 DEFINED AT LINE 764
> USED AT LINE 685
> USED AT LINE 687
NEGX: 0526 DEFINED AT LINE 766
> USED AT LINE 710
NEG05: 052E DEFINED AT LINE 770
> USED AT LINE 765
> USED AT LINE 768
TSTEOL: 052F DEFINED AT LINE 773
> USED AT LINE 309
> USED AT LINE 542
> USED AT LINE 793
> USED AT LINE 809
> USED AT LINE 816
> USED AT LINE 835
> USED AT LINE 995
TEOL03: 053B DEFINED AT LINE 778
> USED AT LINE 776
LET: 0540 DEFINED AT LINE 783
> USED AT LINE 323
> USED AT LINE 1028
LET03: 0548 DEFINED AT LINE 786
> USED AT LINE 784
LET05: 0554 DEFINED AT LINE 791
> USED AT LINE 789
IF: 0566 DEFINED AT LINE 801
> USED AT LINE 1031
IF03: 056F DEFINED AT LINE 805
> USED AT LINE 803
GOTO: 0572 DEFINED AT LINE 808
> USED AT LINE 1034
GOSUB: 057F DEFINED AT LINE 815
> USED AT LINE 1037
GOSB04: 058B DEFINED AT LINE 820
> USED AT LINE 811
GOSB03: 058E DEFINED AT LINE 821
> USED AT LINE 819
GOSB05: 0596 DEFINED AT LINE 824
> USED AT LINE 822
RETURN: 052F DEFINED AT LINE 835
> USED AT LINE 1040
PRINT: 05AA DEFINED AT LINE 838
> USED AT LINE 1046
> USED AT LINE 1070
PR01: 05AD DEFINED AT LINE 839
> USED AT LINE 874
PR02: 05C3 DEFINED AT LINE 850
> USED AT LINE 846
PR03: 05CC DEFINED AT LINE 854
> USED AT LINE 849
PR04: 05DE DEFINED AT LINE 862
> USED AT LINE 844
> USED AT LINE 860
PR05: 05E7 DEFINED AT LINE 866
> USED AT LINE 840
> USED AT LINE 856
PR06: 05E9 DEFINED AT LINE 867
> USED AT LINE 870
PR07: 05F2 DEFINED AT LINE 871
> USED AT LINE 842
> USED AT LINE 858
PR08: 05FB DEFINED AT LINE 875
> USED AT LINE 865
PRQ01: 0600 DEFINED AT LINE 879
> USED AT LINE 885
PRNTQS: 0603 DEFINED AT LINE 880
> USED AT LINE 848
PRQ03: 060C DEFINED AT LINE 884
> USED AT LINE 882
PRNTN: 0611 DEFINED AT LINE 888
> USED AT LINE 852
PRN03: 0621 DEFINED AT LINE 897
> USED AT LINE 889
PRN05: 0624 DEFINED AT LINE 898
> USED AT LINE 902
PRN07: 0630 DEFINED AT LINE 903
> USED AT LINE 900
> USED AT LINE 917
> USED AT LINE 926
PRN09: 0632 DEFINED AT LINE 904
> USED AT LINE 908
PRN11: 063D DEFINED AT LINE 909
> USED AT LINE 905
PRN13: 0651 DEFINED AT LINE 918
> USED AT LINE 915
PRNPT: 0652 DEFINED AT LINE 919
PRNPTO: 065A DEFINED AT LINE 923
PRNT4: 065C DEFINED AT LINE 925
> USED AT LINE 249
> USED AT LINE 1008
INPUT: 0661 DEFINED AT LINE 929
> USED AT LINE 1049
IN03: 066A DEFINED AT LINE 933
> USED AT LINE 938
> USED AT LINE 944
IN05: 0672 DEFINED AT LINE 936
> USED AT LINE 962
> USED AT LINE 964
IN07: 0689 DEFINED AT LINE 945
> USED AT LINE 940
IN09: 069B DEFINED AT LINE 953
> USED AT LINE 951
IN11: 06A2 DEFINED AT LINE 956
> USED AT LINE 930
IN13: 06A5 DEFINED AT LINE 957
> USED AT LINE 955
RMESS: 06B6 DEFINED AT LINE 965
RUN: 06BF DEFINED AT LINE 969
> USED AT LINE 1061
RUN01: 06C3 DEFINED AT LINE 971
> USED AT LINE 973
LIST: 06CD DEFINED AT LINE 978
> USED AT LINE 1064
LIST03: 06DA DEFINED AT LINE 985
> USED AT LINE 979
LIST05: 06E7 DEFINED AT LINE 991
> USED AT LINE 988
LIST07: 06F1 DEFINED AT LINE 995
> USED AT LINE 984
> USED AT LINE 990
> USED AT LINE 993
LIST09: 06FD DEFINED AT LINE 1000
> USED AT LINE 1018
LIST10: 0729 DEFINED AT LINE 1019
> USED AT LINE 1001
LIST11: 0730 DEFINED AT LINE 1022
> USED AT LINE 1004
VERBT: 0735 DEFINED AT LINE 1026
TSTBRK: 079A DEFINED AT LINE 1074
> USED AT LINE 318
> USED AT LINE 1017
GETCHR: 079E DEFINED AT LINE 1076
> USED AT LINE 260
GETC05: 07A7 DEFINED AT LINE 1080
> USED AT LINE 1075
> USED AT LINE 1078
PUTCHR: 07A8 DEFINED AT LINE 1081
> USED AT LINE 101
> USED AT LINE 215
> USED AT LINE 247
> USED AT LINE 251
> USED AT LINE 270
> USED AT LINE 282
> USED AT LINE 295
> USED AT LINE 297
> USED AT LINE 868
> USED AT LINE 879
> USED AT LINE 895
> USED AT LINE 912
> USED AT LINE 934
> USED AT LINE 1011
> USED AT LINE 1021
INEEE: 07AD DEFINED AT LINE 1085
> USED AT LINE 1076
> USED AT LINE 1086
OUTEEE: 07B7 DEFINED AT LINE 1090
> USED AT LINE 1082
OUT01: 07B9 DEFINED AT LINE 1091
> USED AT LINE 1093
BRKEEE: 07C6 DEFINED AT LINE 1097
> USED AT LINE 1074
> USED AT LINE 1085
BRK03: 07C8 DEFINED AT LINE 1098
> USED AT LINE 1102
BRK05: 07D4 DEFINED AT LINE 1103
> USED AT LINE 1100
INTEEE: 07E3 DEFINED AT LINE 1111
> USED AT LINE 79
> USED AT LINE 83
END: 07E4 DEFINED AT LINE 1118
> USED AT LINE 1055
> USED AT LINE 1058
0000 ;NAM TB01V137
0000 ;* WRITTEN 20-OCT-77 BY JOHN BYRNS
0000 ;* REVISED 30-DEC-77
0000 ;* REVISED 18-JAN-78
0000 ;* REVISED 10-APR-78
0000 ;* REVISED 08-MAY-79 TO ELIMINATE USE OF SP
0000 ;* REVISED 24-JAN-80 TO USE 6801 ON CHIP RAM
0000 ;* REVISED 26-JAN-80 FOR NEW 6801 INSTRUCTIONS
0000 ;* REVISED 24-JUL-81 FOR WHISTON BOARD
0000 ;* REVISED 24-SEP-81 INCLUDE USER FUNCTION
0000 ;* REVISED 08-APR-82 MAKE STANDALONE INCLUDE HEX CONSTANTS AND MEM FUNCTION
0000 ;* REVISED 21-NOV-84 FOR 6809
0000 ;* REVISED FEB 94 ADAPTED TO SIMULATOR AND BUGFIXES BY L.C. BENSCHOP.
0000 ;*
0000 ;.engine kilo
0000 EOL: EQU $04
0000 ETX: EQU $03
0000 SPACE: EQU $20
0000 CR: EQU $0D
0000 LF: EQU $0A
0000 BS: EQU $08
0000 CAN: EQU $18
0000 BELL: EQU $07
0000 FILL: EQU $00
0000 DEL: EQU $7F
0000 BSIZE: EQU 73
0000 STKCUS: EQU 48
0000 ;*
0000 BACIA: EQU $83FE
0000 RMCR: EQU bACIA
0000 TRCS: EQU bACIA
0000 RECEV: EQU bACIA+1
0000 TRANS: EQU bACIA+1
0000 CNTL1: EQU $03
0000 CNTL2: EQU $15
0000 RDRF: EQU $01
0000 ORFE: EQU $20
0000 TDRE: EQU $02
0000 ;* EDIT THE FOLLOWING EQUATES TO REFLECT THE
0000 ;* DESIRED ROM AND RAM LAYOUT
0000 LORAM: EQU $0080
0000 BUFFER: EQU $0200
0000 RAMSIZ: EQU $2000
0000 ROMADR: EQU $f000
0000 ;*
0000 RAMBEG: EQU BUFFER+BSIZE
0000 RAMEND: EQU BUFFER+RAMSIZ
0000 ;*
0000 RAMPAT: EQU $AA0F
0000 ROMPAT: EQU $F055
0000 ;*
0000 ; ORG LORAM
0000 .BSSEG
0000 USRBAS: RMB 2
0002 USRTOP: RMB 2
0004 STKLIM: RMB 2
0006 STKTOP: RMB 2
0008 CURSOR: RMB 2
000A SAVESP: RMB 2
000C LINENB: RMB 2
000E SCRTCH: RMB 2
0010 CHAR: RMB 2
0012 ZONE: RMB 1
0013 MODE: RMB 1
0014 RESRVD: RMB 1
0015 LOEND: EQU $
0015 ;*
0000 .CSEG
0000 ; ORG ROMADR
0000 ALIGN 256
0000 .ENT $
0000 0E 14 BASIC: JMP SETUP
0002 4D 4F 44 39 42 41 53 49 43 00 .CSTR "MOD9BASIC"
000C 10 DE 06 WARMS: LDS STKTOP
000F BD 07 E5 JSR INTEEE
0012 20 13 BRA WMS05
0014 10 CE 21 CC SETUP: LDS #RAMEND-52
0018 10 DF 06 SET03: STS STKTOP
001B BD 07 E5 JSR INTEEE
001E CC 02 49 CLEAR: LDD #RAMBEG
0021 DD 00 STD USRBAS
0023 DD 02 STD USRTOP
0025 DD 04 CLR02: STD STKLIM
0027 BD 01 3E WMS05: JSR CRLF
002A 8E 00 82 LDX #VSTR
002D BD 01 37 JSR PUTSTR
0030 10 DE 06 CMDB: LDS STKTOP
0033 0F 13 CLR MODE
0035 BD 01 3E JSR CRLF
0038 9E 00 LDX USRBAS
003A 9F 08 STX CURSOR
003C 8E 00 00 CMDE: LDX #0000
003F 9F 0C STX LINENB
0041 0D 13 TST MODE
0043 26 05 BNE CMD01
0045 86 3A LDA #":"
0047 BD 07 AA JSR PUTCHR
004A BD 01 90 CMD01: JSR GETLIN
004D BD 02 EA JSR TSTNBR
0050 24 0E BCC CMD02
0052 29 2B BVS CMD05
0054 BD 02 5B JSR SKIPSP
0057 81 04 CMPA #EOL
0059 27 E1 BEQ CMDE
005B BD 02 0D JSR MSLINE
005E 20 D0 BRA CMDB
0060 34 10 CMD02: PSHS X
0062 9E 02 LDX USRTOP
0064 9C 04 CMPX STKLIM
0066 35 10 PULS X
0068 27 03 BEQ CMD03
006A 7E 01 5E JMP ERRORR
006D C3 00 00 CMD03: ADDD #0
0070 27 0D BEQ CMD05
0072 34 06 CMD04: PSHS D
0074 83 27 0F SUBD #9999
0077 35 06 PULS D
0079 22 04 BHI CMD05
007B 8D 10 BSR EDITOR
007D 20 BD BRA CMDE
007F 7E 01 55 CMD05: JMP ERRORS
0082 54 49 4E 59 20 56 31 2E 33 37 VSTR: DB "TINY V1.37"
008C 04 FCB EOL
008D ;******************************
008D ;******************************
008D 34 06 EDITOR: PSHS D
008F BD 02 5B JSR SKIPSP
0092 9F 0E STX SCRTCH
0094 A6 60 LDA 0,S
0096 9E 08 LDX CURSOR
0098 9C 02 CMPX USRTOP
009A 27 05 BEQ ED00
009C 10 A3 00 CMPD 0,X
009F 24 02 BCC ED01
00A1 9E 00 ED00: LDX USRBAS
00A3 BD 03 C4 ED01: JSR FNDLIN
00A6 9F 08 STX CURSOR
00A8 25 22 BCS ED04
00AA 9F 0A STX SAVESP
00AC 30 02 LEAX 2,X
00AE A6 80 ED02: LDA ,X+
00B0 81 04 CMPA #EOL
00B2 26 FA BNE ED02
00B4 9C 02 ED03: CMPX USRTOP
00B6 27 0E BEQ ED35
00B8 A6 80 LDA ,X+
00BA 9F 10 STX CHAR
00BC 9E 0A LDX SAVESP
00BE A7 80 STA ,X+
00C0 9F 0A STX SAVESP
00C2 9E 10 LDX CHAR
00C4 20 EE BRA ED03
00C6 9E 0A ED35: LDX SAVESP
00C8 9F 02 STX USRTOP
00CA 9F 04 STX STKLIM
00CC 9E 0E ED04: LDX SCRTCH
00CE C6 FF LDB #-1
00D0 5C ED05: INCB
00D1 A6 80 LDA ,X+
00D3 81 04 CMPA #EOL
00D5 26 F9 BNE ED05
00D7 5D TSTB
00D8 26 03 BNE ED55
00DA 32 62 LEAS 2,S
00DC 39 RTS
00DD 30 1F ED55: LEAX -1,X
00DF CB 04 ADDB #4
00E1 30 1F ED06: LEAX -1,X
00E3 5A DECB
00E4 A6 00 LDA 0,X
00E6 81 20 CMPA #SPACE
00E8 27 F7 BEQ ED06
00EA 86 04 LDA #EOL
00EC A7 01 STA 1,X
00EE 4F CLRA
00EF 9E 02 LDX USRTOP
00F1 9F 10 STX CHAR
00F3 D3 02 ADDD USRTOP
00F5 DD 02 STD USRTOP
00F7 DD 04 STD STKLIM
00F9 BD 03 62 JSR TSTSTK
00FC 24 07 BCC ED07
00FE 9F 02 STX USRTOP
0100 9F 04 STX STKLIM
0102 7E 01 4D JMP ERRORF
0105 9E 02 ED07: LDX USRTOP
0107 9F 0A ED08: STX SAVESP
0109 9E 10 LDX CHAR
010B 9C 08 CMPX CURSOR
010D 27 0A BEQ ED09
010F A6 82 LDA ,-X
0111 9F 10 STX CHAR
0113 9E 0A LDX SAVESP
0115 A7 82 STA ,-X
0117 20 EE BRA ED08
0119 35 06 ED09: PULS D
011B 9E 08 LDX CURSOR
011D ED 81 STD ,X++
011F 9F 10 STX CHAR
0121 9E 0E ED10: LDX SCRTCH
0123 A6 80 LDA ,X+
0125 9F 0E STX SCRTCH
0127 9E 10 LDX CHAR
0129 A7 80 STA ,X+
012B 9F 10 STX CHAR
012D 81 04 CMPA #EOL
012F 26 F0 BNE ED10
0131 39 RTS
0132 ;******************************
0132 ;******************************
0132 BD 07 AA PUTS01: JSR PUTCHR
0135 30 01 LEAX 1,X
0137 A6 00 PUTSTR: LDA 0,X
0139 81 04 CMPA #EOL
013B 26 F5 BNE PUTS01
013D 39 RTS
013E ;******************************
013E ;******************************
013E 8E 01 46 CRLF: LDX #CRLFST
0141 8D F4 BSR PUTSTR
0143 0F 12 CLR ZONE
0145 39 RTS
0146 0D 0A 7F 00 00 00 04 CRLFST: FCB CR,LF,DEL,FILL,FILL,FILL,EOL
014D ;******************************
014D ;******************************
014D 8D 26 ERRORF: BSR ER01
014F 53 4F 52 52 59 DB "SORRY"
0154 04 FCB EOL
0155 8D 1E ERRORS: BSR ER01
0157 57 48 41 54 20 3F DB "WHAT ?"
015D 04 FCB EOL
015E 8D 15 ERRORR: BSR ER01
0160 48 4F 57 20 3F DB "HOW ?"
0165 04 FCB EOL
0166 8D 0D BREAK: BSR ER01
0168 42 52 45 41 4B DB "BREAK"
016D 04 FCB EOL
016E 8D 05 END: BSR ER01
0170 53 54 4F 50 DB "STOP"
0174 04 FCB EOL
0175 8D C7 ER01: BSR CRLF
0177 86 07 LDA #BELL
0179 BD 07 AA JSR PUTCHR
017C DC 0C LDD LINENB
017E BD 06 5E JSR PRNT4
0181 86 20 LDA #SPACE
0183 BD 07 AA JSR PUTCHR
0186 35 10 PULS X
0188 8D AD BSR PUTSTR
018A 8D B2 BSR CRLF
018C 0E 30 JMP CMDB
018E ;******************************
018E ;******************************
018E 8D AE GL00: BSR CRLF
0190 8E 02 00 GETLIN: LDX #BUFFER
0193 BD 07 A0 GL03: JSR GETCHR
0196 81 20 CMPA #SPACE
0198 25 14 BCS GL05
019A 81 7F CMPA #$7F
019C 27 F5 BEQ GL03
019E 8C 02 48 CMPX #BUFFER+BSIZE-1
01A1 26 04 BNE GL04
01A3 86 07 LDA #BELL
01A5 20 02 BRA GL02
01A7 A7 80 GL04: STA ,X+
01A9 BD 07 AA GL02: JSR PUTCHR
01AC 20 E5 BRA GL03
01AE 81 08 GL05: CMPA #BS
01B0 27 24 BEQ GL07
01B2 81 18 CMPA #CAN
01B4 27 D8 BEQ GL00
01B6 81 0A CMPA #LF
01B8 27 31 BEQ GL09
01BA 81 0D CMPA #CR
01BC 26 D5 BNE GL03
01BE 0D 13 TST MODE
01C0 27 05 BEQ GL06
01C2 BD 07 AA JSR PUTCHR
01C5 20 07 BRA GL08
01C7 34 10 GL06: PSHS X
01C9 BD 01 3E JSR CRLF
01CC 35 10 PULS X
01CE 86 04 GL08: LDA #EOL
01D0 A7 00 STA 0,X
01D2 8E 02 00 LDX #BUFFER
01D5 39 RTS
01D6 8C 02 00 GL07: CMPX #BUFFER
01D9 27 B8 BEQ GL03
01DB 30 1F LEAX -1,X
01DD 86 08 LDA #BS
01DF BD 07 AA JSR PUTCHR
01E2 86 20 LDA #SPACE
01E4 BD 07 AA JSR PUTCHR
01E7 86 08 LDA #BS
01E9 20 BE BRA GL02
01EB 1A 01 GL09: ORCC #$01
01ED 06 13 ROR MODE
01EF 20 B8 BRA GL02
01F1 ;******************************
01F1 ;******************************
01F1 30 01 REM00: LEAX 1,X
01F3 8D 66 REM: BSR SKIPSP
01F5 81 04 CMPA #EOL
01F7 26 F8 BNE REM00
01F9 BD 05 31 ENDSMT: JSR TSTEOL
01FC 96 0C ENDS02: LDA LINENB
01FE 9A 0D ORA LINENB+1
0200 27 14 BEQ REM09
0202 9C 02 REM05: CMPX USRTOP
0204 26 03 BNE NXTLIN
0206 7E 01 5E JMP ERRORR
0209 EC 81 NXTLIN: LDD ,X++
020B DD 0C STD LINENB
020D BD 07 9C MSLINE: JSR TSTBRK
0210 8D 08 BSR IFAN
0212 25 03 BCS IMPLET
0214 34 06 PSHS D
0216 39 REM09: RTS
0217 7E 05 42 IMPLET: JMP LET
021A ;******************************
021A ;******************************
021A 8D 3F IFAN: BSR SKIPSP
021C 9F 08 STX CURSOR
021E 8E 07 37 LDX #VERBT
0221 A6 80 FAN00: LDA ,X+
0223 81 04 CMPA #EOL
0225 26 05 BNE FAN04
0227 9E 08 LDX CURSOR
0229 1A 01 ORCC #$01
022B 39 RTS
022C 9F 10 FAN04: STX CHAR
022E 9E 08 LDX CURSOR
0230 9F 0E STX SCRTCH
0232 9E 0E FAN05: LDX SCRTCH
0234 A1 00 CMPA 0,X
0236 26 15 BNE FAN07
0238 30 01 LEAX 1,X
023A 9F 0E STX SCRTCH
023C 9E 10 LDX CHAR
023E A6 80 LDA ,X+
0240 9F 10 STX CHAR
0242 81 04 CMPA #EOL
0244 26 EC BNE FAN05
0246 EC 00 LDD 0,X
0248 9E 0E LDX SCRTCH
024A 1C FE ANDCC #$FE
024C 39 RTS
024D 9E 10 FAN07: LDX CHAR
024F A6 80 FAN08: LDA ,X+
0251 81 04 CMPA #EOL
0253 26 FA BNE FAN08
0255 30 02 LEAX 2,X
0257 20 C8 BRA FAN00
0259 ;******************************
0259 ;******************************
0259 30 01 NXTNSP: LEAX 1,X
025B A6 00 SKIPSP: LDA 0,X
025D 81 20 CMPA #SPACE
025F 27 F8 BEQ NXTNSP
0261 39 RTS
0262 ;******************************
0262 ;******************************
0262 8D 1A TSTHEX: BSR TSTDIG
0264 24 22 BCC TST05
0266 81 41 CMPA #"A"
0268 25 11 BCS TST03
026A 81 46 CMPA #"F"
026C 22 0D BHI TST03
026E 80 37 SUBA #"A"-10
0270 1C FE ANDCC #$FE
0272 39 RTS
0273 ;******************************
0273 ;******************************
0273 81 41 TSTLTR: CMPA #"A"
0275 25 04 BCS TST03
0277 81 5A CMPA #"Z"
0279 23 0D BLS TST05
027B 1A 01 TST03: ORCC #$01
027D 39 RTS
027E ;******************************
027E ;******************************
027E 81 30 TSTDIG: CMPA #"0"
0280 25 F9 BCS TST03
0282 81 39 CMPA #"9"
0284 22 F5 BHI TST03
0286 80 30 SUBA #"0"
0288 1C FE TST05: ANDCC #$FE
028A 39 RTS
028B ;******************************
028B ;******************************
028B 8D CE TSTVAR: BSR SKIPSP
028D 8D E4 BSR TSTLTR
028F 25 12 BCS TSTV03
0291 1F 89 TFR A,B
0293 A6 01 LDA 1,X
0295 8D DC BSR TSTLTR
0297 24 E2 BCC TST03
0299 30 01 LEAX 1,X
029B C0 41 SUBB #"A"
029D 58 ASLB
029E 4F CLRA
029F D3 06 ADDD STKTOP
02A1 1C FE TSTV02: ANDCC #$FE
02A3 39 TSTV03: RTS
02A4 ;******************************
02A4 ;******************************
02A4 BD 05 10 USER: JSR ARGONE
02A7 34 06 PSHS D
02A9 BD 02 5B JSR SKIPSP
02AC 81 2C CMPA #","
02AE 27 09 BEQ USER03
02B0 81 29 CMPA #")"
02B2 1A 01 ORCC #$01
02B4 27 15 BEQ USER05
02B6 7E 01 55 USER02: JMP ERRORS
02B9 30 01 USER03: LEAX 1,X
02BB BD 04 43 JSR EXPR
02BE 34 02 PSHS A
02C0 BD 02 5B JSR SKIPSP
02C3 81 29 CMPA #")"
02C5 35 02 PULS A
02C7 26 ED BNE USER02
02C9 1C FE ANDCC #$FE
02CB 30 01 USER05: LEAX 1,X
02CD 9F 08 STX CURSOR
02CF AD F1 JSR [,S++]
02D1 9E 08 LDX CURSOR
02D3 1C FE ANDCC #$FE
02D5 39 RTS
02D6 ;******************************
02D6 ;******************************
02D6 BD 02 5B TSTSNB: JSR SKIPSP
02D9 81 2D CMPA #"-"
02DB 26 0D BNE TSTNBR
02DD 30 01 LEAX 1,X
02DF 8D 09 BSR TSTNBR
02E1 25 06 BCS TSN02
02E3 40 NEGA
02E4 50 NEGB
02E5 82 00 SBCA #0
02E7 1C FC ANDCC #$FC
02E9 39 TSN02: RTS
02EA ;******************************
02EA ;******************************
02EA BD 02 5B TSTNBR: JSR SKIPSP
02ED BD 02 7E JSR TSTDIG
02F0 24 2F BCC TSTN02
02F2 81 24 CMPA #"$"
02F4 1A 01 ORCC #$01
02F6 26 60 BNE TSTN09
02F8 30 01 TSTN20: LEAX 1,X
02FA 6F E2 CLR ,-S
02FC 6F E2 CLR ,-S
02FE A6 00 TSTN23: LDA 0,X
0300 BD 02 62 JSR TSTHEX
0303 25 4F BCS TSTN07
0305 30 01 LEAX 1,X
0307 34 10 PSHS X
0309 34 02 PSHS A
030B EC 63 LDD 3,S
030D 85 F0 BITA #$F0
030F 26 4A BNE TSTN11
0311 58 ASLB
0312 49 ROLA
0313 58 ASLB
0314 49 ROLA
0315 58 ASLB
0316 49 ROLA
0317 58 ASLB
0318 49 ROLA
0319 EB E0 ADDB ,S+
031B ED 62 STD 2,S
031D 35 10 PULS X
031F 20 DD BRA TSTN23
0321 30 01 TSTN02: LEAX 1,X
0323 34 02 PSHS A
0325 6F E2 CLR ,-S
0327 A6 00 TSTN03: LDA 0,X
0329 BD 02 7E JSR TSTDIG
032C 25 26 BCS TSTN07
032E 30 01 LEAX 1,X
0330 34 10 PSHS X
0332 34 02 PSHS A
0334 EC 63 LDD 3,S
0336 58 ASLB
0337 49 ROLA
0338 29 21 BVS TSTN11
033A 58 ASLB
033B 49 ROLA
033C 29 1D BVS TSTN11
033E E3 63 ADDD 3,S
0340 29 19 BVS TSTN11
0342 58 ASLB
0343 49 ROLA
0344 29 15 BVS TSTN11
0346 EB 60 ADDB 0,S
0348 89 00 ADCA #0
034A 29 0F BVS TSTN11
034C ED 63 STD 3,S
034E 32 61 LEAS 1,S
0350 35 10 PULS X
0352 20 D3 BRA TSTN03
0354 35 06 TSTN07: PULS D
0356 1C FE ANDCC #$FE
0358 1C FD TSTN09: ANDCC #$FD
035A 39 RTS
035B AE 61 TSTN11: LDX 1,S
035D 32 65 LEAS 5,S
035F 1A 03 ORCC #$03
0361 39 RTS
0362 ;******************************
0362 ;******************************
0362 10 DF 0A TSTSTK: STS SAVESP
0365 DC 0A LDD SAVESP
0367 83 00 30 SUBD #STKCUS
036A 93 04 SUBD STKLIM
036C 39 RTS
036D ;******************************
036D ;******************************
036D BD 04 FD PEEK: JSR PAREXP
0370 34 06 PSHS D
0372 34 10 PSHS X
0374 E6 72 LDB [2,S]
0376 35 10 PULS X
0378 32 62 LEAS 2,S
037A 4F CLRA
037B 39 RTS
037C ;******************************
037C ;******************************
037C BD 04 FD POKE: JSR PAREXP
037F 34 06 PSHS D
0381 BD 02 5B JSR SKIPSP
0384 81 3D CMPA #"="
0386 27 03 BEQ POKE05
0388 7E 01 55 JMP ERRORS
038B 30 01 POKE05: LEAX 1,X
038D BD 04 43 JSR EXPR
0390 BD 05 31 JSR TSTEOL
0393 34 10 PSHS X
0395 E7 72 STB [2,S]
0397 35 10 PULS X
0399 32 62 LEAS 2,S
039B 7E 01 FC JMP ENDS02
039E ;******************************
039E ;******************************
039E BD 02 5B TSTFUN: JSR SKIPSP
03A1 9F 08 STX CURSOR
03A3 8E 03 AE LDX #FUNT
03A6 BD 02 21 JSR FAN00
03A9 25 02 BCS TSTF05
03AB 34 06 PSHS D
03AD 39 TSTF05: RTS
03AE ;******************************
03AE ;******************************
03AE 55 53 52 FUNT: DB "USR"
03B1 04 FCB EOL
03B2 02 A4 FDB USER
03B4 50 45 45 4B DB "PEEK"
03B8 04 FCB EOL
03B9 03 6D FDB PEEK
03BB 4D 45 4D DB "MEM"
03BE 04 FCB EOL
03BF 03 62 FDB TSTSTK
03C1 04 FCB EOL
03C2 ;******************************
03C2 ;******************************
03C2 9E 00 FLINE: LDX USRBAS
03C4 9C 02 FNDLIN: CMPX USRTOP
03C6 26 03 BNE FND03
03C8 1A 03 ORCC #$03
03CA 39 RTS
03CB 10 A3 00 FND03: CMPD 0,X
03CE 26 03 BNE FND05
03D0 1C FC ANDCC #$FC
03D2 39 RTS
03D3 24 05 FND05: BCC FND07
03D5 1A 01 ORCC #$01
03D7 1C FD ANDCC #$FD
03D9 39 RTS
03DA 34 02 FND07: PSHS A
03DC 86 04 LDA #EOL
03DE 30 01 LEAX 1,X
03E0 30 01 FND09: LEAX 1,X
03E2 A1 00 CMPA 0,X
03E4 26 FA BNE FND09
03E6 35 02 PULS A
03E8 30 01 LEAX 1,X
03EA 20 D8 BRA FNDLIN
03EC ;******************************
03EC ;******************************
03EC 8D 55 RELEXP: BSR EXPR
03EE 34 06 PSHS D
03F0 5F CLRB
03F1 BD 02 5B JSR SKIPSP
03F4 81 3D CMPA #"="
03F6 27 23 BEQ REL06
03F8 81 3C CMPA #"<"
03FA 26 10 BNE REL03
03FC 30 01 LEAX 1,X
03FE 5C INCB
03FF BD 02 5B JSR SKIPSP
0402 81 3E CMPA #">"
0404 26 11 BNE REL05
0406 30 01 LEAX 1,X
0408 CB 04 ADDB #4
040A 20 13 BRA REL07
040C 81 3E REL03: CMPA #">"
040E 26 5F BNE EXPR06
0410 30 01 LEAX 1,X
0412 CB 04 ADDB #4
0414 BD 02 5B JSR SKIPSP
0417 81 3D REL05: CMPA #"="
0419 26 04 BNE REL07
041B 30 01 REL06: LEAX 1,X
041D CB 02 ADDB #2
041F 34 04 REL07: PSHS B
0421 8D 20 BSR EXPR
0423 34 10 PSHS X
0425 A3 63 SUBD 3,S
0427 1F A8 TFR CC,A
0429 44 LSRA
042A 1F 89 TFR A,B
042C 48 ASLA
042D 48 ASLA
042E 34 04 PSHS B
0430 AB E0 ADDA ,S+
0432 84 06 ANDA #$06
0434 26 01 BNE REL08
0436 4C INCA
0437 5F REL08: CLRB
0438 A4 62 ANDA 2,S
043A 27 01 BEQ REL09
043C 53 COMB
043D 4F REL09: CLRA
043E 35 10 PULS X
0440 32 63 LEAS 3,S
0442 39 RTS
0443 ;******************************
0443 ;******************************
0443 6F E2 EXPR: CLR ,-S
0445 6F E2 CLR ,-S
0447 BD 02 5B JSR SKIPSP
044A 81 2D CMPA #"-"
044C 27 17 BEQ EXPR05
044E 81 2B CMPA #"+"
0450 26 02 BNE EXPR03
0452 30 01 EXPR02: LEAX 1,X
0454 8D 1C EXPR03: BSR TERM
0456 E3 60 EXPR04: ADDD 0,S
0458 ED 60 STD 0,S
045A BD 02 5B JSR SKIPSP
045D 81 2B CMPA #"+"
045F 27 F1 BEQ EXPR02
0461 81 2D CMPA #"-"
0463 26 0A BNE EXPR06
0465 30 01 EXPR05: LEAX 1,X
0467 8D 09 BSR TERM
0469 40 NEGA
046A 50 NEGB
046B 82 00 SBCA #0
046D 20 E7 BRA EXPR04
046F 35 06 EXPR06: PULS D
0471 39 RTS
0472 ;******************************
0472 ;******************************
0472 BD 04 E5 TERM: JSR FACT
0475 34 06 PSHS D
0477 BD 02 5B TERM03: JSR SKIPSP
047A 81 2A CMPA #"*"
047C 27 48 BEQ TERM07
047E 81 2F CMPA #"/"
0480 27 03 BEQ TERM05
0482 35 06 PULS D
0484 39 RTS
0485 30 01 TERM05: LEAX 1,X
0487 8D 5C BSR FACT
0489 34 10 PSHS X
048B 30 62 LEAX 2,S
048D 34 06 PSHS D
048F A8 00 EORA 0,X
0491 BD 05 24 JSR ABSX
0494 30 60 LEAX 0,S
0496 BD 05 24 JSR ABSX
0499 34 02 PSHS A
049B 86 11 LDA #17
049D 34 02 PSHS A
049F 4F CLRA
04A0 5F CLRB
04A1 A3 62 DIV05: SUBD 2,S
04A3 24 06 BCC DIV07
04A5 E3 62 ADDD 2,S
04A7 1C FE ANDCC #$FE
04A9 20 02 BRA DIV09
04AB 1A 01 DIV07: ORCC #$01
04AD 69 67 DIV09: ROL 7,S
04AF 69 66 ROL 6,S
04B1 59 ROLB
04B2 49 ROLA
04B3 6A 60 DEC 0,S
04B5 26 EA BNE DIV05
04B7 A6 61 LDA 1,S
04B9 32 64 LEAS 4,S
04BB 4D TSTA
04BC 2A 04 BPL TERM06
04BE 30 62 LEAX 2,S
04C0 8D 66 BSR NEGX
04C2 35 10 TERM06: PULS X
04C4 20 B1 BRA TERM03
04C6 30 01 TERM07: LEAX 1,X
04C8 8D 1B BSR FACT
04CA 34 04 MULT: PSHS B
04CC E6 62 LDB 2,S
04CE 3D MUL
04CF A6 61 LDA 1,S
04D1 E7 61 STB 1,S
04D3 E6 60 LDB 0,S
04D5 3D MUL
04D6 A6 62 LDA 2,S
04D8 E7 62 STB 2,S
04DA 35 04 PULS B
04DC 3D MUL
04DD AB 60 ADDA 0,S
04DF AB 61 ADDA 1,S
04E1 ED 60 STD 0,S
04E3 20 92 BRA TERM03
04E5 ;******************************
04E5 ;******************************
04E5 BD 02 8B FACT: JSR TSTVAR
04E8 25 09 BCS FACT03
04EA 34 10 PSHS X
04EC 1F 01 TFR D,X
04EE EC 00 LDD 0,X
04F0 35 10 PULS X
04F2 39 FACT02: RTS
04F3 BD 02 EA FACT03: JSR TSTNBR
04F6 24 FA BCC FACT02
04F8 BD 03 9E JSR TSTFUN
04FB 24 F5 BCC FACT02
04FD 8D 11 PAREXP: BSR ARGONE
04FF 34 02 PSHS A
0501 BD 02 5B JSR SKIPSP
0504 81 29 CMPA #")"
0506 35 02 PULS A
0508 26 03 BNE FACT05
050A 30 01 LEAX 1,X
050C 39 RTS
050D 7E 01 55 FACT05: JMP ERRORS
0510 ;******************************
0510 ;******************************
0510 BD 03 62 ARGONE: JSR TSTSTK
0513 24 03 BCC FACT04
0515 7E 01 4D JMP ERRORF
0518 BD 02 5B FACT04: JSR SKIPSP
051B 81 28 CMPA #"("
051D 26 EE BNE FACT05
051F 30 01 LEAX 1,X
0521 7E 04 43 JMP EXPR
0524 ;******************************
0524 ;******************************
0524 6D 00 ABSX: TST 0,X
0526 2A 08 BPL NEG05
0528 60 00 NEGX: NEG 0,X
052A 60 01 NEG 1,X
052C 24 02 BCC NEG05
052E 6A 00 DEC 0,X
0530 39 NEG05: RTS
0531 ;******************************
0531 ;******************************
0531 34 02 TSTEOL: PSHS A
0533 BD 02 5B JSR SKIPSP
0536 81 04 CMPA #EOL
0538 27 03 BEQ TEOL03
053A 7E 01 55 JMP ERRORS
053D 30 01 TEOL03: LEAX 1,X
053F 35 02 PULS A
0541 39 RTS
0542 ;******************************
0542 ;******************************
0542 BD 02 8B LET: JSR TSTVAR
0545 24 03 BCC LET03
0547 7E 01 55 JMP ERRORS
054A 34 06 LET03: PSHS D
054C BD 02 5B JSR SKIPSP
054F 81 3D CMPA #"="
0551 27 03 BEQ LET05
0553 7E 01 55 JMP ERRORS
0556 30 01 LET05: LEAX 1,X
0558 BD 04 43 JSR EXPR
055B 8D D4 BSR TSTEOL
055D 9F 08 STX CURSOR
055F 35 10 PULS X
0561 ED 00 STD 0,X
0563 9E 08 LDX CURSOR
0565 7E 01 FC JMP ENDS02
0568 ;******************************
0568 ;******************************
0568 BD 03 EC IF: JSR RELEXP
056B 5D TSTB
056C 27 03 BEQ IF03
056E 7E 02 0D JMP MSLINE
0571 7E 01 F3 IF03: JMP REM
0574 ;******************************
0574 ;******************************
0574 BD 04 43 GOTO: JSR EXPR
0577 8D B8 BSR TSTEOL
0579 BD 03 C2 JSR FLINE
057C 25 0F BCS GOSB04
057E 7E 02 09 JMP NXTLIN
0581 ;******************************
0581 ;******************************
0581 BD 04 43 GOSUB: JSR EXPR
0584 8D AB BSR TSTEOL
0586 9F 08 STX CURSOR
0588 BD 03 C2 JSR FLINE
058B 24 03 BCC GOSB03
058D 7E 01 5E GOSB04: JMP ERRORR
0590 BD 03 62 GOSB03: JSR TSTSTK
0593 24 03 BCC GOSB05
0595 7E 01 4D JMP ERRORF
0598 DC 08 GOSB05: LDD CURSOR
059A 34 06 PSHS D
059C DC 0C LDD LINENB
059E 34 06 PSHS D
05A0 BD 02 09 JSR NXTLIN
05A3 35 06 PULS D
05A5 DD 0C STD LINENB
05A7 35 10 PULS X
05A9 7E 01 FC JMP ENDS02
05AC ;******************************
05AC ;******************************
05AC RETURN: EQU TSTEOL
05AC ;******************************
05AC ;******************************
05AC BD 02 5B PRINT: JSR SKIPSP
05AF 81 2C PR01: CMPA #","
05B1 27 36 BEQ PR05
05B3 81 3B CMPA #";"
05B5 27 3D BEQ PR07
05B7 81 04 CMPA #EOL
05B9 27 25 BEQ PR04
05BB 81 22 CMPA #$22
05BD 26 06 BNE PR02
05BF 30 01 LEAX 1,X
05C1 8D 42 BSR PRNTQS
05C3 20 09 BRA PR03
05C5 BD 04 43 PR02: JSR EXPR
05C8 34 10 PSHS X
05CA 8D 47 BSR PRNTN
05CC 35 10 PULS X
05CE BD 02 5B PR03: JSR SKIPSP
05D1 81 2C CMPA #","
05D3 27 14 BEQ PR05
05D5 81 3B CMPA #";"
05D7 27 1B BEQ PR07
05D9 81 04 CMPA #EOL
05DB 27 03 BEQ PR04
05DD 7E 01 55 JMP ERRORS
05E0 34 10 PR04: PSHS X
05E2 BD 01 3E JSR CRLF
05E5 35 10 PULS X
05E7 20 14 BRA PR08
05E9 C6 07 PR05: LDB #$7
05EB 86 20 PR06: LDA #SPACE
05ED BD 07 AA JSR PUTCHR
05F0 D5 12 BITB ZONE
05F2 26 F7 BNE PR06
05F4 30 01 PR07: LEAX 1,X
05F6 BD 02 5B JSR SKIPSP
05F9 81 04 CMPA #EOL
05FB 26 B2 BNE PR01
05FD 30 01 PR08: LEAX 1,X
05FF 7E 01 FC JMP ENDS02
0602 ;*
0602 ;*
0602 BD 07 AA PRQ01: JSR PUTCHR
0605 A6 80 PRNTQS: LDA ,X+
0607 81 04 CMPA #EOL
0609 26 03 BNE PRQ03
060B 7E 01 55 JMP ERRORS
060E 81 22 PRQ03: CMPA #$22
0610 26 F0 BNE PRQ01
0612 39 RTS
0613 ;*
0613 4D PRNTN: TSTA
0614 2A 0D BPL PRN03
0616 40 NEGA
0617 50 NEGB
0618 82 00 SBCA #0
061A 34 02 PSHS A
061C 86 2D LDA #"-"
061E BD 07 AA JSR PUTCHR
0621 35 02 PULS A
0623 8E 06 52 PRN03: LDX #PRNPT-2
0626 30 02 PRN05: LEAX 2,X
0628 10 A3 00 CMPD 0,X
062B 24 05 BCC PRN07
062D 8C 06 5C CMPX #PRNPTO
0630 26 F4 BNE PRN05
0632 0F 10 PRN07: CLR CHAR
0634 10 A3 00 PRN09: CMPD 0,X
0637 25 06 BCS PRN11
0639 A3 00 SUBD 0,X
063B 0C 10 INC CHAR
063D 20 F5 BRA PRN09
063F 34 02 PRN11: PSHS A
0641 86 30 LDA #"0"
0643 9B 10 ADDA CHAR
0645 BD 07 AA JSR PUTCHR
0648 35 02 PULS A
064A 8C 06 5C CMPX #PRNPTO
064D 27 04 BEQ PRN13
064F 30 02 LEAX 2,X
0651 20 DF BRA PRN07
0653 39 PRN13: RTS
0654 27 10 PRNPT: FDB 10000
0656 03 E8 FDB 1000
0658 00 64 FDB 100
065A 00 0A FDB 10
065C 00 01 PRNPTO: FDB 1
065E ;*
065E 8E 06 56 PRNT4: LDX #PRNPT+2
0661 20 CF BRA PRN07
0663 ;******************************
0663 ;******************************
0663 BD 02 8B INPUT: JSR TSTVAR
0666 25 3C BCS IN11
0668 34 06 PSHS D
066A 9F 08 STX CURSOR
066C 86 3F IN03: LDA #"?"
066E BD 07 AA JSR PUTCHR
0671 BD 01 90 JSR GETLIN
0674 BD 02 5B IN05: JSR SKIPSP
0677 81 04 CMPA #EOL
0679 27 F1 BEQ IN03
067B BD 02 D6 JSR TSTSNB
067E 24 0B BCC IN07
0680 8E 06 B8 LDX #RMESS
0683 BD 01 37 JSR PUTSTR
0686 BD 01 3E JSR CRLF
0689 20 E1 BRA IN03
068B 9F 0E IN07: STX SCRTCH
068D 35 10 PULS X
068F ED 00 STD 0,X
0691 9E 08 LDX CURSOR
0693 BD 02 5B JSR SKIPSP
0696 81 2C CMPA #","
0698 27 03 BEQ IN09
069A 7E 01 F9 JMP ENDSMT
069D 30 01 IN09: LEAX 1,X
069F BD 02 8B JSR TSTVAR
06A2 24 03 BCC IN13
06A4 7E 01 55 IN11: JMP ERRORS
06A7 34 06 IN13: PSHS D
06A9 34 10 PSHS X
06AB 9E 0E LDX SCRTCH
06AD BD 02 5B JSR SKIPSP
06B0 81 2C CMPA #","
06B2 26 C0 BNE IN05
06B4 30 01 LEAX 1,X
06B6 20 BC BRA IN05
06B8 52 45 2D 45 4E 54 45 52 RMESS: DB "RE-ENTER"
06C0 04 FCB EOL
06C1 ;******************************
06C1 ;******************************
06C1 9E 06 RUN: LDX STKTOP
06C3 86 34 LDA #52
06C5 6F 80 RUN01: CLR ,X+
06C7 4A DECA
06C8 26 FB BNE RUN01
06CA 9E 00 LDX USRBAS
06CC 7E 02 02 JMP REM05
06CF ;******************************
06CF ;******************************
06CF BD 02 EA LIST: JSR TSTNBR
06D2 24 08 BCC LIST03
06D4 4F CLRA
06D5 5F CLRB
06D6 DD 08 STD CURSOR
06D8 86 7F LDA #$7F
06DA 20 17 BRA LIST07
06DC DD 08 LIST03: STD CURSOR
06DE BD 02 5B JSR SKIPSP
06E1 81 2C CMPA #","
06E3 27 04 BEQ LIST05
06E5 96 08 LDA CURSOR
06E7 20 0A BRA LIST07
06E9 30 01 LIST05: LEAX 1,X
06EB BD 02 EA JSR TSTNBR
06EE 24 03 BCC LIST07
06F0 7E 01 55 JMP ERRORS
06F3 BD 05 31 LIST07: JSR TSTEOL
06F6 34 06 PSHS D
06F8 DC 08 LDD CURSOR
06FA 9F 08 STX CURSOR
06FC BD 03 C2 JSR FLINE
06FF 9C 02 LIST09: CMPX USRTOP
0701 27 28 BEQ LIST10
0703 35 06 PULS D
0705 10 A3 00 CMPD 0,X
0708 25 28 BCS LIST11
070A 34 06 PSHS D
070C EC 81 LDD ,X++
070E 34 10 PSHS X
0710 BD 06 5E JSR PRNT4
0713 35 10 PULS X
0715 86 20 LDA #SPACE
0717 BD 07 AA JSR PUTCHR
071A BD 01 37 JSR PUTSTR
071D 30 01 LEAX 1,X
071F 34 10 PSHS X
0721 BD 01 3E JSR CRLF
0724 35 10 PULS X
0726 BD 07 9C JSR TSTBRK
0729 20 D4 BRA LIST09
072B 32 62 LIST10: LEAS 2,S
072D 86 03 LDA #ETX
072F BD 07 AA JSR PUTCHR
0732 9E 08 LIST11: LDX CURSOR
0734 7E 01 FC JMP ENDS02
0737 ;******************************
0737 ;******************************
0737 4C 45 54 VERBT: DB "LET"
073A 04 FCB EOL
073B 05 42 FDB LET
073D 49 46 DB "IF"
073F 04 FCB EOL
0740 05 68 FDB IF
0742 47 4F 54 4F DB "GOTO"
0746 04 FCB EOL
0747 05 74 FDB GOTO
0749 47 4F 53 55 42 DB "GOSUB"
074E 04 FCB EOL
074F 05 81 FDB GOSUB
0751 52 45 54 55 52 4E DB "RETURN"
0757 04 FCB EOL
0758 05 31 FDB RETURN
075A 50 4F 4B 45 DB "POKE"
075E 04 FCB EOL
075F 03 7C FDB POKE
0761 50 52 49 4E 54 DB "PRINT"
0766 04 FCB EOL
0767 05 AC FDB PRINT
0769 49 4E 50 55 54 DB "INPUT"
076E 04 FCB EOL
076F 06 63 FDB INPUT
0771 52 45 4D DB "REM"
0774 04 FCB EOL
0775 01 F3 FDB REM
0777 53 54 4F 50 DB "STOP"
077B 04 FCB EOL
077C 01 6E FDB END
077E 45 4E 44 DB "END"
0781 04 FCB EOL
0782 01 6E FDB END
0784 52 55 4E DB "RUN"
0787 04 FCB EOL
0788 06 C1 FDB RUN
078A 4C 49 53 54 DB "LIST"
078E 04 FCB EOL
078F 06 CF FDB LIST
0791 4E 45 57 DB "NEW"
0794 04 FCB EOL
0795 00 1E FDB CLEAR
0797 3F DB "?"
0798 04 FCB EOL
0799 05 AC FDB PRINT
079B 04 FCB EOL
079C ;******************************
079C ;******************************
079C 8D 2A TSTBRK: BSR BRKEEE
079E 27 09 BEQ GETC05
07A0 8D 0D GETCHR: BSR INEEE
07A2 81 03 CMPA #ETX
07A4 26 03 BNE GETC05
07A6 7E 01 66 JMP BREAK
07A9 39 GETC05: RTS
07AA 0C 12 PUTCHR: INC ZONE
07AC 7E 07 B9 JMP OUTEEE
07AF ;******************************
07AF ;******************************
07AF 8D 17 INEEE: BSR BRKEEE
07B1 27 FC BEQ INEEE
07B3 B6 83 FF LDA RECEV
07B6 84 7F ANDA #$7F
07B8 39 RTS
07B9 34 02 OUTEEE: PSHS A
07BB B6 83 FE OUT01: LDA TRCS
07BE 85 02 BITA #TDRE
07C0 27 F9 BEQ OUT01
07C2 35 02 PULS A
07C4 B7 83 FF STA TRANS
07C7 39 RTS
07C8 34 02 BRKEEE: PSHS A
07CA B6 83 FE BRK03: LDA TRCS
07CD 85 20 BITA #ORFE
07CF 27 05 BEQ BRK05
07D1 B6 83 FF LDA RECEV
07D4 20 F4 BRA BRK03
07D6 85 01 BRK05: BITA #RDRF
07D8 35 02 PULS A
07DA 39 RTS
07DB ;*
07DB 86 03 LDA #CNTL1
07DD B7 83 FE STA RMCR
07E0 86 15 LDA #CNTL2
07E2 B7 83 FE STA TRCS
07E5 INTEEE: EQU $
07E5 39 RTS
07E6 ;******************************
07E6 ;******************************
EOL: 0004 DEFINED AT LINE 18
> USED AT LINE 127
> USED AT LINE 232
> USED AT LINE 235
> USED AT LINE 238
> USED AT LINE 241
> USED AT LINE 244
> USED AT LINE 560
> USED AT LINE 563
> USED AT LINE 566
> USED AT LINE 568
> USED AT LINE 966
> USED AT LINE 1027
> USED AT LINE 1030
> USED AT LINE 1033
> USED AT LINE 1036
> USED AT LINE 1039
> USED AT LINE 1042
> USED AT LINE 1045
> USED AT LINE 1048
> USED AT LINE 1051
> USED AT LINE 1054
> USED AT LINE 1057
> USED AT LINE 1060
> USED AT LINE 1063
> USED AT LINE 1066
> USED AT LINE 1069
> USED AT LINE 1071
ETX: 0003 DEFINED AT LINE 19
SPACE: 0020 DEFINED AT LINE 20
CR: 000D DEFINED AT LINE 21
> USED AT LINE 227
LF: 000A DEFINED AT LINE 22
> USED AT LINE 227
BS: 0008 DEFINED AT LINE 23
CAN: 0018 DEFINED AT LINE 24
BELL: 0007 DEFINED AT LINE 25
FILL: 0000 DEFINED AT LINE 26
DEL: 007F DEFINED AT LINE 27
BSIZE: 0049 DEFINED AT LINE 28
> USED AT LINE 48
STKCUS: 0030 DEFINED AT LINE 29
BACIA: 83FE DEFINED AT LINE 31
> USED AT LINE 32
> USED AT LINE 33
> USED AT LINE 34
> USED AT LINE 35
RMCR: 83FE DEFINED AT LINE 32
> USED AT LINE 1108
TRCS: 83FE DEFINED AT LINE 33
> USED AT LINE 1091
> USED AT LINE 1098
> USED AT LINE 1110
RECEV: 83FF DEFINED AT LINE 34
> USED AT LINE 1087
> USED AT LINE 1101
TRANS: 83FF DEFINED AT LINE 35
> USED AT LINE 1095
CNTL1: 0003 DEFINED AT LINE 36
CNTL2: 0015 DEFINED AT LINE 37
RDRF: 0001 DEFINED AT LINE 38
ORFE: 0020 DEFINED AT LINE 39
TDRE: 0002 DEFINED AT LINE 40
LORAM: 0080 DEFINED AT LINE 43
BUFFER: 0200 DEFINED AT LINE 44
> USED AT LINE 48
> USED AT LINE 49
RAMSIZ: 2000 DEFINED AT LINE 45
> USED AT LINE 49
ROMADR: F000 DEFINED AT LINE 46
RAMBEG: 0249 DEFINED AT LINE 48
RAMEND: 2200 DEFINED AT LINE 49
RAMPAT: AA0F DEFINED AT LINE 51
ROMPAT: F055 DEFINED AT LINE 52
USRBAS: 0000 DEFINED AT LINE 56
> USED AT LINE 85
> USED AT LINE 94
> USED AT LINE 139
> USED AT LINE 571
> USED AT LINE 974
USRTOP: 0002 DEFINED AT LINE 57
> USED AT LINE 86
> USED AT LINE 112
> USED AT LINE 135
> USED AT LINE 148
> USED AT LINE 158
> USED AT LINE 180
> USED AT LINE 182
> USED AT LINE 183
> USED AT LINE 187
> USED AT LINE 190
> USED AT LINE 313
> USED AT LINE 572
> USED AT LINE 1000
STKLIM: 0004 DEFINED AT LINE 58
> USED AT LINE 87
> USED AT LINE 113
> USED AT LINE 159
> USED AT LINE 184
> USED AT LINE 188
> USED AT LINE 520
STKTOP: 0006 DEFINED AT LINE 59
> USED AT LINE 78
> USED AT LINE 82
> USED AT LINE 91
> USED AT LINE 406
> USED AT LINE 969
CURSOR: 0008 DEFINED AT LINE 60
> USED AT LINE 95
> USED AT LINE 134
> USED AT LINE 141
> USED AT LINE 193
> USED AT LINE 201
> USED AT LINE 327
> USED AT LINE 332
> USED AT LINE 336
> USED AT LINE 429
> USED AT LINE 431
> USED AT LINE 551
> USED AT LINE 794
> USED AT LINE 797
> USED AT LINE 817
> USED AT LINE 824
> USED AT LINE 932
> USED AT LINE 948
> USED AT LINE 982
> USED AT LINE 985
> USED AT LINE 989
> USED AT LINE 997
> USED AT LINE 998
> USED AT LINE 1022
SAVESP: 000A DEFINED AT LINE 61
> USED AT LINE 143
> USED AT LINE 152
> USED AT LINE 154
> USED AT LINE 157
> USED AT LINE 191
> USED AT LINE 197
> USED AT LINE 517
> USED AT LINE 518
LINENB: 000C DEFINED AT LINE 62
> USED AT LINE 97
> USED AT LINE 248
> USED AT LINE 310
> USED AT LINE 311
> USED AT LINE 317
> USED AT LINE 826
> USED AT LINE 830
SCRTCH: 000E DEFINED AT LINE 63
> USED AT LINE 132
> USED AT LINE 160
> USED AT LINE 204
> USED AT LINE 206
> USED AT LINE 337
> USED AT LINE 338
> USED AT LINE 342
> USED AT LINE 349
> USED AT LINE 945
> USED AT LINE 959
CHAR: 0010 DEFINED AT LINE 64
> USED AT LINE 151
> USED AT LINE 155
> USED AT LINE 181
> USED AT LINE 192
> USED AT LINE 196
> USED AT LINE 203
> USED AT LINE 207
> USED AT LINE 209
> USED AT LINE 335
> USED AT LINE 343
> USED AT LINE 345
> USED AT LINE 352
> USED AT LINE 903
> USED AT LINE 907
> USED AT LINE 911
ZONE: 0012 DEFINED AT LINE 65
> USED AT LINE 225
> USED AT LINE 869
> USED AT LINE 1081
MODE: 0013 DEFINED AT LINE 66
> USED AT LINE 92
> USED AT LINE 98
> USED AT LINE 280
> USED AT LINE 301
RESRVD: 0014 DEFINED AT LINE 67
LOEND: 0015 DEFINED AT LINE 68
BASIC: 0000 DEFINED AT LINE 76
WARMS: 000C DEFINED AT LINE 78
SETUP: 0014 DEFINED AT LINE 81
> USED AT LINE 76
SET03: 0018 DEFINED AT LINE 82
CLEAR: 001E DEFINED AT LINE 84
> USED AT LINE 1067
CLR02: 0025 DEFINED AT LINE 87
WMS05: 0027 DEFINED AT LINE 88
> USED AT LINE 80
CMDB: 0030 DEFINED AT LINE 91
> USED AT LINE 110
> USED AT LINE 255
CMDE: 003C DEFINED AT LINE 96
> USED AT LINE 108
> USED AT LINE 124
CMD01: 004A DEFINED AT LINE 102
> USED AT LINE 99
CMD02: 0060 DEFINED AT LINE 111
> USED AT LINE 104
CMD03: 006D DEFINED AT LINE 117
> USED AT LINE 115
CMD04: 0072 DEFINED AT LINE 119
CMD05: 007F DEFINED AT LINE 125
> USED AT LINE 105
> USED AT LINE 118
> USED AT LINE 122
VSTR: 0082 DEFINED AT LINE 126
EDITOR: 008D DEFINED AT LINE 130
> USED AT LINE 123
ED00: 00A1 DEFINED AT LINE 139
> USED AT LINE 136
ED01: 00A3 DEFINED AT LINE 140
> USED AT LINE 138
ED02: 00AE DEFINED AT LINE 145
> USED AT LINE 147
ED03: 00B4 DEFINED AT LINE 148
> USED AT LINE 156
ED35: 00C6 DEFINED AT LINE 157
> USED AT LINE 149
ED04: 00CC DEFINED AT LINE 160
> USED AT LINE 142
ED05: 00D0 DEFINED AT LINE 162
> USED AT LINE 165
ED55: 00DD DEFINED AT LINE 170
> USED AT LINE 167
ED06: 00E1 DEFINED AT LINE 172
> USED AT LINE 176
ED07: 0105 DEFINED AT LINE 190
> USED AT LINE 186
ED08: 0107 DEFINED AT LINE 191
> USED AT LINE 199
ED09: 0119 DEFINED AT LINE 200
> USED AT LINE 194
ED10: 0121 DEFINED AT LINE 204
> USED AT LINE 211
PUTS01: 0132 DEFINED AT LINE 215
> USED AT LINE 219
PUTSTR: 0137 DEFINED AT LINE 217
> USED AT LINE 90
> USED AT LINE 224
> USED AT LINE 253
> USED AT LINE 942
> USED AT LINE 1012
CRLF: 013E DEFINED AT LINE 223
> USED AT LINE 88
> USED AT LINE 93
> USED AT LINE 245
> USED AT LINE 254
> USED AT LINE 258
> USED AT LINE 285
> USED AT LINE 863
> USED AT LINE 943
> USED AT LINE 1015
CRLFST: 0146 DEFINED AT LINE 227
ERRORF: 014D DEFINED AT LINE 230
> USED AT LINE 189
> USED AT LINE 756
> USED AT LINE 823
ERRORS: 0155 DEFINED AT LINE 233
> USED AT LINE 125
> USED AT LINE 419
> USED AT LINE 539
> USED AT LINE 751
> USED AT LINE 777
> USED AT LINE 785
> USED AT LINE 790
> USED AT LINE 861
> USED AT LINE 883
> USED AT LINE 956
> USED AT LINE 994
ERRORR: 015E DEFINED AT LINE 236
> USED AT LINE 116
> USED AT LINE 315
> USED AT LINE 820
BREAK: 0166 DEFINED AT LINE 239
> USED AT LINE 1079
END: 016E DEFINED AT LINE 242
> USED AT LINE 1055
> USED AT LINE 1058
ER01: 0175 DEFINED AT LINE 245
> USED AT LINE 230
> USED AT LINE 233
> USED AT LINE 236
> USED AT LINE 239
> USED AT LINE 242
GL00: 018E DEFINED AT LINE 258
> USED AT LINE 275
GETLIN: 0190 DEFINED AT LINE 259
> USED AT LINE 102
> USED AT LINE 935
GL03: 0193 DEFINED AT LINE 260
> USED AT LINE 264
> USED AT LINE 271
> USED AT LINE 279
> USED AT LINE 292
GL04: 01A7 DEFINED AT LINE 269
> USED AT LINE 266
GL02: 01A9 DEFINED AT LINE 270
> USED AT LINE 268
> USED AT LINE 299
> USED AT LINE 302
GL05: 01AE DEFINED AT LINE 272
> USED AT LINE 262
GL06: 01C7 DEFINED AT LINE 284
> USED AT LINE 281
GL08: 01CE DEFINED AT LINE 287
> USED AT LINE 283
GL07: 01D6 DEFINED AT LINE 291
> USED AT LINE 273
GL09: 01EB DEFINED AT LINE 300
> USED AT LINE 277
REM00: 01F1 DEFINED AT LINE 305
> USED AT LINE 308
REM: 01F3 DEFINED AT LINE 306
> USED AT LINE 805
> USED AT LINE 1052
ENDSMT: 01F9 DEFINED AT LINE 309
> USED AT LINE 952
ENDS02: 01FC DEFINED AT LINE 310
> USED AT LINE 547
> USED AT LINE 798
> USED AT LINE 832
> USED AT LINE 876
> USED AT LINE 1023
REM05: 0202 DEFINED AT LINE 313
> USED AT LINE 975
NXTLIN: 0209 DEFINED AT LINE 316
> USED AT LINE 314
> USED AT LINE 812
> USED AT LINE 828
MSLINE: 020D DEFINED AT LINE 318
> USED AT LINE 109
> USED AT LINE 804
REM09: 0216 DEFINED AT LINE 322
> USED AT LINE 312
IMPLET: 0217 DEFINED AT LINE 323
> USED AT LINE 320
IFAN: 021A DEFINED AT LINE 326
> USED AT LINE 319
FAN00: 0221 DEFINED AT LINE 329
> USED AT LINE 357
> USED AT LINE 553
FAN04: 022C DEFINED AT LINE 335
> USED AT LINE 331
FAN05: 0232 DEFINED AT LINE 338
> USED AT LINE 347
FAN07: 024D DEFINED AT LINE 352
> USED AT LINE 340
FAN08: 024F DEFINED AT LINE 353
> USED AT LINE 355
NXTNSP: 0259 DEFINED AT LINE 360
> USED AT LINE 363
SKIPSP: 025B DEFINED AT LINE 361
> USED AT LINE 106
> USED AT LINE 131
> USED AT LINE 306
> USED AT LINE 326
> USED AT LINE 395
> USED AT LINE 413
> USED AT LINE 423
> USED AT LINE 436
> USED AT LINE 449
> USED AT LINE 536
> USED AT LINE 550
> USED AT LINE 598
> USED AT LINE 605
> USED AT LINE 615
> USED AT LINE 646
> USED AT LINE 655
> USED AT LINE 672
> USED AT LINE 745
> USED AT LINE 757
> USED AT LINE 774
> USED AT LINE 787
> USED AT LINE 838
> USED AT LINE 854
> USED AT LINE 872
> USED AT LINE 936
> USED AT LINE 949
> USED AT LINE 960
> USED AT LINE 986
TSTHEX: 0262 DEFINED AT LINE 367
> USED AT LINE 459
TSTLTR: 0273 DEFINED AT LINE 378
> USED AT LINE 396
> USED AT LINE 400
TST03: 027B DEFINED AT LINE 382
> USED AT LINE 370
> USED AT LINE 372
> USED AT LINE 379
> USED AT LINE 387
> USED AT LINE 389
> USED AT LINE 401
TSTDIG: 027E DEFINED AT LINE 386
> USED AT LINE 367
> USED AT LINE 450
> USED AT LINE 483
TST05: 0288 DEFINED AT LINE 391
> USED AT LINE 368
> USED AT LINE 381
TSTVAR: 028B DEFINED AT LINE 395
> USED AT LINE 732
> USED AT LINE 783
> USED AT LINE 929
> USED AT LINE 954
TSTV02: 02A1 DEFINED AT LINE 407
TSTV03: 02A3 DEFINED AT LINE 408
> USED AT LINE 397
USER: 02A4 DEFINED AT LINE 411
> USED AT LINE 561
USER02: 02B6 DEFINED AT LINE 419
> USED AT LINE 426
USER03: 02B9 DEFINED AT LINE 420
> USED AT LINE 415
USER05: 02CB DEFINED AT LINE 428
> USED AT LINE 418
TSTSNB: 02D6 DEFINED AT LINE 436
> USED AT LINE 939
TSN02: 02E9 DEFINED AT LINE 446
> USED AT LINE 441
TSTNBR: 02EA DEFINED AT LINE 449
> USED AT LINE 103
> USED AT LINE 438
> USED AT LINE 440
> USED AT LINE 739
> USED AT LINE 978
> USED AT LINE 992
TSTN20: 02F8 DEFINED AT LINE 455
TSTN23: 02FE DEFINED AT LINE 458
> USED AT LINE 478
TSTN02: 0321 DEFINED AT LINE 479
> USED AT LINE 451
TSTN03: 0327 DEFINED AT LINE 482
> USED AT LINE 506
TSTN07: 0354 DEFINED AT LINE 507
> USED AT LINE 460
> USED AT LINE 484
TSTN09: 0358 DEFINED AT LINE 509
> USED AT LINE 454
TSTN11: 035B DEFINED AT LINE 511
> USED AT LINE 466
> USED AT LINE 491
> USED AT LINE 494
> USED AT LINE 496
> USED AT LINE 499
> USED AT LINE 502
TSTSTK: 0362 DEFINED AT LINE 517
> USED AT LINE 185
> USED AT LINE 567
> USED AT LINE 754
> USED AT LINE 821
PEEK: 036D DEFINED AT LINE 524
> USED AT LINE 564
POKE: 037C DEFINED AT LINE 534
> USED AT LINE 1043
POKE05: 038B DEFINED AT LINE 540
> USED AT LINE 538
TSTFUN: 039E DEFINED AT LINE 550
> USED AT LINE 741
TSTF05: 03AD DEFINED AT LINE 556
> USED AT LINE 554
FUNT: 03AE DEFINED AT LINE 559
FLINE: 03C2 DEFINED AT LINE 571
> USED AT LINE 810
> USED AT LINE 818
> USED AT LINE 999
FNDLIN: 03C4 DEFINED AT LINE 572
> USED AT LINE 140
> USED AT LINE 592
FND03: 03CB DEFINED AT LINE 576
> USED AT LINE 573
FND05: 03D3 DEFINED AT LINE 580
> USED AT LINE 577
FND07: 03DA DEFINED AT LINE 584
> USED AT LINE 580
FND09: 03E0 DEFINED AT LINE 587
> USED AT LINE 589
RELEXP: 03EC DEFINED AT LINE 595
> USED AT LINE 801
REL03: 040C DEFINED AT LINE 611
> USED AT LINE 602
REL05: 0417 DEFINED AT LINE 616
> USED AT LINE 607
REL06: 041B DEFINED AT LINE 618
> USED AT LINE 600
REL07: 041F DEFINED AT LINE 620
> USED AT LINE 610
> USED AT LINE 617
REL08: 0437 DEFINED AT LINE 634
> USED AT LINE 632
REL09: 043D DEFINED AT LINE 638
> USED AT LINE 636
EXPR: 0443 DEFINED AT LINE 644
> USED AT LINE 421
> USED AT LINE 541
> USED AT LINE 595
> USED AT LINE 621
> USED AT LINE 761
> USED AT LINE 792
> USED AT LINE 808
> USED AT LINE 815
> USED AT LINE 850
EXPR02: 0452 DEFINED AT LINE 651
> USED AT LINE 657
EXPR03: 0454 DEFINED AT LINE 652
> USED AT LINE 650
EXPR04: 0456 DEFINED AT LINE 653
> USED AT LINE 665
EXPR05: 0465 DEFINED AT LINE 660
> USED AT LINE 648
EXPR06: 046F DEFINED AT LINE 666
> USED AT LINE 612
> USED AT LINE 659
TERM: 0472 DEFINED AT LINE 670
> USED AT LINE 652
> USED AT LINE 661
TERM03: 0477 DEFINED AT LINE 672
> USED AT LINE 712
> USED AT LINE 729
TERM05: 0485 DEFINED AT LINE 679
> USED AT LINE 676
DIV05: 04A1 DEFINED AT LINE 693
> USED AT LINE 704
DIV07: 04AB DEFINED AT LINE 698
> USED AT LINE 694
DIV09: 04AD DEFINED AT LINE 699
> USED AT LINE 697
TERM06: 04C2 DEFINED AT LINE 711
> USED AT LINE 708
TERM07: 04C6 DEFINED AT LINE 713
> USED AT LINE 674
MULT: 04CA DEFINED AT LINE 715
FACT: 04E5 DEFINED AT LINE 732
> USED AT LINE 670
> USED AT LINE 680
> USED AT LINE 714
FACT02: 04F2 DEFINED AT LINE 738
> USED AT LINE 740
> USED AT LINE 742
FACT03: 04F3 DEFINED AT LINE 739
> USED AT LINE 733
PAREXP: 04FD DEFINED AT LINE 743
> USED AT LINE 524
> USED AT LINE 534
FACT05: 050D DEFINED AT LINE 751
> USED AT LINE 748
> USED AT LINE 759
ARGONE: 0510 DEFINED AT LINE 754
> USED AT LINE 411
> USED AT LINE 743
FACT04: 0518 DEFINED AT LINE 757
> USED AT LINE 755
ABSX: 0524 DEFINED AT LINE 764
> USED AT LINE 685
> USED AT LINE 687
NEGX: 0528 DEFINED AT LINE 766
> USED AT LINE 710
NEG05: 0530 DEFINED AT LINE 770
> USED AT LINE 765
> USED AT LINE 768
TSTEOL: 0531 DEFINED AT LINE 773
> USED AT LINE 309
> USED AT LINE 542
> USED AT LINE 793
> USED AT LINE 809
> USED AT LINE 816
> USED AT LINE 835
> USED AT LINE 995
TEOL03: 053D DEFINED AT LINE 778
> USED AT LINE 776
LET: 0542 DEFINED AT LINE 783
> USED AT LINE 323
> USED AT LINE 1028
LET03: 054A DEFINED AT LINE 786
> USED AT LINE 784
LET05: 0556 DEFINED AT LINE 791
> USED AT LINE 789
IF: 0568 DEFINED AT LINE 801
> USED AT LINE 1031
IF03: 0571 DEFINED AT LINE 805
> USED AT LINE 803
GOTO: 0574 DEFINED AT LINE 808
> USED AT LINE 1034
GOSUB: 0581 DEFINED AT LINE 815
> USED AT LINE 1037
GOSB04: 058D DEFINED AT LINE 820
> USED AT LINE 811
GOSB03: 0590 DEFINED AT LINE 821
> USED AT LINE 819
GOSB05: 0598 DEFINED AT LINE 824
> USED AT LINE 822
RETURN: 0531 DEFINED AT LINE 835
> USED AT LINE 1040
PRINT: 05AC DEFINED AT LINE 838
> USED AT LINE 1046
> USED AT LINE 1070
PR01: 05AF DEFINED AT LINE 839
> USED AT LINE 874
PR02: 05C5 DEFINED AT LINE 850
> USED AT LINE 846
PR03: 05CE DEFINED AT LINE 854
> USED AT LINE 849
PR04: 05E0 DEFINED AT LINE 862
> USED AT LINE 844
> USED AT LINE 860
PR05: 05E9 DEFINED AT LINE 866
> USED AT LINE 840
> USED AT LINE 856
PR06: 05EB DEFINED AT LINE 867
> USED AT LINE 870
PR07: 05F4 DEFINED AT LINE 871
> USED AT LINE 842
> USED AT LINE 858
PR08: 05FD DEFINED AT LINE 875
> USED AT LINE 865
PRQ01: 0602 DEFINED AT LINE 879
> USED AT LINE 885
PRNTQS: 0605 DEFINED AT LINE 880
> USED AT LINE 848
PRQ03: 060E DEFINED AT LINE 884
> USED AT LINE 882
PRNTN: 0613 DEFINED AT LINE 888
> USED AT LINE 852
PRN03: 0623 DEFINED AT LINE 897
> USED AT LINE 889
PRN05: 0626 DEFINED AT LINE 898
> USED AT LINE 902
PRN07: 0632 DEFINED AT LINE 903
> USED AT LINE 900
> USED AT LINE 917
> USED AT LINE 926
PRN09: 0634 DEFINED AT LINE 904
> USED AT LINE 908
PRN11: 063F DEFINED AT LINE 909
> USED AT LINE 905
PRN13: 0653 DEFINED AT LINE 918
> USED AT LINE 915
PRNPT: 0654 DEFINED AT LINE 919
PRNPTO: 065C DEFINED AT LINE 923
PRNT4: 065E DEFINED AT LINE 925
> USED AT LINE 249
> USED AT LINE 1008
INPUT: 0663 DEFINED AT LINE 929
> USED AT LINE 1049
IN03: 066C DEFINED AT LINE 933
> USED AT LINE 938
> USED AT LINE 944
IN05: 0674 DEFINED AT LINE 936
> USED AT LINE 962
> USED AT LINE 964
IN07: 068B DEFINED AT LINE 945
> USED AT LINE 940
IN09: 069D DEFINED AT LINE 953
> USED AT LINE 951
IN11: 06A4 DEFINED AT LINE 956
> USED AT LINE 930
IN13: 06A7 DEFINED AT LINE 957
> USED AT LINE 955
RMESS: 06B8 DEFINED AT LINE 965
RUN: 06C1 DEFINED AT LINE 969
> USED AT LINE 1061
RUN01: 06C5 DEFINED AT LINE 971
> USED AT LINE 973
LIST: 06CF DEFINED AT LINE 978
> USED AT LINE 1064
LIST03: 06DC DEFINED AT LINE 985
> USED AT LINE 979
LIST05: 06E9 DEFINED AT LINE 991
> USED AT LINE 988
LIST07: 06F3 DEFINED AT LINE 995
> USED AT LINE 984
> USED AT LINE 990
> USED AT LINE 993
LIST09: 06FF DEFINED AT LINE 1000
> USED AT LINE 1018
LIST10: 072B DEFINED AT LINE 1019
> USED AT LINE 1001
LIST11: 0732 DEFINED AT LINE 1022
> USED AT LINE 1004
VERBT: 0737 DEFINED AT LINE 1026
TSTBRK: 079C DEFINED AT LINE 1074
> USED AT LINE 318
> USED AT LINE 1017
GETCHR: 07A0 DEFINED AT LINE 1076
> USED AT LINE 260
GETC05: 07A9 DEFINED AT LINE 1080
> USED AT LINE 1075
> USED AT LINE 1078
PUTCHR: 07AA DEFINED AT LINE 1081
> USED AT LINE 101
> USED AT LINE 215
> USED AT LINE 247
> USED AT LINE 251
> USED AT LINE 270
> USED AT LINE 282
> USED AT LINE 295
> USED AT LINE 297
> USED AT LINE 868
> USED AT LINE 879
> USED AT LINE 895
> USED AT LINE 912
> USED AT LINE 934
> USED AT LINE 1011
> USED AT LINE 1021
INEEE: 07AF DEFINED AT LINE 1085
> USED AT LINE 1076
> USED AT LINE 1086
OUTEEE: 07B9 DEFINED AT LINE 1090
> USED AT LINE 1082
OUT01: 07BB DEFINED AT LINE 1091
> USED AT LINE 1093
BRKEEE: 07C8 DEFINED AT LINE 1097
> USED AT LINE 1074
> USED AT LINE 1085
BRK03: 07CA DEFINED AT LINE 1098
> USED AT LINE 1102
BRK05: 07D6 DEFINED AT LINE 1103
> USED AT LINE 1100
INTEEE: 07E5 DEFINED AT LINE 1111
> USED AT LINE 79
> USED AT LINE 83
.org $200
.ent $
ldx test
ldx [test]
lda $1234
ldx $fedc
lda #$2
tfr a,dp
lda $12
test dw $204
; setdp
; lda <12
; reg
:10020000BE0213AE9F0213B61234BEFEDC86021F7E
:050210008B96120204B0
:00000001FF
0200 .ORG $200
0200 .ENT $
0200 BE 02 13 LDX test
0203 AE 9F 02 13 LDX [test]
0207 B6 12 34 LDA $1234
020A BE FE DC LDX $fedc
020D 86 02 LDA #$2
020F 1F 8B TFR a,dp
0211 96 12 LDA $12
0213 02 04 TEST: DW $204
0215 ; setdp
0215 ; lda <12
0215 ; reg
TEST: 0213 DEFINED AT LINE 15
> USED AT LINE 4
;TITLE 6809 eForth
;.engine kilo
; $Id: ef09.asm,v 1.1 1997/11/24 02:56:01 root Exp $
;
;===============================================================
;
; eForth 1.0 by Bill Muench and C. H. Ting, 1990
; Much of the code is derived from the following sources:
; 8086 figForth by Thomas Newman, 1981 and Joe smith, 1983
; aFORTH by John Rible
; bFORTH by Bill Muench
;
; The goal of this implementation is to provide a simple eForth Model
; which can be ported easily to many 8, 16, 24 and 32 bit CPU's.
; The following attributes make it suitable for CPU's of the '90:
;
; small machine dependent kernel and portable high level code
; source code in the MASM format
; direct threaded code
; separated code and name dictionaries
; simple vectored terminal and file interface to host computer
; aligned with the proposed ANS Forth Standard
; easy upgrade path to optimize for specific CPU
;
; You are invited to implement this Model on your favorite CPU and
; contribute it to the eForth Library for public use. You may use
; a portable implementation to advertise more sophisticated and
; optimized version for commercial purposes. However, you are
; expected to implement the Model faithfully. The eForth Working
; Group reserves the right to reject implementation which deviates
; significantly from this Model.
;
; As the ANS Forth Standard is still evolving, this Model will
; change accordingly. Implementations must state clearly the
; version number of the Model being tracked.
;
; Representing the eForth Working Group in the Silicon Valley FIG Chapter.
; Send contributions to:
;
; Dr. C. H. Ting
; 156 14th Avenue
; San Mateo, CA 94402
; (415) 571-7639
;
;===============================================================
; $Log: ef09.asm,v $
; Revision 1.1 1997/11/24 02:56:01 root
; Initial revision
;
;===============================================================
;; Version control
VER EQU 1 ;major release version
EXT EQU 0 ;minor extension
;; Constants
TRUEE EQU -1 ;true flag
COMPO EQU $40 ;lexicon compile only bit
IMEDD EQU $80 ;lexicon immediate bit
MASKK EQU $1F7F ;lexicon bit mask
CFAOFF EQU 3 ;offset from word entry to code field area
; (length of JSR)
CELLL EQU 2 ;size of a cell
BASEE EQU 10 ;default radix
VOCSS EQU 8 ;depth of vocabulary stack
BKSPP EQU 8 ;back space
BKSPP2 EQU 127 ;back space
LF EQU 10 ;line feed
CRR EQU 13 ;carriage return
ERR EQU 27 ;error escape
TIC EQU 39 ;tick
CALLL EQU $12BD ;NOP CALL opcodes
;; Memory allocation
EM EQU $7000 ;top of memory
US EQU 64*CELLL ;user area size in cells
RTS: EQU 128*CELLL ;return stack/TIB size
UPP EQU EM-US ;start of user area (UP0)
RPP EQU UPP-8*CELLL ;start of return stack (RP0)
TIBB EQU RPP-RTS ;terminal input buffer (TIB)
SPP EQU TIBB-8*CELLL ;start of data stack (SP0)
COLDD EQU $100 ;cold start vector
CODEE EQU COLDD+US ;code dictionary
NAMEE EQU EM-$0400 ;name dictionary
;; Initialize assembly variables
;; Main entry points and COLD start data
.ORG 0xfff0
;reserved
DW reset
;SWI3
DW reset
;SWI2
DW reset
;FIRQ
DW reset
;IRQ
DW reset
;SWI
DW reset
;NMI
DW reset
;RES
DW reset
ORG COLDD ;beginning of cold boot area
; SETDP 0
.ent $
reset:
ORIG lds #SPP ;Init stack pointer.
ldy #RPP ;Init return stack pointer
ldu #COLD1 ;Init Instr pointer.
pulu pc ;next.
; COLD start moves the following to USER variables.
; MUST BE IN SAME ORDER AS USER VARIABLES.
UZERO RMB 8 ;reserved space in user area
FDB SPP ;SP0
FDB RPP ;RP0
FDB QRX ;'?KEY
FDB TXSTO ;'EMIT
FDB ACCEP ;'EXPECT
FDB KTAP ;'TAP
FDB TXSTO ;'ECHO
FDB DOTOK ;'PROMPT
FDB BASEE ;BASE
FDB 0 ;tmp
FDB 0 ;SPAN
FDB 0 ;>IN
FDB 0 ;#TIB
FDB TIBB ;TIB
FDB 0 ;CSP
FDB INTER ;'EVAL
FDB NUMBQ ;'NUMBER
FDB 0 ;HLD
FDB 0 ;HANDLER
FDB 0 ;CONTEXT pointer
RMB VOCSS*2 ;vocabulary stack
FDB 0 ;CURRENT pointer
FDB 0 ;vocabulary link pointer
FDB CTOP ;CP
FDB NTOP ;NP
FDB LASTN ;LAST
ULAST:
ORG CODEE ;beginning of the code dictionary
;; Device dependent I/O
ACIA EQU $83fe
ACIAC EQU ACIA
ACIAS EQU ACIA
ACIAD EQU ACIA+1
ACIA_TDRE EQU 02h
ACIA_RDRF EQU 01h
SEROUT:
PSHS a,b
SEROUTL:
LDB ACIAS
ANDB #ACIA_TDRE
; BEQ seroutl
STA ACIAD
PULS a,b
RTS
SERIN:
LDA ACIAS
ANDA #ACIA_RDRF
BEQ serin_ret
LDA ACIAD
serin_ret: RTS
; BYE ( -- )
; Exit eForth.
FDB BYE,0
L100 FCB 3,"BYE"
BYE JMP $E000 ; monitor
; ?RX ( -- c T | F )
; Return input character and true, or a false if no input.
FDB QRX,L100
L110 FCB 3,"?RX"
QRX ldx #0
jsr serin
beq qrx1
stx ,--s
pulu pc
qrx1: tfr a,b
clra
std ,--s
leax -1,x
stx ,--s
pulu pc
; TX! ( c -- )
; Send character c to the output device.
FDB TXSTO,L110
L120 FCB 3,"TX!"
TXSTO ldd ,s++
cmpb #$ff
bne tx1
ldb #32
tx1:
tfr b,a
jsr serout
pulu pc
; !IO ( -- )
; Initialize the serial I/O devices.
FDB STOIO,L120
L130 FCB 3,"!IO"
STOIO pulu pc
;; The kernel
; doLIT ( -- w )
; Push an inline literal.
FDB DOLIT,L130
L140 FCB COMPO+5,"doLIT"
DOLIT:
;;;; ldd ,u++
pulu d
; 7 cycles
pshs d
;;;; 8 cycles
;;;; std ,--s
pulu pc
; doCLIT ( -- w )
; Push an inline 8-bit literal.
FDB DOCLIT,L140
L141 FCB COMPO+6,"doCLIT"
DOCLIT:
pulu b
sex ; sign extended
pshs d
pulu pc
; doLIST ( a -- )
; Process colon list.
FDB DOLST,L141
L150 FCB COMPO+6,"doLIST"
DOLST stu ,--y ; IP on return stack
puls u ; JSR left new IP on parameter stack
;;;; ldu ,s++
pulu pc ; FORTH NEXT IP
; next ( -- )
; Run time code for the single index loop.
; : next ( -- ) \ hilevel model
; r> r> dup if 1 - >r @ >r exit then drop cell+ >r ;
FDB DONXT,L150
L160 FCB COMPO+4,"next"
DONXT ldd ,y ; counter on return stack
subd #1 ; decrement
bcs next1 ; < -> exit loop
std ,y ; decremented value back on stack
ldu ,u ; branch to begin of loop
pulu pc
next1 leay 2,y ; remove counter from stack
leau 2,u ; skip branch destination
pulu pc
; ?branch ( f -- )
; Branch if flag is zero.
FDB QBRAN,L160
L170 FCB COMPO+7,"?branch"
QBRAN: ;$CODE COMPO+7,'?branch',QBRAN
ldd ,s++
beq bran1
leau 2,u ; skip new IP, no branch
pulu pc
bran1 ldu ,u ; go to new IP
pulu pc
; branch ( -- )
; Branch to an inline address.
FDB BRAN,L170
L180 FCB COMPO+6,"branch"
BRAN ldu ,u ; destination immediate after BRANCH
pulu pc
; EXECUTE ( ca -- )
; Execute the word at ca.
FDB EXECU,L180
L190 FCB 7,"EXECUTE"
EXECU rts ; code pointer on parameter stack
; EXIT ( -- )
; SEMIS
; Terminate a colon definition.
FDB EXIT,L190
L200 FCB 4,"EXIT"
EXIT ldu ,y++ ; get calling IP from return stack
pulu pc
; ! ( w a -- )
; Pop the data stack to memory.
FDB STORE,L200
L210 FCB 1,"!"
STORE:
;;;; ldx ,s++
;;;; ldd ,s++
;;;; faster ...
puls x
puls d
; we cannot use puls x,d because the order fetched would be wrong :(
std ,x
pulu pc
; @ ( a -- w )
; Push memory location to the data stack.
FDB AT,L210
L220 FCB 1,"@"
AT ldd [,s]
std ,s
pulu pc
; C! ( c b -- )
; Pop the data stack to byte memory.
FDB CSTOR,L220
L230 FCB 2,"C!"
CSTOR:
;;;; ldx ,s++
;;;; ldd ,s++
;;;; faster ...
puls x
puls d
; we cannot use puls x,d because the order fetched would be wrong :(
stb ,x
pulu pc
; C@ ( b -- c )
; Push byte memory location to the data stack.
FDB CAT,L230
L240 FCB 2,"C@"
CAT ldb [,s]
clra
std ,s
pulu pc
; RP@ ( -- a )
; Push the current RP to the data stack.
FDB RPAT,L240
L250 FCB 3,"RP@"
RPAT pshs y
pulu pc
; RP! ( a -- )
; Set the return stack pointer.
FDB RPSTO,L250
L260 FCB 3,"RP!"
RPSTO puls y
pulu pc
; R> ( -- w )
; Pop the return stack to the data stack.
FDB RFROM,L260
L270 FCB 2,"R>"
RFROM ldd ,y++
;;;; std ,--s
pshs d
pulu pc
; I ( -- w )
; Copy top of return stack (current index from DO/LOOP) to the data stack.
FDB RAT,L270
L279 FCB 1,"I"
; R@ ( -- w )
; Copy top of return stack to the data stack.
FDB RAT,L279
L280 FCB 2,"R@"
RAT:
I:
ldd ,y
;;;; std ,--s
pshs d
pulu pc
; >R ( w -- )
; Push the data stack to the return stack.
FDB TOR,L280
L290 FCB 2,">R"
TOR:
;;;; ldd ,s++
puls d
std ,--y
pulu pc
; SP@ ( -- a )
; Push the current data stack pointer.
FDB SPAT,L290
L300 FCB 3,"SP@"
SPAT:
tfr s,d
std ,--s
;;;; alternatively
;;;; sts ,--s ; does this work?
pulu pc
; SP! ( a -- )
; Set the data stack pointer.
FDB SPSTO,L300
L310 FCB 3,"SP!"
SPSTO lds ,s
pulu pc
; DROP ( w -- )
; Discard top stack item.
FDB DROP,L310
L320 FCB 4,"DROP"
DROP leas 2,s
pulu pc
; DUP ( w -- w w )
; Duplicate the top stack item.
FDB DUPP,L320
L330 FCB 3,"DUP"
DUPP ldd ,s
;;;; std ,--s
pshs d
pulu pc
; SWAP ( w1 w2 -- w2 w1 )
; Exchange top two stack items.
FDB SWAP,L330
L340 FCB 4,"SWAP"
SWAP:
;;;;OLD 1: slow
;;;; ldx ,s++
;;;; ldd ,s++
;;;;OLD 2: faster
;;;; puls x
;;;; puls d
;;;; pshs d,x
;more efficient, without unnecessary stack pointer manipulations
ldd ,s
ldx 2,s
std 2,s
stx ,s
pulu pc
; OVER ( w1 w2 -- w1 w2 w1 )
; Copy second stack item to top.
FDB OVER,L340
L350 FCB 4,"OVER"
OVER ldd 2,s
;;;; std ,--s
pshs d
pulu pc
; 0< ( n -- t )
; Return true if n is negative.
FDB ZLESS,L350
L360 FCB 2,"0<"
ZLESS ldb ,s ; input high byte, as D low
sex ; sign extend to b to a/b
tfr a,b ; high byte: 0 or FF copy to D low
std ,s ; D: 0000 or FFFF (= -1)
pulu pc
; 0= ( n -- t )
; Return true if n is zero
FDB ZEQUAL,L360
L365 FCB 2,"0="
ZEQUAL:
ldx #TRUEE ; true
ldd ,s ; TOS
beq ZEQUAL1 ; -> true
ldx #0 ; false
ZEQUAL1 stx ,s ; D: 0000 or FFFF (= -1)
pulu pc
; AND ( w w -- w )
; Bitwise AND.
FDB ANDD,L365
L370 FCB 3,"AND"
ANDD ldd ,s++
anda ,s
andb 1,s
std ,s
pulu pc
; OR ( w w -- w )
; Bitwise inclusive OR.
FDB ORR,L370
L380 FCB 2,"OR"
ORR ldd ,s++
ora ,s
orb 1,s
std ,s
pulu pc
; XOR ( w w -- w )
; Bitwise exclusive OR.
FDB XORR,L380
L390 FCB 3,"XOR"
XORR ldd ,s++
eora ,s
eorb 1,s
std ,s
pulu pc
; D+ ( ud ud -- udsum )
; Add two unsigned double numbers and return a double sum.
FDB DPLUS,L390
L391 FCB 2,"D+"
DPLUS ldd 2,s ; add low words
addd 6,s
std 6,s
ldd ,s ; add hig words
adcb 5,s
adca 4,s
std 4,s
leas 4,s ; drop one double
pulu pc
; D- ( ud ud -- uddiff )
; Subtract two unsigned double numbers and return a double sum.
FDB DSUB,L391
L392 FCB 2,"D-"
DSUB jsr DOLST
FDB DNEGA,DPLUS,EXIT
; UM+ ( u u -- udsum )
; Add two unsigned single numbers and return a double sum.
FDB UPLUS,L392
L400 FCB 3,"UM+"
UPLUS ldd ,s
addd 2,s
std 2,s
ldd #0
adcb #0
std ,s
pulu pc
;; Constants
; doCONST ( -- w )
; Run time routine for CONSTANT
FDB DOCONST,L400
L401 FCB COMPO+7,"doCONST"
DOCONST:
FDOCONST:
ldd [,s] ; contents of W (on TOS because of JSR)
std ,s ; to TOS (replacing W)
pulu pc
; 0 ( -- 0 )
; Constant 0
FDB ZERO,L401
L402 FCB 1,"0"
ZERO jsr FDOCONST
FDB 0
; 1 ( -- 1 )
; Constant 1
FDB ONE,L402
L403 FCB 1,"1"
ONE jsr FDOCONST
FDB 1
; 2 ( -- 2 )
; Constant 2
FDB TWO,L403
L404 FCB 1,"2"
TWO jsr FDOCONST
FDB 2
; -1 ( -- -1 )
; Constant -1
FDB MONE,L404
L405 FCB 2,"-1"
MONE jsr FDOCONST
FDB -1
;; System and user variables
; doVAR ( -- a )
; Run time routine for VARIABLE and CREATE.
FDB DOVAR,L405
L410 FCB COMPO+5,"doVAR"
DOVAR:
jsr DOLST
FDB RFROM,EXIT
;; fast native DOVAR implementation
FDOVAR pulu pc
; UP ( -- a )
; Pointer to the user area.
FDB UP,L410
L420 FCB 2,"UP"
UP:
;; jsr DOLST
;; FDB DOVAR
;; fast (native) DOVAR
jsr FDOVAR
FDB UPP
; doUSER ( -- a )
; Run time routine for user variables.
FDB DOUSE,L420
L430 FCB COMPO+5,"doUSER"
DOUSE:
jsr DOLST
FDB RFROM,AT,UP,AT,PLUS,EXIT
;; fast (native) DOUSE implementation (*NOT COMPLETE*)
FDOUSE:
ldd [,s] ; pointer to value (from JSR)
addd UP+CFAOFF ; dirty access to start of USER area:
; var. UP value direct access (not
; as a high level word)
std ,s ; resulting address returned on p-stack
pulu pc
; SP0 ( -- a )
; Pointer to bottom of the data stack.
FDB SZERO,L430
L440 FCB 3,"SP0"
SZERO:
jsr FDOUSE
FDB 8
;;;; jsr DOLST
;;;; FDB DOUSE,8
; RP0 ( -- a )
; Pointer to bottom of the return stack.
FDB RZERO,L440
L450 FCB 3,"RP0"
RZERO:
jsr FDOUSE
FDB 10
;;;; jsr DOLST
;;;; FDB DOUSE,10
; '?KEY ( -- a )
; Execution vector of ?KEY.
FDB TQKEY,L450
L460 FCB 5,"'?KEY"
TQKEY:
jsr FDOUSE
FDB 12
;;;; jsr DOLST
;;;; FDB DOUSE,12
; 'EMIT ( -- a )
; Execution vector of EMIT.
FDB TEMIT,L460
L470 FCB 5,"'EMIT"
TEMIT:
jsr FDOUSE
FDB 14
;; jsr DOLST
;; FDB DOUSE,14
; 'EXPECT ( -- a )
; Execution vector of EXPECT.
FDB TEXPE,L470
L480 FCB 7,"'EXPECT"
TEXPE:
jsr FDOUSE
FDB 16
;;;; jsr DOLST
;;;; FDB DOUSE,16
; 'TAP ( -- a )
; Execution vector of TAP.
FDB TTAP,L480
L490 FCB 4,"'TAP"
TTAP:
jsr FDOUSE
FDB 18
;;;; jsr DOLST
;;;; FDB DOUSE,18
; 'ECHO ( -- a )
; Execution vector of ECHO.
FDB TECHO,L490
L500 FCB 5,"'ECHO"
TECHO:
jsr FDOUSE
FDB 20
;;;; jsr DOLST
;;;; FDB DOUSE,20
; 'PROMPT ( -- a )
; Execution vector of PROMPT.
FDB TPROM,L500
L510 FCB 7,"'PROMPT"
TPROM:
jsr FDOUSE
FDB 22
;;;; jsr DOLST
;;;; FDB DOUSE,22
; BASE ( -- a )
; Storage of the radix base for numeric I/O.
FDB BASE,L510
L520 FCB 4,"BASE"
BASE:
jsr FDOUSE
FDB 24
;;;; jsr DOLST
;;;; FDB DOUSE,24
; tmp ( -- a )
; A temporary storage location used in parse and find.
FDB TEMP,L520
L530 FCB COMPO+3,"tmp"
TEMP:
jsr FDOUSE
FDB 26
;;;; jsr DOLST
;;;; FDB DOUSE,26
; SPAN ( -- a )
; Hold character count received by EXPECT.
FDB SPAN,L530
L540 FCB 4,"SPAN"
SPAN:
jsr FDOUSE
FDB 28
;;;; jsr DOLST
;;;; FDB DOUSE,28
; >IN ( -- a )
; Hold the character pointer while parsing input stream.
FDB INN,L540
L550 FCB 3,">IN"
INN:
jsr FDOUSE
FDB 30
;;;; jsr DOLST
;;;; FDB DOUSE,30
; #TIB ( -- a )
; Hold the current count in and address of the terminal input buffer.
FDB NTIB,L550
L560 FCB 4,"#TIB"
NTIB:
jsr FDOUSE
FDB 32
;;;; jsr DOLST
;;;; FDB DOUSE,32 ;It contains TWO cells!!!!
; CSP ( -- a )
; Hold the stack pointer for error checking.
FDB CSP,L560
L570 FCB 3,"CSP"
CSP:
jsr FDOUSE
FDB 36
;;;; jsr DOLST
;;;; FDB DOUSE 36
; 'EVAL ( -- a )
; Execution vector of EVAL.
FDB TEVAL,L570
L580 FCB 5,"'EVAL"
TEVAL:
jsr FDOUSE
FDB 38
;;;; jsr DOLST
;;;; FDB DOUSE,38
; 'NUMBER ( -- a )
; Execution vector of NUMBER?.
FDB TNUMB,L580
L590 FCB 7,"'NUMBER"
TNUMB:
jsr FDOUSE
FDB 40
;;;; jsr DOLST
;;;; FDB DOUSE,40
; HLD ( -- a )
; Hold a pointer in building a numeric output string.
FDB HLD,L590
L600 FCB 3,"HLD"
HLD:
jsr FDOUSE
FDB 42
;;;; jsr DOLST
;;;; FDB DOUSE,42
; HANDLER ( -- a )
; Hold the return stack pointer for error handling.
FDB HANDL,L600
L610 FCB 7,"HANDLER"
HANDL:
jsr FDOUSE
FDB 44
;;;; jsr DOLST
;;;; FDB DOUSE,44
; CONTEXT ( -- a )
; A area to specify vocabulary search order.
FDB CNTXT,L610
L620 FCB 7,"CONTEXT"
CNTXT:
jsr FDOUSE
FDB 46
;;;; jsr DOLST
;;;; FDB DOUSE,46 ;plus space for voc stack.
; CURRENT ( -- a )
; Point to the vocabulary to be extended.
FDB CRRNT,L620
L630 FCB 7,"CURRENT"
CRRNT:
jsr FDOUSE
FDB 48+VOCSS*2 ;Extra cell
;;;; jsr DOLST
;;;; FDB DOUSE,48+VOCSS*2 ;Extra cell
; CP ( -- a )
; Point to the top of the code dictionary.
FDB CP,L630
L640 FCB 2,"CP"
CP:
jsr FDOUSE
FDB 52+VOCSS*2
;;;; jsr DOLST
;;;; FDB DOUSE,52+VOCSS*2
; NP ( -- a )
; Point to the bottom of the name dictionary.
FDB NP,L640
L650 FCB 2,"NP"
NP:
jsr FDOUSE
FDB 54+VOCSS*2
;;;; jsr DOLST
;;;; FDB DOUSE,54+VOCSS*2
; LAST ( -- a )
; Point to the last name in the name dictionary.
FDB LAST,L650
L660 FCB 4,"LAST"
LAST:
jsr FDOUSE
FDB 56+VOCSS*2
;;;; jsr DOLST
;;;; FDB DOUSE,56+VOCSS*2
;; Common functions
; doVOC ( -- )
; Run time action of VOCABULARY's.
FDB DOVOC,L660
L670 FCB COMPO+5,"doVOC"
DOVOC:
jsr DOLST
FDB RFROM,CNTXT,STORE,EXIT
; FORTH ( -- )
; Make FORTH the context vocabulary.
FDB FORTH,L670
L680 FCB 5,"FORTH"
FORTH:
jsr DOLST
FDB DOVOC
FDB 0 ;vocabulary head pointer
FDB 0 ;vocabulary link pointer
; ?DUP ( w -- w w | 0 )
; Dup tos if its is not zero.
FDB QDUP,L680
L690 FCB 4,"?DUP"
QDUP:
jsr DOLST
FDB DUPP
FDB QBRAN,QDUP1
FDB DUPP
QDUP1 FDB EXIT
; ROT ( w1 w2 w3 -- w2 w3 w1 )
; Rot 3rd item to top.
FDB ROT,L690
L700 FCB 3,"ROT"
ROT:
jsr DOLST
FDB TOR,SWAP,RFROM,SWAP,EXIT
; 2DROP ( w w -- )
; Discard two items on stack.
FDB DDROP,L700
L710 FCB 5,"2DROP"
DDROP:
jsr DOLST
FDB DROP,DROP,EXIT
; 2DUP ( w1 w2 -- w1 w2 w1 w2 )
; Duplicate top two items.
FDB DDUP,L710
L720 FCB 4,"2DUP"
DDUP:
jsr DOLST
FDB OVER,OVER,EXIT
; LSHIFT ( w n -- w )
; Shift word left n times.
FDB LSHIFT,L720
L721 FCB 6,"LSHIFT"
LSHIFT ldx ,s++ ;shift count
beq LSHIFT2
ldd ,s ;value to shift
LSHIFT1 aslb ;low
rola ;high
leax -1,x ;count down
bne LSHIFT1
std ,s
LSHIFT2:
pulu pc
; RSHIFT ( w n -- w )
; Shift word right n times.
FDB RSHIFT,L721
L721A FCB 6,"RSHIFT"
RSHIFT ldx ,s++ ;shift count
beq RSHIFT2
ldd ,s ;value to shift
RSHIFT1 lsra ;high
rorb ;low
leax -1,x ;count down
bne RSHIFT1
std ,s
RSHIFT2:
pulu pc
; >< ( w -- w )
; swap high and low byte
FDB SWAPHL,L721A
L722 FCB 2,"><"
SWAPHL ldb ,s ;high -> D low
lda 1,s ;low -> D high
std ,s
pulu pc
; 256/ ( w -- w )
; multiply with 256 (shift left 8 times)
FDB SLASH256,L722
L723 FCB 4,"256/"
SLASH256 ldb ,s ;high -> D low
clra ;D high = 0
std ,s
pulu pc
; 256* ( w -- w )
; multiply with 256 (shift left 8 times)
FDB STAR256,L723
L724 FCB 4,"256*"
STAR256 lda 1,s ;low -> D high
clrb ;D low = 0
std ,s
pulu pc
; 1+ ( w -- w )
; Shortcut, quick add 1
FDB PLUS1,L724
L725 FCB 2,"1+"
PLUS1 ldd ,s
addd #1
std ,s
pulu pc
; -+ ( w -- w )
; Shortcut, quick subtract 1
FDB MINUS1,L725
L726 FCB 2,"1-"
MINUS1 ldd ,s
subd #1
std ,s
pulu pc
; 2* ( w -- w )
; multiply by 2 using shift operation
FDB TWOSTAR,L726
L727 FCB 2,"2*"
TWOSTAR asl 1,s ;low
rol 0,s ;high
pulu pc
; 2/ ( w -- w )
; divide by 2 using shift operation
FDB TWOSLASH,L727
L728 FCB 2,"2/"
TWOSLASH asr 0,s ;high
ror 1,s ;low
pulu pc
; + ( w w -- sum )
; Add top two items.
FDB PLUS,L728
L730 FCB 1,"+"
PLUS:
ldd ,s++
addd ,s
std ,s
pulu pc
;;; HL with UPLUS!? Too inefficient ...
;;; jsr DOLST
;;; FDB UPLUS,DROP,EXIT
; NOT ( w -- w )
; One's complement of tos.
FDB INVER,L730
L740 FCB 3,"NOT"
INVER:
;;;; fastest ... (13T)
com ,s ; 6T
com 1,s ; 7T
pulu pc
;;;; alternative ... (14T)
ldd ,s ;TOS 5T
coma ; 2T
comb ; 2T
std ,s ; 5T
pulu pc
;;; slow HL ...
;;; jsr DOLST
;;; FDB DOLIT,-1,XORR,EXIT
; NEGATE ( n -- -n )
; Two's complement of tos.
FDB NEGAT,L740
L750 FCB 6,"NEGATE"
NEGAT:
;;;; fastest? .... (3+6+5 = 14T)
ldd #0 ; 3T
subd ,s ; 6T
std ,s ; 5T
pulu pc
;;;; alternate ... (7+3+6 = 16T)
neg 1,s ; high 7T
bne NEGAT1 ; 3T
neg ,s ; low with 1+ carry 6T
pulu pc
NEGAT1 com ,s ; low, no 1+ carry 6T
pulu pc
;;;; slow HL ...
;;;; jsr DOLST
;;;; FDB INVER,PLUS1,EXIT
; DNEGATE ( d -- -d )
; Two's complement of top double.
FDB DNEGA,L750
L760 FCB 7,"DNEGATE"
DNEGA:
ldd #0
subd 2,s ; low word
std 2,s
ldd #0
sbcb 1,s ; high word low byte
sbca ,s ; high word high byte
std ,s
pulu pc
;;;; slow HL ...
;;;; jsr DOLST
;;;; FDB INVER,TOR,INVER
;;;; FDB DOLIT,1,UPLUS
;;;; FDB RFROM,PLUS,EXIT
; - ( n1 n2 -- n1-n2 )
; Subtraction.
FDB SUBB,L760
L770 FCB 1,"-"
SUBB: ldd 2,s
subd ,s++
std ,s
pulu pc
;;; slow HL ...
;;; jsr DOLST
;;; FDB NEGAT,PLUS,EXIT
; ABS ( n -- n )
; Return the absolute value of n.
FDB ABSS,L770
L780 FCB 3,"ABS"
ABSS jsr DOLST
FDB DUPP,ZLESS
FDB QBRAN,ABS1
FDB NEGAT
ABS1 FDB EXIT
; = ( w w -- t )
; Return true if top two are equal.
FDB EQUAL,L780
L790 FCB 1,"="
EQUAL:
ldx #TRUEE
puls d ; first value
cmpd ,s ; compare to 2nd value
beq EQUAL1 ; equal -> true
ldx #0 ; false (leax 1,x save 1 byte, but is slower)
EQUAL1 stx ,s
pulu pc
;;;; slow HL ...
;;;; jsr DOLST
;;;; FDB XORR
;;;; FDB QBRAN,EQU1
;;;; FDB DOLIT,0,EXIT
;;;;EQU1: FDB DOLIT,TRUEE,EXIT
; U< ( u1 u2 -- t )
; Unsigned compare of top two items.
FDB ULESS,L790
L800 FCB 2,"U<"
ULESS:
ldx #TRUEE ; true
puls d ; u2
cmpd ,s ; u2 - u1
bhi ULES1 ; unsigned: u2 higher u1
ldx #0 ; false
ULES1 stx ,s ; replace TOS with result
pulu pc
;;;; slow HL ...
;;;; jsr DOLST
;;;; FDB DDUP,XORR,ZLESS
;;;; FDB QBRAN,ULES1
;;;; FDB SWAP,DROP,ZLESS,EXIT
;;;;ULES1: FDB SUBB,ZLESS,EXIT
; < ( n1 n2 -- t )
; Signed compare of top two items.
FDB LESS,L800
L810 FCB 1,"<"
LESS:
ldx #TRUEE ; true
puls d ; n2
cmpd ,s ; n2 - n1
bgt LESS1 ; signed: n2 greater than n1
ldx #0 ; false
LESS1 stx ,s ; replace TOS with result
pulu pc
;;;; slow HL ...
;;;; jsr DOLST
;;;; FDB DDUP,XORR,ZLESS
;;;; FDB QBRAN,LESS1
;;;; FDB DROP,ZLESS,EXIT
;;;;LESS1: FDB SUBB,ZLESS,EXIT
; MAX ( n n -- n )
; Return the greater of two top stack items.
FDB MAX,L810
L820 FCB 3,"MAX"
MAX jsr DOLST
FDB DDUP,LESS
FDB QBRAN,MAX1
FDB SWAP
MAX1 FDB DROP,EXIT
; MIN ( n n -- n )
; Return the smaller of top two stack items.
FDB MIN,L820
L830 FCB 3,"MIN"
MIN jsr DOLST
FDB DDUP,SWAP,LESS
FDB QBRAN,MIN1
FDB SWAP
MIN1 FDB DROP,EXIT
; WITHIN ( u ul uh -- t )
; Return true if u is within the range of ul and uh. ( ul <= u < uh )
FDB WITHI,L830
L840 FCB 6,"WITHIN"
WITHI jsr DOLST
FDB OVER,SUBB,TOR
FDB SUBB,RFROM,ULESS,EXIT
;; Divide
; U/ ( udl udh un -- ur uq )
; Unsigned divide of a double by a single. Return mod and quotient.
;
; Special cases:
; 1. overflow: quotient overflow if dividend is to great (remainder = divisor),
; remainder is set to $FFFF -> special handling.
; This is checked also right before the main loop.
; 2. underflow: divisor does not fit into dividend -> remainder
; get the value of the dividend -> automatically covered.
;
; overflow: quotient = $FFFF, remainder = divisor
; underflow: quotient = $0000, remainder = dividend low
; division by zero: quotient = $FFFF, remainder = $0000
;
; Testvalues:
;
; DIVH DIVL DVSR QUOT REM comment
;
; 0100 0000 FFFF 0100 0100 maximum divisor
; 0000 0001 8000 0000 0001 underflow (REM = DIVL)
; 0000 5800 3000 0001 1800 normal divsion
; 5800 0000 3000 FFFF 3000 overflow
; 0000 0001 0000 FFFF 0000 overflow (division by zero)
FDB USLASH,L840
L845 FCB 2,"U/"
USLASH:
ldx #16
ldd 2,s ; udh
cmpd ,s ; dividend to great?
bhs UMMODOV ; quotient overflow!
asl 5,s ; udl low
rol 4,s ; udl high
UMMOD1 rolb ; got one bit from udl
rola
bcs UMMOD2 ; bit 16 means always greater as divisor
cmpd ,s ; divide by un
bhs UMMOD2 ; higher or same as divisor?
andcc #$fe ; clc - clear carry flag
bra UMMOD3
UMMOD2 subd ,s
orcc #$01 ; sec - set carry flag
UMMOD3 rol 5,s ; udl, quotient shifted in
rol 4,s
leax -1,x
bne UMMOD1
ldx 4,s ; quotient
cmpd ,s ; remainder >= divisor -> overflow
blo UMMOD4
UMMODOV:
ldd ,s ; remainder set to divisor
ldx #$FFFF ; quotient = FFFF (-1) marks overflow
; (case 1)
UMMOD4:
leas 2,s ; un (divisor thrown away)
stx ,s ; quotient to TOS
std 2,s ; remainder 2nd
pulu pc ; NEXT
; UM/MOD ( udl udh un -- ur uq )
; Unsigned divide of a double by a single. Return mod and quotient.
FDB UMMOD,L845
L850 FCB 6,"UM/MOD"
UMMOD:
jmp USLASH
;;;; slow HL ...
jsr DOLST
FDB DDUP,ULESS
FDB QBRAN,UMM4
FDB NEGAT,DOLIT,15,TOR
UMM1 FDB TOR,DUPP,UPLUS
FDB TOR,TOR,DUPP,UPLUS
FDB RFROM,PLUS,DUPP
FDB RFROM,RAT,SWAP,TOR
FDB UPLUS,RFROM,ORR
FDB QBRAN,UMM2
FDB TOR,DROP,PLUS1,RFROM
FDB BRAN,UMM3
UMM2 FDB DROP
UMM3 FDB RFROM
FDB DONXT,UMM1
FDB DROP,SWAP,EXIT
UMM4 FDB DROP,DDROP
FDB DOLIT,-1,DUPP,EXIT
; M/MOD ( d n -- r q )
; Signed floored divide of double by single. Return mod and quotient.
FDB MSMOD,L850
L860 FCB 5,"M/MOD"
MSMOD:
jsr DOLST
FDB DUPP,ZLESS,DUPP,TOR
FDB QBRAN,MMOD1
FDB NEGAT,TOR,DNEGA,RFROM
MMOD1 FDB TOR,DUPP,ZLESS
FDB QBRAN,MMOD2
FDB RAT,PLUS
MMOD2 FDB RFROM,UMMOD,RFROM
FDB QBRAN,MMOD3
FDB SWAP,NEGAT,SWAP
MMOD3 FDB EXIT
; /MOD ( n n -- r q )
; Signed divide. Return mod and quotient.
FDB SLMOD,L860
L870 FCB 4,"/MOD"
SLMOD jsr DOLST
FDB OVER,ZLESS,SWAP,MSMOD,EXIT
; MOD ( n n -- r )
; Signed divide. Return mod only.
FDB MODD,L870
L880 FCB 3,"MOD"
MODD jsr DOLST
FDB SLMOD,DROP,EXIT
; / ( n n -- q )
; Signed divide. Return quotient only.
FDB SLASH,L880
L890 FCB 1,"/"
SLASH:
jsr DOLST
FDB SLMOD,SWAP,DROP,EXIT
;; Multiply
; UM* ( u u -- ud )
; Unsigned multiply. Return double product.
FDB UMSTA,L890
L900 FCB 3,"UM*"
UMSTA:
ldx #17 ; 16 adds and 17 shifts ...
clra ; result high word
clrb
bra UUMSTA3
UUMSTA1 bcc UUMSTA2
addd ,s
UUMSTA2 rora ; high, result high word
rorb ; low, result high word
UUMSTA3 ror 2,s ; shift multiplier high, result low word
ror 3,s ; shift multiplier low, result low word
leax -1,x
bne UUMSTA1
std ,s
pulu pc
;;;; slow HL ...
;;;; jsr DOLST
;;;; FDB DOLIT,0,SWAP,DOLIT,15,TOR
;;;;UMST1: FDB DUPP,UPLUS,TOR,TOR
;;;; FDB DUPP,UPLUS,RFROM,PLUS,RFROM
;;;; FDB QBRAN,UMST2
;;;; FDB TOR,OVER,UPLUS,RFROM,PLUS
;;;;UMST2: FDB DONXT,UMST1
;;;; FDB ROT,DROP,EXIT
; _UM* ( u u -- ud )
; Unsigned multiply. Return double product.
FDB UUMSTA,L900
L900A FCB 4,"_UM*"
UUMSTA:
jsr DOLST
FDB DOLIT,0,SWAP,DOLIT,15,TOR
UMST1 FDB DUPP,UPLUS,TOR,TOR
FDB DUPP,UPLUS,RFROM,PLUS,RFROM
FDB QBRAN,UMST2
FDB TOR,OVER,UPLUS,RFROM,PLUS
UMST2 FDB DONXT,UMST1
FDB ROT,DROP,EXIT
; * ( n n -- n )
; Signed multiply. Return single product.
; XXX Not really signed, -200 -200 * -> -25536
FDB STAR,L900A
L910 FCB 1,"*"
STAR:
jsr DOLST
FDB MSTAR,DROP,EXIT
; M* ( n n -- d )
; Signed multiply. Return double product.
FDB MSTAR,L910
L920 FCB 2,"M*"
MSTAR:
jsr DOLST
FDB DDUP,XORR,ZLESS,TOR
FDB ABSS,SWAP,ABSS,UMSTA
FDB RFROM
FDB QBRAN,MSTA1
FDB DNEGA
MSTA1 FDB EXIT
; */MOD ( n1 n2 n3 -- r q )
; Multiply n1 and n2, then divide by n3. Return mod and quotient.
FDB SSMOD,L920
L930 FCB 5,"*/MOD"
SSMOD jsr DOLST
FDB TOR,MSTAR,RFROM,MSMOD,EXIT
; */ ( n1 n2 n3 -- q )
; Multiply n1 by n2, then divide by n3. Return quotient only.
FDB STASL,L930
L940 FCB 2,"*/"
STASL jsr DOLST
FDB SSMOD,SWAP,DROP,EXIT
;; Miscellaneous
; CELL+ ( a -- a )
; Add cell size in byte to address.
FDB CELLP,L940
L950 FCB 5,"CELL+"
CELLP jsr DOLST
FDB DOCLIT
FCB CELLL
FDB PLUS,EXIT
; CELL- ( a -- a )
; Subtract cell size in byte from address.
FDB CELLM,L950
L960 FCB 5,"CELL-"
CELLM jsr DOLST
FDB DOCLIT
FCB 0-CELLL
FDB PLUS,EXIT
; CELLS ( n -- n )
; Multiply tos by cell size in bytes.
FDB CELLS,L960
L970 FCB 5,"CELLS"
CELLS jsr DOLST
FDB DOCLIT
FCB CELLL
FDB STAR,EXIT
; ALIGNED ( b -- a )
; Align address to the cell boundary.
FDB ALGND,L970
L975 FCB 7,"ALIGNED"
ALGND jsr DOLST
FDB EXIT
; BL ( -- 32 )
; Return 32, the blank character.
FDB BLANK,L975
L980 FCB 2,"BL"
BLANK:
jsr DOCONST
FDB ' '
;;; jsr DOLST
;;; FDB DOLIT,' ',EXIT
; >CHAR ( c -- c )
; Filter non-printing characters.
FDB TCHAR,L980
L990 FCB 5,">CHAR"
TCHAR jsr DOLST
FDB DOLIT,$7F,ANDD,DUPP ;mask msb
FDB DOCLIT
FCB 127
FDB BLANK,WITHI ;check for printable
FDB QBRAN,TCHA1
FDB DROP,DOLIT,'_' ;replace non-printables
TCHA1 FDB EXIT
; DEPTH ( -- n )
; Return the depth of the data stack.
FDB DEPTH,L990
L1000 FCB 5,"DEPTH"
DEPTH jsr DOLST
FDB SPAT,SZERO,AT,SWAP,SUBB
FDB DOCLIT
FCB CELLL
FDB SLASH,EXIT
; PICK ( ... +n -- ... w )
; Copy the nth stack item to tos.
FDB PICK,L1000
L1010 FCB 4,"PICK"
PICK:
ldd ,s
addd #1 ; correct index
aslb ; CELLL* (ASSERT: CELLL=2!!!)
rola
ldx d,s ; pick value
stx ,s ; replace TOP
pulu pc
;;;; slow HL ...
;;;; jsr DOLST
;;;; FDB PLUS1,CELLS
;;;; FDB SPAT,PLUS,AT,EXIT
; ROLL ( ... +n -- ... w )
; Copy the nth stack item to tos.
FDB ROLL,L1010
L1015 FCB 4,"ROLL"
ROLL:
;;;; XXX als Primitive!
;;;; slow HL ...
jsr DOLST
FDB DUPP,TWO
FDB LESS,QBRAN,ROL1
FDB DROP,BRAN,ROL2
ROL1 FDB SWAP,TOR,ONE
FDB SUBB
FDB ROLL,RFROM,SWAP
ROL2 FDB EXIT
;; Memory access
; +! ( n a -- )
; Add n to the contents at address a.
FDB PSTOR,L1015
L1020 FCB 2,"+!"
PSTOR:
puls x ; address
puls d ; value
addd ,x ; add to value from address
std ,x ; store back
pulu pc
;;;; XXX als Primitive!
;;;; slow HL ...
;;;; jsr DOLST
;;;; FDB SWAP,OVER,AT,PLUS
;;;; FDB SWAP,STORE,EXIT
; 2! ( d a -- )
; Store the double integer to address a.
FDB DSTOR,L1020
L1030 FCB 2,"2!"
DSTOR:
;;;; XXX als Primitive!
;;;; slow HL ...
jsr DOLST
FDB SWAP,OVER,STORE
FDB CELLP,STORE,EXIT
; 2@ ( a -- d )
; Fetch double integer from address a.
FDB DAT,L1030
L1040 FCB 2,"2@"
DAT:
;;;; XXX als Primitive!
;;;; slow HL ...
jsr DOLST
FDB DUPP,CELLP,AT
FDB SWAP,AT,EXIT
; COUNT ( b -- b +n )
; Return count byte of a string and add 1 to byte address.
FDB COUNT,L1040
L1050 FCB 5,"COUNT"
COUNT jsr DOLST
FDB DUPP,PLUS1
FDB SWAP,CAT,EXIT
; HERE ( -- a )
; Return the top of the code dictionary.
FDB HERE,L1050
L1060 FCB 4,"HERE"
HERE jsr DOLST
FDB CP,AT,EXIT
; PAD ( -- a )
; Return the address of the text buffer above the code dictionary.
FDB PAD,L1060
L1070 FCB 3,"PAD"
PAD jsr DOLST
FDB HERE,DOLIT,80,PLUS,EXIT
; TIB ( -- a )
; Return the address of the terminal input buffer.
FDB TIB,L1070
L1080 FCB 3,"TIB"
TIB jsr DOLST
FDB NTIB,CELLP,AT,EXIT
; @EXECUTE ( a -- )
; Execute vector stored in address a.
FDB ATEXE,L1080
L1090 FCB 8,"@EXECUTE"
ATEXE jsr DOLST
FDB AT,QDUP ;?address or zero
FDB QBRAN,EXE1
FDB EXECU ;execute if non-zero
EXE1 FDB EXIT ;do nothing if zero
; CMOVE ( b1 b2 u -- )
; Copy u bytes from b1 to b2.
FDB CMOVE,L1090
L1100 FCB 5,"CMOVE"
CMOVE:
jmp CMOVEW
ldd ,s ;count
beq CMOVE3 ;zero -> leave
tstb ;count low
beq CMOVE1
inc ,s ;ajust high for to-0 decrementation
CMOVE1:
ldx 2,s ;to addr
stu 2,s ;save reg on stack
ldu 4,s ;from addr
CMOVE2 lda ,u+ ;from ->
sta ,x+ ;to
decb ;low count
bne CMOVE2
dec ,s ;high count
bne CMOVE2
ldu 2,s
CMOVE3 leas 6,s ;drop 3 parameters from stack
pulu pc
;;;;
;;;; alternative, wordwise copy ...
CMOVEW ldd ,s ; count
ldx 2,s ; destination
sty ,s ; save RP
stu 2,s ; save IP
ldy 4,s ; source
lsra ; divide by 2, count words
rorb ;
pshs cc
beq CMOVEW1 ; byte decrement correction
inca ; byte decrement high byte correction
CMOVEW1 subd #0 ; word count zero (=65536)?
beq CMOVEW3
CMOVEW2 ldu ,y++ ; source
stu ,x++ ; destination
decb ; count low
bne CMOVEW2
deca ; count high (count to 0 corrected)
bne CMOVEW2
CMOVEW3 puls CC ; check if odd count?
bcc CMOVEW4
lda ,y
sta ,x
CMOVEW4 puls y,u ; y first
leas 2,s ; drop 3rd parameter
pulu pc ; next
;;;;
;;;; slow HL ...
;;;; jsr DOLST
;;;; FDB TOR
;;;; FDB BRAN,CMOV2
;;;;CMOV1: FDB TOR,DUPP,CAT
;;;; FDB RAT,CSTOR
;;;; FDB PLUS1
;;;; FDB RFROM,PLUS1
;;;;CMOV2: FDB DONXT,CMOV1
;;;; FDB DDROP,EXIT
;;;;
; FILL ( b u c -- )
; Fill u bytes of character c to area beginning at b.
FDB FILL,L1100
L1110 FCB 4,"FILL"
FILL:
ldd 2,s ;count
beq NFILL3 ;zero -> leave
tstb ;count low
beq NFILL1
inc 2,s ;ajust high for to-0 decrementation
NFILL1:
ldx 4,s ;to addr
lda 1,s ;fill byte, low byte from TOS
NFILL2:
sta ,x+ ;to
decb ;low count
bne NFILL2
dec 2,s ;high count
bne NFILL2
NFILL3 leas 6,s ;drop 3 parameters from stack
pulu pc
;;;; slow HL ...
;;;; jsr DOLST
;;;; FDB SWAP,TOR,SWAP
;;;; FDB BRAN,FILL2
;;;;FILL1: FDB DDUP,CSTOR,PLUS1
;;;;FILL2: FDB DONXT,FILL1
;;;; FDB DDROP,EXIT
; -TRAILING ( b u -- b u )
; Adjust the count to eliminate trailing white space.
FDB DTRAI,L1110
L1120 FCB 9,"-TRAILING"
DTRAI jsr DOLST
FDB TOR
FDB BRAN,DTRA2
DTRA1 FDB BLANK,OVER,RAT,PLUS,CAT,LESS
FDB QBRAN,DTRA2
FDB RFROM,PLUS1,EXIT
DTRA2 FDB DONXT,DTRA1
FDB ZERO,EXIT
; PACK$ ( b u a -- a )
; Build a counted string with u characters from b. Null fill.
FDB PACKS,L1120
L1130 FCB 5,"PACK$"
PACKS jsr DOLST
FDB DUPP,TOR ;strings only on cell boundary
FDB DDUP,CSTOR
FDB PLUS1 ;count mod cell
FDB DDUP,PLUS
FDB ZERO,SWAP,CSTOR ;null fill cell
FDB SWAP,CMOVE,RFROM,EXIT ;move string
;; Numeric output, single precision
; DIGIT ( u -- c )
; Convert digit u to a character.
FDB DIGIT,L1130
L1140 FCB 5,"DIGIT"
DIGIT jsr DOLST
FDB DOCLIT
FCB 9
FDB OVER,LESS
FDB DOCLIT
FCB 7
FDB ANDD,PLUS
FDB DOLIT,'0',PLUS,EXIT
; EXTRACT ( n base -- n c )
; Extract the least significant digit from n.
FDB EXTRC,L1140
L1150 FCB 7,"EXTRACT"
EXTRC jsr DOLST
FDB ZERO,SWAP,UMMOD
FDB SWAP,DIGIT,EXIT
; <# ( -- )
; Initiate the numeric output process.
FDB BDIGS,L1150
L1160 FCB 2,"<#"
BDIGS jsr DOLST
FDB PAD,HLD,STORE,EXIT
; HOLD ( c -- )
; Insert a character into the numeric output string.
FDB HOLD,L1160
L1170 FCB 4,"HOLD"
HOLD jsr DOLST
FDB HLD,AT,MINUS1
FDB DUPP,HLD,STORE,CSTOR,EXIT
; # ( u -- u )
; Extract one digit from u and append the digit to output string.
FDB DIG,L1170
L1180 FCB 1,"#"
DIG jsr DOLST
FDB BASE,AT,EXTRC,HOLD,EXIT
; #S ( u -- 0 )
; Convert u until all digits are added to the output string.
FDB DIGS,L1180
L1190 FCB 2,"#S"
DIGS jsr DOLST
DIGS1 FDB DIG,DUPP
FDB QBRAN,DIGS2
FDB BRAN,DIGS1
DIGS2 FDB EXIT
; SIGN ( n -- )
; Add a minus sign to the numeric output string.
FDB SIGN,L1190
L1200 FCB 4,"SIGN"
SIGN jsr DOLST
FDB ZLESS
FDB QBRAN,SIGN1
FDB DOLIT,'-',HOLD
SIGN1 FDB EXIT
; #> ( w -- b u )
; Prepare the output string to be TYPE'd.
FDB EDIGS,L1200
L1210 FCB 2,"#>"
EDIGS jsr DOLST
FDB DROP,HLD,AT
FDB PAD,OVER,SUBB,EXIT
; str ( w -- b u )
; Convert a signed integer to a numeric string.
FDB STR,L1210
L1220 FCB 3,"str"
STR jsr DOLST
FDB DUPP,TOR,ABSS
FDB BDIGS,DIGS,RFROM
FDB SIGN,EDIGS,EXIT
; HEX ( -- )
; Use radix 16 as base for numeric conversions.
FDB HEX,L1220
L1230 FCB 3,"HEX"
HEX jsr DOLST
FDB DOCLIT
FCB 16
FDB BASE,STORE,EXIT
; DECIMAL ( -- )
; Use radix 10 as base for numeric conversions.
FDB DECIM,L1230
L1240 FCB 7,"DECIMAL"
DECIM jsr DOLST
FDB DOCLIT
FCB 10
FDB BASE,STORE,EXIT
;; Numeric input, single precision
; DIGIT? ( c base -- u t )
; Convert a character to its numeric value. A flag indicates success.
FDB DIGTQ,L1240
L1250 FCB 6,"DIGIT?"
DIGTQ jsr DOLST
FDB TOR,DOLIT,'0',SUBB
FDB DOCLIT
FCB 9
FDB OVER,LESS
FDB QBRAN,DGTQ1
FDB DOCLIT
FCB 7
FDB SUBB
FDB DUPP,DOLIT,10,LESS,ORR
DGTQ1 FDB DUPP,RFROM,ULESS,EXIT
; NUMBER? ( a -- n T | a F )
; Convert a number string to integer. Push a flag on tos.
FDB NUMBQ,L1250
L1260 FCB 7,"NUMBER?"
NUMBQ jsr DOLST
FDB BASE,AT,TOR,ZERO,OVER,COUNT
FDB OVER,CAT,DOLIT,'$',EQUAL
FDB QBRAN,NUMQ1
FDB HEX,SWAP,PLUS1
FDB SWAP,MINUS1
NUMQ1 FDB OVER,CAT,DOLIT,'-',EQUAL,TOR
FDB SWAP,RAT,SUBB,SWAP,RAT,PLUS,QDUP
FDB QBRAN,NUMQ6
FDB MINUS1,TOR
NUMQ2 FDB DUPP,TOR,CAT,BASE,AT,DIGTQ
FDB QBRAN,NUMQ4
FDB SWAP,BASE,AT,STAR,PLUS,RFROM
FDB PLUS1
FDB DONXT,NUMQ2
FDB RAT,SWAP,DROP
FDB QBRAN,NUMQ3
FDB NEGAT
NUMQ3 FDB SWAP
FDB BRAN,NUMQ5
NUMQ4 FDB RFROM,RFROM,DDROP,DDROP,ZERO
NUMQ5 FDB DUPP
NUMQ6 FDB RFROM,DDROP
FDB RFROM,BASE,STORE,EXIT
;; Basic I/O
; ?KEY ( -- c T | F )
; Return input character and true, or a false if no input.
FDB QKEY,L1260
L1270 FCB 4,"?KEY"
QKEY jsr DOLST
FDB TQKEY,ATEXE,EXIT
; KEY ( -- c )
; Wait for and return an input character.
FDB KEY,L1270
L1280 FCB 3,"KEY"
KEY jsr DOLST
KEY1 FDB QKEY
FDB QBRAN,KEY1
FDB EXIT
; EMIT ( c -- )
; Send a character to the output device.
FDB EMIT,L1280
L1290 FCB 4,"EMIT"
EMIT jsr DOLST
FDB TEMIT,ATEXE,EXIT
; NUF? ( -- t )
; Return false if no input, else pause and if CR return true.
FDB NUFQ,L1290
L1300 FCB 4,"NUF?"
NUFQ jsr DOLST
FDB QKEY,DUPP
FDB QBRAN,NUFQ1
FDB DDROP,KEY,DOCLIT
FCB CRR
FDB EQUAL
NUFQ1 FDB EXIT
; PACE ( -- )
; Send a pace character for the file downloading process.
FDB PACE,L1300
L1310 FCB 4,"PACE"
PACE jsr DOLST
FDB DOCLIT
FCB 11
FDB EMIT,EXIT
; SPACE ( -- )
; Send the blank character to the output device.
FDB SPACE,L1310
L1320 FCB 5,"SPACE"
SPACE jsr DOLST
FDB BLANK,EMIT,EXIT
; SPACES ( +n -- )
; Send n spaces to the output device.
FDB SPACS,L1320
L1330 FCB 6,"SPACES"
SPACS jsr DOLST
FDB ZERO,MAX,TOR
FDB BRAN,CHAR2
CHAR1 FDB SPACE
CHAR2 FDB DONXT,CHAR1
FDB EXIT
; TYPE ( b u -- )
; Output u characters from b.
FDB TYPES,L1330
L1340 FCB 4,"TYPE"
TYPES jsr DOLST
FDB TOR
FDB BRAN,TYPE2
TYPE1 FDB DUPP,CAT,EMIT
FDB PLUS1
TYPE2 FDB DONXT,TYPE1
FDB DROP,EXIT
; CR ( -- )
; Output a carriage return and a line feed.
FDB CR,L1340
L1350 FCB 2,"CR"
CR jsr DOLST
FDB DOCLIT
FCB CRR
FDB EMIT
FDB DOCLIT
FCB LF
FDB EMIT,EXIT
; do$ ( -- a )
; Return the address of a compiled string.
FDB DOSTR,L1350
L1360 FCB COMPO+3,"do$"
DOSTR jsr DOLST
FDB RFROM,RAT,RFROM,COUNT,PLUS
FDB ALGND,TOR,SWAP,TOR,EXIT
; $"| ( -- a )
; Run time routine compiled by $". Return address of a compiled string.
FDB STRQP,L1360
L1370 FCB COMPO+3,"$",$22,"|"
STRQP jsr DOLST
FDB DOSTR,EXIT ;force a call to do$
; ."| ( -- )
; Run time routine of ." . Output a compiled string.
FDB DOTQP,L1370
L1380 FCB COMPO+3,".",$22,"|"
DOTQP jsr DOLST
FDB DOSTR,COUNT,TYPES,EXIT
; .R ( n +n -- )
; Display an integer in a field of n columns, right justified.
FDB DOTR,L1380
L1390 FCB 2,".R"
DOTR jsr DOLST
FDB TOR,STR,RFROM,OVER,SUBB
FDB SPACS,TYPES,EXIT
; U.R ( u +n -- )
; Display an unsigned integer in n column, right justified.
FDB UDOTR,L1390
L1400 FCB 3,"U.R"
UDOTR jsr DOLST
FDB TOR,BDIGS,DIGS,EDIGS
FDB RFROM,OVER,SUBB
FDB SPACS,TYPES,EXIT
; U. ( u -- )
; Display an unsigned integer in free format.
FDB UDOT,L1400
L1410 FCB 2,"U."
UDOT jsr DOLST
FDB BDIGS,DIGS,EDIGS
FDB SPACE,TYPES,EXIT
; . ( w -- )
; Display an integer in free format, preceeded by a space.
FDB DOT,L1410
L1420 FCB 1,"."
DOT jsr DOLST
FDB BASE,AT,DOCLIT
FCB 10
FDB XORR ;?decimal
FDB QBRAN,DOT1
FDB UDOT,EXIT ;no, display unsigned
DOT1 FDB STR,SPACE,TYPES,EXIT ;yes, display signed
; ? ( a -- )
; Display the contents in a memory cell.
FDB QUEST,L1420
L1430 FCB 1,"?"
QUEST jsr DOLST
FDB AT,DOT,EXIT
;; Parsing
; parse ( b u c -- b u delta ; <string> )
; Scan string delimited by c. Return found string and its offset.
FDB PARS,L1430
L1440 FCB 5,"parse"
PARS jsr DOLST
FDB TEMP,STORE,OVER,TOR,DUPP
FDB QBRAN,PARS8
FDB MINUS1,TEMP,AT,BLANK,EQUAL
FDB QBRAN,PARS3
FDB TOR
PARS1 FDB BLANK,OVER,CAT ;skip leading blanks ONLY
FDB SUBB,ZLESS,INVER
FDB QBRAN,PARS2
FDB PLUS1
FDB DONXT,PARS1
FDB RFROM,DROP,ZERO,DUPP,EXIT
PARS2 FDB RFROM
PARS3 FDB OVER,SWAP
FDB TOR
PARS4 FDB TEMP,AT,OVER,CAT,SUBB ;scan for delimiter
FDB TEMP,AT,BLANK,EQUAL
FDB QBRAN,PARS5
FDB ZLESS
PARS5 FDB QBRAN,PARS6
FDB PLUS1
FDB DONXT,PARS4
FDB DUPP,TOR
FDB BRAN,PARS7
PARS6 FDB RFROM,DROP,DUPP
FDB PLUS1,TOR
PARS7 FDB OVER,SUBB
FDB RFROM,RFROM,SUBB,EXIT
PARS8 FDB OVER,RFROM,SUBB,EXIT
; PARSE ( c -- b u ; <string> )
; Scan input stream and return counted string delimited by c.
FDB PARSE,L1440
L1450 FCB 5,"PARSE"
PARSE jsr DOLST
FDB TOR,TIB,INN,AT,PLUS ;current input buffer pointer
FDB NTIB,AT,INN,AT,SUBB ;remaining count
FDB RFROM,PARS,INN,PSTOR,EXIT
; .( ( -- )
; Output following string up to next ) .
FDB DOTPR,L1450
L1460 FCB IMEDD+2,".("
DOTPR jsr DOLST
FDB DOLIT,')',PARSE,TYPES,EXIT
; ( ( -- )
; Ignore following string up to next ) . A comment.
FDB PAREN,L1460
L1470 FCB IMEDD+1,"("
PAREN jsr DOLST
FDB DOLIT,')',PARSE,DDROP,EXIT
; \ ( -- )
; Ignore following text till the end of line.
FDB BKSLA,L1470
L1480 FCB IMEDD+1,92 ; '\' but give as numeric to avoid different escap char processing in different assemblers
BKSLA jsr DOLST
FDB NTIB,AT,INN,STORE,EXIT
; CHAR ( -- c )
; Parse next word and return its first character.
FDB CHAR,L1480
L1490 FCB 4,"CHAR"
CHAR jsr DOLST
FDB BLANK,PARSE,DROP,CAT,EXIT
; TOKEN ( -- a ; <string> )
; Parse a word from input stream and copy it to name dictionary.
FDB TOKEN,L1490
L1500 FCB 5,"TOKEN"
TOKEN jsr DOLST
FDB BLANK,PARSE,DOCLIT
FCB 31
FDB MIN
FDB NP,AT,OVER,SUBB,CELLM
FDB PACKS,EXIT
; WORD ( c -- a ; <string> )
; Parse a word from input stream and copy it to code dictionary.
FDB WORD,L1500
L1510 FCB 4,"WORD"
WORD jsr DOLST
FDB PARSE,HERE,PACKS,EXIT
;; Dictionary search
; NAME> ( na -- ca )
; Return a code address given a name address.
FDB NAMET,L1510
L1520 FCB 5,"NAME>"
NAMET jsr DOLST
FDB CELLM,CELLM,AT,EXIT
; SAME? ( a a u -- a a f \ -0+ )
; Compare u bytes in two strings. Return 0 if identical.
FDB SAMEQ,L1520
L1530 FCB 5,"SAME?"
SAMEQ jsr DOLST
FDB TOR
FDB BRAN,SAME2
SAME1 FDB OVER,RAT,PLUS,CAT
FDB OVER,RAT,PLUS,CAT
FDB SUBB,QDUP
FDB QBRAN,SAME2
FDB RFROM,DROP,EXIT
SAME2 FDB DONXT,SAME1
FDB DOLIT,0,EXIT
; find ( a va -- ca na | a F )
; Search a vocabulary for a string. Return ca and na if succeeded.
FDB FIND,L1530
L1540 FCB 4,"find"
FIND jsr DOLST
FDB SWAP,DUPP,CAT,MINUS1
FDB TEMP,STORE
FDB DUPP,AT,TOR,CELLP,SWAP
FIND1 FDB AT,DUPP
FDB QBRAN,FIND6
FDB DUPP,AT,DOLIT,MASKK,ANDD,RAT,XORR
FDB QBRAN,FIND2
FDB CELLP,MONE
FDB BRAN,FIND3
FIND2 FDB CELLP,TEMP,AT,SAMEQ
FIND3 FDB BRAN,FIND4
FIND6 FDB RFROM,DROP
FDB SWAP,CELLM,SWAP,EXIT
FIND4 FDB QBRAN,FIND5
FDB CELLM,CELLM
FDB BRAN,FIND1
FIND5 FDB RFROM,DROP,SWAP,DROP
FDB CELLM
FDB DUPP,NAMET,SWAP,EXIT
; NAME? ( a -- ca na | a F )
; Search all context vocabularies for a string.
FDB NAMEQ,L1540
L1550 FCB 5,"NAME?"
NAMEQ jsr DOLST
FDB CNTXT,DUPP,DAT,XORR
FDB QBRAN,NAMQ1
FDB CELLM
NAMQ1 FDB TOR
NAMQ2 FDB RFROM,CELLP,DUPP,TOR
FDB AT,QDUP
FDB QBRAN,NAMQ3
FDB FIND,QDUP
FDB QBRAN,NAMQ2
FDB RFROM,DROP,EXIT
NAMQ3 FDB RFROM,DROP
FDB ZERO,EXIT
;; Terminal response
; ^H ( bot eot cur -- bot eot cur )
; Backup the cursor by one character.
FDB BKSP,L1550
L1560 FCB 2,"^H"
BKSP jsr DOLST
FDB TOR,OVER,RFROM,SWAP,OVER,XORR
FDB QBRAN,BACK1
FDB DOLIT,BKSPP,TECHO,ATEXE,MINUS1
FDB BLANK,TECHO,ATEXE
FDB DOLIT,BKSPP,TECHO,ATEXE
BACK1 FDB EXIT
; TAP ( bot eot cur c -- bot eot cur )
; Accept and echo the key stroke and bump the cursor.
FDB TAP,L1560
L1570 FCB 3,"TAP"
TAP jsr DOLST
FDB DUPP,TECHO,ATEXE
FDB OVER,CSTOR,PLUS1,EXIT
; kTAP ( bot eot cur c -- bot eot cur )
; Process a key stroke, CR or backspace.
FDB KTAP,L1570
L1580 FCB 4,"kTAP"
KTAP jsr DOLST
FDB DUPP,DOCLIT
FCB CRR
FDB XORR
FDB QBRAN,KTAP2
FDB DUPP,DOLIT,BKSPP,XORR
FDB SWAP,DOLIT,BKSPP2,XORR,ANDD
FDB QBRAN,KTAP1
FDB BLANK,TAP,EXIT
KTAP1 FDB BKSP,EXIT
KTAP2 FDB DROP,SWAP,DROP,DUPP,EXIT
; accept ( b u -- b u )
; Accept characters to input buffer. Return with actual count.
FDB ACCEP,L1580
L1590 FCB 6,"ACCEPT"
ACCEP jsr DOLST
FDB OVER,PLUS,OVER
ACCP1 FDB DDUP,XORR
FDB QBRAN,ACCP4
FDB KEY,DUPP
; FDB BLANK,SUBB,DOLIT,95,ULESS
FDB BLANK,DOLIT,127,WITHI
FDB QBRAN,ACCP2
FDB TAP
FDB BRAN,ACCP3
ACCP2 FDB TTAP,ATEXE
ACCP3 FDB BRAN,ACCP1
ACCP4 FDB DROP,OVER,SUBB,EXIT
; EXPECT ( b u -- )
; Accept input stream and store count in SPAN.
FDB EXPEC,L1590
L1600 FCB 6,"EXPECT"
EXPEC jsr DOLST
FDB TEXPE,ATEXE,SPAN,STORE,DROP,EXIT
; QUERY ( -- )
; Accept input stream to terminal input buffer.
FDB QUERY,L1600
L1610 FCB 5,"QUERY"
QUERY jsr DOLST
FDB TIB,DOCLIT
FCB 80
FDB TEXPE,ATEXE,NTIB,STORE
FDB DROP,ZERO,INN,STORE,EXIT
;; Error handling
; CATCH ( ca -- 0 | err# )
; Execute word at ca and set up an error frame for it.
FDB CATCH,L1610
L1620 FCB 5,"CATCH"
CATCH jsr DOLST
FDB SPAT,TOR,HANDL,AT,TOR ;save error frame
FDB RPAT,HANDL,STORE,EXECU ;execute
FDB RFROM,HANDL,STORE ;restore error frame
FDB RFROM,DROP,ZERO,EXIT ;no error
; THROW ( err# -- err# )
; Reset system to current local error frame an update error flag.
FDB THROW,L1620
L1630 FCB 5,"THROW"
THROW jsr DOLST
FDB HANDL,AT,RPSTO ;restore return stack
FDB RFROM,HANDL,STORE ;restore handler frame
FDB RFROM,SWAP,TOR,SPSTO ;restore data stack
FDB DROP,RFROM,EXIT
; NULL$ ( -- a )
; Return address of a null string with zero count.
FDB NULLS,L1630
L1640 FCB 5,"NULL$"
NULLS:
;;;; jsr DOLST
;;;; FDB DOVAR ;emulate CREATE
jsr FDOVAR
FDB 0
FCB 99,111,121,111,116,101
; ABORT ( -- )
; Reset data stack and jump to QUIT.
FDB ABORT,L1640
L1650 FCB 5,"ABORT"
ABORT jsr DOLST
FDB NULLS,THROW
; abort" ( f -- )
; Run time routine of ABORT" . Abort with a message.
FDB ABORQ,L1650
L1660 FCB COMPO+6,"abort",'"'
ABORQ jsr DOLST
FDB QBRAN,ABOR1 ;text flag
FDB DOSTR,THROW ;pass error string
ABOR1 FDB DOSTR,DROP,EXIT ;drop error
;; The text interpreter
; $INTERPRET ( a -- )
; Interpret a word. If failed, try to convert it to an integer.
FDB INTER,L1660
L1670 FCB 10,"$INTERPRET"
INTER jsr DOLST
FDB NAMEQ,QDUP ;?defined
FDB QBRAN,INTE1
FDB AT,DOLIT,COMPO*256,ANDD ;?compile only lexicon bits
FDB ABORQ
FCB 13," compile only"
FDB EXECU,EXIT ;execute defined word
INTE1 FDB TNUMB,ATEXE ;convert a number
FDB QBRAN,INTE2
FDB EXIT
INTE2 FDB THROW ;error
; [ ( -- )
; Start the text interpreter.
FDB LBRAC,L1670
L1680 FCB IMEDD+1,"["
LBRAC jsr DOLST
FDB DOLIT,INTER,TEVAL,STORE,EXIT
; .OK ( -- )
; Display 'ok' only while interpreting.
FDB DOTOK,L1680
L1690 FCB 3,".OK"
DOTOK jsr DOLST
FDB DOLIT,INTER,TEVAL,AT,EQUAL
FDB QBRAN,DOTO1
FDB DOTQP
FCB 3," ok"
DOTO1 FDB CR,EXIT
; ?STACK ( -- )
; Abort if the data stack underflows.
FDB QSTAC,L1690
L1700 FCB 6,"?STACK"
QSTAC jsr DOLST
FDB DEPTH,ZLESS ;check only for underflow
FDB ABORQ
FCB 10," underflow"
FDB EXIT
; EVAL ( -- )
; Interpret the input stream.
FDB EVAL,L1700
L1710 FCB 4,"EVAL"
EVAL jsr DOLST
EVAL1 FDB TOKEN,DUPP,CAT ;?input stream empty
FDB QBRAN,EVAL2
FDB TEVAL,ATEXE,QSTAC ;evaluate input, check stack
FDB BRAN,EVAL1
EVAL2 FDB DROP,TPROM,ATEXE,EXIT ;prompt
;; Shell
; PRESET ( -- )
; Reset data stack pointer and the terminal input buffer.
FDB PRESE,L1710
L1720 FCB 6,"PRESET"
PRESE jsr DOLST
FDB SZERO,AT,SPSTO
FDB DOLIT,TIBB,NTIB,CELLP,STORE,EXIT
; xio ( a a a -- )
; Reset the I/O vectors 'EXPECT, 'TAP, 'ECHO and 'PROMPT.
FDB XIO,L1720
L1730 FCB COMPO+3,"xio"
XIO jsr DOLST
FDB DOLIT,ACCEP,TEXPE,DSTOR
FDB TECHO,DSTOR,EXIT
; FILE ( -- )
; Select I/O vectors for file download.
FDB FILE,L1730
L1740 FCB 4,"FILE"
FILE jsr DOLST
FDB DOLIT,PACE,DOLIT,DROP
FDB DOLIT,KTAP,XIO,EXIT
; HAND ( -- )
; Select I/O vectors for terminal interface.
FDB HAND,L1740
L1750 FCB 4,"HAND"
HAND jsr DOLST
FDB DOLIT,DOTOK,DOLIT,EMIT
FDB DOLIT,KTAP,XIO,EXIT
; I/O ( -- a )
; Array to store default I/O vectors.
FDB ISLO,L1750
L1760 FCB 3,"I/O"
ISLO:
;; jsr DOLST
;; FDB DOVAR ;emulate CREATE
jsr FDOVAR
FDB QRX,TXSTO ;default I/O vectors
; CONSOLE ( -- )
; Initiate terminal interface.
FDB CONSO,L1760
L1770 FCB 7,"CONSOLE"
CONSO jsr DOLST
FDB ISLO,DAT,TQKEY,DSTOR ;restore default I/O device
FDB HAND,EXIT ;keyboard input
; QUIT ( -- )
; Reset return stack pointer and start text interpreter.
FDB QUIT,L1770
L1780 FCB 4,"QUIT"
QUIT jsr DOLST
FDB RZERO,AT,RPSTO ;reset return stack pointer
QUIT1 FDB LBRAC ;start interpretation
QUIT2 FDB QUERY ;get input
FDB DOLIT,EVAL,CATCH,QDUP ;evaluate input
FDB QBRAN,QUIT2 ;continue till error
FDB TPROM,AT,TOR ;save input device
FDB CONSO,NULLS,OVER,XORR ;?display error message
FDB QBRAN,QUIT3
FDB SPACE,COUNT,TYPES ;error message
FDB DOTQP
FCB 3," ? " ;error prompt
QUIT3 FDB RFROM,DOLIT,DOTOK,XORR ;?file input
FDB QBRAN,QUIT4
FDB DOLIT,ERR,EMIT ;file error, tell host
QUIT4 FDB PRESE ;some cleanup
FDB BRAN,QUIT1
;; The compiler
; ' ( -- ca )
; Search context vocabularies for the next word in input stream.
FDB TICK,L1780
L1790 FCB 1,"'"
TICK jsr DOLST
FDB TOKEN,NAMEQ ;?defined
FDB QBRAN,TICK1
FDB EXIT ;yes, push code address
TICK1 FDB THROW ;no, error
; ALLOT ( n -- )
; Allocate n bytes to the code dictionary.
FDB ALLOT,L1790
L1800 FCB 5,"ALLOT"
ALLOT jsr DOLST
FDB CP,PSTOR,EXIT ;adjust code pointer
; , ( w -- )
; Compile an integer into the code dictionary.
FDB COMMA,L1800
L1810 FCB 1,","
COMMA jsr DOLST
FDB HERE,DUPP,CELLP ;cell boundary
FDB CP,STORE,STORE,EXIT ;adjust code pointer and compile
; [COMPILE] ( -- ; <string> )
; Compile the next immediate word into code dictionary.
FDB BCOMP,L1810
L1820 FCB IMEDD+9,"[COMPILE]"
BCOMP jsr DOLST
FDB TICK,COMMA,EXIT
; COMPILE ( -- )
; Compile the next address in colon list to code dictionary.
FDB COMPI,L1820
L1830 FCB COMPO+7,"COMPILE"
COMPI jsr DOLST
FDB RFROM,DUPP,AT,COMMA ;compile address
FDB CELLP,TOR,EXIT ;adjust return address
; LITERAL ( w -- )
; Compile tos to code dictionary as an integer literal.
FDB LITER,L1830
L1840 FCB IMEDD+7,"LITERAL"
LITER jsr DOLST
FDB COMPI,DOLIT,COMMA,EXIT
; $," ( -- )
; Compile a literal string up to next " .
FDB STRCQ,L1840
L1850 FCB 3,"$,",'"'
STRCQ jsr DOLST
FDB DOLIT,'"',WORD ;move string to code dictionary
FDB COUNT,PLUS,ALGND ;calculate aligned end of string
FDB CP,STORE,EXIT ;adjust the code pointer
; RECURSE ( -- )
; Make the current word available for compilation.
FDB RECUR,L1850
L1860 FCB IMEDD+7,"RECURSE"
RECUR jsr DOLST
FDB LAST,AT,NAMET,COMMA,EXIT
;; Structures
; DO ( -- a m )
; Start a DO-LOOP/+LOOP structure in a colon definition.
FDB DO,L1860
L1861 FCB IMEDD+2,"DO"
DO jsr DOLST
FDB COMPI,DODO,HERE
FDB ONE ; marker for DO
FDB EXIT
; ?DO ( -- a m )
; Start a ?DO-LOOP/+LOOP structure in a colon definition.
FDB QDO,L1861
L1862 FCB IMEDD+3,"?DO"
QDO jsr DOLST
FDB COMPI,DOQDO,HERE
FDB COMPI,0 ; branch destination placeholder
FDB TWO ; marker for ?DO
FDB EXIT
; (?DO) ( w w -- )
; Runtime part of DO in a DO-LOOP/+LOOP structure.
FDB DOQDO,L1862
L1862A FCB 5,"(?DO)"
DOQDO:
puls d ;start
cmpd ,s ;start < end -> ok
blt DOQDO1
leas 2,s ;drop end
ldu ,u
pulu pc ;branch past loop
DOQDO1:
puls x ;end
stx ,--y ;end to return stack
std ,--y ;start to return stack
leau 2,u ;skip jump forward
pulu pc
; -DO ( -- a m )
; Start a -DO-LOOP/+LOOP structure in a colon definition.
FDB MDO,L1862A
L1862B FCB IMEDD+3,"-DO"
MDO jsr DOLST
FDB COMPI,DOMDO,HERE
FDB COMPI,0 ; branch destination placeholder
FDB TWO ; marker for ?DO/-DO
FDB EXIT
; (-DO) ( w w -- )
; Runtime part of -DO in a -DO-LOOP/+LOOP structure.
FDB DOMDO,L1862B
L1862C FCB 5,"(-DO)"
DOMDO:
puls d ;start
cmpd ,s ;start > end -> ok
bgt DOMDO1
leas 2,s ;drop end
ldu ,u
pulu pc ;branch past loop
DOMDO1:
puls x ;end
stx ,--y ;end to return stack
std ,--y ;start to return stack
leau 2,u ;skip jump forward
pulu pc
; (DO) ( w w -- )
; Runtime part of DO in a DO-LOOP/+LOOP structure.
FDB DODO,L1862C
L1863 FCB 4,"(DO)"
DODO:
puls d,x ;start first, end second
stx ,--y ;end to return stack
std ,--y ;start to return stack
pulu pc
; (LOOP) ( -- )
; Runtime part of LOOP
FDB DOLOOP,L1863
L1864 FCB 6,"(LOOP)"
DOLOOP:
ldd #1
bra DOPLOF
; (+LOOP) ( -- )
; Runtime part of +LOOP
FDB DOPLOOP,L1864
L1865 FCB IMEDD+7,"(+LOOP)"
DOPLOOP:
ldd ,s++ ; increment
bpl DOPLOF ; forward
addd ,y ; start/index
cmpd 2,y ; end
ble DOPLO1 ; index <= end -> leave
std ,y
ldu ,u ; branch to begin of loop
pulu pc
DOPLOF addd ,y ; start/index
cmpd 2,y ; end
bge DOPLO1 ; index >= end -> leave
std ,y ; save back
ldu ,u ; branch to begin of loop
pulu pc
DOPLO1:
leau 2,u ; skip back destination
leay 4,y ; remove index and upper from r stack
pulu pc
; LOOP ( a m -- )
; Terminate a DO/?DO-LOOP loop structure.
FDB LOOP,L1865
L1866 FCB IMEDD+4,"LOOP"
LOOP jsr DOLST
FDB COMPI,DOLOOP
FDB TWO,EQUAL,QBRAN,LOOP1
FDB HERE,CELLP,OVER,STORE,CELLP ; branch forward destination
LOOP1 FDB COMMA,EXIT
; +LOOP ( a m -- )
; Terminate a DO/?DO-+LOOP loop structure.
FDB PLOOP,L1866
L1867 FCB IMEDD+5,"+LOOP"
PLOOP jsr DOLST
FDB COMPI,DOPLOOP
FDB TWO,EQUAL,QBRAN,PLOOP1
FDB HERE,CELLP,OVER,STORE,CELLP ; branch forward destination
PLOOP1 FDB COMMA,EXIT
; LEAVE ( -- )
; Leave DO/LOOP
FDB LEAVE,L1867
L1868 FCB 5,"LEAVE"
LEAVE:
ldd ,y ;take index on return stack
std 2,y ;and change end to it
pulu pc
; FOR ( -- a )
; Start a FOR-NEXT loop structure in a colon definition.
FDB FOR,L1867
L1870 FCB IMEDD+3,"FOR"
FOR jsr DOLST
FDB COMPI,TOR,HERE,EXIT
; BEGIN ( -- a )
; Start an infinite or indefinite loop structure.
FDB BEGIN,L1870
L1880 FCB IMEDD+5,"BEGIN"
BEGIN jsr DOLST
FDB HERE,EXIT
; NEXT ( a -- )
; Terminate a FOR-NEXT loop structure.
FDB NEXT,L1880
L1890 FCB IMEDD+4,"NEXT"
NEXT jsr DOLST
FDB COMPI,DONXT,COMMA,EXIT
; UNTIL ( a -- )
; Terminate a BEGIN-UNTIL indefinite loop structure.
FDB UNTIL,L1890
L1900 FCB IMEDD+5,"UNTIL"
UNTIL jsr DOLST
FDB COMPI,QBRAN,COMMA,EXIT
; AGAIN ( a -- )
; Terminate a BEGIN-AGAIN infinite loop structure.
FDB AGAIN,L1900
L1910 FCB IMEDD+5,"AGAIN"
AGAIN jsr DOLST
FDB COMPI,BRAN,COMMA,EXIT
; IF ( -- A )
; Begin a conditional branch structure.
FDB IFF,L1910
L1920 FCB IMEDD+2,"IF"
IFF jsr DOLST
FDB COMPI,QBRAN,HERE
FDB ZERO,COMMA,EXIT
; AHEAD ( -- A )
; Compile a forward branch instruction.
FDB AHEAD,L1920
L1930 FCB IMEDD+5,"AHEAD"
AHEAD jsr DOLST
FDB COMPI,BRAN,HERE,ZERO,COMMA,EXIT
; REPEAT ( A a -- )
; Terminate a BEGIN-WHILE-REPEAT indefinite loop.
FDB REPEA,L1930
L1940 FCB IMEDD+6,"REPEAT"
REPEA jsr DOLST
FDB AGAIN,HERE,SWAP,STORE,EXIT
; THEN ( A -- )
; Terminate a conditional branch structure.
FDB THENN,L1940
L1950 FCB IMEDD+4,"THEN"
THENN jsr DOLST
FDB HERE,SWAP,STORE,EXIT
; AFT ( a -- a A )
; Jump to THEN in a FOR-AFT-THEN-NEXT loop the first time through.
FDB AFT,L1950
L1960 FCB IMEDD+3,"AFT"
AFT jsr DOLST
FDB DROP,AHEAD,BEGIN,SWAP,EXIT
; ELSE ( A -- A )
; Start the false clause in an IF-ELSE-THEN structure.
FDB ELSEE,L1960
L1970 FCB IMEDD+4,"ELSE"
ELSEE jsr DOLST
FDB AHEAD,SWAP,THENN,EXIT
; WHILE ( a -- A a )
; Conditional branch out of a BEGIN-WHILE-REPEAT loop.
FDB WHILE,L1970
L1980 FCB IMEDD+5,"WHILE"
WHILE jsr DOLST
FDB IFF,SWAP,EXIT
; ABORT" ( -- ; <string> )
; Conditional abort with an error message.
FDB ABRTQ,L1980
L1990 FCB IMEDD+6,"ABORT",'"'
ABRTQ jsr DOLST
FDB COMPI,ABORQ,STRCQ,EXIT
; $" ( -- ; <string> )
; Compile an inline string literal.
FDB STRQ,L1990
L2000 FCB IMEDD+2,"$",$22
STRQ jsr DOLST
FDB COMPI,STRQP,STRCQ,EXIT
; ." ( -- ; <string> )
; Compile an inline string literal to be typed out at run time.
FDB DOTQ,L2000
L2010 FCB IMEDD+2,".",$22
DOTQ jsr DOLST
FDB COMPI,DOTQP,STRCQ,EXIT
;; Name compiler
; ?UNIQUE ( a -- a )
; Display a warning message if the word already exists.
FDB UNIQU,L2010
L2020 FCB 7,"?UNIQUE"
UNIQU jsr DOLST
FDB DUPP,NAMEQ ;?name exists
FDB QBRAN,UNIQ1
FDB DOTQP ;redefinitions are OK
FCB 7," reDef " ;but the user should be warned
FDB OVER,COUNT,TYPES ;just in case its not planned
UNIQ1 FDB DROP,EXIT
; $,n ( na -- )
; Build a new dictionary name using the string at na.
FDB SNAME,L2020
L2030 FCB 3,"$,n"
SNAME jsr DOLST
FDB DUPP,CAT ;?null input
FDB QBRAN,PNAM1
FDB UNIQU ;?redefinition
FDB DUPP,LAST,STORE ;save na for vocabulary link
FDB HERE,ALGND,SWAP ;align code address
FDB CELLM ;link address
FDB CRRNT,AT,AT,OVER,STORE
FDB CELLM,DUPP,NP,STORE ;adjust name pointer
FDB STORE,EXIT ;save code pointer
PNAM1 FDB STRQP
FCB 5," name" ;null input
FDB THROW
;; FORTH compiler
; $COMPILE ( a -- )
; Compile next word to code dictionary as a token or literal.
FDB SCOMP,L2030
L2040 FCB 8,"$COMPILE"
SCOMP jsr DOLST
FDB NAMEQ,QDUP ;?defined
FDB QBRAN,SCOM2
FDB AT,DOLIT,IMEDD*256,ANDD ;?immediate
FDB QBRAN,SCOM1
FDB EXECU,EXIT ;its immediate, execute
SCOM1 FDB COMMA,EXIT ;its not immediate, compile
SCOM2 FDB TNUMB,ATEXE ;try to convert to number
FDB QBRAN,SCOM3
FDB LITER,EXIT ;compile number as integer
SCOM3 FDB THROW ;error
; OVERT ( -- )
; Link a new word into the current vocabulary.
FDB OVERT,L2040
L2050 FCB 5,"OVERT"
OVERT jsr DOLST
FDB LAST,AT,CRRNT,AT,STORE,EXIT
; ; ( -- )
; Terminate a colon definition.
FDB SEMIS,L2050
L2060 FCB IMEDD+COMPO+1,";"
SEMIS jsr DOLST
FDB COMPI,EXIT,LBRAC,OVERT,EXIT
; ] ( -- )
; Start compiling the words in the input stream.
FDB RBRAC,L2060
L2070 FCB 1,"]"
RBRAC jsr DOLST
FDB DOLIT,SCOMP,TEVAL,STORE,EXIT
; call, ( ca -- )
; Assemble a call instruction to ca.
FDB CALLC,L2070
L2080 FCB 5,"call,"
CALLC jsr DOLST
FDB DOCLIT
FCB CALLL
FDB HERE,CSTOR ;Direct Threaded Code
FDB ONE,ALLOT
FDB COMMA,EXIT ;DTC 6809 extended addr jsr
; : ( -- ; <string> )
; Start a new colon definition using next word as its name.
FDB COLON,L2080
L2090 FCB 1,":"
COLON jsr DOLST
FDB TOKEN,SNAME,DOLIT,DOLST
FDB CALLC,RBRAC,EXIT
; IMMEDIATE ( -- )
; Make the last compiled word an immediate word.
FDB IMMED,L2090
L2100 FCB 9,"IMMEDIATE"
IMMED jsr DOLST
FDB DOLIT,IMEDD*256,LAST,AT,AT,ORR
FDB LAST,AT,STORE,EXIT
;; Defining words
; USER ( u -- ; <string> )
; Compile a new user variable.
FDB USER,L2100
L2110 FCB 4,"USER"
USER jsr DOLST
FDB TOKEN,SNAME,OVERT
;;;; FDB DOLIT,DOLST,CALLC
;;;; FDB DOLIT,DOUSE,COMMA
; fast implementation ....
FDB DOLIT,FDOUSE,CALLC
FDB COMMA,EXIT
; CREATE ( -- ; <string> )
; Compile a new array entry without allocating code space.
FDB CREAT,L2110
L2120 FCB 6,"CREATE"
CREAT jsr DOLST
FDB TOKEN,SNAME,OVERT
;;;; FDB DOLIT,DOLST,CALLC
;;;; FDB DOLIT,DOVAR,COMMA,EXIT
; fast implementation ....
FDB DOLIT,FDOVAR,CALLC,EXIT
; VARIABLE ( -- ; <string> )
; Compile a new variable initialized to 0.
FDB VARIA,L2120
L2130 FCB 8,"VARIABLE"
VARIA jsr DOLST
FDB CREAT,ZERO,COMMA,EXIT
; CONSTANT ( w -- ; <string> )
; Compile a new constant with value w.
FDB CONST,L2130
L2135 FCB 8,"CONSTANT"
CONST jsr DOLST
FDB TOKEN,SNAME,OVERT
FDB DOLIT,DOCONST,CALLC
FDB COMMA,EXIT
;; Tools
; _TYPE ( b u -- )
; Display a string. Filter non-printing characters.
FDB UTYPE,L2135
L2140 FCB 5,"_TYPE"
UTYPE jsr DOLST
FDB TOR ;start count down loop
FDB BRAN,UTYP2 ;skip first pass
UTYP1 FDB DUPP,CAT,TCHAR,EMIT ;display only printable
FDB PLUS1 ;increment address
UTYP2 FDB DONXT,UTYP1 ;loop till done
FDB DROP,EXIT
; dm+ ( a u -- a )
; Dump u bytes from , leaving a+u on the stack.
FDB DUMPP,L2140
L2150 FCB 3,"dm+"
DUMPP jsr DOLST
FDB OVER,DOLIT,4,UDOTR ;display address
FDB SPACE,TOR ;start count down loop
FDB BRAN,PDUM2 ;skip first pass
PDUM1 FDB DUPP,CAT,DOLIT,3,UDOTR ;display numeric data
FDB PLUS1 ;increment address
PDUM2 FDB DONXT,PDUM1 ;loop till done
FDB EXIT
; DUMP ( a u -- )
; Dump u bytes from a, in a formatted manner.
FDB DUMP,L2150
L2160 FCB 4,"DUMP"
DUMP jsr DOLST
FDB BASE,AT,TOR,HEX ;save radix, set hex
FDB DOCLIT
FCB 16
FDB SLASH ;change count to lines
FDB TOR ;start count down loop
DUMP1 FDB CR,DOCLIT
FCB 16
FDB DDUP,DUMPP ;display numeric
FDB ROT,ROT
FDB TWO,SPACS,UTYPE ;display printable characters
FDB NUFQ,INVER ;user control
FDB QBRAN,DUMP2
FDB DONXT,DUMP1 ;loop till done
FDB BRAN,DUMP3
DUMP2 FDB RFROM,DROP ;cleanup loop stack, early exit
DUMP3 FDB DROP,RFROM,BASE,STORE ;restore radix
FDB EXIT
; .S ( ... -- ... )
; Display the contents of the data stack.
FDB DOTS,L2160
L2170 FCB 2,".S"
DOTS jsr DOLST
FDB CR,DEPTH ;stack depth
FDB TOR ;start count down loop
FDB BRAN,DOTS2 ;skip first pass
DOTS1 FDB RAT,PICK,DOT ;index stack, display contents
DOTS2 FDB DONXT,DOTS1 ;loop till done
FDB DOTQP
FCB 4," <sp"
FDB EXIT
; !CSP ( -- )
; Save stack pointer in CSP for error checking.
FDB STCSP,L2170
L2180 FCB 4,"!CSP"
STCSP jsr DOLST
FDB SPAT,CSP,STORE,EXIT ;save pointer
; ?CSP ( -- )
; Abort if stack pointer differs from that saved in CSP.
FDB QCSP,L2180
L2190 FCB 4,"?CSP"
QCSP jsr DOLST
FDB SPAT,CSP,AT,XORR ;compare pointers
FDB ABORQ ;abort if different
FCB 6,"stacks"
FDB EXIT
; >NAME ( ca -- na | F )
; Convert code address to a name address.
FDB TNAME,L2190
L2200 FCB 5,">NAME"
TNAME jsr DOLST
FDB CRRNT ;vocabulary link
TNAM1 FDB CELLP,AT,QDUP ;check all vocabularies
FDB QBRAN,TNAM4
FDB DDUP
TNAM2 FDB AT,DUPP ;?last word in a vocabulary
FDB QBRAN,TNAM3
FDB DDUP,NAMET,XORR ;compare
FDB QBRAN,TNAM3
FDB CELLM ;continue with next word
FDB BRAN,TNAM2
TNAM3 FDB SWAP,DROP,QDUP
FDB QBRAN,TNAM1
FDB SWAP,DROP,SWAP,DROP,EXIT
TNAM4 FDB DROP,DOLIT,0,EXIT
; .ID ( na -- )
; Display the name at address.
FDB DOTID,L2200
L2210 FCB 3,".ID"
DOTID jsr DOLST
FDB QDUP ;if zero no name
FDB QBRAN,DOTI1
FDB COUNT,DOCLIT
FCB $1F
FDB ANDD ;mask lexicon bits
FDB UTYPE,EXIT ;display name string
DOTI1 FDB DOTQP
FCB 9," {noName}"
FDB EXIT
; SEE ( -- ; <string> )
; A simple decompiler.
FDB SEE,L2210
L2220 FCB 3,"SEE"
SEE jsr DOLST
FDB TICK ;starting address
FDB PLUS1 ;skip JSR
;primitive check ...
FDB BASE,AT,TOR,HEX ;switch to hex base
FDB DUPP,AT,DOLIT,DOLST,XORR
;high level word?
FDB QBRAN,SEE1 ;yes!
FDB CR,DOTQP ;primitive word only
FCB 9, " PRIMITVE"
FDB BRAN,SEE5 ;exit
SEE1 FDB CR,CELLP,DUPP,UDOT,SPACE
FDB DUPP,AT,DUPP ;?does it contain a zero
FDB QBRAN,SEE2
FDB TNAME ;?is it a name
SEE2 FDB QDUP ;name address or zero
FDB QBRAN,SEE3
FDB SPACE,DOTID ;display name
FDB DUPP,AT
FDB DUPP,DOLIT,DOCLIT,EQUAL ; doCLIT?
FDB QBRAN,SEE21
FDB OVER,CELLP,CAT,SPACE,UDOT ; CLIT: get only single byte
FDB SWAP,PLUS1,SWAP
FDB BRAN,SEE28
SEE21 FDB DUPP,DOLIT,DOLIT,EQUAL ; doCLIT?
FDB OVER,DOLIT,QBRAN,EQUAL,ORR ; ?BRAN ?
FDB OVER,DOLIT,BRAN,EQUAL,ORR; BRANCH ?
FDB OVER,DOLIT,DONXT,EQUAL,ORR; next ? (from FOR/NEXT)
FDB OVER,DOLIT,DOLOOP,EQUAL,ORR; (LOOP) ?
FDB OVER,DOLIT,DOPLOOP,EQUAL,ORR; (+LOOP) ?
FDB OVER,DOLIT,DODO,EQUAL,ORR; (DO) ?
FDB OVER,DOLIT,DOQDO,EQUAL,ORR; (?DO) ?
FDB OVER,DOLIT,DOMDO,EQUAL,ORR; (-DO) ?
FDB QBRAN,SEE27
FDB SWAP,CELLP,DUPP,AT,SPACE,UDOT,SWAP ; LIT: get word
FDB BRAN,SEE28
SEE27:
FDB DUPP,DOLIT,DOTQP,EQUAL ; ." ..."
FDB OVER,DOLIT,ABORQ,EQUAL,ORR ; ABORT" ..."
FDB OVER,DOLIT,STRQP,EQUAL,ORR ; $" ..."
FDB QBRAN,SEE29 ; last case aalway to SEE29!!
FDB SWAP,CELLP ; print compiled string
FDB DUPP,COUNT,TYPES,DOCLIT
FCB 34
FDB EMIT
FDB COUNT,PLUS,CELLM,SWAP ; adjust continuation address
SEE28 FDB DROP ; LEAVL, without EXIT check
FDB BRAN,SEE4
SEE29 FDB DROP ; ELSE
FDB BRAN,SEE31 ; cleanup, check for EXIT
SEE3 FDB DUPP,AT,UDOT ;display number
FDB BRAN,SEE4
SEE31 FDB DUPP,AT,DOLIT,EXIT,XORR ; stop on EXIT word
; but not if SEE decompiles itself!
FDB QBRAN,SEE5
SEE4 FDB NUFQ ;user control
FDB QBRAN,SEE1
SEE5 FDB RFROM,BASE,STORE,DROP,EXIT
; WORDS ( -- )
; Display the names in the context vocabulary.
FDB WORDS,L2220
L2230 FCB 5,"WORDS"
WORDS jsr DOLST
FDB CR,CNTXT,AT ;only in context
WORS1 FDB AT,QDUP ;?at end of list
FDB QBRAN,WORS2
FDB DUPP,SPACE,DOTID ;display a name
FDB CELLM,NUFQ ;user control
FDB QBRAN,WORS1
FDB DROP
WORS2 FDB EXIT
;; Hardware reset
; VER ( -- n )
; Return the version number of this implementation.
FDB VERSN,L2230
L2240 FCB 3,"VER"
VERSN jsr DOLST
FDB DOLIT,VER*256+EXT,EXIT
; hi ( -- )
; Display the sign-on message of eForth.
FDB HI,L2240
L2250 FCB 2,"hi"
HI jsr DOLST
FDB STOIO,CR,DOTQP ;initialize I/O
FCB 11,"eForth v" ;model
FCB VER+"0",".",EXT+"0" ;version
FDB CR,EXIT
; 'BOOT ( -- a )
; The application startup vector.
FDB TBOOT,L2250
L2260 FCB 5,"'BOOT"
TBOOT:
;;;; jsr DOLST
;;;; FDB DOVAR
jsr FDOVAR
FDB HI ;application to boot
; COLD ( -- )
; The hilevel cold start sequence.
FDB COLD,L2260
L2270 FCB 4,"COLD"
COLD jsr DOLST
COLD1 FDB DOLIT,UZERO,DOLIT,UPP
FDB DOLIT,ULAST-UZERO,CMOVE ;initialize user area
FDB PRESE ;initialize data stack and TIB
FDB TBOOT,ATEXE ;application boot
FDB FORTH,CNTXT,AT,DUPP ;initialize search order
FDB CRRNT,DSTOR,OVERT
; TEST
; FDB DOLIT,10,DOLIT,1
; FDB DODO
;
FDB QUIT ;start interpretation
FDB BRAN,COLD1 ;just in case
;===============================================================
LASTN EQU L2270 ;last name address in name dictionary
NTOP EQU NAMEE ;next available memory in name dictionary
CTOP EQU $ ;next available memory in code dictionary
; END ORIG
;===============================================================
{"124":true,"185":true}
:10FFF00001000100010001000100010001000100F9
:0D01000010CE6E60108E6F70CE1D513780D6
:100115006E606F7001AB01CA1290124D01CA13F2E5
:10012500000A00000000000000006E70000013A42B
:080135000D8000000000000035
:0A014D00000000001D796C001D4940
:100180003406F683FEC402B783FF350639B683FE14
:1001900084012703B683FF3901A0000003425945BB
:1001A0007EE00001AB019C033F52588E0000BD0170
:1001B0008D2704AFE337801F894FEDE3301FAFE396
:1001C000378001CA01A703545821ECE1C1FF260280
:1001D000C6201F98BD0180378001E101C603214977
:1001E0004F378001ED01DD45646F4C4954370634CB
:1001F00006378001FE01E746646F434C49543704DB
:100200001D34063780021001F746646F4C49535481
:10021000EFA335403780021F0209446E657874EC05
:10022000A48300012506EDA4EEC4378031223342B9
:100230003780023E021A473F6272616E6368ECE1EA
:10024000270433423780EEC43780025502364662B7
:1002500072616E6368EEC437800265024E074558CE
:10026000454355544539026F025D0445584954EEE3
:10027000A137800279026A012135103506ED8437F5
:1002800080028702770140ECF4EDE43780029402AB
:100290008502432135103506E784378002A3029199
:1002A000024340E6F44FEDE4378002B202A003526D
:1002B00050403420378002BE02AE03525021352018
:1002C000378002C902BA02523EECA13406378002DE
:1002D000DC02C6014902DC02D3025240ECA434061F
:1002E000378002E902D9023E523506EDA33780027B
:1002F000F702E6035350401F40EDE3378003050249
:10030000F30353502110EEE4378003130301044438
:10031000524F5032623780031F030E03445550EC96
:10032000E434063780032E031B0453574150ECE49A
:10033000AE62ED62AFE4378003410329044F5645B6
:1003400052EC6234063780034E033C02303CE6E454
:100350001D1F89EDE43780035E034B02303D8EFFA5
:10036000FFECE427038E0000AFE437800374035BE7
:1003700003414E44ECE1A4E4E461EDE437800385FD
:100380000370024F52ECE1AAE4EA61EDE437800326
:1003900097038203584F52ECE1A8E4E861EDE4379B
:1003A0008003A8039302442BEC62E366ED66ECE461
:1003B000E965A964ED643264378003C103A5024492
:1003C0002DBD0210071703A8026F03D203BE035509
:1003D0004D2BECE4E362ED62CC0000C900EDE437A4
:1003E0008003ED03CE47646F434F4E5354ECF4ED5E
:1003F000E4378003F903E50130BD03ED0000040498
:1004000003F70131BD03ED0001040F04020132BD09
:1004100003ED0002041B040D022D31BD03EDFFFFAF
:10042000042A041845646F564152BD021002C902E5
:100430006F3780043A0424025550BD04316F8004A4
:100440004A043745646F55534552BD021002C90234
:1004500087043A028706CD026FECF4F3043DEDE425
:100460003780046A044303535030BD045900080424
:1004700077046603525030BD0459000A04860473A1
:1004800005273F4B4559BD0459000C0495048005D0
:1004900027454D4954BD0459000E04A6048F072773
:1004A000455850454354BD0459001004B4049E04FB
:1004B00027544150BD0459001204C304AF05274519
:1004C00043484FBD0459001404D404BD07275052BB
:1004D0004F4D5054BD0459001604E204CC0442416F
:1004E0005345BD0459001804EF04DD43746D70BD1D
:1004F0000459001A04FD04EB045350414EBD045945
:10050000001C050A04F8033E494EBD0459001E05AF
:100510001805060423544942BD0459002005250549
:100520001303435350BD0459002405340521052706
:100530004556414CBD045900260545052E07274E5A
:10054000554D424552BD045900280552053D03480A
:100550004C44BD0459002A0563054E0748414E44EA
:100560004C4552BD0459002C0574055B07434F4EA2
:1005700054455854BD0459002E0585056C07435554
:100580005252454E54BD045900400591057D024329
:1005900050BD04590044059D058E024E50BD0459BE
:1005A000004605AB059A044C415354BD045900481C
:1005B00005BA05A645646F564F43BD021002C90532
:1005C000740279026F05CF05B405464F525448BDF9
:1005D000021005BA0000000005E105C9043F4455BA
:1005E00050BD0210031F023E05EC031F026F05F60B
:1005F00005DC03524F54BD021002E9032E02C90369
:100600002E026F060D05F2053244524F50BD021006
:1006100003130313026F061F06070432445550BD2F
:10062000021003410341026F0633061A064C534879
:10063000494654AEE1270AECE45849301F26FAED4A
:10064000E43780064E062C06525348494654AEE124
:10065000270AECE44456301F26FAEDE4378006659D
:100660000647023E3CE6E4A661EDE43780067606E6
:1006700062043235362FE6E44FEDE4378006860615
:1006800071043235362AA6615FEDE43780069406A0
:100690008102312BECE4C30001EDE4378006A406AF
:1006A0009102312DECE4830001EDE4378006B406BD
:1006B000A102322A68616960378006C106B1023240
:1006C0002F67606661378006CD06BE012BECE1E343
:1006D000E4EDE4378006DD06CB034E4F5463E4635C
:1006E000613780ECE44353EDE4378006F606D90623
:1006F0004E4547415445CC0000A3E4EDE43780600B
:1007000061260460E4378063E43780071706EF074B
:10071000444E4547415445CC0000A362ED62CC00F5
:1007200000E261A2E4EDE43780072F070F012DEC12
:1007300062A3E1EDE43780073F072D03414253BD3B
:100740000210031F034E023E074C06F6026F0754C9
:10075000073B013D8EFFFF350610A3E427038E0003
:1007600000AFE43780076C075202553C8EFFFF351F
:100770000610A3E422038E0000AFE437800783074E
:1007800069013C8EFFFF350610A3E42E038E0000A6
:10079000AFE43780079C0781034D4158BD02100626
:1007A0001F0783023E07A9032E0313026F07B50735
:1007B00098034D494EBD0210061F032E0783023ECB
:1007C00007C4032E0313026F07D307B1065749541A
:1007D00048494EBD02100341072F02E9072F02C905
:1007E000076C026F07EB07CC02552F8E0010EC62EE
:1007F00010A3E42424686569645949250910A3E419
:1008000024041CFE2004A3E41A0169656964301FF6
:1008100026E7AE6410A3E42505ECE48EFFFF326208
:10082000AFE4ED623780083107E806554D2F4D4F94
:10083000447E07EBBD0210061F076C023E088706C8
:10084000F601ED000F02E902E9031F03D202E902FB
:10085000E9031F03D202C906CD031F02C902DC034C
:100860002E02E903D202C90385023E087902E90398
:1008700013069402C90255087B031302C9021F081C
:10088000470313032E026F0313060D01EDFFFF0351
:100890001F026F089D082A054D2F4D4F44BD0210C1
:1008A000031F034E031F02E9023E08B406F602E9E5
:1008B000071702C902E9031F034E023E08C202DC09
:1008C00006CD02C9083102C9023E08D2032E06F63F
:1008D000032E026F08DD0897042F4D4F44BD021010
:1008E0000341034E032E089D026F08F208D8034D02
:1008F0004F44BD021008DD0313026F090108EE0129
:100900002FBD021008DD032E0313026F091408FF28
:1009100003554D2A8E00114F5F20062402E3E44662
:100920005666626663301F26F2EDE43780093609A9
:1009300010045F554D2ABD021001ED0000032E0189
:10094000ED000F02E9031F03D202E902E9031F03CE
:10095000D202C906CD02C9023E096502E90341037C
:10096000D202C906CD021F094505F60313026F091D
:10097000750931012ABD021009850313026F09852B
:100980000973024D2ABD0210061F0397034E02E9A8
:10099000073F032E073F091402C9023E09A00717AB
:1009A000026F09AC0982052A2F4D4F44BD02100287
:1009B000E9098502C9089D026F09C009A6022A2F0C
:1009C000BD021009AC032E0313026F09D509BD0542
:1009D00043454C4C2BBD021001FE0206CD026F09AF
:1009E000E909CF0543454C4C2DBD021001FEFE0622
:1009F000CD026F09FD09E30543454C4C53BD021080
:100A000001FE020975026F0A1309F707414C4947B5
:100A10004E4544BD0210026F0A1F0A0B02424CBD34
:100A200003ED0A2C0A1C053E43484152BD02100149
:100A3000ED007F0374031F01FE7F0A1F07D3023EF0
:100A40000A46031301ED026F0A520A260544455077
:100A50005448BD021002F7046A0287032E072F01D3
:100A6000FE020901026F0A6F0A4C045049434BEC25
:100A7000E4C300015849AEEBAFE437800A850A6A47
:100A800004524F4C4CBD0210031F040F0783023E5B
:100A90000A98031302550AA6032E02E90404072F3D
:100AA0000A8502C9032E026F0AAF0A80022B213584
:100AB000103506E384ED8437800AC00AAC02322187
:100AC000BD0210032E0341027909D50279026F0A93
:100AD000D60ABD023240BD0210031F09D5028703AA
:100AE0002E0287026F0AEF0AD305434F554E54BDBD
:100AF0000210031F0694032E02A3026F0B050AE9DE
:100B00000448455245BD021005910287026F0B163D
:100B10000B0003504144BD02100B0501ED005006CF
:100B2000CD026F0B2B0B1203544942BD0210051866
:100B300009D50287026F0B430B27084045584543F0
:100B4000555445BD0210028705E1023E0B50026577
:100B5000026F0B5C0B3A05434D4F56457E0B7FEC05
:100B6000E427185D27026CE4AE62EF62EE64A6C073
:100B7000A7805A26F96AE426F5EE6232663780ECE1
:100B8000E4AE6210AFE4EF6210AE64445634012765
:100B9000014C830000270AEEA1EF815A26F94A266C
:100BA000F635012404A6A4A7843560326237800B91
:100BB000B80B560446494C4CEC6227125D27026C78
:100BC00062AE64A661A7805A26FB6A6226F7326687
:100BD00037800BE00BB3092D545241494C494E4725
:100BE000BD021002E902550BFF0A1F034102DC0699
:100BF000CD02A30783023E0BFF02C90694026F02D7
:100C00001F0BE903F9026F0C110BD6055041434B42
:100C100024BD0210031F02E9061F02940694061F5A
:100C200006CD03F9032E0294032E0B5C02C9026F5A
:100C30000C3A0C0B054449474954BD021001FE090A
:100C40000341078301FE07037406CD01ED06CD02C3
:100C50006F0C5D0C340745585452414354BD02108B
:100C600003F9032E0831032E0C3A026F0C730C5556
:100C7000023C23BD02100B1605520279026F0C874D
:100C80000C7004484F4C44BD02100552028706A464
:100C9000031F055202790294026F0CA00C820123FB
:100CA000BD021004E202870C5D0C87026F0CB40CCD
:100CB0009E022353BD02100CA0031F023E0CC30270
:100CC000550CB7026F0CCE0CB1045349474EBD0210
:100CD00010034E023E0CDB01ED0C87026F0CE40C9E
:100CE000C902233EBD02100313055202870B1603EF
:100CF00041072F026F0CFD0CE103737472BD0210EB
:100D0000031F02E9073F0C730CB402C90CCE0CE4BC
:100D1000026F0D1A0CF903484558BD021001FE1070
:100D200004E20279026F0D320D1607444543494D26
:100D3000414CBD021001FE0A04E20279026F0D4926
:100D40000D2A0644494749543FBD021002E901ED0E
:100D5000072F01FE0903410783023E0D6C01FE07C8
:100D6000072F031F01ED000A07830385031F02C934
:100D7000076C026F0D800D42074E554D4245523FA4
:100D8000BD021004E2028702E903F903410AEF03FE
:100D90004102A301ED0754023E0DA50D1A032E06D4
:100DA00094032E06A4034102A301ED075402E903B4
:100DB0002E02DC072F032E02DC06CD05E1023E0EDB
:100DC0000506A402E9031F02E902A304E202870D5B
:100DD00049023E0DF9032E04E20287097506CD0291
:100DE000C90694021F0DC502DC032E0313023E0D3B
:100DF000F306F6032E02550E0302C902C9060D06BC
:100E00000D03F9031F02C9060D02C904E2027902AB
:100E10006F0E1A0D78043F4B4559BD021004860B26
:100E200043026F0E2B0E15034B4559BD02100E1ACF
:100E3000023E0E2E026F0E3F0E2704454D4954BD53
:100E4000021004950B43026F0E510E3A044E5546A4
:100E50003FBD02100E1A031F023E0E65060D0E2B3B
:100E600001FE0D0754026F0E700E4C0450414345B5
:100E7000BD021001FE0B0E3F026F0E840E6B055378
:100E800050414345BD02100A1F0E3F026F0E980EDF
:100E90007E06535041434553BD021003F9079C029F
:100EA000E902550EA70E84021F0EA5026F0EB60EA4
:100EB000910454595045BD021002E902550EC70372
:100EC0001F02A30E3F0694021F0EBF0313026F0EF4
:100ED000D60EB1024352BD021001FE0D0E3F01FEBF
:100EE0000A0E3F026F0EED0ED343646F24BD021055
:100EF00002C902DC02C90AEF06CD0A1302E9032E79
:100F000002E9026F0F090EE943BD02100EED026FF8
:100F10000F150F0843BD02100EED0AEF0EB6026F5B
:100F20000F270F14022E52BD021002E90CFD02C958
:100F30000341072F0E980EB6026F0F420F24035580
:100F40002E52BD021002E90C730CB40CE402C9036A
:100F500041072F0E980EB6026F0F600F3E02552EFE
:100F6000BD02100C730CB40CE40E840EB6026F0FAD
:100F7000750F5D012EBD021004E2028701FE0A0317
:100F800097023E0F890F60026F0CFD0E840EB602B1
:100F90006F0F970F73013FBD021002870F75026F2D
:100FA0000FAA0F95057061727365BD021004EF0200
:100FB00079034102E9031F023E103306A404EF0245
:100FC000870A1F0754023E0FED02E90A1F03410280
:100FD000A3072F034E06DD023E0FEB0694021F0F00
:100FE000CB02C9031303F9031F026F02C9034103B4
:100FF0002E02E904EF0287034102A3072F04EF0248
:10100000870A1F0754023E100B034E023E101D06B6
:1010100094021F0FF3031F02E90255102702C903B0
:1010200013031F069402E90341072F02C902C907EF
:101030002F026F034102C9072F026F10450FA4054D
:101040005041525345BD021002E90B2B050A02879D
:1010500006CD05180287050A0287072F02C90FAAC5
:10106000050A0AAF026F106D103F822E28BD0210D4
:1010700001ED10450EB6026F107E106A8128BD0288
:101080001001ED1045060D026F108F107C815CBDC4
:10109000021005180287050A0279026F10A5108D4B
:1010A0000443484152BD02100A1F1045031302A316
:1010B000026F10BC10A005544F4B454EBD02100AE4
:1010C0001F104501FE1F07B5059D02870341072F2D
:1010D00009E90C11026F10DF10B604574F5244BDDE
:1010E000021010450B050C11026F10F410DA054EBA
:1010F000414D453EBD021009E909E90287026F1121
:101100000910EE0553414D453FBD021002E902555D
:101110001130034102DC06CD02A3034102DC06CDFF
:1011200002A3072F05E1023E113002C90313026F2B
:10113000021F111201ED0000026F1143110304663A
:10114000696E64BD0210032E031F02A306A404EF00
:101150000279031F028702E909D5032E0287031FC4
:10116000023E118A031F028701ED1F7F037402DC18
:101170000397023E117E09D5041B0255118609D53D
:1011800004EF028711090255119602C90313032EB9
:1011900009E9032E026F023E11A209E909E902558D
:1011A000115C02C90313032E031309E9031F10F492
:1011B000032E026F11BE113E054E414D453FBD024B
:1011C000100574031F0AD60397023E11CF09E902E6
:1011D000E902C909D5031F02E9028705E1023E11B0
:1011E000EF114305E1023E11D102C90313026F0260
:1011F000C9031303F9026F11FE11B8025E48BD0264
:101200001002E9034102C9032E03410397023E1273
:101210002901ED000804C30B4306A40A1F04C30BF5
:101220004301ED000804C30B43026F123311FB03AB
:10123000544150BD0210031F04C30B4303410294E9
:101240000694026F124D122F046B544150BD0210D0
:10125000031F01FE0D0397023E127B031F01ED00E9
:10126000080397032E01ED007F03970374023E12DB
:10127000770A1F1233026F11FE026F0313032E034E
:1012800013031F026F129012480641434345505406
:10129000BD0210034106CD0341061F0397023E1213
:1012A000BF0E2B031F0A1F01ED007F07D3023E1262
:1012B000B71233025512BB04B40B43025512990303
:1012C000130341072F026F12D21289064558504569
:1012D0004354BD021004A60B4304FD02790313021C
:1012E0006F12EB12CB055155455259BD02100B2B15
:1012F00001FE5004A60B4305180279031303F905F8
:101300000A0279026F130F12E5054341544348BDA9
:10131000021002F702E90563028702E902B20563DF
:101320000279026502C90563027902C9031303F950
:10133000026F133C1309055448524F57BD02100564
:1013400063028702BE02C90563027902C9032E0245
:10135000E90305031302C9026F13631336054E55E3
:101360004C4C24BD04310000636F796F74651378B1
:10137000135D0541424F5254BD02101363133C13D9
:1013800084137246BD0210023E138F0EED133C0E05
:10139000ED0313026F13A413830A24494E544552DC
:1013A00050524554BD021011BE05E1023E13CB025E
:1013B0008701ED4000037413840D20636F6D706925
:1013C0006C65206F6E6C790265026F05450B4302F8
:1013D0003E13D5026F133C13DD1399815BBD0210E0
:1013E00001ED13A405340279026F13F213DB032E0F
:1013F0004F4BBD021001ED13A405340287075402C0
:101400003E14090F1503206F6B0ED6026F141813CC
:10141000EE063F535441434BBD02100A52034E1394
:10142000840A20756E646572666C6F77026F14377C
:101430001411044556414CBD021010BC031F02A3F9
:10144000023E144E05340B4314180255143A03138C
:1014500004D40B43026F14611432065052455345B5
:1014600054BD0210046A0287030501ED6E70051871
:1014700009D50279026F147E145A4378696FBD0250
:101480001001ED129004A60AC004C30AC0026F1432
:1014900098147A0446494C45BD021001ED0E7001C6
:1014A000ED031301ED124D147E026F14B414930476
:1014B00048414E44BD021001ED13F201ED0E3F0113
:1014C000ED124D147E026F14CF14AF03492F4FBDA0
:1014D000043101AB01CA14E214CB07434F4E534F02
:1014E0004C45BD021014CF0AD604860AC014B402BB
:1014F0006F14FA14DA0451554954BD0210047702EE
:101500008702BE13DD12EB01ED1437130F05E10264
:101510003E150504D4028702E914E2136303410374
:1015200097023E15310E840AEF0EB60F1503203FC9
:101530002002C901ED13F20397023E154301ED00AD
:101540001B0E3F146102551503154F14F50127BDFD
:10155000021010BC11BE023E155C026F133C1568F0
:10156000154D05414C4C4F54BD021005910AAF0278
:101570006F15771562012CBD02100B05031F09D5ED
:10158000059102790279026F15961575895B434FB3
:101590004D50494C455DBD0210154F1577026F1532
:1015A000AB158C47434F4D50494C45BD021002C905
:1015B000031F0287157709D502E9026F15C815A325
:1015C000874C49544552414CBD021015AB01ED15F5
:1015D00077026F15D815C003BD021001ED10DF0AA8
:1015E000EF06CD0A1305910279026F15F715D7871B
:1015F00052454355525345BD021005AB028710F4C6
:101600001577026F160B15EF82444FBD021015AB14
:1016100016950B050404026F16201608833F444FED
:10162000BD021015AB163B0B0515AB0000040F02F5
:101630006F163B161C05283F444F29350610A3E4BE
:101640002D063262EEC437803510AFA3EDA33342CE
:101650003780165A1635832D444FBD021015AB1630
:10166000750B0515AB0000040F026F1675165605B5
:10167000282D444F29350610A3E42E063262EEC40D
:1016800037803510AFA3EDA3334237801695166F20
:101690000428444F293516AFA3EDA3378016A816AA
:1016A0009006284C4F4F5029CC0001201D16B9162A
:1016B000A187282B4C4F4F5029ECE12A0DE3A410B1
:1016C000A3222F13EDA4EEC43780E3A410A3222C91
:1016D00006EDA4EEC4378033423124378016E61677
:1016E000B1844C4F4F50BD021015AB16A8040F0724
:1016F00054023E16FF0B0509D50341027909D515A1
:1017000077026F170D16E1852B4C4F4F50BD02101D
:1017100015AB16B9040F0754023E17260B0509D561
:101720000341027909D51577026F17341707054C65
:1017300045415645ECA4ED223780174217078346F2
:101740004F52BD021015AB02E90B05026F17571778
:101750003E85424547494EBD02100B05026F176793
:101760001751844E455854BD021015AB021F157712
:10177000026F177C176285554E54494CBD021015F7
:10178000AB023E1577026F179117768541474149A5
:101790004EBD021015AB02551577026F17A3178BBC
:1017A000824946BD021015AB023E0B0503F91577C1
:1017B000026F17BC17A0854148454144BD02101572
:1017C000AB02550B0503F91577026F17D617B686CE
:1017D000524550454154BD021017910B05032E028E
:1017E00079026F17EC17CF845448454EBD02100B99
:1017F00005032E0279026F17FF17E783414654BD98
:101800000210031317BC1757032E026F181517FB8E
:1018100084454C5345BD021017BC032E17EC026FD4
:10182000182A1810855748494C45BD021017A303C4
:101830002E026F1838182486BD021015AB138415BC
:10184000D8026F184A1837822422BD021015AB0F38
:101850000915D8026F185C1847822E22BD02101598
:10186000AB0F1515D8026F18731859073F554E491D
:10187000515545BD0210031F11BE023E188E0F15B3
:10188000072072654465662003410AEF0EB6031314
:10189000026F189A186B03242C6EBD0210031F02EE
:1018A000A3023E18CB1873031F05AB02790B050A80
:1018B00013032E09E905850287028703410279098E
:1018C000E9031F059D02790279026F0F0905206E59
:1018D000616D65133C18E218960824434F4D50493A
:1018E0004C45BD021011BE05E1023E1901028701FF
:1018F000ED80000374023E18FD0265026F15770249
:101900006F05450B43023E190D15C8026F133C19B4
:101910001918D9054F56455254BD021005AB028720
:10192000058502870279026F192E1913C13BBD028A
:101930001015AB026F13DD1919026F1941192C0133
:101940005DBD021001ED18E205340279026F1958ED
:10195000193F0563616C6C2CBD021001FEBD0B05C7
:101960000294040415681577026F19701952013A30
:10197000BD021010BC189A01ED021019581941024D
:101980006F198F196E09494D4D454449415445BD64
:10199000021001ED800005AB02870287038505ABCD
:1019A00002870279026F19AF19850455534552BD5C
:1019B000021010BC189A191901ED0459195815771D
:1019C000026F19CD19AA06435245415445BD021074
:1019D00010BC189A191901ED04311958026F19EB4E
:1019E00019C6085641524941424C45BD021019CD15
:1019F00003F91577026F1A0319E208434F4E535447
:101A0000414E54BD021010BC189A191901ED03ED96
:101A100019581577026F1A2019FA055F5459504565
:101A2000BD021002E902551A33031F02A30A2C0E4D
:101A30003F0694021F1A290313026F1A431A1A034E
:101A4000646D2BBD0210034101ED00040F420E84B2
:101A500002E902551A62031F02A301ED00030F42BF
:101A60000694021F1A56026F1A711A3F0444554D0C
:101A700050BD021004E2028702E90D1A01FE1009AE
:101A80000102E90ED601FE10061F1A4305F605F6FF
:101A9000040F0E981A200E5106DD023E1AA6021FF0
:101AA0001A8302551AAA02C90313031302C904E2D6
:101AB0000279026F1ABB1A6C022E53BD02100ED6A9
:101AC0000A5202E902551ACE02DC0A6F0F75021F94
:101AD0001AC80F1504203C7370026F1AE41AB80478
:101AE00021435350BD021002F705250279026F1AF7
:101AF000F81ADF043F435350BD021002F7052502D8
:101B0000870397138406737461636B73026F1B18EA
:101B10001AF3053E4E414D45BD0210058509D5021B
:101B20008705E1023E1B55061F0287031F023E1B6D
:101B300041061F10F40397023E1B4109E902551BA1
:101B400029032E031305E1023E1B1D032E0313037D
:101B50002E0313026F031301ED0000026F1B651BC0
:101B600012032E4944BD021005E1023E1B790AEF23
:101B700001FE1F03741A20026F0F1509207B6E6F80
:101B80004E616D657D026F1B8F1B6103534545BD23
:101B90000210154F069404E2028702E90D1A031F92
:101BA000028701ED02100397023E1BBE0ED60F15F1
:101BB00009205052494D4954564502551CD10ED664
:101BC00009D5031F0F600E84031F0287031F023E07
:101BD0001BD41B1805E1023E1CB30E841B65031FBA
:101BE0000287031F01ED01FE0754023E1C02034160
:101BF00009D502A30E840F60032E0694032E02550E
:101C00001CA7031F01ED01ED0754034101ED023E46
:101C100007540385034101ED025507540385034131
:101C200001ED021F07540385034101ED16A8075477
:101C30000385034101ED16B907540385034101ED06
:101C4000169507540385034101ED163B07540385A0
:101C5000034101ED167507540385023E1C70032EE7
:101C600009D5031F02870E840F60032E02551CA79F
:101C7000031F01ED0F150754034101ED13840754B1
:101C80000385034101ED0F0907540385023E1CAD96
:101C9000032E09D5031F0AEF0EB601FE220E3F0ADE
:101CA000EF06CD09E9032E031302551CCB031302E3
:101CB000551CBD031F02870F6002551CCB031F027A
:101CC0008701ED026F0397023E1CD10E51023E1BAD
:101CD000BE02C904E202790313026F1CE51B8B05E7
:101CE000574F524453BD02100ED605740287028727
:101CF00005E1023E1D06031F0E841B6509E90E5116
:101D0000023E1CEE0313026F1D101CDF03564552EA
:101D1000BD021001ED0100026F1D201D0C0268695B
:101D2000BD021001E10ED60F150B65466F72746887
:101D300020760ED6026F1D401D1D0527424F4F54C1
:101D4000BD04311D201D4E1D3A04434F4C44BD02BD
:101D50001001ED010D01ED6F8001ED004A0B5C14E7
:101D6000611D400B4305CF05740287031F05850ADB
:091D7000C0191914FA02551D51A5
:00000001FF
0000 ;TITLE 6809 eForth
0000 ;.engine kilo
0000 ; $Id: ef09.asm,v 1.1 1997/11/24 02:56:01 root Exp $
0000 ;
0000 ;===============================================================
0000 ;
0000 ; eForth 1.0 by Bill Muench and C. H. Ting, 1990
0000 ; Much of the code is derived from the following sources:
0000 ; 8086 figForth by Thomas Newman, 1981 and Joe smith, 1983
0000 ; aFORTH by John Rible
0000 ; bFORTH by Bill Muench
0000 ;
0000 ; The goal of this implementation is to provide a simple eForth Model
0000 ; which can be ported easily to many 8, 16, 24 and 32 bit CPU's.
0000 ; The following attributes make it suitable for CPU's of the '90:
0000 ;
0000 ; small machine dependent kernel and portable high level code
0000 ; source code in the MASM format
0000 ; direct threaded code
0000 ; separated code and name dictionaries
0000 ; simple vectored terminal and file interface to host computer
0000 ; aligned with the proposed ANS Forth Standard
0000 ; easy upgrade path to optimize for specific CPU
0000 ;
0000 ; You are invited to implement this Model on your favorite CPU and
0000 ; contribute it to the eForth Library for public use. You may use
0000 ; a portable implementation to advertise more sophisticated and
0000 ; optimized version for commercial purposes. However, you are
0000 ; expected to implement the Model faithfully. The eForth Working
0000 ; Group reserves the right to reject implementation which deviates
0000 ; significantly from this Model.
0000 ;
0000 ; As the ANS Forth Standard is still evolving, this Model will
0000 ; change accordingly. Implementations must state clearly the
0000 ; version number of the Model being tracked.
0000 ;
0000 ; Representing the eForth Working Group in the Silicon Valley FIG Chapter.
0000 ; Send contributions to:
0000 ;
0000 ; Dr. C. H. Ting
0000 ; 156 14th Avenue
0000 ; San Mateo, CA 94402
0000 ; (415) 571-7639
0000 ;
0000 ;===============================================================
0000 ; $Log: ef09.asm,v $
0000 ; Revision 1.1 1997/11/24 02:56:01 root
0000 ; Initial revision
0000 ;
0000 ;===============================================================
0000 ; Version control
0000 ;
0000 VER: EQU 1
0000 EXT: EQU 0
0000 ;
0000 ; Constants
0000 ;
0000 TRUEE: EQU -1
0000 ;
0000 COMPO: EQU $40
0000 IMEDD: EQU $80
0000 MASKK: EQU $1F7F
0000 ;
0000 CFAOFF: EQU 3
0000 ; (length of JSR)
0000 CELLL: EQU 2
0000 BASEE: EQU 10
0000 VOCSS: EQU 8
0000 ;
0000 BKSPP: EQU 8
0000 BKSPP2: EQU 127
0000 LF: EQU 10
0000 CRR: EQU 13
0000 ERR: EQU 27
0000 TIC: EQU 39
0000 ;
0000 CALLL: EQU $12BD
0000 ;
0000 ; Memory allocation
0000 ;
0000 EM: EQU $7000
0000 US: EQU 64*CELLL
0000 RTS: EQU 128*CELLL ;return stack/TIB size
0000 ;
0000 UPP: EQU EM-US
0000 RPP: EQU UPP-8*CELLL
0000 TIBB: EQU RPP-RTS
0000 SPP: EQU TIBB-8*CELLL
0000 ;
0000 COLDD: EQU $100
0000 CODEE: EQU COLDD+US
0000 NAMEE: EQU EM-$0400
0000 ;
0000 ; Initialize assembly variables
0000 ;
0000 ;
0000 ; Main entry points and COLD start data
0000 ;
0000 ;
FFF0 .ORG 0xfff0
FFF0 ;reserved
FFF0 01 00 DW reset
FFF2 ;SWI3
FFF2 01 00 DW reset
FFF4 ;SWI2
FFF4 01 00 DW reset
FFF6 ;FIRQ
FFF6 01 00 DW reset
FFF8 ;IRQ
FFF8 01 00 DW reset
FFFA ;SWI
FFFA 01 00 DW reset
FFFC ;NMI
FFFC 01 00 DW reset
FFFE ;RES
FFFE 01 00 DW reset
10000 ;
10000 ;
10000 ;
0100 .ORG COLDD ;beginning of cold boot area
0100 ; SETDP 0
0100 .ENT $
0100 RESET:
0100 10 CE 6E 60 ORIG: LDS #SPP
0104 10 8E 6F 70 LDY #RPP ;Init return stack pointer
0108 CE 1D 51 LDU #COLD1 ;Init Instr pointer.
010B 37 80 PULU pc ;next.
010D ;
010D ; COLD start moves the following to USER variables.
010D ; MUST BE IN SAME ORDER AS USER VARIABLES.
010D ;
010D ;
010D UZERO: RMB 8
0115 6E 60 FDB SPP ;SP0
0117 6F 70 FDB RPP ;RP0
0119 01 AB FDB QRX ;'?KEY
011B 01 CA FDB TXSTO ;'EMIT
011D 12 90 FDB ACCEP ;'EXPECT
011F 12 4D FDB KTAP ;'TAP
0121 01 CA FDB TXSTO ;'ECHO
0123 13 F2 FDB DOTOK ;'PROMPT
0125 00 0A FDB BASEE ;BASE
0127 00 00 FDB 0 ;tmp
0129 00 00 FDB 0 ;SPAN
012B 00 00 FDB 0 ;>IN
012D 00 00 FDB 0 ;#TIB
012F 6E 70 FDB TIBB ;TIB
0131 00 00 FDB 0 ;CSP
0133 13 A4 FDB INTER ;'EVAL
0135 0D 80 FDB NUMBQ ;'NUMBER
0137 00 00 FDB 0 ;HLD
0139 00 00 FDB 0 ;HANDLER
013B 00 00 FDB 0 ;CONTEXT pointer
013D RMB VOCSS*2 ;vocabulary stack
014D 00 00 FDB 0 ;CURRENT pointer
014F 00 00 FDB 0 ;vocabulary link pointer
0151 1D 79 FDB CTOP ;CP
0153 6C 00 FDB NTOP ;NP
0155 1D 49 FDB LASTN ;LAST
0157 ULAST:
0157 ;
0180 .ORG CODEE ;beginning of the code dictionary
0180 ;
0180 ; Device dependent I/O
0180 ;
0180 ACIA: EQU $83fe
0180 ACIAC: EQU ACIA
0180 ACIAS: EQU ACIA
0180 ACIAD: EQU ACIA+1
0180 ;
0180 ACIA_TDRE: EQU 02h
0180 ACIA_RDRF: EQU 01h
0180 ;
0180 SEROUT:
0180 34 06 PSHS a,b
0182 SEROUTL:
0182 F6 83 FE LDB ACIAS
0185 C4 02 ANDB #ACIA_TDRE
0187 ; BEQ seroutl
0187 B7 83 FF STA ACIAD
018A 35 06 PULS a,b
018C 39 RTS
018D ;
018D SERIN:
018D B6 83 FE LDA ACIAS
0190 84 01 ANDA #ACIA_RDRF
0192 27 03 BEQ serin_ret
0194 B6 83 FF LDA ACIAD
0197 39 SERIN_RET: RTS
0198 ;
0198 ;
0198 ; BYE ( -- )
0198 ; Exit eForth.
0198 ;
0198 01 A0 00 00 FDB BYE,0
019C 03 42 59 45 L100: FCB 3,"BYE"
01A0 7E E0 00 BYE: JMP $E000
01A3 ;
01A3 ; ?RX ( -- c T | F )
01A3 ; Return input character and true, or a false if no input.
01A3 ;
01A3 01 AB 01 9C FDB QRX,L100
01A7 03 3F 52 58 L110: FCB 3,"?RX"
01AB 8E 00 00 QRX: LDX #0
01AE BD 01 8D JSR serin
01B1 27 04 BEQ qrx1
01B3 AF E3 STX ,--s
01B5 37 80 PULU pc
01B7 1F 89 QRX1: TFR a,b
01B9 4F CLRA
01BA ED E3 STD ,--s
01BC 30 1F LEAX -1,x
01BE AF E3 STX ,--s
01C0 37 80 PULU pc
01C2 ;
01C2 ; TX! ( c -- )
01C2 ; Send character c to the output device.
01C2 01 CA 01 A7 FDB TXSTO,L110
01C6 03 54 58 21 L120: FCB 3,"TX!"
01CA EC E1 TXSTO: LDD ,s++
01CC C1 FF CMPB #$ff
01CE 26 02 BNE tx1
01D0 C6 20 LDB #32
01D2 TX1:
01D2 1F 98 TFR b,a
01D4 BD 01 80 JSR serout
01D7 37 80 PULU pc
01D9 ;
01D9 ;
01D9 ; !IO ( -- )
01D9 ; Initialize the serial I/O devices.
01D9 ;
01D9 01 E1 01 C6 FDB STOIO,L120
01DD 03 21 49 4F L130: FCB 3,"!IO"
01E1 37 80 STOIO: PULU pc
01E3 ;
01E3 ; The kernel
01E3 ;
01E3 ; doLIT ( -- w )
01E3 ; Push an inline literal.
01E3 ;
01E3 01 ED 01 DD FDB DOLIT,L130
01E7 45 64 6F 4C 49 54 L140: FCB COMPO+5,"doLIT"
01ED DOLIT:
01ED ; ldd ,u++
01ED 37 06 PULU d
01EF ; 7 cycles
01EF 34 06 PSHS d
01F1 ; 8 cycles
01F1 ; std ,--s
01F1 37 80 PULU pc
01F3 ;
01F3 ; doCLIT ( -- w )
01F3 ; Push an inline 8-bit literal.
01F3 ;
01F3 01 FE 01 E7 FDB DOCLIT,L140
01F7 46 64 6F 43 4C 49 54 L141: FCB COMPO+6,"doCLIT"
01FE DOCLIT:
01FE 37 04 PULU b
0200 1D SEX ; sign extended
0201 34 06 PSHS d
0203 37 80 PULU pc
0205 ;
0205 ; doLIST ( a -- )
0205 ; Process colon list.
0205 ;
0205 02 10 01 F7 FDB DOLST,L141
0209 46 64 6F 4C 49 53 54 L150: FCB COMPO+6,"doLIST"
0210 EF A3 DOLST: STU ,--y
0212 35 40 PULS u ; JSR left new IP on parameter stack
0214 ; ldu ,s++
0214 37 80 PULU pc ; FORTH NEXT IP
0216 ;
0216 ; next ( -- )
0216 ; Run time code for the single index loop.
0216 ; : next ( -- ) \ hilevel model
0216 ; r> r> dup if 1 - >r @ >r exit then drop cell+ >r ;
0216 ;
0216 02 1F 02 09 FDB DONXT,L150
021A 44 6E 65 78 74 L160: FCB COMPO+4,"next"
021F EC A4 DONXT: LDD ,y
0221 83 00 01 SUBD #1 ; decrement
0224 25 06 BCS next1 ; < -> exit loop
0226 ED A4 STD ,y ; decremented value back on stack
0228 EE C4 LDU ,u ; branch to begin of loop
022A 37 80 PULU pc
022C 31 22 NEXT1: LEAY 2,y
022E 33 42 LEAU 2,u ; skip branch destination
0230 37 80 PULU pc
0232 ;
0232 ;
0232 ; ?branch ( f -- )
0232 ; Branch if flag is zero.
0232 ;
0232 02 3E 02 1A FDB QBRAN,L160
0236 47 3F 62 72 61 6E 63 68 L170: FCB COMPO+7,"?branch"
023E QBRAN: ;$CODE COMPO+7,'?branch',QBRAN
023E EC E1 LDD ,s++
0240 27 04 BEQ bran1
0242 33 42 LEAU 2,u ; skip new IP, no branch
0244 37 80 PULU pc
0246 EE C4 BRAN1: LDU ,u
0248 37 80 PULU pc
024A ;
024A ; branch ( -- )
024A ; Branch to an inline address.
024A ;
024A 02 55 02 36 FDB BRAN,L170
024E 46 62 72 61 6E 63 68 L180: FCB COMPO+6,"branch"
0255 EE C4 BRAN: LDU ,u
0257 37 80 PULU pc
0259 ;
0259 ; EXECUTE ( ca -- )
0259 ; Execute the word at ca.
0259 ;
0259 02 65 02 4E FDB EXECU,L180
025D 07 45 58 45 43 55 54 45 L190: FCB 7,"EXECUTE"
0265 39 EXECU: RTS
0266 ;
0266 ; EXIT ( -- )
0266 ; SEMIS
0266 ; Terminate a colon definition.
0266 ;
0266 02 6F 02 5D FDB EXIT,L190
026A 04 45 58 49 54 L200: FCB 4,"EXIT"
026F EE A1 EXIT: LDU ,y++
0271 37 80 PULU pc
0273 ;
0273 ; ! ( w a -- )
0273 ; Pop the data stack to memory.
0273 ;
0273 02 79 02 6A FDB STORE,L200
0277 01 21 L210: FCB 1,"!"
0279 STORE:
0279 ; ldx ,s++
0279 ; ldd ,s++
0279 ; faster ...
0279 35 10 PULS x
027B 35 06 PULS d
027D ; we cannot use puls x,d because the order fetched would be wrong :(
027D ED 84 STD ,x
027F 37 80 PULU pc
0281 ;
0281 ; @ ( a -- w )
0281 ; Push memory location to the data stack.
0281 ;
0281 02 87 02 77 FDB AT,L210
0285 01 40 L220: FCB 1,"@"
0287 EC F4 AT: LDD [,s]
0289 ED E4 STD ,s
028B 37 80 PULU pc
028D ;
028D ; C! ( c b -- )
028D ; Pop the data stack to byte memory.
028D ;
028D 02 94 02 85 FDB CSTOR,L220
0291 02 43 21 L230: FCB 2,"C!"
0294 CSTOR:
0294 ; ldx ,s++
0294 ; ldd ,s++
0294 ; faster ...
0294 35 10 PULS x
0296 35 06 PULS d
0298 ; we cannot use puls x,d because the order fetched would be wrong :(
0298 E7 84 STB ,x
029A 37 80 PULU pc
029C ;
029C ;
029C ; C@ ( b -- c )
029C ; Push byte memory location to the data stack.
029C ;
029C 02 A3 02 91 FDB CAT,L230
02A0 02 43 40 L240: FCB 2,"C@"
02A3 E6 F4 CAT: LDB [,s]
02A5 4F CLRA
02A6 ED E4 STD ,s
02A8 37 80 PULU pc
02AA ;
02AA ; RP@ ( -- a )
02AA ; Push the current RP to the data stack.
02AA ;
02AA 02 B2 02 A0 FDB RPAT,L240
02AE 03 52 50 40 L250: FCB 3,"RP@"
02B2 34 20 RPAT: PSHS y
02B4 37 80 PULU pc
02B6 ;
02B6 ; RP! ( a -- )
02B6 ; Set the return stack pointer.
02B6 ;
02B6 02 BE 02 AE FDB RPSTO,L250
02BA 03 52 50 21 L260: FCB 3,"RP!"
02BE 35 20 RPSTO: PULS y
02C0 37 80 PULU pc
02C2 ;
02C2 ; R> ( -- w )
02C2 ; Pop the return stack to the data stack.
02C2 ;
02C2 02 C9 02 BA FDB RFROM,L260
02C6 02 52 3E L270: FCB 2,"R>"
02C9 EC A1 RFROM: LDD ,y++
02CB ; std ,--s
02CB 34 06 PSHS d
02CD 37 80 PULU pc
02CF ;
02CF ; I ( -- w )
02CF ; Copy top of return stack (current index from DO/LOOP) to the data stack.
02CF ;
02CF 02 DC 02 C6 FDB RAT,L270
02D3 01 49 L279: FCB 1,"I"
02D5 ;
02D5 ; R@ ( -- w )
02D5 ; Copy top of return stack to the data stack.
02D5 ;
02D5 02 DC 02 D3 FDB RAT,L279
02D9 02 52 40 L280: FCB 2,"R@"
02DC RAT:
02DC I:
02DC EC A4 LDD ,y
02DE ; std ,--s
02DE 34 06 PSHS d
02E0 37 80 PULU pc
02E2 ;
02E2 ; >R ( w -- )
02E2 ; Push the data stack to the return stack.
02E2 ;
02E2 02 E9 02 D9 FDB TOR,L280
02E6 02 3E 52 L290: FCB 2,">R"
02E9 TOR:
02E9 ; ldd ,s++
02E9 35 06 PULS d
02EB ED A3 STD ,--y
02ED 37 80 PULU pc
02EF ;
02EF ; SP@ ( -- a )
02EF ; Push the current data stack pointer.
02EF ;
02EF 02 F7 02 E6 FDB SPAT,L290
02F3 03 53 50 40 L300: FCB 3,"SP@"
02F7 SPAT:
02F7 1F 40 TFR s,d
02F9 ED E3 STD ,--s
02FB ; alternatively
02FB ; sts ,--s ; does this work?
02FB 37 80 PULU pc
02FD ;
02FD ; SP! ( a -- )
02FD ; Set the data stack pointer.
02FD ;
02FD 03 05 02 F3 FDB SPSTO,L300
0301 03 53 50 21 L310: FCB 3,"SP!"
0305 10 EE E4 SPSTO: LDS ,s
0308 37 80 PULU pc
030A ;
030A ; DROP ( w -- )
030A ; Discard top stack item.
030A ;
030A 03 13 03 01 FDB DROP,L310
030E 04 44 52 4F 50 L320: FCB 4,"DROP"
0313 32 62 DROP: LEAS 2,s
0315 37 80 PULU pc
0317 ;
0317 ; DUP ( w -- w w )
0317 ; Duplicate the top stack item.
0317 ;
0317 03 1F 03 0E FDB DUPP,L320
031B 03 44 55 50 L330: FCB 3,"DUP"
031F EC E4 DUPP: LDD ,s
0321 ; std ,--s
0321 34 06 PSHS d
0323 37 80 PULU pc
0325 ;
0325 ; SWAP ( w1 w2 -- w2 w1 )
0325 ; Exchange top two stack items.
0325 ;
0325 03 2E 03 1B FDB SWAP,L330
0329 04 53 57 41 50 L340: FCB 4,"SWAP"
032E SWAP:
032E ;OLD 1: slow
032E ; ldx ,s++
032E ; ldd ,s++
032E ;OLD 2: faster
032E ; puls x
032E ; puls d
032E ; pshs d,x
032E ;more efficient, without unnecessary stack pointer manipulations
032E EC E4 LDD ,s
0330 AE 62 LDX 2,s
0332 ED 62 STD 2,s
0334 AF E4 STX ,s
0336 37 80 PULU pc
0338 ;
0338 ; OVER ( w1 w2 -- w1 w2 w1 )
0338 ; Copy second stack item to top.
0338 ;
0338 03 41 03 29 FDB OVER,L340
033C 04 4F 56 45 52 L350: FCB 4,"OVER"
0341 EC 62 OVER: LDD 2,s
0343 ; std ,--s
0343 34 06 PSHS d
0345 37 80 PULU pc
0347 ;
0347 ; 0< ( n -- t )
0347 ; Return true if n is negative.
0347 ;
0347 03 4E 03 3C FDB ZLESS,L350
034B 02 30 3C L360: FCB 2,"0<"
034E E6 E4 ZLESS: LDB ,s
0350 1D SEX ; sign extend to b to a/b
0351 1F 89 TFR a,b ; high byte: 0 or FF copy to D low
0353 ED E4 STD ,s ; D: 0000 or FFFF (= -1)
0355 37 80 PULU pc
0357 ;
0357 ; 0= ( n -- t )
0357 ; Return true if n is zero
0357 ;
0357 03 5E 03 4B FDB ZEQUAL,L360
035B 02 30 3D L365: FCB 2,"0="
035E ZEQUAL:
035E 8E FF FF LDX #TRUEE ; true
0361 EC E4 LDD ,s ; TOS
0363 27 03 BEQ ZEQUAL1 ; -> true
0365 8E 00 00 LDX #0 ; false
0368 AF E4 ZEQUAL1: STX ,s
036A 37 80 PULU pc
036C ;
036C ; AND ( w w -- w )
036C ; Bitwise AND.
036C ;
036C 03 74 03 5B FDB ANDD,L365
0370 03 41 4E 44 L370: FCB 3,"AND"
0374 EC E1 ANDD: LDD ,s++
0376 A4 E4 ANDA ,s
0378 E4 61 ANDB 1,s
037A ED E4 STD ,s
037C 37 80 PULU pc
037E ;
037E ; OR ( w w -- w )
037E ; Bitwise inclusive OR.
037E ;
037E 03 85 03 70 FDB ORR,L370
0382 02 4F 52 L380: FCB 2,"OR"
0385 EC E1 ORR: LDD ,s++
0387 AA E4 ORA ,s
0389 EA 61 ORB 1,s
038B ED E4 STD ,s
038D 37 80 PULU pc
038F ;
038F ; XOR ( w w -- w )
038F ; Bitwise exclusive OR.
038F ;
038F 03 97 03 82 FDB XORR,L380
0393 03 58 4F 52 L390: FCB 3,"XOR"
0397 EC E1 XORR: LDD ,s++
0399 A8 E4 EORA ,s
039B E8 61 EORB 1,s
039D ED E4 STD ,s
039F 37 80 PULU pc
03A1 ;
03A1 ; D+ ( ud ud -- udsum )
03A1 ; Add two unsigned double numbers and return a double sum.
03A1 ;
03A1 03 A8 03 93 FDB DPLUS,L390
03A5 02 44 2B L391: FCB 2,"D+"
03A8 EC 62 DPLUS: LDD 2,s
03AA E3 66 ADDD 6,s
03AC ED 66 STD 6,s
03AE EC E4 LDD ,s ; add hig words
03B0 E9 65 ADCB 5,s
03B2 A9 64 ADCA 4,s
03B4 ED 64 STD 4,s
03B6 32 64 LEAS 4,s ; drop one double
03B8 37 80 PULU pc
03BA ;
03BA ; D- ( ud ud -- uddiff )
03BA ; Subtract two unsigned double numbers and return a double sum.
03BA ;
03BA 03 C1 03 A5 FDB DSUB,L391
03BE 02 44 2D L392: FCB 2,"D-"
03C1 BD 02 10 DSUB: JSR DOLST
03C4 07 17 03 A8 02 6F FDB DNEGA,DPLUS,EXIT
03CA ;
03CA ;
03CA ; UM+ ( u u -- udsum )
03CA ; Add two unsigned single numbers and return a double sum.
03CA ;
03CA 03 D2 03 BE FDB UPLUS,L392
03CE 03 55 4D 2B L400: FCB 3,"UM+"
03D2 EC E4 UPLUS: LDD ,s
03D4 E3 62 ADDD 2,s
03D6 ED 62 STD 2,s
03D8 CC 00 00 LDD #0
03DB C9 00 ADCB #0
03DD ED E4 STD ,s
03DF 37 80 PULU pc
03E1 ;
03E1 ; Constants
03E1 ;
03E1 ; doCONST ( -- w )
03E1 ; Run time routine for CONSTANT
03E1 ;
03E1 03 ED 03 CE FDB DOCONST,L400
03E5 47 64 6F 43 4F 4E 53 54 L401: FCB COMPO+7,"doCONST"
03ED DOCONST:
03ED FDOCONST:
03ED EC F4 LDD [,s] ; contents of W (on TOS because of JSR)
03EF ED E4 STD ,s ; to TOS (replacing W)
03F1 37 80 PULU pc
03F3 ;
03F3 ; 0 ( -- 0 )
03F3 ; Constant 0
03F3 ;
03F3 03 F9 03 E5 FDB ZERO,L401
03F7 01 30 L402: FCB 1,"0"
03F9 BD 03 ED ZERO: JSR FDOCONST
03FC 00 00 FDB 0
03FE ;
03FE ; 1 ( -- 1 )
03FE ; Constant 1
03FE ;
03FE 04 04 03 F7 FDB ONE,L402
0402 01 31 L403: FCB 1,"1"
0404 BD 03 ED ONE: JSR FDOCONST
0407 00 01 FDB 1
0409 ;
0409 ; 2 ( -- 2 )
0409 ; Constant 2
0409 ;
0409 04 0F 04 02 FDB TWO,L403
040D 01 32 L404: FCB 1,"2"
040F BD 03 ED TWO: JSR FDOCONST
0412 00 02 FDB 2
0414 ;
0414 ;
0414 ; -1 ( -- -1 )
0414 ; Constant -1
0414 ;
0414 04 1B 04 0D FDB MONE,L404
0418 02 2D 31 L405: FCB 2,"-1"
041B BD 03 ED MONE: JSR FDOCONST
041E FF FF FDB -1
0420 ;
0420 ; System and user variables
0420 ;
0420 ; doVAR ( -- a )
0420 ; Run time routine for VARIABLE and CREATE.
0420 ;
0420 04 2A 04 18 FDB DOVAR,L405
0424 45 64 6F 56 41 52 L410: FCB COMPO+5,"doVAR"
042A DOVAR:
042A BD 02 10 JSR DOLST
042D 02 C9 02 6F FDB RFROM,EXIT
0431 ;
0431 ; fast native DOVAR implementation
0431 37 80 FDOVAR: PULU pc
0433 ;
0433 ;
0433 ; UP ( -- a )
0433 ; Pointer to the user area.
0433 ;
0433 04 3A 04 24 FDB UP,L410
0437 02 55 50 L420: FCB 2,"UP"
043A UP:
043A ; jsr DOLST
043A ; FDB DOVAR
043A ; fast (native) DOVAR
043A BD 04 31 JSR FDOVAR
043D 6F 80 FDB UPP
043F ;
043F ; doUSER ( -- a )
043F ; Run time routine for user variables.
043F ;
043F 04 4A 04 37 FDB DOUSE,L420
0443 45 64 6F 55 53 45 52 L430: FCB COMPO+5,"doUSER"
044A DOUSE:
044A BD 02 10 JSR DOLST
044D 02 C9 02 87 04 3A 02 87 06 CD 02 6F FDB RFROM,AT,UP,AT,PLUS,EXIT
0459 ;
0459 ; fast (native) DOUSE implementation (*NOT COMPLETE*)
0459 FDOUSE:
0459 EC F4 LDD [,s] ; pointer to value (from JSR)
045B F3 04 3D ADDD UP+CFAOFF ; dirty access to start of USER area:
045E ; var. UP value direct access (not
045E ; as a high level word)
045E ED E4 STD ,s ; resulting address returned on p-stack
0460 37 80 PULU pc
0462 ;
0462 ; SP0 ( -- a )
0462 ; Pointer to bottom of the data stack.
0462 ;
0462 04 6A 04 43 FDB SZERO,L430
0466 03 53 50 30 L440: FCB 3,"SP0"
046A SZERO:
046A BD 04 59 JSR FDOUSE
046D 00 08 FDB 8
046F ; jsr DOLST
046F ; FDB DOUSE,8
046F ;
046F ; RP0 ( -- a )
046F ; Pointer to bottom of the return stack.
046F ;
046F 04 77 04 66 FDB RZERO,L440
0473 03 52 50 30 L450: FCB 3,"RP0"
0477 RZERO:
0477 BD 04 59 JSR FDOUSE
047A 00 0A FDB 10
047C ; jsr DOLST
047C ; FDB DOUSE,10
047C ;
047C ; '?KEY ( -- a )
047C ; Execution vector of ?KEY.
047C ;
047C 04 86 04 73 FDB TQKEY,L450
0480 05 27 3F 4B 45 59 L460: FCB 5,"'?KEY"
0486 TQKEY:
0486 BD 04 59 JSR FDOUSE
0489 00 0C FDB 12
048B ; jsr DOLST
048B ; FDB DOUSE,12
048B ;
048B ; 'EMIT ( -- a )
048B ; Execution vector of EMIT.
048B ;
048B 04 95 04 80 FDB TEMIT,L460
048F 05 27 45 4D 49 54 L470: FCB 5,"'EMIT"
0495 TEMIT:
0495 BD 04 59 JSR FDOUSE
0498 00 0E FDB 14
049A ; jsr DOLST
049A ; FDB DOUSE,14
049A ;
049A ; 'EXPECT ( -- a )
049A ; Execution vector of EXPECT.
049A ;
049A 04 A6 04 8F FDB TEXPE,L470
049E 07 27 45 58 50 45 43 54 L480: FCB 7,"'EXPECT"
04A6 TEXPE:
04A6 BD 04 59 JSR FDOUSE
04A9 00 10 FDB 16
04AB ; jsr DOLST
04AB ; FDB DOUSE,16
04AB ;
04AB ; 'TAP ( -- a )
04AB ; Execution vector of TAP.
04AB ;
04AB 04 B4 04 9E FDB TTAP,L480
04AF 04 27 54 41 50 L490: FCB 4,"'TAP"
04B4 TTAP:
04B4 BD 04 59 JSR FDOUSE
04B7 00 12 FDB 18
04B9 ; jsr DOLST
04B9 ; FDB DOUSE,18
04B9 ;
04B9 ; 'ECHO ( -- a )
04B9 ; Execution vector of ECHO.
04B9 ;
04B9 04 C3 04 AF FDB TECHO,L490
04BD 05 27 45 43 48 4F L500: FCB 5,"'ECHO"
04C3 TECHO:
04C3 BD 04 59 JSR FDOUSE
04C6 00 14 FDB 20
04C8 ; jsr DOLST
04C8 ; FDB DOUSE,20
04C8 ;
04C8 ; 'PROMPT ( -- a )
04C8 ; Execution vector of PROMPT.
04C8 ;
04C8 04 D4 04 BD FDB TPROM,L500
04CC 07 27 50 52 4F 4D 50 54 L510: FCB 7,"'PROMPT"
04D4 TPROM:
04D4 BD 04 59 JSR FDOUSE
04D7 00 16 FDB 22
04D9 ; jsr DOLST
04D9 ; FDB DOUSE,22
04D9 ;
04D9 ;
04D9 ; BASE ( -- a )
04D9 ; Storage of the radix base for numeric I/O.
04D9 ;
04D9 04 E2 04 CC FDB BASE,L510
04DD 04 42 41 53 45 L520: FCB 4,"BASE"
04E2 BASE:
04E2 BD 04 59 JSR FDOUSE
04E5 00 18 FDB 24
04E7 ; jsr DOLST
04E7 ; FDB DOUSE,24
04E7 ;
04E7 ; tmp ( -- a )
04E7 ; A temporary storage location used in parse and find.
04E7 ;
04E7 04 EF 04 DD FDB TEMP,L520
04EB 43 74 6D 70 L530: FCB COMPO+3,"tmp"
04EF TEMP:
04EF BD 04 59 JSR FDOUSE
04F2 00 1A FDB 26
04F4 ; jsr DOLST
04F4 ; FDB DOUSE,26
04F4 ;
04F4 ; SPAN ( -- a )
04F4 ; Hold character count received by EXPECT.
04F4 ;
04F4 04 FD 04 EB FDB SPAN,L530
04F8 04 53 50 41 4E L540: FCB 4,"SPAN"
04FD SPAN:
04FD BD 04 59 JSR FDOUSE
0500 00 1C FDB 28
0502 ; jsr DOLST
0502 ; FDB DOUSE,28
0502 ;
0502 ; >IN ( -- a )
0502 ; Hold the character pointer while parsing input stream.
0502 ;
0502 05 0A 04 F8 FDB INN,L540
0506 03 3E 49 4E L550: FCB 3,">IN"
050A INN:
050A BD 04 59 JSR FDOUSE
050D 00 1E FDB 30
050F ; jsr DOLST
050F ; FDB DOUSE,30
050F ;
050F ; #TIB ( -- a )
050F ; Hold the current count in and address of the terminal input buffer.
050F ;
050F 05 18 05 06 FDB NTIB,L550
0513 04 23 54 49 42 L560: FCB 4,"#TIB"
0518 NTIB:
0518 BD 04 59 JSR FDOUSE
051B 00 20 FDB 32
051D ; jsr DOLST
051D ; FDB DOUSE,32 ;It contains TWO cells!!!!
051D ;
051D ; CSP ( -- a )
051D ; Hold the stack pointer for error checking.
051D ;
051D 05 25 05 13 FDB CSP,L560
0521 03 43 53 50 L570: FCB 3,"CSP"
0525 CSP:
0525 BD 04 59 JSR FDOUSE
0528 00 24 FDB 36
052A ; jsr DOLST
052A ; FDB DOUSE 36
052A ;
052A ; 'EVAL ( -- a )
052A ; Execution vector of EVAL.
052A ;
052A 05 34 05 21 FDB TEVAL,L570
052E 05 27 45 56 41 4C L580: FCB 5,"'EVAL"
0534 TEVAL:
0534 BD 04 59 JSR FDOUSE
0537 00 26 FDB 38
0539 ; jsr DOLST
0539 ; FDB DOUSE,38
0539 ;
0539 ; 'NUMBER ( -- a )
0539 ; Execution vector of NUMBER?.
0539 ;
0539 05 45 05 2E FDB TNUMB,L580
053D 07 27 4E 55 4D 42 45 52 L590: FCB 7,"'NUMBER"
0545 TNUMB:
0545 BD 04 59 JSR FDOUSE
0548 00 28 FDB 40
054A ; jsr DOLST
054A ; FDB DOUSE,40
054A ;
054A ; HLD ( -- a )
054A ; Hold a pointer in building a numeric output string.
054A ;
054A 05 52 05 3D FDB HLD,L590
054E 03 48 4C 44 L600: FCB 3,"HLD"
0552 HLD:
0552 BD 04 59 JSR FDOUSE
0555 00 2A FDB 42
0557 ; jsr DOLST
0557 ; FDB DOUSE,42
0557 ;
0557 ; HANDLER ( -- a )
0557 ; Hold the return stack pointer for error handling.
0557 ;
0557 05 63 05 4E FDB HANDL,L600
055B 07 48 41 4E 44 4C 45 52 L610: FCB 7,"HANDLER"
0563 HANDL:
0563 BD 04 59 JSR FDOUSE
0566 00 2C FDB 44
0568 ; jsr DOLST
0568 ; FDB DOUSE,44
0568 ;
0568 ; CONTEXT ( -- a )
0568 ; A area to specify vocabulary search order.
0568 ;
0568 05 74 05 5B FDB CNTXT,L610
056C 07 43 4F 4E 54 45 58 54 L620: FCB 7,"CONTEXT"
0574 CNTXT:
0574 BD 04 59 JSR FDOUSE
0577 00 2E FDB 46
0579 ; jsr DOLST
0579 ; FDB DOUSE,46 ;plus space for voc stack.
0579 ;
0579 ; CURRENT ( -- a )
0579 ; Point to the vocabulary to be extended.
0579 ;
0579 05 85 05 6C FDB CRRNT,L620
057D 07 43 55 52 52 45 4E 54 L630: FCB 7,"CURRENT"
0585 CRRNT:
0585 BD 04 59 JSR FDOUSE
0588 00 40 FDB 48+VOCSS*2 ;Extra cell
058A ; jsr DOLST
058A ; FDB DOUSE,48+VOCSS*2 ;Extra cell
058A ;
058A ; CP ( -- a )
058A ; Point to the top of the code dictionary.
058A ;
058A 05 91 05 7D FDB CP,L630
058E 02 43 50 L640: FCB 2,"CP"
0591 CP:
0591 BD 04 59 JSR FDOUSE
0594 00 44 FDB 52+VOCSS*2
0596 ; jsr DOLST
0596 ; FDB DOUSE,52+VOCSS*2
0596 ;
0596 ; NP ( -- a )
0596 ; Point to the bottom of the name dictionary.
0596 ;
0596 05 9D 05 8E FDB NP,L640
059A 02 4E 50 L650: FCB 2,"NP"
059D NP:
059D BD 04 59 JSR FDOUSE
05A0 00 46 FDB 54+VOCSS*2
05A2 ; jsr DOLST
05A2 ; FDB DOUSE,54+VOCSS*2
05A2 ;
05A2 ; LAST ( -- a )
05A2 ; Point to the last name in the name dictionary.
05A2 ;
05A2 05 AB 05 9A FDB LAST,L650
05A6 04 4C 41 53 54 L660: FCB 4,"LAST"
05AB LAST:
05AB BD 04 59 JSR FDOUSE
05AE 00 48 FDB 56+VOCSS*2
05B0 ; jsr DOLST
05B0 ; FDB DOUSE,56+VOCSS*2
05B0 ;
05B0 ; Common functions
05B0 ;
05B0 ; doVOC ( -- )
05B0 ; Run time action of VOCABULARY's.
05B0 ;
05B0 05 BA 05 A6 FDB DOVOC,L660
05B4 45 64 6F 56 4F 43 L670: FCB COMPO+5,"doVOC"
05BA DOVOC:
05BA BD 02 10 JSR DOLST
05BD 02 C9 05 74 02 79 02 6F FDB RFROM,CNTXT,STORE,EXIT
05C5 ;
05C5 ; FORTH ( -- )
05C5 ; Make FORTH the context vocabulary.
05C5 ;
05C5 05 CF 05 B4 FDB FORTH,L670
05C9 05 46 4F 52 54 48 L680: FCB 5,"FORTH"
05CF FORTH:
05CF BD 02 10 JSR DOLST
05D2 05 BA FDB DOVOC
05D4 00 00 FDB 0 ;vocabulary head pointer
05D6 00 00 FDB 0 ;vocabulary link pointer
05D8 ;
05D8 ; ?DUP ( w -- w w | 0 )
05D8 ; Dup tos if its is not zero.
05D8 ;
05D8 05 E1 05 C9 FDB QDUP,L680
05DC 04 3F 44 55 50 L690: FCB 4,"?DUP"
05E1 QDUP:
05E1 BD 02 10 JSR DOLST
05E4 03 1F FDB DUPP
05E6 02 3E 05 EC FDB QBRAN,QDUP1
05EA 03 1F FDB DUPP
05EC 02 6F QDUP1: FDB EXIT
05EE ;
05EE ; ROT ( w1 w2 w3 -- w2 w3 w1 )
05EE ; Rot 3rd item to top.
05EE ;
05EE 05 F6 05 DC FDB ROT,L690
05F2 03 52 4F 54 L700: FCB 3,"ROT"
05F6 ROT:
05F6 BD 02 10 JSR DOLST
05F9 02 E9 03 2E 02 C9 03 2E 02 6F FDB TOR,SWAP,RFROM,SWAP,EXIT
0603 ;
0603 ; 2DROP ( w w -- )
0603 ; Discard two items on stack.
0603 ;
0603 06 0D 05 F2 FDB DDROP,L700
0607 05 32 44 52 4F 50 L710: FCB 5,"2DROP"
060D DDROP:
060D BD 02 10 JSR DOLST
0610 03 13 03 13 02 6F FDB DROP,DROP,EXIT
0616 ;
0616 ; 2DUP ( w1 w2 -- w1 w2 w1 w2 )
0616 ; Duplicate top two items.
0616 ;
0616 06 1F 06 07 FDB DDUP,L710
061A 04 32 44 55 50 L720: FCB 4,"2DUP"
061F DDUP:
061F BD 02 10 JSR DOLST
0622 03 41 03 41 02 6F FDB OVER,OVER,EXIT
0628 ;
0628 ; LSHIFT ( w n -- w )
0628 ; Shift word left n times.
0628 06 33 06 1A FDB LSHIFT,L720
062C 06 4C 53 48 49 46 54 L721: FCB 6,"LSHIFT"
0633 AE E1 LSHIFT: LDX ,s++
0635 27 0A BEQ LSHIFT2
0637 EC E4 LDD ,s ;value to shift
0639 58 LSHIFT1: ASLB
063A 49 ROLA ;high
063B 30 1F LEAX -1,x ;count down
063D 26 FA BNE LSHIFT1
063F ED E4 STD ,s
0641 LSHIFT2:
0641 37 80 PULU pc
0643 ;
0643 ; RSHIFT ( w n -- w )
0643 ; Shift word right n times.
0643 06 4E 06 2C FDB RSHIFT,L721
0647 06 52 53 48 49 46 54 L721A: FCB 6,"RSHIFT"
064E AE E1 RSHIFT: LDX ,s++
0650 27 0A BEQ RSHIFT2
0652 EC E4 LDD ,s ;value to shift
0654 44 RSHIFT1: LSRA
0655 56 RORB ;low
0656 30 1F LEAX -1,x ;count down
0658 26 FA BNE RSHIFT1
065A ED E4 STD ,s
065C RSHIFT2:
065C 37 80 PULU pc
065E ;
065E ; >< ( w -- w )
065E ; swap high and low byte
065E 06 65 06 47 FDB SWAPHL,L721A
0662 02 3E 3C L722: FCB 2,"><"
0665 E6 E4 SWAPHL: LDB ,s
0667 A6 61 LDA 1,s ;low -> D high
0669 ED E4 STD ,s
066B 37 80 PULU pc
066D ;
066D ; 256/ ( w -- w )
066D ; multiply with 256 (shift left 8 times)
066D 06 76 06 62 FDB SLASH256,L722
0671 04 32 35 36 2F L723: FCB 4,"256/"
0676 E6 E4 SLASH256: LDB ,s
0678 4F CLRA ;D high = 0
0679 ED E4 STD ,s
067B 37 80 PULU pc
067D ;
067D ; 256* ( w -- w )
067D ; multiply with 256 (shift left 8 times)
067D 06 86 06 71 FDB STAR256,L723
0681 04 32 35 36 2A L724: FCB 4,"256*"
0686 A6 61 STAR256: LDA 1,s
0688 5F CLRB ;D low = 0
0689 ED E4 STD ,s
068B 37 80 PULU pc
068D ;
068D ; 1+ ( w -- w )
068D ; Shortcut, quick add 1
068D 06 94 06 81 FDB PLUS1,L724
0691 02 31 2B L725: FCB 2,"1+"
0694 EC E4 PLUS1: LDD ,s
0696 C3 00 01 ADDD #1
0699 ED E4 STD ,s
069B 37 80 PULU pc
069D ;
069D ; -+ ( w -- w )
069D ; Shortcut, quick subtract 1
069D 06 A4 06 91 FDB MINUS1,L725
06A1 02 31 2D L726: FCB 2,"1-"
06A4 EC E4 MINUS1: LDD ,s
06A6 83 00 01 SUBD #1
06A9 ED E4 STD ,s
06AB 37 80 PULU pc
06AD ;
06AD ; 2* ( w -- w )
06AD ; multiply by 2 using shift operation
06AD 06 B4 06 A1 FDB TWOSTAR,L726
06B1 02 32 2A L727: FCB 2,"2*"
06B4 68 61 TWOSTAR: ASL 1,s
06B6 69 60 ROL 0,s ;high
06B8 37 80 PULU pc
06BA ;
06BA ; 2/ ( w -- w )
06BA ; divide by 2 using shift operation
06BA 06 C1 06 B1 FDB TWOSLASH,L727
06BE 02 32 2F L728: FCB 2,"2/"
06C1 67 60 TWOSLASH: ASR 0,s
06C3 66 61 ROR 1,s ;low
06C5 37 80 PULU pc
06C7 ;
06C7 ; + ( w w -- sum )
06C7 ; Add top two items.
06C7 ;
06C7 06 CD 06 BE FDB PLUS,L728
06CB 01 2B L730: FCB 1,"+"
06CD PLUS:
06CD EC E1 LDD ,s++
06CF E3 E4 ADDD ,s
06D1 ED E4 STD ,s
06D3 37 80 PULU pc
06D5 ; HL with UPLUS!? Too inefficient ...
06D5 ; jsr DOLST
06D5 ; FDB UPLUS,DROP,EXIT
06D5 ;
06D5 ; NOT ( w -- w )
06D5 ; One's complement of tos.
06D5 ;
06D5 06 DD 06 CB FDB INVER,L730
06D9 03 4E 4F 54 L740: FCB 3,"NOT"
06DD INVER:
06DD ; fastest ... (13T)
06DD 63 E4 COM ,s ; 6T
06DF 63 61 COM 1,s ; 7T
06E1 37 80 PULU pc
06E3 ; alternative ... (14T)
06E3 EC E4 LDD ,s ;TOS 5T
06E5 43 COMA ; 2T
06E6 53 COMB ; 2T
06E7 ED E4 STD ,s ; 5T
06E9 37 80 PULU pc
06EB ; slow HL ...
06EB ; jsr DOLST
06EB ; FDB DOLIT,-1,XORR,EXIT
06EB ;
06EB ; NEGATE ( n -- -n )
06EB ; Two's complement of tos.
06EB ;
06EB 06 F6 06 D9 FDB NEGAT,L740
06EF 06 4E 45 47 41 54 45 L750: FCB 6,"NEGATE"
06F6 NEGAT:
06F6 ; fastest? .... (3+6+5 = 14T)
06F6 CC 00 00 LDD #0 ; 3T
06F9 A3 E4 SUBD ,s ; 6T
06FB ED E4 STD ,s ; 5T
06FD 37 80 PULU pc
06FF ; alternate ... (7+3+6 = 16T)
06FF 60 61 NEG 1,s ; high 7T
0701 26 04 BNE NEGAT1 ; 3T
0703 60 E4 NEG ,s ; low with 1+ carry 6T
0705 37 80 PULU pc
0707 63 E4 NEGAT1: COM ,s
0709 37 80 PULU pc
070B ; slow HL ...
070B ; jsr DOLST
070B ; FDB INVER,PLUS1,EXIT
070B ;
070B ; DNEGATE ( d -- -d )
070B ; Two's complement of top double.
070B ;
070B 07 17 06 EF FDB DNEGA,L750
070F 07 44 4E 45 47 41 54 45 L760: FCB 7,"DNEGATE"
0717 DNEGA:
0717 CC 00 00 LDD #0
071A A3 62 SUBD 2,s ; low word
071C ED 62 STD 2,s
071E CC 00 00 LDD #0
0721 E2 61 SBCB 1,s ; high word low byte
0723 A2 E4 SBCA ,s ; high word high byte
0725 ED E4 STD ,s
0727 37 80 PULU pc
0729 ; slow HL ...
0729 ; jsr DOLST
0729 ; FDB INVER,TOR,INVER
0729 ; FDB DOLIT,1,UPLUS
0729 ; FDB RFROM,PLUS,EXIT
0729 ;
0729 ; - ( n1 n2 -- n1-n2 )
0729 ; Subtraction.
0729 ;
0729 07 2F 07 0F FDB SUBB,L760
072D 01 2D L770: FCB 1,"-"
072F EC 62 SUBB: LDD 2,s
0731 A3 E1 SUBD ,s++
0733 ED E4 STD ,s
0735 37 80 PULU pc
0737 ; slow HL ...
0737 ; jsr DOLST
0737 ; FDB NEGAT,PLUS,EXIT
0737 ;
0737 ; ABS ( n -- n )
0737 ; Return the absolute value of n.
0737 ;
0737 07 3F 07 2D FDB ABSS,L770
073B 03 41 42 53 L780: FCB 3,"ABS"
073F BD 02 10 ABSS: JSR DOLST
0742 03 1F 03 4E FDB DUPP,ZLESS
0746 02 3E 07 4C FDB QBRAN,ABS1
074A 06 F6 FDB NEGAT
074C 02 6F ABS1: FDB EXIT
074E ;
074E ; = ( w w -- t )
074E ; Return true if top two are equal.
074E ;
074E 07 54 07 3B FDB EQUAL,L780
0752 01 3D L790: FCB 1,"="
0754 EQUAL:
0754 8E FF FF LDX #TRUEE
0757 35 06 PULS d ; first value
0759 10 A3 E4 CMPD ,s ; compare to 2nd value
075C 27 03 BEQ EQUAL1 ; equal -> true
075E 8E 00 00 LDX #0 ; false (leax 1,x save 1 byte, but is slower)
0761 AF E4 EQUAL1: STX ,s
0763 37 80 PULU pc
0765 ; slow HL ...
0765 ; jsr DOLST
0765 ; FDB XORR
0765 ; FDB QBRAN,EQU1
0765 ; FDB DOLIT,0,EXIT
0765 ;EQU1: FDB DOLIT,TRUEE,EXIT
0765 ;
0765 ; U< ( u1 u2 -- t )
0765 ; Unsigned compare of top two items.
0765 ;
0765 07 6C 07 52 FDB ULESS,L790
0769 02 55 3C L800: FCB 2,"U<"
076C ULESS:
076C 8E FF FF LDX #TRUEE ; true
076F 35 06 PULS d ; u2
0771 10 A3 E4 CMPD ,s ; u2 - u1
0774 22 03 BHI ULES1 ; unsigned: u2 higher u1
0776 8E 00 00 LDX #0 ; false
0779 AF E4 ULES1: STX ,s
077B 37 80 PULU pc
077D ; slow HL ...
077D ; jsr DOLST
077D ; FDB DDUP,XORR,ZLESS
077D ; FDB QBRAN,ULES1
077D ; FDB SWAP,DROP,ZLESS,EXIT
077D ;ULES1: FDB SUBB,ZLESS,EXIT
077D ;
077D ; < ( n1 n2 -- t )
077D ; Signed compare of top two items.
077D ;
077D 07 83 07 69 FDB LESS,L800
0781 01 3C L810: FCB 1,"<"
0783 LESS:
0783 8E FF FF LDX #TRUEE ; true
0786 35 06 PULS d ; n2
0788 10 A3 E4 CMPD ,s ; n2 - n1
078B 2E 03 BGT LESS1 ; signed: n2 greater than n1
078D 8E 00 00 LDX #0 ; false
0790 AF E4 LESS1: STX ,s
0792 37 80 PULU pc
0794 ;
0794 ; slow HL ...
0794 ; jsr DOLST
0794 ; FDB DDUP,XORR,ZLESS
0794 ; FDB QBRAN,LESS1
0794 ; FDB DROP,ZLESS,EXIT
0794 ;LESS1: FDB SUBB,ZLESS,EXIT
0794 ;
0794 ; MAX ( n n -- n )
0794 ; Return the greater of two top stack items.
0794 ;
0794 07 9C 07 81 FDB MAX,L810
0798 03 4D 41 58 L820: FCB 3,"MAX"
079C BD 02 10 MAX: JSR DOLST
079F 06 1F 07 83 FDB DDUP,LESS
07A3 02 3E 07 A9 FDB QBRAN,MAX1
07A7 03 2E FDB SWAP
07A9 03 13 02 6F MAX1: FDB DROP,EXIT
07AD ;
07AD ; MIN ( n n -- n )
07AD ; Return the smaller of top two stack items.
07AD ;
07AD 07 B5 07 98 FDB MIN,L820
07B1 03 4D 49 4E L830: FCB 3,"MIN"
07B5 BD 02 10 MIN: JSR DOLST
07B8 06 1F 03 2E 07 83 FDB DDUP,SWAP,LESS
07BE 02 3E 07 C4 FDB QBRAN,MIN1
07C2 03 2E FDB SWAP
07C4 03 13 02 6F MIN1: FDB DROP,EXIT
07C8 ;
07C8 ; WITHIN ( u ul uh -- t )
07C8 ; Return true if u is within the range of ul and uh. ( ul <= u < uh )
07C8 ;
07C8 07 D3 07 B1 FDB WITHI,L830
07CC 06 57 49 54 48 49 4E L840: FCB 6,"WITHIN"
07D3 BD 02 10 WITHI: JSR DOLST
07D6 03 41 07 2F 02 E9 FDB OVER,SUBB,TOR
07DC 07 2F 02 C9 07 6C 02 6F FDB SUBB,RFROM,ULESS,EXIT
07E4 ;
07E4 ; Divide
07E4 ;
07E4 ; U/ ( udl udh un -- ur uq )
07E4 ; Unsigned divide of a double by a single. Return mod and quotient.
07E4 ;
07E4 ; Special cases:
07E4 ; 1. overflow: quotient overflow if dividend is to great (remainder = divisor),
07E4 ; remainder is set to $FFFF -> special handling.
07E4 ; This is checked also right before the main loop.
07E4 ; 2. underflow: divisor does not fit into dividend -> remainder
07E4 ; get the value of the dividend -> automatically covered.
07E4 ;
07E4 ; overflow: quotient = $FFFF, remainder = divisor
07E4 ; underflow: quotient = $0000, remainder = dividend low
07E4 ; division by zero: quotient = $FFFF, remainder = $0000
07E4 ;
07E4 ; Testvalues:
07E4 ;
07E4 ; DIVH DIVL DVSR QUOT REM comment
07E4 ;
07E4 ; 0100 0000 FFFF 0100 0100 maximum divisor
07E4 ; 0000 0001 8000 0000 0001 underflow (REM = DIVL)
07E4 ; 0000 5800 3000 0001 1800 normal divsion
07E4 ; 5800 0000 3000 FFFF 3000 overflow
07E4 ; 0000 0001 0000 FFFF 0000 overflow (division by zero)
07E4 ;
07E4 07 EB 07 CC FDB USLASH,L840
07E8 02 55 2F L845: FCB 2,"U/"
07EB ;
07EB USLASH:
07EB 8E 00 10 LDX #16
07EE EC 62 LDD 2,s ; udh
07F0 10 A3 E4 CMPD ,s ; dividend to great?
07F3 24 24 BHS UMMODOV ; quotient overflow!
07F5 68 65 ASL 5,s ; udl low
07F7 69 64 ROL 4,s ; udl high
07F9 ;
07F9 59 UMMOD1: ROLB
07FA 49 ROLA
07FB 25 09 BCS UMMOD2 ; bit 16 means always greater as divisor
07FD 10 A3 E4 CMPD ,s ; divide by un
0800 24 04 BHS UMMOD2 ; higher or same as divisor?
0802 1C FE ANDCC #$fe ; clc - clear carry flag
0804 20 04 BRA UMMOD3
0806 A3 E4 UMMOD2: SUBD ,s
0808 1A 01 ORCC #$01 ; sec - set carry flag
080A 69 65 UMMOD3: ROL 5,s
080C 69 64 ROL 4,s
080E 30 1F LEAX -1,x
0810 26 E7 BNE UMMOD1
0812 ;
0812 AE 64 LDX 4,s ; quotient
0814 10 A3 E4 CMPD ,s ; remainder >= divisor -> overflow
0817 25 05 BLO UMMOD4
0819 UMMODOV:
0819 EC E4 LDD ,s ; remainder set to divisor
081B 8E FF FF LDX #$FFFF ; quotient = FFFF (-1) marks overflow
081E ; (case 1)
081E UMMOD4:
081E 32 62 LEAS 2,s ; un (divisor thrown away)
0820 AF E4 STX ,s ; quotient to TOS
0822 ED 62 STD 2,s ; remainder 2nd
0824 ;
0824 37 80 PULU pc ; NEXT
0826 ;
0826 ;
0826 ; UM/MOD ( udl udh un -- ur uq )
0826 ; Unsigned divide of a double by a single. Return mod and quotient.
0826 ;
0826 08 31 07 E8 FDB UMMOD,L845
082A 06 55 4D 2F 4D 4F 44 L850: FCB 6,"UM/MOD"
0831 UMMOD:
0831 7E 07 EB JMP USLASH
0834 ; slow HL ...
0834 BD 02 10 JSR DOLST
0837 06 1F 07 6C FDB DDUP,ULESS
083B 02 3E 08 87 FDB QBRAN,UMM4
083F 06 F6 01 ED 00 0F 02 E9 FDB NEGAT,DOLIT,15,TOR
0847 02 E9 03 1F 03 D2 UMM1: FDB TOR,DUPP,UPLUS
084D 02 E9 02 E9 03 1F 03 D2 FDB TOR,TOR,DUPP,UPLUS
0855 02 C9 06 CD 03 1F FDB RFROM,PLUS,DUPP
085B 02 C9 02 DC 03 2E 02 E9 FDB RFROM,RAT,SWAP,TOR
0863 03 D2 02 C9 03 85 FDB UPLUS,RFROM,ORR
0869 02 3E 08 79 FDB QBRAN,UMM2
086D 02 E9 03 13 06 94 02 C9 FDB TOR,DROP,PLUS1,RFROM
0875 02 55 08 7B FDB BRAN,UMM3
0879 03 13 UMM2: FDB DROP
087B 02 C9 UMM3: FDB RFROM
087D 02 1F 08 47 FDB DONXT,UMM1
0881 03 13 03 2E 02 6F FDB DROP,SWAP,EXIT
0887 03 13 06 0D UMM4: FDB DROP,DDROP
088B 01 ED FF FF 03 1F 02 6F FDB DOLIT,-1,DUPP,EXIT
0893 ;
0893 ; M/MOD ( d n -- r q )
0893 ; Signed floored divide of double by single. Return mod and quotient.
0893 ;
0893 08 9D 08 2A FDB MSMOD,L850
0897 05 4D 2F 4D 4F 44 L860: FCB 5,"M/MOD"
089D MSMOD:
089D BD 02 10 JSR DOLST
08A0 03 1F 03 4E 03 1F 02 E9 FDB DUPP,ZLESS,DUPP,TOR
08A8 02 3E 08 B4 FDB QBRAN,MMOD1
08AC 06 F6 02 E9 07 17 02 C9 FDB NEGAT,TOR,DNEGA,RFROM
08B4 02 E9 03 1F 03 4E MMOD1: FDB TOR,DUPP,ZLESS
08BA 02 3E 08 C2 FDB QBRAN,MMOD2
08BE 02 DC 06 CD FDB RAT,PLUS
08C2 02 C9 08 31 02 C9 MMOD2: FDB RFROM,UMMOD,RFROM
08C8 02 3E 08 D2 FDB QBRAN,MMOD3
08CC 03 2E 06 F6 03 2E FDB SWAP,NEGAT,SWAP
08D2 02 6F MMOD3: FDB EXIT
08D4 ;
08D4 ; /MOD ( n n -- r q )
08D4 ; Signed divide. Return mod and quotient.
08D4 ;
08D4 08 DD 08 97 FDB SLMOD,L860
08D8 04 2F 4D 4F 44 L870: FCB 4,"/MOD"
08DD BD 02 10 SLMOD: JSR DOLST
08E0 03 41 03 4E 03 2E 08 9D 02 6F FDB OVER,ZLESS,SWAP,MSMOD,EXIT
08EA ;
08EA ; MOD ( n n -- r )
08EA ; Signed divide. Return mod only.
08EA ;
08EA 08 F2 08 D8 FDB MODD,L870
08EE 03 4D 4F 44 L880: FCB 3,"MOD"
08F2 BD 02 10 MODD: JSR DOLST
08F5 08 DD 03 13 02 6F FDB SLMOD,DROP,EXIT
08FB ;
08FB ; / ( n n -- q )
08FB ; Signed divide. Return quotient only.
08FB ;
08FB 09 01 08 EE FDB SLASH,L880
08FF 01 2F L890: FCB 1,"/"
0901 SLASH:
0901 BD 02 10 JSR DOLST
0904 08 DD 03 2E 03 13 02 6F FDB SLMOD,SWAP,DROP,EXIT
090C ;
090C ; Multiply
090C ;
090C ; UM* ( u u -- ud )
090C ; Unsigned multiply. Return double product.
090C ;
090C 09 14 08 FF FDB UMSTA,L890
0910 03 55 4D 2A L900: FCB 3,"UM*"
0914 UMSTA:
0914 8E 00 11 LDX #17 ; 16 adds and 17 shifts ...
0917 4F CLRA ; result high word
0918 5F CLRB
0919 20 06 BRA UUMSTA3
091B 24 02 UUMSTA1: BCC UUMSTA2
091D E3 E4 ADDD ,s
091F 46 UUMSTA2: RORA
0920 56 RORB ; low, result high word
0921 66 62 UUMSTA3: ROR 2,s
0923 66 63 ROR 3,s ; shift multiplier low, result low word
0925 30 1F LEAX -1,x
0927 26 F2 BNE UUMSTA1
0929 ED E4 STD ,s
092B 37 80 PULU pc
092D ; slow HL ...
092D ; jsr DOLST
092D ; FDB DOLIT,0,SWAP,DOLIT,15,TOR
092D ;UMST1: FDB DUPP,UPLUS,TOR,TOR
092D ; FDB DUPP,UPLUS,RFROM,PLUS,RFROM
092D ; FDB QBRAN,UMST2
092D ; FDB TOR,OVER,UPLUS,RFROM,PLUS
092D ;UMST2: FDB DONXT,UMST1
092D ; FDB ROT,DROP,EXIT
092D ;
092D ; _UM* ( u u -- ud )
092D ; Unsigned multiply. Return double product.
092D ;
092D 09 36 09 10 FDB UUMSTA,L900
0931 04 5F 55 4D 2A L900A: FCB 4,"_UM*"
0936 UUMSTA:
0936 BD 02 10 JSR DOLST
0939 01 ED 00 00 03 2E 01 ED 00 0F 02 E9 FDB DOLIT,0,SWAP,DOLIT,15,TOR
0945 03 1F 03 D2 02 E9 02 E9 UMST1: FDB DUPP,UPLUS,TOR,TOR
094D 03 1F 03 D2 02 C9 06 CD 02 C9 FDB DUPP,UPLUS,RFROM,PLUS,RFROM
0957 02 3E 09 65 FDB QBRAN,UMST2
095B 02 E9 03 41 03 D2 02 C9 06 CD FDB TOR,OVER,UPLUS,RFROM,PLUS
0965 02 1F 09 45 UMST2: FDB DONXT,UMST1
0969 05 F6 03 13 02 6F FDB ROT,DROP,EXIT
096F ;
096F ; * ( n n -- n )
096F ; Signed multiply. Return single product.
096F ; XXX Not really signed, -200 -200 * -> -25536
096F ;
096F 09 75 09 31 FDB STAR,L900A
0973 01 2A L910: FCB 1,"*"
0975 STAR:
0975 BD 02 10 JSR DOLST
0978 09 85 03 13 02 6F FDB MSTAR,DROP,EXIT
097E ;
097E ; M* ( n n -- d )
097E ; Signed multiply. Return double product.
097E ;
097E 09 85 09 73 FDB MSTAR,L910
0982 02 4D 2A L920: FCB 2,"M*"
0985 MSTAR:
0985 BD 02 10 JSR DOLST
0988 06 1F 03 97 03 4E 02 E9 FDB DDUP,XORR,ZLESS,TOR
0990 07 3F 03 2E 07 3F 09 14 FDB ABSS,SWAP,ABSS,UMSTA
0998 02 C9 FDB RFROM
099A 02 3E 09 A0 FDB QBRAN,MSTA1
099E 07 17 FDB DNEGA
09A0 02 6F MSTA1: FDB EXIT
09A2 ;
09A2 ; */MOD ( n1 n2 n3 -- r q )
09A2 ; Multiply n1 and n2, then divide by n3. Return mod and quotient.
09A2 ;
09A2 09 AC 09 82 FDB SSMOD,L920
09A6 05 2A 2F 4D 4F 44 L930: FCB 5,"*/MOD"
09AC BD 02 10 SSMOD: JSR DOLST
09AF 02 E9 09 85 02 C9 08 9D 02 6F FDB TOR,MSTAR,RFROM,MSMOD,EXIT
09B9 ;
09B9 ; */ ( n1 n2 n3 -- q )
09B9 ; Multiply n1 by n2, then divide by n3. Return quotient only.
09B9 ;
09B9 09 C0 09 A6 FDB STASL,L930
09BD 02 2A 2F L940: FCB 2,"*/"
09C0 BD 02 10 STASL: JSR DOLST
09C3 09 AC 03 2E 03 13 02 6F FDB SSMOD,SWAP,DROP,EXIT
09CB ;
09CB ; Miscellaneous
09CB ;
09CB ; CELL+ ( a -- a )
09CB ; Add cell size in byte to address.
09CB ;
09CB 09 D5 09 BD FDB CELLP,L940
09CF 05 43 45 4C 4C 2B L950: FCB 5,"CELL+"
09D5 BD 02 10 CELLP: JSR DOLST
09D8 01 FE FDB DOCLIT
09DA 02 FCB CELLL
09DB 06 CD 02 6F FDB PLUS,EXIT
09DF ;
09DF ; CELL- ( a -- a )
09DF ; Subtract cell size in byte from address.
09DF ;
09DF 09 E9 09 CF FDB CELLM,L950
09E3 05 43 45 4C 4C 2D L960: FCB 5,"CELL-"
09E9 BD 02 10 CELLM: JSR DOLST
09EC 01 FE FDB DOCLIT
09EE FE FCB 0-CELLL
09EF 06 CD 02 6F FDB PLUS,EXIT
09F3 ;
09F3 ; CELLS ( n -- n )
09F3 ; Multiply tos by cell size in bytes.
09F3 ;
09F3 09 FD 09 E3 FDB CELLS,L960
09F7 05 43 45 4C 4C 53 L970: FCB 5,"CELLS"
09FD BD 02 10 CELLS: JSR DOLST
0A00 01 FE FDB DOCLIT
0A02 02 FCB CELLL
0A03 09 75 02 6F FDB STAR,EXIT
0A07 ;
0A07 ; ALIGNED ( b -- a )
0A07 ; Align address to the cell boundary.
0A07 ;
0A07 0A 13 09 F7 FDB ALGND,L970
0A0B 07 41 4C 49 47 4E 45 44 L975: FCB 7,"ALIGNED"
0A13 BD 02 10 ALGND: JSR DOLST
0A16 02 6F FDB EXIT
0A18 ;
0A18 ; BL ( -- 32 )
0A18 ; Return 32, the blank character.
0A18 ;
0A18 0A 1F 0A 0B FDB BLANK,L975
0A1C 02 42 4C L980: FCB 2,"BL"
0A1F BLANK:
0A1F BD 03 ED JSR DOCONST
0A22 FDB ' '
0A22 ; jsr DOLST
0A22 ; FDB DOLIT,' ',EXIT
0A22 ;
0A22 ; >CHAR ( c -- c )
0A22 ; Filter non-printing characters.
0A22 ;
0A22 0A 2C 0A 1C FDB TCHAR,L980
0A26 05 3E 43 48 41 52 L990: FCB 5,">CHAR"
0A2C BD 02 10 TCHAR: JSR DOLST
0A2F 01 ED 00 7F 03 74 03 1F FDB DOLIT,$7F,ANDD,DUPP ;mask msb
0A37 01 FE FDB DOCLIT
0A39 7F FCB 127
0A3A 0A 1F 07 D3 FDB BLANK,WITHI ;check for printable
0A3E 02 3E 0A 46 FDB QBRAN,TCHA1
0A42 03 13 01 ED FDB DROP,DOLIT,'_' ;replace non-printables
0A46 02 6F TCHA1: FDB EXIT
0A48 ;
0A48 ; DEPTH ( -- n )
0A48 ; Return the depth of the data stack.
0A48 ;
0A48 0A 52 0A 26 FDB DEPTH,L990
0A4C 05 44 45 50 54 48 L1000: FCB 5,"DEPTH"
0A52 BD 02 10 DEPTH: JSR DOLST
0A55 02 F7 04 6A 02 87 03 2E 07 2F FDB SPAT,SZERO,AT,SWAP,SUBB
0A5F 01 FE FDB DOCLIT
0A61 02 FCB CELLL
0A62 09 01 02 6F FDB SLASH,EXIT
0A66 ;
0A66 ; PICK ( ... +n -- ... w )
0A66 ; Copy the nth stack item to tos.
0A66 ;
0A66 0A 6F 0A 4C FDB PICK,L1000
0A6A 04 50 49 43 4B L1010: FCB 4,"PICK"
0A6F PICK:
0A6F EC E4 LDD ,s
0A71 C3 00 01 ADDD #1 ; correct index
0A74 58 ASLB ; CELLL* (ASSERT: CELLL=2!!!)
0A75 49 ROLA
0A76 AE EB LDX d,s ; pick value
0A78 AF E4 STX ,s ; replace TOP
0A7A 37 80 PULU pc
0A7C ; slow HL ...
0A7C ; jsr DOLST
0A7C ; FDB PLUS1,CELLS
0A7C ; FDB SPAT,PLUS,AT,EXIT
0A7C ;
0A7C ;
0A7C ; ROLL ( ... +n -- ... w )
0A7C ; Copy the nth stack item to tos.
0A7C ;
0A7C 0A 85 0A 6A FDB ROLL,L1010
0A80 04 52 4F 4C 4C L1015: FCB 4,"ROLL"
0A85 ROLL:
0A85 ; XXX als Primitive!
0A85 ; slow HL ...
0A85 BD 02 10 JSR DOLST
0A88 03 1F 04 0F FDB DUPP,TWO
0A8C 07 83 02 3E 0A 98 FDB LESS,QBRAN,ROL1
0A92 03 13 02 55 0A A6 FDB DROP,BRAN,ROL2
0A98 03 2E 02 E9 04 04 ROL1: FDB SWAP,TOR,ONE
0A9E 07 2F FDB SUBB
0AA0 0A 85 02 C9 03 2E FDB ROLL,RFROM,SWAP
0AA6 02 6F ROL2: FDB EXIT
0AA8 ;
0AA8 ; Memory access
0AA8 ;
0AA8 ; +! ( n a -- )
0AA8 ; Add n to the contents at address a.
0AA8 ;
0AA8 0A AF 0A 80 FDB PSTOR,L1015
0AAC 02 2B 21 L1020: FCB 2,"+!"
0AAF PSTOR:
0AAF 35 10 PULS x ; address
0AB1 35 06 PULS d ; value
0AB3 E3 84 ADDD ,x ; add to value from address
0AB5 ED 84 STD ,x ; store back
0AB7 37 80 PULU pc
0AB9 ;
0AB9 ; XXX als Primitive!
0AB9 ; slow HL ...
0AB9 ; jsr DOLST
0AB9 ; FDB SWAP,OVER,AT,PLUS
0AB9 ; FDB SWAP,STORE,EXIT
0AB9 ;
0AB9 ; 2! ( d a -- )
0AB9 ; Store the double integer to address a.
0AB9 ;
0AB9 0A C0 0A AC FDB DSTOR,L1020
0ABD 02 32 21 L1030: FCB 2,"2!"
0AC0 DSTOR:
0AC0 ; XXX als Primitive!
0AC0 ; slow HL ...
0AC0 BD 02 10 JSR DOLST
0AC3 03 2E 03 41 02 79 FDB SWAP,OVER,STORE
0AC9 09 D5 02 79 02 6F FDB CELLP,STORE,EXIT
0ACF ;
0ACF ; 2@ ( a -- d )
0ACF ; Fetch double integer from address a.
0ACF ;
0ACF 0A D6 0A BD FDB DAT,L1030
0AD3 02 32 40 L1040: FCB 2,"2@"
0AD6 DAT:
0AD6 ; XXX als Primitive!
0AD6 ; slow HL ...
0AD6 BD 02 10 JSR DOLST
0AD9 03 1F 09 D5 02 87 FDB DUPP,CELLP,AT
0ADF 03 2E 02 87 02 6F FDB SWAP,AT,EXIT
0AE5 ;
0AE5 ; COUNT ( b -- b +n )
0AE5 ; Return count byte of a string and add 1 to byte address.
0AE5 ;
0AE5 0A EF 0A D3 FDB COUNT,L1040
0AE9 05 43 4F 55 4E 54 L1050: FCB 5,"COUNT"
0AEF BD 02 10 COUNT: JSR DOLST
0AF2 03 1F 06 94 FDB DUPP,PLUS1
0AF6 03 2E 02 A3 02 6F FDB SWAP,CAT,EXIT
0AFC ;
0AFC ; HERE ( -- a )
0AFC ; Return the top of the code dictionary.
0AFC ;
0AFC 0B 05 0A E9 FDB HERE,L1050
0B00 04 48 45 52 45 L1060: FCB 4,"HERE"
0B05 BD 02 10 HERE: JSR DOLST
0B08 05 91 02 87 02 6F FDB CP,AT,EXIT
0B0E ;
0B0E ; PAD ( -- a )
0B0E ; Return the address of the text buffer above the code dictionary.
0B0E ;
0B0E 0B 16 0B 00 FDB PAD,L1060
0B12 03 50 41 44 L1070: FCB 3,"PAD"
0B16 BD 02 10 PAD: JSR DOLST
0B19 0B 05 01 ED 00 50 06 CD 02 6F FDB HERE,DOLIT,80,PLUS,EXIT
0B23 ;
0B23 ; TIB ( -- a )
0B23 ; Return the address of the terminal input buffer.
0B23 ;
0B23 0B 2B 0B 12 FDB TIB,L1070
0B27 03 54 49 42 L1080: FCB 3,"TIB"
0B2B BD 02 10 TIB: JSR DOLST
0B2E 05 18 09 D5 02 87 02 6F FDB NTIB,CELLP,AT,EXIT
0B36 ;
0B36 ; @EXECUTE ( a -- )
0B36 ; Execute vector stored in address a.
0B36 ;
0B36 0B 43 0B 27 FDB ATEXE,L1080
0B3A 08 40 45 58 45 43 55 54 45 L1090: FCB 8,"@EXECUTE"
0B43 BD 02 10 ATEXE: JSR DOLST
0B46 02 87 05 E1 FDB AT,QDUP ;?address or zero
0B4A 02 3E 0B 50 FDB QBRAN,EXE1
0B4E 02 65 FDB EXECU ;execute if non-zero
0B50 02 6F EXE1: FDB EXIT
0B52 ;
0B52 ; CMOVE ( b1 b2 u -- )
0B52 ; Copy u bytes from b1 to b2.
0B52 ;
0B52 0B 5C 0B 3A FDB CMOVE,L1090
0B56 05 43 4D 4F 56 45 L1100: FCB 5,"CMOVE"
0B5C CMOVE:
0B5C 7E 0B 7F JMP CMOVEW
0B5F EC E4 LDD ,s ;count
0B61 27 18 BEQ CMOVE3 ;zero -> leave
0B63 5D TSTB ;count low
0B64 27 02 BEQ CMOVE1
0B66 6C E4 INC ,s ;ajust high for to-0 decrementation
0B68 CMOVE1:
0B68 AE 62 LDX 2,s ;to addr
0B6A EF 62 STU 2,s ;save reg on stack
0B6C EE 64 LDU 4,s ;from addr
0B6E A6 C0 CMOVE2: LDA ,u+
0B70 A7 80 STA ,x+ ;to
0B72 5A DECB ;low count
0B73 26 F9 BNE CMOVE2
0B75 6A E4 DEC ,s ;high count
0B77 26 F5 BNE CMOVE2
0B79 EE 62 LDU 2,s
0B7B 32 66 CMOVE3: LEAS 6,s
0B7D 37 80 PULU pc
0B7F ;
0B7F ; alternative, wordwise copy ...
0B7F EC E4 CMOVEW: LDD ,s
0B81 AE 62 LDX 2,s ; destination
0B83 10 AF E4 STY ,s ; save RP
0B86 EF 62 STU 2,s ; save IP
0B88 10 AE 64 LDY 4,s ; source
0B8B 44 LSRA ; divide by 2, count words
0B8C 56 RORB ;
0B8D 34 01 PSHS cc
0B8F 27 01 BEQ CMOVEW1 ; byte decrement correction
0B91 4C INCA ; byte decrement high byte correction
0B92 83 00 00 CMOVEW1: SUBD #0
0B95 27 0A BEQ CMOVEW3
0B97 EE A1 CMOVEW2: LDU ,y++
0B99 EF 81 STU ,x++ ; destination
0B9B 5A DECB ; count low
0B9C 26 F9 BNE CMOVEW2
0B9E 4A DECA ; count high (count to 0 corrected)
0B9F 26 F6 BNE CMOVEW2
0BA1 35 01 CMOVEW3: PULS CC
0BA3 24 04 BCC CMOVEW4
0BA5 A6 A4 LDA ,y
0BA7 A7 84 STA ,x
0BA9 35 60 CMOVEW4: PULS y,u
0BAB 32 62 LEAS 2,s ; drop 3rd parameter
0BAD 37 80 PULU pc ; next
0BAF ;
0BAF ; slow HL ...
0BAF ; jsr DOLST
0BAF ; FDB TOR
0BAF ; FDB BRAN,CMOV2
0BAF ;CMOV1: FDB TOR,DUPP,CAT
0BAF ; FDB RAT,CSTOR
0BAF ; FDB PLUS1
0BAF ; FDB RFROM,PLUS1
0BAF ;CMOV2: FDB DONXT,CMOV1
0BAF ; FDB DDROP,EXIT
0BAF ;
0BAF ;
0BAF ; FILL ( b u c -- )
0BAF ; Fill u bytes of character c to area beginning at b.
0BAF ;
0BAF 0B B8 0B 56 FDB FILL,L1100
0BB3 04 46 49 4C 4C L1110: FCB 4,"FILL"
0BB8 FILL:
0BB8 EC 62 LDD 2,s ;count
0BBA 27 12 BEQ NFILL3 ;zero -> leave
0BBC 5D TSTB ;count low
0BBD 27 02 BEQ NFILL1
0BBF 6C 62 INC 2,s ;ajust high for to-0 decrementation
0BC1 NFILL1:
0BC1 AE 64 LDX 4,s ;to addr
0BC3 A6 61 LDA 1,s ;fill byte, low byte from TOS
0BC5 NFILL2:
0BC5 A7 80 STA ,x+ ;to
0BC7 5A DECB ;low count
0BC8 26 FB BNE NFILL2
0BCA 6A 62 DEC 2,s ;high count
0BCC 26 F7 BNE NFILL2
0BCE 32 66 NFILL3: LEAS 6,s
0BD0 37 80 PULU pc
0BD2 ; slow HL ...
0BD2 ; jsr DOLST
0BD2 ; FDB SWAP,TOR,SWAP
0BD2 ; FDB BRAN,FILL2
0BD2 ;FILL1: FDB DDUP,CSTOR,PLUS1
0BD2 ;FILL2: FDB DONXT,FILL1
0BD2 ; FDB DDROP,EXIT
0BD2 ;
0BD2 ; -TRAILING ( b u -- b u )
0BD2 ; Adjust the count to eliminate trailing white space.
0BD2 ;
0BD2 0B E0 0B B3 FDB DTRAI,L1110
0BD6 09 2D 54 52 41 49 4C 49 4E 47 L1120: FCB 9,"-TRAILING"
0BE0 BD 02 10 DTRAI: JSR DOLST
0BE3 02 E9 FDB TOR
0BE5 02 55 0B FF FDB BRAN,DTRA2
0BE9 0A 1F 03 41 02 DC 06 CD 02 A3 07 83 DTRA1: FDB BLANK,OVER,RAT,PLUS,CAT,LESS
0BF5 02 3E 0B FF FDB QBRAN,DTRA2
0BF9 02 C9 06 94 02 6F FDB RFROM,PLUS1,EXIT
0BFF 02 1F 0B E9 DTRA2: FDB DONXT,DTRA1
0C03 03 F9 02 6F FDB ZERO,EXIT
0C07 ;
0C07 ; PACK$ ( b u a -- a )
0C07 ; Build a counted string with u characters from b. Null fill.
0C07 ;
0C07 0C 11 0B D6 FDB PACKS,L1120
0C0B 05 50 41 43 4B 24 L1130: FCB 5,"PACK$"
0C11 BD 02 10 PACKS: JSR DOLST
0C14 03 1F 02 E9 FDB DUPP,TOR ;strings only on cell boundary
0C18 06 1F 02 94 FDB DDUP,CSTOR
0C1C 06 94 FDB PLUS1 ;count mod cell
0C1E 06 1F 06 CD FDB DDUP,PLUS
0C22 03 F9 03 2E 02 94 FDB ZERO,SWAP,CSTOR ;null fill cell
0C28 03 2E 0B 5C 02 C9 02 6F FDB SWAP,CMOVE,RFROM,EXIT ;move string
0C30 ;
0C30 ; Numeric output, single precision
0C30 ;
0C30 ; DIGIT ( u -- c )
0C30 ; Convert digit u to a character.
0C30 ;
0C30 0C 3A 0C 0B FDB DIGIT,L1130
0C34 05 44 49 47 49 54 L1140: FCB 5,"DIGIT"
0C3A BD 02 10 DIGIT: JSR DOLST
0C3D 01 FE FDB DOCLIT
0C3F 09 FCB 9
0C40 03 41 07 83 FDB OVER,LESS
0C44 01 FE FDB DOCLIT
0C46 07 FCB 7
0C47 03 74 06 CD FDB ANDD,PLUS
0C4B 01 ED 06 CD 02 6F FDB DOLIT,'0',PLUS,EXIT
0C51 ;
0C51 ; EXTRACT ( n base -- n c )
0C51 ; Extract the least significant digit from n.
0C51 ;
0C51 0C 5D 0C 34 FDB EXTRC,L1140
0C55 07 45 58 54 52 41 43 54 L1150: FCB 7,"EXTRACT"
0C5D BD 02 10 EXTRC: JSR DOLST
0C60 03 F9 03 2E 08 31 FDB ZERO,SWAP,UMMOD
0C66 03 2E 0C 3A 02 6F FDB SWAP,DIGIT,EXIT
0C6C ;
0C6C ; <# ( -- )
0C6C ; Initiate the numeric output process.
0C6C ;
0C6C 0C 73 0C 55 FDB BDIGS,L1150
0C70 02 3C 23 L1160: FCB 2,"<#"
0C73 BD 02 10 BDIGS: JSR DOLST
0C76 0B 16 05 52 02 79 02 6F FDB PAD,HLD,STORE,EXIT
0C7E ;
0C7E ; HOLD ( c -- )
0C7E ; Insert a character into the numeric output string.
0C7E ;
0C7E ;
0C7E 0C 87 0C 70 FDB HOLD,L1160
0C82 04 48 4F 4C 44 L1170: FCB 4,"HOLD"
0C87 BD 02 10 HOLD: JSR DOLST
0C8A 05 52 02 87 06 A4 FDB HLD,AT,MINUS1
0C90 03 1F 05 52 02 79 02 94 02 6F FDB DUPP,HLD,STORE,CSTOR,EXIT
0C9A ;
0C9A ; # ( u -- u )
0C9A ; Extract one digit from u and append the digit to output string.
0C9A ;
0C9A 0C A0 0C 82 FDB DIG,L1170
0C9E 01 23 L1180: FCB 1,"#"
0CA0 BD 02 10 DIG: JSR DOLST
0CA3 04 E2 02 87 0C 5D 0C 87 02 6F FDB BASE,AT,EXTRC,HOLD,EXIT
0CAD ;
0CAD ; #S ( u -- 0 )
0CAD ; Convert u until all digits are added to the output string.
0CAD ;
0CAD 0C B4 0C 9E FDB DIGS,L1180
0CB1 02 23 53 L1190: FCB 2,"#S"
0CB4 BD 02 10 DIGS: JSR DOLST
0CB7 0C A0 03 1F DIGS1: FDB DIG,DUPP
0CBB 02 3E 0C C3 FDB QBRAN,DIGS2
0CBF 02 55 0C B7 FDB BRAN,DIGS1
0CC3 02 6F DIGS2: FDB EXIT
0CC5 ;
0CC5 ; SIGN ( n -- )
0CC5 ; Add a minus sign to the numeric output string.
0CC5 ;
0CC5 0C CE 0C B1 FDB SIGN,L1190
0CC9 04 53 49 47 4E L1200: FCB 4,"SIGN"
0CCE BD 02 10 SIGN: JSR DOLST
0CD1 03 4E FDB ZLESS
0CD3 02 3E 0C DB FDB QBRAN,SIGN1
0CD7 01 ED 0C 87 FDB DOLIT,'-',HOLD
0CDB 02 6F SIGN1: FDB EXIT
0CDD ;
0CDD ; #> ( w -- b u )
0CDD ; Prepare the output string to be TYPE'd.
0CDD ;
0CDD 0C E4 0C C9 FDB EDIGS,L1200
0CE1 02 23 3E L1210: FCB 2,"#>"
0CE4 BD 02 10 EDIGS: JSR DOLST
0CE7 03 13 05 52 02 87 FDB DROP,HLD,AT
0CED 0B 16 03 41 07 2F 02 6F FDB PAD,OVER,SUBB,EXIT
0CF5 ;
0CF5 ; str ( w -- b u )
0CF5 ; Convert a signed integer to a numeric string.
0CF5 ;
0CF5 0C FD 0C E1 FDB STR,L1210
0CF9 03 73 74 72 L1220: FCB 3,"str"
0CFD BD 02 10 STR: JSR DOLST
0D00 03 1F 02 E9 07 3F FDB DUPP,TOR,ABSS
0D06 0C 73 0C B4 02 C9 FDB BDIGS,DIGS,RFROM
0D0C 0C CE 0C E4 02 6F FDB SIGN,EDIGS,EXIT
0D12 ;
0D12 ; HEX ( -- )
0D12 ; Use radix 16 as base for numeric conversions.
0D12 ;
0D12 0D 1A 0C F9 FDB HEX,L1220
0D16 03 48 45 58 L1230: FCB 3,"HEX"
0D1A BD 02 10 HEX: JSR DOLST
0D1D 01 FE FDB DOCLIT
0D1F 10 FCB 16
0D20 04 E2 02 79 02 6F FDB BASE,STORE,EXIT
0D26 ;
0D26 ; DECIMAL ( -- )
0D26 ; Use radix 10 as base for numeric conversions.
0D26 ;
0D26 0D 32 0D 16 FDB DECIM,L1230
0D2A 07 44 45 43 49 4D 41 4C L1240: FCB 7,"DECIMAL"
0D32 BD 02 10 DECIM: JSR DOLST
0D35 01 FE FDB DOCLIT
0D37 0A FCB 10
0D38 04 E2 02 79 02 6F FDB BASE,STORE,EXIT
0D3E ;
0D3E ; Numeric input, single precision
0D3E ;
0D3E ; DIGIT? ( c base -- u t )
0D3E ; Convert a character to its numeric value. A flag indicates success.
0D3E ;
0D3E 0D 49 0D 2A FDB DIGTQ,L1240
0D42 06 44 49 47 49 54 3F L1250: FCB 6,"DIGIT?"
0D49 BD 02 10 DIGTQ: JSR DOLST
0D4C 02 E9 01 ED 07 2F FDB TOR,DOLIT,'0',SUBB
0D52 01 FE FDB DOCLIT
0D54 09 FCB 9
0D55 03 41 07 83 FDB OVER,LESS
0D59 02 3E 0D 6C FDB QBRAN,DGTQ1
0D5D 01 FE FDB DOCLIT
0D5F 07 FCB 7
0D60 07 2F FDB SUBB
0D62 03 1F 01 ED 00 0A 07 83 03 85 FDB DUPP,DOLIT,10,LESS,ORR
0D6C 03 1F 02 C9 07 6C 02 6F DGTQ1: FDB DUPP,RFROM,ULESS,EXIT
0D74 ;
0D74 ; NUMBER? ( a -- n T | a F )
0D74 ; Convert a number string to integer. Push a flag on tos.
0D74 ;
0D74 0D 80 0D 42 FDB NUMBQ,L1250
0D78 07 4E 55 4D 42 45 52 3F L1260: FCB 7,"NUMBER?"
0D80 BD 02 10 NUMBQ: JSR DOLST
0D83 04 E2 02 87 02 E9 03 F9 03 41 0A EF FDB BASE,AT,TOR,ZERO,OVER,COUNT
0D8F 03 41 02 A3 01 ED 07 54 FDB OVER,CAT,DOLIT,'$',EQUAL
0D97 02 3E 0D A5 FDB QBRAN,NUMQ1
0D9B 0D 1A 03 2E 06 94 FDB HEX,SWAP,PLUS1
0DA1 03 2E 06 A4 FDB SWAP,MINUS1
0DA5 03 41 02 A3 01 ED 07 54 02 E9 NUMQ1: FDB OVER,CAT,DOLIT,'-',EQUAL,TOR
0DAF 03 2E 02 DC 07 2F 03 2E 02 DC 06 CD 05 E1 FDB SWAP,RAT,SUBB,SWAP,RAT,PLUS,QDUP
0DBD 02 3E 0E 05 FDB QBRAN,NUMQ6
0DC1 06 A4 02 E9 FDB MINUS1,TOR
0DC5 03 1F 02 E9 02 A3 04 E2 02 87 0D 49 NUMQ2: FDB DUPP,TOR,CAT,BASE,AT,DIGTQ
0DD1 02 3E 0D F9 FDB QBRAN,NUMQ4
0DD5 03 2E 04 E2 02 87 09 75 06 CD 02 C9 FDB SWAP,BASE,AT,STAR,PLUS,RFROM
0DE1 06 94 FDB PLUS1
0DE3 02 1F 0D C5 FDB DONXT,NUMQ2
0DE7 02 DC 03 2E 03 13 FDB RAT,SWAP,DROP
0DED 02 3E 0D F3 FDB QBRAN,NUMQ3
0DF1 06 F6 FDB NEGAT
0DF3 03 2E NUMQ3: FDB SWAP
0DF5 02 55 0E 03 FDB BRAN,NUMQ5
0DF9 02 C9 02 C9 06 0D 06 0D 03 F9 NUMQ4: FDB RFROM,RFROM,DDROP,DDROP,ZERO
0E03 03 1F NUMQ5: FDB DUPP
0E05 02 C9 06 0D NUMQ6: FDB RFROM,DDROP
0E09 02 C9 04 E2 02 79 02 6F FDB RFROM,BASE,STORE,EXIT
0E11 ;
0E11 ; Basic I/O
0E11 ;
0E11 ; ?KEY ( -- c T | F )
0E11 ; Return input character and true, or a false if no input.
0E11 ;
0E11 ;
0E11 0E 1A 0D 78 FDB QKEY,L1260
0E15 04 3F 4B 45 59 L1270: FCB 4,"?KEY"
0E1A BD 02 10 QKEY: JSR DOLST
0E1D 04 86 0B 43 02 6F FDB TQKEY,ATEXE,EXIT
0E23 ;
0E23 ; KEY ( -- c )
0E23 ; Wait for and return an input character.
0E23 ;
0E23 0E 2B 0E 15 FDB KEY,L1270
0E27 03 4B 45 59 L1280: FCB 3,"KEY"
0E2B BD 02 10 KEY: JSR DOLST
0E2E 0E 1A KEY1: FDB QKEY
0E30 02 3E 0E 2E FDB QBRAN,KEY1
0E34 02 6F FDB EXIT
0E36 ;
0E36 ; EMIT ( c -- )
0E36 ; Send a character to the output device.
0E36 ;
0E36 0E 3F 0E 27 FDB EMIT,L1280
0E3A 04 45 4D 49 54 L1290: FCB 4,"EMIT"
0E3F BD 02 10 EMIT: JSR DOLST
0E42 04 95 0B 43 02 6F FDB TEMIT,ATEXE,EXIT
0E48 ;
0E48 ; NUF? ( -- t )
0E48 ; Return false if no input, else pause and if CR return true.
0E48 ;
0E48 0E 51 0E 3A FDB NUFQ,L1290
0E4C 04 4E 55 46 3F L1300: FCB 4,"NUF?"
0E51 BD 02 10 NUFQ: JSR DOLST
0E54 0E 1A 03 1F FDB QKEY,DUPP
0E58 02 3E 0E 65 FDB QBRAN,NUFQ1
0E5C 06 0D 0E 2B 01 FE FDB DDROP,KEY,DOCLIT
0E62 0D FCB CRR
0E63 07 54 FDB EQUAL
0E65 02 6F NUFQ1: FDB EXIT
0E67 ;
0E67 ; PACE ( -- )
0E67 ; Send a pace character for the file downloading process.
0E67 ;
0E67 0E 70 0E 4C FDB PACE,L1300
0E6B 04 50 41 43 45 L1310: FCB 4,"PACE"
0E70 BD 02 10 PACE: JSR DOLST
0E73 01 FE FDB DOCLIT
0E75 0B FCB 11
0E76 0E 3F 02 6F FDB EMIT,EXIT
0E7A ;
0E7A ; SPACE ( -- )
0E7A ; Send the blank character to the output device.
0E7A ;
0E7A 0E 84 0E 6B FDB SPACE,L1310
0E7E 05 53 50 41 43 45 L1320: FCB 5,"SPACE"
0E84 BD 02 10 SPACE: JSR DOLST
0E87 0A 1F 0E 3F 02 6F FDB BLANK,EMIT,EXIT
0E8D ;
0E8D ; SPACES ( +n -- )
0E8D ; Send n spaces to the output device.
0E8D ;
0E8D 0E 98 0E 7E FDB SPACS,L1320
0E91 06 53 50 41 43 45 53 L1330: FCB 6,"SPACES"
0E98 BD 02 10 SPACS: JSR DOLST
0E9B 03 F9 07 9C 02 E9 FDB ZERO,MAX,TOR
0EA1 02 55 0E A7 FDB BRAN,CHAR2
0EA5 0E 84 CHAR1: FDB SPACE
0EA7 02 1F 0E A5 CHAR2: FDB DONXT,CHAR1
0EAB 02 6F FDB EXIT
0EAD ;
0EAD ; TYPE ( b u -- )
0EAD ; Output u characters from b.
0EAD ;
0EAD 0E B6 0E 91 FDB TYPES,L1330
0EB1 04 54 59 50 45 L1340: FCB 4,"TYPE"
0EB6 BD 02 10 TYPES: JSR DOLST
0EB9 02 E9 FDB TOR
0EBB 02 55 0E C7 FDB BRAN,TYPE2
0EBF 03 1F 02 A3 0E 3F TYPE1: FDB DUPP,CAT,EMIT
0EC5 06 94 FDB PLUS1
0EC7 02 1F 0E BF TYPE2: FDB DONXT,TYPE1
0ECB 03 13 02 6F FDB DROP,EXIT
0ECF ;
0ECF ; CR ( -- )
0ECF ; Output a carriage return and a line feed.
0ECF ;
0ECF 0E D6 0E B1 FDB CR,L1340
0ED3 02 43 52 L1350: FCB 2,"CR"
0ED6 BD 02 10 CR: JSR DOLST
0ED9 01 FE FDB DOCLIT
0EDB 0D FCB CRR
0EDC 0E 3F FDB EMIT
0EDE 01 FE FDB DOCLIT
0EE0 0A FCB LF
0EE1 0E 3F 02 6F FDB EMIT,EXIT
0EE5 ;
0EE5 ; do$ ( -- a )
0EE5 ; Return the address of a compiled string.
0EE5 ;
0EE5 0E ED 0E D3 FDB DOSTR,L1350
0EE9 43 64 6F 24 L1360: FCB COMPO+3,"do$"
0EED BD 02 10 DOSTR: JSR DOLST
0EF0 02 C9 02 DC 02 C9 0A EF 06 CD FDB RFROM,RAT,RFROM,COUNT,PLUS
0EFA 0A 13 02 E9 03 2E 02 E9 02 6F FDB ALGND,TOR,SWAP,TOR,EXIT
0F04 ;
0F04 ; $"| ( -- a )
0F04 ; Run time routine compiled by $". Return address of a compiled string.
0F04 ;
0F04 0F 09 0E E9 FDB STRQP,L1360
0F08 43 L1370: FCB COMPO+3,"$",$22,"|"
0F09 BD 02 10 STRQP: JSR DOLST
0F0C 0E ED 02 6F FDB DOSTR,EXIT ;force a call to do$
0F10 ;
0F10 ; ."| ( -- )
0F10 ; Run time routine of ." . Output a compiled string.
0F10 ;
0F10 0F 15 0F 08 FDB DOTQP,L1370
0F14 43 L1380: FCB COMPO+3,".",$22,"|"
0F15 BD 02 10 DOTQP: JSR DOLST
0F18 0E ED 0A EF 0E B6 02 6F FDB DOSTR,COUNT,TYPES,EXIT
0F20 ;
0F20 ; .R ( n +n -- )
0F20 ; Display an integer in a field of n columns, right justified.
0F20 ;
0F20 0F 27 0F 14 FDB DOTR,L1380
0F24 02 2E 52 L1390: FCB 2,".R"
0F27 BD 02 10 DOTR: JSR DOLST
0F2A 02 E9 0C FD 02 C9 03 41 07 2F FDB TOR,STR,RFROM,OVER,SUBB
0F34 0E 98 0E B6 02 6F FDB SPACS,TYPES,EXIT
0F3A ;
0F3A ; U.R ( u +n -- )
0F3A ; Display an unsigned integer in n column, right justified.
0F3A ;
0F3A 0F 42 0F 24 FDB UDOTR,L1390
0F3E 03 55 2E 52 L1400: FCB 3,"U.R"
0F42 BD 02 10 UDOTR: JSR DOLST
0F45 02 E9 0C 73 0C B4 0C E4 FDB TOR,BDIGS,DIGS,EDIGS
0F4D 02 C9 03 41 07 2F FDB RFROM,OVER,SUBB
0F53 0E 98 0E B6 02 6F FDB SPACS,TYPES,EXIT
0F59 ;
0F59 ; U. ( u -- )
0F59 ; Display an unsigned integer in free format.
0F59 ;
0F59 0F 60 0F 3E FDB UDOT,L1400
0F5D 02 55 2E L1410: FCB 2,"U."
0F60 BD 02 10 UDOT: JSR DOLST
0F63 0C 73 0C B4 0C E4 FDB BDIGS,DIGS,EDIGS
0F69 0E 84 0E B6 02 6F FDB SPACE,TYPES,EXIT
0F6F ;
0F6F ; . ( w -- )
0F6F ; Display an integer in free format, preceeded by a space.
0F6F ;
0F6F 0F 75 0F 5D FDB DOT,L1410
0F73 01 2E L1420: FCB 1,"."
0F75 BD 02 10 DOT: JSR DOLST
0F78 04 E2 02 87 01 FE FDB BASE,AT,DOCLIT
0F7E 0A FCB 10
0F7F 03 97 FDB XORR ;?decimal
0F81 02 3E 0F 89 FDB QBRAN,DOT1
0F85 0F 60 02 6F FDB UDOT,EXIT ;no, display unsigned
0F89 0C FD 0E 84 0E B6 02 6F DOT1: FDB STR,SPACE,TYPES,EXIT
0F91 ;
0F91 ; ? ( a -- )
0F91 ; Display the contents in a memory cell.
0F91 ;
0F91 0F 97 0F 73 FDB QUEST,L1420
0F95 01 3F L1430: FCB 1,"?"
0F97 BD 02 10 QUEST: JSR DOLST
0F9A 02 87 0F 75 02 6F FDB AT,DOT,EXIT
0FA0 ;
0FA0 ; Parsing
0FA0 ;
0FA0 ; parse ( b u c -- b u delta ; <string> )
0FA0 ; Scan string delimited by c. Return found string and its offset.
0FA0 ;
0FA0 0F AA 0F 95 FDB PARS,L1430
0FA4 05 70 61 72 73 65 L1440: FCB 5,"parse"
0FAA BD 02 10 PARS: JSR DOLST
0FAD 04 EF 02 79 03 41 02 E9 03 1F FDB TEMP,STORE,OVER,TOR,DUPP
0FB7 02 3E 10 33 FDB QBRAN,PARS8
0FBB 06 A4 04 EF 02 87 0A 1F 07 54 FDB MINUS1,TEMP,AT,BLANK,EQUAL
0FC5 02 3E 0F ED FDB QBRAN,PARS3
0FC9 02 E9 FDB TOR
0FCB 0A 1F 03 41 02 A3 PARS1: FDB BLANK,OVER,CAT
0FD1 07 2F 03 4E 06 DD FDB SUBB,ZLESS,INVER
0FD7 02 3E 0F EB FDB QBRAN,PARS2
0FDB 06 94 FDB PLUS1
0FDD 02 1F 0F CB FDB DONXT,PARS1
0FE1 02 C9 03 13 03 F9 03 1F 02 6F FDB RFROM,DROP,ZERO,DUPP,EXIT
0FEB 02 C9 PARS2: FDB RFROM
0FED 03 41 03 2E PARS3: FDB OVER,SWAP
0FF1 02 E9 FDB TOR
0FF3 04 EF 02 87 03 41 02 A3 07 2F PARS4: FDB TEMP,AT,OVER,CAT,SUBB
0FFD 04 EF 02 87 0A 1F 07 54 FDB TEMP,AT,BLANK,EQUAL
1005 02 3E 10 0B FDB QBRAN,PARS5
1009 03 4E FDB ZLESS
100B 02 3E 10 1D PARS5: FDB QBRAN,PARS6
100F 06 94 FDB PLUS1
1011 02 1F 0F F3 FDB DONXT,PARS4
1015 03 1F 02 E9 FDB DUPP,TOR
1019 02 55 10 27 FDB BRAN,PARS7
101D 02 C9 03 13 03 1F PARS6: FDB RFROM,DROP,DUPP
1023 06 94 02 E9 FDB PLUS1,TOR
1027 03 41 07 2F PARS7: FDB OVER,SUBB
102B 02 C9 02 C9 07 2F 02 6F FDB RFROM,RFROM,SUBB,EXIT
1033 03 41 02 C9 07 2F 02 6F PARS8: FDB OVER,RFROM,SUBB,EXIT
103B ;
103B ; PARSE ( c -- b u ; <string> )
103B ; Scan input stream and return counted string delimited by c.
103B ;
103B 10 45 0F A4 FDB PARSE,L1440
103F 05 50 41 52 53 45 L1450: FCB 5,"PARSE"
1045 BD 02 10 PARSE: JSR DOLST
1048 02 E9 0B 2B 05 0A 02 87 06 CD FDB TOR,TIB,INN,AT,PLUS ;current input buffer pointer
1052 05 18 02 87 05 0A 02 87 07 2F FDB NTIB,AT,INN,AT,SUBB ;remaining count
105C 02 C9 0F AA 05 0A 0A AF 02 6F FDB RFROM,PARS,INN,PSTOR,EXIT
1066 ;
1066 ; .( ( -- )
1066 ; Output following string up to next ) .
1066 ;
1066 10 6D 10 3F FDB DOTPR,L1450
106A 82 2E 28 L1460: FCB IMEDD+2,".("
106D BD 02 10 DOTPR: JSR DOLST
1070 01 ED 10 45 0E B6 02 6F FDB DOLIT,')',PARSE,TYPES,EXIT
1078 ;
1078 ; ( ( -- )
1078 ; Ignore following string up to next ) . A comment.
1078 ;
1078 10 7E 10 6A FDB PAREN,L1460
107C 81 28 L1470: FCB IMEDD+1,"("
107E BD 02 10 PAREN: JSR DOLST
1081 01 ED 10 45 06 0D 02 6F FDB DOLIT,')',PARSE,DDROP,EXIT
1089 ;
1089 ; \ ( -- )
1089 ; Ignore following text till the end of line.
1089 ;
1089 10 8F 10 7C FDB BKSLA,L1470
108D 81 5C L1480: FCB IMEDD+1,92
108F BD 02 10 BKSLA: JSR DOLST
1092 05 18 02 87 05 0A 02 79 02 6F FDB NTIB,AT,INN,STORE,EXIT
109C ;
109C ; CHAR ( -- c )
109C ; Parse next word and return its first character.
109C ;
109C 10 A5 10 8D FDB CHAR,L1480
10A0 04 43 48 41 52 L1490: FCB 4,"CHAR"
10A5 BD 02 10 CHAR: JSR DOLST
10A8 0A 1F 10 45 03 13 02 A3 02 6F FDB BLANK,PARSE,DROP,CAT,EXIT
10B2 ;
10B2 ; TOKEN ( -- a ; <string> )
10B2 ; Parse a word from input stream and copy it to name dictionary.
10B2 ;
10B2 10 BC 10 A0 FDB TOKEN,L1490
10B6 05 54 4F 4B 45 4E L1500: FCB 5,"TOKEN"
10BC BD 02 10 TOKEN: JSR DOLST
10BF 0A 1F 10 45 01 FE FDB BLANK,PARSE,DOCLIT
10C5 1F FCB 31
10C6 07 B5 FDB MIN
10C8 05 9D 02 87 03 41 07 2F 09 E9 FDB NP,AT,OVER,SUBB,CELLM
10D2 0C 11 02 6F FDB PACKS,EXIT
10D6 ;
10D6 ; WORD ( c -- a ; <string> )
10D6 ; Parse a word from input stream and copy it to code dictionary.
10D6 ;
10D6 10 DF 10 B6 FDB WORD,L1500
10DA 04 57 4F 52 44 L1510: FCB 4,"WORD"
10DF BD 02 10 WORD: JSR DOLST
10E2 10 45 0B 05 0C 11 02 6F FDB PARSE,HERE,PACKS,EXIT
10EA ;
10EA ; Dictionary search
10EA ;
10EA ; NAME> ( na -- ca )
10EA ; Return a code address given a name address.
10EA ;
10EA 10 F4 10 DA FDB NAMET,L1510
10EE 05 4E 41 4D 45 3E L1520: FCB 5,"NAME>"
10F4 BD 02 10 NAMET: JSR DOLST
10F7 09 E9 09 E9 02 87 02 6F FDB CELLM,CELLM,AT,EXIT
10FF ;
10FF ; SAME? ( a a u -- a a f \ -0+ )
10FF ; Compare u bytes in two strings. Return 0 if identical.
10FF ;
10FF 11 09 10 EE FDB SAMEQ,L1520
1103 05 53 41 4D 45 3F L1530: FCB 5,"SAME?"
1109 BD 02 10 SAMEQ: JSR DOLST
110C 02 E9 FDB TOR
110E 02 55 11 30 FDB BRAN,SAME2
1112 03 41 02 DC 06 CD 02 A3 SAME1: FDB OVER,RAT,PLUS,CAT
111A 03 41 02 DC 06 CD 02 A3 FDB OVER,RAT,PLUS,CAT
1122 07 2F 05 E1 FDB SUBB,QDUP
1126 02 3E 11 30 FDB QBRAN,SAME2
112A 02 C9 03 13 02 6F FDB RFROM,DROP,EXIT
1130 02 1F 11 12 SAME2: FDB DONXT,SAME1
1134 01 ED 00 00 02 6F FDB DOLIT,0,EXIT
113A ;
113A ; find ( a va -- ca na | a F )
113A ; Search a vocabulary for a string. Return ca and na if succeeded.
113A ;
113A 11 43 11 03 FDB FIND,L1530
113E 04 66 69 6E 64 L1540: FCB 4,"find"
1143 BD 02 10 FIND: JSR DOLST
1146 03 2E 03 1F 02 A3 06 A4 FDB SWAP,DUPP,CAT,MINUS1
114E 04 EF 02 79 FDB TEMP,STORE
1152 03 1F 02 87 02 E9 09 D5 03 2E FDB DUPP,AT,TOR,CELLP,SWAP
115C 02 87 03 1F FIND1: FDB AT,DUPP
1160 02 3E 11 8A FDB QBRAN,FIND6
1164 03 1F 02 87 01 ED 1F 7F 03 74 02 DC 03 97 FDB DUPP,AT,DOLIT,MASKK,ANDD,RAT,XORR
1172 02 3E 11 7E FDB QBRAN,FIND2
1176 09 D5 04 1B FDB CELLP,MONE
117A 02 55 11 86 FDB BRAN,FIND3
117E 09 D5 04 EF 02 87 11 09 FIND2: FDB CELLP,TEMP,AT,SAMEQ
1186 02 55 11 96 FIND3: FDB BRAN,FIND4
118A 02 C9 03 13 FIND6: FDB RFROM,DROP
118E 03 2E 09 E9 03 2E 02 6F FDB SWAP,CELLM,SWAP,EXIT
1196 02 3E 11 A2 FIND4: FDB QBRAN,FIND5
119A 09 E9 09 E9 FDB CELLM,CELLM
119E 02 55 11 5C FDB BRAN,FIND1
11A2 02 C9 03 13 03 2E 03 13 FIND5: FDB RFROM,DROP,SWAP,DROP
11AA 09 E9 FDB CELLM
11AC 03 1F 10 F4 03 2E 02 6F FDB DUPP,NAMET,SWAP,EXIT
11B4 ;
11B4 ; NAME? ( a -- ca na | a F )
11B4 ; Search all context vocabularies for a string.
11B4 ;
11B4 11 BE 11 3E FDB NAMEQ,L1540
11B8 05 4E 41 4D 45 3F L1550: FCB 5,"NAME?"
11BE BD 02 10 NAMEQ: JSR DOLST
11C1 05 74 03 1F 0A D6 03 97 FDB CNTXT,DUPP,DAT,XORR
11C9 02 3E 11 CF FDB QBRAN,NAMQ1
11CD 09 E9 FDB CELLM
11CF 02 E9 NAMQ1: FDB TOR
11D1 02 C9 09 D5 03 1F 02 E9 NAMQ2: FDB RFROM,CELLP,DUPP,TOR
11D9 02 87 05 E1 FDB AT,QDUP
11DD 02 3E 11 EF FDB QBRAN,NAMQ3
11E1 11 43 05 E1 FDB FIND,QDUP
11E5 02 3E 11 D1 FDB QBRAN,NAMQ2
11E9 02 C9 03 13 02 6F FDB RFROM,DROP,EXIT
11EF 02 C9 03 13 NAMQ3: FDB RFROM,DROP
11F3 03 F9 02 6F FDB ZERO,EXIT
11F7 ;
11F7 ; Terminal response
11F7 ;
11F7 ; ^H ( bot eot cur -- bot eot cur )
11F7 ; Backup the cursor by one character.
11F7 ;
11F7 11 FE 11 B8 FDB BKSP,L1550
11FB 02 5E 48 L1560: FCB 2,"^H"
11FE BD 02 10 BKSP: JSR DOLST
1201 02 E9 03 41 02 C9 03 2E 03 41 03 97 FDB TOR,OVER,RFROM,SWAP,OVER,XORR
120D 02 3E 12 29 FDB QBRAN,BACK1
1211 01 ED 00 08 04 C3 0B 43 06 A4 FDB DOLIT,BKSPP,TECHO,ATEXE,MINUS1
121B 0A 1F 04 C3 0B 43 FDB BLANK,TECHO,ATEXE
1221 01 ED 00 08 04 C3 0B 43 FDB DOLIT,BKSPP,TECHO,ATEXE
1229 02 6F BACK1: FDB EXIT
122B ;
122B ; TAP ( bot eot cur c -- bot eot cur )
122B ; Accept and echo the key stroke and bump the cursor.
122B ;
122B 12 33 11 FB FDB TAP,L1560
122F 03 54 41 50 L1570: FCB 3,"TAP"
1233 BD 02 10 TAP: JSR DOLST
1236 03 1F 04 C3 0B 43 FDB DUPP,TECHO,ATEXE
123C 03 41 02 94 06 94 02 6F FDB OVER,CSTOR,PLUS1,EXIT
1244 ;
1244 ; kTAP ( bot eot cur c -- bot eot cur )
1244 ; Process a key stroke, CR or backspace.
1244 ;
1244 12 4D 12 2F FDB KTAP,L1570
1248 04 6B 54 41 50 L1580: FCB 4,"kTAP"
124D BD 02 10 KTAP: JSR DOLST
1250 03 1F 01 FE FDB DUPP,DOCLIT
1254 0D FCB CRR
1255 03 97 FDB XORR
1257 02 3E 12 7B FDB QBRAN,KTAP2
125B 03 1F 01 ED 00 08 03 97 FDB DUPP,DOLIT,BKSPP,XORR
1263 03 2E 01 ED 00 7F 03 97 03 74 FDB SWAP,DOLIT,BKSPP2,XORR,ANDD
126D 02 3E 12 77 FDB QBRAN,KTAP1
1271 0A 1F 12 33 02 6F FDB BLANK,TAP,EXIT
1277 11 FE 02 6F KTAP1: FDB BKSP,EXIT
127B 03 13 03 2E 03 13 03 1F 02 6F KTAP2: FDB DROP,SWAP,DROP,DUPP,EXIT
1285 ;
1285 ; accept ( b u -- b u )
1285 ; Accept characters to input buffer. Return with actual count.
1285 ;
1285 12 90 12 48 FDB ACCEP,L1580
1289 06 41 43 43 45 50 54 L1590: FCB 6,"ACCEPT"
1290 BD 02 10 ACCEP: JSR DOLST
1293 03 41 06 CD 03 41 FDB OVER,PLUS,OVER
1299 06 1F 03 97 ACCP1: FDB DDUP,XORR
129D 02 3E 12 BF FDB QBRAN,ACCP4
12A1 0E 2B 03 1F FDB KEY,DUPP
12A5 ; FDB BLANK,SUBB,DOLIT,95,ULESS
12A5 0A 1F 01 ED 00 7F 07 D3 FDB BLANK,DOLIT,127,WITHI
12AD 02 3E 12 B7 FDB QBRAN,ACCP2
12B1 12 33 FDB TAP
12B3 02 55 12 BB FDB BRAN,ACCP3
12B7 04 B4 0B 43 ACCP2: FDB TTAP,ATEXE
12BB 02 55 12 99 ACCP3: FDB BRAN,ACCP1
12BF 03 13 03 41 07 2F 02 6F ACCP4: FDB DROP,OVER,SUBB,EXIT
12C7 ;
12C7 ; EXPECT ( b u -- )
12C7 ; Accept input stream and store count in SPAN.
12C7 ;
12C7 12 D2 12 89 FDB EXPEC,L1590
12CB 06 45 58 50 45 43 54 L1600: FCB 6,"EXPECT"
12D2 BD 02 10 EXPEC: JSR DOLST
12D5 04 A6 0B 43 04 FD 02 79 03 13 02 6F FDB TEXPE,ATEXE,SPAN,STORE,DROP,EXIT
12E1 ;
12E1 ; QUERY ( -- )
12E1 ; Accept input stream to terminal input buffer.
12E1 ;
12E1 12 EB 12 CB FDB QUERY,L1600
12E5 05 51 55 45 52 59 L1610: FCB 5,"QUERY"
12EB BD 02 10 QUERY: JSR DOLST
12EE 0B 2B 01 FE FDB TIB,DOCLIT
12F2 50 FCB 80
12F3 04 A6 0B 43 05 18 02 79 FDB TEXPE,ATEXE,NTIB,STORE
12FB 03 13 03 F9 05 0A 02 79 02 6F FDB DROP,ZERO,INN,STORE,EXIT
1305 ;
1305 ; Error handling
1305 ;
1305 ; CATCH ( ca -- 0 | err# )
1305 ; Execute word at ca and set up an error frame for it.
1305 ;
1305 13 0F 12 E5 FDB CATCH,L1610
1309 05 43 41 54 43 48 L1620: FCB 5,"CATCH"
130F BD 02 10 CATCH: JSR DOLST
1312 02 F7 02 E9 05 63 02 87 02 E9 FDB SPAT,TOR,HANDL,AT,TOR ;save error frame
131C 02 B2 05 63 02 79 02 65 FDB RPAT,HANDL,STORE,EXECU ;execute
1324 02 C9 05 63 02 79 FDB RFROM,HANDL,STORE ;restore error frame
132A 02 C9 03 13 03 F9 02 6F FDB RFROM,DROP,ZERO,EXIT ;no error
1332 ;
1332 ; THROW ( err# -- err# )
1332 ; Reset system to current local error frame an update error flag.
1332 ;
1332 13 3C 13 09 FDB THROW,L1620
1336 05 54 48 52 4F 57 L1630: FCB 5,"THROW"
133C BD 02 10 THROW: JSR DOLST
133F 05 63 02 87 02 BE FDB HANDL,AT,RPSTO ;restore return stack
1345 02 C9 05 63 02 79 FDB RFROM,HANDL,STORE ;restore handler frame
134B 02 C9 03 2E 02 E9 03 05 FDB RFROM,SWAP,TOR,SPSTO ;restore data stack
1353 03 13 02 C9 02 6F FDB DROP,RFROM,EXIT
1359 ;
1359 ; NULL$ ( -- a )
1359 ; Return address of a null string with zero count.
1359 ;
1359 13 63 13 36 FDB NULLS,L1630
135D 05 4E 55 4C 4C 24 L1640: FCB 5,"NULL$"
1363 NULLS:
1363 ; jsr DOLST
1363 ; FDB DOVAR ;emulate CREATE
1363 BD 04 31 JSR FDOVAR
1366 00 00 FDB 0
1368 63 6F 79 6F 74 65 FCB 99,111,121,111,116,101
136E ;
136E ; ABORT ( -- )
136E ; Reset data stack and jump to QUIT.
136E ;
136E 13 78 13 5D FDB ABORT,L1640
1372 05 41 42 4F 52 54 L1650: FCB 5,"ABORT"
1378 BD 02 10 ABORT: JSR DOLST
137B 13 63 13 3C FDB NULLS,THROW
137F ;
137F ; abort" ( f -- )
137F ; Run time routine of ABORT" . Abort with a message.
137F ;
137F 13 84 13 72 FDB ABORQ,L1650
1383 46 L1660: FCB COMPO+6,"abort",'"'
1384 BD 02 10 ABORQ: JSR DOLST
1387 02 3E 13 8F FDB QBRAN,ABOR1 ;text flag
138B 0E ED 13 3C FDB DOSTR,THROW ;pass error string
138F 0E ED 03 13 02 6F ABOR1: FDB DOSTR,DROP,EXIT
1395 ;
1395 ; The text interpreter
1395 ;
1395 ; $INTERPRET ( a -- )
1395 ; Interpret a word. If failed, try to convert it to an integer.
1395 ;
1395 13 A4 13 83 FDB INTER,L1660
1399 0A 24 49 4E 54 45 52 50 52 45 54 L1670: FCB 10,"$INTERPRET"
13A4 BD 02 10 INTER: JSR DOLST
13A7 11 BE 05 E1 FDB NAMEQ,QDUP ;?defined
13AB 02 3E 13 CB FDB QBRAN,INTE1
13AF 02 87 01 ED 40 00 03 74 FDB AT,DOLIT,COMPO*256,ANDD ;?compile only lexicon bits
13B7 13 84 FDB ABORQ
13B9 0D 20 63 6F 6D 70 69 6C 65 20 6F 6E 6C 79 FCB 13," compile only"
13C7 02 65 02 6F FDB EXECU,EXIT ;execute defined word
13CB 05 45 0B 43 INTE1: FDB TNUMB,ATEXE
13CF 02 3E 13 D5 FDB QBRAN,INTE2
13D3 02 6F FDB EXIT
13D5 13 3C INTE2: FDB THROW
13D7 ;
13D7 ; [ ( -- )
13D7 ; Start the text interpreter.
13D7 ;
13D7 13 DD 13 99 FDB LBRAC,L1670
13DB 81 5B L1680: FCB IMEDD+1,"["
13DD BD 02 10 LBRAC: JSR DOLST
13E0 01 ED 13 A4 05 34 02 79 02 6F FDB DOLIT,INTER,TEVAL,STORE,EXIT
13EA ;
13EA ; .OK ( -- )
13EA ; Display 'ok' only while interpreting.
13EA ;
13EA 13 F2 13 DB FDB DOTOK,L1680
13EE 03 2E 4F 4B L1690: FCB 3,".OK"
13F2 BD 02 10 DOTOK: JSR DOLST
13F5 01 ED 13 A4 05 34 02 87 07 54 FDB DOLIT,INTER,TEVAL,AT,EQUAL
13FF 02 3E 14 09 FDB QBRAN,DOTO1
1403 0F 15 FDB DOTQP
1405 03 20 6F 6B FCB 3," ok"
1409 0E D6 02 6F DOTO1: FDB CR,EXIT
140D ;
140D ; ?STACK ( -- )
140D ; Abort if the data stack underflows.
140D ;
140D 14 18 13 EE FDB QSTAC,L1690
1411 06 3F 53 54 41 43 4B L1700: FCB 6,"?STACK"
1418 BD 02 10 QSTAC: JSR DOLST
141B 0A 52 03 4E FDB DEPTH,ZLESS ;check only for underflow
141F 13 84 FDB ABORQ
1421 0A 20 75 6E 64 65 72 66 6C 6F 77 FCB 10," underflow"
142C 02 6F FDB EXIT
142E ;
142E ; EVAL ( -- )
142E ; Interpret the input stream.
142E ;
142E 14 37 14 11 FDB EVAL,L1700
1432 04 45 56 41 4C L1710: FCB 4,"EVAL"
1437 BD 02 10 EVAL: JSR DOLST
143A 10 BC 03 1F 02 A3 EVAL1: FDB TOKEN,DUPP,CAT
1440 02 3E 14 4E FDB QBRAN,EVAL2
1444 05 34 0B 43 14 18 FDB TEVAL,ATEXE,QSTAC ;evaluate input, check stack
144A 02 55 14 3A FDB BRAN,EVAL1
144E 03 13 04 D4 0B 43 02 6F EVAL2: FDB DROP,TPROM,ATEXE,EXIT
1456 ;
1456 ; Shell
1456 ;
1456 ; PRESET ( -- )
1456 ; Reset data stack pointer and the terminal input buffer.
1456 ;
1456 14 61 14 32 FDB PRESE,L1710
145A 06 50 52 45 53 45 54 L1720: FCB 6,"PRESET"
1461 BD 02 10 PRESE: JSR DOLST
1464 04 6A 02 87 03 05 FDB SZERO,AT,SPSTO
146A 01 ED 6E 70 05 18 09 D5 02 79 02 6F FDB DOLIT,TIBB,NTIB,CELLP,STORE,EXIT
1476 ;
1476 ; xio ( a a a -- )
1476 ; Reset the I/O vectors 'EXPECT, 'TAP, 'ECHO and 'PROMPT.
1476 ;
1476 14 7E 14 5A FDB XIO,L1720
147A 43 78 69 6F L1730: FCB COMPO+3,"xio"
147E BD 02 10 XIO: JSR DOLST
1481 01 ED 12 90 04 A6 0A C0 FDB DOLIT,ACCEP,TEXPE,DSTOR
1489 04 C3 0A C0 02 6F FDB TECHO,DSTOR,EXIT
148F ;
148F ; FILE ( -- )
148F ; Select I/O vectors for file download.
148F ;
148F 14 98 14 7A FDB FILE,L1730
1493 04 46 49 4C 45 L1740: FCB 4,"FILE"
1498 BD 02 10 FILE: JSR DOLST
149B 01 ED 0E 70 01 ED 03 13 FDB DOLIT,PACE,DOLIT,DROP
14A3 01 ED 12 4D 14 7E 02 6F FDB DOLIT,KTAP,XIO,EXIT
14AB ;
14AB ; HAND ( -- )
14AB ; Select I/O vectors for terminal interface.
14AB ;
14AB 14 B4 14 93 FDB HAND,L1740
14AF 04 48 41 4E 44 L1750: FCB 4,"HAND"
14B4 BD 02 10 HAND: JSR DOLST
14B7 01 ED 13 F2 01 ED 0E 3F FDB DOLIT,DOTOK,DOLIT,EMIT
14BF 01 ED 12 4D 14 7E 02 6F FDB DOLIT,KTAP,XIO,EXIT
14C7 ;
14C7 ; I/O ( -- a )
14C7 ; Array to store default I/O vectors.
14C7 ;
14C7 14 CF 14 AF FDB ISLO,L1750
14CB 03 49 2F 4F L1760: FCB 3,"I/O"
14CF ISLO:
14CF ; jsr DOLST
14CF ; FDB DOVAR ;emulate CREATE
14CF BD 04 31 JSR FDOVAR
14D2 01 AB 01 CA FDB QRX,TXSTO ;default I/O vectors
14D6 ;
14D6 ; CONSOLE ( -- )
14D6 ; Initiate terminal interface.
14D6 ;
14D6 14 E2 14 CB FDB CONSO,L1760
14DA 07 43 4F 4E 53 4F 4C 45 L1770: FCB 7,"CONSOLE"
14E2 BD 02 10 CONSO: JSR DOLST
14E5 14 CF 0A D6 04 86 0A C0 FDB ISLO,DAT,TQKEY,DSTOR ;restore default I/O device
14ED 14 B4 02 6F FDB HAND,EXIT ;keyboard input
14F1 ;
14F1 ; QUIT ( -- )
14F1 ; Reset return stack pointer and start text interpreter.
14F1 ;
14F1 14 FA 14 DA FDB QUIT,L1770
14F5 04 51 55 49 54 L1780: FCB 4,"QUIT"
14FA BD 02 10 QUIT: JSR DOLST
14FD 04 77 02 87 02 BE FDB RZERO,AT,RPSTO ;reset return stack pointer
1503 13 DD QUIT1: FDB LBRAC
1505 12 EB QUIT2: FDB QUERY
1507 01 ED 14 37 13 0F 05 E1 FDB DOLIT,EVAL,CATCH,QDUP ;evaluate input
150F 02 3E 15 05 FDB QBRAN,QUIT2 ;continue till error
1513 04 D4 02 87 02 E9 FDB TPROM,AT,TOR ;save input device
1519 14 E2 13 63 03 41 03 97 FDB CONSO,NULLS,OVER,XORR ;?display error message
1521 02 3E 15 31 FDB QBRAN,QUIT3
1525 0E 84 0A EF 0E B6 FDB SPACE,COUNT,TYPES ;error message
152B 0F 15 FDB DOTQP
152D 03 20 3F 20 FCB 3," ? " ;error prompt
1531 02 C9 01 ED 13 F2 03 97 QUIT3: FDB RFROM,DOLIT,DOTOK,XORR
1539 02 3E 15 43 FDB QBRAN,QUIT4
153D 01 ED 00 1B 0E 3F FDB DOLIT,ERR,EMIT ;file error, tell host
1543 14 61 QUIT4: FDB PRESE
1545 02 55 15 03 FDB BRAN,QUIT1
1549 ;
1549 ; The compiler
1549 ;
1549 ; ' ( -- ca )
1549 ; Search context vocabularies for the next word in input stream.
1549 ;
1549 15 4F 14 F5 FDB TICK,L1780
154D 01 27 L1790: FCB 1,"'"
154F BD 02 10 TICK: JSR DOLST
1552 10 BC 11 BE FDB TOKEN,NAMEQ ;?defined
1556 02 3E 15 5C FDB QBRAN,TICK1
155A 02 6F FDB EXIT ;yes, push code address
155C 13 3C TICK1: FDB THROW
155E ;
155E ; ALLOT ( n -- )
155E ; Allocate n bytes to the code dictionary.
155E ;
155E 15 68 15 4D FDB ALLOT,L1790
1562 05 41 4C 4C 4F 54 L1800: FCB 5,"ALLOT"
1568 BD 02 10 ALLOT: JSR DOLST
156B 05 91 0A AF 02 6F FDB CP,PSTOR,EXIT ;adjust code pointer
1571 ;
1571 ; , ( w -- )
1571 ; Compile an integer into the code dictionary.
1571 ;
1571 15 77 15 62 FDB COMMA,L1800
1575 01 2C L1810: FCB 1,","
1577 BD 02 10 COMMA: JSR DOLST
157A 0B 05 03 1F 09 D5 FDB HERE,DUPP,CELLP ;cell boundary
1580 05 91 02 79 02 79 02 6F FDB CP,STORE,STORE,EXIT ;adjust code pointer and compile
1588 ;
1588 ; [COMPILE] ( -- ; <string> )
1588 ; Compile the next immediate word into code dictionary.
1588 ;
1588 15 96 15 75 FDB BCOMP,L1810
158C 89 5B 43 4F 4D 50 49 4C 45 5D L1820: FCB IMEDD+9,"[COMPILE]"
1596 BD 02 10 BCOMP: JSR DOLST
1599 15 4F 15 77 02 6F FDB TICK,COMMA,EXIT
159F ;
159F ; COMPILE ( -- )
159F ; Compile the next address in colon list to code dictionary.
159F ;
159F 15 AB 15 8C FDB COMPI,L1820
15A3 47 43 4F 4D 50 49 4C 45 L1830: FCB COMPO+7,"COMPILE"
15AB BD 02 10 COMPI: JSR DOLST
15AE 02 C9 03 1F 02 87 15 77 FDB RFROM,DUPP,AT,COMMA ;compile address
15B6 09 D5 02 E9 02 6F FDB CELLP,TOR,EXIT ;adjust return address
15BC ;
15BC ; LITERAL ( w -- )
15BC ; Compile tos to code dictionary as an integer literal.
15BC ;
15BC 15 C8 15 A3 FDB LITER,L1830
15C0 87 4C 49 54 45 52 41 4C L1840: FCB IMEDD+7,"LITERAL"
15C8 BD 02 10 LITER: JSR DOLST
15CB 15 AB 01 ED 15 77 02 6F FDB COMPI,DOLIT,COMMA,EXIT
15D3 ;
15D3 ; $," ( -- )
15D3 ; Compile a literal string up to next " .
15D3 ;
15D3 15 D8 15 C0 FDB STRCQ,L1840
15D7 03 L1850: FCB 3,"$,",'"'
15D8 BD 02 10 STRCQ: JSR DOLST
15DB 01 ED 10 DF FDB DOLIT,'"',WORD ;move string to code dictionary
15DF 0A EF 06 CD 0A 13 FDB COUNT,PLUS,ALGND ;calculate aligned end of string
15E5 05 91 02 79 02 6F FDB CP,STORE,EXIT ;adjust the code pointer
15EB ;
15EB ; RECURSE ( -- )
15EB ; Make the current word available for compilation.
15EB ;
15EB 15 F7 15 D7 FDB RECUR,L1850
15EF 87 52 45 43 55 52 53 45 L1860: FCB IMEDD+7,"RECURSE"
15F7 BD 02 10 RECUR: JSR DOLST
15FA 05 AB 02 87 10 F4 15 77 02 6F FDB LAST,AT,NAMET,COMMA,EXIT
1604 ;
1604 ; Structures
1604 ;
1604 ; DO ( -- a m )
1604 ; Start a DO-LOOP/+LOOP structure in a colon definition.
1604 ;
1604 16 0B 15 EF FDB DO,L1860
1608 82 44 4F L1861: FCB IMEDD+2,"DO"
160B BD 02 10 DO: JSR DOLST
160E 15 AB 16 95 0B 05 FDB COMPI,DODO,HERE
1614 04 04 FDB ONE ; marker for DO
1616 02 6F FDB EXIT
1618 ;
1618 ; ?DO ( -- a m )
1618 ; Start a ?DO-LOOP/+LOOP structure in a colon definition.
1618 ;
1618 16 20 16 08 FDB QDO,L1861
161C 83 3F 44 4F L1862: FCB IMEDD+3,"?DO"
1620 BD 02 10 QDO: JSR DOLST
1623 15 AB 16 3B 0B 05 FDB COMPI,DOQDO,HERE
1629 15 AB 00 00 FDB COMPI,0 ; branch destination placeholder
162D 04 0F FDB TWO ; marker for ?DO
162F 02 6F FDB EXIT
1631 ;
1631 ; (?DO) ( w w -- )
1631 ; Runtime part of DO in a DO-LOOP/+LOOP structure.
1631 ;
1631 16 3B 16 1C FDB DOQDO,L1862
1635 05 28 3F 44 4F 29 L1862A: FCB 5,"(?DO)"
163B DOQDO:
163B 35 06 PULS d ;start
163D 10 A3 E4 CMPD ,s ;start < end -> ok
1640 2D 06 BLT DOQDO1
1642 32 62 LEAS 2,s ;drop end
1644 EE C4 LDU ,u
1646 37 80 PULU pc ;branch past loop
1648 DOQDO1:
1648 35 10 PULS x ;end
164A AF A3 STX ,--y ;end to return stack
164C ED A3 STD ,--y ;start to return stack
164E 33 42 LEAU 2,u ;skip jump forward
1650 37 80 PULU pc
1652 ;
1652 ; -DO ( -- a m )
1652 ; Start a -DO-LOOP/+LOOP structure in a colon definition.
1652 ;
1652 16 5A 16 35 FDB MDO,L1862A
1656 83 2D 44 4F L1862B: FCB IMEDD+3,"-DO"
165A BD 02 10 MDO: JSR DOLST
165D 15 AB 16 75 0B 05 FDB COMPI,DOMDO,HERE
1663 15 AB 00 00 FDB COMPI,0 ; branch destination placeholder
1667 04 0F FDB TWO ; marker for ?DO/-DO
1669 02 6F FDB EXIT
166B ;
166B ; (-DO) ( w w -- )
166B ; Runtime part of -DO in a -DO-LOOP/+LOOP structure.
166B ;
166B 16 75 16 56 FDB DOMDO,L1862B
166F 05 28 2D 44 4F 29 L1862C: FCB 5,"(-DO)"
1675 DOMDO:
1675 35 06 PULS d ;start
1677 10 A3 E4 CMPD ,s ;start > end -> ok
167A 2E 06 BGT DOMDO1
167C 32 62 LEAS 2,s ;drop end
167E EE C4 LDU ,u
1680 37 80 PULU pc ;branch past loop
1682 DOMDO1:
1682 35 10 PULS x ;end
1684 AF A3 STX ,--y ;end to return stack
1686 ED A3 STD ,--y ;start to return stack
1688 33 42 LEAU 2,u ;skip jump forward
168A 37 80 PULU pc
168C ;
168C ; (DO) ( w w -- )
168C ; Runtime part of DO in a DO-LOOP/+LOOP structure.
168C ;
168C 16 95 16 6F FDB DODO,L1862C
1690 04 28 44 4F 29 L1863: FCB 4,"(DO)"
1695 DODO:
1695 35 16 PULS d,x ;start first, end second
1697 AF A3 STX ,--y ;end to return stack
1699 ED A3 STD ,--y ;start to return stack
169B 37 80 PULU pc
169D ;
169D ; (LOOP) ( -- )
169D ; Runtime part of LOOP
169D ;
169D 16 A8 16 90 FDB DOLOOP,L1863
16A1 06 28 4C 4F 4F 50 29 L1864: FCB 6,"(LOOP)"
16A8 DOLOOP:
16A8 CC 00 01 LDD #1
16AB 20 1D BRA DOPLOF
16AD ;
16AD ; (+LOOP) ( -- )
16AD ; Runtime part of +LOOP
16AD ;
16AD 16 B9 16 A1 FDB DOPLOOP,L1864
16B1 87 28 2B 4C 4F 4F 50 29 L1865: FCB IMEDD+7,"(+LOOP)"
16B9 DOPLOOP:
16B9 EC E1 LDD ,s++ ; increment
16BB 2A 0D BPL DOPLOF ; forward
16BD E3 A4 ADDD ,y ; start/index
16BF 10 A3 22 CMPD 2,y ; end
16C2 2F 13 BLE DOPLO1 ; index <= end -> leave
16C4 ED A4 STD ,y
16C6 EE C4 LDU ,u ; branch to begin of loop
16C8 37 80 PULU pc
16CA ;
16CA E3 A4 DOPLOF: ADDD ,y
16CC 10 A3 22 CMPD 2,y ; end
16CF 2C 06 BGE DOPLO1 ; index >= end -> leave
16D1 ED A4 STD ,y ; save back
16D3 EE C4 LDU ,u ; branch to begin of loop
16D5 37 80 PULU pc
16D7 DOPLO1:
16D7 33 42 LEAU 2,u ; skip back destination
16D9 31 24 LEAY 4,y ; remove index and upper from r stack
16DB 37 80 PULU pc
16DD ;
16DD ; LOOP ( a m -- )
16DD ; Terminate a DO/?DO-LOOP loop structure.
16DD ;
16DD 16 E6 16 B1 FDB LOOP,L1865
16E1 84 4C 4F 4F 50 L1866: FCB IMEDD+4,"LOOP"
16E6 BD 02 10 LOOP: JSR DOLST
16E9 15 AB 16 A8 FDB COMPI,DOLOOP
16ED 04 0F 07 54 02 3E 16 FF FDB TWO,EQUAL,QBRAN,LOOP1
16F5 0B 05 09 D5 03 41 02 79 09 D5 FDB HERE,CELLP,OVER,STORE,CELLP ; branch forward destination
16FF 15 77 02 6F LOOP1: FDB COMMA,EXIT
1703 ;
1703 ;
1703 ; +LOOP ( a m -- )
1703 ; Terminate a DO/?DO-+LOOP loop structure.
1703 ;
1703 17 0D 16 E1 FDB PLOOP,L1866
1707 85 2B 4C 4F 4F 50 L1867: FCB IMEDD+5,"+LOOP"
170D BD 02 10 PLOOP: JSR DOLST
1710 15 AB 16 B9 FDB COMPI,DOPLOOP
1714 04 0F 07 54 02 3E 17 26 FDB TWO,EQUAL,QBRAN,PLOOP1
171C 0B 05 09 D5 03 41 02 79 09 D5 FDB HERE,CELLP,OVER,STORE,CELLP ; branch forward destination
1726 15 77 02 6F PLOOP1: FDB COMMA,EXIT
172A ;
172A ; LEAVE ( -- )
172A ; Leave DO/LOOP
172A ;
172A 17 34 17 07 FDB LEAVE,L1867
172E 05 4C 45 41 56 45 L1868: FCB 5,"LEAVE"
1734 LEAVE:
1734 EC A4 LDD ,y ;take index on return stack
1736 ED 22 STD 2,y ;and change end to it
1738 37 80 PULU pc
173A ;
173A ; FOR ( -- a )
173A ; Start a FOR-NEXT loop structure in a colon definition.
173A ;
173A 17 42 17 07 FDB FOR,L1867
173E 83 46 4F 52 L1870: FCB IMEDD+3,"FOR"
1742 BD 02 10 FOR: JSR DOLST
1745 15 AB 02 E9 0B 05 02 6F FDB COMPI,TOR,HERE,EXIT
174D ;
174D ; BEGIN ( -- a )
174D ; Start an infinite or indefinite loop structure.
174D ;
174D 17 57 17 3E FDB BEGIN,L1870
1751 85 42 45 47 49 4E L1880: FCB IMEDD+5,"BEGIN"
1757 BD 02 10 BEGIN: JSR DOLST
175A 0B 05 02 6F FDB HERE,EXIT
175E ;
175E ; NEXT ( a -- )
175E ; Terminate a FOR-NEXT loop structure.
175E ;
175E 17 67 17 51 FDB NEXT,L1880
1762 84 4E 45 58 54 L1890: FCB IMEDD+4,"NEXT"
1767 BD 02 10 NEXT: JSR DOLST
176A 15 AB 02 1F 15 77 02 6F FDB COMPI,DONXT,COMMA,EXIT
1772 ;
1772 ; UNTIL ( a -- )
1772 ; Terminate a BEGIN-UNTIL indefinite loop structure.
1772 ;
1772 17 7C 17 62 FDB UNTIL,L1890
1776 85 55 4E 54 49 4C L1900: FCB IMEDD+5,"UNTIL"
177C BD 02 10 UNTIL: JSR DOLST
177F 15 AB 02 3E 15 77 02 6F FDB COMPI,QBRAN,COMMA,EXIT
1787 ;
1787 ; AGAIN ( a -- )
1787 ; Terminate a BEGIN-AGAIN infinite loop structure.
1787 ;
1787 17 91 17 76 FDB AGAIN,L1900
178B 85 41 47 41 49 4E L1910: FCB IMEDD+5,"AGAIN"
1791 BD 02 10 AGAIN: JSR DOLST
1794 15 AB 02 55 15 77 02 6F FDB COMPI,BRAN,COMMA,EXIT
179C ;
179C ; IF ( -- A )
179C ; Begin a conditional branch structure.
179C ;
179C 17 A3 17 8B FDB IFF,L1910
17A0 82 49 46 L1920: FCB IMEDD+2,"IF"
17A3 BD 02 10 IFF: JSR DOLST
17A6 15 AB 02 3E 0B 05 FDB COMPI,QBRAN,HERE
17AC 03 F9 15 77 02 6F FDB ZERO,COMMA,EXIT
17B2 ;
17B2 ; AHEAD ( -- A )
17B2 ; Compile a forward branch instruction.
17B2 ;
17B2 17 BC 17 A0 FDB AHEAD,L1920
17B6 85 41 48 45 41 44 L1930: FCB IMEDD+5,"AHEAD"
17BC BD 02 10 AHEAD: JSR DOLST
17BF 15 AB 02 55 0B 05 03 F9 15 77 02 6F FDB COMPI,BRAN,HERE,ZERO,COMMA,EXIT
17CB ;
17CB ; REPEAT ( A a -- )
17CB ; Terminate a BEGIN-WHILE-REPEAT indefinite loop.
17CB ;
17CB 17 D6 17 B6 FDB REPEA,L1930
17CF 86 52 45 50 45 41 54 L1940: FCB IMEDD+6,"REPEAT"
17D6 BD 02 10 REPEA: JSR DOLST
17D9 17 91 0B 05 03 2E 02 79 02 6F FDB AGAIN,HERE,SWAP,STORE,EXIT
17E3 ;
17E3 ; THEN ( A -- )
17E3 ; Terminate a conditional branch structure.
17E3 ;
17E3 17 EC 17 CF FDB THENN,L1940
17E7 84 54 48 45 4E L1950: FCB IMEDD+4,"THEN"
17EC BD 02 10 THENN: JSR DOLST
17EF 0B 05 03 2E 02 79 02 6F FDB HERE,SWAP,STORE,EXIT
17F7 ;
17F7 ; AFT ( a -- a A )
17F7 ; Jump to THEN in a FOR-AFT-THEN-NEXT loop the first time through.
17F7 ;
17F7 17 FF 17 E7 FDB AFT,L1950
17FB 83 41 46 54 L1960: FCB IMEDD+3,"AFT"
17FF BD 02 10 AFT: JSR DOLST
1802 03 13 17 BC 17 57 03 2E 02 6F FDB DROP,AHEAD,BEGIN,SWAP,EXIT
180C ;
180C ; ELSE ( A -- A )
180C ; Start the false clause in an IF-ELSE-THEN structure.
180C ;
180C 18 15 17 FB FDB ELSEE,L1960
1810 84 45 4C 53 45 L1970: FCB IMEDD+4,"ELSE"
1815 BD 02 10 ELSEE: JSR DOLST
1818 17 BC 03 2E 17 EC 02 6F FDB AHEAD,SWAP,THENN,EXIT
1820 ;
1820 ; WHILE ( a -- A a )
1820 ; Conditional branch out of a BEGIN-WHILE-REPEAT loop.
1820 ;
1820 18 2A 18 10 FDB WHILE,L1970
1824 85 57 48 49 4C 45 L1980: FCB IMEDD+5,"WHILE"
182A BD 02 10 WHILE: JSR DOLST
182D 17 A3 03 2E 02 6F FDB IFF,SWAP,EXIT
1833 ;
1833 ; ABORT" ( -- ; <string> )
1833 ; Conditional abort with an error message.
1833 ;
1833 18 38 18 24 FDB ABRTQ,L1980
1837 86 L1990: FCB IMEDD+6,"ABORT",'"'
1838 BD 02 10 ABRTQ: JSR DOLST
183B 15 AB 13 84 15 D8 02 6F FDB COMPI,ABORQ,STRCQ,EXIT
1843 ;
1843 ; $" ( -- ; <string> )
1843 ; Compile an inline string literal.
1843 ;
1843 18 4A 18 37 FDB STRQ,L1990
1847 82 24 22 L2000: FCB IMEDD+2,"$",$22
184A BD 02 10 STRQ: JSR DOLST
184D 15 AB 0F 09 15 D8 02 6F FDB COMPI,STRQP,STRCQ,EXIT
1855 ;
1855 ; ." ( -- ; <string> )
1855 ; Compile an inline string literal to be typed out at run time.
1855 ;
1855 18 5C 18 47 FDB DOTQ,L2000
1859 82 2E 22 L2010: FCB IMEDD+2,".",$22
185C BD 02 10 DOTQ: JSR DOLST
185F 15 AB 0F 15 15 D8 02 6F FDB COMPI,DOTQP,STRCQ,EXIT
1867 ;
1867 ; Name compiler
1867 ;
1867 ; ?UNIQUE ( a -- a )
1867 ; Display a warning message if the word already exists.
1867 ;
1867 18 73 18 59 FDB UNIQU,L2010
186B 07 3F 55 4E 49 51 55 45 L2020: FCB 7,"?UNIQUE"
1873 BD 02 10 UNIQU: JSR DOLST
1876 03 1F 11 BE FDB DUPP,NAMEQ ;?name exists
187A 02 3E 18 8E FDB QBRAN,UNIQ1
187E 0F 15 FDB DOTQP ;redefinitions are OK
1880 07 20 72 65 44 65 66 20 FCB 7," reDef " ;but the user should be warned
1888 03 41 0A EF 0E B6 FDB OVER,COUNT,TYPES ;just in case its not planned
188E 03 13 02 6F UNIQ1: FDB DROP,EXIT
1892 ;
1892 ; $,n ( na -- )
1892 ; Build a new dictionary name using the string at na.
1892 ;
1892 18 9A 18 6B FDB SNAME,L2020
1896 03 24 2C 6E L2030: FCB 3,"$,n"
189A BD 02 10 SNAME: JSR DOLST
189D 03 1F 02 A3 FDB DUPP,CAT ;?null input
18A1 02 3E 18 CB FDB QBRAN,PNAM1
18A5 18 73 FDB UNIQU ;?redefinition
18A7 03 1F 05 AB 02 79 FDB DUPP,LAST,STORE ;save na for vocabulary link
18AD 0B 05 0A 13 03 2E FDB HERE,ALGND,SWAP ;align code address
18B3 09 E9 FDB CELLM ;link address
18B5 05 85 02 87 02 87 03 41 02 79 FDB CRRNT,AT,AT,OVER,STORE
18BF 09 E9 03 1F 05 9D 02 79 FDB CELLM,DUPP,NP,STORE ;adjust name pointer
18C7 02 79 02 6F FDB STORE,EXIT ;save code pointer
18CB 0F 09 PNAM1: FDB STRQP
18CD 05 20 6E 61 6D 65 FCB 5," name" ;null input
18D3 13 3C FDB THROW
18D5 ;
18D5 ; FORTH compiler
18D5 ;
18D5 ; $COMPILE ( a -- )
18D5 ; Compile next word to code dictionary as a token or literal.
18D5 ;
18D5 18 E2 18 96 FDB SCOMP,L2030
18D9 08 24 43 4F 4D 50 49 4C 45 L2040: FCB 8,"$COMPILE"
18E2 BD 02 10 SCOMP: JSR DOLST
18E5 11 BE 05 E1 FDB NAMEQ,QDUP ;?defined
18E9 02 3E 19 01 FDB QBRAN,SCOM2
18ED 02 87 01 ED 80 00 03 74 FDB AT,DOLIT,IMEDD*256,ANDD ;?immediate
18F5 02 3E 18 FD FDB QBRAN,SCOM1
18F9 02 65 02 6F FDB EXECU,EXIT ;its immediate, execute
18FD 15 77 02 6F SCOM1: FDB COMMA,EXIT
1901 05 45 0B 43 SCOM2: FDB TNUMB,ATEXE
1905 02 3E 19 0D FDB QBRAN,SCOM3
1909 15 C8 02 6F FDB LITER,EXIT ;compile number as integer
190D 13 3C SCOM3: FDB THROW
190F ;
190F ; OVERT ( -- )
190F ; Link a new word into the current vocabulary.
190F ;
190F 19 19 18 D9 FDB OVERT,L2040
1913 05 4F 56 45 52 54 L2050: FCB 5,"OVERT"
1919 BD 02 10 OVERT: JSR DOLST
191C 05 AB 02 87 05 85 02 87 02 79 02 6F FDB LAST,AT,CRRNT,AT,STORE,EXIT
1928 ;
1928 ; ; ( -- )
1928 ; Terminate a colon definition.
1928 ;
1928 19 2E 19 13 FDB SEMIS,L2050
192C C1 3B L2060: FCB IMEDD+COMPO+1,";"
192E BD 02 10 SEMIS: JSR DOLST
1931 15 AB 02 6F 13 DD 19 19 02 6F FDB COMPI,EXIT,LBRAC,OVERT,EXIT
193B ;
193B ; ] ( -- )
193B ; Start compiling the words in the input stream.
193B ;
193B 19 41 19 2C FDB RBRAC,L2060
193F 01 5D L2070: FCB 1,"]"
1941 BD 02 10 RBRAC: JSR DOLST
1944 01 ED 18 E2 05 34 02 79 02 6F FDB DOLIT,SCOMP,TEVAL,STORE,EXIT
194E ;
194E ; call, ( ca -- )
194E ; Assemble a call instruction to ca.
194E ;
194E 19 58 19 3F FDB CALLC,L2070
1952 05 63 61 6C 6C 2C L2080: FCB 5,"call,"
1958 BD 02 10 CALLC: JSR DOLST
195B 01 FE FDB DOCLIT
195D BD FCB CALLL
195E 0B 05 02 94 FDB HERE,CSTOR ;Direct Threaded Code
1962 04 04 15 68 FDB ONE,ALLOT
1966 15 77 02 6F FDB COMMA,EXIT ;DTC 6809 extended addr jsr
196A ;
196A ; : ( -- ; <string> )
196A ; Start a new colon definition using next word as its name.
196A ;
196A 19 70 19 52 FDB COLON,L2080
196E 01 3A L2090: FCB 1,":"
1970 BD 02 10 COLON: JSR DOLST
1973 10 BC 18 9A 01 ED 02 10 FDB TOKEN,SNAME,DOLIT,DOLST
197B 19 58 19 41 02 6F FDB CALLC,RBRAC,EXIT
1981 ;
1981 ; IMMEDIATE ( -- )
1981 ; Make the last compiled word an immediate word.
1981 ;
1981 19 8F 19 6E FDB IMMED,L2090
1985 09 49 4D 4D 45 44 49 41 54 45 L2100: FCB 9,"IMMEDIATE"
198F BD 02 10 IMMED: JSR DOLST
1992 01 ED 80 00 05 AB 02 87 02 87 03 85 FDB DOLIT,IMEDD*256,LAST,AT,AT,ORR
199E 05 AB 02 87 02 79 02 6F FDB LAST,AT,STORE,EXIT
19A6 ;
19A6 ; Defining words
19A6 ;
19A6 ; USER ( u -- ; <string> )
19A6 ; Compile a new user variable.
19A6 ;
19A6 19 AF 19 85 FDB USER,L2100
19AA 04 55 53 45 52 L2110: FCB 4,"USER"
19AF BD 02 10 USER: JSR DOLST
19B2 10 BC 18 9A 19 19 FDB TOKEN,SNAME,OVERT
19B8 ; FDB DOLIT,DOLST,CALLC
19B8 ; FDB DOLIT,DOUSE,COMMA
19B8 ; fast implementation ....
19B8 01 ED 04 59 19 58 FDB DOLIT,FDOUSE,CALLC
19BE 15 77 02 6F FDB COMMA,EXIT
19C2 ;
19C2 ; CREATE ( -- ; <string> )
19C2 ; Compile a new array entry without allocating code space.
19C2 ;
19C2 19 CD 19 AA FDB CREAT,L2110
19C6 06 43 52 45 41 54 45 L2120: FCB 6,"CREATE"
19CD BD 02 10 CREAT: JSR DOLST
19D0 10 BC 18 9A 19 19 FDB TOKEN,SNAME,OVERT
19D6 ; FDB DOLIT,DOLST,CALLC
19D6 ; FDB DOLIT,DOVAR,COMMA,EXIT
19D6 ; fast implementation ....
19D6 01 ED 04 31 19 58 02 6F FDB DOLIT,FDOVAR,CALLC,EXIT
19DE ;
19DE ; VARIABLE ( -- ; <string> )
19DE ; Compile a new variable initialized to 0.
19DE ;
19DE 19 EB 19 C6 FDB VARIA,L2120
19E2 08 56 41 52 49 41 42 4C 45 L2130: FCB 8,"VARIABLE"
19EB BD 02 10 VARIA: JSR DOLST
19EE 19 CD 03 F9 15 77 02 6F FDB CREAT,ZERO,COMMA,EXIT
19F6 ;
19F6 ; CONSTANT ( w -- ; <string> )
19F6 ; Compile a new constant with value w.
19F6 ;
19F6 1A 03 19 E2 FDB CONST,L2130
19FA 08 43 4F 4E 53 54 41 4E 54 L2135: FCB 8,"CONSTANT"
1A03 BD 02 10 CONST: JSR DOLST
1A06 10 BC 18 9A 19 19 FDB TOKEN,SNAME,OVERT
1A0C 01 ED 03 ED 19 58 FDB DOLIT,DOCONST,CALLC
1A12 15 77 02 6F FDB COMMA,EXIT
1A16 ;
1A16 ; Tools
1A16 ;
1A16 ; _TYPE ( b u -- )
1A16 ; Display a string. Filter non-printing characters.
1A16 ;
1A16 1A 20 19 FA FDB UTYPE,L2135
1A1A 05 5F 54 59 50 45 L2140: FCB 5,"_TYPE"
1A20 BD 02 10 UTYPE: JSR DOLST
1A23 02 E9 FDB TOR ;start count down loop
1A25 02 55 1A 33 FDB BRAN,UTYP2 ;skip first pass
1A29 03 1F 02 A3 0A 2C 0E 3F UTYP1: FDB DUPP,CAT,TCHAR,EMIT
1A31 06 94 FDB PLUS1 ;increment address
1A33 02 1F 1A 29 UTYP2: FDB DONXT,UTYP1
1A37 03 13 02 6F FDB DROP,EXIT
1A3B ;
1A3B ; dm+ ( a u -- a )
1A3B ; Dump u bytes from , leaving a+u on the stack.
1A3B ;
1A3B 1A 43 1A 1A FDB DUMPP,L2140
1A3F 03 64 6D 2B L2150: FCB 3,"dm+"
1A43 BD 02 10 DUMPP: JSR DOLST
1A46 03 41 01 ED 00 04 0F 42 FDB OVER,DOLIT,4,UDOTR ;display address
1A4E 0E 84 02 E9 FDB SPACE,TOR ;start count down loop
1A52 02 55 1A 62 FDB BRAN,PDUM2 ;skip first pass
1A56 03 1F 02 A3 01 ED 00 03 0F 42 PDUM1: FDB DUPP,CAT,DOLIT,3,UDOTR
1A60 06 94 FDB PLUS1 ;increment address
1A62 02 1F 1A 56 PDUM2: FDB DONXT,PDUM1
1A66 02 6F FDB EXIT
1A68 ;
1A68 ; DUMP ( a u -- )
1A68 ; Dump u bytes from a, in a formatted manner.
1A68 ;
1A68 1A 71 1A 3F FDB DUMP,L2150
1A6C 04 44 55 4D 50 L2160: FCB 4,"DUMP"
1A71 BD 02 10 DUMP: JSR DOLST
1A74 04 E2 02 87 02 E9 0D 1A FDB BASE,AT,TOR,HEX ;save radix, set hex
1A7C 01 FE FDB DOCLIT
1A7E 10 FCB 16
1A7F 09 01 FDB SLASH ;change count to lines
1A81 02 E9 FDB TOR ;start count down loop
1A83 0E D6 01 FE DUMP1: FDB CR,DOCLIT
1A87 10 FCB 16
1A88 06 1F 1A 43 FDB DDUP,DUMPP ;display numeric
1A8C 05 F6 05 F6 FDB ROT,ROT
1A90 04 0F 0E 98 1A 20 FDB TWO,SPACS,UTYPE ;display printable characters
1A96 0E 51 06 DD FDB NUFQ,INVER ;user control
1A9A 02 3E 1A A6 FDB QBRAN,DUMP2
1A9E 02 1F 1A 83 FDB DONXT,DUMP1 ;loop till done
1AA2 02 55 1A AA FDB BRAN,DUMP3
1AA6 02 C9 03 13 DUMP2: FDB RFROM,DROP
1AAA 03 13 02 C9 04 E2 02 79 DUMP3: FDB DROP,RFROM,BASE,STORE
1AB2 02 6F FDB EXIT
1AB4 ;
1AB4 ; .S ( ... -- ... )
1AB4 ; Display the contents of the data stack.
1AB4 ;
1AB4 1A BB 1A 6C FDB DOTS,L2160
1AB8 02 2E 53 L2170: FCB 2,".S"
1ABB BD 02 10 DOTS: JSR DOLST
1ABE 0E D6 0A 52 FDB CR,DEPTH ;stack depth
1AC2 02 E9 FDB TOR ;start count down loop
1AC4 02 55 1A CE FDB BRAN,DOTS2 ;skip first pass
1AC8 02 DC 0A 6F 0F 75 DOTS1: FDB RAT,PICK,DOT
1ACE 02 1F 1A C8 DOTS2: FDB DONXT,DOTS1
1AD2 0F 15 FDB DOTQP
1AD4 04 20 3C 73 70 FCB 4," <sp"
1AD9 02 6F FDB EXIT
1ADB ;
1ADB ; !CSP ( -- )
1ADB ; Save stack pointer in CSP for error checking.
1ADB ;
1ADB 1A E4 1A B8 FDB STCSP,L2170
1ADF 04 21 43 53 50 L2180: FCB 4,"!CSP"
1AE4 BD 02 10 STCSP: JSR DOLST
1AE7 02 F7 05 25 02 79 02 6F FDB SPAT,CSP,STORE,EXIT ;save pointer
1AEF ;
1AEF ; ?CSP ( -- )
1AEF ; Abort if stack pointer differs from that saved in CSP.
1AEF ;
1AEF 1A F8 1A DF FDB QCSP,L2180
1AF3 04 3F 43 53 50 L2190: FCB 4,"?CSP"
1AF8 BD 02 10 QCSP: JSR DOLST
1AFB 02 F7 05 25 02 87 03 97 FDB SPAT,CSP,AT,XORR ;compare pointers
1B03 13 84 FDB ABORQ ;abort if different
1B05 06 73 74 61 63 6B 73 FCB 6,"stacks"
1B0C 02 6F FDB EXIT
1B0E ;
1B0E ; >NAME ( ca -- na | F )
1B0E ; Convert code address to a name address.
1B0E ;
1B0E 1B 18 1A F3 FDB TNAME,L2190
1B12 05 3E 4E 41 4D 45 L2200: FCB 5,">NAME"
1B18 BD 02 10 TNAME: JSR DOLST
1B1B 05 85 FDB CRRNT ;vocabulary link
1B1D 09 D5 02 87 05 E1 TNAM1: FDB CELLP,AT,QDUP
1B23 02 3E 1B 55 FDB QBRAN,TNAM4
1B27 06 1F FDB DDUP
1B29 02 87 03 1F TNAM2: FDB AT,DUPP
1B2D 02 3E 1B 41 FDB QBRAN,TNAM3
1B31 06 1F 10 F4 03 97 FDB DDUP,NAMET,XORR ;compare
1B37 02 3E 1B 41 FDB QBRAN,TNAM3
1B3B 09 E9 FDB CELLM ;continue with next word
1B3D 02 55 1B 29 FDB BRAN,TNAM2
1B41 03 2E 03 13 05 E1 TNAM3: FDB SWAP,DROP,QDUP
1B47 02 3E 1B 1D FDB QBRAN,TNAM1
1B4B 03 2E 03 13 03 2E 03 13 02 6F FDB SWAP,DROP,SWAP,DROP,EXIT
1B55 03 13 01 ED 00 00 02 6F TNAM4: FDB DROP,DOLIT,0,EXIT
1B5D ;
1B5D ; .ID ( na -- )
1B5D ; Display the name at address.
1B5D ;
1B5D 1B 65 1B 12 FDB DOTID,L2200
1B61 03 2E 49 44 L2210: FCB 3,".ID"
1B65 BD 02 10 DOTID: JSR DOLST
1B68 05 E1 FDB QDUP ;if zero no name
1B6A 02 3E 1B 79 FDB QBRAN,DOTI1
1B6E 0A EF 01 FE FDB COUNT,DOCLIT
1B72 1F FCB $1F
1B73 03 74 FDB ANDD ;mask lexicon bits
1B75 1A 20 02 6F FDB UTYPE,EXIT ;display name string
1B79 0F 15 DOTI1: FDB DOTQP
1B7B 09 20 7B 6E 6F 4E 61 6D 65 7D FCB 9," {noName}"
1B85 02 6F FDB EXIT
1B87 ;
1B87 ; SEE ( -- ; <string> )
1B87 ; A simple decompiler.
1B87 ;
1B87 1B 8F 1B 61 FDB SEE,L2210
1B8B 03 53 45 45 L2220: FCB 3,"SEE"
1B8F BD 02 10 SEE: JSR DOLST
1B92 15 4F FDB TICK ;starting address
1B94 06 94 FDB PLUS1 ;skip JSR
1B96 ;primitive check ...
1B96 04 E2 02 87 02 E9 0D 1A FDB BASE,AT,TOR,HEX ;switch to hex base
1B9E 03 1F 02 87 01 ED 02 10 03 97 FDB DUPP,AT,DOLIT,DOLST,XORR
1BA8 ;high level word?
1BA8 02 3E 1B BE FDB QBRAN,SEE1 ;yes!
1BAC 0E D6 0F 15 FDB CR,DOTQP ;primitive word only
1BB0 09 20 50 52 49 4D 49 54 56 45 FCB 9," PRIMITVE"
1BBA 02 55 1C D1 FDB BRAN,SEE5 ;exit
1BBE 0E D6 09 D5 03 1F 0F 60 0E 84 SEE1: FDB CR,CELLP,DUPP,UDOT,SPACE
1BC8 03 1F 02 87 03 1F FDB DUPP,AT,DUPP ;?does it contain a zero
1BCE 02 3E 1B D4 FDB QBRAN,SEE2
1BD2 1B 18 FDB TNAME ;?is it a name
1BD4 05 E1 SEE2: FDB QDUP
1BD6 02 3E 1C B3 FDB QBRAN,SEE3
1BDA ;
1BDA 0E 84 1B 65 FDB SPACE,DOTID ;display name
1BDE 03 1F 02 87 FDB DUPP,AT
1BE2 ;
1BE2 03 1F 01 ED 01 FE 07 54 FDB DUPP,DOLIT,DOCLIT,EQUAL ; doCLIT?
1BEA 02 3E 1C 02 FDB QBRAN,SEE21
1BEE 03 41 09 D5 02 A3 0E 84 0F 60 FDB OVER,CELLP,CAT,SPACE,UDOT ; CLIT: get only single byte
1BF8 03 2E 06 94 03 2E FDB SWAP,PLUS1,SWAP
1BFE 02 55 1C A7 FDB BRAN,SEE28
1C02 ;
1C02 03 1F 01 ED 01 ED 07 54 SEE21: FDB DUPP,DOLIT,DOLIT,EQUAL
1C0A 03 41 01 ED 02 3E 07 54 03 85 FDB OVER,DOLIT,QBRAN,EQUAL,ORR ; ?BRAN ?
1C14 03 41 01 ED 02 55 07 54 03 85 FDB OVER,DOLIT,BRAN,EQUAL,ORR ; BRANCH ?
1C1E 03 41 01 ED 02 1F 07 54 03 85 FDB OVER,DOLIT,DONXT,EQUAL,ORR ; next ? (from FOR/NEXT)
1C28 03 41 01 ED 16 A8 07 54 03 85 FDB OVER,DOLIT,DOLOOP,EQUAL,ORR ; (LOOP) ?
1C32 03 41 01 ED 16 B9 07 54 03 85 FDB OVER,DOLIT,DOPLOOP,EQUAL,ORR ; (+LOOP) ?
1C3C 03 41 01 ED 16 95 07 54 03 85 FDB OVER,DOLIT,DODO,EQUAL,ORR ; (DO) ?
1C46 03 41 01 ED 16 3B 07 54 03 85 FDB OVER,DOLIT,DOQDO,EQUAL,ORR ; (?DO) ?
1C50 03 41 01 ED 16 75 07 54 03 85 FDB OVER,DOLIT,DOMDO,EQUAL,ORR ; (-DO) ?
1C5A 02 3E 1C 70 FDB QBRAN,SEE27
1C5E 03 2E 09 D5 03 1F 02 87 0E 84 0F 60 03 2E FDB SWAP,CELLP,DUPP,AT,SPACE,UDOT,SWAP ; LIT: get word
1C6C 02 55 1C A7 FDB BRAN,SEE28
1C70 SEE27:
1C70 03 1F 01 ED 0F 15 07 54 FDB DUPP,DOLIT,DOTQP,EQUAL ; ." ..."
1C78 03 41 01 ED 13 84 07 54 03 85 FDB OVER,DOLIT,ABORQ,EQUAL,ORR ; ABORT" ..."
1C82 03 41 01 ED 0F 09 07 54 03 85 FDB OVER,DOLIT,STRQP,EQUAL,ORR ; $" ..."
1C8C 02 3E 1C AD FDB QBRAN,SEE29 ; last case aalway to SEE29!!
1C90 03 2E 09 D5 FDB SWAP,CELLP ; print compiled string
1C94 03 1F 0A EF 0E B6 01 FE FDB DUPP,COUNT,TYPES,DOCLIT
1C9C 22 FCB 34
1C9D 0E 3F FDB EMIT
1C9F 0A EF 06 CD 09 E9 03 2E FDB COUNT,PLUS,CELLM,SWAP ; adjust continuation address
1CA7 ;
1CA7 03 13 SEE28: FDB DROP
1CA9 02 55 1C CB FDB BRAN,SEE4
1CAD 03 13 SEE29: FDB DROP
1CAF 02 55 1C BD FDB BRAN,SEE31 ; cleanup, check for EXIT
1CB3 ;
1CB3 03 1F 02 87 0F 60 SEE3: FDB DUPP,AT,UDOT
1CB9 02 55 1C CB FDB BRAN,SEE4
1CBD 03 1F 02 87 01 ED 02 6F 03 97 SEE31: FDB DUPP,AT,DOLIT,EXIT,XORR
1CC7 ; but not if SEE decompiles itself!
1CC7 02 3E 1C D1 FDB QBRAN,SEE5
1CCB 0E 51 SEE4: FDB NUFQ
1CCD 02 3E 1B BE FDB QBRAN,SEE1
1CD1 02 C9 04 E2 02 79 03 13 02 6F SEE5: FDB RFROM,BASE,STORE,DROP,EXIT
1CDB ;
1CDB ; WORDS ( -- )
1CDB ; Display the names in the context vocabulary.
1CDB ;
1CDB 1C E5 1B 8B FDB WORDS,L2220
1CDF 05 57 4F 52 44 53 L2230: FCB 5,"WORDS"
1CE5 BD 02 10 WORDS: JSR DOLST
1CE8 0E D6 05 74 02 87 FDB CR,CNTXT,AT ;only in context
1CEE 02 87 05 E1 WORS1: FDB AT,QDUP
1CF2 02 3E 1D 06 FDB QBRAN,WORS2
1CF6 03 1F 0E 84 1B 65 FDB DUPP,SPACE,DOTID ;display a name
1CFC 09 E9 0E 51 FDB CELLM,NUFQ ;user control
1D00 02 3E 1C EE FDB QBRAN,WORS1
1D04 03 13 FDB DROP
1D06 02 6F WORS2: FDB EXIT
1D08 ;
1D08 ; Hardware reset
1D08 ;
1D08 ; VER ( -- n )
1D08 ; Return the version number of this implementation.
1D08 ;
1D08 1D 10 1C DF FDB VERSN,L2230
1D0C 03 56 45 52 L2240: FCB 3,"VER"
1D10 BD 02 10 VERSN: JSR DOLST
1D13 01 ED 01 00 02 6F FDB DOLIT,VER*256+EXT,EXIT
1D19 ;
1D19 ; hi ( -- )
1D19 ; Display the sign-on message of eForth.
1D19 ;
1D19 1D 20 1D 0C FDB HI,L2240
1D1D 02 68 69 L2250: FCB 2,"hi"
1D20 BD 02 10 HI: JSR DOLST
1D23 01 E1 0E D6 0F 15 FDB STOIO,CR,DOTQP ;initialize I/O
1D29 0B 65 46 6F 72 74 68 20 76 FCB 11,"eForth v" ;model
1D32 FCB VER+"0",".",EXT+"0" ;version
1D32 0E D6 02 6F FDB CR,EXIT
1D36 ;
1D36 ; 'BOOT ( -- a )
1D36 ; The application startup vector.
1D36 ;
1D36 1D 40 1D 1D FDB TBOOT,L2250
1D3A 05 27 42 4F 4F 54 L2260: FCB 5,"'BOOT"
1D40 TBOOT:
1D40 ; jsr DOLST
1D40 ; FDB DOVAR
1D40 BD 04 31 JSR FDOVAR
1D43 1D 20 FDB HI ;application to boot
1D45 ;
1D45 ; COLD ( -- )
1D45 ; The hilevel cold start sequence.
1D45 ;
1D45 1D 4E 1D 3A FDB COLD,L2260
1D49 04 43 4F 4C 44 L2270: FCB 4,"COLD"
1D4E BD 02 10 COLD: JSR DOLST
1D51 01 ED 01 0D 01 ED 6F 80 COLD1: FDB DOLIT,UZERO,DOLIT,UPP
1D59 01 ED 00 4A 0B 5C FDB DOLIT,ULAST-UZERO,CMOVE ;initialize user area
1D5F 14 61 FDB PRESE ;initialize data stack and TIB
1D61 1D 40 0B 43 FDB TBOOT,ATEXE ;application boot
1D65 05 CF 05 74 02 87 03 1F FDB FORTH,CNTXT,AT,DUPP ;initialize search order
1D6D 05 85 0A C0 19 19 FDB CRRNT,DSTOR,OVERT
1D73 ; TEST
1D73 ; FDB DOLIT,10,DOLIT,1
1D73 ; FDB DODO
1D73 ;
1D73 14 FA FDB QUIT ;start interpretation
1D75 02 55 1D 51 FDB BRAN,COLD1 ;just in case
1D79 ;
1D79 ;===============================================================
1D79 ;
1D79 LASTN: EQU L2270
1D79 ;
1D79 NTOP: EQU NAMEE
1D79 CTOP: EQU $
1D79 ;
1D79 ;
1D79 ; END ORIG
1D79 ;
1D79 ;===============================================================
VER: 0001 DEFINED AT LINE 53
> USED AT LINE 3322
> USED AT LINE 3332
EXT: 0000 DEFINED AT LINE 54
> USED AT LINE 3322
> USED AT LINE 3332
TRUEE: 00-1 DEFINED AT LINE 58
COMPO: 0040 DEFINED AT LINE 60
> USED AT LINE 243
> USED AT LINE 257
> USED AT LINE 268
> USED AT LINE 280
> USED AT LINE 296
> USED AT LINE 309
> USED AT LINE 602
> USED AT LINE 648
> USED AT LINE 673
> USED AT LINE 791
> USED AT LINE 947
> USED AT LINE 2093
> USED AT LINE 2102
> USED AT LINE 2110
> USED AT LINE 2460
> USED AT LINE 2543
> USED AT LINE 2651
> USED AT LINE 3019
IMEDD: 0080 DEFINED AT LINE 61
> USED AT LINE 2214
> USED AT LINE 2222
> USED AT LINE 2230
> USED AT LINE 2489
> USED AT LINE 2643
> USED AT LINE 2660
> USED AT LINE 2678
> USED AT LINE 2688
> USED AT LINE 2698
> USED AT LINE 2728
> USED AT LINE 2778
> USED AT LINE 2804
> USED AT LINE 2816
> USED AT LINE 2837
> USED AT LINE 2845
> USED AT LINE 2853
> USED AT LINE 2861
> USED AT LINE 2869
> USED AT LINE 2877
> USED AT LINE 2886
> USED AT LINE 2894
> USED AT LINE 2902
> USED AT LINE 2910
> USED AT LINE 2918
> USED AT LINE 2926
> USED AT LINE 2934
> USED AT LINE 2942
> USED AT LINE 2950
> USED AT LINE 3019
> USED AT LINE 3058
MASKK: 1F7F DEFINED AT LINE 62
CFAOFF: 0003 DEFINED AT LINE 64
> USED AT LINE 681
CELLL: 0002 DEFINED AT LINE 66
> USED AT LINE 82
> USED AT LINE 83
> USED AT LINE 86
> USED AT LINE 88
> USED AT LINE 1517
> USED AT LINE 1527
> USED AT LINE 1537
> USED AT LINE 1581
BASEE: 000A DEFINED AT LINE 67
> USED AT LINE 142
VOCSS: 0008 DEFINED AT LINE 68
> USED AT LINE 154
> USED AT LINE 904
> USED AT LINE 915
> USED AT LINE 926
> USED AT LINE 937
BKSPP: 0008 DEFINED AT LINE 70
> USED AT LINE 2343
> USED AT LINE 2345
BKSPP2: 007F DEFINED AT LINE 71
LF: 000A DEFINED AT LINE 72
> USED AT LINE 2086
CRR: 000D DEFINED AT LINE 73
> USED AT LINE 2029
> USED AT LINE 2083
> USED AT LINE 2364
ERR: 001B DEFINED AT LINE 74
> USED AT LINE 2605
TIC: 0027 DEFINED AT LINE 75
CALLL: 12BD DEFINED AT LINE 77
> USED AT LINE 3038
EM: 7000 DEFINED AT LINE 81
> USED AT LINE 85
> USED AT LINE 92
US: 0080 DEFINED AT LINE 82
> USED AT LINE 85
> USED AT LINE 91
RTS: 0100 DEFINED AT LINE 83
> USED AT LINE 87
UPP: 6F80 DEFINED AT LINE 85
> USED AT LINE 86
> USED AT LINE 667
RPP: 6F70 DEFINED AT LINE 86
> USED AT LINE 87
> USED AT LINE 135
TIBB: 6E70 DEFINED AT LINE 87
> USED AT LINE 88
> USED AT LINE 147
> USED AT LINE 2537
SPP: 6E60 DEFINED AT LINE 88
> USED AT LINE 134
COLDD: 0100 DEFINED AT LINE 90
> USED AT LINE 91
> USED AT LINE 120
CODEE: 0180 DEFINED AT LINE 91
> USED AT LINE 162
NAMEE: 6C00 DEFINED AT LINE 92
> USED AT LINE 3369
RESET: 0100 DEFINED AT LINE 123
> USED AT LINE 102
> USED AT LINE 104
> USED AT LINE 106
> USED AT LINE 108
> USED AT LINE 110
> USED AT LINE 112
> USED AT LINE 114
> USED AT LINE 116
ORIG: 0100 DEFINED AT LINE 124
UZERO: 010D DEFINED AT LINE 133
> USED AT LINE 3352
> USED AT LINE 3353
ULAST: 0157 DEFINED AT LINE 160
> USED AT LINE 3353
ACIA: 83FE DEFINED AT LINE 166
> USED AT LINE 167
> USED AT LINE 168
> USED AT LINE 169
ACIAC: 83FE DEFINED AT LINE 167
ACIAS: 83FE DEFINED AT LINE 168
> USED AT LINE 177
> USED AT LINE 185
ACIAD: 83FF DEFINED AT LINE 169
> USED AT LINE 180
> USED AT LINE 188
ACIA_TDRE: 0002 DEFINED AT LINE 171
ACIA_RDRF: 0001 DEFINED AT LINE 172
SEROUT: 0180 DEFINED AT LINE 174
> USED AT LINE 226
SEROUTL: 0182 DEFINED AT LINE 176
SERIN: 018D DEFINED AT LINE 184
> USED AT LINE 205
SERIN_RET: 0197 DEFINED AT LINE 189
> USED AT LINE 187
L100: 019C DEFINED AT LINE 196
> USED AT LINE 202
BYE: 01A0 DEFINED AT LINE 197
> USED AT LINE 195
L110: 01A7 DEFINED AT LINE 203
> USED AT LINE 218
QRX: 01AB DEFINED AT LINE 204
> USED AT LINE 136
> USED AT LINE 202
> USED AT LINE 2575
QRX1: 01B7 DEFINED AT LINE 209
> USED AT LINE 206
L120: 01C6 DEFINED AT LINE 219
> USED AT LINE 233
TXSTO: 01CA DEFINED AT LINE 220
> USED AT LINE 137
> USED AT LINE 140
> USED AT LINE 218
> USED AT LINE 2575
TX1: 01D2 DEFINED AT LINE 224
> USED AT LINE 222
L130: 01DD DEFINED AT LINE 234
> USED AT LINE 242
STOIO: 01E1 DEFINED AT LINE 235
> USED AT LINE 233
> USED AT LINE 3330
L140: 01E7 DEFINED AT LINE 243
> USED AT LINE 256
DOLIT: 01ED DEFINED AT LINE 244
> USED AT LINE 242
> USED AT LINE 1362
> USED AT LINE 1376
> USED AT LINE 1460
> USED AT LINE 1565
> USED AT LINE 1570
> USED AT LINE 1687
> USED AT LINE 1844
> USED AT LINE 1900
> USED AT LINE 1950
> USED AT LINE 1958
> USED AT LINE 2216
> USED AT LINE 2224
> USED AT LINE 2286
> USED AT LINE 2343
> USED AT LINE 2345
> USED AT LINE 2367
> USED AT LINE 2368
> USED AT LINE 2385
> USED AT LINE 2476
> USED AT LINE 2491
> USED AT LINE 2499
> USED AT LINE 2537
> USED AT LINE 2545
> USED AT LINE 2554
> USED AT LINE 2555
> USED AT LINE 2563
> USED AT LINE 2564
> USED AT LINE 2595
> USED AT LINE 2603
> USED AT LINE 2605
> USED AT LINE 2662
> USED AT LINE 2670
> USED AT LINE 2998
> USED AT LINE 3029
> USED AT LINE 3058
> USED AT LINE 3073
> USED AT LINE 3086
> USED AT LINE 3103
> USED AT LINE 3127
> USED AT LINE 3212
> USED AT LINE 3256
> USED AT LINE 3262
> USED AT LINE 3263
> USED AT LINE 3264
> USED AT LINE 3265
> USED AT LINE 3266
> USED AT LINE 3267
> USED AT LINE 3268
> USED AT LINE 3269
> USED AT LINE 3270
> USED AT LINE 3275
> USED AT LINE 3276
> USED AT LINE 3277
> USED AT LINE 3322
> USED AT LINE 3352
> USED AT LINE 3353
L141: 01F7 DEFINED AT LINE 257
> USED AT LINE 267
DOCLIT: 01FE DEFINED AT LINE 258
> USED AT LINE 256
> USED AT LINE 1516
> USED AT LINE 1526
> USED AT LINE 1536
> USED AT LINE 1566
> USED AT LINE 1580
> USED AT LINE 1838
> USED AT LINE 1841
> USED AT LINE 1928
> USED AT LINE 1938
> USED AT LINE 1951
> USED AT LINE 1955
> USED AT LINE 2039
> USED AT LINE 2082
> USED AT LINE 2085
> USED AT LINE 2363
> USED AT LINE 2407
> USED AT LINE 3037
> USED AT LINE 3142
> USED AT LINE 3146
> USED AT LINE 3222
L150: 0209 DEFINED AT LINE 268
> USED AT LINE 279
DOLST: 0210 DEFINED AT LINE 269
> USED AT LINE 267
> USED AT LINE 579
> USED AT LINE 650
> USED AT LINE 675
> USED AT LINE 949
> USED AT LINE 958
> USED AT LINE 969
> USED AT LINE 981
> USED AT LINE 990
> USED AT LINE 999
> USED AT LINE 1187
> USED AT LINE 1259
> USED AT LINE 1270
> USED AT LINE 1281
> USED AT LINE 1359
> USED AT LINE 1384
> USED AT LINE 1401
> USED AT LINE 1409
> USED AT LINE 1418
> USED AT LINE 1459
> USED AT LINE 1475
> USED AT LINE 1484
> USED AT LINE 1497
> USED AT LINE 1505
> USED AT LINE 1515
> USED AT LINE 1525
> USED AT LINE 1535
> USED AT LINE 1545
> USED AT LINE 1564
> USED AT LINE 1578
> USED AT LINE 1611
> USED AT LINE 1648
> USED AT LINE 1660
> USED AT LINE 1669
> USED AT LINE 1678
> USED AT LINE 1686
> USED AT LINE 1694
> USED AT LINE 1702
> USED AT LINE 1808
> USED AT LINE 1822
> USED AT LINE 1837
> USED AT LINE 1851
> USED AT LINE 1860
> USED AT LINE 1869
> USED AT LINE 1878
> USED AT LINE 1886
> USED AT LINE 1897
> USED AT LINE 1908
> USED AT LINE 1917
> USED AT LINE 1927
> USED AT LINE 1937
> USED AT LINE 1949
> USED AT LINE 1966
> USED AT LINE 1999
> USED AT LINE 2007
> USED AT LINE 2017
> USED AT LINE 2025
> USED AT LINE 2038
> USED AT LINE 2048
> USED AT LINE 2056
> USED AT LINE 2068
> USED AT LINE 2081
> USED AT LINE 2094
> USED AT LINE 2103
> USED AT LINE 2111
> USED AT LINE 2119
> USED AT LINE 2128
> USED AT LINE 2138
> USED AT LINE 2147
> USED AT LINE 2160
> USED AT LINE 2170
> USED AT LINE 2205
> USED AT LINE 2215
> USED AT LINE 2223
> USED AT LINE 2231
> USED AT LINE 2239
> USED AT LINE 2247
> USED AT LINE 2259
> USED AT LINE 2269
> USED AT LINE 2277
> USED AT LINE 2293
> USED AT LINE 2319
> USED AT LINE 2340
> USED AT LINE 2353
> USED AT LINE 2362
> USED AT LINE 2379
> USED AT LINE 2398
> USED AT LINE 2406
> USED AT LINE 2419
> USED AT LINE 2430
> USED AT LINE 2453
> USED AT LINE 2461
> USED AT LINE 2473
> USED AT LINE 2490
> USED AT LINE 2498
> USED AT LINE 2510
> USED AT LINE 2521
> USED AT LINE 2535
> USED AT LINE 2544
> USED AT LINE 2553
> USED AT LINE 2562
> USED AT LINE 2582
> USED AT LINE 2591
> USED AT LINE 2616
> USED AT LINE 2627
> USED AT LINE 2635
> USED AT LINE 2644
> USED AT LINE 2652
> USED AT LINE 2661
> USED AT LINE 2669
> USED AT LINE 2679
> USED AT LINE 2689
> USED AT LINE 2699
> USED AT LINE 2729
> USED AT LINE 2805
> USED AT LINE 2817
> USED AT LINE 2838
> USED AT LINE 2846
> USED AT LINE 2854
> USED AT LINE 2862
> USED AT LINE 2870
> USED AT LINE 2878
> USED AT LINE 2887
> USED AT LINE 2895
> USED AT LINE 2903
> USED AT LINE 2911
> USED AT LINE 2919
> USED AT LINE 2927
> USED AT LINE 2935
> USED AT LINE 2943
> USED AT LINE 2951
> USED AT LINE 2961
> USED AT LINE 2974
> USED AT LINE 2995
> USED AT LINE 3012
> USED AT LINE 3020
> USED AT LINE 3028
> USED AT LINE 3036
> USED AT LINE 3048
> USED AT LINE 3057
> USED AT LINE 3068
> USED AT LINE 3081
> USED AT LINE 3093
> USED AT LINE 3101
> USED AT LINE 3113
> USED AT LINE 3126
> USED AT LINE 3140
> USED AT LINE 3164
> USED AT LINE 3179
> USED AT LINE 3187
> USED AT LINE 3198
> USED AT LINE 3219
> USED AT LINE 3235
> USED AT LINE 3304
> USED AT LINE 3321
> USED AT LINE 3329
> USED AT LINE 3351
L160: 021A DEFINED AT LINE 280
> USED AT LINE 295
DONXT: 021F DEFINED AT LINE 281
> USED AT LINE 279
> USED AT LINE 1373
> USED AT LINE 1465
> USED AT LINE 1814
> USED AT LINE 1980
> USED AT LINE 2060
> USED AT LINE 2073
> USED AT LINE 2180
> USED AT LINE 2191
> USED AT LINE 2285
> USED AT LINE 2855
> USED AT LINE 3118
> USED AT LINE 3132
> USED AT LINE 3153
> USED AT LINE 3169
NEXT1: 022C DEFINED AT LINE 287
> USED AT LINE 283
L170: 0236 DEFINED AT LINE 296
> USED AT LINE 308
QBRAN: 023E DEFINED AT LINE 297
> USED AT LINE 295
> USED AT LINE 971
> USED AT LINE 1189
> USED AT LINE 1261
> USED AT LINE 1272
> USED AT LINE 1361
> USED AT LINE 1368
> USED AT LINE 1386
> USED AT LINE 1389
> USED AT LINE 1392
> USED AT LINE 1463
> USED AT LINE 1488
> USED AT LINE 1569
> USED AT LINE 1613
> USED AT LINE 1704
> USED AT LINE 1812
> USED AT LINE 1888
> USED AT LINE 1899
> USED AT LINE 1954
> USED AT LINE 1969
> USED AT LINE 1974
> USED AT LINE 1977
> USED AT LINE 1982
> USED AT LINE 2009
> USED AT LINE 2027
> USED AT LINE 2151
> USED AT LINE 2172
> USED AT LINE 2174
> USED AT LINE 2178
> USED AT LINE 2187
> USED AT LINE 2189
> USED AT LINE 2283
> USED AT LINE 2298
> USED AT LINE 2300
> USED AT LINE 2307
> USED AT LINE 2321
> USED AT LINE 2326
> USED AT LINE 2328
> USED AT LINE 2342
> USED AT LINE 2366
> USED AT LINE 2369
> USED AT LINE 2382
> USED AT LINE 2386
> USED AT LINE 2462
> USED AT LINE 2475
> USED AT LINE 2481
> USED AT LINE 2500
> USED AT LINE 2523
> USED AT LINE 2596
> USED AT LINE 2599
> USED AT LINE 2604
> USED AT LINE 2618
> USED AT LINE 2863
> USED AT LINE 2879
> USED AT LINE 2963
> USED AT LINE 2976
> USED AT LINE 2997
> USED AT LINE 2999
> USED AT LINE 3003
> USED AT LINE 3152
> USED AT LINE 3201
> USED AT LINE 3204
> USED AT LINE 3206
> USED AT LINE 3210
> USED AT LINE 3221
> USED AT LINE 3242
> USED AT LINE 3248
> USED AT LINE 3251
> USED AT LINE 3257
> USED AT LINE 3271
> USED AT LINE 3278
> USED AT LINE 3294
> USED AT LINE 3296
> USED AT LINE 3307
> USED AT LINE 3310
BRAN1: 0246 DEFINED AT LINE 302
> USED AT LINE 299
L180: 024E DEFINED AT LINE 309
> USED AT LINE 316
BRAN: 0255 DEFINED AT LINE 310
> USED AT LINE 308
> USED AT LINE 1370
> USED AT LINE 1614
> USED AT LINE 1810
> USED AT LINE 1889
> USED AT LINE 1985
> USED AT LINE 2058
> USED AT LINE 2070
> USED AT LINE 2193
> USED AT LINE 2279
> USED AT LINE 2302
> USED AT LINE 2304
> USED AT LINE 2309
> USED AT LINE 2388
> USED AT LINE 2390
> USED AT LINE 2525
> USED AT LINE 2607
> USED AT LINE 2871
> USED AT LINE 2888
> USED AT LINE 3115
> USED AT LINE 3129
> USED AT LINE 3154
> USED AT LINE 3167
> USED AT LINE 3208
> USED AT LINE 3245
> USED AT LINE 3260
> USED AT LINE 3273
> USED AT LINE 3286
> USED AT LINE 3288
> USED AT LINE 3291
> USED AT LINE 3363
L190: 025D DEFINED AT LINE 317
> USED AT LINE 324
EXECU: 0265 DEFINED AT LINE 318
> USED AT LINE 316
> USED AT LINE 1705
> USED AT LINE 2479
> USED AT LINE 3000
L200: 026A DEFINED AT LINE 325
> USED AT LINE 332
EXIT: 026F DEFINED AT LINE 326
> USED AT LINE 324
> USED AT LINE 651
> USED AT LINE 973
> USED AT LINE 1191
> USED AT LINE 1263
> USED AT LINE 1274
> USED AT LINE 1394
> USED AT LINE 1490
> USED AT LINE 1518
> USED AT LINE 1528
> USED AT LINE 1538
> USED AT LINE 1546
> USED AT LINE 1571
> USED AT LINE 1582
> USED AT LINE 1618
> USED AT LINE 1706
> USED AT LINE 1815
> USED AT LINE 1890
> USED AT LINE 1901
> USED AT LINE 2010
> USED AT LINE 2031
> USED AT LINE 2041
> USED AT LINE 2061
> USED AT LINE 2074
> USED AT LINE 2087
> USED AT LINE 2104
> USED AT LINE 2152
> USED AT LINE 2252
> USED AT LINE 2331
> USED AT LINE 2346
> USED AT LINE 2371
> USED AT LINE 2479
> USED AT LINE 2482
> USED AT LINE 2503
> USED AT LINE 2514
> USED AT LINE 2584
> USED AT LINE 2619
> USED AT LINE 2692
> USED AT LINE 2703
> USED AT LINE 2733
> USED AT LINE 2809
> USED AT LINE 2821
> USED AT LINE 2847
> USED AT LINE 2967
> USED AT LINE 2983
> USED AT LINE 3000
> USED AT LINE 3001
> USED AT LINE 3004
> USED AT LINE 3021
> USED AT LINE 3041
> USED AT LINE 3074
> USED AT LINE 3104
> USED AT LINE 3119
> USED AT LINE 3133
> USED AT LINE 3157
> USED AT LINE 3172
> USED AT LINE 3191
> USED AT LINE 3225
> USED AT LINE 3228
> USED AT LINE 3312
> USED AT LINE 3333
L210: 0277 DEFINED AT LINE 333
> USED AT LINE 347
STORE: 0279 DEFINED AT LINE 334
> USED AT LINE 332
> USED AT LINE 1650
> USED AT LINE 1930
> USED AT LINE 1940
> USED AT LINE 2171
> USED AT LINE 2295
> USED AT LINE 2637
> USED AT LINE 2672
> USED AT LINE 2983
L220: 0285 DEFINED AT LINE 348
> USED AT LINE 356
AT: 0287 DEFINED AT LINE 349
> USED AT LINE 347
> USED AT LINE 676
> USED AT LINE 1662
> USED AT LINE 1679
> USED AT LINE 1703
> USED AT LINE 1870
> USED AT LINE 1879
> USED AT LINE 1967
> USED AT LINE 2148
> USED AT LINE 2161
> USED AT LINE 2185
> USED AT LINE 2186
> USED AT LINE 2207
> USED AT LINE 2232
> USED AT LINE 2251
> USED AT LINE 2296
> USED AT LINE 2297
> USED AT LINE 2299
> USED AT LINE 2325
> USED AT LINE 2431
> USED AT LINE 2476
> USED AT LINE 2536
> USED AT LINE 2592
> USED AT LINE 2597
> USED AT LINE 2680
> USED AT LINE 2981
> USED AT LINE 2998
> USED AT LINE 3013
> USED AT LINE 3059
> USED AT LINE 3141
> USED AT LINE 3200
> USED AT LINE 3203
> USED AT LINE 3239
> USED AT LINE 3240
> USED AT LINE 3247
> USED AT LINE 3254
> USED AT LINE 3290
> USED AT LINE 3292
> USED AT LINE 3306
L230: 0291 DEFINED AT LINE 357
> USED AT LINE 372
CSTOR: 0294 DEFINED AT LINE 358
> USED AT LINE 356
> USED AT LINE 1824
> USED AT LINE 2355
> USED AT LINE 3039
L240: 02A0 DEFINED AT LINE 373
> USED AT LINE 382
CAT: 02A3 DEFINED AT LINE 374
> USED AT LINE 372
> USED AT LINE 1671
> USED AT LINE 1968
> USED AT LINE 1972
> USED AT LINE 2071
> USED AT LINE 2975
> USED AT LINE 3116
> USED AT LINE 3130
L250: 02AE DEFINED AT LINE 383
> USED AT LINE 390
RPAT: 02B2 DEFINED AT LINE 384
> USED AT LINE 382
> USED AT LINE 2421
L260: 02BA DEFINED AT LINE 391
> USED AT LINE 398
RPSTO: 02BE DEFINED AT LINE 392
> USED AT LINE 390
L270: 02C6 DEFINED AT LINE 399
> USED AT LINE 408
RFROM: 02C9 DEFINED AT LINE 400
> USED AT LINE 398
> USED AT LINE 651
> USED AT LINE 676
> USED AT LINE 950
> USED AT LINE 1283
> USED AT LINE 1365
> USED AT LINE 1366
> USED AT LINE 1367
> USED AT LINE 1372
> USED AT LINE 1391
> USED AT LINE 1487
> USED AT LINE 1617
> USED AT LINE 1813
> USED AT LINE 1959
> USED AT LINE 1986
> USED AT LINE 1986
> USED AT LINE 1988
> USED AT LINE 1989
> USED AT LINE 2095
> USED AT LINE 2130
> USED AT LINE 2181
> USED AT LINE 2182
> USED AT LINE 2194
> USED AT LINE 2197
> USED AT LINE 2197
> USED AT LINE 2198
> USED AT LINE 2208
> USED AT LINE 2284
> USED AT LINE 2305
> USED AT LINE 2310
> USED AT LINE 2324
> USED AT LINE 2329
> USED AT LINE 2330
> USED AT LINE 2422
> USED AT LINE 2423
> USED AT LINE 2432
> USED AT LINE 2433
> USED AT LINE 2434
> USED AT LINE 2603
> USED AT LINE 2653
> USED AT LINE 3155
> USED AT LINE 3156
> USED AT LINE 3297
L279: 02D3 DEFINED AT LINE 409
> USED AT LINE 414
L280: 02D9 DEFINED AT LINE 415
> USED AT LINE 426
RAT: 02DC DEFINED AT LINE 416
> USED AT LINE 408
> USED AT LINE 414
> USED AT LINE 1366
> USED AT LINE 1390
> USED AT LINE 1973
> USED AT LINE 1981
> USED AT LINE 2095
> USED AT LINE 2280
> USED AT LINE 2281
> USED AT LINE 3168
I: 02DC DEFINED AT LINE 417
L290: 02E6 DEFINED AT LINE 427
> USED AT LINE 437
TOR: 02E9 DEFINED AT LINE 428
> USED AT LINE 426
> USED AT LINE 982
> USED AT LINE 1363
> USED AT LINE 1364
> USED AT LINE 1364
> USED AT LINE 1369
> USED AT LINE 1387
> USED AT LINE 1388
> USED AT LINE 1464
> USED AT LINE 1498
> USED AT LINE 1615
> USED AT LINE 1809
> USED AT LINE 1823
> USED AT LINE 1918
> USED AT LINE 1950
> USED AT LINE 1975
> USED AT LINE 1976
> USED AT LINE 2069
> USED AT LINE 2096
> USED AT LINE 2120
> USED AT LINE 2129
> USED AT LINE 2175
> USED AT LINE 2184
> USED AT LINE 2192
> USED AT LINE 2195
> USED AT LINE 2206
> USED AT LINE 2278
> USED AT LINE 2323
> USED AT LINE 2341
> USED AT LINE 2420
> USED AT LINE 2654
> USED AT LINE 2839
> USED AT LINE 3114
> USED AT LINE 3128
> USED AT LINE 3145
> USED AT LINE 3166
L300: 02F3 DEFINED AT LINE 438
> USED AT LINE 449
SPAT: 02F7 DEFINED AT LINE 439
> USED AT LINE 437
> USED AT LINE 1579
> USED AT LINE 2420
> USED AT LINE 3180
> USED AT LINE 3188
L310: 0301 DEFINED AT LINE 450
> USED AT LINE 457
SPSTO: 0305 DEFINED AT LINE 451
> USED AT LINE 449
L320: 030E DEFINED AT LINE 458
> USED AT LINE 465
DROP: 0313 DEFINED AT LINE 459
> USED AT LINE 457
> USED AT LINE 991
> USED AT LINE 991
> USED AT LINE 1263
> USED AT LINE 1274
> USED AT LINE 1369
> USED AT LINE 1371
> USED AT LINE 1374
> USED AT LINE 1375
> USED AT LINE 1410
> USED AT LINE 1466
> USED AT LINE 1476
> USED AT LINE 1570
> USED AT LINE 1614
> USED AT LINE 1909
> USED AT LINE 2074
> USED AT LINE 2181
> USED AT LINE 2194
> USED AT LINE 2284
> USED AT LINE 2305
> USED AT LINE 2310
> USED AT LINE 2329
> USED AT LINE 2330
> USED AT LINE 2372
> USED AT LINE 2391
> USED AT LINE 2410
> USED AT LINE 2423
> USED AT LINE 2434
> USED AT LINE 2464
> USED AT LINE 2526
> USED AT LINE 2912
> USED AT LINE 2967
> USED AT LINE 3119
> USED AT LINE 3155
> USED AT LINE 3156
> USED AT LINE 3209
> USED AT LINE 3211
> USED AT LINE 3212
> USED AT LINE 3285
> USED AT LINE 3287
> USED AT LINE 3311
L330: 031B DEFINED AT LINE 466
> USED AT LINE 475
DUPP: 031F DEFINED AT LINE 467
> USED AT LINE 465
> USED AT LINE 970
> USED AT LINE 972
> USED AT LINE 1188
> USED AT LINE 1363
> USED AT LINE 1385
> USED AT LINE 1388
> USED AT LINE 1461
> USED AT LINE 1462
> USED AT LINE 1612
> USED AT LINE 1661
> USED AT LINE 1670
> USED AT LINE 1823
> USED AT LINE 1871
> USED AT LINE 1887
> USED AT LINE 1918
> USED AT LINE 1958
> USED AT LINE 1959
> USED AT LINE 1976
> USED AT LINE 1987
> USED AT LINE 2026
> USED AT LINE 2071
> USED AT LINE 2192
> USED AT LINE 2294
> USED AT LINE 2296
> USED AT LINE 2297
> USED AT LINE 2299
> USED AT LINE 2312
> USED AT LINE 2320
> USED AT LINE 2354
> USED AT LINE 2363
> USED AT LINE 2367
> USED AT LINE 2383
> USED AT LINE 2522
> USED AT LINE 2636
> USED AT LINE 2653
> USED AT LINE 2962
> USED AT LINE 2975
> USED AT LINE 2978
> USED AT LINE 2982
> USED AT LINE 3116
> USED AT LINE 3130
> USED AT LINE 3203
> USED AT LINE 3240
> USED AT LINE 3247
> USED AT LINE 3254
> USED AT LINE 3256
> USED AT LINE 3262
> USED AT LINE 3275
> USED AT LINE 3280
> USED AT LINE 3290
> USED AT LINE 3292
> USED AT LINE 3308
L340: 0329 DEFINED AT LINE 476
> USED AT LINE 495
SWAP: 032E DEFINED AT LINE 477
> USED AT LINE 475
> USED AT LINE 982
> USED AT LINE 1262
> USED AT LINE 1271
> USED AT LINE 1273
> USED AT LINE 1374
> USED AT LINE 1393
> USED AT LINE 1419
> USED AT LINE 1486
> USED AT LINE 1506
> USED AT LINE 1615
> USED AT LINE 1649
> USED AT LINE 1662
> USED AT LINE 1671
> USED AT LINE 1827
> USED AT LINE 1828
> USED AT LINE 1852
> USED AT LINE 1853
> USED AT LINE 1970
> USED AT LINE 1971
> USED AT LINE 1973
> USED AT LINE 1978
> USED AT LINE 1981
> USED AT LINE 1984
> USED AT LINE 2183
> USED AT LINE 2294
> USED AT LINE 2306
> USED AT LINE 2368
> USED AT LINE 2372
> USED AT LINE 2433
> USED AT LINE 2904
> USED AT LINE 2920
> USED AT LINE 2928
> USED AT LINE 3209
> USED AT LINE 3211
> USED AT LINE 3259
> USED AT LINE 3272
> USED AT LINE 3279
L350: 033C DEFINED AT LINE 496
> USED AT LINE 505
OVER: 0341 DEFINED AT LINE 497
> USED AT LINE 495
> USED AT LINE 1000
> USED AT LINE 1000
> USED AT LINE 1282
> USED AT LINE 1402
> USED AT LINE 1464
> USED AT LINE 1649
> USED AT LINE 1811
> USED AT LINE 1840
> USED AT LINE 1910
> USED AT LINE 1953
> USED AT LINE 1968
> USED AT LINE 1972
> USED AT LINE 2130
> USED AT LINE 2176
> USED AT LINE 2183
> USED AT LINE 2196
> USED AT LINE 2198
> USED AT LINE 2280
> USED AT LINE 2281
> USED AT LINE 2341
> USED AT LINE 2355
> USED AT LINE 2380
> USED AT LINE 2391
> USED AT LINE 2966
> USED AT LINE 3127
> USED AT LINE 3258
> USED AT LINE 3263
> USED AT LINE 3264
> USED AT LINE 3265
> USED AT LINE 3266
> USED AT LINE 3267
> USED AT LINE 3268
> USED AT LINE 3269
> USED AT LINE 3270
> USED AT LINE 3276
> USED AT LINE 3277
L360: 034B DEFINED AT LINE 506
> USED AT LINE 516
ZLESS: 034E DEFINED AT LINE 507
> USED AT LINE 505
> USED AT LINE 1188
> USED AT LINE 1385
> USED AT LINE 1402
> USED AT LINE 1898
> USED AT LINE 2177
> USED AT LINE 2188
> USED AT LINE 2511
L365: 035B DEFINED AT LINE 517
> USED AT LINE 529
ZEQUAL: 035E DEFINED AT LINE 518
> USED AT LINE 516
ZEQUAL1: 0368 DEFINED AT LINE 523
> USED AT LINE 521
L370: 0370 DEFINED AT LINE 530
> USED AT LINE 540
ANDD: 0374 DEFINED AT LINE 531
> USED AT LINE 529
> USED AT LINE 1843
> USED AT LINE 3224
L380: 0382 DEFINED AT LINE 541
> USED AT LINE 551
ORR: 0385 DEFINED AT LINE 542
> USED AT LINE 540
L390: 0393 DEFINED AT LINE 552
> USED AT LINE 562
XORR: 0397 DEFINED AT LINE 553
> USED AT LINE 551
> USED AT LINE 1485
> USED AT LINE 2150
> USED AT LINE 2365
> USED AT LINE 2381
L391: 03A5 DEFINED AT LINE 563
> USED AT LINE 577
DPLUS: 03A8 DEFINED AT LINE 564
> USED AT LINE 562
> USED AT LINE 580
L392: 03BE DEFINED AT LINE 578
> USED AT LINE 586
DSUB: 03C1 DEFINED AT LINE 579
> USED AT LINE 577
L400: 03CE DEFINED AT LINE 587
> USED AT LINE 601
UPLUS: 03D2 DEFINED AT LINE 588
> USED AT LINE 586
> USED AT LINE 1367
> USED AT LINE 1461
> USED AT LINE 1462
L401: 03E5 DEFINED AT LINE 602
> USED AT LINE 612
DOCONST: 03ED DEFINED AT LINE 603
> USED AT LINE 601
> USED AT LINE 1554
> USED AT LINE 3103
FDOCONST: 03ED DEFINED AT LINE 604
> USED AT LINE 614
> USED AT LINE 622
> USED AT LINE 630
> USED AT LINE 639
L402: 03F7 DEFINED AT LINE 613
> USED AT LINE 620
ZERO: 03F9 DEFINED AT LINE 614
> USED AT LINE 612
> USED AT LINE 1815
> USED AT LINE 1827
> USED AT LINE 1852
> USED AT LINE 2057
> USED AT LINE 2331
> USED AT LINE 2410
> USED AT LINE 2880
> USED AT LINE 3094
L403: 0402 DEFINED AT LINE 621
> USED AT LINE 628
ONE: 0404 DEFINED AT LINE 622
> USED AT LINE 620
> USED AT LINE 2691
> USED AT LINE 3040
L404: 040D DEFINED AT LINE 629
> USED AT LINE 637
TWO: 040F DEFINED AT LINE 630
> USED AT LINE 628
> USED AT LINE 1612
> USED AT LINE 2702
> USED AT LINE 2732
> USED AT LINE 2807
> USED AT LINE 2819
> USED AT LINE 3150
L405: 0418 DEFINED AT LINE 638
> USED AT LINE 647
MONE: 041B DEFINED AT LINE 639
> USED AT LINE 637
> USED AT LINE 2301
L410: 0424 DEFINED AT LINE 648
> USED AT LINE 660
DOVAR: 042A DEFINED AT LINE 649
> USED AT LINE 647
FDOVAR: 0431 DEFINED AT LINE 654
> USED AT LINE 666
> USED AT LINE 2444
> USED AT LINE 2574
> USED AT LINE 3086
> USED AT LINE 3343
L420: 0437 DEFINED AT LINE 661
> USED AT LINE 672
UP: 043A DEFINED AT LINE 662
> USED AT LINE 660
> USED AT LINE 681
L430: 0443 DEFINED AT LINE 673
> USED AT LINE 690
DOUSE: 044A DEFINED AT LINE 674
> USED AT LINE 672
FDOUSE: 0459 DEFINED AT LINE 679
> USED AT LINE 693
> USED AT LINE 704
> USED AT LINE 715
> USED AT LINE 726
> USED AT LINE 737
> USED AT LINE 748
> USED AT LINE 759
> USED AT LINE 770
> USED AT LINE 782
> USED AT LINE 793
> USED AT LINE 804
> USED AT LINE 815
> USED AT LINE 826
> USED AT LINE 837
> USED AT LINE 848
> USED AT LINE 859
> USED AT LINE 870
> USED AT LINE 881
> USED AT LINE 892
> USED AT LINE 903
> USED AT LINE 914
> USED AT LINE 925
> USED AT LINE 936
> USED AT LINE 3073
L440: 0466 DEFINED AT LINE 691
> USED AT LINE 701
SZERO: 046A DEFINED AT LINE 692
> USED AT LINE 690
> USED AT LINE 1579
> USED AT LINE 2536
L450: 0473 DEFINED AT LINE 702
> USED AT LINE 712
RZERO: 0477 DEFINED AT LINE 703
> USED AT LINE 701
> USED AT LINE 2592
L460: 0480 DEFINED AT LINE 713
> USED AT LINE 723
TQKEY: 0486 DEFINED AT LINE 714
> USED AT LINE 712
> USED AT LINE 2000
L470: 048F DEFINED AT LINE 724
> USED AT LINE 734
TEMIT: 0495 DEFINED AT LINE 725
> USED AT LINE 723
> USED AT LINE 2018
L480: 049E DEFINED AT LINE 735
> USED AT LINE 745
TEXPE: 04A6 DEFINED AT LINE 736
> USED AT LINE 734
> USED AT LINE 2399
> USED AT LINE 2409
L490: 04AF DEFINED AT LINE 746
> USED AT LINE 756
TTAP: 04B4 DEFINED AT LINE 747
> USED AT LINE 745
> USED AT LINE 2389
L500: 04BD DEFINED AT LINE 757
> USED AT LINE 767
TECHO: 04C3 DEFINED AT LINE 758
> USED AT LINE 756
> USED AT LINE 2344
> USED AT LINE 2354
> USED AT LINE 2546
L510: 04CC DEFINED AT LINE 768
> USED AT LINE 779
TPROM: 04D4 DEFINED AT LINE 769
> USED AT LINE 767
> USED AT LINE 2526
> USED AT LINE 2597
L520: 04DD DEFINED AT LINE 780
> USED AT LINE 790
BASE: 04E2 DEFINED AT LINE 781
> USED AT LINE 779
> USED AT LINE 1879
> USED AT LINE 1930
> USED AT LINE 1940
> USED AT LINE 1967
> USED AT LINE 1978
> USED AT LINE 1989
> USED AT LINE 2148
> USED AT LINE 3141
> USED AT LINE 3239
> USED AT LINE 3297
L530: 04EB DEFINED AT LINE 791
> USED AT LINE 801
TEMP: 04EF DEFINED AT LINE 792
> USED AT LINE 790
> USED AT LINE 2171
> USED AT LINE 2173
> USED AT LINE 2185
> USED AT LINE 2186
> USED AT LINE 2295
> USED AT LINE 2303
L540: 04F8 DEFINED AT LINE 802
> USED AT LINE 812
SPAN: 04FD DEFINED AT LINE 803
> USED AT LINE 801
L550: 0506 DEFINED AT LINE 813
> USED AT LINE 823
INN: 050A DEFINED AT LINE 814
> USED AT LINE 812
L560: 0513 DEFINED AT LINE 824
> USED AT LINE 834
NTIB: 0518 DEFINED AT LINE 825
> USED AT LINE 823
> USED AT LINE 1695
> USED AT LINE 2207
> USED AT LINE 2232
L570: 0521 DEFINED AT LINE 835
> USED AT LINE 845
CSP: 0525 DEFINED AT LINE 836
> USED AT LINE 834
> USED AT LINE 3180
> USED AT LINE 3188
L580: 052E DEFINED AT LINE 846
> USED AT LINE 856
TEVAL: 0534 DEFINED AT LINE 847
> USED AT LINE 845
> USED AT LINE 2524
L590: 053D DEFINED AT LINE 857
> USED AT LINE 867
TNUMB: 0545 DEFINED AT LINE 858
> USED AT LINE 856
> USED AT LINE 2480
> USED AT LINE 3002
L600: 054E DEFINED AT LINE 868
> USED AT LINE 878
HLD: 0552 DEFINED AT LINE 869
> USED AT LINE 867
> USED AT LINE 1861
> USED AT LINE 1870
> USED AT LINE 1871
> USED AT LINE 1909
L610: 055B DEFINED AT LINE 879
> USED AT LINE 889
HANDL: 0563 DEFINED AT LINE 880
> USED AT LINE 878
> USED AT LINE 2421
> USED AT LINE 2422
> USED AT LINE 2431
> USED AT LINE 2432
L620: 056C DEFINED AT LINE 890
> USED AT LINE 900
CNTXT: 0574 DEFINED AT LINE 891
> USED AT LINE 889
> USED AT LINE 950
> USED AT LINE 2320
> USED AT LINE 3305
> USED AT LINE 3356
L630: 057D DEFINED AT LINE 901
> USED AT LINE 911
CRRNT: 0585 DEFINED AT LINE 902
> USED AT LINE 900
> USED AT LINE 2981
> USED AT LINE 3199
> USED AT LINE 3357
L640: 058E DEFINED AT LINE 912
> USED AT LINE 922
CP: 0591 DEFINED AT LINE 913
> USED AT LINE 911
> USED AT LINE 1679
> USED AT LINE 2628
> USED AT LINE 2637
> USED AT LINE 2672
L650: 059A DEFINED AT LINE 923
> USED AT LINE 933
NP: 059D DEFINED AT LINE 924
> USED AT LINE 922
> USED AT LINE 2251
L660: 05A6 DEFINED AT LINE 934
> USED AT LINE 946
LAST: 05AB DEFINED AT LINE 935
> USED AT LINE 933
> USED AT LINE 2680
> USED AT LINE 2978
> USED AT LINE 3013
> USED AT LINE 3059
L670: 05B4 DEFINED AT LINE 947
> USED AT LINE 955
DOVOC: 05BA DEFINED AT LINE 948
> USED AT LINE 946
> USED AT LINE 959
L680: 05C9 DEFINED AT LINE 956
> USED AT LINE 966
FORTH: 05CF DEFINED AT LINE 957
> USED AT LINE 955
> USED AT LINE 3356
L690: 05DC DEFINED AT LINE 967
> USED AT LINE 978
QDUP: 05E1 DEFINED AT LINE 968
> USED AT LINE 966
> USED AT LINE 1703
> USED AT LINE 2282
> USED AT LINE 2325
> USED AT LINE 2327
> USED AT LINE 2474
> USED AT LINE 2996
> USED AT LINE 3220
> USED AT LINE 3250
> USED AT LINE 3306
QDUP1: 05EC DEFINED AT LINE 973
> USED AT LINE 971
L700: 05F2 DEFINED AT LINE 979
> USED AT LINE 987
ROT: 05F6 DEFINED AT LINE 980
> USED AT LINE 978
> USED AT LINE 1466
> USED AT LINE 3149
> USED AT LINE 3149
L710: 0607 DEFINED AT LINE 988
> USED AT LINE 996
DDROP: 060D DEFINED AT LINE 989
> USED AT LINE 987
> USED AT LINE 1375
> USED AT LINE 1988
> USED AT LINE 2028
L720: 061A DEFINED AT LINE 997
> USED AT LINE 1004
DDUP: 061F DEFINED AT LINE 998
> USED AT LINE 996
> USED AT LINE 1260
> USED AT LINE 1271
> USED AT LINE 1360
> USED AT LINE 1485
> USED AT LINE 1824
> USED AT LINE 1826
> USED AT LINE 2381
> USED AT LINE 3148
> USED AT LINE 3202
> USED AT LINE 3205
L721: 062C DEFINED AT LINE 1005
> USED AT LINE 1019
LSHIFT: 0633 DEFINED AT LINE 1006
> USED AT LINE 1004
LSHIFT1: 0639 DEFINED AT LINE 1009
> USED AT LINE 1012
LSHIFT2: 0641 DEFINED AT LINE 1014
> USED AT LINE 1007
L721A: 0647 DEFINED AT LINE 1020
> USED AT LINE 1034
RSHIFT: 064E DEFINED AT LINE 1021
> USED AT LINE 1019
RSHIFT1: 0654 DEFINED AT LINE 1024
> USED AT LINE 1027
RSHIFT2: 065C DEFINED AT LINE 1029
> USED AT LINE 1022
L722: 0662 DEFINED AT LINE 1035
> USED AT LINE 1043
SWAPHL: 0665 DEFINED AT LINE 1036
> USED AT LINE 1034
L723: 0671 DEFINED AT LINE 1044
> USED AT LINE 1052
SLASH256: 0676 DEFINED AT LINE 1045
> USED AT LINE 1043
L724: 0681 DEFINED AT LINE 1053
> USED AT LINE 1061
STAR256: 0686 DEFINED AT LINE 1054
> USED AT LINE 1052
L725: 0691 DEFINED AT LINE 1062
> USED AT LINE 1070
PLUS1: 0694 DEFINED AT LINE 1063
> USED AT LINE 1061
> USED AT LINE 1670
> USED AT LINE 1813
> USED AT LINE 1825
> USED AT LINE 1979
> USED AT LINE 2072
> USED AT LINE 2179
> USED AT LINE 2190
> USED AT LINE 2195
> USED AT LINE 3117
> USED AT LINE 3131
> USED AT LINE 3237
> USED AT LINE 3259
L726: 06A1 DEFINED AT LINE 1071
> USED AT LINE 1079
MINUS1: 06A4 DEFINED AT LINE 1072
> USED AT LINE 1070
> USED AT LINE 1971
> USED AT LINE 1975
> USED AT LINE 2173
L727: 06B1 DEFINED AT LINE 1080
> USED AT LINE 1087
TWOSTAR: 06B4 DEFINED AT LINE 1081
> USED AT LINE 1079
L728: 06BE DEFINED AT LINE 1088
> USED AT LINE 1096
TWOSLASH: 06C1 DEFINED AT LINE 1089
> USED AT LINE 1087
L730: 06CB DEFINED AT LINE 1097
> USED AT LINE 1110
PLUS: 06CD DEFINED AT LINE 1098
> USED AT LINE 1096
> USED AT LINE 1365
> USED AT LINE 1390
> USED AT LINE 1518
> USED AT LINE 1528
> USED AT LINE 1826
> USED AT LINE 1843
> USED AT LINE 2380
> USED AT LINE 2671
> USED AT LINE 3283
L740: 06D9 DEFINED AT LINE 1111
> USED AT LINE 1130
INVER: 06DD DEFINED AT LINE 1112
> USED AT LINE 1110
> USED AT LINE 3151
L750: 06EF DEFINED AT LINE 1131
> USED AT LINE 1152
NEGAT: 06F6 DEFINED AT LINE 1132
> USED AT LINE 1130
> USED AT LINE 1190
> USED AT LINE 1362
> USED AT LINE 1387
> USED AT LINE 1393
> USED AT LINE 1983
NEGAT1: 0707 DEFINED AT LINE 1143
> USED AT LINE 1140
L760: 070F DEFINED AT LINE 1153
> USED AT LINE 1172
DNEGA: 0717 DEFINED AT LINE 1154
> USED AT LINE 580
> USED AT LINE 1152
> USED AT LINE 1489
L770: 072D DEFINED AT LINE 1173
> USED AT LINE 1185
SUBB: 072F DEFINED AT LINE 1174
> USED AT LINE 1172
> USED AT LINE 1282
> USED AT LINE 1283
> USED AT LINE 1616
> USED AT LINE 1957
> USED AT LINE 2177
> USED AT LINE 2196
> USED AT LINE 2282
L780: 073B DEFINED AT LINE 1186
> USED AT LINE 1196
ABSS: 073F DEFINED AT LINE 1187
> USED AT LINE 1185
> USED AT LINE 1486
ABS1: 074C DEFINED AT LINE 1191
> USED AT LINE 1189
L790: 0752 DEFINED AT LINE 1197
> USED AT LINE 1216
EQUAL: 0754 DEFINED AT LINE 1198
> USED AT LINE 1196
> USED AT LINE 2030
> USED AT LINE 2807
> USED AT LINE 2819
EQUAL1: 0761 DEFINED AT LINE 1204
> USED AT LINE 1202
L800: 0769 DEFINED AT LINE 1217
> USED AT LINE 1236
ULESS: 076C DEFINED AT LINE 1218
> USED AT LINE 1216
> USED AT LINE 1360
ULES1: 0779 DEFINED AT LINE 1224
> USED AT LINE 1222
L810: 0781 DEFINED AT LINE 1237
> USED AT LINE 1257
LESS: 0783 DEFINED AT LINE 1238
> USED AT LINE 1236
> USED AT LINE 1260
> USED AT LINE 1613
> USED AT LINE 1840
> USED AT LINE 1953
LESS1: 0790 DEFINED AT LINE 1244
> USED AT LINE 1242
L820: 0798 DEFINED AT LINE 1258
> USED AT LINE 1268
MAX: 079C DEFINED AT LINE 1259
> USED AT LINE 1257
> USED AT LINE 2057
MAX1: 07A9 DEFINED AT LINE 1263
> USED AT LINE 1261
L830: 07B1 DEFINED AT LINE 1269
> USED AT LINE 1279
MIN: 07B5 DEFINED AT LINE 1270
> USED AT LINE 1268
> USED AT LINE 2250
MIN1: 07C4 DEFINED AT LINE 1274
> USED AT LINE 1272
L840: 07CC DEFINED AT LINE 1280
> USED AT LINE 1311
WITHI: 07D3 DEFINED AT LINE 1281
> USED AT LINE 1279
> USED AT LINE 1568
L845: 07E8 DEFINED AT LINE 1312
> USED AT LINE 1354
USLASH: 07EB DEFINED AT LINE 1314
> USED AT LINE 1311
> USED AT LINE 1357
UMMOD1: 07F9 DEFINED AT LINE 1322
> USED AT LINE 1334
UMMOD2: 0806 DEFINED AT LINE 1329
> USED AT LINE 1324
> USED AT LINE 1326
UMMOD3: 080A DEFINED AT LINE 1331
> USED AT LINE 1328
UMMODOV: 0819 DEFINED AT LINE 1339
> USED AT LINE 1318
UMMOD4: 081E DEFINED AT LINE 1343
> USED AT LINE 1338
L850: 082A DEFINED AT LINE 1355
> USED AT LINE 1381
UMMOD: 0831 DEFINED AT LINE 1356
> USED AT LINE 1354
> USED AT LINE 1391
UMM1: 0847 DEFINED AT LINE 1363
> USED AT LINE 1373
UMM2: 0879 DEFINED AT LINE 1371
> USED AT LINE 1368
UMM3: 087B DEFINED AT LINE 1372
> USED AT LINE 1370
UMM4: 0887 DEFINED AT LINE 1375
> USED AT LINE 1361
L860: 0897 DEFINED AT LINE 1382
> USED AT LINE 1399
MSMOD: 089D DEFINED AT LINE 1383
> USED AT LINE 1381
MMOD1: 08B4 DEFINED AT LINE 1388
> USED AT LINE 1386
MMOD2: 08C2 DEFINED AT LINE 1391
> USED AT LINE 1389
MMOD3: 08D2 DEFINED AT LINE 1394
> USED AT LINE 1392
L870: 08D8 DEFINED AT LINE 1400
> USED AT LINE 1407
SLMOD: 08DD DEFINED AT LINE 1401
> USED AT LINE 1399
> USED AT LINE 1410
> USED AT LINE 1419
L880: 08EE DEFINED AT LINE 1408
> USED AT LINE 1415
MODD: 08F2 DEFINED AT LINE 1409
> USED AT LINE 1407
L890: 08FF DEFINED AT LINE 1416
> USED AT LINE 1426
SLASH: 0901 DEFINED AT LINE 1417
> USED AT LINE 1415
> USED AT LINE 1582
> USED AT LINE 3144
L900: 0910 DEFINED AT LINE 1427
> USED AT LINE 1456
UMSTA: 0914 DEFINED AT LINE 1428
> USED AT LINE 1426
UUMSTA1: 091B DEFINED AT LINE 1433
> USED AT LINE 1440
UUMSTA2: 091F DEFINED AT LINE 1435
> USED AT LINE 1433
UUMSTA3: 0921 DEFINED AT LINE 1437
> USED AT LINE 1432
L900A: 0931 DEFINED AT LINE 1457
> USED AT LINE 1472
UUMSTA: 0936 DEFINED AT LINE 1458
> USED AT LINE 1456
UMST1: 0945 DEFINED AT LINE 1461
> USED AT LINE 1465
UMST2: 0965 DEFINED AT LINE 1465
> USED AT LINE 1463
L910: 0973 DEFINED AT LINE 1473
> USED AT LINE 1481
STAR: 0975 DEFINED AT LINE 1474
> USED AT LINE 1472
> USED AT LINE 1538
L920: 0982 DEFINED AT LINE 1482
> USED AT LINE 1495
MSTAR: 0985 DEFINED AT LINE 1483
> USED AT LINE 1476
> USED AT LINE 1481
> USED AT LINE 1498
MSTA1: 09A0 DEFINED AT LINE 1490
> USED AT LINE 1488
L930: 09A6 DEFINED AT LINE 1496
> USED AT LINE 1503
SSMOD: 09AC DEFINED AT LINE 1497
> USED AT LINE 1495
> USED AT LINE 1506
L940: 09BD DEFINED AT LINE 1504
> USED AT LINE 1513
STASL: 09C0 DEFINED AT LINE 1505
> USED AT LINE 1503
L950: 09CF DEFINED AT LINE 1514
> USED AT LINE 1523
CELLP: 09D5 DEFINED AT LINE 1515
> USED AT LINE 1513
> USED AT LINE 1650
> USED AT LINE 1661
> USED AT LINE 1695
> USED AT LINE 2301
> USED AT LINE 2303
> USED AT LINE 2324
> USED AT LINE 2654
> USED AT LINE 2808
> USED AT LINE 2820
> USED AT LINE 3200
> USED AT LINE 3246
> USED AT LINE 3258
> USED AT LINE 3272
> USED AT LINE 3279
L960: 09E3 DEFINED AT LINE 1524
> USED AT LINE 1533
CELLM: 09E9 DEFINED AT LINE 1525
> USED AT LINE 1523
> USED AT LINE 2270
> USED AT LINE 2270
> USED AT LINE 2306
> USED AT LINE 2308
> USED AT LINE 2308
> USED AT LINE 2311
> USED AT LINE 2322
> USED AT LINE 2980
> USED AT LINE 2982
> USED AT LINE 3207
> USED AT LINE 3309
L970: 09F7 DEFINED AT LINE 1534
> USED AT LINE 1543
CELLS: 09FD DEFINED AT LINE 1535
> USED AT LINE 1533
L975: 0A0B DEFINED AT LINE 1544
> USED AT LINE 1551
ALGND: 0A13 DEFINED AT LINE 1545
> USED AT LINE 1543
> USED AT LINE 2096
> USED AT LINE 2979
L980: 0A1C DEFINED AT LINE 1552
> USED AT LINE 1562
BLANK: 0A1F DEFINED AT LINE 1553
> USED AT LINE 1551
> USED AT LINE 1568
> USED AT LINE 1811
> USED AT LINE 2049
> USED AT LINE 2176
> USED AT LINE 2240
> USED AT LINE 2248
> USED AT LINE 2344
> USED AT LINE 2370
> USED AT LINE 2385
L990: 0A26 DEFINED AT LINE 1563
> USED AT LINE 1576
TCHAR: 0A2C DEFINED AT LINE 1564
> USED AT LINE 1562
TCHA1: 0A46 DEFINED AT LINE 1571
> USED AT LINE 1569
L1000: 0A4C DEFINED AT LINE 1577
> USED AT LINE 1587
DEPTH: 0A52 DEFINED AT LINE 1578
> USED AT LINE 1576
> USED AT LINE 2511
> USED AT LINE 3165
L1010: 0A6A DEFINED AT LINE 1588
> USED AT LINE 1606
PICK: 0A6F DEFINED AT LINE 1589
> USED AT LINE 1587
> USED AT LINE 3168
L1015: 0A80 DEFINED AT LINE 1607
> USED AT LINE 1625
ROLL: 0A85 DEFINED AT LINE 1608
> USED AT LINE 1606
> USED AT LINE 1617
ROL1: 0A98 DEFINED AT LINE 1615
ROL2: 0AA6 DEFINED AT LINE 1618
L1020: 0AAC DEFINED AT LINE 1626
> USED AT LINE 1643
PSTOR: 0AAF DEFINED AT LINE 1627
> USED AT LINE 1625
> USED AT LINE 2628
L1030: 0ABD DEFINED AT LINE 1644
> USED AT LINE 1655
DSTOR: 0AC0 DEFINED AT LINE 1645
> USED AT LINE 1643
> USED AT LINE 2546
> USED AT LINE 3357
L1040: 0AD3 DEFINED AT LINE 1656
> USED AT LINE 1667
DAT: 0AD6 DEFINED AT LINE 1657
> USED AT LINE 1655
> USED AT LINE 2583
L1050: 0AE9 DEFINED AT LINE 1668
> USED AT LINE 1676
COUNT: 0AEF DEFINED AT LINE 1669
> USED AT LINE 1667
> USED AT LINE 2112
> USED AT LINE 2600
> USED AT LINE 2671
> USED AT LINE 2966
> USED AT LINE 3222
> USED AT LINE 3280
> USED AT LINE 3283
L1060: 0B00 DEFINED AT LINE 1677
> USED AT LINE 1684
HERE: 0B05 DEFINED AT LINE 1678
> USED AT LINE 1676
> USED AT LINE 1687
> USED AT LINE 2260
> USED AT LINE 2636
> USED AT LINE 2808
> USED AT LINE 2820
> USED AT LINE 2847
> USED AT LINE 2896
> USED AT LINE 2904
> USED AT LINE 2979
> USED AT LINE 3039
L1070: 0B12 DEFINED AT LINE 1685
> USED AT LINE 1692
PAD: 0B16 DEFINED AT LINE 1686
> USED AT LINE 1684
> USED AT LINE 1861
> USED AT LINE 1910
L1080: 0B27 DEFINED AT LINE 1693
> USED AT LINE 1700
TIB: 0B2B DEFINED AT LINE 1694
> USED AT LINE 1692
> USED AT LINE 2206
> USED AT LINE 2407
L1090: 0B3A DEFINED AT LINE 1701
> USED AT LINE 1711
ATEXE: 0B43 DEFINED AT LINE 1702
> USED AT LINE 1700
> USED AT LINE 2000
> USED AT LINE 2018
> USED AT LINE 2389
> USED AT LINE 2399
> USED AT LINE 2409
> USED AT LINE 2480
> USED AT LINE 2524
> USED AT LINE 3002
> USED AT LINE 3355
EXE1: 0B50 DEFINED AT LINE 1706
> USED AT LINE 1704
L1100: 0B56 DEFINED AT LINE 1712
> USED AT LINE 1776
CMOVE: 0B5C DEFINED AT LINE 1713
> USED AT LINE 1711
> USED AT LINE 1828
CMOVE1: 0B68 DEFINED AT LINE 1720
> USED AT LINE 1718
CMOVE2: 0B6E DEFINED AT LINE 1724
> USED AT LINE 1727
> USED AT LINE 1729
CMOVE3: 0B7B DEFINED AT LINE 1731
> USED AT LINE 1716
CMOVEW: 0B7F DEFINED AT LINE 1735
> USED AT LINE 1714
CMOVEW1: 0B92 DEFINED AT LINE 1745
> USED AT LINE 1743
CMOVEW2: 0B97 DEFINED AT LINE 1747
> USED AT LINE 1750
> USED AT LINE 1752
CMOVEW3: 0BA1 DEFINED AT LINE 1753
> USED AT LINE 1746
CMOVEW4: 0BA9 DEFINED AT LINE 1757
> USED AT LINE 1754
L1110: 0BB3 DEFINED AT LINE 1777
> USED AT LINE 1806
FILL: 0BB8 DEFINED AT LINE 1778
> USED AT LINE 1776
NFILL1: 0BC1 DEFINED AT LINE 1784
> USED AT LINE 1782
NFILL2: 0BC5 DEFINED AT LINE 1787
> USED AT LINE 1790
> USED AT LINE 1792
NFILL3: 0BCE DEFINED AT LINE 1793
> USED AT LINE 1780
L1120: 0BD6 DEFINED AT LINE 1807
> USED AT LINE 1820
DTRAI: 0BE0 DEFINED AT LINE 1808
> USED AT LINE 1806
DTRA1: 0BE9 DEFINED AT LINE 1811
> USED AT LINE 1814
DTRA2: 0BFF DEFINED AT LINE 1814
> USED AT LINE 1810
> USED AT LINE 1812
L1130: 0C0B DEFINED AT LINE 1821
> USED AT LINE 1835
PACKS: 0C11 DEFINED AT LINE 1822
> USED AT LINE 1820
> USED AT LINE 2252
L1140: 0C34 DEFINED AT LINE 1836
> USED AT LINE 1849
DIGIT: 0C3A DEFINED AT LINE 1837
> USED AT LINE 1835
> USED AT LINE 1853
L1150: 0C55 DEFINED AT LINE 1850
> USED AT LINE 1858
EXTRC: 0C5D DEFINED AT LINE 1851
> USED AT LINE 1849
L1160: 0C70 DEFINED AT LINE 1859
> USED AT LINE 1867
BDIGS: 0C73 DEFINED AT LINE 1860
> USED AT LINE 1858
> USED AT LINE 1919
> USED AT LINE 2129
> USED AT LINE 2139
L1170: 0C82 DEFINED AT LINE 1868
> USED AT LINE 1876
HOLD: 0C87 DEFINED AT LINE 1869
> USED AT LINE 1867
L1180: 0C9E DEFINED AT LINE 1877
> USED AT LINE 1884
DIG: 0CA0 DEFINED AT LINE 1878
> USED AT LINE 1876
> USED AT LINE 1887
L1190: 0CB1 DEFINED AT LINE 1885
> USED AT LINE 1895
DIGS: 0CB4 DEFINED AT LINE 1886
> USED AT LINE 1884
> USED AT LINE 1919
> USED AT LINE 2139
DIGS1: 0CB7 DEFINED AT LINE 1887
> USED AT LINE 1889
DIGS2: 0CC3 DEFINED AT LINE 1890
> USED AT LINE 1888
L1200: 0CC9 DEFINED AT LINE 1896
> USED AT LINE 1906
SIGN: 0CCE DEFINED AT LINE 1897
> USED AT LINE 1895
> USED AT LINE 1920
SIGN1: 0CDB DEFINED AT LINE 1901
> USED AT LINE 1899
L1210: 0CE1 DEFINED AT LINE 1907
> USED AT LINE 1915
EDIGS: 0CE4 DEFINED AT LINE 1908
> USED AT LINE 1906
> USED AT LINE 1920
L1220: 0CF9 DEFINED AT LINE 1916
> USED AT LINE 1925
STR: 0CFD DEFINED AT LINE 1917
> USED AT LINE 1915
> USED AT LINE 2120
> USED AT LINE 2153
L1230: 0D16 DEFINED AT LINE 1926
> USED AT LINE 1935
HEX: 0D1A DEFINED AT LINE 1927
> USED AT LINE 1925
> USED AT LINE 1970
L1240: 0D2A DEFINED AT LINE 1936
> USED AT LINE 1947
DECIM: 0D32 DEFINED AT LINE 1937
> USED AT LINE 1935
L1250: 0D42 DEFINED AT LINE 1948
> USED AT LINE 1964
DIGTQ: 0D49 DEFINED AT LINE 1949
> USED AT LINE 1947
DGTQ1: 0D6C DEFINED AT LINE 1959
> USED AT LINE 1954
L1260: 0D78 DEFINED AT LINE 1965
> USED AT LINE 1997
NUMBQ: 0D80 DEFINED AT LINE 1966
> USED AT LINE 150
> USED AT LINE 1964
NUMQ1: 0DA5 DEFINED AT LINE 1972
> USED AT LINE 1969
NUMQ2: 0DC5 DEFINED AT LINE 1976
> USED AT LINE 1980
NUMQ3: 0DF3 DEFINED AT LINE 1984
> USED AT LINE 1982
NUMQ4: 0DF9 DEFINED AT LINE 1986
> USED AT LINE 1977
NUMQ5: 0E03 DEFINED AT LINE 1987
> USED AT LINE 1985
NUMQ6: 0E05 DEFINED AT LINE 1988
> USED AT LINE 1974
L1270: 0E15 DEFINED AT LINE 1998
> USED AT LINE 2005
QKEY: 0E1A DEFINED AT LINE 1999
> USED AT LINE 1997
> USED AT LINE 2008
> USED AT LINE 2026
L1280: 0E27 DEFINED AT LINE 2006
> USED AT LINE 2015
KEY: 0E2B DEFINED AT LINE 2007
> USED AT LINE 2005
> USED AT LINE 2028
> USED AT LINE 2383
KEY1: 0E2E DEFINED AT LINE 2008
> USED AT LINE 2009
L1290: 0E3A DEFINED AT LINE 2016
> USED AT LINE 2023
EMIT: 0E3F DEFINED AT LINE 2017
> USED AT LINE 2015
> USED AT LINE 2041
> USED AT LINE 2049
> USED AT LINE 2084
> USED AT LINE 2087
> USED AT LINE 3282
L1300: 0E4C DEFINED AT LINE 2024
> USED AT LINE 2036
NUFQ: 0E51 DEFINED AT LINE 2025
> USED AT LINE 2023
> USED AT LINE 3151
> USED AT LINE 3295
> USED AT LINE 3309
NUFQ1: 0E65 DEFINED AT LINE 2031
> USED AT LINE 2027
L1310: 0E6B DEFINED AT LINE 2037
> USED AT LINE 2046
PACE: 0E70 DEFINED AT LINE 2038
> USED AT LINE 2036
> USED AT LINE 2554
L1320: 0E7E DEFINED AT LINE 2047
> USED AT LINE 2054
SPACE: 0E84 DEFINED AT LINE 2048
> USED AT LINE 2046
> USED AT LINE 2059
> USED AT LINE 2140
> USED AT LINE 2153
> USED AT LINE 2600
> USED AT LINE 3128
> USED AT LINE 3253
> USED AT LINE 3308
L1330: 0E91 DEFINED AT LINE 2055
> USED AT LINE 2066
SPACS: 0E98 DEFINED AT LINE 2056
> USED AT LINE 2054
> USED AT LINE 2121
> USED AT LINE 2131
> USED AT LINE 3150
CHAR1: 0EA5 DEFINED AT LINE 2059
> USED AT LINE 2060
CHAR2: 0EA7 DEFINED AT LINE 2060
> USED AT LINE 2058
L1340: 0EB1 DEFINED AT LINE 2067
> USED AT LINE 2079
TYPES: 0EB6 DEFINED AT LINE 2068
> USED AT LINE 2066
> USED AT LINE 2121
> USED AT LINE 2131
> USED AT LINE 2140
TYPE1: 0EBF DEFINED AT LINE 2071
> USED AT LINE 2073
TYPE2: 0EC7 DEFINED AT LINE 2073
> USED AT LINE 2070
L1350: 0ED3 DEFINED AT LINE 2080
> USED AT LINE 2092
CR: 0ED6 DEFINED AT LINE 2081
> USED AT LINE 2079
> USED AT LINE 2503
> USED AT LINE 3146
> USED AT LINE 3165
> USED AT LINE 3243
> USED AT LINE 3246
> USED AT LINE 3305
> USED AT LINE 3330
> USED AT LINE 3333
L1360: 0EE9 DEFINED AT LINE 2093
> USED AT LINE 2101
DOSTR: 0EED DEFINED AT LINE 2094
> USED AT LINE 2092
> USED AT LINE 2104
> USED AT LINE 2112
> USED AT LINE 2463
> USED AT LINE 2464
L1370: 0F08 DEFINED AT LINE 2102
> USED AT LINE 2109
STRQP: 0F09 DEFINED AT LINE 2103
> USED AT LINE 2101
> USED AT LINE 2944
> USED AT LINE 2984
L1380: 0F14 DEFINED AT LINE 2110
> USED AT LINE 2117
DOTQP: 0F15 DEFINED AT LINE 2111
> USED AT LINE 2109
> USED AT LINE 2501
> USED AT LINE 2601
> USED AT LINE 2952
> USED AT LINE 2964
> USED AT LINE 3170
> USED AT LINE 3226
> USED AT LINE 3243
L1390: 0F24 DEFINED AT LINE 2118
> USED AT LINE 2126
DOTR: 0F27 DEFINED AT LINE 2119
> USED AT LINE 2117
L1400: 0F3E DEFINED AT LINE 2127
> USED AT LINE 2136
UDOTR: 0F42 DEFINED AT LINE 2128
> USED AT LINE 2126
L1410: 0F5D DEFINED AT LINE 2137
> USED AT LINE 2145
UDOT: 0F60 DEFINED AT LINE 2138
> USED AT LINE 2136
> USED AT LINE 2152
L1420: 0F73 DEFINED AT LINE 2146
> USED AT LINE 2158
DOT: 0F75 DEFINED AT LINE 2147
> USED AT LINE 2145
> USED AT LINE 2161
DOT1: 0F89 DEFINED AT LINE 2153
> USED AT LINE 2151
L1430: 0F95 DEFINED AT LINE 2159
> USED AT LINE 2168
QUEST: 0F97 DEFINED AT LINE 2160
> USED AT LINE 2158
L1440: 0FA4 DEFINED AT LINE 2169
> USED AT LINE 2203
PARS: 0FAA DEFINED AT LINE 2170
> USED AT LINE 2168
> USED AT LINE 2208
PARS1: 0FCB DEFINED AT LINE 2176
> USED AT LINE 2180
PARS2: 0FEB DEFINED AT LINE 2182
> USED AT LINE 2178
PARS3: 0FED DEFINED AT LINE 2183
> USED AT LINE 2174
PARS4: 0FF3 DEFINED AT LINE 2185
> USED AT LINE 2191
PARS5: 100B DEFINED AT LINE 2189
> USED AT LINE 2187
PARS6: 101D DEFINED AT LINE 2194
> USED AT LINE 2189
PARS7: 1027 DEFINED AT LINE 2196
> USED AT LINE 2193
PARS8: 1033 DEFINED AT LINE 2198
> USED AT LINE 2172
L1450: 103F DEFINED AT LINE 2204
> USED AT LINE 2213
PARSE: 1045 DEFINED AT LINE 2205
> USED AT LINE 2203
> USED AT LINE 2240
> USED AT LINE 2248
> USED AT LINE 2260
L1460: 106A DEFINED AT LINE 2214
> USED AT LINE 2221
DOTPR: 106D DEFINED AT LINE 2215
> USED AT LINE 2213
L1470: 107C DEFINED AT LINE 2222
> USED AT LINE 2229
PAREN: 107E DEFINED AT LINE 2223
> USED AT LINE 2221
L1480: 108D DEFINED AT LINE 2230
> USED AT LINE 2237
BKSLA: 108F DEFINED AT LINE 2231
> USED AT LINE 2229
L1490: 10A0 DEFINED AT LINE 2238
> USED AT LINE 2245
CHAR: 10A5 DEFINED AT LINE 2239
> USED AT LINE 2237
L1500: 10B6 DEFINED AT LINE 2246
> USED AT LINE 2257
TOKEN: 10BC DEFINED AT LINE 2247
> USED AT LINE 2245
> USED AT LINE 2522
> USED AT LINE 2617
> USED AT LINE 3049
> USED AT LINE 3069
> USED AT LINE 3082
> USED AT LINE 3102
L1510: 10DA DEFINED AT LINE 2258
> USED AT LINE 2267
WORD: 10DF DEFINED AT LINE 2259
> USED AT LINE 2257
L1520: 10EE DEFINED AT LINE 2268
> USED AT LINE 2275
NAMET: 10F4 DEFINED AT LINE 2269
> USED AT LINE 2267
> USED AT LINE 2312
> USED AT LINE 3205
L1530: 1103 DEFINED AT LINE 2276
> USED AT LINE 2291
SAMEQ: 1109 DEFINED AT LINE 2277
> USED AT LINE 2275
SAME1: 1112 DEFINED AT LINE 2280
> USED AT LINE 2285
SAME2: 1130 DEFINED AT LINE 2285
> USED AT LINE 2279
> USED AT LINE 2283
L1540: 113E DEFINED AT LINE 2292
> USED AT LINE 2317
FIND: 1143 DEFINED AT LINE 2293
> USED AT LINE 2291
> USED AT LINE 2327
FIND1: 115C DEFINED AT LINE 2297
> USED AT LINE 2309
FIND2: 117E DEFINED AT LINE 2303
> USED AT LINE 2300
FIND3: 1186 DEFINED AT LINE 2304
> USED AT LINE 2302
FIND6: 118A DEFINED AT LINE 2305
> USED AT LINE 2298
FIND4: 1196 DEFINED AT LINE 2307
> USED AT LINE 2304
FIND5: 11A2 DEFINED AT LINE 2310
> USED AT LINE 2307
L1550: 11B8 DEFINED AT LINE 2318
> USED AT LINE 2338
NAMEQ: 11BE DEFINED AT LINE 2319
> USED AT LINE 2317
> USED AT LINE 2474
> USED AT LINE 2617
> USED AT LINE 2962
> USED AT LINE 2996
NAMQ1: 11CF DEFINED AT LINE 2323
> USED AT LINE 2321
NAMQ2: 11D1 DEFINED AT LINE 2324
> USED AT LINE 2328
NAMQ3: 11EF DEFINED AT LINE 2330
> USED AT LINE 2326
L1560: 11FB DEFINED AT LINE 2339
> USED AT LINE 2351
BKSP: 11FE DEFINED AT LINE 2340
> USED AT LINE 2338
> USED AT LINE 2371
BACK1: 1229 DEFINED AT LINE 2346
> USED AT LINE 2342
L1570: 122F DEFINED AT LINE 2352
> USED AT LINE 2360
TAP: 1233 DEFINED AT LINE 2353
> USED AT LINE 2351
> USED AT LINE 2370
> USED AT LINE 2387
L1580: 1248 DEFINED AT LINE 2361
> USED AT LINE 2377
KTAP: 124D DEFINED AT LINE 2362
> USED AT LINE 139
> USED AT LINE 2360
> USED AT LINE 2555
> USED AT LINE 2564
KTAP1: 1277 DEFINED AT LINE 2371
> USED AT LINE 2369
KTAP2: 127B DEFINED AT LINE 2372
> USED AT LINE 2366
L1590: 1289 DEFINED AT LINE 2378
> USED AT LINE 2396
ACCEP: 1290 DEFINED AT LINE 2379
> USED AT LINE 138
> USED AT LINE 2377
> USED AT LINE 2545
ACCP1: 1299 DEFINED AT LINE 2381
> USED AT LINE 2390
ACCP2: 12B7 DEFINED AT LINE 2389
> USED AT LINE 2386
ACCP3: 12BB DEFINED AT LINE 2390
> USED AT LINE 2388
ACCP4: 12BF DEFINED AT LINE 2391
> USED AT LINE 2382
L1600: 12CB DEFINED AT LINE 2397
> USED AT LINE 2404
EXPEC: 12D2 DEFINED AT LINE 2398
> USED AT LINE 2396
L1610: 12E5 DEFINED AT LINE 2405
> USED AT LINE 2417
QUERY: 12EB DEFINED AT LINE 2406
> USED AT LINE 2404
> USED AT LINE 2594
L1620: 1309 DEFINED AT LINE 2418
> USED AT LINE 2428
CATCH: 130F DEFINED AT LINE 2419
> USED AT LINE 2417
L1630: 1336 DEFINED AT LINE 2429
> USED AT LINE 2439
THROW: 133C DEFINED AT LINE 2430
> USED AT LINE 2428
> USED AT LINE 2454
> USED AT LINE 2463
> USED AT LINE 2483
> USED AT LINE 2620
> USED AT LINE 2986
> USED AT LINE 3005
L1640: 135D DEFINED AT LINE 2440
> USED AT LINE 2451
NULLS: 1363 DEFINED AT LINE 2441
> USED AT LINE 2439
> USED AT LINE 2454
> USED AT LINE 2598
L1650: 1372 DEFINED AT LINE 2452
> USED AT LINE 2459
ABORT: 1378 DEFINED AT LINE 2453
> USED AT LINE 2451
L1660: 1383 DEFINED AT LINE 2460
> USED AT LINE 2471
ABORQ: 1384 DEFINED AT LINE 2461
> USED AT LINE 2459
> USED AT LINE 2477
> USED AT LINE 2512
> USED AT LINE 2936
> USED AT LINE 3189
ABOR1: 138F DEFINED AT LINE 2464
> USED AT LINE 2462
L1670: 1399 DEFINED AT LINE 2472
> USED AT LINE 2488
INTER: 13A4 DEFINED AT LINE 2473
> USED AT LINE 149
> USED AT LINE 2471
> USED AT LINE 2491
> USED AT LINE 2499
INTE1: 13CB DEFINED AT LINE 2480
> USED AT LINE 2475
INTE2: 13D5 DEFINED AT LINE 2483
> USED AT LINE 2481
L1680: 13DB DEFINED AT LINE 2489
> USED AT LINE 2496
LBRAC: 13DD DEFINED AT LINE 2490
> USED AT LINE 2488
> USED AT LINE 2593
L1690: 13EE DEFINED AT LINE 2497
> USED AT LINE 2508
DOTOK: 13F2 DEFINED AT LINE 2498
> USED AT LINE 141
> USED AT LINE 2496
> USED AT LINE 2563
DOTO1: 1409 DEFINED AT LINE 2503
> USED AT LINE 2500
L1700: 1411 DEFINED AT LINE 2509
> USED AT LINE 2519
QSTAC: 1418 DEFINED AT LINE 2510
> USED AT LINE 2508
L1710: 1432 DEFINED AT LINE 2520
> USED AT LINE 2533
EVAL: 1437 DEFINED AT LINE 2521
> USED AT LINE 2519
> USED AT LINE 2595
EVAL1: 143A DEFINED AT LINE 2522
> USED AT LINE 2525
EVAL2: 144E DEFINED AT LINE 2526
> USED AT LINE 2523
L1720: 145A DEFINED AT LINE 2534
> USED AT LINE 2542
PRESE: 1461 DEFINED AT LINE 2535
> USED AT LINE 2533
> USED AT LINE 2606
> USED AT LINE 3354
L1730: 147A DEFINED AT LINE 2543
> USED AT LINE 2551
XIO: 147E DEFINED AT LINE 2544
> USED AT LINE 2542
L1740: 1493 DEFINED AT LINE 2552
> USED AT LINE 2560
FILE: 1498 DEFINED AT LINE 2553
> USED AT LINE 2551
L1750: 14AF DEFINED AT LINE 2561
> USED AT LINE 2569
HAND: 14B4 DEFINED AT LINE 2562
> USED AT LINE 2560
> USED AT LINE 2584
L1760: 14CB DEFINED AT LINE 2570
> USED AT LINE 2580
ISLO: 14CF DEFINED AT LINE 2571
> USED AT LINE 2569
> USED AT LINE 2583
L1770: 14DA DEFINED AT LINE 2581
> USED AT LINE 2589
CONSO: 14E2 DEFINED AT LINE 2582
> USED AT LINE 2580
> USED AT LINE 2598
L1780: 14F5 DEFINED AT LINE 2590
> USED AT LINE 2614
QUIT: 14FA DEFINED AT LINE 2591
> USED AT LINE 2589
> USED AT LINE 3362
QUIT1: 1503 DEFINED AT LINE 2593
> USED AT LINE 2607
QUIT2: 1505 DEFINED AT LINE 2594
> USED AT LINE 2596
QUIT3: 1531 DEFINED AT LINE 2603
> USED AT LINE 2599
QUIT4: 1543 DEFINED AT LINE 2606
> USED AT LINE 2604
L1790: 154D DEFINED AT LINE 2615
> USED AT LINE 2625
TICK: 154F DEFINED AT LINE 2616
> USED AT LINE 2614
> USED AT LINE 2645
> USED AT LINE 3236
TICK1: 155C DEFINED AT LINE 2620
> USED AT LINE 2618
L1800: 1562 DEFINED AT LINE 2626
> USED AT LINE 2633
ALLOT: 1568 DEFINED AT LINE 2627
> USED AT LINE 2625
> USED AT LINE 3040
L1810: 1575 DEFINED AT LINE 2634
> USED AT LINE 2642
COMMA: 1577 DEFINED AT LINE 2635
> USED AT LINE 2633
> USED AT LINE 2645
> USED AT LINE 2809
> USED AT LINE 2821
> USED AT LINE 2880
> USED AT LINE 3001
> USED AT LINE 3041
> USED AT LINE 3074
> USED AT LINE 3104
L1820: 158C DEFINED AT LINE 2643
> USED AT LINE 2650
BCOMP: 1596 DEFINED AT LINE 2644
> USED AT LINE 2642
L1830: 15A3 DEFINED AT LINE 2651
> USED AT LINE 2659
COMPI: 15AB DEFINED AT LINE 2652
> USED AT LINE 2650
> USED AT LINE 2662
> USED AT LINE 2690
> USED AT LINE 2700
> USED AT LINE 2701
> USED AT LINE 2730
> USED AT LINE 2731
> USED AT LINE 2806
> USED AT LINE 2818
> USED AT LINE 2839
> USED AT LINE 2855
> USED AT LINE 2863
> USED AT LINE 2871
> USED AT LINE 2879
> USED AT LINE 2888
> USED AT LINE 2936
> USED AT LINE 2944
> USED AT LINE 2952
> USED AT LINE 3021
L1840: 15C0 DEFINED AT LINE 2660
> USED AT LINE 2667
LITER: 15C8 DEFINED AT LINE 2661
> USED AT LINE 2659
> USED AT LINE 3004
L1850: 15D7 DEFINED AT LINE 2668
> USED AT LINE 2677
STRCQ: 15D8 DEFINED AT LINE 2669
> USED AT LINE 2667
L1860: 15EF DEFINED AT LINE 2678
> USED AT LINE 2687
RECUR: 15F7 DEFINED AT LINE 2679
> USED AT LINE 2677
L1861: 1608 DEFINED AT LINE 2688
> USED AT LINE 2697
DO: 160B DEFINED AT LINE 2689
> USED AT LINE 2687
L1862: 161C DEFINED AT LINE 2698
> USED AT LINE 2708
QDO: 1620 DEFINED AT LINE 2699
> USED AT LINE 2697
L1862A: 1635 DEFINED AT LINE 2709
> USED AT LINE 2727
DOQDO: 163B DEFINED AT LINE 2710
> USED AT LINE 2700
> USED AT LINE 2708
DOQDO1: 1648 DEFINED AT LINE 2717
> USED AT LINE 2713
L1862B: 1656 DEFINED AT LINE 2728
> USED AT LINE 2738
MDO: 165A DEFINED AT LINE 2729
> USED AT LINE 2727
L1862C: 166F DEFINED AT LINE 2739
> USED AT LINE 2757
DOMDO: 1675 DEFINED AT LINE 2740
> USED AT LINE 2730
> USED AT LINE 2738
DOMDO1: 1682 DEFINED AT LINE 2747
> USED AT LINE 2743
L1863: 1690 DEFINED AT LINE 2758
> USED AT LINE 2768
DODO: 1695 DEFINED AT LINE 2759
> USED AT LINE 2690
> USED AT LINE 2757
L1864: 16A1 DEFINED AT LINE 2769
> USED AT LINE 2777
DOLOOP: 16A8 DEFINED AT LINE 2770
> USED AT LINE 2768
> USED AT LINE 2806
L1865: 16B1 DEFINED AT LINE 2778
> USED AT LINE 2803
DOPLOOP: 16B9 DEFINED AT LINE 2779
> USED AT LINE 2777
> USED AT LINE 2818
DOPLOF: 16CA DEFINED AT LINE 2789
> USED AT LINE 2772
> USED AT LINE 2781
DOPLO1: 16D7 DEFINED AT LINE 2795
> USED AT LINE 2784
> USED AT LINE 2791
L1866: 16E1 DEFINED AT LINE 2804
> USED AT LINE 2815
LOOP: 16E6 DEFINED AT LINE 2805
> USED AT LINE 2803
LOOP1: 16FF DEFINED AT LINE 2809
L1867: 1707 DEFINED AT LINE 2816
> USED AT LINE 2826
> USED AT LINE 2836
PLOOP: 170D DEFINED AT LINE 2817
> USED AT LINE 2815
PLOOP1: 1726 DEFINED AT LINE 2821
L1868: 172E DEFINED AT LINE 2827
LEAVE: 1734 DEFINED AT LINE 2828
> USED AT LINE 2826
L1870: 173E DEFINED AT LINE 2837
> USED AT LINE 2844
FOR: 1742 DEFINED AT LINE 2838
> USED AT LINE 2836
L1880: 1751 DEFINED AT LINE 2845
> USED AT LINE 2852
BEGIN: 1757 DEFINED AT LINE 2846
> USED AT LINE 2844
L1890: 1762 DEFINED AT LINE 2853
> USED AT LINE 2860
NEXT: 1767 DEFINED AT LINE 2854
> USED AT LINE 2852
L1900: 1776 DEFINED AT LINE 2861
> USED AT LINE 2868
UNTIL: 177C DEFINED AT LINE 2862
> USED AT LINE 2860
L1910: 178B DEFINED AT LINE 2869
> USED AT LINE 2876
AGAIN: 1791 DEFINED AT LINE 2870
> USED AT LINE 2868
> USED AT LINE 2896
L1920: 17A0 DEFINED AT LINE 2877
> USED AT LINE 2885
IFF: 17A3 DEFINED AT LINE 2878
> USED AT LINE 2876
> USED AT LINE 2928
L1930: 17B6 DEFINED AT LINE 2886
> USED AT LINE 2893
AHEAD: 17BC DEFINED AT LINE 2887
> USED AT LINE 2885
> USED AT LINE 2912
> USED AT LINE 2920
L1940: 17CF DEFINED AT LINE 2894
> USED AT LINE 2901
REPEA: 17D6 DEFINED AT LINE 2895
> USED AT LINE 2893
L1950: 17E7 DEFINED AT LINE 2902
> USED AT LINE 2909
THENN: 17EC DEFINED AT LINE 2903
> USED AT LINE 2901
L1960: 17FB DEFINED AT LINE 2910
> USED AT LINE 2917
AFT: 17FF DEFINED AT LINE 2911
> USED AT LINE 2909
L1970: 1810 DEFINED AT LINE 2918
> USED AT LINE 2925
ELSEE: 1815 DEFINED AT LINE 2919
> USED AT LINE 2917
L1980: 1824 DEFINED AT LINE 2926
> USED AT LINE 2933
WHILE: 182A DEFINED AT LINE 2927
> USED AT LINE 2925
L1990: 1837 DEFINED AT LINE 2934
> USED AT LINE 2941
ABRTQ: 1838 DEFINED AT LINE 2935
> USED AT LINE 2933
L2000: 1847 DEFINED AT LINE 2942
> USED AT LINE 2949
STRQ: 184A DEFINED AT LINE 2943
> USED AT LINE 2941
L2010: 1859 DEFINED AT LINE 2950
> USED AT LINE 2959
DOTQ: 185C DEFINED AT LINE 2951
> USED AT LINE 2949
L2020: 186B DEFINED AT LINE 2960
> USED AT LINE 2972
UNIQU: 1873 DEFINED AT LINE 2961
> USED AT LINE 2959
> USED AT LINE 2977
UNIQ1: 188E DEFINED AT LINE 2967
> USED AT LINE 2963
L2030: 1896 DEFINED AT LINE 2973
> USED AT LINE 2993
SNAME: 189A DEFINED AT LINE 2974
> USED AT LINE 2972
> USED AT LINE 3049
> USED AT LINE 3069
> USED AT LINE 3082
> USED AT LINE 3102
PNAM1: 18CB DEFINED AT LINE 2984
> USED AT LINE 2976
L2040: 18D9 DEFINED AT LINE 2994
> USED AT LINE 3010
SCOMP: 18E2 DEFINED AT LINE 2995
> USED AT LINE 2993
> USED AT LINE 3029
SCOM1: 18FD DEFINED AT LINE 3001
> USED AT LINE 2999
SCOM2: 1901 DEFINED AT LINE 3002
> USED AT LINE 2997
SCOM3: 190D DEFINED AT LINE 3005
> USED AT LINE 3003
L2050: 1913 DEFINED AT LINE 3011
> USED AT LINE 3018
OVERT: 1919 DEFINED AT LINE 3012
> USED AT LINE 3010
L2060: 192C DEFINED AT LINE 3019
> USED AT LINE 3026
SEMIS: 192E DEFINED AT LINE 3020
> USED AT LINE 3018
L2070: 193F DEFINED AT LINE 3027
> USED AT LINE 3034
RBRAC: 1941 DEFINED AT LINE 3028
> USED AT LINE 3026
> USED AT LINE 3050
L2080: 1952 DEFINED AT LINE 3035
> USED AT LINE 3046
CALLC: 1958 DEFINED AT LINE 3036
> USED AT LINE 3034
> USED AT LINE 3050
L2090: 196E DEFINED AT LINE 3047
> USED AT LINE 3055
COLON: 1970 DEFINED AT LINE 3048
> USED AT LINE 3046
L2100: 1985 DEFINED AT LINE 3056
> USED AT LINE 3066
IMMED: 198F DEFINED AT LINE 3057
> USED AT LINE 3055
L2110: 19AA DEFINED AT LINE 3067
> USED AT LINE 3079
USER: 19AF DEFINED AT LINE 3068
> USED AT LINE 3066
L2120: 19C6 DEFINED AT LINE 3080
> USED AT LINE 3091
CREAT: 19CD DEFINED AT LINE 3081
> USED AT LINE 3079
> USED AT LINE 3094
L2130: 19E2 DEFINED AT LINE 3092
> USED AT LINE 3099
VARIA: 19EB DEFINED AT LINE 3093
> USED AT LINE 3091
L2135: 19FA DEFINED AT LINE 3100
> USED AT LINE 3111
CONST: 1A03 DEFINED AT LINE 3101
> USED AT LINE 3099
L2140: 1A1A DEFINED AT LINE 3112
> USED AT LINE 3124
UTYPE: 1A20 DEFINED AT LINE 3113
> USED AT LINE 3111
> USED AT LINE 3225
UTYP1: 1A29 DEFINED AT LINE 3116
> USED AT LINE 3118
UTYP2: 1A33 DEFINED AT LINE 3118
> USED AT LINE 3115
L2150: 1A3F DEFINED AT LINE 3125
> USED AT LINE 3138
DUMPP: 1A43 DEFINED AT LINE 3126
> USED AT LINE 3124
> USED AT LINE 3148
PDUM1: 1A56 DEFINED AT LINE 3130
> USED AT LINE 3132
PDUM2: 1A62 DEFINED AT LINE 3132
> USED AT LINE 3129
L2160: 1A6C DEFINED AT LINE 3139
> USED AT LINE 3162
DUMP: 1A71 DEFINED AT LINE 3140
> USED AT LINE 3138
DUMP1: 1A83 DEFINED AT LINE 3146
> USED AT LINE 3153
DUMP2: 1AA6 DEFINED AT LINE 3155
> USED AT LINE 3152
DUMP3: 1AAA DEFINED AT LINE 3156
> USED AT LINE 3154
L2170: 1AB8 DEFINED AT LINE 3163
> USED AT LINE 3177
DOTS: 1ABB DEFINED AT LINE 3164
> USED AT LINE 3162
DOTS1: 1AC8 DEFINED AT LINE 3168
> USED AT LINE 3169
DOTS2: 1ACE DEFINED AT LINE 3169
> USED AT LINE 3167
L2180: 1ADF DEFINED AT LINE 3178
> USED AT LINE 3185
STCSP: 1AE4 DEFINED AT LINE 3179
> USED AT LINE 3177
L2190: 1AF3 DEFINED AT LINE 3186
> USED AT LINE 3196
QCSP: 1AF8 DEFINED AT LINE 3187
> USED AT LINE 3185
L2200: 1B12 DEFINED AT LINE 3197
> USED AT LINE 3217
TNAME: 1B18 DEFINED AT LINE 3198
> USED AT LINE 3196
> USED AT LINE 3249
TNAM1: 1B1D DEFINED AT LINE 3200
> USED AT LINE 3210
TNAM2: 1B29 DEFINED AT LINE 3203
> USED AT LINE 3208
TNAM3: 1B41 DEFINED AT LINE 3209
> USED AT LINE 3204
> USED AT LINE 3206
TNAM4: 1B55 DEFINED AT LINE 3212
> USED AT LINE 3201
L2210: 1B61 DEFINED AT LINE 3218
> USED AT LINE 3233
DOTID: 1B65 DEFINED AT LINE 3219
> USED AT LINE 3217
> USED AT LINE 3253
DOTI1: 1B79 DEFINED AT LINE 3226
> USED AT LINE 3221
L2220: 1B8B DEFINED AT LINE 3234
> USED AT LINE 3302
SEE: 1B8F DEFINED AT LINE 3235
> USED AT LINE 3233
SEE1: 1BBE DEFINED AT LINE 3246
> USED AT LINE 3242
> USED AT LINE 3296
SEE2: 1BD4 DEFINED AT LINE 3250
> USED AT LINE 3248
SEE21: 1C02 DEFINED AT LINE 3262
> USED AT LINE 3257
SEE27: 1C70 DEFINED AT LINE 3274
> USED AT LINE 3271
SEE28: 1CA7 DEFINED AT LINE 3285
> USED AT LINE 3260
> USED AT LINE 3273
SEE29: 1CAD DEFINED AT LINE 3287
> USED AT LINE 3278
SEE3: 1CB3 DEFINED AT LINE 3290
> USED AT LINE 3251
SEE31: 1CBD DEFINED AT LINE 3292
> USED AT LINE 3288
SEE4: 1CCB DEFINED AT LINE 3295
> USED AT LINE 3286
> USED AT LINE 3291
SEE5: 1CD1 DEFINED AT LINE 3297
> USED AT LINE 3245
> USED AT LINE 3294
L2230: 1CDF DEFINED AT LINE 3303
> USED AT LINE 3319
WORDS: 1CE5 DEFINED AT LINE 3304
> USED AT LINE 3302
WORS1: 1CEE DEFINED AT LINE 3306
> USED AT LINE 3310
WORS2: 1D06 DEFINED AT LINE 3312
> USED AT LINE 3307
L2240: 1D0C DEFINED AT LINE 3320
> USED AT LINE 3327
VERSN: 1D10 DEFINED AT LINE 3321
> USED AT LINE 3319
L2250: 1D1D DEFINED AT LINE 3328
> USED AT LINE 3338
HI: 1D20 DEFINED AT LINE 3329
> USED AT LINE 3327
> USED AT LINE 3344
L2260: 1D3A DEFINED AT LINE 3339
> USED AT LINE 3349
TBOOT: 1D40 DEFINED AT LINE 3340
> USED AT LINE 3338
> USED AT LINE 3355
L2270: 1D49 DEFINED AT LINE 3350
> USED AT LINE 3367
COLD: 1D4E DEFINED AT LINE 3351
> USED AT LINE 3349
COLD1: 1D51 DEFINED AT LINE 3352
> USED AT LINE 3363
LASTN: 1D49 DEFINED AT LINE 3367
> USED AT LINE 159
NTOP: 6C00 DEFINED AT LINE 3369
> USED AT LINE 158
CTOP: 1D79 DEFINED AT LINE 3370
> USED AT LINE 157
; START OF ROM CODE
; =================
ORG $F800
ROMSTART:
RAMSTART: EQU $0000
RAMEND: EQU ROMSTART
RAMEND_EQU_ROMSTART: EQU 1
BUILDK: EQU 1
FALSE: equ 0
TRUE: equ 1
.db RAMEND_EQU_ROMSTART
test equ (ramend = romstart)
; NOT WORKING because ELSE is not working:
; IF BUILDK
; TFR S,X ;
; ELSE
; LDX #ROMSTART ;
; ENDIF
;
; Workaround suggested by Martin:
;
IF RAMEND_EQU_ROMSTART
TFR S,X ;
ENDIF
IFN RAMEND_EQU_ROMSTART
LDX #ROMSTART ;
ENDIF
; fails:
; IF (RAMEND==ROMSTART)
; TFR S,X ;
; ENDIF
; fails:
; IFN RAMEND = ROMSTART
; LDX #ROMSTART ;
; ENDIF
IF FALSE
db "False!"
db 0
ENDIF
IFN FALSE
db "True!"
db 0
ENDIF
;
IF TRUE
db "True!"
db 0
ENDIF
IFN TRUE
db "False!"
db 0
ENDIF
;
; The ELSE statement seems to work for db
;
IF FALSE
db "False!"
db 0
ELSE
db "True!"
db 0
ENDIF
;
IF TRUE
db "True!"
db 0
ELSE
db "False!"
db 0
ENDIF
;
; The ELSE statement fails for mnemonics:
;
IF TRUE
TFR S,X ;
ELSE
LDX #ROMSTART ;
ENDIF
;
IF FALSE
TFR S,X ;
ELSE
LDX #ROMSTART ;
ENDIF
;
; The ELSE statement fails for db mixed with mnemonics:
;
IF TRUE
db 0
TFR S,X ;
ELSE
db 0 ; this won't appear (good)
LDX #ROMSTART ; this will appear (bad)
ENDIF
;
IF FALSE
db 0 ; this won't appear (good)
TFR S,X ; this will appear (bad)
ELSE
db 0
LDX #ROMSTART ;
ENDIF
;
; The ELSE statement fails for FCC mixed with mnemonics:
;
IF TRUE
FCC "Okay"
TFR S,X ;
ELSE
FCC "Okay" ; this won't appear (good)
LDX #ROMSTART ; this will appear (bad)
ENDIF
;
IF FALSE
FCC "Okay" ; this won't appear (good)
TFR S,X ; this will appear (bad)
ELSE
FCC "Okay"
LDX #ROMSTART ;
ENDIF
db "K"
FCC "Okay"
ds "Malfunctions " ; creates a mess from here onward
; fds "Wibble "
fdb "Wibble "
end
.MACRO write_string
LDX #$00 ; Start at 0
OUTSTR:
LDA $%%1,X
CMPA #$%%2
BEQ DONE ; Are we done writing?
JSR OUTCH
INX
JMP OUTSTR
DONE:
.ENDM
write_string TABLEHEADER,DB
TABLEHEADER:
DB "TEST"
:10F80000011F4154727565210054727565210054C1
:10F8100072756521005472756521001F418EF800D4
:0DF82000001F41008EF8001F418EF8004BC4
:00000001FF
0000 ; START OF ROM CODE
0000 ; =================
F800 .ORG $F800
F800 ROMSTART:
F800 RAMSTART: EQU $0000
F800 RAMEND: EQU ROMSTART
F800 ;
F800 RAMEND_EQU_ROMSTART: EQU 1
F800 BUILDK: EQU 1
F800 ;
F800 FALSE: EQU 0
F800 TRUE: EQU 1
F800 ;
F800 01 DB RAMEND_EQU_ROMSTART
F801 ;
F801 TEST: EQU (ramend = romstart)
F801 ;
F801 ; NOT WORKING because ELSE is not working:
F801 ; IF BUILDK
F801 ; TFR S,X ;
F801 ; ELSE
F801 ; LDX #ROMSTART ;
F801 ; ENDIF
F801 ;
F801 ; Workaround suggested by Martin:
F801 ;
F801 ;
F801 IF RAMEND_EQU_ROMSTART
F801 1F 41 TFR S,X ;
F803 ENDIF
F803 IFN RAMEND_EQU_ROMSTART
F803 ENDIF
F803 ;
F803 ; fails:
F803 ; IF (RAMEND==ROMSTART)
F803 ; TFR S,X ;
F803 ; ENDIF
F803 ;
F803 ; fails:
F803 ; IFN RAMEND = ROMSTART
F803 ; LDX #ROMSTART ;
F803 ; ENDIF
F803 ;
F803 IF FALSE
F803 ENDIF
F803 IFN FALSE
F803 54 72 75 65 21 DB "True!"
F808 00 DB 0
F809 ENDIF
F809 ;
F809 IF TRUE
F809 54 72 75 65 21 DB "True!"
F80E 00 DB 0
F80F ENDIF
F80F IFN TRUE
F80F ENDIF
F80F ;
F80F ; The ELSE statement seems to work for db
F80F ;
F80F IF FALSE
F80F ELSE
F80F 54 72 75 65 21 DB "True!"
F814 00 DB 0
F815 ENDIF
F815 ;
F815 IF TRUE
F815 54 72 75 65 21 DB "True!"
F81A 00 DB 0
F81B ELSE
F81B ENDIF
F81B ;
F81B ; The ELSE statement fails for mnemonics:
F81B ;
F81B IF TRUE
F81B 1F 41 TFR S,X ;
F81D ELSE
F81D ENDIF
F81D ;
F81D IF FALSE
F81D ELSE
F81D 8E F8 00 LDX #ROMSTART ;
F820 ENDIF
F820 ;
F820 ;
F820 ; The ELSE statement fails for db mixed with mnemonics:
F820 ;
F820 IF TRUE
F820 00 DB 0
F821 1F 41 TFR S,X ;
F823 ELSE
F823 ENDIF
F823 ;
F823 IF FALSE
F823 ELSE
F823 00 DB 0
F824 8E F8 00 LDX #ROMSTART ;
F827 ENDIF
F827 ;
F827 ;
F827 ; The ELSE statement fails for FCC mixed with mnemonics:
F827 ;
F827 IF TRUE
F827 FCC "Okay"
F827 1F 41 TFR S,X ;
F829 ELSE
F829 ENDIF
F829 ;
F829 IF FALSE
F829 ELSE
F829 FCC "Okay"
F829 8E F8 00 LDX #ROMSTART ;
F82C ENDIF
F82C ;
F82C 4B DB "K"
F82D FCC "Okay"
F82D DS "Malfunctions " ; creates a mess from here onward
63533MALFUNCTIONS ; fds "Wibble "
63533MALFUNCTIONS 0 FDB "Wibble "
63533MALFUNCTIONS 00 END
ROMSTART: F800 DEFINED AT LINE 4
> USED AT LINE 6
> USED AT LINE 16
RAMSTART: 0000 DEFINED AT LINE 5
RAMEND: F800 DEFINED AT LINE 6
> USED AT LINE 16
RAMEND_EQU_ROMSTART: 0001 DEFINED AT LINE 8
> USED AT LINE 14
BUILDK: 0001 DEFINED AT LINE 9
FALSE: 0000 DEFINED AT LINE 11
TRUE: 0001 DEFINED AT LINE 12
TEST: 0001 DEFINED AT LINE 16
S113F800011F4154727565210054727565210054BE
S113F81072756521005472756521001F418EF800D1
S110F820001F41008EF8001F418EF8004BC1
S9030000FC
.org $2000
.ent $
lda $1234
.MACRO write_string
LDX #$00 ; Start at 0
OUTSTR:
LDA %%1,X
CMP #$%%2
BEQ DONE ; Are we done writing?
JSR OUTCH
INX
JMP OUTSTR
DONE:
.ENDM
jmp tableheader
jmp $1234
TABLEHEADER:
DB "TEST"
;write_string TABLEHEADER,DB
lda tableheader,X
:10200000AD34124C09204C341254455354BD0920B0
:00000001FF
2000 .ORG $2000
2000 .ENT $
2000 AD 34 12 LDA $1234
2003 4C 09 20 JMP tableheader
2006 4C 34 12 JMP $1234
2009 TABLEHEADER:
2009 54 45 53 54 DB "TEST"
200D ;write_string TABLEHEADER,DB
200D BD 09 20 LDA tableheader,X
TABLEHEADER: 2009 DEFINED AT LINE 21
> USED AT LINE 18
> USED AT LINE 26
cpu M6809
serial 6850
serial.data 0x83ff
serial.control 0x83fe
serial.map 1
terminal.caps 1
memory.rom.from 0xE000
memory.rom.to 0xffff
memory.ram.from 0x0000
memory.ram.to 0x7fff
.ENGINE kilo
;zero page
.BSSEG
.ORG 0
Q_ADD: DS 2
Q_KEY: DS 1
Q_HEXCNT: DS 1
Q_HEXADD: DS 2
.CSEG
;.org $0000
;.phase $E000
.ORG $E000
.ENT $
JMP reset
JMP serin
JMP serout
JMP print2
JMP printx
JMP primm
RESET:
LDS #$8000
ORCC #$50
LDA #$15
STA ACIAC
LDA #0
TFR a,dp
WARM:
JSR primm
.CSTR "KILO Monitor v1"
MAINCRLF:
JSR pcrlf
MAIN:
JSR prompt
MAINSHORT:
JSR serin
CMPA #":"
BEQ m_hex
CMPA #$0d
BEQ mainshort
CMPA #$a
BEQ mainshort
;caps fix
ANDA #$DF
CMPA #"M"
LBEQ m_mem
CMPA #"D"
LBEQ m_dump
CMPA #"G"
LBEQ m_go
CMPA #"U"
LBEQ m_user
WHAT:
JSR primm
.CSTR "What?"
JMP maincrlf
M_HEX:
JSR gethex2
STA q_hexcnt
JSR gethex4
STX q_hexadd
JSR gethex2
CMPA #$00
BNE m_hexend
M_HEX_LOOP:
JSR gethex2
STA ,x+
;inc q_hexadd
DEC q_hexcnt
BNE m_hex_loop
LDA #"*"
JSR serout
M_HEX_WAITEND:
JSR serin
CMPA #$0d
BEQ main
CMPA #$0a
BEQ m_hex_waitend
CMPA #":"
BEQ m_hex
BRA m_hex_waitend
M_HEXEND:
;jsr gethex2
BRA maincrlf
M_MEM:
JSR getaddr
LDX q_add
M_MEM_LINE:
JSR pcrlf
JSR printx
JSR primm
.CSTR " ["
LDA ,x+
STA q_add+1
JSR print2
JSR primm
.CSTR "] "
JSR get4x
CMPA #$A0
LBEQ maincrlf
CMPA #$88
BEQ m_mem_back
CMPA #$8d
BNE m_mem_line
LDA q_add+1
STA [-1,x]
JMP m_mem_line
M_MEM_BACK:
LDA q_add+1
STA [-1,x]
LEAX -2,x
JMP m_mem_line
M_DUMP:
JSR getaddr
LDX q_add
JSR pcrlf
M_DUMP_LINE:
JSR printx
JSR primm
.CSTR ": "
LDB #$10
M_DUMP_LOOP:
LDA ,x+
JSR print2
LDA #$20
JSR serout
DECB
BNE m_dump_loop
JSR pcrlf
M_DUMP_WAIT:
JSR serin
CMPA #$0d
BEQ m_dump_line
CMPA #$20
LBEQ main
CMPA #$08
BNE m_dump_wait
LEAX -32,x
JMP m_dump_line
M_GO:
JSR getaddr
JMP [q_add]
M_USER:
JSR primm
.CSTR "Installed modules:",$d,$a
LDD #mon_end
CLRB
INCA
PSHS d
PULS x
M_U_FIND:
LDA 3,x
CMPA #"M"
BNE m_u_next
LDA 4,x
CMPA #"O"
BNE m_u_next
LDA 5,x
CMPA #"D"
BNE m_u_next
LDA 6,x
CMPA #"9"
BNE m_u_next
;found
PSHS x
LEAX 7,x
JSR strout
JSR pcrlf
PULS x
M_U_NEXT:
LEAX 256,x
BNE m_u_find
JMP main
PRINTX:
TFR x,d
JSR print2
TFR b,a
PRINT2:
PSHS a
LSRA
LSRA
LSRA
LSRA
JSR printhex
PULS a
ANDA #$0f
PRINTHEX:
CMPA #$0a
BHS ph2
ADDA #$30
JMP serout
PH2:
ADDA #$37
JMP serout
GETADDR:
JSR primm
.CSTR "Addr:"
JSR get4
RTS
GET4:
LDD #0
STD q_add
GET4X:
JSR gethex
BPL get4ok
RTS
GET4OK:
TFR a,b
JSR printhex
CLRA
LSL q_add+1
ROL q_add
LSL q_add+1
ROL q_add
LSL q_add+1
ROL q_add
LSL q_add+1
ROL q_add
ADDD q_add
STD q_add
JMP get4x
GETHEX2:
JSR gethex
LSLA
LSLA
LSLA
LSLA
STA q_key
JSR gethex
ADDA q_key
RTS
GETHEX4:
JSR gethex2
PSHS a
JSR gethex2
TFR a,b
PULS a
TFR d,x
RTS
GETHEX:
JSR serin
CMPA #$30
BHS gh1
GHB:
ORA #$80
RTS
GH1:
CMPA #$3A
BHI gh2
SUBA #$30
RTS
GH2:
CMPA #"A"
BLO ghb
CMPA #"F"
BHI gh3
SUBA #55
RTS
GH3:
CMPA #"a"
BLO ghb
CMPA #"f"
BHI ghb
SUBA #$57
RTS
; serial
ACIA EQU $83fe
ACIAC EQU ACIA
ACIAS EQU ACIA
ACIAD EQU ACIA+1
ACIA_TDRE EQU 02h
ACIA_RDRF EQU 01h
STROUT:
LDA ,x+
BNE sout2
RTS
SOUT2:
JSR serout
JMP strout
SEROUT:
PSHS a,b
SEROUTL:
LDB ACIAS
ANDB #ACIA_TDRE
BEQ seroutl
STA ACIAD
PULS a,b
RTS
PCRLF:
LDA #$d
JSR serout
LDA #$a
JMP serout
PROMPT:
LDA #">"
JSR serout
LDA #$20
JMP serout
PRIMM:
PSHS a,x
LDX 3,s
PRIMM1:
LDA ,x+
BNE primm2
STX 3,s
PULS a,x,pc
PRIMM2:
JSR serout
BRA primm1
SERIN:
LDA ACIAS
ANDA #ACIA_RDRF
BEQ serin
LDA ACIAD
RTS
MON_END EQU $
.BLOCK
.INCLUDE basic.a09
.ENDBLOCK
.INCLUDE testmod.a09
.ORG 0xfff0
;reserved
DW reset
;SWI3
DW reset
;SWI2
DW reset
;FIRQ
DW reset
;IRQ
DW reset
;SWI
DW reset
;NMI
DW reset
;RES
DW reset
; OMEN KILO monitor version 1.0
; (C) 2018 Martin Maly <maly@maly.cz>
; Published under the terms of MIT license
; Commands:
; =========
; M - list / change memory
; D - Dump memory
; Enter moves to the next cell, backspace moves to the previous, space ends
; G - Jump to memory
; U - List and call user modules
; W - Dump memory (from, to) as a SREC19 record
; X - Dump memory (from, to) as a HEX record
; : - read a HEX line (you can send the HEX record directly into the terminal)
; S - read a SREC line
.ENGINE kilo
.pragma srec
;zero page
.BSSEG
.ORG 0
Q_ADD: DS 2 ; address
Q_KEY: DS 1 ; last key pressed
Q_HEXCNT: DS 1 ; for hex/srec: number of bytes
Q_HEXADD: DS 2 ; for hex/srec: address
Q_HEXADD2: DS 2
q_subr: ds 2
.CSEG
; for generating EEPROM image, use this:
;.org $0000
;.phase $E000
.ORG $E000
.ENT $
; Vector table
; E000 - reset
; E003 - read a character from the serial port
; E006 - print a character
; E009 - print 2digit hex number from A
; E00C - print 4digit hex number from X
; E00F - print immediatelly stored ASCIIZ string
JMP reset
JMP serin
JMP serout
JMP print2
JMP printx
JMP primm
RESET:
LDS #$8000
ORCC #$50
LDA #$15
STA ACIAC
LDA #0
TFR a,dp
WARM:
JSR primm
.CSTR "KILO Monitor v1"
MAINCRLF:
JSR pcrlf
MAIN:
JSR prompt
MAINSHORT:
JSR serin
CMPA #":"
BEQ m_hex
CMPA #$0d
BEQ mainshort
CMPA #$a
BEQ mainshort
;caps fix
ANDA #$DF
CMPA #"M"
LBEQ m_mem
CMPA #"D"
LBEQ m_dump
CMPA #"G"
LBEQ m_go
CMPA #"U"
LBEQ m_user
CMPA #"W"
LBEQ m_writesrec
CMPA #"X"
LBEQ m_writehex
WHAT:
JSR primm
.CSTR "What?"
JMP maincrlf
M_HEX:
JSR gethex2
STA q_hexcnt
JSR gethex4
STX q_hexadd
JSR gethex2
CMPA #$00
BNE m_hexend
M_HEX_LOOP:
JSR gethex2
STA ,x+
;inc q_hexadd
DEC q_hexcnt
BNE m_hex_loop
LDA #"*"
JSR serout
M_HEX_WAITEND:
JSR serin
CMPA #$0d
BEQ main
CMPA #$0a
BEQ m_hex_waitend
CMPA #":"
BEQ m_hex
BRA m_hex_waitend
M_HEXEND:
;jsr gethex2
BRA maincrlf
M_MEM:
JSR getaddr
LDX q_add
M_MEM_LINE:
JSR pcrlf
JSR printx
JSR primm
.CSTR " ["
LDA ,x+
STA q_add+1
JSR print2
JSR primm
.CSTR "] "
JSR get4x
CMPA #$A0
LBEQ maincrlf
CMPA #$88
BEQ m_mem_back
CMPA #$8d
BNE m_mem_line
LDA q_add+1
STA [-1,x]
JMP m_mem_line
M_MEM_BACK:
LDA q_add+1
STA [-1,x]
LEAX -2,x
JMP m_mem_line
M_DUMP:
JSR getaddr
LDX q_add
JSR pcrlf
M_DUMP_LINE:
JSR printx
JSR primm
.CSTR ": "
LDB #$10
M_DUMP_LOOP:
LDA ,x+
JSR print2
LDA #$20
JSR serout
DECB
BNE m_dump_loop
JSR pcrlf
M_DUMP_WAIT:
JSR serin
CMPA #$0d
BEQ m_dump_line
CMPA #$20
LBEQ main
CMPA #$08
BNE m_dump_wait
LEAX -32,x
JMP m_dump_line
M_GO:
JSR getaddr
JMP [q_add]
M_U_FNEXT:
LDA 3,x
CMPA #"M"
BNE m_u_fnext_e
LDA 4,x
CMPA #"O"
BNE m_u_fnext_e
LDA 5,x
CMPA #"D"
BNE m_u_fnext_e
LDA 6,x
CMPA #"9"
M_U_FNEXT_E:
RTS
M_USER:
JSR primm
.CSTR "Installed modules:",$d,$a
LDD #mon_end
CLRB
INCA
PSHS d
PULS x
LDB #$41
M_U_FIND:
JSR m_u_fnext
BNE m_u_next
;found
LDA #"["
JSR serout
TFR b,a
JSR serout
INCB
LDA #"]"
JSR serout
LDA #" "
JSR serout
PSHS x
LEAX 7,x
JSR strout
JSR pcrlf
PULS x
M_U_NEXT:
LEAX 256,x
BNE m_u_find
JSR primm
.CSTR "Select module to run: "
M_U_SEL:
JSR serin
CMPA #$20
LBEQ main
CMPA #$0d
LBEQ main
SUBA #$41
LBLT main
PSHS a
LDD #mon_end
CLRB
INCA
PSHS d
PULS x
PULS b
M_U_SELF:
JSR m_u_fnext
BNE m_u_seln
CMPB #0
BEQ m_u_found
DECB
M_U_SELN:
LEAX 256,x
BNE m_u_self
JMP m_u_sel
M_U_FOUND:
PSHS x
RTS
M_WRITEHEX:
ldx #m_whexline
stx q_subr
jsr m_wrbody
JSR primm
.CSTR ":00000001FF",$d,$a
JMP main
M_WRITEsrec:
ldx #m_wsline
stx q_subr
jsr m_wrbody
JSR primm
.CSTR "S9030000FC",$d,$a
JMP main
m_wrbody:
JSR primm
.CSTR "From:"
JSR get4
LDX q_add
STX q_hexadd
JSR primm
.CSTR $d,$a,"To:"
JSR get4
LDX q_add
STX q_hexadd2
JSR pcrlf
M_WHL:
LDA q_hexadd
CMPA q_hexadd2
BNE m_wh10
LDA q_hexadd2+1
SUBA q_hexadd+1
BEQ m_whend
CMPA #$10
BLO m_whx
M_WH10:
LDA #$10
M_WHX:
STA q_hexcnt
JSR [q_subr]
LDA q_hexadd
CMPA q_hexadd2
BLS m_whl
LDA q_hexadd+1
CMPA q_hexadd2+1
BLS m_whl
m_whend:
rts
M_WHEXLINE:
LDA #":"
JSR serout
LDA q_hexcnt
JSR print2
LDX q_hexadd
JSR printx
LDA #0
JSR print2
LDB q_hexcnt
ADDB q_hexadd
ADDB q_hexadd+1
MWHLOOP:
ADDB ,x
LDA ,x+
JSR print2
DEC q_hexcnt
BNE mwhloop
STX q_hexadd
TFR b,a
NEGA
JSR print2
JSR pcrlf
RTS
M_WSLINE:
LDA #"S"
JSR serout
LDA #"1"
JSR serout
LDA q_hexcnt
adda #3
JSR print2
LDX q_hexadd
JSR printx
LDA #0
JSR print2
LDB q_hexcnt
ADDB q_hexadd
ADDB q_hexadd+1
addb #3
MWSLOOP:
ADDB ,x
LDA ,x+
JSR print2
DEC q_hexcnt
BNE mwsloop
STX q_hexadd
TFR b,a
NEGA
JSR print2
JSR pcrlf
RTS
; ----------------------------------------
; End of monitor commands
; Here starts the useful routines
; Print the 4digit hex number from the X register
PRINTX:
TFR x,d
JSR print2
TFR b,a
; Print the 2digit hex number from the A register
PRINT2:
PSHS a
LSRA
LSRA
LSRA
LSRA
JSR printhex
PULS a
ANDA #$0f
; Print one hex digit from register A
PRINTHEX:
CMPA #$0a
BHS ph2
ADDA #$30
JMP serout
PH2:
ADDA #$37
JMP serout
; Prompt for address
GETADDR:
JSR primm
.CSTR "Addr:"
;JSR get4
;RTS
; Read 4digit hex address
; The value is in q_add variable (ZP)
GET4:
LDD #0
STD q_add
GET4X:
JSR gethex
BPL get4ok
RTS
GET4OK:
TFR a,b
JSR printhex
CLRA
LSL q_add+1
ROL q_add
LSL q_add+1
ROL q_add
LSL q_add+1
ROL q_add
LSL q_add+1
ROL q_add
ADDD q_add
STD q_add
JMP get4x
; Get 1 byte from serial to A (for .hex/.srec)
GETHEX2:
JSR gethex
LSLA
LSLA
LSLA
LSLA
STA q_key
JSR gethex
ADDA q_key
RTS
; Get 2 bytes from serial to X (for .hex/.srec)
GETHEX4:
JSR gethex2
PSHS a
JSR gethex2
TFR a,b
PULS a
TFR d,x
RTS
GETHEX:
JSR serin
CMPA #$30
BHS gh1
GHB:
ORA #$80
RTS
GH1:
CMPA #$3A
BHI gh2
SUBA #$30
RTS
GH2:
CMPA #"A"
BLO ghb
CMPA #"F"
BHI gh3
SUBA #55
RTS
GH3:
CMPA #"a"
BLO ghb
CMPA #"f"
BHI ghb
SUBA #$57
RTS
; serial
ACIA EQU $83fe
ACIAC EQU ACIA
ACIAS EQU ACIA
ACIAD EQU ACIA+1
ACIA_TDRE EQU 02h
ACIA_RDRF EQU 01h
; Print null-terminated string to serial port
; address of the string is in the X register
STROUT:
LDA ,x+
BNE sout2
RTS
SOUT2:
JSR serout
JMP strout
; send one byte from A to serial
SEROUT:
PSHS a,b
SEROUTL:
LDB ACIAS
ANDB #ACIA_TDRE
BEQ seroutl
STA ACIAD
PULS a,b
RTS
; print CR LF
PCRLF:
LDA #$d
JSR serout
LDA #$a
JMP serout
; print monitor prompt
PROMPT:
LDA #">"
JSR serout
LDA #$20
JMP serout
; print immediate
; Usage:
; JSR PRIMM
; .CSTR "string to print"
PRIMM:
PSHS a,x
LDX 3,s
PRIMM1:
LDA ,x+
BNE primm2
STX 3,s
PULS a,x,pc
PRIMM2:
JSR serout
BRA primm1
; Wait for serial char to read
SERIN:
LDA ACIAS
ANDA #ACIA_RDRF
BEQ serin
LDA ACIAD
RTS
MON_END EQU $
; USER MODULES
; see testmod.a09 to further information
.INCLUDE testmod.a09
.INCLUDE basic.a09
.ORG 0xfff0
;reserved
DW reset
;SWI3
DW reset
;SWI2
DW reset
;FIRQ
DW reset
;IRQ
DW reset
;SWI
DW reset
;NMI
DW reset
;RES
DW reset
:10E000007EE0127EE24A7EE2167EE1767EE16F7E5F
:10E01000E23910CE80001A508615B783FE86001FA5
:10E020008BBDE2394B494C4F204D6F6E69746F7256
:10E0300020763100BDE225BDE22FBDE24A813A27BC
:10E040002E810D27F5810A27F184DF814D102700ED
:10E05000508144102700898147102700BD81551049
:10E060002700BEBDE239576861743F007EE034BDD1
:10E07000E1C69703BDE1D59F04BDE1C68100261F1F
:10E08000BDE1C6A7800A0326F7862ABDE216BDE2D7
:10E090004A810D27A2810A27F5813A27D220EF2055
:10E0A00093BDE1919E00BDE225BDE16FBDE2392047
:10E0B0005B00A6809701BDE176BDE2395D2000BD21
:10E0C000E1A381A01027FF6C8188270B818D26D6C4
:10E0D0009601A71F7EE0A69601A71F301E7EE0A630
:10E0E000BDE1919E00BDE225BDE16FBDE2393A2060
:10E0F00000C610A680BDE1768620BDE2165A26F342
:10E10000BDE225BDE24A810D27DE81201027FF27D1
:10E11000810826EF3088E07EE0E8BDE1916E9F0047
:10E1200000BDE239496E7374616C6C6564206D6F7B
:10E1300064756C65733A0D0A00CCE2555F4C340689
:10E140003510A603814D261EA604814F2618A6056C
:10E1500081442612A6068139260C34103007BDE210
:10E160000BBDE22535103089010026D67EE0371F31
:10E1700010BDE1761F98340244444444BDE1833528
:10E1800002840F810A24058B307EE2168B377EE2F3
:10E1900016BDE239416464723A00BDE19E39CC009B
:10E1A00000DD00BDE1E42A01391F89BDE1834F088C
:10E1B000010900080109000801090008010900D34C
:10E1C00000DD007EE1A3BDE1E4484848489702BD78
:10E1D000E1E49B0239BDE1C63402BDE1C61F8935C9
:10E1E000021F0139BDE24A813024038A8039813A15
:10E1F0002203803039814125F2814622038037395C
:10E20000816125E7816622E3805739A6802601399E
:10E21000BDE2167EE20B3406F683FEC40227F9B790
:10E2200083FF350639860DBDE216860A7EE2168624
:10E230003EBDE21686207EE2163412AE63A680262C
:10E2400004AF633592BDE21620F3B683FE84012746
:05E25000F9B683FF395F
:10E300007EE3154D4F443942415349430010DE0C22
:10E31000BDEAE1201310CE21CC10DF0CBDEAE1CC28
:10E320000249DD06DD08DD0ABDE43F8EE383BDE47E
:10E330003810DE0C0F19BDE43F9E069F0E8E0000C4
:10E340009F120D192605863ABDEAA6BDE490BDE5EB
:10E35000EA240E292BBDE55B810427E1BDE50D20F4
:10E36000D034109E089C0A351027037EE45FC3005A
:10E3700000270D340683270F350622048D1020BD9B
:10E380007EE45654494E592056312E333704340614
:10E39000BDE55B9F14A6609E0E9C08270510A30098
:10E3A00024029E06BDE6C49F0E25229F103002A6C1
:10E3B00080810426FA9C08270EA6809F169E10A72F
:10E3C000809F109E1620EE9E109F089F0A9E14C6E6
:10E3D000FF5CA680810426F95D2603326239301F76
:10E3E000CB04301F5AA600812027F78604A7014FCF
:10E3F0009E089F16D308DD08DD0ABDE66224079F4C
:10E40000089F0A7EE44E9E089F109E169C0E270AC7
:10E41000A6829F169E10A78220EE35069E0EED81E5
:10E420009F169E14A6809F149E16A7809F16810497
:10E4300026F039BDEAA63001A600810426F5398E02
:10E44000E4478DF40F18390D0A7F000000048D2475
:10E45000534F525259048D1C57484154203F048D4C
:10E4600013484F57203F048D0B425245414B0453F4
:10E47000544F50048DC98607BDEAA6DC12BDE95E83
:10E480008620BDEAA635108DAF8DB47EE3318DAF09
:10E490008E0200BDEA9C81202514817F27F58C0225
:10E4A00048260486072002A780BDEAA620E5810849
:10E4B0002724811827D8810A2731810D26D50D19E7
:10E4C0002705BDEAA620073410BDE43F35108604B9
:10E4D000A7008E0200398C020027B8301F8608BDC5
:10E4E000EAA68620BDEAA6860820BE1A01061920E3
:10E4F000B830018D66810426F8BDE83196129A1372
:10E5000027149C0826037EE45FEC81DD12BDEA98A7
:10E510008D0825033406397EE8428D3F9F0E8EEA32
:10E5200037A680810426059E0E1A01399F169E0E7D
:10E530009F149E14A100261530019F149E16A680DC
:10E540009F16810426ECEC009E141CFE399E16A634
:10E5500080810426FA300220C83001A600812027DD
:10E56000F8398D1A2422814125118146220D8037E8
:10E570001CFE3981412504815A230D1A013981304D
:10E5800025F9813922F580301CFE398DCE8DE425A8
:10E59000121F89A6018DDC24E23001C041584FD3FF
:10E5A0000C1CFE39BDE8103406BDE55B812C270943
:10E5B00081291A0127157EE4563001BDE743340254
:10E5C000BDE55B8129350226ED1CFE30019F0EADB5
:10E5D000F19E0E1CFE39BDE55B812D260D30018DAF
:10E5E000092506405082001CFC39BDE55BBDE57E77
:10E5F000242F81241A01266030016FE26FE2A60009
:10E60000BDE562254F300134103402EC6385F026FD
:10E610004A5849584958495849EBE0ED62351020AD
:10E62000DD300134026FE2A600BDE57E2526300113
:10E6300034103402EC63584929215849291DE363F9
:10E64000291958492915EB608900290FED633261BA
:10E65000351020D335061CFE1CFD39AE6132651A1B
:10E66000033910DF10DC10830030930A39BDE7FD59
:10E6700034063410E672351032624F39BDE7FD348E
:10E6800006BDE55B813D27037EE4563001BDE743CF
:10E69000BDE8313410E772351032627EE4FCBDE52E
:10E6A0005B9F0E8EE6AEBDE521250234063955533B
:10E6B0005204E5A45045454B04E66D4D454D04E636
:10E6C00062049E069C0826031A033910A300260341
:10E6D0001CFC3924051A011CFD3934028604300162
:10E6E0003001A10026FA3502300120D88D553406BC
:10E6F0005FBDE55B813D2723813C261030015CBD79
:10E70000E55B813E26113001CB042013813E265F5C
:10E710003001CB04BDE55B813D26043001CB0234E2
:10E72000048D203410A3631FA8441F894848340473
:10E73000ABE0840626014C5FA4622701534F3510DD
:10E740003263396FE26FE2BDE55B812D2717812BC4
:10E75000260230018D1CE360ED60BDE55B812B2757
:10E76000F1812D260A30018D094050820020E735C5
:10E770000639BDE7E53406BDE55B812A2748812FD0
:10E78000270335063930018D5C341030623406A819
:10E7900000BDE8243060BDE8243402861134024F05
:10E7A0005FA3622406E3621CFE20021A0169676906
:10E7B0006659496A6026EAA66132644D2A043062CD
:10E7C0008D66351020B130018D1B3404E6623DA604
:10E7D00061E761E6603DA662E76235043DAB60AB90
:10E7E00061ED602092BDE58B250934101F01EC001E
:10E7F000351039BDE5EA24FABDE69E24F58D1134C5
:10E8000002BDE55B8129350226033001397EE456DD
:10E81000BDE66224037EE44EBDE55B812826EE3032
:10E82000017EE7436D002A086000600124026A004F
:10E83000393402BDE55B810427037EE4563001359F
:10E840000239BDE58B24037EE4563406BDE55B81C9
:10E850003D27037EE4563001BDE7438DD49F0E353E
:10E8600010ED009E0E7EE4FCBDE6EC5D27037EE528
:10E870000D7EE4F3BDE7438DB8BDE6C2250F7EE50E
:10E8800009BDE7438DAB9F0EBDE6C224037EE45F66
:10E89000BDE66224037EE44EDC0E3406DC12340650
:10E8A000BDE5093506DD1235107EE4FCBDE55B8172
:10E8B0002C2736813B273D810427258122260630DF
:10E8C000018D422009BDE74334108D473510BDE569
:10E8D0005B812C2714813B271B810427037EE45690
:10E8E0003410BDE43F35102014C6078620BDEAA6CB
:10E8F000D51826F73001BDE55B810426B230017ED4
:10E90000E4FCBDEAA6A680810426037EE4568122AB
:10E9100026F0394D2A0D405082003402862DBDEA82
:10E92000A635028EE952300210A30024058CE95C62
:10E9300026F40F1610A3002506A3000C1620F534AC
:10E940000286309B16BDEAA635028CE95C270430AE
:10E950000220DF39271003E80064000A00018EE975
:10E960005620CFBDE58B253C34069F0E863FBDEA81
:10E97000A6BDE490BDE55B810427F1BDE5D6240B7F
:10E980008EE9B8BDE438BDE43F20E19F143510EDB9
:10E99000009E0EBDE55B812C27037EE4F93001BDAE
:10E9A000E58B24037EE456340634109E14BDE55BEB
:10E9B000812C26C0300120BC52452D454E54455275
:10E9C000049E0C86346F804A26FB9E067EE502BDBF
:10E9D000E5EA24084F5FDD0E867F2017DD0EBDE5DA
:10E9E0005B812C2704960E200A3001BDE5EA240342
:10E9F0007EE456BDE8313406DC0E9F0EBDE6C29CB7
:10EA0000082728350610A30025283406EC81341089
:10EA1000BDE95E35108620BDEAA6BDE4383001347C
:10EA200010BDE43F3510BDEA9820D432628603BDA4
:10EA3000EAA69E0E7EE4FC4C455404E84249460496
:10EA4000E868474F544F04E874474F53554204E871
:10EA50008152455455524E04E831504F4B4504E61F
:10EA60007C5052494E5404E8AC494E50555404E988
:0EEA70006352454D04E4F353544F5004EAE260
:06EA7C00454E4404EAE2ED
:10EA800052554E04E9C14C49535404E9CF4E455701
:10EA900004E31F3F04E8AC048D2A27098D0D810390
:10EAA00026037EE467390C187EEAB58D1727FCB67D
:10EAB000E256847F393402B6E255850227F93502E1
:10EAC000B7E256393402B6E25585202705B6E2563C
:10EAD00020F485013502398603B7E2558615B7E281
:02EAE0005539A6
:10EB00007EEB0F4D4F4439546573744D6F6400BDF7
:10EB1000E00F54657374206D6F64756C650D0A00A9
:03EB20007EE00094
:10FFF000E012E012E012E012E012E012E012E01271
:00000001FF
:10E000007EE0127EE3A67EE3727EE2D67EE2CF7EE3
:10E01000E39510CE80001A508615B783FE86001F48
:10E020008BBDE3954B494C4F204D6F6E69746F72F9
:10E0300020763100BDE381BDE38BBDE3A6813A27A5
:10E040003A810D27F5810A27F184DF814D102700E1
:10E050005C8144102700958147102700C981551025
:10E060002700E1815710270198815810270176BDBC
:10E07000E395576861743F007EE034BDE322970367
:10E08000BDE3319F04BDE3228100261FBDE322A72B
:10E09000800A0326F7862ABDE372BDE3A6810D2719
:10E0A00096810A27F5813A27D220EF2087BDE2F139
:10E0B0009E00BDE381BDE2CFBDE395205B00A6805D
:10E0C0009701BDE2D6BDE3955D2000BDE2FF81A0D2
:10E0D0001027FF608188270B818D26D69601A71F08
:10E0E0007EE0B29601A71F301E7EE0B2BDE2F19E37
:10E0F00000BDE381BDE2CFBDE3953A2000C610A686
:10E1000080BDE2D68620BDE3725A26F3BDE381BD11
:10E11000E3A6810D27DE81201027FF1B810826EF53
:10E120003088E07EE0F4BDE2F16E9F0000A603813E
:10E130004D2610A604814F260AA60581442604A672
:10E1400006813939BDE395496E7374616C6C656401
:10E15000206D6F64756C65733A0D0A00CCE3B15F96
:10E160004C34063510C641BDE12D2621865BBDE34A
:10E17000721F98BDE3725C865DBDE3728620BDE3CD
:10E180007234103007BDE367BDE38135103089017B
:10E190000026D4BDE39553656C656374206D6F6490
:10E1A000756C6520746F2072756E3A2000BDE3A611
:10E1B00081201027FE81810D1027FE7B8041102DCC
:10E1C000FE753402CCE3B15F4C340635103504BD26
:10E1D000E12D2605C100270A5A3089010026F07E6C
:10E1E000E1AD3410398EE2649F08BDE21CBDE395B9
:10E1F0003A303030303030303146460D0A007EE063
:10E20000378EE2959F08BDE21CBDE395533930334C
:10E210003030303046430D0A007EE037BDE395468E
:10E22000726F6D3A00BDE2FA9E009F04BDE3950D4A
:10E230000A546F3A00BDE2FA9E009F06BDE3819644
:10E24000049106260A960790052718811025028654
:10E25000109703AD9F00089604910623E29605915E
:10E260000723DC39863ABDE3729603BDE2D69E04ED
:10E27000BDE2CF8600BDE2D6D603DB04DB05EB842E
:10E28000A680BDE2D60A0326F59F041F9840BDE292
:10E29000D6BDE381398653BDE3728631BDE3729604
:10E2A000038B03BDE2D69E04BDE2CF8600BDE2D65D
:10E2B000D603DB04DB05CB03EB84A680BDE2D60AE4
:10E2C0000326F59F041F9840BDE2D6BDE381391FA8
:10E2D00010BDE2D61F98340244444444BDE2E33505
:10E2E00002840F810A24058B307EE3728B377EE334
:10E2F00072BDE395416464723A00CC0000DD00BD5C
:10E30000E3402A01391F89BDE2E34F0801090008F3
:10E310000109000801090008010900D300DD007EA1
:10E32000E2FFBDE340484848489702BDE3409B02F6
:10E3300039BDE3223402BDE3221F8935021F0139B2
:10E34000BDE3A6813024038A8039813A22038030DC
:10E3500039814125F281462203803739816125E7E1
:10E36000816622E3805739A680260139BDE3727E9B
:10E37000E3673406F683FEC40227F9B783FF350648
:10E3800039860DBDE372860A7EE372863EBDE37276
:10E3900086207EE3723412AE63A6802604AF633516
:10E3A00092BDE37220F3B683FE840127F9B683FFA2
:01E3B0003933
:10E400007E00004D4F4439546573744D6F6400BDF8
:10E41000E00F54657374206D6F64756C650D0A00B0
:03E420007EE0009B
:10E500007EE5154D4F443942415349430010DE101A
:10E51000BDECE7201310CE21CC10DF10BDECE7CC12
:10E520000249DD0ADD0CDD0EBDE63F8EE583BDE66A
:10E530003810DE100F1DBDE63F9E0A9F128E0000B0
:10E540009F160D1D2605863ABDECACBDE692BDE7D3
:10E55000EC240E292BBDE75D810427E1BDE70F20E8
:10E56000D034109E0C9C0E351027037EE65FC3004E
:10E5700000270D340683270F350622048D1020BD99
:10E580007EE65654494E592056312E333704340610
:10E59000BDE75D9F18A6609E129C0C270510A30086
:10E5A00024029E0ABDE8C69F1225229F143002A6AF
:10E5B00080810426FA9C0C270EA6809F1A9E14A721
:10E5C000809F149E1A20EE9E149F0C9F0E9E18C6CC
:10E5D000FF5CA680810426F95D2603326239301F74
:10E5E000CB04301F5AA600812027F78604A7014FCD
:10E5F0009E0C9F1AD30CDD0CDD0EBDE86424079F32
:10E600000C9F0E7EE64E9E0C9F149E1A9C12270AAB
:10E61000A6829F1A9E14A78220EE35069E12ED81D7
:10E620009F1A9E18A6809F189E1AA7809F1A810481
:10E6300026F039BDECAC3001A600810426F5398EF8
:10E64000E6478DF40F1C390D0A7F000000048D266B
:10E65000534F525259048D1E57484154203F048D48
:10E6600015484F57203F048D0D425245414B048DB4
:10E670000553544F50048DC78607BDECACDC16BD66
:10E68000EB608620BDECAC35108DAD8DB27EE531F2
:10E690008DAD8E0200BDECA281202514817F27F56F
:10E6A0008C0248260486072002A780BDECAC20E53A
:10E6B00081082724811827D8810A2731810D26D582
:10E6C0000D1D2705BDECAC20073410BDE63F35100D
:10E6D0008604A7008E0200398C020027B8301F86FE
:10E6E00008BDECAC8620BDECAC860820BE1A010645
:10E6F0001D20B830018D66810426F8BDEA339616D8
:10E700009A1727149C0C26037EE65FEC81DD16BD6C
:10E71000EC9E8D0825033406397EEA448D3F9F1216
:10E720008EEC39A680810426059E121A01399F1AA3
:10E730009E129F189E18A100261530019F189E1A40
:10E74000A6809F1A810426ECEC009E181CFE399EC0
:10E750001AA680810426FA300220C83001A6008162
:10E760002027F8398D1A2422814125118146220D56
:10E7700080371CFE3981412504815A230D1A013945
:10E78000813025F9813922F580301CFE398DCE8DFE
:10E79000E425121F89A6018DDC24E23001C0415816
:10E7A0004FD3101CFE39BDEA123406BDE75D812C43
:10E7B000270981291A0127157EE6563001BDE94552
:10E7C0003402BDE75D8129350226ED1CFE30019F34
:10E7D00012ADF19E121CFE39BDE75D812D260D3074
:10E7E000018D092506405082001CFC39BDE75DBD46
:10E7F000E780242F81241A01266030016FE26FE246
:10E80000A600BDE764254F300134103402EC638567
:10E81000F0264A5849584958495849EBE0ED6235C5
:10E820001020DD300134026FE2A600BDE78025260E
:10E83000300134103402EC63584929215849291D0C
:10E84000E363291958492915EB608900290FED6305
:10E850003261351020D335061CFE1CFD39AE613205
:10E86000651A033910DF14DC14830030930E39BDB0
:10E87000E9FF34063410E672351032624F39BDE9D3
:10E88000FF3406BDE75D813D27037EE6563001BDBE
:10E89000E945BDEA333410E772351032627EE6FE98
:10E8A000BDE75D9F128EE8B0BDE72325023406392F
:10E8B00055535204E7A65045454B04E86F4D454D6E
:10E8C00004E864049E0A9C0C26031A033910A30072
:10E8D00026031CFC3924051A011CFD393402860468
:10E8E00030013001A10026FA3502300120D88D55C3
:10E8F00034065FBDE75D813D2723813C2610300152
:10E900005CBDE75D813E26113001CB042013813EC2
:10E91000265F3001CB04BDE75D813D26043001CB8D
:10E920000234048D203410A3631FA8441F89484873
:10E930003404ABE0840626014C5FA4622701534FE8
:10E9400035103263396FE26FE2BDE75D812D271725
:10E95000812B260230018D1CE360ED60BDE75D81F7
:10E960002B27F1812D260A30018D0940508200208D
:10E97000E7350639BDE9E73406BDE75D812A27485A
:10E98000812F270335063930018D5C341030623415
:10E9900006A800BDEA263060BDEA2634028611349E
:10E9A000024F5FA3622406E3621CFE20021A016983
:10E9B00067696659496A6026EAA66132644D2A048D
:10E9C00030628D66351020B130018D1B3404E66253
:10E9D0003DA661E761E6603DA662E76235043DABB6
:10E9E00060AB61ED602092BDE78D250934101F01F9
:10E9F000EC00351039BDE7EC24FABDE8A024F58D14
:10EA0000113402BDE75D8129350226033001397ECC
:10EA1000E656BDE86424037EE64EBDE75D81282608
:10EA2000EE30017EE9456D002A0860006001240295
:10EA30006A00393402BDE75D810427037EE6563063
:10EA400001350239BDE78D24037EE6563406BDE765
:10EA50005D813D27037EE6563001BDE9458DD49F9B
:10EA6000123510ED009E127EE6FEBDE8EE5D270336
:10EA70007EE70F7EE6F5BDE9458DB8BDE8C4250FFC
:10EA80007EE70BBDE9458DAB9F12BDE8C424037E34
:10EA9000E65FBDE86424037EE64EDC123406DC1635
:10EAA0003406BDE70B3506DD1635107EE6FEBDE704
:10EAB0005D812C2736813B273D8104272581222635
:10EAC0000630018D422009BDE94534108D473510CF
:10EAD000BDE75D812C2714813B271B810427037E22
:10EAE000E6563410BDE63F35102014C6078620BD1B
:10EAF000ECACD51C26F73001BDE75D810426B230B1
:10EB0000017EE6FEBDECACA680810426037EE656BF
:10EB1000812226F0394D2A0D405082003402862D84
:10EB2000BDECAC35028EEB54300210A30024058CF2
:10EB3000EB5E26F40F1A10A3002506A3000C1A2082
:10EB4000F5340286309B1ABDECAC35028CEB5E27A7
:10EB500004300220DF39271003E80064000A0001B6
:10EB60008EEB5820CFBDE78D253C34069F12863FA3
:10EB7000BDECACBDE692BDE75D810427F1BDE7D8F1
:10EB8000240B8EEBBABDE638BDE63F20E19F183579
:10EB900010ED009E12BDE75D812C27037EE6FB3061
:10EBA00001BDE78D24037EE656340634109E18BD61
:10EBB000E75D812C26C0300120BC52452D454E54C6
:10EBC0004552049E1086346F804A26FB9E0A7EE7DB
:10EBD00004BDE7EC24084F5FDD12867F2017DD12AD
:10EBE000BDE75D812C27049612200A3001BDE7ECB9
:10EBF00024037EE656BDEA333406DC129F12BDE8DC
:10EC0000C49C0C2728350610A30025283406EC8167
:10EC10003410BDEB6035108620BDECACBDE638305D
:10EC2000013410BDE63F3510BDEC9E20D432628623
:10EC300003BDECAC9E127EE6FE4C455404EA44490A
:10EC40004604EA6A474F544F04EA76474F53554209
:10EC500004EA8352455455524E04EA33504F4B4513
:10EC600004E87E5052494E5404EAAE494E50555481
:10EC700004EB6552454D04E6F553544F5004E66FDE
:10EC8000454E4404E66F52554E04EBC34C49535471
:10EC900004EBD14E455704E51F3F04EAAE048D2A2C
:10ECA00027098D0D810326037EE667390C1C7EEC57
:10ECB000BB8D1727FCB683FF847F393402B683FEF1
:10ECC000850227F93502B783FF393402B683FE8502
:10ECD000202705B683FF20F485013502398603B766
:08ECE00083FE8615B783FE399F
:10FFF000E012E012E012E012E012E012E012E01271
:00000001FF
This file has been truncated, but you can view the full file.
0000 .ENGINE kilo
0000 ;zero page
0000 .BSSEG
0000 .ORG 0
0000 Q_ADD: DS 2
0002 Q_KEY: DS 1
0003 Q_HEXCNT: DS 1
0004 Q_HEXADD: DS 2
0000 .CSEG
0000 ;.org $0000
0000 ;.phase $E000
E000 .ORG $E000
E000 .ENT $
E000 7E E0 12 JMP reset
E003 7E E2 4A JMP serin
E006 7E E2 16 JMP serout
E009 7E E1 76 JMP print2
E00C 7E E1 6F JMP printx
E00F 7E E2 39 JMP primm
E012 RESET:
E012 10 CE 80 00 LDS #$8000
E016 1A 50 ORCC #$50
E018 86 15 LDA #$15
E01A B7 83 FE STA ACIAC
E01D 86 00 LDA #0
E01F 1F 8B TFR a,dp
E021 WARM:
E021 BD E2 39 JSR primm
E024 4B 49 4C 4F 20 4D 6F 6E 69 74 6F 72 20 76 31 00 .CSTR "KILO Monitor v1"
E034 MAINCRLF:
E034 BD E2 25 JSR pcrlf
E037 MAIN:
E037 BD E2 2F JSR prompt
E03A MAINSHORT:
E03A BD E2 4A JSR serin
E03D 81 3A CMPA #":"
E03F 27 2E BEQ m_hex
E041 81 0D CMPA #$0d
E043 27 F5 BEQ mainshort
E045 81 0A CMPA #$a
E047 27 F1 BEQ mainshort
E049 ;caps fix
E049 84 DF ANDA #$DF
E04B 81 4D CMPA #"M"
E04D 10 27 00 50 LBEQ m_mem
E051 81 44 CMPA #"D"
E053 10 27 00 89 LBEQ m_dump
E057 81 47 CMPA #"G"
E059 10 27 00 BD LBEQ m_go
E05D 81 55 CMPA #"U"
E05F 10 27 00 BE LBEQ m_user
E063 WHAT:
E063 BD E2 39 JSR primm
E066 57 68 61 74 3F 00 .CSTR "What?"
E06C 7E E0 34 JMP maincrlf
E06F M_HEX:
E06F BD E1 C6 JSR gethex2
E072 97 03 STA q_hexcnt
E074 BD E1 D5 JSR gethex4
E077 9F 04 STX q_hexadd
E079 BD E1 C6 JSR gethex2
E07C 81 00 CMPA #$00
E07E 26 1F BNE m_hexend
E080 M_HEX_LOOP:
E080 BD E1 C6 JSR gethex2
E083 A7 80 STA ,x+
E085 ;inc q_hexadd
E085 0A 03 DEC q_hexcnt
E087 26 F7 BNE m_hex_loop
E089 86 2A LDA #"*"
E08B BD E2 16 JSR serout
E08E M_HEX_WAITEND:
E08E BD E2 4A JSR serin
E091 81 0D CMPA #$0d
E093 27 A2 BEQ main
E095 81 0A CMPA #$0a
E097 27 F5 BEQ m_hex_waitend
E099 81 3A CMPA #":"
E09B 27 D2 BEQ m_hex
E09D 20 EF BRA m_hex_waitend
E09F M_HEXEND:
E09F ;jsr gethex2
E09F 20 93 BRA maincrlf
E0A1 M_MEM:
E0A1 BD E1 91 JSR getaddr
E0A4 9E 00 LDX q_add
E0A6 M_MEM_LINE:
E0A6 BD E2 25 JSR pcrlf
E0A9 BD E1 6F JSR printx
E0AC BD E2 39 JSR primm
E0AF 20 5B 00 .CSTR " ["
E0B2 A6 80 LDA ,x+
E0B4 97 01 STA q_add+1
E0B6 BD E1 76 JSR print2
E0B9 BD E2 39 JSR primm
E0BC 5D 20 00 .CSTR "] "
E0BF BD E1 A3 JSR get4x
E0C2 81 A0 CMPA #$A0
E0C4 10 27 FF 6C LBEQ maincrlf
E0C8 81 88 CMPA #$88
E0CA 27 0B BEQ m_mem_back
E0CC 81 8D CMPA #$8d
E0CE 26 D6 BNE m_mem_line
E0D0 96 01 LDA q_add+1
E0D2 A7 1F STA [-1,x]
E0D4 7E E0 A6 JMP m_mem_line
E0D7 M_MEM_BACK:
E0D7 96 01 LDA q_add+1
E0D9 A7 1F STA [-1,x]
E0DB 30 1E LEAX -2,x
E0DD 7E E0 A6 JMP m_mem_line
E0E0 M_DUMP:
E0E0 BD E1 91 JSR getaddr
E0E3 9E 00 LDX q_add
E0E5 BD E2 25 JSR pcrlf
E0E8 M_DUMP_LINE:
E0E8 BD E1 6F JSR printx
E0EB BD E2 39 JSR primm
E0EE 3A 20 00 .CSTR ": "
E0F1 C6 10 LDB #$10
E0F3 M_DUMP_LOOP:
E0F3 A6 80 LDA ,x+
E0F5 BD E1 76 JSR print2
E0F8 86 20 LDA #$20
E0FA BD E2 16 JSR serout
E0FD 5A DECB
E0FE 26 F3 BNE m_dump_loop
E100 BD E2 25 JSR pcrlf
E103 M_DUMP_WAIT:
E103 BD E2 4A JSR serin
E106 81 0D CMPA #$0d
E108 27 DE BEQ m_dump_line
E10A 81 20 CMPA #$20
E10C 10 27 FF 27 LBEQ main
E110 81 08 CMPA #$08
E112 26 EF BNE m_dump_wait
E114 30 88 E0 LEAX -32,x
E117 7E E0 E8 JMP m_dump_line
E11A M_GO:
E11A BD E1 91 JSR getaddr
E11D 6E 9F 00 00 JMP [q_add]
E121 M_USER:
E121 BD E2 39 JSR primm
E124 49 6E 73 74 61 6C 6C 65 64 20 6D 6F 64 75 6C 65 73 3A 0D 0A 00 .CSTR "Installed modules:",$d,$a
E139 CC E2 55 LDD #mon_end
E13C 5F CLRB
E13D 4C INCA
E13E 34 06 PSHS d
E140 35 10 PULS x
E142 M_U_FIND:
E142 A6 03 LDA 3,x
E144 81 4D CMPA #"M"
E146 26 1E BNE m_u_next
E148 A6 04 LDA 4,x
E14A 81 4F CMPA #"O"
E14C 26 18 BNE m_u_next
E14E A6 05 LDA 5,x
E150 81 44 CMPA #"D"
E152 26 12 BNE m_u_next
E154 A6 06 LDA 6,x
E156 81 39 CMPA #"9"
E158 26 0C BNE m_u_next
E15A ;found
E15A 34 10 PSHS x
E15C 30 07 LEAX 7,x
E15E BD E2 0B JSR strout
E161 BD E2 25 JSR pcrlf
E164 35 10 PULS x
E166 M_U_NEXT:
E166 30 89 01 00 LEAX 256,x
E16A 26 D6 BNE m_u_find
E16C 7E E0 37 JMP main
E16F PRINTX:
E16F 1F 10 TFR x,d
E171 BD E1 76 JSR print2
E174 1F 98 TFR b,a
E176 PRINT2:
E176 34 02 PSHS a
E178 44 LSRA
E179 44 LSRA
E17A 44 LSRA
E17B 44 LSRA
E17C BD E1 83 JSR printhex
E17F 35 02 PULS a
E181 84 0F ANDA #$0f
E183 PRINTHEX:
E183 81 0A CMPA #$0a
E185 24 05 BHS ph2
E187 8B 30 ADDA #$30
E189 7E E2 16 JMP serout
E18C PH2:
E18C 8B 37 ADDA #$37
E18E 7E E2 16 JMP serout
E191 GETADDR:
E191 BD E2 39 JSR primm
E194 41 64 64 72 3A 00 .CSTR "Addr:"
E19A BD E1 9E JSR get4
E19D 39 RTS
E19E GET4:
E19E CC 00 00 LDD #0
E1A1 DD 00 STD q_add
E1A3 GET4X:
E1A3 BD E1 E4 JSR gethex
E1A6 2A 01 BPL get4ok
E1A8 39 RTS
E1A9 GET4OK:
E1A9 1F 89 TFR a,b
E1AB BD E1 83 JSR printhex
E1AE 4F CLRA
E1AF 08 01 LSL q_add+1
E1B1 09 00 ROL q_add
E1B3 08 01 LSL q_add+1
E1B5 09 00 ROL q_add
E1B7 08 01 LSL q_add+1
E1B9 09 00 ROL q_add
E1BB 08 01 LSL q_add+1
E1BD 09 00 ROL q_add
E1BF D3 00 ADDD q_add
E1C1 DD 00 STD q_add
E1C3 7E E1 A3 JMP get4x
E1C6 GETHEX2:
E1C6 BD E1 E4 JSR gethex
E1C9 48 LSLA
E1CA 48 LSLA
E1CB 48 LSLA
E1CC 48 LSLA
E1CD 97 02 STA q_key
E1CF BD E1 E4 JSR gethex
E1D2 9B 02 ADDA q_key
E1D4 39 RTS
E1D5 GETHEX4:
E1D5 BD E1 C6 JSR gethex2
E1D8 34 02 PSHS a
E1DA BD E1 C6 JSR gethex2
E1DD 1F 89 TFR a,b
E1DF 35 02 PULS a
E1E1 1F 01 TFR d,x
E1E3 39 RTS
E1E4 GETHEX:
E1E4 BD E2 4A JSR serin
E1E7 81 30 CMPA #$30
E1E9 24 03 BHS gh1
E1EB GHB:
E1EB 8A 80 ORA #$80
E1ED 39 RTS
E1EE GH1:
E1EE 81 3A CMPA #$3A
E1F0 22 03 BHI gh2
E1F2 80 30 SUBA #$30
E1F4 39 RTS
E1F5 GH2:
E1F5 81 41 CMPA #"A"
E1F7 25 F2 BLO ghb
E1F9 81 46 CMPA #"F"
E1FB 22 03 BHI gh3
E1FD 80 37 SUBA #55
E1FF 39 RTS
E200 GH3:
E200 81 61 CMPA #"a"
E202 25 E7 BLO ghb
E204 81 66 CMPA #"f"
E206 22 E3 BHI ghb
E208 80 57 SUBA #$57
E20A 39 RTS
E20B ; serial
E20B ACIA: EQU $83fe
E20B ACIAC: EQU ACIA
E20B ACIAS: EQU ACIA
E20B ACIAD: EQU ACIA+1
E20B ACIA_TDRE: EQU 02h
E20B ACIA_RDRF: EQU 01h
E20B STROUT:
E20B A6 80 LDA ,x+
E20D 26 01 BNE sout2
E20F 39 RTS
E210 SOUT2:
E210 BD E2 16 JSR serout
E213 7E E2 0B JMP strout
E216 SEROUT:
E216 34 06 PSHS a,b
E218 SEROUTL:
E218 F6 83 FE LDB ACIAS
E21B C4 02 ANDB #ACIA_TDRE
E21D 27 F9 BEQ seroutl
E21F B7 83 FF STA ACIAD
E222 35 06 PULS a,b
E224 39 RTS
E225 PCRLF:
E225 86 0D LDA #$d
E227 BD E2 16 JSR serout
E22A 86 0A LDA #$a
E22C 7E E2 16 JMP serout
E22F PROMPT:
E22F 86 3E LDA #">"
E231 BD E2 16 JSR serout
E234 86 20 LDA #$20
E236 7E E2 16 JMP serout
E239 PRIMM:
E239 34 12 PSHS a,x
E23B AE 63 LDX 3,s
E23D PRIMM1:
E23D A6 80 LDA ,x+
E23F 26 04 BNE primm2
E241 AF 63 STX 3,s
E243 35 92 PULS a,x,pc
E245 PRIMM2:
E245 BD E2 16 JSR serout
E248 20 F3 BRA primm1
E24A SERIN:
E24A B6 83 FE LDA ACIAS
E24D 84 01 ANDA #ACIA_RDRF
E24F 27 F9 BEQ serin
E251 B6 83 FF LDA ACIAD
E254 39 RTS
E255 MON_END: EQU $
E255 .BLOCK
E255 ;NAM TB01V137
E255 ;* WRITTEN 20-OCT-77 BY JOHN BYRNS
E255 ;* REVISED 30-DEC-77
E255 ;* REVISED 18-JAN-78
E255 ;* REVISED 10-APR-78
E255 ;* REVISED 08-MAY-79 TO ELIMINATE USE OF SP
E255 ;* REVISED 24-JAN-80 TO USE 6801 ON CHIP RAM
E255 ;* REVISED 26-JAN-80 FOR NEW 6801 INSTRUCTIONS
E255 ;* REVISED 24-JUL-81 FOR WHISTON BOARD
E255 ;* REVISED 24-SEP-81 INCLUDE USER FUNCTION
E255 ;* REVISED 08-APR-82 MAKE STANDALONE INCLUDE HEX CONSTANTS AND MEM FUNCTION
E255 ;* REVISED 21-NOV-84 FOR 6809
E255 ;* REVISED FEB 94 ADAPTED TO SIMULATOR AND BUGFIXES BY L.C. BENSCHOP.
E255 ;*
E255 .ENGINE kilo
E255 EOL: EQU $04
E255 ETX: EQU $03
E255 SPACE: EQU $20
E255 CR: EQU $0D
E255 LF: EQU $0A
E255 BS: EQU $08
E255 CAN: EQU $18
E255 BELL: EQU $07
E255 FILL: EQU $00
E255 DEL: EQU $7F
E255 BSIZE: EQU 73
E255 STKCUS: EQU 48
E255 ;*
E255 BACIA: = $83FE
E255 RMCR: EQU bACIA
E255 TRCS: EQU bACIA
E255 RECEV: EQU bACIA+1
E255 TRANS: EQU bACIA+1
E255 CNTL1: EQU $03
E255 CNTL2: EQU $15
E255 RDRF: EQU $01
E255 ORFE: EQU $20
E255 TDRE: EQU $02
E255 ;* EDIT THE FOLLOWING EQUATES TO REFLECT THE
E255 ;* DESIRED ROM AND RAM LAYOUT
E255 LORAM: EQU $0080 ;ADDRESS OF DIRECT PAGE SCRATCH RAM
E255 BUFFER: EQU $0200 ;ADDRESS OF MAIN RAM
E255 RAMSIZ: EQU $2000 ;SIZE OF MAIN RAM
E255 ROMADR: EQU $f000 ;ADDRESS OF TINY BASIC ROM
E255 ;*
E255 RAMBEG: EQU BUFFER+BSIZE
E255 RAMEND: EQU BUFFER+RAMSIZ
E255 ;*
E255 RAMPAT: EQU $AA0F
E255 ROMPAT: EQU $F055
E255 ;*
E255 ; ORG LORAM
0006 .BSSEG
0006 USRBAS: RMB 2
0008 USRTOP: RMB 2
000A STKLIM: RMB 2
000C STKTOP: RMB 2
000E CURSOR: RMB 2
0010 SAVESP: RMB 2
0012 LINENB: RMB 2
0014 SCRTCH: RMB 2
0016 CHAR: RMB 2
0018 ZONE: RMB 1
0019 MODE: RMB 1
001A RESRVD: RMB 1
001B LOEND: EQU $
001B ;*
E255 .CSEG
E255 ; ORG ROMADR
E255 ALIGN 256
E300 .ENT $
E300 7E E3 15 BASIC: JMP SETUP
E303 4D 4F 44 39 42 41 53 49 43 00 .CSTR "MOD9BASIC"
E30D 10 DE 0C WARMS: LDS STKTOP
E310 BD EA E1 JSR INTEEE
E313 20 13 BRA WMS05
E315 10 CE 21 CC SETUP: LDS #RAMEND-52
E319 10 DF 0C SET03: STS STKTOP
E31C BD EA E1 JSR INTEEE
E31F CC 02 49 CLEAR: LDD #RAMBEG
E322 DD 06 STD USRBAS
E324 DD 08 STD USRTOP
E326 DD 0A CLR02: STD STKLIM
E328 BD E4 3F WMS05: JSR CRLF
E32B 8E E3 83 LDX #VSTR
E32E BD E4 38 JSR PUTSTR
E331 10 DE 0C CMDB: LDS STKTOP
E334 0F 19 CLR MODE
E336 BD E4 3F JSR CRLF
E339 9E 06 LDX USRBAS
E33B 9F 0E STX CURSOR
E33D 8E 00 00 CMDE: LDX #0000
E340 9F 12 STX LINENB
E342 0D 19 TST MODE
E344 26 05 BNE CMD01
E346 86 3A LDA #":"
E348 BD EA A6 JSR PUTCHR
E34B BD E4 90 CMD01: JSR GETLIN
E34E BD E5 EA JSR TSTNBR
E351 24 0E BCC CMD02
E353 29 2B BVS CMD05
E355 BD E5 5B JSR SKIPSP
E358 81 04 CMPA #EOL
E35A 27 E1 BEQ CMDE
E35C BD E5 0D JSR MSLINE
E35F 20 D0 BRA CMDB
E361 34 10 CMD02: PSHS X
E363 9E 08 LDX USRTOP
E365 9C 0A CMPX STKLIM
E367 35 10 PULS X
E369 27 03 BEQ CMD03
E36B 7E E4 5F JMP ERRORR
E36E C3 00 00 CMD03: ADDD #0
E371 27 0D BEQ CMD05
E373 34 06 CMD04: PSHS D
E375 83 27 0F SUBD #9999
E378 35 06 PULS D
E37A 22 04 BHI CMD05
E37C 8D 10 BSR EDITOR
E37E 20 BD BRA CMDE
E380 7E E4 56 CMD05: JMP ERRORS
E383 54 49 4E 59 20 56 31 2E 33 37 VSTR: DB "TINY V1.37"
E38D 04 FCB EOL
E38E ;******************************
E38E ;******************************
E38E 34 06 EDITOR: PSHS D
E390 BD E5 5B JSR SKIPSP
E393 9F 14 STX SCRTCH
E395 A6 60 LDA 0,S
E397 9E 0E LDX CURSOR
E399 9C 08 CMPX USRTOP
E39B 27 05 BEQ ED00
E39D 10 A3 00 CMPD 0,X
E3A0 24 02 BCC ED01
E3A2 9E 06 ED00: LDX USRBAS
E3A4 BD E6 C4 ED01: JSR FNDLIN
E3A7 9F 0E STX CURSOR
E3A9 25 22 BCS ED04
E3AB 9F 10 STX SAVESP
E3AD 30 02 LEAX 2,X
E3AF A6 80 ED02: LDA ,X+
E3B1 81 04 CMPA #EOL
E3B3 26 FA BNE ED02
E3B5 9C 08 ED03: CMPX USRTOP
E3B7 27 0E BEQ ED35
E3B9 A6 80 LDA ,X+
E3BB 9F 16 STX CHAR
E3BD 9E 10 LDX SAVESP
E3BF A7 80 STA ,X+
E3C1 9F 10 STX SAVESP
E3C3 9E 16 LDX CHAR
E3C5 20 EE BRA ED03
E3C7 9E 10 ED35: LDX SAVESP
E3C9 9F 08 STX USRTOP
E3CB 9F 0A STX STKLIM
E3CD 9E 14 ED04: LDX SCRTCH
E3CF C6 FF LDB #-1
E3D1 5C ED05: INCB
E3D2 A6 80 LDA ,X+
E3D4 81 04 CMPA #EOL
E3D6 26 F9 BNE ED05
E3D8 5D TSTB
E3D9 26 03 BNE ED55
E3DB 32 62 LEAS 2,S
E3DD 39 RTS
E3DE 30 1F ED55: LEAX -1,X
E3E0 CB 04 ADDB #4
E3E2 30 1F ED06: LEAX -1,X
E3E4 5A DECB
E3E5 A6 00 LDA 0,X
E3E7 81 20 CMPA #SPACE
E3E9 27 F7 BEQ ED06
E3EB 86 04 LDA #EOL
E3ED A7 01 STA 1,X
E3EF 4F CLRA
E3F0 9E 08 LDX USRTOP
E3F2 9F 16 STX CHAR
E3F4 D3 08 ADDD USRTOP
E3F6 DD 08 STD USRTOP
E3F8 DD 0A STD STKLIM
E3FA BD E6 62 JSR TSTSTK
E3FD 24 07 BCC ED07
E3FF 9F 08 STX USRTOP
E401 9F 0A STX STKLIM
E403 7E E4 4E JMP ERRORF
E406 9E 08 ED07: LDX USRTOP
E408 9F 10 ED08: STX SAVESP
E40A 9E 16 LDX CHAR
E40C 9C 0E CMPX CURSOR
E40E 27 0A BEQ ED09
E410 A6 82 LDA ,-X
E412 9F 16 STX CHAR
E414 9E 10 LDX SAVESP
E416 A7 82 STA ,-X
E418 20 EE BRA ED08
E41A 35 06 ED09: PULS D
E41C 9E 0E LDX CURSOR
E41E ED 81 STD ,X++
E420 9F 16 STX CHAR
E422 9E 14 ED10: LDX SCRTCH
E424 A6 80 LDA ,X+
E426 9F 14 STX SCRTCH
E428 9E 16 LDX CHAR
E42A A7 80 STA ,X+
E42C 9F 16 STX CHAR
E42E 81 04 CMPA #EOL
E430 26 F0 BNE ED10
E432 39 RTS
E433 ;******************************
E433 ;******************************
E433 BD EA A6 PUTS01: JSR PUTCHR
E436 30 01 LEAX 1,X
E438 A6 00 PUTSTR: LDA 0,X
E43A 81 04 CMPA #EOL
E43C 26 F5 BNE PUTS01
E43E 39 RTS
E43F ;******************************
E43F ;******************************
E43F 8E E4 47 CRLF: LDX #CRLFST
E442 8D F4 BSR PUTSTR
E444 0F 18 CLR ZONE
E446 39 RTS
E447 0D 0A 7F 00 00 00 04 CRLFST: FCB CR,LF,DEL,FILL,FILL,FILL,EOL
E44E ;******************************
E44E ;******************************
E44E 8D 24 ERRORF: BSR ER01
E450 53 4F 52 52 59 DB "SORRY"
E455 04 FCB EOL
E456 8D 1C ERRORS: BSR ER01
E458 57 48 41 54 20 3F DB "WHAT ?"
E45E 04 FCB EOL
E45F 8D 13 ERRORR: BSR ER01
E461 48 4F 57 20 3F DB "HOW ?"
E466 04 FCB EOL
E467 8D 0B BREAK: BSR ER01
E469 42 52 45 41 4B DB "BREAK"
E46E 04 FCB EOL
E46F END BSR ER01
E46F 53 54 4F 50 DB "STOP"
E473 04 FCB EOL
E474 8D C9 ER01: BSR CRLF
E476 86 07 LDA #BELL
E478 BD EA A6 JSR PUTCHR
E47B DC 12 LDD LINENB
E47D BD E9 5E JSR PRNT4
E480 86 20 LDA #SPACE
E482 BD EA A6 JSR PUTCHR
E485 35 10 PULS X
E487 8D AF BSR PUTSTR
E489 8D B4 BSR CRLF
E48B 7E E3 31 JMP CMDB
E48E ;******************************
E48E ;******************************
E48E 8D AF GL00: BSR CRLF
E490 8E 02 00 GETLIN: LDX #BUFFER
E493 BD EA 9C GL03: JSR GETCHR
E496 81 20 CMPA #SPACE
E498 25 14 BCS GL05
E49A 81 7F CMPA #$7F
E49C 27 F5 BEQ GL03
E49E 8C 02 48 CMPX #BUFFER+BSIZE-1
E4A1 26 04 BNE GL04
E4A3 86 07 LDA #BELL
E4A5 20 02 BRA GL02
E4A7 A7 80 GL04: STA ,X+
E4A9 BD EA A6 GL02: JSR PUTCHR
E4AC 20 E5 BRA GL03
E4AE 81 08 GL05: CMPA #BS
E4B0 27 24 BEQ GL07
E4B2 81 18 CMPA #CAN
E4B4 27 D8 BEQ GL00
E4B6 81 0A CMPA #LF
E4B8 27 31 BEQ GL09
E4BA 81 0D CMPA #CR
E4BC 26 D5 BNE GL03
E4BE 0D 19 TST MODE
E4C0 27 05 BEQ GL06
E4C2 BD EA A6 JSR PUTCHR
E4C5 20 07 BRA GL08
E4C7 34 10 GL06: PSHS X
E4C9 BD E4 3F JSR CRLF
E4CC 35 10 PULS X
E4CE 86 04 GL08: LDA #EOL
E4D0 A7 00 STA 0,X
E4D2 8E 02 00 LDX #BUFFER
E4D5 39 RTS
E4D6 8C 02 00 GL07: CMPX #BUFFER
E4D9 27 B8 BEQ GL03
E4DB 30 1F LEAX -1,X
E4DD 86 08 LDA #BS
E4DF BD EA A6 JSR PUTCHR
E4E2 86 20 LDA #SPACE
E4E4 BD EA A6 JSR PUTCHR
E4E7 86 08 LDA #BS
E4E9 20 BE BRA GL02
E4EB 1A 01 GL09: ORCC #$01
E4ED 06 19 ROR MODE
E4EF 20 B8 BRA GL02
E4F1 ;******************************
E4F1 ;******************************
E4F1 30 01 REM00: LEAX 1,X
E4F3 8D 66 REM: BSR SKIPSP
E4F5 81 04 CMPA #EOL
E4F7 26 F8 BNE REM00
E4F9 BD E8 31 ENDSMT: JSR TSTEOL
E4FC 96 12 ENDS02: LDA LINENB
E4FE 9A 13 ORA LINENB+1
E500 27 14 BEQ REM09
E502 9C 08 REM05: CMPX USRTOP
E504 26 03 BNE NXTLIN
E506 7E E4 5F JMP ERRORR
E509 EC 81 NXTLIN: LDD ,X++
E50B DD 12 STD LINENB
E50D BD EA 98 MSLINE: JSR TSTBRK
E510 8D 08 BSR IFAN
E512 25 03 BCS IMPLET
E514 34 06 PSHS D
E516 39 REM09: RTS
E517 7E E8 42 IMPLET: JMP LET
E51A ;******************************
E51A ;******************************
E51A 8D 3F IFAN: BSR SKIPSP
E51C 9F 0E STX CURSOR
E51E 8E EA 37 LDX #VERBT
E521 A6 80 FAN00: LDA ,X+
E523 81 04 CMPA #EOL
E525 26 05 BNE FAN04
E527 9E 0E LDX CURSOR
E529 1A 01 ORCC #$01
E52B 39 RTS
E52C 9F 16 FAN04: STX CHAR
E52E 9E 0E LDX CURSOR
E530 9F 14 STX SCRTCH
E532 9E 14 FAN05: LDX SCRTCH
E534 A1 00 CMPA 0,X
E536 26 15 BNE FAN07
E538 30 01 LEAX 1,X
E53A 9F 14 STX SCRTCH
E53C 9E 16 LDX CHAR
E53E A6 80 LDA ,X+
E540 9F 16 STX CHAR
E542 81 04 CMPA #EOL
E544 26 EC BNE FAN05
E546 EC 00 LDD 0,X
E548 9E 14 LDX SCRTCH
E54A 1C FE ANDCC #$FE
E54C 39 RTS
E54D 9E 16 FAN07: LDX CHAR
E54F A6 80 FAN08: LDA ,X+
E551 81 04 CMPA #EOL
E553 26 FA BNE FAN08
E555 30 02 LEAX 2,X
E557 20 C8 BRA FAN00
E559 ;******************************
E559 ;******************************
E559 30 01 NXTNSP: LEAX 1,X
E55B A6 00 SKIPSP: LDA 0,X
E55D 81 20 CMPA #SPACE
E55F 27 F8 BEQ NXTNSP
E561 39 RTS
E562 ;******************************
E562 ;******************************
E562 8D 1A TSTHEX: BSR TSTDIG
E564 24 22 BCC TST05
E566 81 41 CMPA #"A"
E568 25 11 BCS TST03
E56A 81 46 CMPA #"F"
E56C 22 0D BHI TST03
E56E 80 37 SUBA #"A"-10
E570 1C FE ANDCC #$FE
E572 39 RTS
E573 ;******************************
E573 ;******************************
E573 81 41 TSTLTR: CMPA #"A"
E575 25 04 BCS TST03
E577 81 5A CMPA #"Z"
E579 23 0D BLS TST05
E57B 1A 01 TST03: ORCC #$01
E57D 39 RTS
E57E ;******************************
E57E ;******************************
E57E 81 30 TSTDIG: CMPA #"0"
E580 25 F9 BCS TST03
E582 81 39 CMPA #"9"
E584 22 F5 BHI TST03
E586 80 30 SUBA #"0"
E588 1C FE TST05: ANDCC #$FE
E58A 39 RTS
E58B ;******************************
E58B ;******************************
E58B 8D CE TSTVAR: BSR SKIPSP
E58D 8D E4 BSR TSTLTR
E58F 25 12 BCS TSTV03
E591 1F 89 TFR A,B
E593 A6 01 LDA 1,X
E595 8D DC BSR TSTLTR
E597 24 E2 BCC TST03
E599 30 01 LEAX 1,X
E59B C0 41 SUBB #"A"
E59D 58 ASLB
E59E 4F CLRA
E59F D3 0C ADDD STKTOP
E5A1 1C FE TSTV02: ANDCC #$FE
E5A3 39 TSTV03: RTS
E5A4 ;******************************
E5A4 ;******************************
E5A4 BD E8 10 USER: JSR ARGONE
E5A7 34 06 PSHS D
E5A9 BD E5 5B JSR SKIPSP
E5AC 81 2C CMPA #","
E5AE 27 09 BEQ USER03
E5B0 81 29 CMPA #")"
E5B2 1A 01 ORCC #$01
E5B4 27 15 BEQ USER05
E5B6 7E E4 56 USER02: JMP ERRORS
E5B9 30 01 USER03: LEAX 1,X
E5BB BD E7 43 JSR EXPR
E5BE 34 02 PSHS A
E5C0 BD E5 5B JSR SKIPSP
E5C3 81 29 CMPA #")"
E5C5 35 02 PULS A
E5C7 26 ED BNE USER02
E5C9 1C FE ANDCC #$FE
E5CB 30 01 USER05: LEAX 1,X
E5CD 9F 0E STX CURSOR
E5CF AD F1 JSR [,S++]
E5D1 9E 0E LDX CURSOR
E5D3 1C FE ANDCC #$FE
E5D5 39 RTS
E5D6 ;******************************
E5D6 ;******************************
E5D6 BD E5 5B TSTSNB: JSR SKIPSP
E5D9 81 2D CMPA #"-"
E5DB 26 0D BNE TSTNBR
E5DD 30 01 LEAX 1,X
E5DF 8D 09 BSR TSTNBR
E5E1 25 06 BCS TSN02
E5E3 40 NEGA
E5E4 50 NEGB
E5E5 82 00 SBCA #0
E5E7 1C FC ANDCC #$FC
E5E9 39 TSN02: RTS
E5EA ;******************************
E5EA ;******************************
E5EA BD E5 5B TSTNBR: JSR SKIPSP
E5ED BD E5 7E JSR TSTDIG
E5F0 24 2F BCC TSTN02
E5F2 81 24 CMPA #"$"
E5F4 1A 01 ORCC #$01
E5F6 26 60 BNE TSTN09
E5F8 30 01 TSTN20: LEAX 1,X
E5FA 6F E2 CLR ,-S
E5FC 6F E2 CLR ,-S
E5FE A6 00 TSTN23: LDA 0,X
E600 BD E5 62 JSR TSTHEX
E603 25 4F BCS TSTN07
E605 30 01 LEAX 1,X
E607 34 10 PSHS X
E609 34 02 PSHS A
E60B EC 63 LDD 3,S
E60D 85 F0 BITA #$F0
E60F 26 4A BNE TSTN11
E611 58 ASLB
E612 49 ROLA
E613 58 ASLB
E614 49 ROLA
E615 58 ASLB
E616 49 ROLA
E617 58 ASLB
E618 49 ROLA
E619 EB E0 ADDB ,S+
E61B ED 62 STD 2,S
E61D 35 10 PULS X
E61F 20 DD BRA TSTN23
E621 30 01 TSTN02: LEAX 1,X
E623 34 02 PSHS A
E625 6F E2 CLR ,-S
E627 A6 00 TSTN03: LDA 0,X
E629 BD E5 7E JSR TSTDIG
E62C 25 26 BCS TSTN07
E62E 30 01 LEAX 1,X
E630 34 10 PSHS X
E632 34 02 PSHS A
E634 EC 63 LDD 3,S
E636 58 ASLB
E637 49 ROLA
E638 29 21 BVS TSTN11
E63A 58 ASLB
E63B 49 ROLA
E63C 29 1D BVS TSTN11
E63E E3 63 ADDD 3,S
E640 29 19 BVS TSTN11
E642 58 ASLB
E643 49 ROLA
E644 29 15 BVS TSTN11
E646 EB 60 ADDB 0,S
E648 89 00 ADCA #0
E64A 29 0F BVS TSTN11
E64C ED 63 STD 3,S
E64E 32 61 LEAS 1,S
E650 35 10 PULS X
E652 20 D3 BRA TSTN03
E654 35 06 TSTN07: PULS D
E656 1C FE ANDCC #$FE
E658 1C FD TSTN09: ANDCC #$FD
E65A 39 RTS
E65B AE 61 TSTN11: LDX 1,S
E65D 32 65 LEAS 5,S
E65F 1A 03 ORCC #$03
E661 39 RTS
E662 ;******************************
E662 ;******************************
E662 10 DF 10 TSTSTK: STS SAVESP
E665 DC 10 LDD SAVESP
E667 83 00 30 SUBD #STKCUS
E66A 93 0A SUBD STKLIM
E66C 39 RTS
E66D ;******************************
E66D ;******************************
E66D BD E7 FD PEEK: JSR PAREXP
E670 34 06 PSHS D
E672 34 10 PSHS X
E674 E6 72 LDB [2,S]
E676 35 10 PULS X
E678 32 62 LEAS 2,S
E67A 4F CLRA
E67B 39 RTS
E67C ;******************************
E67C ;******************************
E67C BD E7 FD POKE: JSR PAREXP
E67F 34 06 PSHS D
E681 BD E5 5B JSR SKIPSP
E684 81 3D CMPA #"="
E686 27 03 BEQ POKE05
E688 7E E4 56 JMP ERRORS
E68B 30 01 POKE05: LEAX 1,X
E68D BD E7 43 JSR EXPR
E690 BD E8 31 JSR TSTEOL
E693 34 10 PSHS X
E695 E7 72 STB [2,S]
E697 35 10 PULS X
E699 32 62 LEAS 2,S
E69B 7E E4 FC JMP ENDS02
E69E ;******************************
E69E ;******************************
E69E BD E5 5B TSTFUN: JSR SKIPSP
E6A1 9F 0E STX CURSOR
E6A3 8E E6 AE LDX #FUNT
E6A6 BD E5 21 JSR FAN00
E6A9 25 02 BCS TSTF05
E6AB 34 06 PSHS D
E6AD 39 TSTF05: RTS
E6AE ;******************************
E6AE ;******************************
E6AE 55 53 52 FUNT: DB "USR"
E6B1 04 FCB EOL
E6B2 E5 A4 FDB USER
E6B4 50 45 45 4B DB "PEEK"
E6B8 04 FCB EOL
E6B9 E6 6D FDB PEEK
E6BB 4D 45 4D DB "MEM"
E6BE 04 FCB EOL
E6BF E6 62 FDB TSTSTK
E6C1 04 FCB EOL
E6C2 ;******************************
E6C2 ;******************************
E6C2 9E 06 FLINE: LDX USRBAS
E6C4 9C 08 FNDLIN: CMPX USRTOP
E6C6 26 03 BNE FND03
E6C8 1A 03 ORCC #$03
E6CA 39 RTS
E6CB 10 A3 00 FND03: CMPD 0,X
E6CE 26 03 BNE FND05
E6D0 1C FC ANDCC #$FC
E6D2 39 RTS
E6D3 24 05 FND05: BCC FND07
E6D5 1A 01 ORCC #$01
E6D7 1C FD ANDCC #$FD
E6D9 39 RTS
E6DA 34 02 FND07: PSHS A
E6DC 86 04 LDA #EOL
E6DE 30 01 LEAX 1,X
E6E0 30 01 FND09: LEAX 1,X
E6E2 A1 00 CMPA 0,X
E6E4 26 FA BNE FND09
E6E6 35 02 PULS A
E6E8 30 01 LEAX 1,X
E6EA 20 D8 BRA FNDLIN
E6EC ;******************************
E6EC ;******************************
E6EC 8D 55 RELEXP: BSR EXPR
E6EE 34 06 PSHS D
E6F0 5F CLRB
E6F1 BD E5 5B JSR SKIPSP
E6F4 81 3D CMPA #"="
E6F6 27 23 BEQ REL06
E6F8 81 3C CMPA #"<"
E6FA 26 10 BNE REL03
E6FC 30 01 LEAX 1,X
E6FE 5C INCB
E6FF BD E5 5B JSR SKIPSP
E702 81 3E CMPA #">"
E704 26 11 BNE REL05
E706 30 01 LEAX 1,X
E708 CB 04 ADDB #4
E70A 20 13 BRA REL07
E70C 81 3E REL03: CMPA #">"
E70E 26 5F BNE EXPR06
E710 30 01 LEAX 1,X
E712 CB 04 ADDB #4
E714 BD E5 5B JSR SKIPSP
E717 81 3D REL05: CMPA #"="
E719 26 04 BNE REL07
E71B 30 01 REL06: LEAX 1,X
E71D CB 02 ADDB #2
E71F 34 04 REL07: PSHS B
E721 8D 20 BSR EXPR
E723 34 10 PSHS X
E725 A3 63 SUBD 3,S
E727 1F A8 TFR CC,A
E729 44 LSRA
E72A 1F 89 TFR A,B
E72C 48 ASLA
E72D 48 ASLA
E72E 34 04 PSHS B
E730 AB E0 ADDA ,S+
E732 84 06 ANDA #$06
E734 26 01 BNE REL08
E736 4C INCA
E737 5F REL08: CLRB
E738 A4 62 ANDA 2,S
E73A 27 01 BEQ REL09
E73C 53 COMB
E73D 4F REL09: CLRA
E73E 35 10 PULS X
E740 32 63 LEAS 3,S
E742 39 RTS
E743 ;******************************
E743 ;******************************
E743 6F E2 EXPR: CLR ,-S
E745 6F E2 CLR ,-S
E747 BD E5 5B JSR SKIPSP
E74A 81 2D CMPA #"-"
E74C 27 17 BEQ EXPR05
E74E 81 2B CMPA #"+"
E750 26 02 BNE EXPR03
E752 30 01 EXPR02: LEAX 1,X
E754 8D 1C EXPR03: BSR TERM
E756 E3 60 EXPR04: ADDD 0,S
E758 ED 60 STD 0,S
E75A BD E5 5B JSR SKIPSP
E75D 81 2B CMPA #"+"
E75F 27 F1 BEQ EXPR02
E761 81 2D CMPA #"-"
E763 26 0A BNE EXPR06
E765 30 01 EXPR05: LEAX 1,X
E767 8D 09 BSR TERM
E769 40 NEGA
E76A 50 NEGB
E76B 82 00 SBCA #0
E76D 20 E7 BRA EXPR04
E76F 35 06 EXPR06: PULS D
E771 39 RTS
E772 ;******************************
E772 ;******************************
E772 BD E7 E5 TERM: JSR FACT
E775 34 06 PSHS D
E777 BD E5 5B TERM03: JSR SKIPSP
E77A 81 2A CMPA #"*"
E77C 27 48 BEQ TERM07
E77E 81 2F CMPA #"/"
E780 27 03 BEQ TERM05
E782 35 06 PULS D
E784 39 RTS
E785 30 01 TERM05: LEAX 1,X
E787 8D 5C BSR FACT
E789 34 10 PSHS X
E78B 30 62 LEAX 2,S
E78D 34 06 PSHS D
E78F A8 00 EORA 0,X
E791 BD E8 24 JSR ABSX
E794 30 60 LEAX 0,S
E796 BD E8 24 JSR ABSX
E799 34 02 PSHS A
E79B 86 11 LDA #17
E79D 34 02 PSHS A
E79F 4F CLRA
E7A0 5F CLRB
E7A1 A3 62 DIV05: SUBD 2,S
E7A3 24 06 BCC DIV07
E7A5 E3 62 ADDD 2,S
E7A7 1C FE ANDCC #$FE
E7A9 20 02 BRA DIV09
E7AB 1A 01 DIV07: ORCC #$01
E7AD 69 67 DIV09: ROL 7,S
E7AF 69 66 ROL 6,S
E7B1 59 ROLB
E7B2 49 ROLA
E7B3 6A 60 DEC 0,S
E7B5 26 EA BNE DIV05
E7B7 A6 61 LDA 1,S
E7B9 32 64 LEAS 4,S
E7BB 4D TSTA
E7BC 2A 04 BPL TERM06
E7BE 30 62 LEAX 2,S
E7C0 8D 66 BSR NEGX
E7C2 35 10 TERM06: PULS X
E7C4 20 B1 BRA TERM03
E7C6 30 01 TERM07: LEAX 1,X
E7C8 8D 1B BSR FACT
E7CA 34 04 MULT: PSHS B
E7CC E6 62 LDB 2,S
E7CE 3D MUL
E7CF A6 61 LDA 1,S
E7D1 E7 61 STB 1,S
E7D3 E6 60 LDB 0,S
E7D5 3D MUL
E7D6 A6 62 LDA 2,S
E7D8 E7 62 STB 2,S
E7DA 35 04 PULS B
E7DC 3D MUL
E7DD AB 60 ADDA 0,S
E7DF AB 61 ADDA 1,S
E7E1 ED 60 STD 0,S
E7E3 20 92 BRA TERM03
E7E5 ;******************************
E7E5 ;******************************
E7E5 BD E5 8B FACT: JSR TSTVAR
E7E8 25 09 BCS FACT03
E7EA 34 10 PSHS X
E7EC 1F 01 TFR D,X
E7EE EC 00 LDD 0,X
E7F0 35 10 PULS X
E7F2 39 FACT02: RTS
E7F3 BD E5 EA FACT03: JSR TSTNBR
E7F6 24 FA BCC FACT02
E7F8 BD E6 9E JSR TSTFUN
E7FB 24 F5 BCC FACT02
E7FD 8D 11 PAREXP: BSR ARGONE
E7FF 34 02 PSHS A
E801 BD E5 5B JSR SKIPSP
E804 81 29 CMPA #")"
E806 35 02 PULS A
E808 26 03 BNE FACT05
E80A 30 01 LEAX 1,X
E80C 39 RTS
E80D 7E E4 56 FACT05: JMP ERRORS
E810 ;******************************
E810 ;******************************
E810 BD E6 62 ARGONE: JSR TSTSTK
E813 24 03 BCC FACT04
E815 7E E4 4E JMP ERRORF
E818 BD E5 5B FACT04: JSR SKIPSP
E81B 81 28 CMPA #"("
E81D 26 EE BNE FACT05
E81F 30 01 LEAX 1,X
E821 7E E7 43 JMP EXPR
E824 ;******************************
E824 ;******************************
E824 6D 00 ABSX: TST 0,X
E826 2A 08 BPL NEG05
E828 60 00 NEGX: NEG 0,X
E82A 60 01 NEG 1,X
E82C 24 02 BCC NEG05
E82E 6A 00 DEC 0,X
E830 39 NEG05: RTS
E831 ;******************************
E831 ;******************************
E831 34 02 TSTEOL: PSHS A
E833 BD E5 5B JSR SKIPSP
E836 81 04 CMPA #EOL
E838 27 03 BEQ TEOL03
E83A 7E E4 56 JMP ERRORS
E83D 30 01 TEOL03: LEAX 1,X
E83F 35 02 PULS A
E841 39 RTS
E842 ;******************************
E842 ;******************************
E842 BD E5 8B LET: JSR TSTVAR
E845 24 03 BCC LET03
E847 7E E4 56 JMP ERRORS
E84A 34 06 LET03: PSHS D
E84C BD E5 5B JSR SKIPSP
E84F 81 3D CMPA #"="
E851 27 03 BEQ LET05
E853 7E E4 56 JMP ERRORS
E856 30 01 LET05: LEAX 1,X
E858 BD E7 43 JSR EXPR
E85B 8D D4 BSR TSTEOL
E85D 9F 0E STX CURSOR
E85F 35 10 PULS X
E861 ED 00 STD 0,X
E863 9E 0E LDX CURSOR
E865 7E E4 FC JMP ENDS02
E868 ;******************************
E868 ;******************************
E868 BD E6 EC IF: JSR RELEXP
E86B 5D TSTB
E86C 27 03 BEQ IF03
E86E 7E E5 0D JMP MSLINE
E871 7E E4 F3 IF03: JMP REM
E874 ;******************************
E874 ;******************************
E874 BD E7 43 GOTO: JSR EXPR
E877 8D B8 BSR TSTEOL
E879 BD E6 C2 JSR FLINE
E87C 25 0F BCS GOSB04
E87E 7E E5 09 JMP NXTLIN
E881 ;******************************
E881 ;******************************
E881 BD E7 43 GOSUB: JSR EXPR
E884 8D AB BSR TSTEOL
E886 9F 0E STX CURSOR
E888 BD E6 C2 JSR FLINE
E88B 24 03 BCC GOSB03
E88D 7E E4 5F GOSB04: JMP ERRORR
E890 BD E6 62 GOSB03: JSR TSTSTK
E893 24 03 BCC GOSB05
E895 7E E4 4E JMP ERRORF
E898 DC 0E GOSB05: LDD CURSOR
E89A 34 06 PSHS D
E89C DC 12 LDD LINENB
E89E 34 06 PSHS D
E8A0 BD E5 09 JSR NXTLIN
E8A3 35 06 PULS D
E8A5 DD 12 STD LINENB
E8A7 35 10 PULS X
E8A9 7E E4 FC JMP ENDS02
E8AC ;******************************
E8AC ;******************************
E8AC RETURN: EQU TSTEOL
E8AC ;******************************
E8AC ;******************************
E8AC BD E5 5B PRINT: JSR SKIPSP
E8AF 81 2C PR01: CMPA #","
E8B1 27 36 BEQ PR05
E8B3 81 3B CMPA #";"
E8B5 27 3D BEQ PR07
E8B7 81 04 CMPA #EOL
E8B9 27 25 BEQ PR04
E8BB 81 22 CMPA #$22
E8BD 26 06 BNE PR02
E8BF 30 01 LEAX 1,X
E8C1 8D 42 BSR PRNTQS
E8C3 20 09 BRA PR03
E8C5 BD E7 43 PR02: JSR EXPR
E8C8 34 10 PSHS X
E8CA 8D 47 BSR PRNTN
E8CC 35 10 PULS X
E8CE BD E5 5B PR03: JSR SKIPSP
E8D1 81 2C CMPA #","
E8D3 27 14 BEQ PR05
E8D5 81 3B CMPA #";"
E8D7 27 1B BEQ PR07
E8D9 81 04 CMPA #EOL
E8DB 27 03 BEQ PR04
E8DD 7E E4 56 JMP ERRORS
E8E0 34 10 PR04: PSHS X
E8E2 BD E4 3F JSR CRLF
E8E5 35 10 PULS X
E8E7 20 14 BRA PR08
E8E9 C6 07 PR05: LDB #$7
E8EB 86 20 PR06: LDA #SPACE
E8ED BD EA A6 JSR PUTCHR
E8F0 D5 18 BITB ZONE
E8F2 26 F7 BNE PR06
E8F4 30 01 PR07: LEAX 1,X
E8F6 BD E5 5B JSR SKIPSP
E8F9 81 04 CMPA #EOL
E8FB 26 B2 BNE PR01
E8FD 30 01 PR08: LEAX 1,X
E8FF 7E E4 FC JMP ENDS02
E902 ;*
E902 ;*
E902 BD EA A6 PRQ01: JSR PUTCHR
E905 A6 80 PRNTQS: LDA ,X+
E907 81 04 CMPA #EOL
E909 26 03 BNE PRQ03
E90B 7E E4 56 JMP ERRORS
E90E 81 22 PRQ03: CMPA #$22
E910 26 F0 BNE PRQ01
E912 39 RTS
E913 ;*
E913 4D PRNTN: TSTA
E914 2A 0D BPL PRN03
E916 40 NEGA
E917 50 NEGB
E918 82 00 SBCA #0
E91A 34 02 PSHS A
E91C 86 2D LDA #"-"
E91E BD EA A6 JSR PUTCHR
E921 35 02 PULS A
E923 8E E9 52 PRN03: LDX #PRNPT-2
E926 30 02 PRN05: LEAX 2,X
E928 10 A3 00 CMPD 0,X
E92B 24 05 BCC PRN07
E92D 8C E9 5C CMPX #PRNPTO
E930 26 F4 BNE PRN05
E932 0F 16 PRN07: CLR CHAR
E934 10 A3 00 PRN09: CMPD 0,X
E937 25 06 BCS PRN11
E939 A3 00 SUBD 0,X
E93B 0C 16 INC CHAR
E93D 20 F5 BRA PRN09
E93F 34 02 PRN11: PSHS A
E941 86 30 LDA #"0"
E943 9B 16 ADDA CHAR
E945 BD EA A6 JSR PUTCHR
E948 35 02 PULS A
E94A 8C E9 5C CMPX #PRNPTO
E94D 27 04 BEQ PRN13
E94F 30 02 LEAX 2,X
E951 20 DF BRA PRN07
E953 39 PRN13: RTS
E954 27 10 PRNPT: FDB 10000
E956 03 E8 FDB 1000
E958 00 64 FDB 100
E95A 00 0A FDB 10
E95C 00 01 PRNPTO: FDB 1
E95E ;*
E95E 8E E9 56 PRNT4: LDX #PRNPT+2
E961 20 CF BRA PRN07
E963 ;******************************
E963 ;******************************
E963 BD E5 8B INPUT: JSR TSTVAR
E966 25 3C BCS IN11
E968 34 06 PSHS D
E96A 9F 0E STX CURSOR
E96C 86 3F IN03: LDA #"?"
E96E BD EA A6 JSR PUTCHR
E971 BD E4 90 JSR GETLIN
E974 BD E5 5B IN05: JSR SKIPSP
E977 81 04 CMPA #EOL
E979 27 F1 BEQ IN03
E97B BD E5 D6 JSR TSTSNB
E97E 24 0B BCC IN07
E980 8E E9 B8 LDX #RMESS
E983 BD E4 38 JSR PUTSTR
E986 BD E4 3F JSR CRLF
E989 20 E1 BRA IN03
E98B 9F 14 IN07: STX SCRTCH
E98D 35 10 PULS X
E98F ED 00 STD 0,X
E991 9E 0E LDX CURSOR
E993 BD E5 5B JSR SKIPSP
E996 81 2C CMPA #","
E998 27 03 BEQ IN09
E99A 7E E4 F9 JMP ENDSMT
E99D 30 01 IN09: LEAX 1,X
E99F BD E5 8B JSR TSTVAR
E9A2 24 03 BCC IN13
E9A4 7E E4 56 IN11: JMP ERRORS
E9A7 34 06 IN13: PSHS D
E9A9 34 10 PSHS X
E9AB 9E 14 LDX SCRTCH
E9AD BD E5 5B JSR SKIPSP
E9B0 81 2C CMPA #","
E9B2 26 C0 BNE IN05
E9B4 30 01 LEAX 1,X
E9B6 20 BC BRA IN05
E9B8 52 45 2D 45 4E 54 45 52 RMESS: DB "RE-ENTER"
E9C0 04 FCB EOL
E9C1 ;******************************
E9C1 ;******************************
E9C1 9E 0C RUN: LDX STKTOP
E9C3 86 34 LDA #52
E9C5 6F 80 RUN01: CLR ,X+
E9C7 4A DECA
E9C8 26 FB BNE RUN01
E9CA 9E 06 LDX USRBAS
E9CC 7E E5 02 JMP REM05
E9CF ;******************************
E9CF ;******************************
E9CF BD E5 EA LIST: JSR TSTNBR
E9D2 24 08 BCC LIST03
E9D4 4F CLRA
E9D5 5F CLRB
E9D6 DD 0E STD CURSOR
E9D8 86 7F LDA #$7F
E9DA 20 17 BRA LIST07
E9DC DD 0E LIST03: STD CURSOR
E9DE BD E5 5B JSR SKIPSP
E9E1 81 2C CMPA #","
E9E3 27 04 BEQ LIST05
E9E5 96 0E LDA CURSOR
E9E7 20 0A BRA LIST07
E9E9 30 01 LIST05: LEAX 1,X
E9EB BD E5 EA JSR TSTNBR
E9EE 24 03 BCC LIST07
E9F0 7E E4 56 JMP ERRORS
E9F3 BD E8 31 LIST07: JSR TSTEOL
E9F6 34 06 PSHS D
E9F8 DC 0E LDD CURSOR
E9FA 9F 0E STX CURSOR
E9FC BD E6 C2 JSR FLINE
E9FF 9C 08 LIST09: CMPX USRTOP
EA01 27 28 BEQ LIST10
EA03 35 06 PULS D
EA05 10 A3 00 CMPD 0,X
EA08 25 28 BCS LIST11
EA0A 34 06 PSHS D
EA0C EC 81 LDD ,X++
EA0E 34 10 PSHS X
EA10 BD E9 5E JSR PRNT4
EA13 35 10 PULS X
EA15 86 20 LDA #SPACE
EA17 BD EA A6 JSR PUTCHR
EA1A BD E4 38 JSR PUTSTR
EA1D 30 01 LEAX 1,X
EA1F 34 10 PSHS X
EA21 BD E4 3F JSR CRLF
EA24 35 10 PULS X
EA26 BD EA 98 JSR TSTBRK
EA29 20 D4 BRA LIST09
EA2B 32 62 LIST10: LEAS 2,S
EA2D 86 03 LDA #ETX
EA2F BD EA A6 JSR PUTCHR
EA32 9E 0E LIST11: LDX CURSOR
EA34 7E E4 FC JMP ENDS02
EA37 ;******************************
EA37 ;******************************
EA37 4C 45 54 VERBT: DB "LET"
EA3A 04 FCB EOL
EA3B E8 42 FDB LET
EA3D 49 46 DB "IF"
EA3F 04 FCB EOL
EA40 E8 68 FDB IF
EA42 47 4F 54 4F DB "GOTO"
EA46 04 FCB EOL
EA47 E8 74 FDB GOTO
EA49 47 4F 53 55 42 DB "GOSUB"
EA4E 04 FCB EOL
EA4F E8 81 FDB GOSUB
EA51 52 45 54 55 52 4E DB "RETURN"
EA57 04 FCB EOL
EA58 E8 31 FDB RETURN
EA5A 50 4F 4B 45 DB "POKE"
EA5E 04 FCB EOL
EA5F E6 7C FDB POKE
EA61 50 52 49 4E 54 DB "PRINT"
EA66 04 FCB EOL
EA67 E8 AC FDB PRINT
EA69 49 4E 50 55 54 DB "INPUT"
EA6E 04 FCB EOL
EA6F E9 63 FDB INPUT
EA71 52 45 4D DB "REM"
EA74 04 FCB EOL
EA75 E4 F3 FDB REM
EA77 53 54 4F 50 DB "STOP"
EA7B 04 FCB EOL
EA7C EA E2 FDB END
EA7C 45 4E 44 DB "END"
EA7F 04 FCB EOL
EA80 EA E2 FDB END
EA80 52 55 4E DB "RUN"
EA83 04 FCB EOL
EA84 E9 C1 FDB RUN
EA86 4C 49 53 54 DB "LIST"
EA8A 04 FCB EOL
EA8B E9 CF FDB LIST
EA8D 4E 45 57 DB "NEW"
EA90 04 FCB EOL
EA91 E3 1F FDB CLEAR
EA93 3F DB "?"
EA94 04 FCB EOL
EA95 E8 AC FDB PRINT
EA97 04 FCB EOL
EA98 ;******************************
EA98 ;******************************
EA98 8D 2A TSTBRK: BSR BRKEEE
EA9A 27 09 BEQ GETC05
EA9C 8D 0D GETCHR: BSR INEEE
EA9E 81 03 CMPA #ETX
EAA0 26 03 BNE GETC05
EAA2 7E E4 67 JMP BREAK
EAA5 39 GETC05: RTS
EAA6 0C 18 PUTCHR: INC ZONE
EAA8 7E EA B5 JMP OUTEEE
EAAB ;******************************
EAAB ;******************************
EAAB 8D 17 INEEE: BSR BRKEEE
EAAD 27 FC BEQ INEEE
EAAF B6 E2 56 LDA RECEV
EAB2 84 7F ANDA #$7F
EAB4 39 RTS
EAB5 34 02 OUTEEE: PSHS A
EAB7 B6 E2 55 OUT01: LDA TRCS
EABA 85 02 BITA #TDRE
EABC 27 F9 BEQ OUT01
EABE 35 02 PULS A
EAC0 B7 E2 56 STA TRANS
EAC3 39 RTS
EAC4 34 02 BRKEEE: PSHS A
EAC6 B6 E2 55 BRK03: LDA TRCS
EAC9 85 20 BITA #ORFE
EACB 27 05 BEQ BRK05
EACD B6 E2 56 LDA RECEV
EAD0 20 F4 BRA BRK03
EAD2 85 01 BRK05: BITA #RDRF
EAD4 35 02 PULS A
EAD6 39 RTS
EAD7 ;*
EAD7 86 03 LDA #CNTL1
EAD9 B7 E2 55 STA RMCR
EADC 86 15 LDA #CNTL2
EADE B7 E2 55 STA TRCS
EAE1 INTEEE: EQU $
EAE1 39 RTS
EAE2 ;******************************
EAE2 ;******************************
EAE2 END:
EAE2 .ENDBLOCK
EAE2 .CSEG
EAE2 ALIGN 256
EB00 7E EB 0F JMP testmod
EB03 4D 4F 44 39 54 65 73 74 4D 6F 64 00 .CSTR "MOD9TestMod"
EB0F TESTMOD:
EB0F BD E0 0F JSR $E00F
EB12 54 65 73 74 20 6D 6F 64 75 6C 65 0D 0A 00 .CSTR "Test module",$0d,$0a
EB20 7E E0 00 JMP $e000
FFF0 .ORG 0xfff0
FFF0 ;reserved
FFF0 E0 12 DW reset
FFF2 ;SWI3
FFF2 E0 12 DW reset
FFF4 ;SWI2
FFF4 E0 12 DW reset
FFF6 ;FIRQ
FFF6 E0 12 DW reset
FFF8 ;IRQ
FFF8 E0 12 DW reset
FFFA ;SWI
FFFA E0 12 DW reset
FFFC ;NMI
FFFC E0 12 DW reset
FFFE ;RES
FFFE E0 12 DW reset
Q_ADD: 0000 DEFINED AT LINE 6
> USED AT LINE 95
> USED AT LINE 102
> USED AT LINE 113
> USED AT LINE 117
> USED AT LINE 125
> USED AT LINE 218
> USED AT LINE 227
> USED AT LINE 228
> USED AT LINE 229
> USED AT LINE 230
> USED AT LINE 231
> USED AT LINE 232
> USED AT LINE 233
> USED AT LINE 234
> USED AT LINE 235
> USED AT LINE 236
Q_KEY: 0002 DEFINED AT LINE 7
> USED AT LINE 246
> USED AT LINE 248
Q_HEXCNT: 0003 DEFINED AT LINE 8
> USED AT LINE 65
> USED AT LINE 75
Q_HEXADD: 0004 DEFINED AT LINE 9
> USED AT LINE 67
RESET: E012 DEFINED AT LINE 22
> USED AT LINE 16
> USED AT LINE 361
> USED AT LINE 363
> USED AT LINE 365
> USED AT LINE 367
> USED AT LINE 369
> USED AT LINE 371
> USED AT LINE 373
> USED AT LINE 375
WARM: E021 DEFINED AT LINE 31
MAINCRLF: E034 DEFINED AT LINE 34
> USED AT LINE 61
> USED AT LINE 90
> USED AT LINE 108
MAIN: E037 DEFINED AT LINE 36
> USED AT LINE 82
> USED AT LINE 145
> USED AT LINE 185
MAINSHORT: E03A DEFINED AT LINE 38
> USED AT LINE 43
> USED AT LINE 45
WHAT: E063 DEFINED AT LINE 58
M_HEX: E06F DEFINED AT LINE 63
> USED AT LINE 41
> USED AT LINE 86
M_HEX_LOOP: E080 DEFINED AT LINE 71
> USED AT LINE 76
M_HEX_WAITEND: E08E DEFINED AT LINE 79
> USED AT LINE 84
> USED AT LINE 87
M_HEXEND: E09F DEFINED AT LINE 88
> USED AT LINE 70
M_MEM: E0A1 DEFINED AT LINE 93
> USED AT LINE 50
M_MEM_LINE: E0A6 DEFINED AT LINE 96
> USED AT LINE 112
> USED AT LINE 115
> USED AT LINE 120
M_MEM_BACK: E0D7 DEFINED AT LINE 116
> USED AT LINE 110
M_DUMP: E0E0 DEFINED AT LINE 123
> USED AT LINE 52
M_DUMP_LINE: E0E8 DEFINED AT LINE 127
> USED AT LINE 143
> USED AT LINE 149
M_DUMP_LOOP: E0F3 DEFINED AT LINE 132
> USED AT LINE 138
M_DUMP_WAIT: E103 DEFINED AT LINE 140
> USED AT LINE 147
M_GO: E11A DEFINED AT LINE 151
> USED AT LINE 54
M_USER: E121 DEFINED AT LINE 155
> USED AT LINE 56
M_U_FIND: E142 DEFINED AT LINE 163
> USED AT LINE 184
M_U_NEXT: E166 DEFINED AT LINE 182
> USED AT LINE 166
> USED AT LINE 169
> USED AT LINE 172
> USED AT LINE 175
PRINTX: E16F DEFINED AT LINE 187
> USED AT LINE 20
> USED AT LINE 98
> USED AT LINE 128
PRINT2: E176 DEFINED AT LINE 192
> USED AT LINE 19
> USED AT LINE 103
> USED AT LINE 134
> USED AT LINE 189
PRINTHEX: E183 DEFINED AT LINE 201
> USED AT LINE 198
> USED AT LINE 225
PH2: E18C DEFINED AT LINE 206
> USED AT LINE 203
GETADDR: E191 DEFINED AT LINE 210
> USED AT LINE 94
> USED AT LINE 124
> USED AT LINE 152
GET4: E19E DEFINED AT LINE 216
> USED AT LINE 213
GET4X: E1A3 DEFINED AT LINE 219
> USED AT LINE 106
> USED AT LINE 238
GET4OK: E1A9 DEFINED AT LINE 223
> USED AT LINE 221
GETHEX2: E1C6 DEFINED AT LINE 240
> USED AT LINE 64
> USED AT LINE 68
> USED AT LINE 72
> USED AT LINE 252
> USED AT LINE 254
GETHEX4: E1D5 DEFINED AT LINE 251
> USED AT LINE 66
GETHEX: E1E4 DEFINED AT LINE 260
> USED AT LINE 220
> USED AT LINE 241
> USED AT LINE 247
GHB: E1EB DEFINED AT LINE 264
> USED AT LINE 274
> USED AT LINE 281
> USED AT LINE 283
GH1: E1EE DEFINED AT LINE 267
> USED AT LINE 263
GH2: E1F5 DEFINED AT LINE 272
> USED AT LINE 269
GH3: E200 DEFINED AT LINE 279
> USED AT LINE 276
ACIA: 83FE DEFINED AT LINE 290
> USED AT LINE 291
> USED AT LINE 292
> USED AT LINE 293
ACIAC: 83FE DEFINED AT LINE 291
> USED AT LINE 26
ACIAS: 83FE DEFINED AT LINE 292
> USED AT LINE 310
> USED AT LINE 343
ACIAD: 83FF DEFINED AT LINE 293
> USED AT LINE 313
> USED AT LINE 346
ACIA_TDRE: 0002 DEFINED AT LINE 295
ACIA_RDRF: 0001 DEFINED AT LINE 296
STROUT: E20B DEFINED AT LINE 299
> USED AT LINE 179
> USED AT LINE 305
SOUT2: E210 DEFINED AT LINE 303
> USED AT LINE 301
SEROUT: E216 DEFINED AT LINE 307
> USED AT LINE 18
> USED AT LINE 78
> USED AT LINE 136
> USED AT LINE 205
> USED AT LINE 208
> USED AT LINE 304
> USED AT LINE 319
> USED AT LINE 321
> USED AT LINE 325
> USED AT LINE 327
> USED AT LINE 339
SEROUTL: E218 DEFINED AT LINE 309
> USED AT LINE 312
PCRLF: E225 DEFINED AT LINE 317
> USED AT LINE 35
> USED AT LINE 97
> USED AT LINE 126
> USED AT LINE 139
> USED AT LINE 180
PROMPT: E22F DEFINED AT LINE 323
> USED AT LINE 37
PRIMM: E239 DEFINED AT LINE 330
> USED AT LINE 21
> USED AT LINE 32
> USED AT LINE 59
> USED AT LINE 99
> USED AT LINE 104
> USED AT LINE 129
> USED AT LINE 156
> USED AT LINE 211
PRIMM1: E23D DEFINED AT LINE 333
> USED AT LINE 340
PRIMM2: E245 DEFINED AT LINE 338
> USED AT LINE 335
SERIN: E24A DEFINED AT LINE 342
> USED AT LINE 17
> USED AT LINE 39
> USED AT LINE 80
> USED AT LINE 141
> USED AT LINE 261
> USED AT LINE 345
MON_END: E255 DEFINED AT LINE 349
EOL: 0004 DEFINED AT LINE 18 IN basic.a09
> USED AT LINE 127 IN basic.a09
> USED AT LINE 232 IN basic.a09
> USED AT LINE 235 IN basic.a09
> USED AT LINE 238 IN basic.a09
> USED AT LINE 241 IN basic.a09
> USED AT LINE 244 IN basic.a09
> USED AT LINE 560 IN basic.a09
> USED AT LINE 563 IN basic.a09
> USED AT LINE 566 IN basic.a09
> USED AT LINE 568 IN basic.a09
> USED AT LINE 966 IN basic.a09
> USED AT LINE 1027 IN basic.a09
> USED AT LINE 1030 IN basic.a09
> USED AT LINE 1033 IN basic.a09
> USED AT LINE 1036 IN basic.a09
> USED AT LINE 1039 IN basic.a09
> USED AT LINE 1042 IN basic.a09
> USED AT LINE 1045 IN basic.a09
> USED AT LINE 1048 IN basic.a09
> USED AT LINE 1051 IN basic.a09
> USED AT LINE 1054 IN basic.a09
> USED AT LINE 1057 IN basic.a09
> USED AT LINE 1060 IN basic.a09
> USED AT LINE 1063 IN basic.a09
> USED AT LINE 1066 IN basic.a09
> USED AT LINE 1069 IN basic.a09
> USED AT LINE 1071 IN basic.a09
ETX: 0003 DEFINED AT LINE 19 IN basic.a09
SPACE: 0020 DEFINED AT LINE 20 IN basic.a09
CR: 000D DEFINED AT LINE 21 IN basic.a09
> USED AT LINE 227
LF: 000A DEFINED AT LINE 22 IN basic.a09
> USED AT LINE 227
BS: 0008 DEFINED AT LINE 23 IN basic.a09
CAN: 0018 DEFINED AT LINE 24 IN basic.a09
BELL: 0007 DEFINED AT LINE 25 IN basic.a09
FILL: 0000 DEFINED AT LINE 26 IN basic.a09
DEL: 007F DEFINED AT LINE 27 IN basic.a09
BSIZE: 0049 DEFINED AT LINE 28 IN basic.a09
> USED AT LINE 48 IN basic.a09
STKCUS: 0030 DEFINED AT LINE 29 IN basic.a09
BACIA: 83FE DEFINED AT LINE 31
> USED AT LINE 32 IN basic.a09
> USED AT LINE 33 IN basic.a09
> USED AT LINE 34 IN basic.a09
> USED AT LINE 35 IN basic.a09
RMCR: 83FE DEFINED AT LINE 32 IN basic.a09
> USED AT LINE 1108 IN basic.a09
TRCS: 83FE DEFINED AT LINE 33 IN basic.a09
> USED AT LINE 1091
> USED AT LINE 1098
> USED AT LINE 1110 IN basic.a09
RECEV: 83FF DEFINED AT LINE 34 IN basic.a09
> USED AT LINE 1087 IN basic.a09
> USED AT LINE 1101 IN basic.a09
TRANS: 83FF DEFINED AT LINE 35 IN basic.a09
> USED AT LINE 1095 IN basic.a09
CNTL1: 0003 DEFINED AT LINE 36 IN basic.a09
CNTL2: 0015 DEFINED AT LINE 37 IN basic.a09
RDRF: 0001 DEFINED AT LINE 38 IN basic.a09
ORFE: 0020 DEFINED AT LINE 39 IN basic.a09
TDRE: 0002 DEFINED AT LINE 40 IN basic.a09
LORAM: 0080 DEFINED AT LINE 43 IN basic.a09
BUFFER: 0200 DEFINED AT LINE 44 IN basic.a09
> USED AT LINE 48 IN basic.a09
> USED AT LINE 49 IN basic.a09
RAMSIZ: 2000 DEFINED AT LINE 45 IN basic.a09
> USED AT LINE 49 IN basic.a09
ROMADR: F000 DEFINED AT LINE 46 IN basic.a09
RAMBEG: 0249 DEFINED AT LINE 48 IN basic.a09
RAMEND: 2200 DEFINED AT LINE 49 IN basic.a09
RAMPAT: AA0F DEFINED AT LINE 51 IN basic.a09
ROMPAT: F055 DEFINED AT LINE 52 IN basic.a09
USRBAS: 0006 DEFINED AT LINE 56 IN basic.a09
> USED AT LINE 85 IN basic.a09
> USED AT LINE 94 IN basic.a09
> USED AT LINE 139
> USED AT LINE 571
> USED AT LINE 974 IN basic.a09
USRTOP: 0008 DEFINED AT LINE 57 IN basic.a09
> USED AT LINE 86 IN basic.a09
> USED AT LINE 112 IN basic.a09
> USED AT LINE 135 IN basic.a09
> USED AT LINE 148
> USED AT LINE 158 IN basic.a09
> USED AT LINE 180 IN basic.a09
> USED AT LINE 182 IN basic.a09
> USED AT LINE 183 IN basic.a09
> USED AT LINE 187 IN basic.a09
> USED AT LINE 190
> USED AT LINE 313
> USED AT LINE 572
> USED AT LINE 1000
STKLIM: 000A DEFINED AT LINE 58 IN basic.a09
> USED AT LINE 87
> USED AT LINE 113 IN basic.a09
> USED AT LINE 159 IN basic.a09
> USED AT LINE 184 IN basic.a09
> USED AT LINE 188 IN basic.a09
> USED AT LINE 520 IN basic.a09
STKTOP: 000C DEFINED AT LINE 59 IN basic.a09
> USED AT LINE 78
> USED AT LINE 82
> USED AT LINE 91
> USED AT LINE 406 IN basic.a09
> USED AT LINE 969
CURSOR: 000E DEFINED AT LINE 60 IN basic.a09
> USED AT LINE 95 IN basic.a09
> USED AT LINE 134 IN basic.a09
> USED AT LINE 141 IN basic.a09
> USED AT LINE 193 IN basic.a09
> USED AT LINE 201 IN basic.a09
> USED AT LINE 327 IN basic.a09
> USED AT LINE 332 IN basic.a09
> USED AT LINE 336 IN basic.a09
> USED AT LINE 429 IN basic.a09
> USED AT LINE 431 IN basic.a09
> USED AT LINE 551 IN basic.a09
> USED AT LINE 794 IN basic.a09
> USED AT LINE 797 IN basic.a09
> USED AT LINE 817 IN basic.a09
> USED AT LINE 824
> USED AT LINE 932 IN basic.a09
> USED AT LINE 948 IN basic.a09
> USED AT LINE 982 IN basic.a09
> USED AT LINE 985
> USED AT LINE 989 IN basic.a09
> USED AT LINE 997 IN basic.a09
> USED AT LINE 998 IN basic.a09
> USED AT LINE 1022
SAVESP: 0010 DEFINED AT LINE 61 IN basic.a09
> USED AT LINE 143 IN basic.a09
> USED AT LINE 152 IN basic.a09
> USED AT LINE 154 IN basic.a09
> USED AT LINE 157
> USED AT LINE 191
> USED AT LINE 197 IN basic.a09
> USED AT LINE 517
> USED AT LINE 518 IN basic.a09
LINENB: 0012 DEFINED AT LINE 62 IN basic.a09
> USED AT LINE 97 IN basic.a09
> USED AT LINE 248 IN basic.a09
> USED AT LINE 310
> USED AT LINE 311 IN basic.a09
> USED AT LINE 317 IN basic.a09
> USED AT LINE 826 IN basic.a09
> USED AT LINE 830 IN basic.a09
SCRTCH: 0014 DEFINED AT LINE 63 IN basic.a09
> USED AT LINE 132 IN basic.a09
> USED AT LINE 160
> USED AT LINE 204
> USED AT LINE 206 IN basic.a09
> USED AT LINE 337 IN basic.a09
> USED AT LINE 338
> USED AT LINE 342 IN basic.a09
> USED AT LINE 349 IN basic.a09
> USED AT LINE 945
> USED AT LINE 959 IN basic.a09
CHAR: 0016 DEFINED AT LINE 64 IN basic.a09
> USED AT LINE 151 IN basic.a09
> USED AT LINE 155 IN basic.a09
> USED AT LINE 181 IN basic.a09
> USED AT LINE 192 IN basic.a09
> USED AT LINE 196 IN basic.a09
> USED AT LINE 203 IN basic.a09
> USED AT LINE 207 IN basic.a09
> USED AT LINE 209 IN basic.a09
> USED AT LINE 335
> USED AT LINE 343 IN basic.a09
> USED AT LINE 345 IN basic.a09
> USED AT LINE 352
> USED AT LINE 903
> USED AT LINE 907 IN basic.a09
> USED AT LINE 911 IN basic.a09
ZONE: 0018 DEFINED AT LINE 65 IN basic.a09
> USED AT LINE 225 IN basic.a09
> USED AT LINE 869 IN basic.a09
> USED AT LINE 1081
MODE: 0019 DEFINED AT LINE 66 IN basic.a09
> USED AT LINE 92 IN basic.a09
> USED AT LINE 98 IN basic.a09
> USED AT LINE 280 IN basic.a09
> USED AT LINE 301 IN basic.a09
RESRVD: 001A DEFINED AT LINE 67 IN basic.a09
LOEND: 001B DEFINED AT LINE 68 IN basic.a09
BASIC: E300 DEFINED AT LINE 76 IN basic.a09
WARMS: E30D DEFINED AT LINE 78
SETUP: E315 DEFINED AT LINE 81
> USED AT LINE 76 IN basic.a09
SET03: E319 DEFINED AT LINE 82
CLEAR: E31F DEFINED AT LINE 84
> USED AT LINE 1067 IN basic.a09
CLR02: E326 DEFINED AT LINE 87
WMS05: E328 DEFINED AT LINE 88
> USED AT LINE 80 IN basic.a09
CMDB: E331 DEFINED AT LINE 91
> USED AT LINE 110 IN basic.a09
> USED AT LINE 255 IN basic.a09
CMDE: E33D DEFINED AT LINE 96
> USED AT LINE 108 IN basic.a09
> USED AT LINE 124 IN basic.a09
CMD01: E34B DEFINED AT LINE 102
> USED AT LINE 99 IN basic.a09
CMD02: E361 DEFINED AT LINE 111
> USED AT LINE 104 IN basic.a09
CMD03: E36E DEFINED AT LINE 117
> USED AT LINE 115 IN basic.a09
CMD04: E373 DEFINED AT LINE 119
CMD05: E380 DEFINED AT LINE 125
> USED AT LINE 105 IN basic.a09
> USED AT LINE 118 IN basic.a09
> USED AT LINE 122 IN basic.a09
VSTR: E383 DEFINED AT LINE 126
EDITOR: E38E DEFINED AT LINE 130
> USED AT LINE 123 IN basic.a09
ED00: E3A2 DEFINED AT LINE 139
> USED AT LINE 136 IN basic.a09
ED01: E3A4 DEFINED AT LINE 140
> USED AT LINE 138 IN basic.a09
ED02: E3AF DEFINED AT LINE 145
> USED AT LINE 147 IN basic.a09
ED03: E3B5 DEFINED AT LINE 148
> USED AT LINE 156 IN basic.a09
ED35: E3C7 DEFINED AT LINE 157
> USED AT LINE 149 IN basic.a09
ED04: E3CD DEFINED AT LINE 160
> USED AT LINE 142 IN basic.a09
ED05: E3D1 DEFINED AT LINE 162
> USED AT LINE 165 IN basic.a09
ED55: E3DE DEFINED AT LINE 170
> USED AT LINE 167 IN basic.a09
ED06: E3E2 DEFINED AT LINE 172
> USED AT LINE 176 IN basic.a09
ED07: E406 DEFINED AT LINE 190
> USED AT LINE 186 IN basic.a09
ED08: E408 DEFINED AT LINE 191
> USED AT LINE 199 IN basic.a09
ED09: E41A DEFINED AT LINE 200
> USED AT LINE 194 IN basic.a09
ED10: E422 DEFINED AT LINE 204
> USED AT LINE 211 IN basic.a09
PUTS01: E433 DEFINED AT LINE 215
> USED AT LINE 219 IN basic.a09
PUTSTR: E438 DEFINED AT LINE 217
> USED AT LINE 90 IN basic.a09
> USED AT LINE 224 IN basic.a09
> USED AT LINE 253 IN basic.a09
> USED AT LINE 942 IN basic.a09
> USED AT LINE 1012 IN basic.a09
CRLF: E43F DEFINED AT LINE 223
> USED AT LINE 88
> USED AT LINE 93 IN basic.a09
> USED AT LINE 245
> USED AT LINE 254 IN basic.a09
> USED AT LINE 258
> USED AT LINE 285 IN basic.a09
> USED AT LINE 863 IN basic.a09
> USED AT LINE 943 IN basic.a09
> USED AT LINE 1015 IN basic.a09
CRLFST: E447 DEFINED AT LINE 227
ERRORF: E44E DEFINED AT LINE 230
> USED AT LINE 189 IN basic.a09
> USED AT LINE 756 IN basic.a09
> USED AT LINE 823 IN basic.a09
ERRORS: E456 DEFINED AT LINE 233
> USED AT LINE 125
> USED AT LINE 419
> USED AT LINE 539 IN basic.a09
> USED AT LINE 751
> USED AT LINE 777 IN basic.a09
> USED AT LINE 785 IN basic.a09
> USED AT LINE 790 IN basic.a09
> USED AT LINE 861 IN basic.a09
> USED AT LINE 883 IN basic.a09
> USED AT LINE 956
> USED AT LINE 994 IN basic.a09
ERRORR: E45F DEFINED AT LINE 236
> USED AT LINE 116 IN basic.a09
> USED AT LINE 315 IN basic.a09
> USED AT LINE 820
BREAK: E467 DEFINED AT LINE 239
> USED AT LINE 1079 IN basic.a09
ER01: E474 DEFINED AT LINE 245
> USED AT LINE 230
> USED AT LINE 233
> USED AT LINE 236
> USED AT LINE 239
GL00: E48E DEFINED AT LINE 258
> USED AT LINE 275 IN basic.a09
GETLIN: E490 DEFINED AT LINE 259
> USED AT LINE 102
> USED AT LINE 935 IN basic.a09
GL03: E493 DEFINED AT LINE 260
> USED AT LINE 264 IN basic.a09
> USED AT LINE 271 IN basic.a09
> USED AT LINE 279 IN basic.a09
> USED AT LINE 292 IN basic.a09
GL04: E4A7 DEFINED AT LINE 269
> USED AT LINE 266 IN basic.a09
GL02: E4A9 DEFINED AT LINE 270
> USED AT LINE 268 IN basic.a09
> USED AT LINE 299 IN basic.a09
> USED AT LINE 302 IN basic.a09
GL05: E4AE DEFINED AT LINE 272
> USED AT LINE 262 IN basic.a09
GL06: E4C7 DEFINED AT LINE 284
> USED AT LINE 281 IN basic.a09
GL08: E4CE DEFINED AT LINE 287
> USED AT LINE 283 IN basic.a09
GL07: E4D6 DEFINED AT LINE 291
> USED AT LINE 273 IN basic.a09
GL09: E4EB DEFINED AT LINE 300
> USED AT LINE 277 IN basic.a09
REM00: E4F1 DEFINED AT LINE 305
> USED AT LINE 308 IN basic.a09
REM: E4F3 DEFINED AT LINE 306
> USED AT LINE 805 IN basic.a09
> USED AT LINE 1052 IN basic.a09
ENDSMT: E4F9 DEFINED AT LINE 309
> USED AT LINE 952 IN basic.a09
ENDS02: E4FC DEFINED AT LINE 310
> USED AT LINE 547 IN basic.a09
> USED AT LINE 798 IN basic.a09
> USED AT LINE 832 IN basic.a09
> USED AT LINE 876 IN basic.a09
> USED AT LINE 1023 IN basic.a09
REM05: E502 DEFINED AT LINE 313
> USED AT LINE 975 IN basic.a09
NXTLIN: E509 DEFINED AT LINE 316
> USED AT LINE 314 IN basic.a09
> USED AT LINE 812 IN basic.a09
> USED AT LINE 828 IN basic.a09
MSLINE: E50D DEFINED AT LINE 318
> USED AT LINE 109 IN basic.a09
> USED AT LINE 804 IN basic.a09
REM09: E516 DEFINED AT LINE 322
> USED AT LINE 312 IN basic.a09
IMPLET: E517 DEFINED AT LINE 323
> USED AT LINE 320 IN basic.a09
IFAN: E51A DEFINED AT LINE 326
> USED AT LINE 319 IN basic.a09
FAN00: E521 DEFINED AT LINE 329 IN basic.a09
> USED AT LINE 357 IN basic.a09
> USED AT LINE 553 IN basic.a09
FAN04: E52C DEFINED AT LINE 335
> USED AT LINE 331 IN basic.a09
FAN05: E532 DEFINED AT LINE 338
> USED AT LINE 347 IN basic.a09
FAN07: E54D DEFINED AT LINE 352
> USED AT LINE 340 IN basic.a09
FAN08: E54F DEFINED AT LINE 353
> USED AT LINE 355 IN basic.a09
NXTNSP: E559 DEFINED AT LINE 360
> USED AT LINE 363 IN basic.a09
SKIPSP: E55B DEFINED AT LINE 361
> USED AT LINE 106 IN basic.a09
> USED AT LINE 131 IN basic.a09
> USED AT LINE 306
> USED AT LINE 326
> USED AT LINE 395
> USED AT LINE 413 IN basic.a09
> USED AT LINE 423 IN basic.a09
> USED AT LINE 436
> USED AT LINE 449
> USED AT LINE 536 IN basic.a09
> USED AT LINE 550
> USED AT LINE 598 IN basic.a09
> USED AT LINE 605 IN basic.a09
> USED AT LINE 615 IN basic.a09
> USED AT LINE 646 IN basic.a09
> USED AT LINE 655 IN basic.a09
> USED AT LINE 672
> USED AT LINE 745 IN basic.a09
> USED AT LINE 757
> USED AT LINE 774 IN basic.a09
> USED AT LINE 787 IN basic.a09
> USED AT LINE 838
> USED AT LINE 854
> USED AT LINE 872 IN basic.a09
> USED AT LINE 936
> USED AT LINE 949 IN basic.a09
> USED AT LINE 960 IN basic.a09
> USED AT LINE 986 IN basic.a09
TSTHEX: E562 DEFINED AT LINE 367
View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment