-
-
Save maly/144f0784f68d7feb9fda2bbedb9fb35e to your computer and use it in GitHub Desktop.
lda test | |
lda <test | |
lda >test | |
.org 100 | |
test: db 0 | |
.include a0.a09 | |
lda glob | |
lda loc | |
lda ACIA_BASE | |
lda kokot |
.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 | |
:0C006400000001029665B60000B6000026 | |
: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 | |
0065 ; | |
0065 .BLOCK | |
0065 00 GLOB: DB 0 | |
0066 01 LOC: DB 1 | |
0067 02 EXT: DB 2 | |
0068 ACIA_BASE: EQU 83FCh | |
0068 .ENDBLOCK | |
0068 ; | |
0068 96 65 LDA glob | |
006A B6 00 00 LDA loc | |
006D B6 00 00 LDA ACIA_BASE | |
TEST: 0064 DEFINED AT LINE 6 | |
> USED AT LINE 1 | |
> USED AT LINE 2 | |
> USED AT LINE 3 | |
GLOB: 0065 DEFINED AT LINE 3 IN a0.a09 | |
> USED AT LINE 10 | |
LOC: 0066 DEFINED AT LINE 4 IN a0.a09 | |
> USED AT LINE 11 | |
EXT: 0067 DEFINED AT LINE 5 IN a0.a09 | |
ACIA_BASE: 83FC DEFINED AT LINE 7 | |
> USED AT LINE 12 |
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 |
.block | |
@glob: db 0 | |
loc: db 1 | |
@ext: db 2 | |
ACIA_BASE EQU 83FCh | |
.endblock |
{} |
:03000000000102FA | |
:00000001FF |
0000 .BLOCK | |
0000 00 GLOB: DB 0 | |
0001 01 LOC: DB 1 | |
0002 02 EXT: DB 2 | |
0003 ACIA_BASE: EQU 83FCh | |
0003 .ENDBLOCK | |
GLOB: 0000 DEFINED AT LINE 3 | |
LOC: 0001 DEFINED AT LINE 4 | |
EXT: 0002 DEFINED AT LINE 5 | |
ACIA_BASE: 83FC DEFINED AT LINE 7 |
{} |
; 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 |
; Monitor vectors: | |
MRESET EQU $E000 | |
MSERIN EQU $E003 | |
MSEROUT EQU $E006 | |
MPRINT2 EQU $E009 | |
MPRINTX EQU $E00C | |
MPRIMM EQU $E00F | |
.ORG $100 | |
.ENT $ | |
.PRAGMA 6309 | |
.pragma srec | |
; test 20 | |
; here are your space: | |
TESTMOD: | |
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 | |
COMD | |
CMPB 1,s | |
PULS d,pc | |
biand a.7,100.5 |
{} |
:10010000BDE00F48656C6C6F20666F6C6B730D0AF9 | |
:1001100000BD01482719BDE00F0D0A48692066722D | |
:100120006F6D204844363330390D0A007EE000BD43 | |
:10013000E00F0D0A48692066726F6D204D43363816 | |
:1001400030390D0A007EE00034061043E161358647 | |
:00000001FF |
:10010000BD01372719BDE00F0D0A48692066726FDF | |
:100110006D204844363330390D0A007EE000BDE0E2 | |
:100120000F0D0A48692066726F6D204D43363830D6 | |
:10013000390D0A007EE00034061043E16135861176 | |
:03014000316F64B8 | |
: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 |
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 .PRAGMA 6309 | |
0100 .PRAGMA srec | |
0100 ; test 20 | |
0100 ; here are your space: | |
0100 TESTMOD: | |
0100 BD 01 37 JSR hdtest | |
0103 27 19 BEQ m68 | |
0105 BD E0 0F JSR MPRIMM | |
0108 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 | |
011B 7E E0 00 JMP MRESET | |
011E M68: | |
011E BD E0 0F JSR MPRIMM | |
0121 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 | |
0134 7E E0 00 JMP MRESET | |
0137 HDTEST: | |
0137 34 06 PSHS d | |
0139 ;FDB $1043 | |
0139 10 43 COMD | |
013B E1 61 CMPB 1,s | |
013D 35 86 PULS d,pc | |
013F 11 31 6F 64 BIAND a,7,5,100 | |
MRESET: E000 DEFINED AT LINE 2 | |
> USED AT LINE 23 | |
> USED AT LINE 27 | |
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 21 | |
> USED AT LINE 25 | |
TESTMOD: 0100 DEFINED AT LINE 18 | |
M68: 011E DEFINED AT LINE 24 | |
> USED AT LINE 20 | |
HDTEST: 0137 DEFINED AT LINE 29 | |
> USED AT LINE 19 |
S1130100BD01372719BDE00F0D0A48692066726FDC | |
S11301106D204844363330390D0A007EE000BDE0DF | |
S11301200F0D0A48692066726F6D204D43363830D3 | |
S1130130390D0A007EE00034061043E16135861173 | |
S1060140316F64B5 | |
S9030100FB |
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 |
; Monitor vectors: | |
MRESET EQU $E000 | |
MSERIN EQU $E003 | |
MSEROUT EQU $E006 | |
MPRINT2 EQU $E009 | |
MPRINTX EQU $E00C | |
MPRIMM EQU $E00F | |
.ORG $100 | |
.ENT $ | |
.PRAGMA 6309 | |
; test 20 | |
; here are your space: | |
TESTMOD: | |
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 | |
COMD | |
CMPB 1,s | |
PULS d,pc | |
biand a.7,100.5 |
{} |
;TITLE 6809 eForth | |
; $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 $4000 ;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 COLDD ;beginning of cold boot area | |
SETDP 0 | |
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 | |
; BYE ( -- ) | |
; Exit eForth. | |
FDB BYE,0 | |
L100 FCB 3,"BYE" | |
BYE sync | |
; ?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 | |
swi3 | |
bcc qrx1 | |
stx ,--s | |
pulu pc | |
qrx1 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 swi2 | |
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,'$','"','|' | |
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,'.','"','|' | |
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<<8,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,'$','"' | |
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,'.','"' | |
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<<8,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<<8,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 | |
;=============================================================== |
{} |
;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 13 ;line feed | |
CRR EQU 10 ;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 $e000 ;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 $ | |
.engine kilo | |
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 | |
bne qrx1 ;!!!!!!!!!!!!!!!!!!! BEQ | |
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" | |
FCB 34 ;'"' | |
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,"$,",34 | |
STRCQ jsr DOLST | |
FDB DOLIT,34,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",34 | |
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 | |
;=============================================================== |
{"123":true,"124":true,"185":true} |
:10FFF000E000E000E000E000E000E000E000E00001 | |
:0DE0000010CE6E60108E6F70CEFC6D3780FC | |
:10E015006E606F70E0ADE0CCF198F155E0CCF300A7 | |
:10E02500000A00000000000000006E700000F2B25F | |
:08E03500EC8200000000000075 | |
:0AE04D0000000000FC956C00FC656B | |
:10E080003406F683FEC40227F9B783FF350639B696 | |
:10E0900083FE84012703B683FF39E0A20000034218 | |
:10E0A00059457EE000E0ADE09E033F52588E0000EF | |
:10E0B000BDE08F2604AFE337801F894FEDE3301FAB | |
:10E0C000AFE33780E0CCE0A903545821ECE1C1FF75 | |
:10E0D0002602C6201F98BDE0803780E0E3E0C80339 | |
:10E0E00021494F3780E0EFE0DF45646F4C495437FA | |
:10E0F0000634063780E100E0E946646F434C49543A | |
:10E1000037041D34063780E112E0F946646F4C494C | |
:10E110005354EFA335403780E121E10B446E65781D | |
:10E1200074ECA48300012506EDA4EEC437803122EF | |
:10E1300033423780E140E11C473F6272616E6368A1 | |
:10E14000ECE1270433423780EEC43780E157E138F1 | |
:10E15000466272616E6368EEC43780E167E1500722 | |
:10E160004558454355544539E171E15F04455849E7 | |
:10E1700054EEA13780E17BE16C012135103506EDCD | |
:10E18000843780E189E1790140ECF4EDE43780E106 | |
:10E1900096E18702432135103506E7843780E1A5F3 | |
:10E1A000E193024340E6F44FEDE43780E1B4E1A2AD | |
:10E1B0000352504034203780E1C0E1B00352502177 | |
:10E1C00035203780E1CBE1BC02523EECA13406376A | |
:10E1D00080E1DEE1C80149E1DEE1D5025240ECA474 | |
:10E1E00034063780E1EBE1DB023E523506EDA33722 | |
:10E1F00080E1F9E1E8035350401F40EDE33780E24E | |
:10E2000007E1F50353502110EEE43780E215E203F5 | |
:10E210000444524F5032623780E221E210034455E9 | |
:10E2200050ECE434063780E230E21D04535741508D | |
:10E23000ECE4AE62ED62AFE43780E243E22B044FE0 | |
:10E24000564552EC6234063780E250E23E02303CE2 | |
:10E25000E6E41D1F89EDE43780E260E24D02303DC7 | |
:10E260008EFFFFECE427038E0000AFE43780E276F8 | |
:10E27000E25D03414E44ECE1A4E4E461EDE4378067 | |
:10E28000E287E272024F52ECE1AAE4EA61EDE43780 | |
:10E2900080E299E28403584F52ECE1A8E4E861ED92 | |
:10E2A000E43780E2AAE29502442BEC62E366ED6675 | |
:10E2B000ECE4E965A964ED6432643780E2C3E2A767 | |
:10E2C00002442DBDE112E619E2AAE171E2D4E2C0F6 | |
:10E2D00003554D2BECE4E362ED62CC0000C900ED88 | |
:10E2E000E43780E2EFE2D047646F434F4E5354EC83 | |
:10E2F000F4EDE43780E2FBE2E70130BDE2EF00003D | |
:10E30000E306E2F90131BDE2EF0001E311E30401AC | |
:10E3100032BDE2EF0002E31DE30F022D31BDE2EF5B | |
:10E32000FFFFE32CE31A45646F564152BDE112E151 | |
:10E33000CBE1713780E33CE326025550BDE3336FF8 | |
:10E3400080E34CE33945646F55534552BDE112E11A | |
:10E35000CBE189E33CE189E5CFE171ECF4F3E33F04 | |
:10E36000EDE43780E36CE34503535030BDE35B00DD | |
:10E3700008E379E36803525030BDE35B000AE388A9 | |
:10E38000E37505273F4B4559BDE35B000CE397E37D | |
:10E39000820527454D4954BDE35B000EE3A8E39198 | |
:10E3A0000727455850454354BDE35B0010E3B6E3EF | |
:10E3B000A00427544150BDE35B0012E3C5E3B1055F | |
:10E3C000274543484FBDE35B0014E3D6E3BF07276F | |
:10E3D00050524F4D5054BDE35B0016E3E4E3CE04CE | |
:10E3E00042415345BDE35B0018E3F1E3DF43746D45 | |
:10E3F00070BDE35B001AE3FFE3ED045350414EBDF3 | |
:10E40000E35B001CE40CE3FA033E494EBDE35B0012 | |
:10E410001EE41AE4080423544942BDE35B0020E4EF | |
:10E4200027E41503435350BDE35B0024E436E423A3 | |
:10E4300005274556414CBDE35B0026E447E4300721 | |
:10E44000274E554D424552BDE35B0028E454E43F5E | |
:10E4500003484C44BDE35B002AE465E450074841AF | |
:10E460004E444C4552BDE35B002CE476E45D07432B | |
:10E470004F4E54455854BDE35B002EE487E46E07CD | |
:10E4800043555252454E54BDE35B0040E493E47F54 | |
:10E49000024350BDE35B0044E49FE490024E50BD54 | |
:10E4A000E35B0046E4ADE49C044C415354BDE35BA4 | |
:10E4B0000048E4BCE4A845646F564F43BDE112E157 | |
:10E4C000CBE476E17BE171E4D1E4B605464F5254EA | |
:10E4D00048BDE112E4BC00000000E4E3E4CB043FEB | |
:10E4E000445550BDE112E221E140E4EEE221E17148 | |
:10E4F000E4F8E4DE03524F54BDE112E1EBE230E117 | |
:10E50000CBE230E171E50FE4F4053244524F50BDE7 | |
:10E51000E112E215E215E171E521E5090432445505 | |
:10E5200050BDE112E243E243E171E535E51C064CE2 | |
:10E530005348494654AEE1270AECE45849301F26B7 | |
:10E54000FAEDE43780E550E52E065253484946542B | |
:10E55000AEE1270AECE44456301F26FAEDE437809A | |
:10E56000E567E549023E3CE6E4A661EDE43780E577 | |
:10E5700078E564043235362FE6E44FEDE43780E584 | |
:10E5800088E573043235362AA6615FEDE43780E50D | |
:10E5900096E58302312BECE4C30001EDE43780E51E | |
:10E5A000A6E59302312DECE4830001EDE43780E52C | |
:10E5B000B6E5A302322A686169603780E5C3E5B336 | |
:10E5C00002322F676066613780E5CFE5C0012BEC32 | |
:10E5D000E1E3E4EDE43780E5DFE5CD034E4F54633E | |
:10E5E000E463613780ECE44353EDE43780E5F8E51C | |
:10E5F000DB064E4547415445CC0000A3E4EDE4372B | |
:10E60000806061260460E4378063E43780E619E5C2 | |
:10E61000F107444E4547415445CC0000A362ED62EA | |
:10E62000CC0000E261A2E4EDE43780E631E61101BE | |
:10E630002DEC62A3E1EDE43780E641E62F03414291 | |
:10E6400053BDE112E221E250E140E64EE5F8E1710E | |
:10E65000E656E63D013D8EFFFF350610A3E4270395 | |
:10E660008E0000AFE43780E66EE65402553C8EFF24 | |
:10E67000FF350610A3E422038E0000AFE43780E6E6 | |
:10E6800085E66B013C8EFFFF350610A3E42E038E5A | |
:10E690000000AFE43780E69EE683034D4158BDE1BC | |
:10E6A00012E521E685E140E6ABE230E215E171E6F4 | |
:10E6B000B7E69A034D494EBDE112E521E230E68509 | |
:10E6C000E140E6C6E230E215E171E6D5E6B3065771 | |
:10E6D000495448494EBDE112E243E631E1EBE631EF | |
:10E6E000E1CBE66EE171E6EDE6CE02552F8E00102D | |
:10E6F000EC6210A3E4242468656964594925091073 | |
:10E70000A3E424041CFE2004A3E41A0169656964DF | |
:10E71000301F26E7AE6410A3E42505ECE48EFFFF6E | |
:10E720003262AFE4ED623780E733E6EA06554D2FFB | |
:10E730004D4F447EE6EDBDE112E521E66EE140E796 | |
:10E7400089E5F8E0EF000FE1EBE1EBE221E2D4E153 | |
:10E75000EBE1EBE221E2D4E1CBE5CFE221E1CBE159 | |
:10E76000DEE230E1EBE2D4E1CBE287E140E77BE1BE | |
:10E77000EBE215E596E1CBE157E77DE215E1CBE170 | |
:10E7800021E749E215E230E171E215E50FE0EFFF24 | |
:10E79000FFE221E171E79FE72C054D2F4D4F44BD6E | |
:10E7A000E112E221E250E221E1EBE140E7B6E5F8D7 | |
:10E7B000E1EBE619E1CBE1EBE221E250E140E7C415 | |
:10E7C000E1DEE5CFE1CBE733E1CBE140E7D4E23076 | |
:10E7D000E5F8E230E171E7DFE799042F4D4F44BDE2 | |
:10E7E000E112E243E250E230E79FE171E7F4E7DA59 | |
:10E7F000034D4F44BDE112E7DFE215E171E803E7A5 | |
:10E80000F0012FBDE112E7DFE230E215E171E81619 | |
:10E81000E80103554D2A8E00114F5F20062402E3C4 | |
:10E82000E4465666626663301F26F2EDE43780E800 | |
:10E8300038E812045F554D2ABDE112E0EF0000E216 | |
:10E8400030E0EF000FE1EBE221E2D4E1EBE1EBE2BB | |
:10E8500021E2D4E1CBE5CFE1CBE140E867E1EBE2B7 | |
:10E8600043E2D4E1CBE5CFE121E847E4F8E215E16A | |
:10E8700071E877E833012ABDE112E887E215E1711A | |
:10E88000E887E875024D2ABDE112E521E299E250E0 | |
:10E89000E1EBE641E230E641E816E1CBE140E8A2F7 | |
:10E8A000E619E171E8AEE884052A2F4D4F44BDE139 | |
:10E8B00012E1EBE887E1CBE79FE171E8C2E8A8024B | |
:10E8C0002A2FBDE112E8AEE230E215E171E8D7E8A7 | |
:10E8D000BF0543454C4C2BBDE112E10002E5CFE101 | |
:10E8E00071E8EBE8D10543454C4C2DBDE112E10048 | |
:10E8F000FEE5CFE171E8FFE8E50543454C4C53BD2B | |
:10E90000E112E10002E877E171E915E8F907414C0D | |
:10E9100049474E4544BDE112E171E921E90D02424A | |
:10E920004CBDE2EFE92EE91E053E43484152BDE1F0 | |
:10E9300012E0EF007FE276E221E1007FE921E6D5F7 | |
:10E94000E140E948E215E0EFE171E954E9280544C6 | |
:10E9500045505448BDE112E1F9E36CE189E230E64B | |
:10E9600031E10002E803E171E971E94E04504943E5 | |
:10E970004BECE4C300015849AEEBAFE43780E987C4 | |
:10E98000E96C04524F4C4CBDE112E221E311E685E3 | |
:10E99000E140E99AE215E157E9A8E230E1EBE3064C | |
:10E9A000E631E987E1CBE230E171E9B1E982022B9E | |
:10E9B0002135103506E384ED843780E9C2E9AE02E3 | |
:10E9C0003221BDE112E230E243E17BE8D7E17BE1B5 | |
:10E9D00071E9D8E9BF023240BDE112E221E8D7E196 | |
:10E9E00089E230E189E171E9F1E9D505434F554EFE | |
:10E9F00054BDE112E221E596E230E1A5E171EA07BA | |
:10EA0000E9EB0448455245BDE112E493E189E17127 | |
:10EA1000EA18EA0203504144BDE112EA07E0EF00C0 | |
:10EA200050E5CFE171EA2DEA1403544942BDE112E9 | |
:10EA3000E41AE8D7E189E171EA45EA290840455836 | |
:10EA40004543555445BDE112E189E4E3E140EA5212 | |
:10EA5000E167E171EA5EEA3C05434D4F56457EEAC7 | |
:10EA600081ECE427185D27026CE4AE62EF62EE648D | |
:10EA7000A6C0A7805A26F96AE426F5EE6232663708 | |
:10EA800080ECE4AE6210AFE4EF6210AE6444563442 | |
:10EA90000127014C830000270AEEA1EF815A26F9D5 | |
:10EAA0004A26F635012404A6A4A7843560326237CD | |
:10EAB00080EABAEA580446494C4CEC6227125D27BA | |
:10EAC000026C62AE64A661A7805A26FB6A6226F7D2 | |
:10EAD00032663780EAE2EAB5092D545241494C4981 | |
:10EAE0004E47BDE112E1EBE157EB01E921E243E1E1 | |
:10EAF000DEE5CFE1A5E685E140EB01E1CBE596E17E | |
:10EB000071E121EAEBE2FBE171EB13EAD805504138 | |
:10EB1000434B24BDE112E221E1EBE521E196E596CC | |
:10EB2000E521E5CFE2FBE230E196E230EA5EE1CBBF | |
:10EB3000E171EB3CEB0D054449474954BDE112E15D | |
:10EB40000009E243E685E10007E276E5CFE0EFE584 | |
:10EB5000CFE171EB5FEB360745585452414354BD4A | |
:10EB6000E112E2FBE230E733E230EB3CE171EB75BE | |
:10EB7000EB57023C23BDE112EA18E454E17BE1715A | |
:10EB8000EB89EB7204484F4C44BDE112E454E18937 | |
:10EB9000E5A6E221E454E17BE196E171EBA2EB848E | |
:10EBA0000123BDE112E3E4E189EB5FEB89E171EB65 | |
:10EBB000B6EBA0022353BDE112EBA2E221E140EB50 | |
:10EBC000C5E157EBB9E171EBD0EBB3045349474EC4 | |
:10EBD000BDE112E250E140EBDDE0EFEB89E171EBEA | |
:10EBE000E6EBCB02233EBDE112E215E454E189EAF3 | |
:10EBF00018E243E631E171EBFFEBE303737472BD9E | |
:10EC0000E112E221E1EBE641EB75EBB6E1CBEBD0B3 | |
:10EC1000EBE6E171EC1CEBFB03484558BDE112E16A | |
:10EC20000010E3E4E17BE171EC34EC180744454368 | |
:10EC3000494D414CBDE112E1000AE3E4E17BE171A1 | |
:10EC4000EC4BEC2C0644494749543FBDE112E1EB43 | |
:10EC5000E0EFE631E10009E243E685E140EC6EE1F8 | |
:10EC60000007E631E221E0EF000AE685E287E221D3 | |
:10EC7000E1CBE66EE171EC82EC44074E554D424526 | |
:10EC8000523FBDE112E3E4E189E1EBE2FBE243E95B | |
:10EC9000F1E243E1A5E0EFE656E140ECA7EC1CE22F | |
:10ECA00030E596E230E5A6E243E1A5E0EFE656E185 | |
:10ECB000EBE230E1DEE631E230E1DEE5CFE4E3E154 | |
:10ECC00040ED07E5A6E1EBE221E1EBE1A5E3E4E1BC | |
:10ECD00089EC4BE140ECFBE230E3E4E189E877E5E5 | |
:10ECE000CFE1CBE596E121ECC7E1DEE230E215E1D0 | |
:10ECF00040ECF5E5F8E230E157ED05E1CBE1CBE59D | |
:10ED00000FE50FE2FBE221E1CBE50FE1CBE3E4E12C | |
:10ED10007BE171ED1CEC7A043F4B4559BDE112E3F8 | |
:10ED200088EA45E171ED2DED17034B4559BDE11220 | |
:10ED3000ED1CE140ED30E171ED41ED2904454D4917 | |
:10ED400054BDE112E397EA45E171ED53ED3C044E09 | |
:10ED500055463FBDE112ED1CE221E140ED67E50FB4 | |
:10ED6000ED2DE1000AE656E171ED72ED4E045041E1 | |
:10ED70004345BDE112E1000BED41E171ED86ED6D22 | |
:10ED8000055350414345BDE112E921ED41E171EDEB | |
:10ED90009AED8006535041434553BDE112E2FBE634 | |
:10EDA0009EE1EBE157EDA9ED86E121EDA7E171EDE3 | |
:10EDB000B8ED930454595045BDE112E1EBE157ED34 | |
:10EDC000C9E221E1A5ED41E596E121EDC1E215E1C0 | |
:10EDD00071EDD8EDB3024352BDE112E1000AED41FD | |
:10EDE000E1000DED41E171EDEFEDD543646F24BD20 | |
:10EDF000E112E1CBE1DEE1CBE9F1E5CFE915E1EBB1 | |
:10EE0000E230E1EBE171EE0EEDEB4324227CBDE15B | |
:10EE100012EDEFE171EE1DEE0A432E227CBDE112F0 | |
:10EE2000EDEFE9F1EDB8E171EE2FEE19022E52BDD2 | |
:10EE3000E112E1EBEBFFE1CBE243E631ED9AEDB815 | |
:10EE4000E171EE4AEE2C03552E52BDE112E1EBEBDF | |
:10EE500075EBB6EBE6E1CBE243E631ED9AEDB8E1D6 | |
:10EE600071EE68EE4602552EBDE112EB75EBB6EB86 | |
:10EE7000E6ED86EDB8E171EE7DEE65012EBDE112A5 | |
:10EE8000E3E4E189E1000AE299E140EE91EE68E114 | |
:10EE900071EBFFED86EDB8E171EE9FEE7B013FBDBA | |
:10EEA000E112E189EE7DE171EEB2EE9D05706172D5 | |
:10EEB0007365BDE112E3F1E17BE243E1EBE221E1C5 | |
:10EEC00040EF3BE5A6E3F1E189E921E656E140EEBA | |
:10EED000F5E1EBE921E243E1A5E631E250E5DFE1CE | |
:10EEE00040EEF3E596E121EED3E1CBE215E2FBE261 | |
:10EEF00021E171E1CBE243E230E1EBE3F1E189E2D0 | |
:10EF000043E1A5E631E3F1E189E921E656E140EF8D | |
:10EF100013E250E140EF25E596E121EEFBE221E12D | |
:10EF2000EBE157EF2FE1CBE215E221E596E1EBE2D1 | |
:10EF300043E631E1CBE1CBE631E171E243E1CBE6FF | |
:10EF400031E171EF4DEEAC055041525345BDE11238 | |
:10EF5000E1EBEA2DE40CE189E5CFE41AE189E40C68 | |
:10EF6000E189E631E1CBEEB2E40CE9B1E171EF7594 | |
:10EF7000EF47822E28BDE112E0EFEF4DEDB8E171D1 | |
:10EF8000EF86EF728128BDE112E0EFEF4DE50FE172 | |
:10EF900071EF97EF84815CBDE112E41AE189E40C22 | |
:10EFA000E17BE171EFADEF950443484152BDE112C1 | |
:10EFB000E921EF4DE215E1A5E171EFC4EFA8055499 | |
:10EFC0004F4B454EBDE112E921EF4DE1001FE6B781 | |
:10EFD000E49FE189E243E631E8EBEB13E171EFE70F | |
:10EFE000EFBE04574F5244BDE112EF4DEA07EB1359 | |
:10EFF000E171EFFCEFE2054E414D453EBDE112E807 | |
:10F00000EBE8EBE189E171F011EFF60553414D4575 | |
:10F010003FBDE112E1EBE157F038E243E1DEE5CF3D | |
:10F02000E1A5E243E1DEE5CFE1A5E631E4E3E1403D | |
:10F03000F038E1CBE215E171E121F01AE0EF0000D8 | |
:10F04000E171F04BF00B0466696E64BDE112E230D1 | |
:10F05000E221E1A5E5A6E3F1E17BE221E189E1EB33 | |
:10F06000E8D7E230E189E221E140F092E221E18952 | |
:10F07000E0EF1F7FE276E1DEE299E140F086E8D73B | |
:10F08000E31DE157F08EE8D7E3F1E189F011E15794 | |
:10F09000F09EE1CBE215E230E8EBE230E171E140D5 | |
:10F0A000F0AAE8EBE8EBE157F064E1CBE215E230DF | |
:10F0B000E215E8EBE221EFFCE230E171F0C6F04648 | |
:10F0C000054E414D453FBDE112E476E221E9D8E22B | |
:10F0D00099E140F0D7E8EBE1EBE1CBE8D7E221E1C1 | |
:10F0E000EBE189E4E3E140F0F7F04BE4E3E140F0E9 | |
:10F0F000D9E1CBE215E171E1CBE215E2FBE171F17F | |
:10F1000006F0C0025E48BDE112E1EBE243E1CBE272 | |
:10F1100030E243E299E140F131E0EF0008E3C5EA73 | |
:10F1200045E5A6E921E3C5EA45E0EF0008E3C5EAC5 | |
:10F1300045E171F13BF10303544150BDE112E2217D | |
:10F14000E3C5EA45E243E196E596E171F155F13711 | |
:10F15000046B544150BDE112E221E1000AE299E161 | |
:10F1600040F183E221E0EF0008E299E230E0EF00B5 | |
:10F170007FE299E276E140F17FE921F13BE171F133 | |
:10F1800006E171E215E230E215E221E171F198F158 | |
:10F190005006414343455054BDE112E243E5CFE2FE | |
:10F1A00043E521E299E140F1C7ED2DE221E921E0BB | |
:10F1B000EF007FE6D5E140F1BFF13BE157F1C3E35A | |
:10F1C000B6EA45E157F1A1E215E243E631E171F11A | |
:10F1D000DAF19106455850454354BDE112E3A8EADF | |
:10F1E00045E3FFE17BE215E171F1F3F1D305515500 | |
:10F1F000455259BDE112EA2DE10050E3A8EA45E489 | |
:10F200001AE17BE215E2FBE40CE17BE171F217F11C | |
:10F21000ED054341544348BDE112E1F9E1EBE465FA | |
:10F22000E189E1EBE1B4E465E17BE167E1CBE46531 | |
:10F23000E17BE1CBE215E2FBE171F244F21105540E | |
:10F2400048524F57BDE112E465E189E1C0E1CBE4EA | |
:10F2500065E17BE1CBE230E1EBE207E215E1CBE1F6 | |
:10F2600071F26BF23E054E554C4C24BDE333000069 | |
:10F27000636F796F7465F280F2650541424F5254B5 | |
:10F28000BDE112F26BF244F292F27A4661626F7261 | |
:10F290007422BDE112E140F29DEDEFF244EDEFE2A8 | |
:10F2A00015E171F2B2F28B0A24494E544552505284 | |
:10F2B0004554BDE112F0C6E4E3E140F2D9E189E052 | |
:10F2C000EF4000E276F2920D20636F6D70696C651D | |
:10F2D000206F6E6C79E167E171E447EA45E140F245 | |
:10F2E000E3E171F244F2EBF2A7815BBDE112E0EFE2 | |
:10F2F000F2B2E436E17BE171F300F2E9032E4F4B09 | |
:10F30000BDE112E0EFF2B2E436E189E656E140F306 | |
:10F3100017EE1D03206F6BEDD8E171F326F2FC06AA | |
:10F320003F535441434BBDE112E954E250F2920A7B | |
:10F3300020756E646572666C6F77E171F345F31F3B | |
:10F34000044556414CBDE112EFC4E221E1A5E14084 | |
:10F35000F35CE436EA45F326E157F348E215E3D6D9 | |
:10F36000EA45E171F36FF34006505245534554BDF1 | |
:10F37000E112E36CE189E207E0EF6E70E41AE8D78E | |
:10F38000E17BE171F38CF3684378696FBDE112E0D2 | |
:10F39000EFF198E3A8E9C2E3C5E9C2E171F3A6F38E | |
:10F3A000880446494C45BDE112E0EFED72E0EFE222 | |
:10F3B00015E0EFF155F38CE171F3C2F3A10448417C | |
:10F3C0004E44BDE112E0EFF300E0EFED41E0EFF17C | |
:10F3D00055F38CE171F3DDF3BD03492F4FBDE333EA | |
:10F3E000E0ADE0CCF3F0F3D907434F4E534F4C451B | |
:10F3F000BDE112F3DDE9D8E388E9C2F3C2E171F4BB | |
:10F4000008F3E80451554954BDE112E379E189E17B | |
:10F41000C0F2EBF1F3E0EFF345F217E4E3E140F47F | |
:10F4200013E3D6E189E1EBF3F0F26BE243E299E119 | |
:10F4300040F43FED86E9F1EDB8EE1D03203F20E1F9 | |
:10F44000CBE0EFF300E299E140F451E0EF001BED77 | |
:10F4500041F36FE157F411F45DF4030127BDE112AC | |
:10F46000EFC4F0C6E140F46AE171F244F476F45B73 | |
:10F4700005414C4C4F54BDE112E493E9B1E171F404 | |
:10F4800085F470012CBDE112EA07E221E8D7E4938C | |
:10F49000E17BE17BE171F4A4F483895B434F4D5040 | |
:10F4A000494C455DBDE112F45DF485E171F4B9F4B8 | |
:10F4B0009A47434F4D50494C45BDE112E1CBE22103 | |
:10F4C000E189F485E8D7E1EBE171F4D6F4B1874C3A | |
:10F4D00049544552414CBDE112F4B9E0EFF485E1E5 | |
:10F4E00071F4E9F4CE03242C22BDE112E0EF0022F6 | |
:10F4F000EFE7E9F1E5CFE915E493E17BE171F50A86 | |
:10F50000F4E58752454355525345BDE112E4ADE160 | |
:10F5100089EFFCF485E171F51EF50282444FBDE1EF | |
:10F5200012F4B9F5A8EA07E306E171F533F51B8398 | |
:10F530003F444FBDE112F4B9F54EEA07F4B90000BB | |
:10F54000E311E171F54EF52F05283F444F293506AB | |
:10F5500010A3E42D063262EEC437803510AFA3ED60 | |
:10F56000A333423780F56DF548832D444FBDE1123A | |
:10F57000F4B9F588EA07F4B90000E311E171F58800 | |
:10F58000F56905282D444F29350610A3E42E0632CF | |
:10F5900062EEC437803510AFA3EDA333423780F558 | |
:10F5A000A8F5820428444F293516AFA3EDA3378070 | |
:10F5B000F5BBF5A306284C4F4F5029CC0001201D68 | |
:10F5C000F5CCF5B487282B4C4F4F5029ECE12A0D90 | |
:10F5D000E3A410A3222F13EDA4EEC43780E3A410FC | |
:10F5E000A3222C06EDA4EEC43780334231243780A9 | |
:10F5F000F5F9F5C4844C4F4F50BDE112F4B9F5BB99 | |
:10F60000E311E656E140F612EA07E8D7E243E17B70 | |
:10F61000E8D7F485E171F620F5F4852B4C4F4F5077 | |
:10F62000BDE112F4B9F5CCE311E656E140F639EA52 | |
:10F6300007E8D7E243E17BE8D7F485E171F647F6C6 | |
:10F640001A054C45415645ECA4ED223780F655F697 | |
:10F650001A83464F52BDE112F4B9E1EBEA07E171BA | |
:10F66000F66AF65185424547494EBDE112EA07E187 | |
:10F6700071F67AF664844E455854BDE112F4B9E14E | |
:10F6800021F485E171F68FF67585554E54494CBDD0 | |
:10F69000E112F4B9E140F485E171F6A4F6898541FF | |
:10F6A0004741494EBDE112F4B9E157F485E171F6E5 | |
:10F6B000B6F69E824946BDE112F4B9E140EA07E29E | |
:10F6C000FBF485E171F6CFF6B3854148454144BD71 | |
:10F6D000E112F4B9E157EA07E2FBF485E171F6E9DA | |
:10F6E000F6C986524550454154BDE112F6A4EA07D9 | |
:10F6F000E230E17BE171F6FFF6E2845448454EBD0D | |
:10F70000E112EA07E230E17BE171F712F6FA834198 | |
:10F710004654BDE112E215F6CFF66AE230E171F728 | |
:10F7200028F70E84454C5345BDE112F6CFE230F682 | |
:10F73000FFE171F73DF723855748494C45BDE1127C | |
:10F74000F6B6E230E171F751F7378641424F525435 | |
:10F7500022BDE112F4B9F292F4E9E171F763F74ADC | |
:10F76000822422BDE112F4B9EE0EF4E9E171F775DD | |
:10F77000F760822E22BDE112F4B9EE1DF4E9E171C9 | |
:10F78000F78CF772073F554E49515545BDE112E2DE | |
:10F7900021F0C6E140F7A7EE1D07207265446566BB | |
:10F7A00020E243E9F1EDB8E215E171F7B3F7840324 | |
:10F7B000242C6EBDE112E221E1A5E140F7E4F78CD3 | |
:10F7C000E221E4ADE17BEA07E915E230E8EBE4870A | |
:10F7D000E189E189E243E17BE8EBE221E49FE17B1F | |
:10F7E000E17BE171EE0E05206E616D65F244F7FB81 | |
:10F7F000F7AF0824434F4D50494C45BDE112F0C6C8 | |
:10F80000E4E3E140F81AE189E0EF8000E276E140CC | |
:10F81000F816E167E171F485E171E447EA45E140FA | |
:10F82000F826F4D6E171F244F832F7F2054F564566 | |
:10F830005254BDE112E4ADE189E487E189E17BE165 | |
:10F8400071F847F82CC13BBDE112F4B9E171F2EB5C | |
:10F85000F832E171F85AF845015DBDE112E0EFF7C9 | |
:10F86000FBE436E17BE171F871F8580563616C6C7B | |
:10F870002CBDE112E100BDEA07E196E306F476F45F | |
:10F8800085E171F889F86B013ABDE112EFC4F7B375 | |
:10F89000E0EFE112F871F85AE171F8A8F887094928 | |
:10F8A0004D4D454449415445BDE112E0EF8000E42F | |
:10F8B000ADE189E189E287E4ADE189E17BE171F8BD | |
:10F8C000C8F89E0455534552BDE112EFC4F7B3F892 | |
:10F8D00032E0EFE35BF871F485E171F8E6F8C30616 | |
:10F8E000435245415445BDE112EFC4F7B3F832E04D | |
:10F8F000EFE333F871E171F904F8DF08564152493A | |
:10F9000041424C45BDE112F8E6E2FBF485E171F9B4 | |
:10F910001CF8FB08434F4E5354414E54BDE112EFC7 | |
:10F92000C4F7B3F832E0EFE2EFF871F485E171F972 | |
:10F9300039F913055F54595045BDE112E1EBE15728 | |
:10F94000F94CE221E1A5E92EED41E596E121F942EC | |
:10F95000E215E171F95CF93303646D2BBDE112E24C | |
:10F9600043E0EF0004EE4AED86E1EBE157F97BE27C | |
:10F9700021E1A5E0EF0003EE4AE596E121F96FE110 | |
:10F9800071F98AF9580444554D50BDE112E3E4E1A0 | |
:10F9900089E1EBEC1CE10010E803E1EBEDD8E100BC | |
:10F9A00010E521F95CE4F8E4F8E311ED9AF939ED9A | |
:10F9B00053E5DFE140F9BFE121F99CE157F9C3E1EB | |
:10F9C000CBE215E215E1CBE3E4E17BE171F9D4F997 | |
:10F9D00085022E53BDE112EDD8E954E1EBE157F970 | |
:10F9E000E7E1DEE971EE7DE121F9E1EE1D04203C65 | |
:10F9F0007370E171F9FDF9D10421435350BDE11257 | |
:10FA0000E1F9E427E17BE171FA11F9F8043F43538E | |
:10FA100050BDE112E1F9E427E189E299F29206731F | |
:10FA20007461636B73E171FA31FA0C053E4E414D1E | |
:10FA300045BDE112E487E8D7E189E4E3E140FA6EED | |
:10FA4000E521E189E221E140FA5AE521EFFCE29962 | |
:10FA5000E140FA5AE8EBE157FA42E230E215E4E31A | |
:10FA6000E140FA36E230E215E230E215E171E215EA | |
:10FA7000E0EF0000E171FA7EFA2B032E4944BDE16C | |
:10FA800012E4E3E140FA92E9F1E1001FE276F9398C | |
:10FA9000E171EE1D09207B6E6F4E616D657DE17138 | |
:10FAA000FAA8FA7A03534545BDE112F45DE596E301 | |
:10FAB000E4E189E1EBEC1CE221E189E0EFE112E213 | |
:10FAC00099E140FAD7EDD8EE1D09205052494D4931 | |
:10FAD000545645E157FBEAEDD8E8D7E221EE68ED50 | |
:10FAE00086E221E189E221E140FAEDFA31E4E3E145 | |
:10FAF00040FBCCED86FA7EE221E189E221E0EFE1F4 | |
:10FB000000E656E140FB1BE243E8D7E1A5ED86EEB7 | |
:10FB100068E230E596E230E157FBC0E221E0EFE039 | |
:10FB2000EFE656E243E0EFE140E656E287E243E0EB | |
:10FB3000EFE157E656E287E243E0EFE121E656E2E5 | |
:10FB400087E243E0EFF5BBE656E287E243E0EFF5FC | |
:10FB5000CCE656E287E243E0EFF5A8E656E287E21C | |
:10FB600043E0EFF54EE656E287E243E0EFF588E644 | |
:10FB700056E287E140FB89E230E8D7E221E189EDF6 | |
:10FB800086EE68E230E157FBC0E221E0EFEE1DE6D1 | |
:10FB900056E243E0EFF292E656E287E243E0EFEE10 | |
:10FBA0000EE656E287E140FBC6E230E8D7E221E903 | |
:10FBB000F1EDB8E10022ED41E9F1E5CFE8EBE2300B | |
:10FBC000E215E157FBE4E215E157FBD6E221E189BA | |
:10FBD000EE68E157FBE4E221E189E0EFE171E299AF | |
:10FBE000E140FBEAED53E140FAD7E1CBE3E4E17B0E | |
:10FBF000E215E171FBFEFAA405574F524453BDE1F3 | |
:10FC000012EDD8E476E189E189E4E3E140FC1FE20A | |
:10FC100021ED86FA7EE8EBED53E140FC07E215E1C9 | |
:10FC200071FC29FBF803564552BDE112E0EF0100DB | |
:10FC3000E171FC39FC25026869BDE112E0E3EDD811 | |
:10FC4000EE1D0B65466F7274682076312E30EDD84C | |
:10FC5000E171FC5CFC360527424F4F54BDE333FC99 | |
:10FC600039FC6AFC5604434F4C44BDE112E0EFE01E | |
:10FC70000DE0EF6F80E0EF004AEA5EF36FFC5CEAB4 | |
:10FC800045E4D1E476E189E221E487E9C2F832F47F | |
:05FC900008E157FC6DC6 | |
: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 13 | |
0000 CRR: EQU 10 | |
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 $e000 | |
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 E0 00 DW reset | |
FFF2 ;SWI3 | |
FFF2 E0 00 DW reset | |
FFF4 ;SWI2 | |
FFF4 E0 00 DW reset | |
FFF6 ;FIRQ | |
FFF6 E0 00 DW reset | |
FFF8 ;IRQ | |
FFF8 E0 00 DW reset | |
FFFA ;SWI | |
FFFA E0 00 DW reset | |
FFFC ;NMI | |
FFFC E0 00 DW reset | |
FFFE ;RES | |
FFFE E0 00 DW reset | |
10000 ; | |
10000 ; | |
10000 ; | |
E000 .ORG COLDD ;beginning of cold boot area | |
E000 ; SETDP 0 | |
E000 .ENT $ | |
E000 .ENGINE kilo | |
E000 RESET: | |
E000 10 CE 6E 60 ORIG: LDS #SPP | |
E004 10 8E 6F 70 LDY #RPP ;Init return stack pointer | |
E008 CE FC 6D LDU #COLD1 ;Init Instr pointer. | |
E00B 37 80 PULU pc ;next. | |
E00D ; | |
E00D ; COLD start moves the following to USER variables. | |
E00D ; MUST BE IN SAME ORDER AS USER VARIABLES. | |
E00D ; | |
E00D ; | |
E00D UZERO: RMB 8 | |
E015 6E 60 FDB SPP ;SP0 | |
E017 6F 70 FDB RPP ;RP0 | |
E019 E0 AD FDB QRX ;'?KEY | |
E01B E0 CC FDB TXSTO ;'EMIT | |
E01D F1 98 FDB ACCEP ;'EXPECT | |
E01F F1 55 FDB KTAP ;'TAP | |
E021 E0 CC FDB TXSTO ;'ECHO | |
E023 F3 00 FDB DOTOK ;'PROMPT | |
E025 00 0A FDB BASEE ;BASE | |
E027 00 00 FDB 0 ;tmp | |
E029 00 00 FDB 0 ;SPAN | |
E02B 00 00 FDB 0 ;>IN | |
E02D 00 00 FDB 0 ;#TIB | |
E02F 6E 70 FDB TIBB ;TIB | |
E031 00 00 FDB 0 ;CSP | |
E033 F2 B2 FDB INTER ;'EVAL | |
E035 EC 82 FDB NUMBQ ;'NUMBER | |
E037 00 00 FDB 0 ;HLD | |
E039 00 00 FDB 0 ;HANDLER | |
E03B 00 00 FDB 0 ;CONTEXT pointer | |
E03D RMB VOCSS*2 ;vocabulary stack | |
E04D 00 00 FDB 0 ;CURRENT pointer | |
E04F 00 00 FDB 0 ;vocabulary link pointer | |
E051 FC 95 FDB CTOP ;CP | |
E053 6C 00 FDB NTOP ;NP | |
E055 FC 65 FDB LASTN ;LAST | |
E057 ULAST: | |
E057 ; | |
E080 .ORG CODEE ;beginning of the code dictionary | |
E080 ; | |
E080 ; Device dependent I/O | |
E080 ; | |
E080 ACIA: EQU $83fe | |
E080 ACIAC: EQU ACIA | |
E080 ACIAS: EQU ACIA | |
E080 ACIAD: EQU ACIA+1 | |
E080 ; | |
E080 ACIA_TDRE: EQU 02h | |
E080 ACIA_RDRF: EQU 01h | |
E080 ; | |
E080 SEROUT: | |
E080 34 06 PSHS a,b | |
E082 SEROUTL: | |
E082 F6 83 FE LDB ACIAS | |
E085 C4 02 ANDB #ACIA_TDRE | |
E087 27 F9 BEQ seroutl | |
E089 B7 83 FF STA ACIAD | |
E08C 35 06 PULS a,b | |
E08E 39 RTS | |
E08F ; | |
E08F SERIN: | |
E08F B6 83 FE LDA ACIAS | |
E092 84 01 ANDA #ACIA_RDRF | |
E094 27 03 BEQ serin_ret | |
E096 B6 83 FF LDA ACIAD | |
E099 39 SERIN_RET: RTS | |
E09A ; | |
E09A ; | |
E09A ; BYE ( -- ) | |
E09A ; Exit eForth. | |
E09A ; | |
E09A E0 A2 00 00 FDB BYE,0 | |
E09E 03 42 59 45 L100: FCB 3,"BYE" | |
E0A2 7E E0 00 BYE: JMP $E000 | |
E0A5 ; | |
E0A5 ; ?RX ( -- c T | F ) | |
E0A5 ; Return input character and true, or a false if no input. | |
E0A5 ; | |
E0A5 E0 AD E0 9E FDB QRX,L100 | |
E0A9 03 3F 52 58 L110: FCB 3,"?RX" | |
E0AD 8E 00 00 QRX: LDX #0 | |
E0B0 BD E0 8F JSR serin | |
E0B3 26 04 BNE qrx1 ;!!!!!!!!!!!!!!!!!!! BEQ | |
E0B5 AF E3 STX ,--s | |
E0B7 37 80 PULU pc | |
E0B9 1F 89 QRX1: TFR a,b | |
E0BB 4F CLRA | |
E0BC ED E3 STD ,--s | |
E0BE 30 1F LEAX -1,x | |
E0C0 AF E3 STX ,--s | |
E0C2 37 80 PULU pc | |
E0C4 ; | |
E0C4 ; TX! ( c -- ) | |
E0C4 ; Send character c to the output device. | |
E0C4 E0 CC E0 A9 FDB TXSTO,L110 | |
E0C8 03 54 58 21 L120: FCB 3,"TX!" | |
E0CC EC E1 TXSTO: LDD ,s++ | |
E0CE C1 FF CMPB #$ff | |
E0D0 26 02 BNE tx1 | |
E0D2 C6 20 LDB #32 | |
E0D4 TX1: | |
E0D4 1F 98 TFR b,a | |
E0D6 BD E0 80 JSR serout | |
E0D9 37 80 PULU pc | |
E0DB ; | |
E0DB ; | |
E0DB ; !IO ( -- ) | |
E0DB ; Initialize the serial I/O devices. | |
E0DB ; | |
E0DB E0 E3 E0 C8 FDB STOIO,L120 | |
E0DF 03 21 49 4F L130: FCB 3,"!IO" | |
E0E3 37 80 STOIO: PULU pc | |
E0E5 ; | |
E0E5 ; The kernel | |
E0E5 ; | |
E0E5 ; doLIT ( -- w ) | |
E0E5 ; Push an inline literal. | |
E0E5 ; | |
E0E5 E0 EF E0 DF FDB DOLIT,L130 | |
E0E9 45 64 6F 4C 49 54 L140: FCB COMPO+5,"doLIT" | |
E0EF DOLIT: | |
E0EF ; ldd ,u++ | |
E0EF 37 06 PULU d | |
E0F1 ; 7 cycles | |
E0F1 34 06 PSHS d | |
E0F3 ; 8 cycles | |
E0F3 ; std ,--s | |
E0F3 37 80 PULU pc | |
E0F5 ; | |
E0F5 ; doCLIT ( -- w ) | |
E0F5 ; Push an inline 8-bit literal. | |
E0F5 ; | |
E0F5 E1 00 E0 E9 FDB DOCLIT,L140 | |
E0F9 46 64 6F 43 4C 49 54 L141: FCB COMPO+6,"doCLIT" | |
E100 DOCLIT: | |
E100 37 04 PULU b | |
E102 1D SEX ; sign extended | |
E103 34 06 PSHS d | |
E105 37 80 PULU pc | |
E107 ; | |
E107 ; doLIST ( a -- ) | |
E107 ; Process colon list. | |
E107 ; | |
E107 E1 12 E0 F9 FDB DOLST,L141 | |
E10B 46 64 6F 4C 49 53 54 L150: FCB COMPO+6,"doLIST" | |
E112 EF A3 DOLST: STU ,--y | |
E114 35 40 PULS u ; JSR left new IP on parameter stack | |
E116 ; ldu ,s++ | |
E116 37 80 PULU pc ; FORTH NEXT IP | |
E118 ; | |
E118 ; next ( -- ) | |
E118 ; Run time code for the single index loop. | |
E118 ; : next ( -- ) \ hilevel model | |
E118 ; r> r> dup if 1 - >r @ >r exit then drop cell+ >r ; | |
E118 ; | |
E118 E1 21 E1 0B FDB DONXT,L150 | |
E11C 44 6E 65 78 74 L160: FCB COMPO+4,"next" | |
E121 EC A4 DONXT: LDD ,y | |
E123 83 00 01 SUBD #1 ; decrement | |
E126 25 06 BCS next1 ; < -> exit loop | |
E128 ED A4 STD ,y ; decremented value back on stack | |
E12A EE C4 LDU ,u ; branch to begin of loop | |
E12C 37 80 PULU pc | |
E12E 31 22 NEXT1: LEAY 2,y | |
E130 33 42 LEAU 2,u ; skip branch destination | |
E132 37 80 PULU pc | |
E134 ; | |
E134 ; | |
E134 ; ?branch ( f -- ) | |
E134 ; Branch if flag is zero. | |
E134 ; | |
E134 E1 40 E1 1C FDB QBRAN,L160 | |
E138 47 3F 62 72 61 6E 63 68 L170: FCB COMPO+7,"?branch" | |
E140 QBRAN: ;$CODE COMPO+7,"?branch",QBRAN | |
E140 EC E1 LDD ,s++ | |
E142 27 04 BEQ bran1 | |
E144 33 42 LEAU 2,u ; skip new IP, no branch | |
E146 37 80 PULU pc | |
E148 EE C4 BRAN1: LDU ,u | |
E14A 37 80 PULU pc | |
E14C ; | |
E14C ; branch ( -- ) | |
E14C ; Branch to an inline address. | |
E14C ; | |
E14C E1 57 E1 38 FDB BRAN,L170 | |
E150 46 62 72 61 6E 63 68 L180: FCB COMPO+6,"branch" | |
E157 EE C4 BRAN: LDU ,u | |
E159 37 80 PULU pc | |
E15B ; | |
E15B ; EXECUTE ( ca -- ) | |
E15B ; Execute the word at ca. | |
E15B ; | |
E15B E1 67 E1 50 FDB EXECU,L180 | |
E15F 07 45 58 45 43 55 54 45 L190: FCB 7,"EXECUTE" | |
E167 39 EXECU: RTS | |
E168 ; | |
E168 ; EXIT ( -- ) | |
E168 ; SEMIS | |
E168 ; Terminate a colon definition. | |
E168 ; | |
E168 E1 71 E1 5F FDB EXIT,L190 | |
E16C 04 45 58 49 54 L200: FCB 4,"EXIT" | |
E171 EE A1 EXIT: LDU ,y++ | |
E173 37 80 PULU pc | |
E175 ; | |
E175 ; ! ( w a -- ) | |
E175 ; Pop the data stack to memory. | |
E175 ; | |
E175 E1 7B E1 6C FDB STORE,L200 | |
E179 01 21 L210: FCB 1,"!" | |
E17B STORE: | |
E17B ; ldx ,s++ | |
E17B ; ldd ,s++ | |
E17B ; faster ... | |
E17B 35 10 PULS x | |
E17D 35 06 PULS d | |
E17F ; we cannot use puls x,d because the order fetched would be wrong :( | |
E17F ED 84 STD ,x | |
E181 37 80 PULU pc | |
E183 ; | |
E183 ; @ ( a -- w ) | |
E183 ; Push memory location to the data stack. | |
E183 ; | |
E183 E1 89 E1 79 FDB AT,L210 | |
E187 01 40 L220: FCB 1,"@" | |
E189 EC F4 AT: LDD [,s] | |
E18B ED E4 STD ,s | |
E18D 37 80 PULU pc | |
E18F ; | |
E18F ; C! ( c b -- ) | |
E18F ; Pop the data stack to byte memory. | |
E18F ; | |
E18F E1 96 E1 87 FDB CSTOR,L220 | |
E193 02 43 21 L230: FCB 2,"C!" | |
E196 CSTOR: | |
E196 ; ldx ,s++ | |
E196 ; ldd ,s++ | |
E196 ; faster ... | |
E196 35 10 PULS x | |
E198 35 06 PULS d | |
E19A ; we cannot use puls x,d because the order fetched would be wrong :( | |
E19A E7 84 STB ,x | |
E19C 37 80 PULU pc | |
E19E ; | |
E19E ; | |
E19E ; C@ ( b -- c ) | |
E19E ; Push byte memory location to the data stack. | |
E19E ; | |
E19E E1 A5 E1 93 FDB CAT,L230 | |
E1A2 02 43 40 L240: FCB 2,"C@" | |
E1A5 E6 F4 CAT: LDB [,s] | |
E1A7 4F CLRA | |
E1A8 ED E4 STD ,s | |
E1AA 37 80 PULU pc | |
E1AC ; | |
E1AC ; RP@ ( -- a ) | |
E1AC ; Push the current RP to the data stack. | |
E1AC ; | |
E1AC E1 B4 E1 A2 FDB RPAT,L240 | |
E1B0 03 52 50 40 L250: FCB 3,"RP@" | |
E1B4 34 20 RPAT: PSHS y | |
E1B6 37 80 PULU pc | |
E1B8 ; | |
E1B8 ; RP! ( a -- ) | |
E1B8 ; Set the return stack pointer. | |
E1B8 ; | |
E1B8 E1 C0 E1 B0 FDB RPSTO,L250 | |
E1BC 03 52 50 21 L260: FCB 3,"RP!" | |
E1C0 35 20 RPSTO: PULS y | |
E1C2 37 80 PULU pc | |
E1C4 ; | |
E1C4 ; R> ( -- w ) | |
E1C4 ; Pop the return stack to the data stack. | |
E1C4 ; | |
E1C4 E1 CB E1 BC FDB RFROM,L260 | |
E1C8 02 52 3E L270: FCB 2,"R>" | |
E1CB EC A1 RFROM: LDD ,y++ | |
E1CD ; std ,--s | |
E1CD 34 06 PSHS d | |
E1CF 37 80 PULU pc | |
E1D1 ; | |
E1D1 ; I ( -- w ) | |
E1D1 ; Copy top of return stack (current index from DO/LOOP) to the data stack. | |
E1D1 ; | |
E1D1 E1 DE E1 C8 FDB RAT,L270 | |
E1D5 01 49 L279: FCB 1,"I" | |
E1D7 ; | |
E1D7 ; R@ ( -- w ) | |
E1D7 ; Copy top of return stack to the data stack. | |
E1D7 ; | |
E1D7 E1 DE E1 D5 FDB RAT,L279 | |
E1DB 02 52 40 L280: FCB 2,"R@" | |
E1DE RAT: | |
E1DE I: | |
E1DE EC A4 LDD ,y | |
E1E0 ; std ,--s | |
E1E0 34 06 PSHS d | |
E1E2 37 80 PULU pc | |
E1E4 ; | |
E1E4 ; >R ( w -- ) | |
E1E4 ; Push the data stack to the return stack. | |
E1E4 ; | |
E1E4 E1 EB E1 DB FDB TOR,L280 | |
E1E8 02 3E 52 L290: FCB 2,">R" | |
E1EB TOR: | |
E1EB ; ldd ,s++ | |
E1EB 35 06 PULS d | |
E1ED ED A3 STD ,--y | |
E1EF 37 80 PULU pc | |
E1F1 ; | |
E1F1 ; SP@ ( -- a ) | |
E1F1 ; Push the current data stack pointer. | |
E1F1 ; | |
E1F1 E1 F9 E1 E8 FDB SPAT,L290 | |
E1F5 03 53 50 40 L300: FCB 3,"SP@" | |
E1F9 SPAT: | |
E1F9 1F 40 TFR s,d | |
E1FB ED E3 STD ,--s | |
E1FD ; alternatively | |
E1FD ; sts ,--s ; does this work? | |
E1FD 37 80 PULU pc | |
E1FF ; | |
E1FF ; SP! ( a -- ) | |
E1FF ; Set the data stack pointer. | |
E1FF ; | |
E1FF E2 07 E1 F5 FDB SPSTO,L300 | |
E203 03 53 50 21 L310: FCB 3,"SP!" | |
E207 10 EE E4 SPSTO: LDS ,s | |
E20A 37 80 PULU pc | |
E20C ; | |
E20C ; DROP ( w -- ) | |
E20C ; Discard top stack item. | |
E20C ; | |
E20C E2 15 E2 03 FDB DROP,L310 | |
E210 04 44 52 4F 50 L320: FCB 4,"DROP" | |
E215 32 62 DROP: LEAS 2,s | |
E217 37 80 PULU pc | |
E219 ; | |
E219 ; DUP ( w -- w w ) | |
E219 ; Duplicate the top stack item. | |
E219 ; | |
E219 E2 21 E2 10 FDB DUPP,L320 | |
E21D 03 44 55 50 L330: FCB 3,"DUP" | |
E221 EC E4 DUPP: LDD ,s | |
E223 ; std ,--s | |
E223 34 06 PSHS d | |
E225 37 80 PULU pc | |
E227 ; | |
E227 ; SWAP ( w1 w2 -- w2 w1 ) | |
E227 ; Exchange top two stack items. | |
E227 ; | |
E227 E2 30 E2 1D FDB SWAP,L330 | |
E22B 04 53 57 41 50 L340: FCB 4,"SWAP" | |
E230 SWAP: | |
E230 ;OLD 1: slow | |
E230 ; ldx ,s++ | |
E230 ; ldd ,s++ | |
E230 ;OLD 2: faster | |
E230 ; puls x | |
E230 ; puls d | |
E230 ; pshs d,x | |
E230 ;more efficient, without unnecessary stack pointer manipulations | |
E230 EC E4 LDD ,s | |
E232 AE 62 LDX 2,s | |
E234 ED 62 STD 2,s | |
E236 AF E4 STX ,s | |
E238 37 80 PULU pc | |
E23A ; | |
E23A ; OVER ( w1 w2 -- w1 w2 w1 ) | |
E23A ; Copy second stack item to top. | |
E23A ; | |
E23A E2 43 E2 2B FDB OVER,L340 | |
E23E 04 4F 56 45 52 L350: FCB 4,"OVER" | |
E243 EC 62 OVER: LDD 2,s | |
E245 ; std ,--s | |
E245 34 06 PSHS d | |
E247 37 80 PULU pc | |
E249 ; | |
E249 ; 0< ( n -- t ) | |
E249 ; Return true if n is negative. | |
E249 ; | |
E249 E2 50 E2 3E FDB ZLESS,L350 | |
E24D 02 30 3C L360: FCB 2,"0<" | |
E250 E6 E4 ZLESS: LDB ,s | |
E252 1D SEX ; sign extend to b to a/b | |
E253 1F 89 TFR a,b ; high byte: 0 or FF copy to D low | |
E255 ED E4 STD ,s ; D: 0000 or FFFF (= -1) | |
E257 37 80 PULU pc | |
E259 ; | |
E259 ; 0= ( n -- t ) | |
E259 ; Return true if n is zero | |
E259 ; | |
E259 E2 60 E2 4D FDB ZEQUAL,L360 | |
E25D 02 30 3D L365: FCB 2,"0=" | |
E260 ZEQUAL: | |
E260 8E FF FF LDX #TRUEE ; true | |
E263 EC E4 LDD ,s ; TOS | |
E265 27 03 BEQ ZEQUAL1 ; -> true | |
E267 8E 00 00 LDX #0 ; false | |
E26A AF E4 ZEQUAL1: STX ,s | |
E26C 37 80 PULU pc | |
E26E ; | |
E26E ; AND ( w w -- w ) | |
E26E ; Bitwise AND. | |
E26E ; | |
E26E E2 76 E2 5D FDB ANDD,L365 | |
E272 03 41 4E 44 L370: FCB 3,"AND" | |
E276 EC E1 ANDD: LDD ,s++ | |
E278 A4 E4 ANDA ,s | |
E27A E4 61 ANDB 1,s | |
E27C ED E4 STD ,s | |
E27E 37 80 PULU pc | |
E280 ; | |
E280 ; OR ( w w -- w ) | |
E280 ; Bitwise inclusive OR. | |
E280 ; | |
E280 E2 87 E2 72 FDB ORR,L370 | |
E284 02 4F 52 L380: FCB 2,"OR" | |
E287 EC E1 ORR: LDD ,s++ | |
E289 AA E4 ORA ,s | |
E28B EA 61 ORB 1,s | |
E28D ED E4 STD ,s | |
E28F 37 80 PULU pc | |
E291 ; | |
E291 ; XOR ( w w -- w ) | |
E291 ; Bitwise exclusive OR. | |
E291 ; | |
E291 E2 99 E2 84 FDB XORR,L380 | |
E295 03 58 4F 52 L390: FCB 3,"XOR" | |
E299 EC E1 XORR: LDD ,s++ | |
E29B A8 E4 EORA ,s | |
E29D E8 61 EORB 1,s | |
E29F ED E4 STD ,s | |
E2A1 37 80 PULU pc | |
E2A3 ; | |
E2A3 ; D+ ( ud ud -- udsum ) | |
E2A3 ; Add two unsigned double numbers and return a double sum. | |
E2A3 ; | |
E2A3 E2 AA E2 95 FDB DPLUS,L390 | |
E2A7 02 44 2B L391: FCB 2,"D+" | |
E2AA EC 62 DPLUS: LDD 2,s | |
E2AC E3 66 ADDD 6,s | |
E2AE ED 66 STD 6,s | |
E2B0 EC E4 LDD ,s ; add hig words | |
E2B2 E9 65 ADCB 5,s | |
E2B4 A9 64 ADCA 4,s | |
E2B6 ED 64 STD 4,s | |
E2B8 32 64 LEAS 4,s ; drop one double | |
E2BA 37 80 PULU pc | |
E2BC ; | |
E2BC ; D- ( ud ud -- uddiff ) | |
E2BC ; Subtract two unsigned double numbers and return a double sum. | |
E2BC ; | |
E2BC E2 C3 E2 A7 FDB DSUB,L391 | |
E2C0 02 44 2D L392: FCB 2,"D-" | |
E2C3 BD E1 12 DSUB: JSR DOLST | |
E2C6 E6 19 E2 AA E1 71 FDB DNEGA,DPLUS,EXIT | |
E2CC ; | |
E2CC ; | |
E2CC ; UM+ ( u u -- udsum ) | |
E2CC ; Add two unsigned single numbers and return a double sum. | |
E2CC ; | |
E2CC E2 D4 E2 C0 FDB UPLUS,L392 | |
E2D0 03 55 4D 2B L400: FCB 3,"UM+" | |
E2D4 EC E4 UPLUS: LDD ,s | |
E2D6 E3 62 ADDD 2,s | |
E2D8 ED 62 STD 2,s | |
E2DA CC 00 00 LDD #0 | |
E2DD C9 00 ADCB #0 | |
E2DF ED E4 STD ,s | |
E2E1 37 80 PULU pc | |
E2E3 ; | |
E2E3 ; Constants | |
E2E3 ; | |
E2E3 ; doCONST ( -- w ) | |
E2E3 ; Run time routine for CONSTANT | |
E2E3 ; | |
E2E3 E2 EF E2 D0 FDB DOCONST,L400 | |
E2E7 47 64 6F 43 4F 4E 53 54 L401: FCB COMPO+7,"doCONST" | |
E2EF DOCONST: | |
E2EF FDOCONST: | |
E2EF EC F4 LDD [,s] ; contents of W (on TOS because of JSR) | |
E2F1 ED E4 STD ,s ; to TOS (replacing W) | |
E2F3 37 80 PULU pc | |
E2F5 ; | |
E2F5 ; 0 ( -- 0 ) | |
E2F5 ; Constant 0 | |
E2F5 ; | |
E2F5 E2 FB E2 E7 FDB ZERO,L401 | |
E2F9 01 30 L402: FCB 1,"0" | |
E2FB BD E2 EF ZERO: JSR FDOCONST | |
E2FE 00 00 FDB 0 | |
E300 ; | |
E300 ; 1 ( -- 1 ) | |
E300 ; Constant 1 | |
E300 ; | |
E300 E3 06 E2 F9 FDB ONE,L402 | |
E304 01 31 L403: FCB 1,"1" | |
E306 BD E2 EF ONE: JSR FDOCONST | |
E309 00 01 FDB 1 | |
E30B ; | |
E30B ; 2 ( -- 2 ) | |
E30B ; Constant 2 | |
E30B ; | |
E30B E3 11 E3 04 FDB TWO,L403 | |
E30F 01 32 L404: FCB 1,"2" | |
E311 BD E2 EF TWO: JSR FDOCONST | |
E314 00 02 FDB 2 | |
E316 ; | |
E316 ; | |
E316 ; -1 ( -- -1 ) | |
E316 ; Constant -1 | |
E316 ; | |
E316 E3 1D E3 0F FDB MONE,L404 | |
E31A 02 2D 31 L405: FCB 2,"-1" | |
E31D BD E2 EF MONE: JSR FDOCONST | |
E320 FF FF FDB -1 | |
E322 ; | |
E322 ; System and user variables | |
E322 ; | |
E322 ; doVAR ( -- a ) | |
E322 ; Run time routine for VARIABLE and CREATE. | |
E322 ; | |
E322 E3 2C E3 1A FDB DOVAR,L405 | |
E326 45 64 6F 56 41 52 L410: FCB COMPO+5,"doVAR" | |
E32C DOVAR: | |
E32C BD E1 12 JSR DOLST | |
E32F E1 CB E1 71 FDB RFROM,EXIT | |
E333 ; | |
E333 ; fast native DOVAR implementation | |
E333 37 80 FDOVAR: PULU pc | |
E335 ; | |
E335 ; | |
E335 ; UP ( -- a ) | |
E335 ; Pointer to the user area. | |
E335 ; | |
E335 E3 3C E3 26 FDB UP,L410 | |
E339 02 55 50 L420: FCB 2,"UP" | |
E33C UP: | |
E33C ; jsr DOLST | |
E33C ; FDB DOVAR | |
E33C ; fast (native) DOVAR | |
E33C BD E3 33 JSR FDOVAR | |
E33F 6F 80 FDB UPP | |
E341 ; | |
E341 ; doUSER ( -- a ) | |
E341 ; Run time routine for user variables. | |
E341 ; | |
E341 E3 4C E3 39 FDB DOUSE,L420 | |
E345 45 64 6F 55 53 45 52 L430: FCB COMPO+5,"doUSER" | |
E34C DOUSE: | |
E34C BD E1 12 JSR DOLST | |
E34F E1 CB E1 89 E3 3C E1 89 E5 CF E1 71 FDB RFROM,AT,UP,AT,PLUS,EXIT | |
E35B ; | |
E35B ; fast (native) DOUSE implementation (*NOT COMPLETE*) | |
E35B FDOUSE: | |
E35B EC F4 LDD [,s] ; pointer to value (from JSR) | |
E35D F3 E3 3F ADDD UP+CFAOFF ; dirty access to start of USER area: | |
E360 ; var. UP value direct access (not | |
E360 ; as a high level word) | |
E360 ED E4 STD ,s ; resulting address returned on p-stack | |
E362 37 80 PULU pc | |
E364 ; | |
E364 ; SP0 ( -- a ) | |
E364 ; Pointer to bottom of the data stack. | |
E364 ; | |
E364 E3 6C E3 45 FDB SZERO,L430 | |
E368 03 53 50 30 L440: FCB 3,"SP0" | |
E36C SZERO: | |
E36C BD E3 5B JSR FDOUSE | |
E36F 00 08 FDB 8 | |
E371 ; jsr DOLST | |
E371 ; FDB DOUSE,8 | |
E371 ; | |
E371 ; RP0 ( -- a ) | |
E371 ; Pointer to bottom of the return stack. | |
E371 ; | |
E371 E3 79 E3 68 FDB RZERO,L440 | |
E375 03 52 50 30 L450: FCB 3,"RP0" | |
E379 RZERO: | |
E379 BD E3 5B JSR FDOUSE | |
E37C 00 0A FDB 10 | |
E37E ; jsr DOLST | |
E37E ; FDB DOUSE,10 | |
E37E ; | |
E37E ; '?KEY ( -- a ) | |
E37E ; Execution vector of ?KEY. | |
E37E ; | |
E37E E3 88 E3 75 FDB TQKEY,L450 | |
E382 05 27 3F 4B 45 59 L460: FCB 5,"'?KEY" | |
E388 TQKEY: | |
E388 BD E3 5B JSR FDOUSE | |
E38B 00 0C FDB 12 | |
E38D ; jsr DOLST | |
E38D ; FDB DOUSE,12 | |
E38D ; | |
E38D ; 'EMIT ( -- a ) | |
E38D ; Execution vector of EMIT. | |
E38D ; | |
E38D E3 97 E3 82 FDB TEMIT,L460 | |
E391 05 27 45 4D 49 54 L470: FCB 5,"'EMIT" | |
E397 TEMIT: | |
E397 BD E3 5B JSR FDOUSE | |
E39A 00 0E FDB 14 | |
E39C ; jsr DOLST | |
E39C ; FDB DOUSE,14 | |
E39C ; | |
E39C ; 'EXPECT ( -- a ) | |
E39C ; Execution vector of EXPECT. | |
E39C ; | |
E39C E3 A8 E3 91 FDB TEXPE,L470 | |
E3A0 07 27 45 58 50 45 43 54 L480: FCB 7,"'EXPECT" | |
E3A8 TEXPE: | |
E3A8 BD E3 5B JSR FDOUSE | |
E3AB 00 10 FDB 16 | |
E3AD ; jsr DOLST | |
E3AD ; FDB DOUSE,16 | |
E3AD ; | |
E3AD ; 'TAP ( -- a ) | |
E3AD ; Execution vector of TAP. | |
E3AD ; | |
E3AD E3 B6 E3 A0 FDB TTAP,L480 | |
E3B1 04 27 54 41 50 L490: FCB 4,"'TAP" | |
E3B6 TTAP: | |
E3B6 BD E3 5B JSR FDOUSE | |
E3B9 00 12 FDB 18 | |
E3BB ; jsr DOLST | |
E3BB ; FDB DOUSE,18 | |
E3BB ; | |
E3BB ; 'ECHO ( -- a ) | |
E3BB ; Execution vector of ECHO. | |
E3BB ; | |
E3BB E3 C5 E3 B1 FDB TECHO,L490 | |
E3BF 05 27 45 43 48 4F L500: FCB 5,"'ECHO" | |
E3C5 TECHO: | |
E3C5 BD E3 5B JSR FDOUSE | |
E3C8 00 14 FDB 20 | |
E3CA ; jsr DOLST | |
E3CA ; FDB DOUSE,20 | |
E3CA ; | |
E3CA ; 'PROMPT ( -- a ) | |
E3CA ; Execution vector of PROMPT. | |
E3CA ; | |
E3CA E3 D6 E3 BF FDB TPROM,L500 | |
E3CE 07 27 50 52 4F 4D 50 54 L510: FCB 7,"'PROMPT" | |
E3D6 TPROM: | |
E3D6 BD E3 5B JSR FDOUSE | |
E3D9 00 16 FDB 22 | |
E3DB ; jsr DOLST | |
E3DB ; FDB DOUSE,22 | |
E3DB ; | |
E3DB ; | |
E3DB ; BASE ( -- a ) | |
E3DB ; Storage of the radix base for numeric I/O. | |
E3DB ; | |
E3DB E3 E4 E3 CE FDB BASE,L510 | |
E3DF 04 42 41 53 45 L520: FCB 4,"BASE" | |
E3E4 BASE: | |
E3E4 BD E3 5B JSR FDOUSE | |
E3E7 00 18 FDB 24 | |
E3E9 ; jsr DOLST | |
E3E9 ; FDB DOUSE,24 | |
E3E9 ; | |
E3E9 ; tmp ( -- a ) | |
E3E9 ; A temporary storage location used in parse and find. | |
E3E9 ; | |
E3E9 E3 F1 E3 DF FDB TEMP,L520 | |
E3ED 43 74 6D 70 L530: FCB COMPO+3,"tmp" | |
E3F1 TEMP: | |
E3F1 BD E3 5B JSR FDOUSE | |
E3F4 00 1A FDB 26 | |
E3F6 ; jsr DOLST | |
E3F6 ; FDB DOUSE,26 | |
E3F6 ; | |
E3F6 ; SPAN ( -- a ) | |
E3F6 ; Hold character count received by EXPECT. | |
E3F6 ; | |
E3F6 E3 FF E3 ED FDB SPAN,L530 | |
E3FA 04 53 50 41 4E L540: FCB 4,"SPAN" | |
E3FF SPAN: | |
E3FF BD E3 5B JSR FDOUSE | |
E402 00 1C FDB 28 | |
E404 ; jsr DOLST | |
E404 ; FDB DOUSE,28 | |
E404 ; | |
E404 ; >IN ( -- a ) | |
E404 ; Hold the character pointer while parsing input stream. | |
E404 ; | |
E404 E4 0C E3 FA FDB INN,L540 | |
E408 03 3E 49 4E L550: FCB 3,">IN" | |
E40C INN: | |
E40C BD E3 5B JSR FDOUSE | |
E40F 00 1E FDB 30 | |
E411 ; jsr DOLST | |
E411 ; FDB DOUSE,30 | |
E411 ; | |
E411 ; #TIB ( -- a ) | |
E411 ; Hold the current count in and address of the terminal input buffer. | |
E411 ; | |
E411 E4 1A E4 08 FDB NTIB,L550 | |
E415 04 23 54 49 42 L560: FCB 4,"#TIB" | |
E41A NTIB: | |
E41A BD E3 5B JSR FDOUSE | |
E41D 00 20 FDB 32 | |
E41F ; jsr DOLST | |
E41F ; FDB DOUSE,32 ;It contains TWO cells!!!! | |
E41F ; | |
E41F ; CSP ( -- a ) | |
E41F ; Hold the stack pointer for error checking. | |
E41F ; | |
E41F E4 27 E4 15 FDB CSP,L560 | |
E423 03 43 53 50 L570: FCB 3,"CSP" | |
E427 CSP: | |
E427 BD E3 5B JSR FDOUSE | |
E42A 00 24 FDB 36 | |
E42C ; jsr DOLST | |
E42C ; FDB DOUSE 36 | |
E42C ; | |
E42C ; 'EVAL ( -- a ) | |
E42C ; Execution vector of EVAL. | |
E42C ; | |
E42C E4 36 E4 23 FDB TEVAL,L570 | |
E430 05 27 45 56 41 4C L580: FCB 5,"'EVAL" | |
E436 TEVAL: | |
E436 BD E3 5B JSR FDOUSE | |
E439 00 26 FDB 38 | |
E43B ; jsr DOLST | |
E43B ; FDB DOUSE,38 | |
E43B ; | |
E43B ; 'NUMBER ( -- a ) | |
E43B ; Execution vector of NUMBER?. | |
E43B ; | |
E43B E4 47 E4 30 FDB TNUMB,L580 | |
E43F 07 27 4E 55 4D 42 45 52 L590: FCB 7,"'NUMBER" | |
E447 TNUMB: | |
E447 BD E3 5B JSR FDOUSE | |
E44A 00 28 FDB 40 | |
E44C ; jsr DOLST | |
E44C ; FDB DOUSE,40 | |
E44C ; | |
E44C ; HLD ( -- a ) | |
E44C ; Hold a pointer in building a numeric output string. | |
E44C ; | |
E44C E4 54 E4 3F FDB HLD,L590 | |
E450 03 48 4C 44 L600: FCB 3,"HLD" | |
E454 HLD: | |
E454 BD E3 5B JSR FDOUSE | |
E457 00 2A FDB 42 | |
E459 ; jsr DOLST | |
E459 ; FDB DOUSE,42 | |
E459 ; | |
E459 ; HANDLER ( -- a ) | |
E459 ; Hold the return stack pointer for error handling. | |
E459 ; | |
E459 E4 65 E4 50 FDB HANDL,L600 | |
E45D 07 48 41 4E 44 4C 45 52 L610: FCB 7,"HANDLER" | |
E465 HANDL: | |
E465 BD E3 5B JSR FDOUSE | |
E468 00 2C FDB 44 | |
E46A ; jsr DOLST | |
E46A ; FDB DOUSE,44 | |
E46A ; | |
E46A ; CONTEXT ( -- a ) | |
E46A ; A area to specify vocabulary search order. | |
E46A ; | |
E46A E4 76 E4 5D FDB CNTXT,L610 | |
E46E 07 43 4F 4E 54 45 58 54 L620: FCB 7,"CONTEXT" | |
E476 CNTXT: | |
E476 BD E3 5B JSR FDOUSE | |
E479 00 2E FDB 46 | |
E47B ; jsr DOLST | |
E47B ; FDB DOUSE,46 ;plus space for voc stack. | |
E47B ; | |
E47B ; CURRENT ( -- a ) | |
E47B ; Point to the vocabulary to be extended. | |
E47B ; | |
E47B E4 87 E4 6E FDB CRRNT,L620 | |
E47F 07 43 55 52 52 45 4E 54 L630: FCB 7,"CURRENT" | |
E487 CRRNT: | |
E487 BD E3 5B JSR FDOUSE | |
E48A 00 40 FDB 48+VOCSS*2 ;Extra cell | |
E48C ; jsr DOLST | |
E48C ; FDB DOUSE,48+VOCSS*2 ;Extra cell | |
E48C ; | |
E48C ; CP ( -- a ) | |
E48C ; Point to the top of the code dictionary. | |
E48C ; | |
E48C E4 93 E4 7F FDB CP,L630 | |
E490 02 43 50 L640: FCB 2,"CP" | |
E493 CP: | |
E493 BD E3 5B JSR FDOUSE | |
E496 00 44 FDB 52+VOCSS*2 | |
E498 ; jsr DOLST | |
E498 ; FDB DOUSE,52+VOCSS*2 | |
E498 ; | |
E498 ; NP ( -- a ) | |
E498 ; Point to the bottom of the name dictionary. | |
E498 ; | |
E498 E4 9F E4 90 FDB NP,L640 | |
E49C 02 4E 50 L650: FCB 2,"NP" | |
E49F NP: | |
E49F BD E3 5B JSR FDOUSE | |
E4A2 00 46 FDB 54+VOCSS*2 | |
E4A4 ; jsr DOLST | |
E4A4 ; FDB DOUSE,54+VOCSS*2 | |
E4A4 ; | |
E4A4 ; LAST ( -- a ) | |
E4A4 ; Point to the last name in the name dictionary. | |
E4A4 ; | |
E4A4 E4 AD E4 9C FDB LAST,L650 | |
E4A8 04 4C 41 53 54 L660: FCB 4,"LAST" | |
E4AD LAST: | |
E4AD BD E3 5B JSR FDOUSE | |
E4B0 00 48 FDB 56+VOCSS*2 | |
E4B2 ; jsr DOLST | |
E4B2 ; FDB DOUSE,56+VOCSS*2 | |
E4B2 ; | |
E4B2 ; Common functions | |
E4B2 ; | |
E4B2 ; doVOC ( -- ) | |
E4B2 ; Run time action of VOCABULARY's. | |
E4B2 ; | |
E4B2 E4 BC E4 A8 FDB DOVOC,L660 | |
E4B6 45 64 6F 56 4F 43 L670: FCB COMPO+5,"doVOC" | |
E4BC DOVOC: | |
E4BC BD E1 12 JSR DOLST | |
E4BF E1 CB E4 76 E1 7B E1 71 FDB RFROM,CNTXT,STORE,EXIT | |
E4C7 ; | |
E4C7 ; FORTH ( -- ) | |
E4C7 ; Make FORTH the context vocabulary. | |
E4C7 ; | |
E4C7 E4 D1 E4 B6 FDB FORTH,L670 | |
E4CB 05 46 4F 52 54 48 L680: FCB 5,"FORTH" | |
E4D1 FORTH: | |
E4D1 BD E1 12 JSR DOLST | |
E4D4 E4 BC FDB DOVOC | |
E4D6 00 00 FDB 0 ;vocabulary head pointer | |
E4D8 00 00 FDB 0 ;vocabulary link pointer | |
E4DA ; | |
E4DA ; ?DUP ( w -- w w | 0 ) | |
E4DA ; Dup tos if its is not zero. | |
E4DA ; | |
E4DA E4 E3 E4 CB FDB QDUP,L680 | |
E4DE 04 3F 44 55 50 L690: FCB 4,"?DUP" | |
E4E3 QDUP: | |
E4E3 BD E1 12 JSR DOLST | |
E4E6 E2 21 FDB DUPP | |
E4E8 E1 40 E4 EE FDB QBRAN,QDUP1 | |
E4EC E2 21 FDB DUPP | |
E4EE E1 71 QDUP1: FDB EXIT | |
E4F0 ; | |
E4F0 ; ROT ( w1 w2 w3 -- w2 w3 w1 ) | |
E4F0 ; Rot 3rd item to top. | |
E4F0 ; | |
E4F0 E4 F8 E4 DE FDB ROT,L690 | |
E4F4 03 52 4F 54 L700: FCB 3,"ROT" | |
E4F8 ROT: | |
E4F8 BD E1 12 JSR DOLST | |
E4FB E1 EB E2 30 E1 CB E2 30 E1 71 FDB TOR,SWAP,RFROM,SWAP,EXIT | |
E505 ; | |
E505 ; 2DROP ( w w -- ) | |
E505 ; Discard two items on stack. | |
E505 ; | |
E505 E5 0F E4 F4 FDB DDROP,L700 | |
E509 05 32 44 52 4F 50 L710: FCB 5,"2DROP" | |
E50F DDROP: | |
E50F BD E1 12 JSR DOLST | |
E512 E2 15 E2 15 E1 71 FDB DROP,DROP,EXIT | |
E518 ; | |
E518 ; 2DUP ( w1 w2 -- w1 w2 w1 w2 ) | |
E518 ; Duplicate top two items. | |
E518 ; | |
E518 E5 21 E5 09 FDB DDUP,L710 | |
E51C 04 32 44 55 50 L720: FCB 4,"2DUP" | |
E521 DDUP: | |
E521 BD E1 12 JSR DOLST | |
E524 E2 43 E2 43 E1 71 FDB OVER,OVER,EXIT | |
E52A ; | |
E52A ; LSHIFT ( w n -- w ) | |
E52A ; Shift word left n times. | |
E52A E5 35 E5 1C FDB LSHIFT,L720 | |
E52E 06 4C 53 48 49 46 54 L721: FCB 6,"LSHIFT" | |
E535 AE E1 LSHIFT: LDX ,s++ | |
E537 27 0A BEQ LSHIFT2 | |
E539 EC E4 LDD ,s ;value to shift | |
E53B 58 LSHIFT1: ASLB | |
E53C 49 ROLA ;high | |
E53D 30 1F LEAX -1,x ;count down | |
E53F 26 FA BNE LSHIFT1 | |
E541 ED E4 STD ,s | |
E543 LSHIFT2: | |
E543 37 80 PULU pc | |
E545 ; | |
E545 ; RSHIFT ( w n -- w ) | |
E545 ; Shift word right n times. | |
E545 E5 50 E5 2E FDB RSHIFT,L721 | |
E549 06 52 53 48 49 46 54 L721A: FCB 6,"RSHIFT" | |
E550 AE E1 RSHIFT: LDX ,s++ | |
E552 27 0A BEQ RSHIFT2 | |
E554 EC E4 LDD ,s ;value to shift | |
E556 44 RSHIFT1: LSRA | |
E557 56 RORB ;low | |
E558 30 1F LEAX -1,x ;count down | |
E55A 26 FA BNE RSHIFT1 | |
E55C ED E4 STD ,s | |
E55E RSHIFT2: | |
E55E 37 80 PULU pc | |
E560 ; | |
E560 ; >< ( w -- w ) | |
E560 ; swap high and low byte | |
E560 E5 67 E5 49 FDB SWAPHL,L721A | |
E564 02 3E 3C L722: FCB 2,"><" | |
E567 E6 E4 SWAPHL: LDB ,s | |
E569 A6 61 LDA 1,s ;low -> D high | |
E56B ED E4 STD ,s | |
E56D 37 80 PULU pc | |
E56F ; | |
E56F ; 256/ ( w -- w ) | |
E56F ; multiply with 256 (shift left 8 times) | |
E56F E5 78 E5 64 FDB SLASH256,L722 | |
E573 04 32 35 36 2F L723: FCB 4,"256/" | |
E578 E6 E4 SLASH256: LDB ,s | |
E57A 4F CLRA ;D high = 0 | |
E57B ED E4 STD ,s | |
E57D 37 80 PULU pc | |
E57F ; | |
E57F ; 256* ( w -- w ) | |
E57F ; multiply with 256 (shift left 8 times) | |
E57F E5 88 E5 73 FDB STAR256,L723 | |
E583 04 32 35 36 2A L724: FCB 4,"256*" | |
E588 A6 61 STAR256: LDA 1,s | |
E58A 5F CLRB ;D low = 0 | |
E58B ED E4 STD ,s | |
E58D 37 80 PULU pc | |
E58F ; | |
E58F ; 1+ ( w -- w ) | |
E58F ; Shortcut, quick add 1 | |
E58F E5 96 E5 83 FDB PLUS1,L724 | |
E593 02 31 2B L725: FCB 2,"1+" | |
E596 EC E4 PLUS1: LDD ,s | |
E598 C3 00 01 ADDD #1 | |
E59B ED E4 STD ,s | |
E59D 37 80 PULU pc | |
E59F ; | |
E59F ; -+ ( w -- w ) | |
E59F ; Shortcut, quick subtract 1 | |
E59F E5 A6 E5 93 FDB MINUS1,L725 | |
E5A3 02 31 2D L726: FCB 2,"1-" | |
E5A6 EC E4 MINUS1: LDD ,s | |
E5A8 83 00 01 SUBD #1 | |
E5AB ED E4 STD ,s | |
E5AD 37 80 PULU pc | |
E5AF ; | |
E5AF ; 2* ( w -- w ) | |
E5AF ; multiply by 2 using shift operation | |
E5AF E5 B6 E5 A3 FDB TWOSTAR,L726 | |
E5B3 02 32 2A L727: FCB 2,"2*" | |
E5B6 68 61 TWOSTAR: ASL 1,s | |
E5B8 69 60 ROL 0,s ;high | |
E5BA 37 80 PULU pc | |
E5BC ; | |
E5BC ; 2/ ( w -- w ) | |
E5BC ; divide by 2 using shift operation | |
E5BC E5 C3 E5 B3 FDB TWOSLASH,L727 | |
E5C0 02 32 2F L728: FCB 2,"2/" | |
E5C3 67 60 TWOSLASH: ASR 0,s | |
E5C5 66 61 ROR 1,s ;low | |
E5C7 37 80 PULU pc | |
E5C9 ; | |
E5C9 ; + ( w w -- sum ) | |
E5C9 ; Add top two items. | |
E5C9 ; | |
E5C9 E5 CF E5 C0 FDB PLUS,L728 | |
E5CD 01 2B L730: FCB 1,"+" | |
E5CF PLUS: | |
E5CF EC E1 LDD ,s++ | |
E5D1 E3 E4 ADDD ,s | |
E5D3 ED E4 STD ,s | |
E5D5 37 80 PULU pc | |
E5D7 ; HL with UPLUS!? Too inefficient ... | |
E5D7 ; jsr DOLST | |
E5D7 ; FDB UPLUS,DROP,EXIT | |
E5D7 ; | |
E5D7 ; NOT ( w -- w ) | |
E5D7 ; One's complement of tos. | |
E5D7 ; | |
E5D7 E5 DF E5 CD FDB INVER,L730 | |
E5DB 03 4E 4F 54 L740: FCB 3,"NOT" | |
E5DF INVER: | |
E5DF ; fastest ... (13T) | |
E5DF 63 E4 COM ,s ; 6T | |
E5E1 63 61 COM 1,s ; 7T | |
E5E3 37 80 PULU pc | |
E5E5 ; alternative ... (14T) | |
E5E5 EC E4 LDD ,s ;TOS 5T | |
E5E7 43 COMA ; 2T | |
E5E8 53 COMB ; 2T | |
E5E9 ED E4 STD ,s ; 5T | |
E5EB 37 80 PULU pc | |
E5ED ; slow HL ... | |
E5ED ; jsr DOLST | |
E5ED ; FDB DOLIT,-1,XORR,EXIT | |
E5ED ; | |
E5ED ; NEGATE ( n -- -n ) | |
E5ED ; Two's complement of tos. | |
E5ED ; | |
E5ED E5 F8 E5 DB FDB NEGAT,L740 | |
E5F1 06 4E 45 47 41 54 45 L750: FCB 6,"NEGATE" | |
E5F8 NEGAT: | |
E5F8 ; fastest? .... (3+6+5 = 14T) | |
E5F8 CC 00 00 LDD #0 ; 3T | |
E5FB A3 E4 SUBD ,s ; 6T | |
E5FD ED E4 STD ,s ; 5T | |
E5FF 37 80 PULU pc | |
E601 ; alternate ... (7+3+6 = 16T) | |
E601 60 61 NEG 1,s ; high 7T | |
E603 26 04 BNE NEGAT1 ; 3T | |
E605 60 E4 NEG ,s ; low with 1+ carry 6T | |
E607 37 80 PULU pc | |
E609 63 E4 NEGAT1: COM ,s | |
E60B 37 80 PULU pc | |
E60D ; slow HL ... | |
E60D ; jsr DOLST | |
E60D ; FDB INVER,PLUS1,EXIT | |
E60D ; | |
E60D ; DNEGATE ( d -- -d ) | |
E60D ; Two's complement of top double. | |
E60D ; | |
E60D E6 19 E5 F1 FDB DNEGA,L750 | |
E611 07 44 4E 45 47 41 54 45 L760: FCB 7,"DNEGATE" | |
E619 DNEGA: | |
E619 CC 00 00 LDD #0 | |
E61C A3 62 SUBD 2,s ; low word | |
E61E ED 62 STD 2,s | |
E620 CC 00 00 LDD #0 | |
E623 E2 61 SBCB 1,s ; high word low byte | |
E625 A2 E4 SBCA ,s ; high word high byte | |
E627 ED E4 STD ,s | |
E629 37 80 PULU pc | |
E62B ; slow HL ... | |
E62B ; jsr DOLST | |
E62B ; FDB INVER,TOR,INVER | |
E62B ; FDB DOLIT,1,UPLUS | |
E62B ; FDB RFROM,PLUS,EXIT | |
E62B ; | |
E62B ; - ( n1 n2 -- n1-n2 ) | |
E62B ; Subtraction. | |
E62B ; | |
E62B E6 31 E6 11 FDB SUBB,L760 | |
E62F 01 2D L770: FCB 1,"-" | |
E631 EC 62 SUBB: LDD 2,s | |
E633 A3 E1 SUBD ,s++ | |
E635 ED E4 STD ,s | |
E637 37 80 PULU pc | |
E639 ; slow HL ... | |
E639 ; jsr DOLST | |
E639 ; FDB NEGAT,PLUS,EXIT | |
E639 ; | |
E639 ; ABS ( n -- n ) | |
E639 ; Return the absolute value of n. | |
E639 ; | |
E639 E6 41 E6 2F FDB ABSS,L770 | |
E63D 03 41 42 53 L780: FCB 3,"ABS" | |
E641 BD E1 12 ABSS: JSR DOLST | |
E644 E2 21 E2 50 FDB DUPP,ZLESS | |
E648 E1 40 E6 4E FDB QBRAN,ABS1 | |
E64C E5 F8 FDB NEGAT | |
E64E E1 71 ABS1: FDB EXIT | |
E650 ; | |
E650 ; = ( w w -- t ) | |
E650 ; Return true if top two are equal. | |
E650 ; | |
E650 E6 56 E6 3D FDB EQUAL,L780 | |
E654 01 3D L790: FCB 1,"=" | |
E656 EQUAL: | |
E656 8E FF FF LDX #TRUEE | |
E659 35 06 PULS d ; first value | |
E65B 10 A3 E4 CMPD ,s ; compare to 2nd value | |
E65E 27 03 BEQ EQUAL1 ; equal -> true | |
E660 8E 00 00 LDX #0 ; false (leax 1,x save 1 byte, but is slower) | |
E663 AF E4 EQUAL1: STX ,s | |
E665 37 80 PULU pc | |
E667 ; slow HL ... | |
E667 ; jsr DOLST | |
E667 ; FDB XORR | |
E667 ; FDB QBRAN,EQU1 | |
E667 ; FDB DOLIT,0,EXIT | |
E667 ;EQU1: FDB DOLIT,TRUEE,EXIT | |
E667 ; | |
E667 ; U< ( u1 u2 -- t ) | |
E667 ; Unsigned compare of top two items. | |
E667 ; | |
E667 E6 6E E6 54 FDB ULESS,L790 | |
E66B 02 55 3C L800: FCB 2,"U<" | |
E66E ULESS: | |
E66E 8E FF FF LDX #TRUEE ; true | |
E671 35 06 PULS d ; u2 | |
E673 10 A3 E4 CMPD ,s ; u2 - u1 | |
E676 22 03 BHI ULES1 ; unsigned: u2 higher u1 | |
E678 8E 00 00 LDX #0 ; false | |
E67B AF E4 ULES1: STX ,s | |
E67D 37 80 PULU pc | |
E67F ; slow HL ... | |
E67F ; jsr DOLST | |
E67F ; FDB DDUP,XORR,ZLESS | |
E67F ; FDB QBRAN,ULES1 | |
E67F ; FDB SWAP,DROP,ZLESS,EXIT | |
E67F ;ULES1: FDB SUBB,ZLESS,EXIT | |
E67F ; | |
E67F ; < ( n1 n2 -- t ) | |
E67F ; Signed compare of top two items. | |
E67F ; | |
E67F E6 85 E6 6B FDB LESS,L800 | |
E683 01 3C L810: FCB 1,"<" | |
E685 LESS: | |
E685 8E FF FF LDX #TRUEE ; true | |
E688 35 06 PULS d ; n2 | |
E68A 10 A3 E4 CMPD ,s ; n2 - n1 | |
E68D 2E 03 BGT LESS1 ; signed: n2 greater than n1 | |
E68F 8E 00 00 LDX #0 ; false | |
E692 AF E4 LESS1: STX ,s | |
E694 37 80 PULU pc | |
E696 ; | |
E696 ; slow HL ... | |
E696 ; jsr DOLST | |
E696 ; FDB DDUP,XORR,ZLESS | |
E696 ; FDB QBRAN,LESS1 | |
E696 ; FDB DROP,ZLESS,EXIT | |
E696 ;LESS1: FDB SUBB,ZLESS,EXIT | |
E696 ; | |
E696 ; MAX ( n n -- n ) | |
E696 ; Return the greater of two top stack items. | |
E696 ; | |
E696 E6 9E E6 83 FDB MAX,L810 | |
E69A 03 4D 41 58 L820: FCB 3,"MAX" | |
E69E BD E1 12 MAX: JSR DOLST | |
E6A1 E5 21 E6 85 FDB DDUP,LESS | |
E6A5 E1 40 E6 AB FDB QBRAN,MAX1 | |
E6A9 E2 30 FDB SWAP | |
E6AB E2 15 E1 71 MAX1: FDB DROP,EXIT | |
E6AF ; | |
E6AF ; MIN ( n n -- n ) | |
E6AF ; Return the smaller of top two stack items. | |
E6AF ; | |
E6AF E6 B7 E6 9A FDB MIN,L820 | |
E6B3 03 4D 49 4E L830: FCB 3,"MIN" | |
E6B7 BD E1 12 MIN: JSR DOLST | |
E6BA E5 21 E2 30 E6 85 FDB DDUP,SWAP,LESS | |
E6C0 E1 40 E6 C6 FDB QBRAN,MIN1 | |
E6C4 E2 30 FDB SWAP | |
E6C6 E2 15 E1 71 MIN1: FDB DROP,EXIT | |
E6CA ; | |
E6CA ; WITHIN ( u ul uh -- t ) | |
E6CA ; Return true if u is within the range of ul and uh. ( ul <= u < uh ) | |
E6CA ; | |
E6CA E6 D5 E6 B3 FDB WITHI,L830 | |
E6CE 06 57 49 54 48 49 4E L840: FCB 6,"WITHIN" | |
E6D5 BD E1 12 WITHI: JSR DOLST | |
E6D8 E2 43 E6 31 E1 EB FDB OVER,SUBB,TOR | |
E6DE E6 31 E1 CB E6 6E E1 71 FDB SUBB,RFROM,ULESS,EXIT | |
E6E6 ; | |
E6E6 ; Divide | |
E6E6 ; | |
E6E6 ; U/ ( udl udh un -- ur uq ) | |
E6E6 ; Unsigned divide of a double by a single. Return mod and quotient. | |
E6E6 ; | |
E6E6 ; Special cases: | |
E6E6 ; 1. overflow: quotient overflow if dividend is to great (remainder = divisor), | |
E6E6 ; remainder is set to $FFFF -> special handling. | |
E6E6 ; This is checked also right before the main loop. | |
E6E6 ; 2. underflow: divisor does not fit into dividend -> remainder | |
E6E6 ; get the value of the dividend -> automatically covered. | |
E6E6 ; | |
E6E6 ; overflow: quotient = $FFFF, remainder = divisor | |
E6E6 ; underflow: quotient = $0000, remainder = dividend low | |
E6E6 ; division by zero: quotient = $FFFF, remainder = $0000 | |
E6E6 ; | |
E6E6 ; Testvalues: | |
E6E6 ; | |
E6E6 ; DIVH DIVL DVSR QUOT REM comment | |
E6E6 ; | |
E6E6 ; 0100 0000 FFFF 0100 0100 maximum divisor | |
E6E6 ; 0000 0001 8000 0000 0001 underflow (REM = DIVL) | |
E6E6 ; 0000 5800 3000 0001 1800 normal divsion | |
E6E6 ; 5800 0000 3000 FFFF 3000 overflow | |
E6E6 ; 0000 0001 0000 FFFF 0000 overflow (division by zero) | |
E6E6 ; | |
E6E6 E6 ED E6 CE FDB USLASH,L840 | |
E6EA 02 55 2F L845: FCB 2,"U/" | |
E6ED ; | |
E6ED USLASH: | |
E6ED 8E 00 10 LDX #16 | |
E6F0 EC 62 LDD 2,s ; udh | |
E6F2 10 A3 E4 CMPD ,s ; dividend to great? | |
E6F5 24 24 BHS UMMODOV ; quotient overflow! | |
E6F7 68 65 ASL 5,s ; udl low | |
E6F9 69 64 ROL 4,s ; udl high | |
E6FB ; | |
E6FB 59 UMMOD1: ROLB | |
E6FC 49 ROLA | |
E6FD 25 09 BCS UMMOD2 ; bit 16 means always greater as divisor | |
E6FF 10 A3 E4 CMPD ,s ; divide by un | |
E702 24 04 BHS UMMOD2 ; higher or same as divisor? | |
E704 1C FE ANDCC #$fe ; clc - clear carry flag | |
E706 20 04 BRA UMMOD3 | |
E708 A3 E4 UMMOD2: SUBD ,s | |
E70A 1A 01 ORCC #$01 ; sec - set carry flag | |
E70C 69 65 UMMOD3: ROL 5,s | |
E70E 69 64 ROL 4,s | |
E710 30 1F LEAX -1,x | |
E712 26 E7 BNE UMMOD1 | |
E714 ; | |
E714 AE 64 LDX 4,s ; quotient | |
E716 10 A3 E4 CMPD ,s ; remainder >= divisor -> overflow | |
E719 25 05 BLO UMMOD4 | |
E71B UMMODOV: | |
E71B EC E4 LDD ,s ; remainder set to divisor | |
E71D 8E FF FF LDX #$FFFF ; quotient = FFFF (-1) marks overflow | |
E720 ; (case 1) | |
E720 UMMOD4: | |
E720 32 62 LEAS 2,s ; un (divisor thrown away) | |
E722 AF E4 STX ,s ; quotient to TOS | |
E724 ED 62 STD 2,s ; remainder 2nd | |
E726 ; | |
E726 37 80 PULU pc ; NEXT | |
E728 ; | |
E728 ; | |
E728 ; UM/MOD ( udl udh un -- ur uq ) | |
E728 ; Unsigned divide of a double by a single. Return mod and quotient. | |
E728 ; | |
E728 E7 33 E6 EA FDB UMMOD,L845 | |
E72C 06 55 4D 2F 4D 4F 44 L850: FCB 6,"UM/MOD" | |
E733 UMMOD: | |
E733 7E E6 ED JMP USLASH | |
E736 ; slow HL ... | |
E736 BD E1 12 JSR DOLST | |
E739 E5 21 E6 6E FDB DDUP,ULESS | |
E73D E1 40 E7 89 FDB QBRAN,UMM4 | |
E741 E5 F8 E0 EF 00 0F E1 EB FDB NEGAT,DOLIT,15,TOR | |
E749 E1 EB E2 21 E2 D4 UMM1: FDB TOR,DUPP,UPLUS | |
E74F E1 EB E1 EB E2 21 E2 D4 FDB TOR,TOR,DUPP,UPLUS | |
E757 E1 CB E5 CF E2 21 FDB RFROM,PLUS,DUPP | |
E75D E1 CB E1 DE E2 30 E1 EB FDB RFROM,RAT,SWAP,TOR | |
E765 E2 D4 E1 CB E2 87 FDB UPLUS,RFROM,ORR | |
E76B E1 40 E7 7B FDB QBRAN,UMM2 | |
E76F E1 EB E2 15 E5 96 E1 CB FDB TOR,DROP,PLUS1,RFROM | |
E777 E1 57 E7 7D FDB BRAN,UMM3 | |
E77B E2 15 UMM2: FDB DROP | |
E77D E1 CB UMM3: FDB RFROM | |
E77F E1 21 E7 49 FDB DONXT,UMM1 | |
E783 E2 15 E2 30 E1 71 FDB DROP,SWAP,EXIT | |
E789 E2 15 E5 0F UMM4: FDB DROP,DDROP | |
E78D E0 EF FF FF E2 21 E1 71 FDB DOLIT,-1,DUPP,EXIT | |
E795 ; | |
E795 ; M/MOD ( d n -- r q ) | |
E795 ; Signed floored divide of double by single. Return mod and quotient. | |
E795 ; | |
E795 E7 9F E7 2C FDB MSMOD,L850 | |
E799 05 4D 2F 4D 4F 44 L860: FCB 5,"M/MOD" | |
E79F MSMOD: | |
E79F BD E1 12 JSR DOLST | |
E7A2 E2 21 E2 50 E2 21 E1 EB FDB DUPP,ZLESS,DUPP,TOR | |
E7AA E1 40 E7 B6 FDB QBRAN,MMOD1 | |
E7AE E5 F8 E1 EB E6 19 E1 CB FDB NEGAT,TOR,DNEGA,RFROM | |
E7B6 E1 EB E2 21 E2 50 MMOD1: FDB TOR,DUPP,ZLESS | |
E7BC E1 40 E7 C4 FDB QBRAN,MMOD2 | |
E7C0 E1 DE E5 CF FDB RAT,PLUS | |
E7C4 E1 CB E7 33 E1 CB MMOD2: FDB RFROM,UMMOD,RFROM | |
E7CA E1 40 E7 D4 FDB QBRAN,MMOD3 | |
E7CE E2 30 E5 F8 E2 30 FDB SWAP,NEGAT,SWAP | |
E7D4 E1 71 MMOD3: FDB EXIT | |
E7D6 ; | |
E7D6 ; /MOD ( n n -- r q ) | |
E7D6 ; Signed divide. Return mod and quotient. | |
E7D6 ; | |
E7D6 E7 DF E7 99 FDB SLMOD,L860 | |
E7DA 04 2F 4D 4F 44 L870: FCB 4,"/MOD" | |
E7DF BD E1 12 SLMOD: JSR DOLST | |
E7E2 E2 43 E2 50 E2 30 E7 9F E1 71 FDB OVER,ZLESS,SWAP,MSMOD,EXIT | |
E7EC ; | |
E7EC ; MOD ( n n -- r ) | |
E7EC ; Signed divide. Return mod only. | |
E7EC ; | |
E7EC E7 F4 E7 DA FDB MODD,L870 | |
E7F0 03 4D 4F 44 L880: FCB 3,"MOD" | |
E7F4 BD E1 12 MODD: JSR DOLST | |
E7F7 E7 DF E2 15 E1 71 FDB SLMOD,DROP,EXIT | |
E7FD ; | |
E7FD ; / ( n n -- q ) | |
E7FD ; Signed divide. Return quotient only. | |
E7FD ; | |
E7FD E8 03 E7 F0 FDB SLASH,L880 | |
E801 01 2F L890: FCB 1,"/" | |
E803 SLASH: | |
E803 BD E1 12 JSR DOLST | |
E806 E7 DF E2 30 E2 15 E1 71 FDB SLMOD,SWAP,DROP,EXIT | |
E80E ; | |
E80E ; Multiply | |
E80E ; | |
E80E ; UM* ( u u -- ud ) | |
E80E ; Unsigned multiply. Return double product. | |
E80E ; | |
E80E E8 16 E8 01 FDB UMSTA,L890 | |
E812 03 55 4D 2A L900: FCB 3,"UM*" | |
E816 UMSTA: | |
E816 8E 00 11 LDX #17 ; 16 adds and 17 shifts ... | |
E819 4F CLRA ; result high word | |
E81A 5F CLRB | |
E81B 20 06 BRA UUMSTA3 | |
E81D 24 02 UUMSTA1: BCC UUMSTA2 | |
E81F E3 E4 ADDD ,s | |
E821 46 UUMSTA2: RORA | |
E822 56 RORB ; low, result high word | |
E823 66 62 UUMSTA3: ROR 2,s | |
E825 66 63 ROR 3,s ; shift multiplier low, result low word | |
E827 30 1F LEAX -1,x | |
E829 26 F2 BNE UUMSTA1 | |
E82B ED E4 STD ,s | |
E82D 37 80 PULU pc | |
E82F ; slow HL ... | |
E82F ; jsr DOLST | |
E82F ; FDB DOLIT,0,SWAP,DOLIT,15,TOR | |
E82F ;UMST1: FDB DUPP,UPLUS,TOR,TOR | |
E82F ; FDB DUPP,UPLUS,RFROM,PLUS,RFROM | |
E82F ; FDB QBRAN,UMST2 | |
E82F ; FDB TOR,OVER,UPLUS,RFROM,PLUS | |
E82F ;UMST2: FDB DONXT,UMST1 | |
E82F ; FDB ROT,DROP,EXIT | |
E82F ; | |
E82F ; _UM* ( u u -- ud ) | |
E82F ; Unsigned multiply. Return double product. | |
E82F ; | |
E82F E8 38 E8 12 FDB UUMSTA,L900 | |
E833 04 5F 55 4D 2A L900A: FCB 4,"_UM*" | |
E838 UUMSTA: | |
E838 BD E1 12 JSR DOLST | |
E83B E0 EF 00 00 E2 30 E0 EF 00 0F E1 EB FDB DOLIT,0,SWAP,DOLIT,15,TOR | |
E847 E2 21 E2 D4 E1 EB E1 EB UMST1: FDB DUPP,UPLUS,TOR,TOR | |
E84F E2 21 E2 D4 E1 CB E5 CF E1 CB FDB DUPP,UPLUS,RFROM,PLUS,RFROM | |
E859 E1 40 E8 67 FDB QBRAN,UMST2 | |
E85D E1 EB E2 43 E2 D4 E1 CB E5 CF FDB TOR,OVER,UPLUS,RFROM,PLUS | |
E867 E1 21 E8 47 UMST2: FDB DONXT,UMST1 | |
E86B E4 F8 E2 15 E1 71 FDB ROT,DROP,EXIT | |
E871 ; | |
E871 ; * ( n n -- n ) | |
E871 ; Signed multiply. Return single product. | |
E871 ; XXX Not really signed, -200 -200 * -> -25536 | |
E871 ; | |
E871 E8 77 E8 33 FDB STAR,L900A | |
E875 01 2A L910: FCB 1,"*" | |
E877 STAR: | |
E877 BD E1 12 JSR DOLST | |
E87A E8 87 E2 15 E1 71 FDB MSTAR,DROP,EXIT | |
E880 ; | |
E880 ; M* ( n n -- d ) | |
E880 ; Signed multiply. Return double product. | |
E880 ; | |
E880 E8 87 E8 75 FDB MSTAR,L910 | |
E884 02 4D 2A L920: FCB 2,"M*" | |
E887 MSTAR: | |
E887 BD E1 12 JSR DOLST | |
E88A E5 21 E2 99 E2 50 E1 EB FDB DDUP,XORR,ZLESS,TOR | |
E892 E6 41 E2 30 E6 41 E8 16 FDB ABSS,SWAP,ABSS,UMSTA | |
E89A E1 CB FDB RFROM | |
E89C E1 40 E8 A2 FDB QBRAN,MSTA1 | |
E8A0 E6 19 FDB DNEGA | |
E8A2 E1 71 MSTA1: FDB EXIT | |
E8A4 ; | |
E8A4 ; */MOD ( n1 n2 n3 -- r q ) | |
E8A4 ; Multiply n1 and n2, then divide by n3. Return mod and quotient. | |
E8A4 ; | |
E8A4 E8 AE E8 84 FDB SSMOD,L920 | |
E8A8 05 2A 2F 4D 4F 44 L930: FCB 5,"*/MOD" | |
E8AE BD E1 12 SSMOD: JSR DOLST | |
E8B1 E1 EB E8 87 E1 CB E7 9F E1 71 FDB TOR,MSTAR,RFROM,MSMOD,EXIT | |
E8BB ; | |
E8BB ; */ ( n1 n2 n3 -- q ) | |
E8BB ; Multiply n1 by n2, then divide by n3. Return quotient only. | |
E8BB ; | |
E8BB E8 C2 E8 A8 FDB STASL,L930 | |
E8BF 02 2A 2F L940: FCB 2,"*/" | |
E8C2 BD E1 12 STASL: JSR DOLST | |
E8C5 E8 AE E2 30 E2 15 E1 71 FDB SSMOD,SWAP,DROP,EXIT | |
E8CD ; | |
E8CD ; Miscellaneous | |
E8CD ; | |
E8CD ; CELL+ ( a -- a ) | |
E8CD ; Add cell size in byte to address. | |
E8CD ; | |
E8CD E8 D7 E8 BF FDB CELLP,L940 | |
E8D1 05 43 45 4C 4C 2B L950: FCB 5,"CELL+" | |
E8D7 BD E1 12 CELLP: JSR DOLST | |
E8DA E1 00 FDB DOCLIT | |
E8DC 02 FCB CELLL | |
E8DD E5 CF E1 71 FDB PLUS,EXIT | |
E8E1 ; | |
E8E1 ; CELL- ( a -- a ) | |
E8E1 ; Subtract cell size in byte from address. | |
E8E1 ; | |
E8E1 E8 EB E8 D1 FDB CELLM,L950 | |
E8E5 05 43 45 4C 4C 2D L960: FCB 5,"CELL-" | |
E8EB BD E1 12 CELLM: JSR DOLST | |
E8EE E1 00 FDB DOCLIT | |
E8F0 FE FCB 0-CELLL | |
E8F1 E5 CF E1 71 FDB PLUS,EXIT | |
E8F5 ; | |
E8F5 ; CELLS ( n -- n ) | |
E8F5 ; Multiply tos by cell size in bytes. | |
E8F5 ; | |
E8F5 E8 FF E8 E5 FDB CELLS,L960 | |
E8F9 05 43 45 4C 4C 53 L970: FCB 5,"CELLS" | |
E8FF BD E1 12 CELLS: JSR DOLST | |
E902 E1 00 FDB DOCLIT | |
E904 02 FCB CELLL | |
E905 E8 77 E1 71 FDB STAR,EXIT | |
E909 ; | |
E909 ; ALIGNED ( b -- a ) | |
E909 ; Align address to the cell boundary. | |
E909 ; | |
E909 E9 15 E8 F9 FDB ALGND,L970 | |
E90D 07 41 4C 49 47 4E 45 44 L975: FCB 7,"ALIGNED" | |
E915 BD E1 12 ALGND: JSR DOLST | |
E918 E1 71 FDB EXIT | |
E91A ; | |
E91A ; BL ( -- 32 ) | |
E91A ; Return 32, the blank character. | |
E91A ; | |
E91A E9 21 E9 0D FDB BLANK,L975 | |
E91E 02 42 4C L980: FCB 2,"BL" | |
E921 BLANK: | |
E921 BD E2 EF JSR DOCONST | |
E924 FDB " " | |
E924 ; jsr DOLST | |
E924 ; FDB DOLIT," ",EXIT | |
E924 ; | |
E924 ; >CHAR ( c -- c ) | |
E924 ; Filter non-printing characters. | |
E924 ; | |
E924 E9 2E E9 1E FDB TCHAR,L980 | |
E928 05 3E 43 48 41 52 L990: FCB 5,">CHAR" | |
E92E BD E1 12 TCHAR: JSR DOLST | |
E931 E0 EF 00 7F E2 76 E2 21 FDB DOLIT,$7F,ANDD,DUPP ;mask msb | |
E939 E1 00 FDB DOCLIT | |
E93B 7F FCB 127 | |
E93C E9 21 E6 D5 FDB BLANK,WITHI ;check for printable | |
E940 E1 40 E9 48 FDB QBRAN,TCHA1 | |
E944 E2 15 E0 EF FDB DROP,DOLIT,"_" ;replace non-printables | |
E948 E1 71 TCHA1: FDB EXIT | |
E94A ; | |
E94A ; DEPTH ( -- n ) | |
E94A ; Return the depth of the data stack. | |
E94A ; | |
E94A E9 54 E9 28 FDB DEPTH,L990 | |
E94E 05 44 45 50 54 48 L1000: FCB 5,"DEPTH" | |
E954 BD E1 12 DEPTH: JSR DOLST | |
E957 E1 F9 E3 6C E1 89 E2 30 E6 31 FDB SPAT,SZERO,AT,SWAP,SUBB | |
E961 E1 00 FDB DOCLIT | |
E963 02 FCB CELLL | |
E964 E8 03 E1 71 FDB SLASH,EXIT | |
E968 ; | |
E968 ; PICK ( ... +n -- ... w ) | |
E968 ; Copy the nth stack item to tos. | |
E968 ; | |
E968 E9 71 E9 4E FDB PICK,L1000 | |
E96C 04 50 49 43 4B L1010: FCB 4,"PICK" | |
E971 PICK: | |
E971 EC E4 LDD ,s | |
E973 C3 00 01 ADDD #1 ; correct index | |
E976 58 ASLB ; CELLL* (ASSERT: CELLL=2!!!) | |
E977 49 ROLA | |
E978 AE EB LDX d,s ; pick value | |
E97A AF E4 STX ,s ; replace TOP | |
E97C 37 80 PULU pc | |
E97E ; slow HL ... | |
E97E ; jsr DOLST | |
E97E ; FDB PLUS1,CELLS | |
E97E ; FDB SPAT,PLUS,AT,EXIT | |
E97E ; | |
E97E ; | |
E97E ; ROLL ( ... +n -- ... w ) | |
E97E ; Copy the nth stack item to tos. | |
E97E ; | |
E97E E9 87 E9 6C FDB ROLL,L1010 | |
E982 04 52 4F 4C 4C L1015: FCB 4,"ROLL" | |
E987 ROLL: | |
E987 ; XXX als Primitive! | |
E987 ; slow HL ... | |
E987 BD E1 12 JSR DOLST | |
E98A E2 21 E3 11 FDB DUPP,TWO | |
E98E E6 85 E1 40 E9 9A FDB LESS,QBRAN,ROL1 | |
E994 E2 15 E1 57 E9 A8 FDB DROP,BRAN,ROL2 | |
E99A E2 30 E1 EB E3 06 ROL1: FDB SWAP,TOR,ONE | |
E9A0 E6 31 FDB SUBB | |
E9A2 E9 87 E1 CB E2 30 FDB ROLL,RFROM,SWAP | |
E9A8 E1 71 ROL2: FDB EXIT | |
E9AA ; | |
E9AA ; Memory access | |
E9AA ; | |
E9AA ; +! ( n a -- ) | |
E9AA ; Add n to the contents at address a. | |
E9AA ; | |
E9AA E9 B1 E9 82 FDB PSTOR,L1015 | |
E9AE 02 2B 21 L1020: FCB 2,"+!" | |
E9B1 PSTOR: | |
E9B1 35 10 PULS x ; address | |
E9B3 35 06 PULS d ; value | |
E9B5 E3 84 ADDD ,x ; add to value from address | |
E9B7 ED 84 STD ,x ; store back | |
E9B9 37 80 PULU pc | |
E9BB ; | |
E9BB ; XXX als Primitive! | |
E9BB ; slow HL ... | |
E9BB ; jsr DOLST | |
E9BB ; FDB SWAP,OVER,AT,PLUS | |
E9BB ; FDB SWAP,STORE,EXIT | |
E9BB ; | |
E9BB ; 2! ( d a -- ) | |
E9BB ; Store the double integer to address a. | |
E9BB ; | |
E9BB E9 C2 E9 AE FDB DSTOR,L1020 | |
E9BF 02 32 21 L1030: FCB 2,"2!" | |
E9C2 DSTOR: | |
E9C2 ; XXX als Primitive! | |
E9C2 ; slow HL ... | |
E9C2 BD E1 12 JSR DOLST | |
E9C5 E2 30 E2 43 E1 7B FDB SWAP,OVER,STORE | |
E9CB E8 D7 E1 7B E1 71 FDB CELLP,STORE,EXIT | |
E9D1 ; | |
E9D1 ; 2@ ( a -- d ) | |
E9D1 ; Fetch double integer from address a. | |
E9D1 ; | |
E9D1 E9 D8 E9 BF FDB DAT,L1030 | |
E9D5 02 32 40 L1040: FCB 2,"2@" | |
E9D8 DAT: | |
E9D8 ; XXX als Primitive! | |
E9D8 ; slow HL ... | |
E9D8 BD E1 12 JSR DOLST | |
E9DB E2 21 E8 D7 E1 89 FDB DUPP,CELLP,AT | |
E9E1 E2 30 E1 89 E1 71 FDB SWAP,AT,EXIT | |
E9E7 ; | |
E9E7 ; COUNT ( b -- b +n ) | |
E9E7 ; Return count byte of a string and add 1 to byte address. | |
E9E7 ; | |
E9E7 E9 F1 E9 D5 FDB COUNT,L1040 | |
E9EB 05 43 4F 55 4E 54 L1050: FCB 5,"COUNT" | |
E9F1 BD E1 12 COUNT: JSR DOLST | |
E9F4 E2 21 E5 96 FDB DUPP,PLUS1 | |
E9F8 E2 30 E1 A5 E1 71 FDB SWAP,CAT,EXIT | |
E9FE ; | |
E9FE ; HERE ( -- a ) | |
E9FE ; Return the top of the code dictionary. | |
E9FE ; | |
E9FE EA 07 E9 EB FDB HERE,L1050 | |
EA02 04 48 45 52 45 L1060: FCB 4,"HERE" | |
EA07 BD E1 12 HERE: JSR DOLST | |
EA0A E4 93 E1 89 E1 71 FDB CP,AT,EXIT | |
EA10 ; | |
EA10 ; PAD ( -- a ) | |
EA10 ; Return the address of the text buffer above the code dictionary. | |
EA10 ; | |
EA10 EA 18 EA 02 FDB PAD,L1060 | |
EA14 03 50 41 44 L1070: FCB 3,"PAD" | |
EA18 BD E1 12 PAD: JSR DOLST | |
EA1B EA 07 E0 EF 00 50 E5 CF E1 71 FDB HERE,DOLIT,80,PLUS,EXIT | |
EA25 ; | |
EA25 ; TIB ( -- a ) | |
EA25 ; Return the address of the terminal input buffer. | |
EA25 ; | |
EA25 EA 2D EA 14 FDB TIB,L1070 | |
EA29 03 54 49 42 L1080: FCB 3,"TIB" | |
EA2D BD E1 12 TIB: JSR DOLST | |
EA30 E4 1A E8 D7 E1 89 E1 71 FDB NTIB,CELLP,AT,EXIT | |
EA38 ; | |
EA38 ; @EXECUTE ( a -- ) | |
EA38 ; Execute vector stored in address a. | |
EA38 ; | |
EA38 EA 45 EA 29 FDB ATEXE,L1080 | |
EA3C 08 40 45 58 45 43 55 54 45 L1090: FCB 8,"@EXECUTE" | |
EA45 BD E1 12 ATEXE: JSR DOLST | |
EA48 E1 89 E4 E3 FDB AT,QDUP ;?address or zero | |
EA4C E1 40 EA 52 FDB QBRAN,EXE1 | |
EA50 E1 67 FDB EXECU ;execute if non-zero | |
EA52 E1 71 EXE1: FDB EXIT | |
EA54 ; | |
EA54 ; CMOVE ( b1 b2 u -- ) | |
EA54 ; Copy u bytes from b1 to b2. | |
EA54 ; | |
EA54 EA 5E EA 3C FDB CMOVE,L1090 | |
EA58 05 43 4D 4F 56 45 L1100: FCB 5,"CMOVE" | |
EA5E CMOVE: | |
EA5E 7E EA 81 JMP CMOVEW | |
EA61 EC E4 LDD ,s ;count | |
EA63 27 18 BEQ CMOVE3 ;zero -> leave | |
EA65 5D TSTB ;count low | |
EA66 27 02 BEQ CMOVE1 | |
EA68 6C E4 INC ,s ;ajust high for to-0 decrementation | |
EA6A CMOVE1: | |
EA6A AE 62 LDX 2,s ;to addr | |
EA6C EF 62 STU 2,s ;save reg on stack | |
EA6E EE 64 LDU 4,s ;from addr | |
EA70 A6 C0 CMOVE2: LDA ,u+ | |
EA72 A7 80 STA ,x+ ;to | |
EA74 5A DECB ;low count | |
EA75 26 F9 BNE CMOVE2 | |
EA77 6A E4 DEC ,s ;high count | |
EA79 26 F5 BNE CMOVE2 | |
EA7B EE 62 LDU 2,s | |
EA7D 32 66 CMOVE3: LEAS 6,s | |
EA7F 37 80 PULU pc | |
EA81 ; | |
EA81 ; alternative, wordwise copy ... | |
EA81 EC E4 CMOVEW: LDD ,s | |
EA83 AE 62 LDX 2,s ; destination | |
EA85 10 AF E4 STY ,s ; save RP | |
EA88 EF 62 STU 2,s ; save IP | |
EA8A 10 AE 64 LDY 4,s ; source | |
EA8D 44 LSRA ; divide by 2, count words | |
EA8E 56 RORB ; | |
EA8F 34 01 PSHS cc | |
EA91 27 01 BEQ CMOVEW1 ; byte decrement correction | |
EA93 4C INCA ; byte decrement high byte correction | |
EA94 83 00 00 CMOVEW1: SUBD #0 | |
EA97 27 0A BEQ CMOVEW3 | |
EA99 EE A1 CMOVEW2: LDU ,y++ | |
EA9B EF 81 STU ,x++ ; destination | |
EA9D 5A DECB ; count low | |
EA9E 26 F9 BNE CMOVEW2 | |
EAA0 4A DECA ; count high (count to 0 corrected) | |
EAA1 26 F6 BNE CMOVEW2 | |
EAA3 35 01 CMOVEW3: PULS CC | |
EAA5 24 04 BCC CMOVEW4 | |
EAA7 A6 A4 LDA ,y | |
EAA9 A7 84 STA ,x | |
EAAB 35 60 CMOVEW4: PULS y,u | |
EAAD 32 62 LEAS 2,s ; drop 3rd parameter | |
EAAF 37 80 PULU pc ; next | |
EAB1 ; | |
EAB1 ; slow HL ... | |
EAB1 ; jsr DOLST | |
EAB1 ; FDB TOR | |
EAB1 ; FDB BRAN,CMOV2 | |
EAB1 ;CMOV1: FDB TOR,DUPP,CAT | |
EAB1 ; FDB RAT,CSTOR | |
EAB1 ; FDB PLUS1 | |
EAB1 ; FDB RFROM,PLUS1 | |
EAB1 ;CMOV2: FDB DONXT,CMOV1 | |
EAB1 ; FDB DDROP,EXIT | |
EAB1 ; | |
EAB1 ; | |
EAB1 ; FILL ( b u c -- ) | |
EAB1 ; Fill u bytes of character c to area beginning at b. | |
EAB1 ; | |
EAB1 EA BA EA 58 FDB FILL,L1100 | |
EAB5 04 46 49 4C 4C L1110: FCB 4,"FILL" | |
EABA FILL: | |
EABA EC 62 LDD 2,s ;count | |
EABC 27 12 BEQ NFILL3 ;zero -> leave | |
EABE 5D TSTB ;count low | |
EABF 27 02 BEQ NFILL1 | |
EAC1 6C 62 INC 2,s ;ajust high for to-0 decrementation | |
EAC3 NFILL1: | |
EAC3 AE 64 LDX 4,s ;to addr | |
EAC5 A6 61 LDA 1,s ;fill byte, low byte from TOS | |
EAC7 NFILL2: | |
EAC7 A7 80 STA ,x+ ;to | |
EAC9 5A DECB ;low count | |
EACA 26 FB BNE NFILL2 | |
EACC 6A 62 DEC 2,s ;high count | |
EACE 26 F7 BNE NFILL2 | |
EAD0 32 66 NFILL3: LEAS 6,s | |
EAD2 37 80 PULU pc | |
EAD4 ; slow HL ... | |
EAD4 ; jsr DOLST | |
EAD4 ; FDB SWAP,TOR,SWAP | |
EAD4 ; FDB BRAN,FILL2 | |
EAD4 ;FILL1: FDB DDUP,CSTOR,PLUS1 | |
EAD4 ;FILL2: FDB DONXT,FILL1 | |
EAD4 ; FDB DDROP,EXIT | |
EAD4 ; | |
EAD4 ; -TRAILING ( b u -- b u ) | |
EAD4 ; Adjust the count to eliminate trailing white space. | |
EAD4 ; | |
EAD4 EA E2 EA B5 FDB DTRAI,L1110 | |
EAD8 09 2D 54 52 41 49 4C 49 4E 47 L1120: FCB 9,"-TRAILING" | |
EAE2 BD E1 12 DTRAI: JSR DOLST | |
EAE5 E1 EB FDB TOR | |
EAE7 E1 57 EB 01 FDB BRAN,DTRA2 | |
EAEB E9 21 E2 43 E1 DE E5 CF E1 A5 E6 85 DTRA1: FDB BLANK,OVER,RAT,PLUS,CAT,LESS | |
EAF7 E1 40 EB 01 FDB QBRAN,DTRA2 | |
EAFB E1 CB E5 96 E1 71 FDB RFROM,PLUS1,EXIT | |
EB01 E1 21 EA EB DTRA2: FDB DONXT,DTRA1 | |
EB05 E2 FB E1 71 FDB ZERO,EXIT | |
EB09 ; | |
EB09 ; PACK$ ( b u a -- a ) | |
EB09 ; Build a counted string with u characters from b. Null fill. | |
EB09 ; | |
EB09 EB 13 EA D8 FDB PACKS,L1120 | |
EB0D 05 50 41 43 4B 24 L1130: FCB 5,"PACK$" | |
EB13 BD E1 12 PACKS: JSR DOLST | |
EB16 E2 21 E1 EB FDB DUPP,TOR ;strings only on cell boundary | |
EB1A E5 21 E1 96 FDB DDUP,CSTOR | |
EB1E E5 96 FDB PLUS1 ;count mod cell | |
EB20 E5 21 E5 CF FDB DDUP,PLUS | |
EB24 E2 FB E2 30 E1 96 FDB ZERO,SWAP,CSTOR ;null fill cell | |
EB2A E2 30 EA 5E E1 CB E1 71 FDB SWAP,CMOVE,RFROM,EXIT ;move string | |
EB32 ; | |
EB32 ; Numeric output, single precision | |
EB32 ; | |
EB32 ; DIGIT ( u -- c ) | |
EB32 ; Convert digit u to a character. | |
EB32 ; | |
EB32 EB 3C EB 0D FDB DIGIT,L1130 | |
EB36 05 44 49 47 49 54 L1140: FCB 5,"DIGIT" | |
EB3C BD E1 12 DIGIT: JSR DOLST | |
EB3F E1 00 FDB DOCLIT | |
EB41 09 FCB 9 | |
EB42 E2 43 E6 85 FDB OVER,LESS | |
EB46 E1 00 FDB DOCLIT | |
EB48 07 FCB 7 | |
EB49 E2 76 E5 CF FDB ANDD,PLUS | |
EB4D E0 EF E5 CF E1 71 FDB DOLIT,"0",PLUS,EXIT | |
EB53 ; | |
EB53 ; EXTRACT ( n base -- n c ) | |
EB53 ; Extract the least significant digit from n. | |
EB53 ; | |
EB53 EB 5F EB 36 FDB EXTRC,L1140 | |
EB57 07 45 58 54 52 41 43 54 L1150: FCB 7,"EXTRACT" | |
EB5F BD E1 12 EXTRC: JSR DOLST | |
EB62 E2 FB E2 30 E7 33 FDB ZERO,SWAP,UMMOD | |
EB68 E2 30 EB 3C E1 71 FDB SWAP,DIGIT,EXIT | |
EB6E ; | |
EB6E ; <# ( -- ) | |
EB6E ; Initiate the numeric output process. | |
EB6E ; | |
EB6E EB 75 EB 57 FDB BDIGS,L1150 | |
EB72 02 3C 23 L1160: FCB 2,"<#" | |
EB75 BD E1 12 BDIGS: JSR DOLST | |
EB78 EA 18 E4 54 E1 7B E1 71 FDB PAD,HLD,STORE,EXIT | |
EB80 ; | |
EB80 ; HOLD ( c -- ) | |
EB80 ; Insert a character into the numeric output string. | |
EB80 ; | |
EB80 ; | |
EB80 EB 89 EB 72 FDB HOLD,L1160 | |
EB84 04 48 4F 4C 44 L1170: FCB 4,"HOLD" | |
EB89 BD E1 12 HOLD: JSR DOLST | |
EB8C E4 54 E1 89 E5 A6 FDB HLD,AT,MINUS1 | |
EB92 E2 21 E4 54 E1 7B E1 96 E1 71 FDB DUPP,HLD,STORE,CSTOR,EXIT | |
EB9C ; | |
EB9C ; # ( u -- u ) | |
EB9C ; Extract one digit from u and append the digit to output string. | |
EB9C ; | |
EB9C EB A2 EB 84 FDB DIG,L1170 | |
EBA0 01 23 L1180: FCB 1,"#" | |
EBA2 BD E1 12 DIG: JSR DOLST | |
EBA5 E3 E4 E1 89 EB 5F EB 89 E1 71 FDB BASE,AT,EXTRC,HOLD,EXIT | |
EBAF ; | |
EBAF ; #S ( u -- 0 ) | |
EBAF ; Convert u until all digits are added to the output string. | |
EBAF ; | |
EBAF EB B6 EB A0 FDB DIGS,L1180 | |
EBB3 02 23 53 L1190: FCB 2,"#S" | |
EBB6 BD E1 12 DIGS: JSR DOLST | |
EBB9 EB A2 E2 21 DIGS1: FDB DIG,DUPP | |
EBBD E1 40 EB C5 FDB QBRAN,DIGS2 | |
EBC1 E1 57 EB B9 FDB BRAN,DIGS1 | |
EBC5 E1 71 DIGS2: FDB EXIT | |
EBC7 ; | |
EBC7 ; SIGN ( n -- ) | |
EBC7 ; Add a minus sign to the numeric output string. | |
EBC7 ; | |
EBC7 EB D0 EB B3 FDB SIGN,L1190 | |
EBCB 04 53 49 47 4E L1200: FCB 4,"SIGN" | |
EBD0 BD E1 12 SIGN: JSR DOLST | |
EBD3 E2 50 FDB ZLESS | |
EBD5 E1 40 EB DD FDB QBRAN,SIGN1 | |
EBD9 E0 EF EB 89 FDB DOLIT,"-",HOLD | |
EBDD E1 71 SIGN1: FDB EXIT | |
EBDF ; | |
EBDF ; #> ( w -- b u ) | |
EBDF ; Prepare the output string to be TYPE'd. | |
EBDF ; | |
EBDF EB E6 EB CB FDB EDIGS,L1200 | |
EBE3 02 23 3E L1210: FCB 2,"#>" | |
EBE6 BD E1 12 EDIGS: JSR DOLST | |
EBE9 E2 15 E4 54 E1 89 FDB DROP,HLD,AT | |
EBEF EA 18 E2 43 E6 31 E1 71 FDB PAD,OVER,SUBB,EXIT | |
EBF7 ; | |
EBF7 ; str ( w -- b u ) | |
EBF7 ; Convert a signed integer to a numeric string. | |
EBF7 ; | |
EBF7 EB FF EB E3 FDB STR,L1210 | |
EBFB 03 73 74 72 L1220: FCB 3,"str" | |
EBFF BD E1 12 STR: JSR DOLST | |
EC02 E2 21 E1 EB E6 41 FDB DUPP,TOR,ABSS | |
EC08 EB 75 EB B6 E1 CB FDB BDIGS,DIGS,RFROM | |
EC0E EB D0 EB E6 E1 71 FDB SIGN,EDIGS,EXIT | |
EC14 ; | |
EC14 ; HEX ( -- ) | |
EC14 ; Use radix 16 as base for numeric conversions. | |
EC14 ; | |
EC14 EC 1C EB FB FDB HEX,L1220 | |
EC18 03 48 45 58 L1230: FCB 3,"HEX" | |
EC1C BD E1 12 HEX: JSR DOLST | |
EC1F E1 00 FDB DOCLIT | |
EC21 10 FCB 16 | |
EC22 E3 E4 E1 7B E1 71 FDB BASE,STORE,EXIT | |
EC28 ; | |
EC28 ; DECIMAL ( -- ) | |
EC28 ; Use radix 10 as base for numeric conversions. | |
EC28 ; | |
EC28 EC 34 EC 18 FDB DECIM,L1230 | |
EC2C 07 44 45 43 49 4D 41 4C L1240: FCB 7,"DECIMAL" | |
EC34 BD E1 12 DECIM: JSR DOLST | |
EC37 E1 00 FDB DOCLIT | |
EC39 0A FCB 10 | |
EC3A E3 E4 E1 7B E1 71 FDB BASE,STORE,EXIT | |
EC40 ; | |
EC40 ; Numeric input, single precision | |
EC40 ; | |
EC40 ; DIGIT? ( c base -- u t ) | |
EC40 ; Convert a character to its numeric value. A flag indicates success. | |
EC40 ; | |
EC40 EC 4B EC 2C FDB DIGTQ,L1240 | |
EC44 06 44 49 47 49 54 3F L1250: FCB 6,"DIGIT?" | |
EC4B BD E1 12 DIGTQ: JSR DOLST | |
EC4E E1 EB E0 EF E6 31 FDB TOR,DOLIT,"0",SUBB | |
EC54 E1 00 FDB DOCLIT | |
EC56 09 FCB 9 | |
EC57 E2 43 E6 85 FDB OVER,LESS | |
EC5B E1 40 EC 6E FDB QBRAN,DGTQ1 | |
EC5F E1 00 FDB DOCLIT | |
EC61 07 FCB 7 | |
EC62 E6 31 FDB SUBB | |
EC64 E2 21 E0 EF 00 0A E6 85 E2 87 FDB DUPP,DOLIT,10,LESS,ORR | |
EC6E E2 21 E1 CB E6 6E E1 71 DGTQ1: FDB DUPP,RFROM,ULESS,EXIT | |
EC76 ; | |
EC76 ; NUMBER? ( a -- n T | a F ) | |
EC76 ; Convert a number string to integer. Push a flag on tos. | |
EC76 ; | |
EC76 EC 82 EC 44 FDB NUMBQ,L1250 | |
EC7A 07 4E 55 4D 42 45 52 3F L1260: FCB 7,"NUMBER?" | |
EC82 BD E1 12 NUMBQ: JSR DOLST | |
EC85 E3 E4 E1 89 E1 EB E2 FB E2 43 E9 F1 FDB BASE,AT,TOR,ZERO,OVER,COUNT | |
EC91 E2 43 E1 A5 E0 EF E6 56 FDB OVER,CAT,DOLIT,"$",EQUAL | |
EC99 E1 40 EC A7 FDB QBRAN,NUMQ1 | |
EC9D EC 1C E2 30 E5 96 FDB HEX,SWAP,PLUS1 | |
ECA3 E2 30 E5 A6 FDB SWAP,MINUS1 | |
ECA7 E2 43 E1 A5 E0 EF E6 56 E1 EB NUMQ1: FDB OVER,CAT,DOLIT,"-",EQUAL,TOR | |
ECB1 E2 30 E1 DE E6 31 E2 30 E1 DE E5 CF E4 E3 FDB SWAP,RAT,SUBB,SWAP,RAT,PLUS,QDUP | |
ECBF E1 40 ED 07 FDB QBRAN,NUMQ6 | |
ECC3 E5 A6 E1 EB FDB MINUS1,TOR | |
ECC7 E2 21 E1 EB E1 A5 E3 E4 E1 89 EC 4B NUMQ2: FDB DUPP,TOR,CAT,BASE,AT,DIGTQ | |
ECD3 E1 40 EC FB FDB QBRAN,NUMQ4 | |
ECD7 E2 30 E3 E4 E1 89 E8 77 E5 CF E1 CB FDB SWAP,BASE,AT,STAR,PLUS,RFROM | |
ECE3 E5 96 FDB PLUS1 | |
ECE5 E1 21 EC C7 FDB DONXT,NUMQ2 | |
ECE9 E1 DE E2 30 E2 15 FDB RAT,SWAP,DROP | |
ECEF E1 40 EC F5 FDB QBRAN,NUMQ3 | |
ECF3 E5 F8 FDB NEGAT | |
ECF5 E2 30 NUMQ3: FDB SWAP | |
ECF7 E1 57 ED 05 FDB BRAN,NUMQ5 | |
ECFB E1 CB E1 CB E5 0F E5 0F E2 FB NUMQ4: FDB RFROM,RFROM,DDROP,DDROP,ZERO | |
ED05 E2 21 NUMQ5: FDB DUPP | |
ED07 E1 CB E5 0F NUMQ6: FDB RFROM,DDROP | |
ED0B E1 CB E3 E4 E1 7B E1 71 FDB RFROM,BASE,STORE,EXIT | |
ED13 ; | |
ED13 ; Basic I/O | |
ED13 ; | |
ED13 ; ?KEY ( -- c T | F ) | |
ED13 ; Return input character and true, or a false if no input. | |
ED13 ; | |
ED13 ; | |
ED13 ED 1C EC 7A FDB QKEY,L1260 | |
ED17 04 3F 4B 45 59 L1270: FCB 4,"?KEY" | |
ED1C BD E1 12 QKEY: JSR DOLST | |
ED1F E3 88 EA 45 E1 71 FDB TQKEY,ATEXE,EXIT | |
ED25 ; | |
ED25 ; KEY ( -- c ) | |
ED25 ; Wait for and return an input character. | |
ED25 ; | |
ED25 ED 2D ED 17 FDB KEY,L1270 | |
ED29 03 4B 45 59 L1280: FCB 3,"KEY" | |
ED2D BD E1 12 KEY: JSR DOLST | |
ED30 ED 1C KEY1: FDB QKEY | |
ED32 E1 40 ED 30 FDB QBRAN,KEY1 | |
ED36 E1 71 FDB EXIT | |
ED38 ; | |
ED38 ; EMIT ( c -- ) | |
ED38 ; Send a character to the output device. | |
ED38 ; | |
ED38 ED 41 ED 29 FDB EMIT,L1280 | |
ED3C 04 45 4D 49 54 L1290: FCB 4,"EMIT" | |
ED41 BD E1 12 EMIT: JSR DOLST | |
ED44 E3 97 EA 45 E1 71 FDB TEMIT,ATEXE,EXIT | |
ED4A ; | |
ED4A ; NUF? ( -- t ) | |
ED4A ; Return false if no input, else pause and if CR return true. | |
ED4A ; | |
ED4A ED 53 ED 3C FDB NUFQ,L1290 | |
ED4E 04 4E 55 46 3F L1300: FCB 4,"NUF?" | |
ED53 BD E1 12 NUFQ: JSR DOLST | |
ED56 ED 1C E2 21 FDB QKEY,DUPP | |
ED5A E1 40 ED 67 FDB QBRAN,NUFQ1 | |
ED5E E5 0F ED 2D E1 00 FDB DDROP,KEY,DOCLIT | |
ED64 0A FCB CRR | |
ED65 E6 56 FDB EQUAL | |
ED67 E1 71 NUFQ1: FDB EXIT | |
ED69 ; | |
ED69 ; PACE ( -- ) | |
ED69 ; Send a pace character for the file downloading process. | |
ED69 ; | |
ED69 ED 72 ED 4E FDB PACE,L1300 | |
ED6D 04 50 41 43 45 L1310: FCB 4,"PACE" | |
ED72 BD E1 12 PACE: JSR DOLST | |
ED75 E1 00 FDB DOCLIT | |
ED77 0B FCB 11 | |
ED78 ED 41 E1 71 FDB EMIT,EXIT | |
ED7C ; | |
ED7C ; SPACE ( -- ) | |
ED7C ; Send the blank character to the output device. | |
ED7C ; | |
ED7C ED 86 ED 6D FDB SPACE,L1310 | |
ED80 05 53 50 41 43 45 L1320: FCB 5,"SPACE" | |
ED86 BD E1 12 SPACE: JSR DOLST | |
ED89 E9 21 ED 41 E1 71 FDB BLANK,EMIT,EXIT | |
ED8F ; | |
ED8F ; SPACES ( +n -- ) | |
ED8F ; Send n spaces to the output device. | |
ED8F ; | |
ED8F ED 9A ED 80 FDB SPACS,L1320 | |
ED93 06 53 50 41 43 45 53 L1330: FCB 6,"SPACES" | |
ED9A BD E1 12 SPACS: JSR DOLST | |
ED9D E2 FB E6 9E E1 EB FDB ZERO,MAX,TOR | |
EDA3 E1 57 ED A9 FDB BRAN,CHAR2 | |
EDA7 ED 86 CHAR1: FDB SPACE | |
EDA9 E1 21 ED A7 CHAR2: FDB DONXT,CHAR1 | |
EDAD E1 71 FDB EXIT | |
EDAF ; | |
EDAF ; TYPE ( b u -- ) | |
EDAF ; Output u characters from b. | |
EDAF ; | |
EDAF ED B8 ED 93 FDB TYPES,L1330 | |
EDB3 04 54 59 50 45 L1340: FCB 4,"TYPE" | |
EDB8 BD E1 12 TYPES: JSR DOLST | |
EDBB E1 EB FDB TOR | |
EDBD E1 57 ED C9 FDB BRAN,TYPE2 | |
EDC1 E2 21 E1 A5 ED 41 TYPE1: FDB DUPP,CAT,EMIT | |
EDC7 E5 96 FDB PLUS1 | |
EDC9 E1 21 ED C1 TYPE2: FDB DONXT,TYPE1 | |
EDCD E2 15 E1 71 FDB DROP,EXIT | |
EDD1 ; | |
EDD1 ; CR ( -- ) | |
EDD1 ; Output a carriage return and a line feed. | |
EDD1 ; | |
EDD1 ED D8 ED B3 FDB CR,L1340 | |
EDD5 02 43 52 L1350: FCB 2,"CR" | |
EDD8 BD E1 12 CR: JSR DOLST | |
EDDB E1 00 FDB DOCLIT | |
EDDD 0A FCB CRR | |
EDDE ED 41 FDB EMIT | |
EDE0 E1 00 FDB DOCLIT | |
EDE2 0D FCB LF | |
EDE3 ED 41 E1 71 FDB EMIT,EXIT | |
EDE7 ; | |
EDE7 ; do$ ( -- a ) | |
EDE7 ; Return the address of a compiled string. | |
EDE7 ; | |
EDE7 ED EF ED D5 FDB DOSTR,L1350 | |
EDEB 43 64 6F 24 L1360: FCB COMPO+3,"do$" | |
EDEF BD E1 12 DOSTR: JSR DOLST | |
EDF2 E1 CB E1 DE E1 CB E9 F1 E5 CF FDB RFROM,RAT,RFROM,COUNT,PLUS | |
EDFC E9 15 E1 EB E2 30 E1 EB E1 71 FDB ALGND,TOR,SWAP,TOR,EXIT | |
EE06 ; | |
EE06 ; $"| ( -- a ) | |
EE06 ; Run time routine compiled by $". Return address of a compiled string. | |
EE06 ; | |
EE06 EE 0E ED EB FDB STRQP,L1360 | |
EE0A 43 24 22 7C L1370: FCB COMPO+3,"$",$22,"|" | |
EE0E BD E1 12 STRQP: JSR DOLST | |
EE11 ED EF E1 71 FDB DOSTR,EXIT ;force a call to do$ | |
EE15 ; | |
EE15 ; ."| ( -- ) | |
EE15 ; Run time routine of ." . Output a compiled string. | |
EE15 ; | |
EE15 EE 1D EE 0A FDB DOTQP,L1370 | |
EE19 43 2E 22 7C L1380: FCB COMPO+3,".",$22,"|" | |
EE1D BD E1 12 DOTQP: JSR DOLST | |
EE20 ED EF E9 F1 ED B8 E1 71 FDB DOSTR,COUNT,TYPES,EXIT | |
EE28 ; | |
EE28 ; .R ( n +n -- ) | |
EE28 ; Display an integer in a field of n columns, right justified. | |
EE28 ; | |
EE28 EE 2F EE 19 FDB DOTR,L1380 | |
EE2C 02 2E 52 L1390: FCB 2,".R" | |
EE2F BD E1 12 DOTR: JSR DOLST | |
EE32 E1 EB EB FF E1 CB E2 43 E6 31 FDB TOR,STR,RFROM,OVER,SUBB | |
EE3C ED 9A ED B8 E1 71 FDB SPACS,TYPES,EXIT | |
EE42 ; | |
EE42 ; U.R ( u +n -- ) | |
EE42 ; Display an unsigned integer in n column, right justified. | |
EE42 ; | |
EE42 EE 4A EE 2C FDB UDOTR,L1390 | |
EE46 03 55 2E 52 L1400: FCB 3,"U.R" | |
EE4A BD E1 12 UDOTR: JSR DOLST | |
EE4D E1 EB EB 75 EB B6 EB E6 FDB TOR,BDIGS,DIGS,EDIGS | |
EE55 E1 CB E2 43 E6 31 FDB RFROM,OVER,SUBB | |
EE5B ED 9A ED B8 E1 71 FDB SPACS,TYPES,EXIT | |
EE61 ; | |
EE61 ; U. ( u -- ) | |
EE61 ; Display an unsigned integer in free format. | |
EE61 ; | |
EE61 EE 68 EE 46 FDB UDOT,L1400 | |
EE65 02 55 2E L1410: FCB 2,"U." | |
EE68 BD E1 12 UDOT: JSR DOLST | |
EE6B EB 75 EB B6 EB E6 FDB BDIGS,DIGS,EDIGS | |
EE71 ED 86 ED B8 E1 71 FDB SPACE,TYPES,EXIT | |
EE77 ; | |
EE77 ; . ( w -- ) | |
EE77 ; Display an integer in free format, preceeded by a space. | |
EE77 ; | |
EE77 EE 7D EE 65 FDB DOT,L1410 | |
EE7B 01 2E L1420: FCB 1,"." | |
EE7D BD E1 12 DOT: JSR DOLST | |
EE80 E3 E4 E1 89 E1 00 FDB BASE,AT,DOCLIT | |
EE86 0A FCB 10 | |
EE87 E2 99 FDB XORR ;?decimal | |
EE89 E1 40 EE 91 FDB QBRAN,DOT1 | |
EE8D EE 68 E1 71 FDB UDOT,EXIT ;no, display unsigned | |
EE91 EB FF ED 86 ED B8 E1 71 DOT1: FDB STR,SPACE,TYPES,EXIT | |
EE99 ; | |
EE99 ; ? ( a -- ) | |
EE99 ; Display the contents in a memory cell. | |
EE99 ; | |
EE99 EE 9F EE 7B FDB QUEST,L1420 | |
EE9D 01 3F L1430: FCB 1,"?" | |
EE9F BD E1 12 QUEST: JSR DOLST | |
EEA2 E1 89 EE 7D E1 71 FDB AT,DOT,EXIT | |
EEA8 ; | |
EEA8 ; Parsing | |
EEA8 ; | |
EEA8 ; parse ( b u c -- b u delta ; <string> ) | |
EEA8 ; Scan string delimited by c. Return found string and its offset. | |
EEA8 ; | |
EEA8 EE B2 EE 9D FDB PARS,L1430 | |
EEAC 05 70 61 72 73 65 L1440: FCB 5,"parse" | |
EEB2 BD E1 12 PARS: JSR DOLST | |
EEB5 E3 F1 E1 7B E2 43 E1 EB E2 21 FDB TEMP,STORE,OVER,TOR,DUPP | |
EEBF E1 40 EF 3B FDB QBRAN,PARS8 | |
EEC3 E5 A6 E3 F1 E1 89 E9 21 E6 56 FDB MINUS1,TEMP,AT,BLANK,EQUAL | |
EECD E1 40 EE F5 FDB QBRAN,PARS3 | |
EED1 E1 EB FDB TOR | |
EED3 E9 21 E2 43 E1 A5 PARS1: FDB BLANK,OVER,CAT | |
EED9 E6 31 E2 50 E5 DF FDB SUBB,ZLESS,INVER | |
EEDF E1 40 EE F3 FDB QBRAN,PARS2 | |
EEE3 E5 96 FDB PLUS1 | |
EEE5 E1 21 EE D3 FDB DONXT,PARS1 | |
EEE9 E1 CB E2 15 E2 FB E2 21 E1 71 FDB RFROM,DROP,ZERO,DUPP,EXIT | |
EEF3 E1 CB PARS2: FDB RFROM | |
EEF5 E2 43 E2 30 PARS3: FDB OVER,SWAP | |
EEF9 E1 EB FDB TOR | |
EEFB E3 F1 E1 89 E2 43 E1 A5 E6 31 PARS4: FDB TEMP,AT,OVER,CAT,SUBB | |
EF05 E3 F1 E1 89 E9 21 E6 56 FDB TEMP,AT,BLANK,EQUAL | |
EF0D E1 40 EF 13 FDB QBRAN,PARS5 | |
EF11 E2 50 FDB ZLESS | |
EF13 E1 40 EF 25 PARS5: FDB QBRAN,PARS6 | |
EF17 E5 96 FDB PLUS1 | |
EF19 E1 21 EE FB FDB DONXT,PARS4 | |
EF1D E2 21 E1 EB FDB DUPP,TOR | |
EF21 E1 57 EF 2F FDB BRAN,PARS7 | |
EF25 E1 CB E2 15 E2 21 PARS6: FDB RFROM,DROP,DUPP | |
EF2B E5 96 E1 EB FDB PLUS1,TOR | |
EF2F E2 43 E6 31 PARS7: FDB OVER,SUBB | |
EF33 E1 CB E1 CB E6 31 E1 71 FDB RFROM,RFROM,SUBB,EXIT | |
EF3B E2 43 E1 CB E6 31 E1 71 PARS8: FDB OVER,RFROM,SUBB,EXIT | |
EF43 ; | |
EF43 ; PARSE ( c -- b u ; <string> ) | |
EF43 ; Scan input stream and return counted string delimited by c. | |
EF43 ; | |
EF43 EF 4D EE AC FDB PARSE,L1440 | |
EF47 05 50 41 52 53 45 L1450: FCB 5,"PARSE" | |
EF4D BD E1 12 PARSE: JSR DOLST | |
EF50 E1 EB EA 2D E4 0C E1 89 E5 CF FDB TOR,TIB,INN,AT,PLUS ;current input buffer pointer | |
EF5A E4 1A E1 89 E4 0C E1 89 E6 31 FDB NTIB,AT,INN,AT,SUBB ;remaining count | |
EF64 E1 CB EE B2 E4 0C E9 B1 E1 71 FDB RFROM,PARS,INN,PSTOR,EXIT | |
EF6E ; | |
EF6E ; .( ( -- ) | |
EF6E ; Output following string up to next ) . | |
EF6E ; | |
EF6E EF 75 EF 47 FDB DOTPR,L1450 | |
EF72 82 2E 28 L1460: FCB IMEDD+2,".(" | |
EF75 BD E1 12 DOTPR: JSR DOLST | |
EF78 E0 EF EF 4D ED B8 E1 71 FDB DOLIT,")",PARSE,TYPES,EXIT | |
EF80 ; | |
EF80 ; ( ( -- ) | |
EF80 ; Ignore following string up to next ) . A comment. | |
EF80 ; | |
EF80 EF 86 EF 72 FDB PAREN,L1460 | |
EF84 81 28 L1470: FCB IMEDD+1,"(" | |
EF86 BD E1 12 PAREN: JSR DOLST | |
EF89 E0 EF EF 4D E5 0F E1 71 FDB DOLIT,")",PARSE,DDROP,EXIT | |
EF91 ; | |
EF91 ; \ ( -- ) | |
EF91 ; Ignore following text till the end of line. | |
EF91 ; | |
EF91 EF 97 EF 84 FDB BKSLA,L1470 | |
EF95 81 5C L1480: FCB IMEDD+1,92 | |
EF97 BD E1 12 BKSLA: JSR DOLST | |
EF9A E4 1A E1 89 E4 0C E1 7B E1 71 FDB NTIB,AT,INN,STORE,EXIT | |
EFA4 ; | |
EFA4 ; CHAR ( -- c ) | |
EFA4 ; Parse next word and return its first character. | |
EFA4 ; | |
EFA4 EF AD EF 95 FDB CHAR,L1480 | |
EFA8 04 43 48 41 52 L1490: FCB 4,"CHAR" | |
EFAD BD E1 12 CHAR: JSR DOLST | |
EFB0 E9 21 EF 4D E2 15 E1 A5 E1 71 FDB BLANK,PARSE,DROP,CAT,EXIT | |
EFBA ; | |
EFBA ; TOKEN ( -- a ; <string> ) | |
EFBA ; Parse a word from input stream and copy it to name dictionary. | |
EFBA ; | |
EFBA EF C4 EF A8 FDB TOKEN,L1490 | |
EFBE 05 54 4F 4B 45 4E L1500: FCB 5,"TOKEN" | |
EFC4 BD E1 12 TOKEN: JSR DOLST | |
EFC7 E9 21 EF 4D E1 00 FDB BLANK,PARSE,DOCLIT | |
EFCD 1F FCB 31 | |
EFCE E6 B7 FDB MIN | |
EFD0 E4 9F E1 89 E2 43 E6 31 E8 EB FDB NP,AT,OVER,SUBB,CELLM | |
EFDA EB 13 E1 71 FDB PACKS,EXIT | |
EFDE ; | |
EFDE ; WORD ( c -- a ; <string> ) | |
EFDE ; Parse a word from input stream and copy it to code dictionary. | |
EFDE ; | |
EFDE EF E7 EF BE FDB WORD,L1500 | |
EFE2 04 57 4F 52 44 L1510: FCB 4,"WORD" | |
EFE7 BD E1 12 WORD: JSR DOLST | |
EFEA EF 4D EA 07 EB 13 E1 71 FDB PARSE,HERE,PACKS,EXIT | |
EFF2 ; | |
EFF2 ; Dictionary search | |
EFF2 ; | |
EFF2 ; NAME> ( na -- ca ) | |
EFF2 ; Return a code address given a name address. | |
EFF2 ; | |
EFF2 EF FC EF E2 FDB NAMET,L1510 | |
EFF6 05 4E 41 4D 45 3E L1520: FCB 5,"NAME>" | |
EFFC BD E1 12 NAMET: JSR DOLST | |
EFFF E8 EB E8 EB E1 89 E1 71 FDB CELLM,CELLM,AT,EXIT | |
F007 ; | |
F007 ; SAME? ( a a u -- a a f \ -0+ ) | |
F007 ; Compare u bytes in two strings. Return 0 if identical. | |
F007 ; | |
F007 F0 11 EF F6 FDB SAMEQ,L1520 | |
F00B 05 53 41 4D 45 3F L1530: FCB 5,"SAME?" | |
F011 BD E1 12 SAMEQ: JSR DOLST | |
F014 E1 EB FDB TOR | |
F016 E1 57 F0 38 FDB BRAN,SAME2 | |
F01A E2 43 E1 DE E5 CF E1 A5 SAME1: FDB OVER,RAT,PLUS,CAT | |
F022 E2 43 E1 DE E5 CF E1 A5 FDB OVER,RAT,PLUS,CAT | |
F02A E6 31 E4 E3 FDB SUBB,QDUP | |
F02E E1 40 F0 38 FDB QBRAN,SAME2 | |
F032 E1 CB E2 15 E1 71 FDB RFROM,DROP,EXIT | |
F038 E1 21 F0 1A SAME2: FDB DONXT,SAME1 | |
F03C E0 EF 00 00 E1 71 FDB DOLIT,0,EXIT | |
F042 ; | |
F042 ; find ( a va -- ca na | a F ) | |
F042 ; Search a vocabulary for a string. Return ca and na if succeeded. | |
F042 ; | |
F042 F0 4B F0 0B FDB FIND,L1530 | |
F046 04 66 69 6E 64 L1540: FCB 4,"find" | |
F04B BD E1 12 FIND: JSR DOLST | |
F04E E2 30 E2 21 E1 A5 E5 A6 FDB SWAP,DUPP,CAT,MINUS1 | |
F056 E3 F1 E1 7B FDB TEMP,STORE | |
F05A E2 21 E1 89 E1 EB E8 D7 E2 30 FDB DUPP,AT,TOR,CELLP,SWAP | |
F064 E1 89 E2 21 FIND1: FDB AT,DUPP | |
F068 E1 40 F0 92 FDB QBRAN,FIND6 | |
F06C E2 21 E1 89 E0 EF 1F 7F E2 76 E1 DE E2 99 FDB DUPP,AT,DOLIT,MASKK,ANDD,RAT,XORR | |
F07A E1 40 F0 86 FDB QBRAN,FIND2 | |
F07E E8 D7 E3 1D FDB CELLP,MONE | |
F082 E1 57 F0 8E FDB BRAN,FIND3 | |
F086 E8 D7 E3 F1 E1 89 F0 11 FIND2: FDB CELLP,TEMP,AT,SAMEQ | |
F08E E1 57 F0 9E FIND3: FDB BRAN,FIND4 | |
F092 E1 CB E2 15 FIND6: FDB RFROM,DROP | |
F096 E2 30 E8 EB E2 30 E1 71 FDB SWAP,CELLM,SWAP,EXIT | |
F09E E1 40 F0 AA FIND4: FDB QBRAN,FIND5 | |
F0A2 E8 EB E8 EB FDB CELLM,CELLM | |
F0A6 E1 57 F0 64 FDB BRAN,FIND1 | |
F0AA E1 CB E2 15 E2 30 E2 15 FIND5: FDB RFROM,DROP,SWAP,DROP | |
F0B2 E8 EB FDB CELLM | |
F0B4 E2 21 EF FC E2 30 E1 71 FDB DUPP,NAMET,SWAP,EXIT | |
F0BC ; | |
F0BC ; NAME? ( a -- ca na | a F ) | |
F0BC ; Search all context vocabularies for a string. | |
F0BC ; | |
F0BC F0 C6 F0 46 FDB NAMEQ,L1540 | |
F0C0 05 4E 41 4D 45 3F L1550: FCB 5,"NAME?" | |
F0C6 BD E1 12 NAMEQ: JSR DOLST | |
F0C9 E4 76 E2 21 E9 D8 E2 99 FDB CNTXT,DUPP,DAT,XORR | |
F0D1 E1 40 F0 D7 FDB QBRAN,NAMQ1 | |
F0D5 E8 EB FDB CELLM | |
F0D7 E1 EB NAMQ1: FDB TOR | |
F0D9 E1 CB E8 D7 E2 21 E1 EB NAMQ2: FDB RFROM,CELLP,DUPP,TOR | |
F0E1 E1 89 E4 E3 FDB AT,QDUP | |
F0E5 E1 40 F0 F7 FDB QBRAN,NAMQ3 | |
F0E9 F0 4B E4 E3 FDB FIND,QDUP | |
F0ED E1 40 F0 D9 FDB QBRAN,NAMQ2 | |
F0F1 E1 CB E2 15 E1 71 FDB RFROM,DROP,EXIT | |
F0F7 E1 CB E2 15 NAMQ3: FDB RFROM,DROP | |
F0FB E2 FB E1 71 FDB ZERO,EXIT | |
F0FF ; | |
F0FF ; Terminal response | |
F0FF ; | |
F0FF ; ^H ( bot eot cur -- bot eot cur ) | |
F0FF ; Backup the cursor by one character. | |
F0FF ; | |
F0FF F1 06 F0 C0 FDB BKSP,L1550 | |
F103 02 5E 48 L1560: FCB 2,"^H" | |
F106 BD E1 12 BKSP: JSR DOLST | |
F109 E1 EB E2 43 E1 CB E2 30 E2 43 E2 99 FDB TOR,OVER,RFROM,SWAP,OVER,XORR | |
F115 E1 40 F1 31 FDB QBRAN,BACK1 | |
F119 E0 EF 00 08 E3 C5 EA 45 E5 A6 FDB DOLIT,BKSPP,TECHO,ATEXE,MINUS1 | |
F123 E9 21 E3 C5 EA 45 FDB BLANK,TECHO,ATEXE | |
F129 E0 EF 00 08 E3 C5 EA 45 FDB DOLIT,BKSPP,TECHO,ATEXE | |
F131 E1 71 BACK1: FDB EXIT | |
F133 ; | |
F133 ; TAP ( bot eot cur c -- bot eot cur ) | |
F133 ; Accept and echo the key stroke and bump the cursor. | |
F133 ; | |
F133 F1 3B F1 03 FDB TAP,L1560 | |
F137 03 54 41 50 L1570: FCB 3,"TAP" | |
F13B BD E1 12 TAP: JSR DOLST | |
F13E E2 21 E3 C5 EA 45 FDB DUPP,TECHO,ATEXE | |
F144 E2 43 E1 96 E5 96 E1 71 FDB OVER,CSTOR,PLUS1,EXIT | |
F14C ; | |
F14C ; kTAP ( bot eot cur c -- bot eot cur ) | |
F14C ; Process a key stroke, CR or backspace. | |
F14C ; | |
F14C F1 55 F1 37 FDB KTAP,L1570 | |
F150 04 6B 54 41 50 L1580: FCB 4,"kTAP" | |
F155 BD E1 12 KTAP: JSR DOLST | |
F158 E2 21 E1 00 FDB DUPP,DOCLIT | |
F15C 0A FCB CRR | |
F15D E2 99 FDB XORR | |
F15F E1 40 F1 83 FDB QBRAN,KTAP2 | |
F163 E2 21 E0 EF 00 08 E2 99 FDB DUPP,DOLIT,BKSPP,XORR | |
F16B E2 30 E0 EF 00 7F E2 99 E2 76 FDB SWAP,DOLIT,BKSPP2,XORR,ANDD | |
F175 E1 40 F1 7F FDB QBRAN,KTAP1 | |
F179 E9 21 F1 3B E1 71 FDB BLANK,TAP,EXIT | |
F17F F1 06 E1 71 KTAP1: FDB BKSP,EXIT | |
F183 E2 15 E2 30 E2 15 E2 21 E1 71 KTAP2: FDB DROP,SWAP,DROP,DUPP,EXIT | |
F18D ; | |
F18D ; accept ( b u -- b u ) | |
F18D ; Accept characters to input buffer. Return with actual count. | |
F18D ; | |
F18D F1 98 F1 50 FDB ACCEP,L1580 | |
F191 06 41 43 43 45 50 54 L1590: FCB 6,"ACCEPT" | |
F198 BD E1 12 ACCEP: JSR DOLST | |
F19B E2 43 E5 CF E2 43 FDB OVER,PLUS,OVER | |
F1A1 E5 21 E2 99 ACCP1: FDB DDUP,XORR | |
F1A5 E1 40 F1 C7 FDB QBRAN,ACCP4 | |
F1A9 ED 2D E2 21 FDB KEY,DUPP | |
F1AD ; FDB BLANK,SUBB,DOLIT,95,ULESS | |
F1AD E9 21 E0 EF 00 7F E6 D5 FDB BLANK,DOLIT,127,WITHI | |
F1B5 E1 40 F1 BF FDB QBRAN,ACCP2 | |
F1B9 F1 3B FDB TAP | |
F1BB E1 57 F1 C3 FDB BRAN,ACCP3 | |
F1BF E3 B6 EA 45 ACCP2: FDB TTAP,ATEXE | |
F1C3 E1 57 F1 A1 ACCP3: FDB BRAN,ACCP1 | |
F1C7 E2 15 E2 43 E6 31 E1 71 ACCP4: FDB DROP,OVER,SUBB,EXIT | |
F1CF ; | |
F1CF ; EXPECT ( b u -- ) | |
F1CF ; Accept input stream and store count in SPAN. | |
F1CF ; | |
F1CF F1 DA F1 91 FDB EXPEC,L1590 | |
F1D3 06 45 58 50 45 43 54 L1600: FCB 6,"EXPECT" | |
F1DA BD E1 12 EXPEC: JSR DOLST | |
F1DD E3 A8 EA 45 E3 FF E1 7B E2 15 E1 71 FDB TEXPE,ATEXE,SPAN,STORE,DROP,EXIT | |
F1E9 ; | |
F1E9 ; QUERY ( -- ) | |
F1E9 ; Accept input stream to terminal input buffer. | |
F1E9 ; | |
F1E9 F1 F3 F1 D3 FDB QUERY,L1600 | |
F1ED 05 51 55 45 52 59 L1610: FCB 5,"QUERY" | |
F1F3 BD E1 12 QUERY: JSR DOLST | |
F1F6 EA 2D E1 00 FDB TIB,DOCLIT | |
F1FA 50 FCB 80 | |
F1FB E3 A8 EA 45 E4 1A E1 7B FDB TEXPE,ATEXE,NTIB,STORE | |
F203 E2 15 E2 FB E4 0C E1 7B E1 71 FDB DROP,ZERO,INN,STORE,EXIT | |
F20D ; | |
F20D ; Error handling | |
F20D ; | |
F20D ; CATCH ( ca -- 0 | err# ) | |
F20D ; Execute word at ca and set up an error frame for it. | |
F20D ; | |
F20D F2 17 F1 ED FDB CATCH,L1610 | |
F211 05 43 41 54 43 48 L1620: FCB 5,"CATCH" | |
F217 BD E1 12 CATCH: JSR DOLST | |
F21A E1 F9 E1 EB E4 65 E1 89 E1 EB FDB SPAT,TOR,HANDL,AT,TOR ;save error frame | |
F224 E1 B4 E4 65 E1 7B E1 67 FDB RPAT,HANDL,STORE,EXECU ;execute | |
F22C E1 CB E4 65 E1 7B FDB RFROM,HANDL,STORE ;restore error frame | |
F232 E1 CB E2 15 E2 FB E1 71 FDB RFROM,DROP,ZERO,EXIT ;no error | |
F23A ; | |
F23A ; THROW ( err# -- err# ) | |
F23A ; Reset system to current local error frame an update error flag. | |
F23A ; | |
F23A F2 44 F2 11 FDB THROW,L1620 | |
F23E 05 54 48 52 4F 57 L1630: FCB 5,"THROW" | |
F244 BD E1 12 THROW: JSR DOLST | |
F247 E4 65 E1 89 E1 C0 FDB HANDL,AT,RPSTO ;restore return stack | |
F24D E1 CB E4 65 E1 7B FDB RFROM,HANDL,STORE ;restore handler frame | |
F253 E1 CB E2 30 E1 EB E2 07 FDB RFROM,SWAP,TOR,SPSTO ;restore data stack | |
F25B E2 15 E1 CB E1 71 FDB DROP,RFROM,EXIT | |
F261 ; | |
F261 ; NULL$ ( -- a ) | |
F261 ; Return address of a null string with zero count. | |
F261 ; | |
F261 F2 6B F2 3E FDB NULLS,L1630 | |
F265 05 4E 55 4C 4C 24 L1640: FCB 5,"NULL$" | |
F26B NULLS: | |
F26B ; jsr DOLST | |
F26B ; FDB DOVAR ;emulate CREATE | |
F26B BD E3 33 JSR FDOVAR | |
F26E 00 00 FDB 0 | |
F270 63 6F 79 6F 74 65 FCB 99,111,121,111,116,101 | |
F276 ; | |
F276 ; ABORT ( -- ) | |
F276 ; Reset data stack and jump to QUIT. | |
F276 ; | |
F276 F2 80 F2 65 FDB ABORT,L1640 | |
F27A 05 41 42 4F 52 54 L1650: FCB 5,"ABORT" | |
F280 BD E1 12 ABORT: JSR DOLST | |
F283 F2 6B F2 44 FDB NULLS,THROW | |
F287 ; | |
F287 ; abort" ( f -- ) | |
F287 ; Run time routine of ABORT" . Abort with a message. | |
F287 ; | |
F287 F2 92 F2 7A FDB ABORQ,L1650 | |
F28B 46 61 62 6F 72 74 L1660: FCB COMPO+6,"abort" | |
F291 22 FCB 34 ;""" | |
F292 BD E1 12 ABORQ: JSR DOLST | |
F295 E1 40 F2 9D FDB QBRAN,ABOR1 ;text flag | |
F299 ED EF F2 44 FDB DOSTR,THROW ;pass error string | |
F29D ED EF E2 15 E1 71 ABOR1: FDB DOSTR,DROP,EXIT | |
F2A3 ; | |
F2A3 ; The text interpreter | |
F2A3 ; | |
F2A3 ; $INTERPRET ( a -- ) | |
F2A3 ; Interpret a word. If failed, try to convert it to an integer. | |
F2A3 ; | |
F2A3 F2 B2 F2 8B FDB INTER,L1660 | |
F2A7 0A 24 49 4E 54 45 52 50 52 45 54 L1670: FCB 10,"$INTERPRET" | |
F2B2 BD E1 12 INTER: JSR DOLST | |
F2B5 F0 C6 E4 E3 FDB NAMEQ,QDUP ;?defined | |
F2B9 E1 40 F2 D9 FDB QBRAN,INTE1 | |
F2BD E1 89 E0 EF 40 00 E2 76 FDB AT,DOLIT,COMPO*256,ANDD ;?compile only lexicon bits | |
F2C5 F2 92 FDB ABORQ | |
F2C7 0D 20 63 6F 6D 70 69 6C 65 20 6F 6E 6C 79 FCB 13," compile only" | |
F2D5 E1 67 E1 71 FDB EXECU,EXIT ;execute defined word | |
F2D9 E4 47 EA 45 INTE1: FDB TNUMB,ATEXE | |
F2DD E1 40 F2 E3 FDB QBRAN,INTE2 | |
F2E1 E1 71 FDB EXIT | |
F2E3 F2 44 INTE2: FDB THROW | |
F2E5 ; | |
F2E5 ; [ ( -- ) | |
F2E5 ; Start the text interpreter. | |
F2E5 ; | |
F2E5 F2 EB F2 A7 FDB LBRAC,L1670 | |
F2E9 81 5B L1680: FCB IMEDD+1,"[" | |
F2EB BD E1 12 LBRAC: JSR DOLST | |
F2EE E0 EF F2 B2 E4 36 E1 7B E1 71 FDB DOLIT,INTER,TEVAL,STORE,EXIT | |
F2F8 ; | |
F2F8 ; .OK ( -- ) | |
F2F8 ; Display "ok" only while interpreting. | |
F2F8 ; | |
F2F8 F3 00 F2 E9 FDB DOTOK,L1680 | |
F2FC 03 2E 4F 4B L1690: FCB 3,".OK" | |
F300 BD E1 12 DOTOK: JSR DOLST | |
F303 E0 EF F2 B2 E4 36 E1 89 E6 56 FDB DOLIT,INTER,TEVAL,AT,EQUAL | |
F30D E1 40 F3 17 FDB QBRAN,DOTO1 | |
F311 EE 1D FDB DOTQP | |
F313 03 20 6F 6B FCB 3," ok" | |
F317 ED D8 E1 71 DOTO1: FDB CR,EXIT | |
F31B ; | |
F31B ; ?STACK ( -- ) | |
F31B ; Abort if the data stack underflows. | |
F31B ; | |
F31B F3 26 F2 FC FDB QSTAC,L1690 | |
F31F 06 3F 53 54 41 43 4B L1700: FCB 6,"?STACK" | |
F326 BD E1 12 QSTAC: JSR DOLST | |
F329 E9 54 E2 50 FDB DEPTH,ZLESS ;check only for underflow | |
F32D F2 92 FDB ABORQ | |
F32F 0A 20 75 6E 64 65 72 66 6C 6F 77 FCB 10," underflow" | |
F33A E1 71 FDB EXIT | |
F33C ; | |
F33C ; EVAL ( -- ) | |
F33C ; Interpret the input stream. | |
F33C ; | |
F33C F3 45 F3 1F FDB EVAL,L1700 | |
F340 04 45 56 41 4C L1710: FCB 4,"EVAL" | |
F345 BD E1 12 EVAL: JSR DOLST | |
F348 EF C4 E2 21 E1 A5 EVAL1: FDB TOKEN,DUPP,CAT | |
F34E E1 40 F3 5C FDB QBRAN,EVAL2 | |
F352 E4 36 EA 45 F3 26 FDB TEVAL,ATEXE,QSTAC ;evaluate input, check stack | |
F358 E1 57 F3 48 FDB BRAN,EVAL1 | |
F35C E2 15 E3 D6 EA 45 E1 71 EVAL2: FDB DROP,TPROM,ATEXE,EXIT | |
F364 ; | |
F364 ; Shell | |
F364 ; | |
F364 ; PRESET ( -- ) | |
F364 ; Reset data stack pointer and the terminal input buffer. | |
F364 ; | |
F364 F3 6F F3 40 FDB PRESE,L1710 | |
F368 06 50 52 45 53 45 54 L1720: FCB 6,"PRESET" | |
F36F BD E1 12 PRESE: JSR DOLST | |
F372 E3 6C E1 89 E2 07 FDB SZERO,AT,SPSTO | |
F378 E0 EF 6E 70 E4 1A E8 D7 E1 7B E1 71 FDB DOLIT,TIBB,NTIB,CELLP,STORE,EXIT | |
F384 ; | |
F384 ; xio ( a a a -- ) | |
F384 ; Reset the I/O vectors "EXPECT, "TAP, "ECHO and "PROMPT. | |
F384 ; | |
F384 F3 8C F3 68 FDB XIO,L1720 | |
F388 43 78 69 6F L1730: FCB COMPO+3,"xio" | |
F38C BD E1 12 XIO: JSR DOLST | |
F38F E0 EF F1 98 E3 A8 E9 C2 FDB DOLIT,ACCEP,TEXPE,DSTOR | |
F397 E3 C5 E9 C2 E1 71 FDB TECHO,DSTOR,EXIT | |
F39D ; | |
F39D ; FILE ( -- ) | |
F39D ; Select I/O vectors for file download. | |
F39D ; | |
F39D F3 A6 F3 88 FDB FILE,L1730 | |
F3A1 04 46 49 4C 45 L1740: FCB 4,"FILE" | |
F3A6 BD E1 12 FILE: JSR DOLST | |
F3A9 E0 EF ED 72 E0 EF E2 15 FDB DOLIT,PACE,DOLIT,DROP | |
F3B1 E0 EF F1 55 F3 8C E1 71 FDB DOLIT,KTAP,XIO,EXIT | |
F3B9 ; | |
F3B9 ; HAND ( -- ) | |
F3B9 ; Select I/O vectors for terminal interface. | |
F3B9 ; | |
F3B9 F3 C2 F3 A1 FDB HAND,L1740 | |
F3BD 04 48 41 4E 44 L1750: FCB 4,"HAND" | |
F3C2 BD E1 12 HAND: JSR DOLST | |
F3C5 E0 EF F3 00 E0 EF ED 41 FDB DOLIT,DOTOK,DOLIT,EMIT | |
F3CD E0 EF F1 55 F3 8C E1 71 FDB DOLIT,KTAP,XIO,EXIT | |
F3D5 ; | |
F3D5 ; I/O ( -- a ) | |
F3D5 ; Array to store default I/O vectors. | |
F3D5 ; | |
F3D5 F3 DD F3 BD FDB ISLO,L1750 | |
F3D9 03 49 2F 4F L1760: FCB 3,"I/O" | |
F3DD ISLO: | |
F3DD ; jsr DOLST | |
F3DD ; FDB DOVAR ;emulate CREATE | |
F3DD BD E3 33 JSR FDOVAR | |
F3E0 E0 AD E0 CC FDB QRX,TXSTO ;default I/O vectors | |
F3E4 ; | |
F3E4 ; CONSOLE ( -- ) | |
F3E4 ; Initiate terminal interface. | |
F3E4 ; | |
F3E4 F3 F0 F3 D9 FDB CONSO,L1760 | |
F3E8 07 43 4F 4E 53 4F 4C 45 L1770: FCB 7,"CONSOLE" | |
F3F0 BD E1 12 CONSO: JSR DOLST | |
F3F3 F3 DD E9 D8 E3 88 E9 C2 FDB ISLO,DAT,TQKEY,DSTOR ;restore default I/O device | |
F3FB F3 C2 E1 71 FDB HAND,EXIT ;keyboard input | |
F3FF ; | |
F3FF ; QUIT ( -- ) | |
F3FF ; Reset return stack pointer and start text interpreter. | |
F3FF ; | |
F3FF F4 08 F3 E8 FDB QUIT,L1770 | |
F403 04 51 55 49 54 L1780: FCB 4,"QUIT" | |
F408 BD E1 12 QUIT: JSR DOLST | |
F40B E3 79 E1 89 E1 C0 FDB RZERO,AT,RPSTO ;reset return stack pointer | |
F411 F2 EB QUIT1: FDB LBRAC | |
F413 F1 F3 QUIT2: FDB QUERY | |
F415 E0 EF F3 45 F2 17 E4 E3 FDB DOLIT,EVAL,CATCH,QDUP ;evaluate input | |
F41D E1 40 F4 13 FDB QBRAN,QUIT2 ;continue till error | |
F421 E3 D6 E1 89 E1 EB FDB TPROM,AT,TOR ;save input device | |
F427 F3 F0 F2 6B E2 43 E2 99 FDB CONSO,NULLS,OVER,XORR ;?display error message | |
F42F E1 40 F4 3F FDB QBRAN,QUIT3 | |
F433 ED 86 E9 F1 ED B8 FDB SPACE,COUNT,TYPES ;error message | |
F439 EE 1D FDB DOTQP | |
F43B 03 20 3F 20 FCB 3," ? " ;error prompt | |
F43F E1 CB E0 EF F3 00 E2 99 QUIT3: FDB RFROM,DOLIT,DOTOK,XORR | |
F447 E1 40 F4 51 FDB QBRAN,QUIT4 | |
F44B E0 EF 00 1B ED 41 FDB DOLIT,ERR,EMIT ;file error, tell host | |
F451 F3 6F QUIT4: FDB PRESE | |
F453 E1 57 F4 11 FDB BRAN,QUIT1 | |
F457 ; | |
F457 ; The compiler | |
F457 ; | |
F457 ; ' ( -- ca ) | |
F457 ; Search context vocabularies for the next word in input stream. | |
F457 ; | |
F457 F4 5D F4 03 FDB TICK,L1780 | |
F45B 01 27 L1790: FCB 1,"'" | |
F45D BD E1 12 TICK: JSR DOLST | |
F460 EF C4 F0 C6 FDB TOKEN,NAMEQ ;?defined | |
F464 E1 40 F4 6A FDB QBRAN,TICK1 | |
F468 E1 71 FDB EXIT ;yes, push code address | |
F46A F2 44 TICK1: FDB THROW | |
F46C ; | |
F46C ; ALLOT ( n -- ) | |
F46C ; Allocate n bytes to the code dictionary. | |
F46C ; | |
F46C F4 76 F4 5B FDB ALLOT,L1790 | |
F470 05 41 4C 4C 4F 54 L1800: FCB 5,"ALLOT" | |
F476 BD E1 12 ALLOT: JSR DOLST | |
F479 E4 93 E9 B1 E1 71 FDB CP,PSTOR,EXIT ;adjust code pointer | |
F47F ; | |
F47F ; , ( w -- ) | |
F47F ; Compile an integer into the code dictionary. | |
F47F ; | |
F47F F4 85 F4 70 FDB COMMA,L1800 | |
F483 01 2C L1810: FCB 1,"," | |
F485 BD E1 12 COMMA: JSR DOLST | |
F488 EA 07 E2 21 E8 D7 FDB HERE,DUPP,CELLP ;cell boundary | |
F48E E4 93 E1 7B E1 7B E1 71 FDB CP,STORE,STORE,EXIT ;adjust code pointer and compile | |
F496 ; | |
F496 ; [COMPILE] ( -- ; <string> ) | |
F496 ; Compile the next immediate word into code dictionary. | |
F496 ; | |
F496 F4 A4 F4 83 FDB BCOMP,L1810 | |
F49A 89 5B 43 4F 4D 50 49 4C 45 5D L1820: FCB IMEDD+9,"[COMPILE]" | |
F4A4 BD E1 12 BCOMP: JSR DOLST | |
F4A7 F4 5D F4 85 E1 71 FDB TICK,COMMA,EXIT | |
F4AD ; | |
F4AD ; COMPILE ( -- ) | |
F4AD ; Compile the next address in colon list to code dictionary. | |
F4AD ; | |
F4AD F4 B9 F4 9A FDB COMPI,L1820 | |
F4B1 47 43 4F 4D 50 49 4C 45 L1830: FCB COMPO+7,"COMPILE" | |
F4B9 BD E1 12 COMPI: JSR DOLST | |
F4BC E1 CB E2 21 E1 89 F4 85 FDB RFROM,DUPP,AT,COMMA ;compile address | |
F4C4 E8 D7 E1 EB E1 71 FDB CELLP,TOR,EXIT ;adjust return address | |
F4CA ; | |
F4CA ; LITERAL ( w -- ) | |
F4CA ; Compile tos to code dictionary as an integer literal. | |
F4CA ; | |
F4CA F4 D6 F4 B1 FDB LITER,L1830 | |
F4CE 87 4C 49 54 45 52 41 4C L1840: FCB IMEDD+7,"LITERAL" | |
F4D6 BD E1 12 LITER: JSR DOLST | |
F4D9 F4 B9 E0 EF F4 85 E1 71 FDB COMPI,DOLIT,COMMA,EXIT | |
F4E1 ; | |
F4E1 ; $," ( -- ) | |
F4E1 ; Compile a literal string up to next " . | |
F4E1 ; | |
F4E1 F4 E9 F4 CE FDB STRCQ,L1840 | |
F4E5 03 24 2C 22 L1850: FCB 3,"$,",34 | |
F4E9 BD E1 12 STRCQ: JSR DOLST | |
F4EC E0 EF 00 22 EF E7 FDB DOLIT,34,WORD ;move string to code dictionary | |
F4F2 E9 F1 E5 CF E9 15 FDB COUNT,PLUS,ALGND ;calculate aligned end of string | |
F4F8 E4 93 E1 7B E1 71 FDB CP,STORE,EXIT ;adjust the code pointer | |
F4FE ; | |
F4FE ; RECURSE ( -- ) | |
F4FE ; Make the current word available for compilation. | |
F4FE ; | |
F4FE F5 0A F4 E5 FDB RECUR,L1850 | |
F502 87 52 45 43 55 52 53 45 L1860: FCB IMEDD+7,"RECURSE" | |
F50A BD E1 12 RECUR: JSR DOLST | |
F50D E4 AD E1 89 EF FC F4 85 E1 71 FDB LAST,AT,NAMET,COMMA,EXIT | |
F517 ; | |
F517 ; Structures | |
F517 ; | |
F517 ; DO ( -- a m ) | |
F517 ; Start a DO-LOOP/+LOOP structure in a colon definition. | |
F517 ; | |
F517 F5 1E F5 02 FDB DO,L1860 | |
F51B 82 44 4F L1861: FCB IMEDD+2,"DO" | |
F51E BD E1 12 DO: JSR DOLST | |
F521 F4 B9 F5 A8 EA 07 FDB COMPI,DODO,HERE | |
F527 E3 06 FDB ONE ; marker for DO | |
F529 E1 71 FDB EXIT | |
F52B ; | |
F52B ; ?DO ( -- a m ) | |
F52B ; Start a ?DO-LOOP/+LOOP structure in a colon definition. | |
F52B ; | |
F52B F5 33 F5 1B FDB QDO,L1861 | |
F52F 83 3F 44 4F L1862: FCB IMEDD+3,"?DO" | |
F533 BD E1 12 QDO: JSR DOLST | |
F536 F4 B9 F5 4E EA 07 FDB COMPI,DOQDO,HERE | |
F53C F4 B9 00 00 FDB COMPI,0 ; branch destination placeholder | |
F540 E3 11 FDB TWO ; marker for ?DO | |
F542 E1 71 FDB EXIT | |
F544 ; | |
F544 ; (?DO) ( w w -- ) | |
F544 ; Runtime part of DO in a DO-LOOP/+LOOP structure. | |
F544 ; | |
F544 F5 4E F5 2F FDB DOQDO,L1862 | |
F548 05 28 3F 44 4F 29 L1862A: FCB 5,"(?DO)" | |
F54E DOQDO: | |
F54E 35 06 PULS d ;start | |
F550 10 A3 E4 CMPD ,s ;start < end -> ok | |
F553 2D 06 BLT DOQDO1 | |
F555 32 62 LEAS 2,s ;drop end | |
F557 EE C4 LDU ,u | |
F559 37 80 PULU pc ;branch past loop | |
F55B DOQDO1: | |
F55B 35 10 PULS x ;end | |
F55D AF A3 STX ,--y ;end to return stack | |
F55F ED A3 STD ,--y ;start to return stack | |
F561 33 42 LEAU 2,u ;skip jump forward | |
F563 37 80 PULU pc | |
F565 ; | |
F565 ; -DO ( -- a m ) | |
F565 ; Start a -DO-LOOP/+LOOP structure in a colon definition. | |
F565 ; | |
F565 F5 6D F5 48 FDB MDO,L1862A | |
F569 83 2D 44 4F L1862B: FCB IMEDD+3,"-DO" | |
F56D BD E1 12 MDO: JSR DOLST | |
F570 F4 B9 F5 88 EA 07 FDB COMPI,DOMDO,HERE | |
F576 F4 B9 00 00 FDB COMPI,0 ; branch destination placeholder | |
F57A E3 11 FDB TWO ; marker for ?DO/-DO | |
F57C E1 71 FDB EXIT | |
F57E ; | |
F57E ; (-DO) ( w w -- ) | |
F57E ; Runtime part of -DO in a -DO-LOOP/+LOOP structure. | |
F57E ; | |
F57E F5 88 F5 69 FDB DOMDO,L1862B | |
F582 05 28 2D 44 4F 29 L1862C: FCB 5,"(-DO)" | |
F588 DOMDO: | |
F588 35 06 PULS d ;start | |
F58A 10 A3 E4 CMPD ,s ;start > end -> ok | |
F58D 2E 06 BGT DOMDO1 | |
F58F 32 62 LEAS 2,s ;drop end | |
F591 EE C4 LDU ,u | |
F593 37 80 PULU pc ;branch past loop | |
F595 DOMDO1: | |
F595 35 10 PULS x ;end | |
F597 AF A3 STX ,--y ;end to return stack | |
F599 ED A3 STD ,--y ;start to return stack | |
F59B 33 42 LEAU 2,u ;skip jump forward | |
F59D 37 80 PULU pc | |
F59F ; | |
F59F ; (DO) ( w w -- ) | |
F59F ; Runtime part of DO in a DO-LOOP/+LOOP structure. | |
F59F ; | |
F59F F5 A8 F5 82 FDB DODO,L1862C | |
F5A3 04 28 44 4F 29 L1863: FCB 4,"(DO)" | |
F5A8 DODO: | |
F5A8 35 16 PULS d,x ;start first, end second | |
F5AA AF A3 STX ,--y ;end to return stack | |
F5AC ED A3 STD ,--y ;start to return stack | |
F5AE 37 80 PULU pc | |
F5B0 ; | |
F5B0 ; (LOOP) ( -- ) | |
F5B0 ; Runtime part of LOOP | |
F5B0 ; | |
F5B0 F5 BB F5 A3 FDB DOLOOP,L1863 | |
F5B4 06 28 4C 4F 4F 50 29 L1864: FCB 6,"(LOOP)" | |
F5BB DOLOOP: | |
F5BB CC 00 01 LDD #1 | |
F5BE 20 1D BRA DOPLOF | |
F5C0 ; | |
F5C0 ; (+LOOP) ( -- ) | |
F5C0 ; Runtime part of +LOOP | |
F5C0 ; | |
F5C0 F5 CC F5 B4 FDB DOPLOOP,L1864 | |
F5C4 87 28 2B 4C 4F 4F 50 29 L1865: FCB IMEDD+7,"(+LOOP)" | |
F5CC DOPLOOP: | |
F5CC EC E1 LDD ,s++ ; increment | |
F5CE 2A 0D BPL DOPLOF ; forward | |
F5D0 E3 A4 ADDD ,y ; start/index | |
F5D2 10 A3 22 CMPD 2,y ; end | |
F5D5 2F 13 BLE DOPLO1 ; index <= end -> leave | |
F5D7 ED A4 STD ,y | |
F5D9 EE C4 LDU ,u ; branch to begin of loop | |
F5DB 37 80 PULU pc | |
F5DD ; | |
F5DD E3 A4 DOPLOF: ADDD ,y | |
F5DF 10 A3 22 CMPD 2,y ; end | |
F5E2 2C 06 BGE DOPLO1 ; index >= end -> leave | |
F5E4 ED A4 STD ,y ; save back | |
F5E6 EE C4 LDU ,u ; branch to begin of loop | |
F5E8 37 80 PULU pc | |
F5EA DOPLO1: | |
F5EA 33 42 LEAU 2,u ; skip back destination | |
F5EC 31 24 LEAY 4,y ; remove index and upper from r stack | |
F5EE 37 80 PULU pc | |
F5F0 ; | |
F5F0 ; LOOP ( a m -- ) | |
F5F0 ; Terminate a DO/?DO-LOOP loop structure. | |
F5F0 ; | |
F5F0 F5 F9 F5 C4 FDB LOOP,L1865 | |
F5F4 84 4C 4F 4F 50 L1866: FCB IMEDD+4,"LOOP" | |
F5F9 BD E1 12 LOOP: JSR DOLST | |
F5FC F4 B9 F5 BB FDB COMPI,DOLOOP | |
F600 E3 11 E6 56 E1 40 F6 12 FDB TWO,EQUAL,QBRAN,LOOP1 | |
F608 EA 07 E8 D7 E2 43 E1 7B E8 D7 FDB HERE,CELLP,OVER,STORE,CELLP ; branch forward destination | |
F612 F4 85 E1 71 LOOP1: FDB COMMA,EXIT | |
F616 ; | |
F616 ; | |
F616 ; +LOOP ( a m -- ) | |
F616 ; Terminate a DO/?DO-+LOOP loop structure. | |
F616 ; | |
F616 F6 20 F5 F4 FDB PLOOP,L1866 | |
F61A 85 2B 4C 4F 4F 50 L1867: FCB IMEDD+5,"+LOOP" | |
F620 BD E1 12 PLOOP: JSR DOLST | |
F623 F4 B9 F5 CC FDB COMPI,DOPLOOP | |
F627 E3 11 E6 56 E1 40 F6 39 FDB TWO,EQUAL,QBRAN,PLOOP1 | |
F62F EA 07 E8 D7 E2 43 E1 7B E8 D7 FDB HERE,CELLP,OVER,STORE,CELLP ; branch forward destination | |
F639 F4 85 E1 71 PLOOP1: FDB COMMA,EXIT | |
F63D ; | |
F63D ; LEAVE ( -- ) | |
F63D ; Leave DO/LOOP | |
F63D ; | |
F63D F6 47 F6 1A FDB LEAVE,L1867 | |
F641 05 4C 45 41 56 45 L1868: FCB 5,"LEAVE" | |
F647 LEAVE: | |
F647 EC A4 LDD ,y ;take index on return stack | |
F649 ED 22 STD 2,y ;and change end to it | |
F64B 37 80 PULU pc | |
F64D ; | |
F64D ; FOR ( -- a ) | |
F64D ; Start a FOR-NEXT loop structure in a colon definition. | |
F64D ; | |
F64D F6 55 F6 1A FDB FOR,L1867 | |
F651 83 46 4F 52 L1870: FCB IMEDD+3,"FOR" | |
F655 BD E1 12 FOR: JSR DOLST | |
F658 F4 B9 E1 EB EA 07 E1 71 FDB COMPI,TOR,HERE,EXIT | |
F660 ; | |
F660 ; BEGIN ( -- a ) | |
F660 ; Start an infinite or indefinite loop structure. | |
F660 ; | |
F660 F6 6A F6 51 FDB BEGIN,L1870 | |
F664 85 42 45 47 49 4E L1880: FCB IMEDD+5,"BEGIN" | |
F66A BD E1 12 BEGIN: JSR DOLST | |
F66D EA 07 E1 71 FDB HERE,EXIT | |
F671 ; | |
F671 ; NEXT ( a -- ) | |
F671 ; Terminate a FOR-NEXT loop structure. | |
F671 ; | |
F671 F6 7A F6 64 FDB NEXT,L1880 | |
F675 84 4E 45 58 54 L1890: FCB IMEDD+4,"NEXT" | |
F67A BD E1 12 NEXT: JSR DOLST | |
F67D F4 B9 E1 21 F4 85 E1 71 FDB COMPI,DONXT,COMMA,EXIT | |
F685 ; | |
F685 ; UNTIL ( a -- ) | |
F685 ; Terminate a BEGIN-UNTIL indefinite loop structure. | |
F685 ; | |
F685 F6 8F F6 75 FDB UNTIL,L1890 | |
F689 85 55 4E 54 49 4C L1900: FCB IMEDD+5,"UNTIL" | |
F68F BD E1 12 UNTIL: JSR DOLST | |
F692 F4 B9 E1 40 F4 85 E1 71 FDB COMPI,QBRAN,COMMA,EXIT | |
F69A ; | |
F69A ; AGAIN ( a -- ) | |
F69A ; Terminate a BEGIN-AGAIN infinite loop structure. | |
F69A ; | |
F69A F6 A4 F6 89 FDB AGAIN,L1900 | |
F69E 85 41 47 41 49 4E L1910: FCB IMEDD+5,"AGAIN" | |
F6A4 BD E1 12 AGAIN: JSR DOLST | |
F6A7 F4 B9 E1 57 F4 85 E1 71 FDB COMPI,BRAN,COMMA,EXIT | |
F6AF ; | |
F6AF ; IF ( -- A ) | |
F6AF ; Begin a conditional branch structure. | |
F6AF ; | |
F6AF F6 B6 F6 9E FDB IFF,L1910 | |
F6B3 82 49 46 L1920: FCB IMEDD+2,"IF" | |
F6B6 BD E1 12 IFF: JSR DOLST | |
F6B9 F4 B9 E1 40 EA 07 FDB COMPI,QBRAN,HERE | |
F6BF E2 FB F4 85 E1 71 FDB ZERO,COMMA,EXIT | |
F6C5 ; | |
F6C5 ; AHEAD ( -- A ) | |
F6C5 ; Compile a forward branch instruction. | |
F6C5 ; | |
F6C5 F6 CF F6 B3 FDB AHEAD,L1920 | |
F6C9 85 41 48 45 41 44 L1930: FCB IMEDD+5,"AHEAD" | |
F6CF BD E1 12 AHEAD: JSR DOLST | |
F6D2 F4 B9 E1 57 EA 07 E2 FB F4 85 E1 71 FDB COMPI,BRAN,HERE,ZERO,COMMA,EXIT | |
F6DE ; | |
F6DE ; REPEAT ( A a -- ) | |
F6DE ; Terminate a BEGIN-WHILE-REPEAT indefinite loop. | |
F6DE ; | |
F6DE F6 E9 F6 C9 FDB REPEA,L1930 | |
F6E2 86 52 45 50 45 41 54 L1940: FCB IMEDD+6,"REPEAT" | |
F6E9 BD E1 12 REPEA: JSR DOLST | |
F6EC F6 A4 EA 07 E2 30 E1 7B E1 71 FDB AGAIN,HERE,SWAP,STORE,EXIT | |
F6F6 ; | |
F6F6 ; THEN ( A -- ) | |
F6F6 ; Terminate a conditional branch structure. | |
F6F6 ; | |
F6F6 F6 FF F6 E2 FDB THENN,L1940 | |
F6FA 84 54 48 45 4E L1950: FCB IMEDD+4,"THEN" | |
F6FF BD E1 12 THENN: JSR DOLST | |
F702 EA 07 E2 30 E1 7B E1 71 FDB HERE,SWAP,STORE,EXIT | |
F70A ; | |
F70A ; AFT ( a -- a A ) | |
F70A ; Jump to THEN in a FOR-AFT-THEN-NEXT loop the first time through. | |
F70A ; | |
F70A F7 12 F6 FA FDB AFT,L1950 | |
F70E 83 41 46 54 L1960: FCB IMEDD+3,"AFT" | |
F712 BD E1 12 AFT: JSR DOLST | |
F715 E2 15 F6 CF F6 6A E2 30 E1 71 FDB DROP,AHEAD,BEGIN,SWAP,EXIT | |
F71F ; | |
F71F ; ELSE ( A -- A ) | |
F71F ; Start the false clause in an IF-ELSE-THEN structure. | |
F71F ; | |
F71F F7 28 F7 0E FDB ELSEE,L1960 | |
F723 84 45 4C 53 45 L1970: FCB IMEDD+4,"ELSE" | |
F728 BD E1 12 ELSEE: JSR DOLST | |
F72B F6 CF E2 30 F6 FF E1 71 FDB AHEAD,SWAP,THENN,EXIT | |
F733 ; | |
F733 ; WHILE ( a -- A a ) | |
F733 ; Conditional branch out of a BEGIN-WHILE-REPEAT loop. | |
F733 ; | |
F733 F7 3D F7 23 FDB WHILE,L1970 | |
F737 85 57 48 49 4C 45 L1980: FCB IMEDD+5,"WHILE" | |
F73D BD E1 12 WHILE: JSR DOLST | |
F740 F6 B6 E2 30 E1 71 FDB IFF,SWAP,EXIT | |
F746 ; | |
F746 ; ABORT" ( -- ; <string> ) | |
F746 ; Conditional abort with an error message. | |
F746 ; | |
F746 F7 51 F7 37 FDB ABRTQ,L1980 | |
F74A 86 41 42 4F 52 54 22 L1990: FCB IMEDD+6,"ABORT",34 | |
F751 BD E1 12 ABRTQ: JSR DOLST | |
F754 F4 B9 F2 92 F4 E9 E1 71 FDB COMPI,ABORQ,STRCQ,EXIT | |
F75C ; | |
F75C ; $" ( -- ; <string> ) | |
F75C ; Compile an inline string literal. | |
F75C ; | |
F75C F7 63 F7 4A FDB STRQ,L1990 | |
F760 82 24 22 L2000: FCB IMEDD+2,"$",$22 | |
F763 BD E1 12 STRQ: JSR DOLST | |
F766 F4 B9 EE 0E F4 E9 E1 71 FDB COMPI,STRQP,STRCQ,EXIT | |
F76E ; | |
F76E ; ." ( -- ; <string> ) | |
F76E ; Compile an inline string literal to be typed out at run time. | |
F76E ; | |
F76E F7 75 F7 60 FDB DOTQ,L2000 | |
F772 82 2E 22 L2010: FCB IMEDD+2,".",$22 | |
F775 BD E1 12 DOTQ: JSR DOLST | |
F778 F4 B9 EE 1D F4 E9 E1 71 FDB COMPI,DOTQP,STRCQ,EXIT | |
F780 ; | |
F780 ; Name compiler | |
F780 ; | |
F780 ; ?UNIQUE ( a -- a ) | |
F780 ; Display a warning message if the word already exists. | |
F780 ; | |
F780 F7 8C F7 72 FDB UNIQU,L2010 | |
F784 07 3F 55 4E 49 51 55 45 L2020: FCB 7,"?UNIQUE" | |
F78C BD E1 12 UNIQU: JSR DOLST | |
F78F E2 21 F0 C6 FDB DUPP,NAMEQ ;?name exists | |
F793 E1 40 F7 A7 FDB QBRAN,UNIQ1 | |
F797 EE 1D FDB DOTQP ;redefinitions are OK | |
F799 07 20 72 65 44 65 66 20 FCB 7," reDef " ;but the user should be warned | |
F7A1 E2 43 E9 F1 ED B8 FDB OVER,COUNT,TYPES ;just in case its not planned | |
F7A7 E2 15 E1 71 UNIQ1: FDB DROP,EXIT | |
F7AB ; | |
F7AB ; $,n ( na -- ) | |
F7AB ; Build a new dictionary name using the string at na. | |
F7AB ; | |
F7AB F7 B3 F7 84 FDB SNAME,L2020 | |
F7AF 03 24 2C 6E L2030: FCB 3,"$,n" | |
F7B3 BD E1 12 SNAME: JSR DOLST | |
F7B6 E2 21 E1 A5 FDB DUPP,CAT ;?null input | |
F7BA E1 40 F7 E4 FDB QBRAN,PNAM1 | |
F7BE F7 8C FDB UNIQU ;?redefinition | |
F7C0 E2 21 E4 AD E1 7B FDB DUPP,LAST,STORE ;save na for vocabulary link | |
F7C6 EA 07 E9 15 E2 30 FDB HERE,ALGND,SWAP ;align code address | |
F7CC E8 EB FDB CELLM ;link address | |
F7CE E4 87 E1 89 E1 89 E2 43 E1 7B FDB CRRNT,AT,AT,OVER,STORE | |
F7D8 E8 EB E2 21 E4 9F E1 7B FDB CELLM,DUPP,NP,STORE ;adjust name pointer | |
F7E0 E1 7B E1 71 FDB STORE,EXIT ;save code pointer | |
F7E4 EE 0E PNAM1: FDB STRQP | |
F7E6 05 20 6E 61 6D 65 FCB 5," name" ;null input | |
F7EC F2 44 FDB THROW | |
F7EE ; | |
F7EE ; FORTH compiler | |
F7EE ; | |
F7EE ; $COMPILE ( a -- ) | |
F7EE ; Compile next word to code dictionary as a token or literal. | |
F7EE ; | |
F7EE F7 FB F7 AF FDB SCOMP,L2030 | |
F7F2 08 24 43 4F 4D 50 49 4C 45 L2040: FCB 8,"$COMPILE" | |
F7FB BD E1 12 SCOMP: JSR DOLST | |
F7FE F0 C6 E4 E3 FDB NAMEQ,QDUP ;?defined | |
F802 E1 40 F8 1A FDB QBRAN,SCOM2 | |
F806 E1 89 E0 EF 80 00 E2 76 FDB AT,DOLIT,IMEDD*256,ANDD ;?immediate | |
F80E E1 40 F8 16 FDB QBRAN,SCOM1 | |
F812 E1 67 E1 71 FDB EXECU,EXIT ;its immediate, execute | |
F816 F4 85 E1 71 SCOM1: FDB COMMA,EXIT | |
F81A E4 47 EA 45 SCOM2: FDB TNUMB,ATEXE | |
F81E E1 40 F8 26 FDB QBRAN,SCOM3 | |
F822 F4 D6 E1 71 FDB LITER,EXIT ;compile number as integer | |
F826 F2 44 SCOM3: FDB THROW | |
F828 ; | |
F828 ; OVERT ( -- ) | |
F828 ; Link a new word into the current vocabulary. | |
F828 ; | |
F828 F8 32 F7 F2 FDB OVERT,L2040 | |
F82C 05 4F 56 45 52 54 L2050: FCB 5,"OVERT" | |
F832 BD E1 12 OVERT: JSR DOLST | |
F835 E4 AD E1 89 E4 87 E1 89 E1 7B E1 71 FDB LAST,AT,CRRNT,AT,STORE,EXIT | |
F841 ; | |
F841 ; ; ( -- ) | |
F841 ; Terminate a colon definition. | |
F841 ; | |
F841 F8 47 F8 2C FDB SEMIS,L2050 | |
F845 C1 3B L2060: FCB IMEDD+COMPO+1,";" | |
F847 BD E1 12 SEMIS: JSR DOLST | |
F84A F4 B9 E1 71 F2 EB F8 32 E1 71 FDB COMPI,EXIT,LBRAC,OVERT,EXIT | |
F854 ; | |
F854 ; ] ( -- ) | |
F854 ; Start compiling the words in the input stream. | |
F854 ; | |
F854 F8 5A F8 45 FDB RBRAC,L2060 | |
F858 01 5D L2070: FCB 1,"]" | |
F85A BD E1 12 RBRAC: JSR DOLST | |
F85D E0 EF F7 FB E4 36 E1 7B E1 71 FDB DOLIT,SCOMP,TEVAL,STORE,EXIT | |
F867 ; | |
F867 ; call, ( ca -- ) | |
F867 ; Assemble a call instruction to ca. | |
F867 ; | |
F867 F8 71 F8 58 FDB CALLC,L2070 | |
F86B 05 63 61 6C 6C 2C L2080: FCB 5,"call," | |
F871 BD E1 12 CALLC: JSR DOLST | |
F874 E1 00 FDB DOCLIT | |
F876 BD FCB CALLL | |
F877 EA 07 E1 96 FDB HERE,CSTOR ;Direct Threaded Code | |
F87B E3 06 F4 76 FDB ONE,ALLOT | |
F87F F4 85 E1 71 FDB COMMA,EXIT ;DTC 6809 extended addr jsr | |
F883 ; | |
F883 ; : ( -- ; <string> ) | |
F883 ; Start a new colon definition using next word as its name. | |
F883 ; | |
F883 F8 89 F8 6B FDB COLON,L2080 | |
F887 01 3A L2090: FCB 1,":" | |
F889 BD E1 12 COLON: JSR DOLST | |
F88C EF C4 F7 B3 E0 EF E1 12 FDB TOKEN,SNAME,DOLIT,DOLST | |
F894 F8 71 F8 5A E1 71 FDB CALLC,RBRAC,EXIT | |
F89A ; | |
F89A ; IMMEDIATE ( -- ) | |
F89A ; Make the last compiled word an immediate word. | |
F89A ; | |
F89A F8 A8 F8 87 FDB IMMED,L2090 | |
F89E 09 49 4D 4D 45 44 49 41 54 45 L2100: FCB 9,"IMMEDIATE" | |
F8A8 BD E1 12 IMMED: JSR DOLST | |
F8AB E0 EF 80 00 E4 AD E1 89 E1 89 E2 87 FDB DOLIT,IMEDD*256,LAST,AT,AT,ORR | |
F8B7 E4 AD E1 89 E1 7B E1 71 FDB LAST,AT,STORE,EXIT | |
F8BF ; | |
F8BF ; Defining words | |
F8BF ; | |
F8BF ; USER ( u -- ; <string> ) | |
F8BF ; Compile a new user variable. | |
F8BF ; | |
F8BF F8 C8 F8 9E FDB USER,L2100 | |
F8C3 04 55 53 45 52 L2110: FCB 4,"USER" | |
F8C8 BD E1 12 USER: JSR DOLST | |
F8CB EF C4 F7 B3 F8 32 FDB TOKEN,SNAME,OVERT | |
F8D1 ; FDB DOLIT,DOLST,CALLC | |
F8D1 ; FDB DOLIT,DOUSE,COMMA | |
F8D1 ; fast implementation .... | |
F8D1 E0 EF E3 5B F8 71 FDB DOLIT,FDOUSE,CALLC | |
F8D7 F4 85 E1 71 FDB COMMA,EXIT | |
F8DB ; | |
F8DB ; CREATE ( -- ; <string> ) | |
F8DB ; Compile a new array entry without allocating code space. | |
F8DB ; | |
F8DB F8 E6 F8 C3 FDB CREAT,L2110 | |
F8DF 06 43 52 45 41 54 45 L2120: FCB 6,"CREATE" | |
F8E6 BD E1 12 CREAT: JSR DOLST | |
F8E9 EF C4 F7 B3 F8 32 FDB TOKEN,SNAME,OVERT | |
F8EF ; FDB DOLIT,DOLST,CALLC | |
F8EF ; FDB DOLIT,DOVAR,COMMA,EXIT | |
F8EF ; fast implementation .... | |
F8EF E0 EF E3 33 F8 71 E1 71 FDB DOLIT,FDOVAR,CALLC,EXIT | |
F8F7 ; | |
F8F7 ; VARIABLE ( -- ; <string> ) | |
F8F7 ; Compile a new variable initialized to 0. | |
F8F7 ; | |
F8F7 F9 04 F8 DF FDB VARIA,L2120 | |
F8FB 08 56 41 52 49 41 42 4C 45 L2130: FCB 8,"VARIABLE" | |
F904 BD E1 12 VARIA: JSR DOLST | |
F907 F8 E6 E2 FB F4 85 E1 71 FDB CREAT,ZERO,COMMA,EXIT | |
F90F ; | |
F90F ; CONSTANT ( w -- ; <string> ) | |
F90F ; Compile a new constant with value w. | |
F90F ; | |
F90F F9 1C F8 FB FDB CONST,L2130 | |
F913 08 43 4F 4E 53 54 41 4E 54 L2135: FCB 8,"CONSTANT" | |
F91C BD E1 12 CONST: JSR DOLST | |
F91F EF C4 F7 B3 F8 32 FDB TOKEN,SNAME,OVERT | |
F925 E0 EF E2 EF F8 71 FDB DOLIT,DOCONST,CALLC | |
F92B F4 85 E1 71 FDB COMMA,EXIT | |
F92F ; | |
F92F ; Tools | |
F92F ; | |
F92F ; _TYPE ( b u -- ) | |
F92F ; Display a string. Filter non-printing characters. | |
F92F ; | |
F92F F9 39 F9 13 FDB UTYPE,L2135 | |
F933 05 5F 54 59 50 45 L2140: FCB 5,"_TYPE" | |
F939 BD E1 12 UTYPE: JSR DOLST | |
F93C E1 EB FDB TOR ;start count down loop | |
F93E E1 57 F9 4C FDB BRAN,UTYP2 ;skip first pass | |
F942 E2 21 E1 A5 E9 2E ED 41 UTYP1: FDB DUPP,CAT,TCHAR,EMIT | |
F94A E5 96 FDB PLUS1 ;increment address | |
F94C E1 21 F9 42 UTYP2: FDB DONXT,UTYP1 | |
F950 E2 15 E1 71 FDB DROP,EXIT | |
F954 ; | |
F954 ; dm+ ( a u -- a ) | |
F954 ; Dump u bytes from , leaving a+u on the stack. | |
F954 ; | |
F954 F9 5C F9 33 FDB DUMPP,L2140 | |
F958 03 64 6D 2B L2150: FCB 3,"dm+" | |
F95C BD E1 12 DUMPP: JSR DOLST | |
F95F E2 43 E0 EF 00 04 EE 4A FDB OVER,DOLIT,4,UDOTR ;display address | |
F967 ED 86 E1 EB FDB SPACE,TOR ;start count down loop | |
F96B E1 57 F9 7B FDB BRAN,PDUM2 ;skip first pass | |
F96F E2 21 E1 A5 E0 EF 00 03 EE 4A PDUM1: FDB DUPP,CAT,DOLIT,3,UDOTR | |
F979 E5 96 FDB PLUS1 ;increment address | |
F97B E1 21 F9 6F PDUM2: FDB DONXT,PDUM1 | |
F97F E1 71 FDB EXIT | |
F981 ; | |
F981 ; DUMP ( a u -- ) | |
F981 ; Dump u bytes from a, in a formatted manner. | |
F981 ; | |
F981 F9 8A F9 58 FDB DUMP,L2150 | |
F985 04 44 55 4D 50 L2160: FCB 4,"DUMP" | |
F98A BD E1 12 DUMP: JSR DOLST | |
F98D E3 E4 E1 89 E1 EB EC 1C FDB BASE,AT,TOR,HEX ;save radix, set hex | |
F995 E1 00 FDB DOCLIT | |
F997 10 FCB 16 | |
F998 E8 03 FDB SLASH ;change count to lines | |
F99A E1 EB FDB TOR ;start count down loop | |
F99C ED D8 E1 00 DUMP1: FDB CR,DOCLIT | |
F9A0 10 FCB 16 | |
F9A1 E5 21 F9 5C FDB DDUP,DUMPP ;display numeric | |
F9A5 E4 F8 E4 F8 FDB ROT,ROT | |
F9A9 E3 11 ED 9A F9 39 FDB TWO,SPACS,UTYPE ;display printable characters | |
F9AF ED 53 E5 DF FDB NUFQ,INVER ;user control | |
F9B3 E1 40 F9 BF FDB QBRAN,DUMP2 | |
F9B7 E1 21 F9 9C FDB DONXT,DUMP1 ;loop till done | |
F9BB E1 57 F9 C3 FDB BRAN,DUMP3 | |
F9BF E1 CB E2 15 DUMP2: FDB RFROM,DROP | |
F9C3 E2 15 E1 CB E3 E4 E1 7B DUMP3: FDB DROP,RFROM,BASE,STORE | |
F9CB E1 71 FDB EXIT | |
F9CD ; | |
F9CD ; .S ( ... -- ... ) | |
F9CD ; Display the contents of the data stack. | |
F9CD ; | |
F9CD F9 D4 F9 85 FDB DOTS,L2160 | |
F9D1 02 2E 53 L2170: FCB 2,".S" | |
F9D4 BD E1 12 DOTS: JSR DOLST | |
F9D7 ED D8 E9 54 FDB CR,DEPTH ;stack depth | |
F9DB E1 EB FDB TOR ;start count down loop | |
F9DD E1 57 F9 E7 FDB BRAN,DOTS2 ;skip first pass | |
F9E1 E1 DE E9 71 EE 7D DOTS1: FDB RAT,PICK,DOT | |
F9E7 E1 21 F9 E1 DOTS2: FDB DONXT,DOTS1 | |
F9EB EE 1D FDB DOTQP | |
F9ED 04 20 3C 73 70 FCB 4," <sp" | |
F9F2 E1 71 FDB EXIT | |
F9F4 ; | |
F9F4 ; !CSP ( -- ) | |
F9F4 ; Save stack pointer in CSP for error checking. | |
F9F4 ; | |
F9F4 F9 FD F9 D1 FDB STCSP,L2170 | |
F9F8 04 21 43 53 50 L2180: FCB 4,"!CSP" | |
F9FD BD E1 12 STCSP: JSR DOLST | |
FA00 E1 F9 E4 27 E1 7B E1 71 FDB SPAT,CSP,STORE,EXIT ;save pointer | |
FA08 ; | |
FA08 ; ?CSP ( -- ) | |
FA08 ; Abort if stack pointer differs from that saved in CSP. | |
FA08 ; | |
FA08 FA 11 F9 F8 FDB QCSP,L2180 | |
FA0C 04 3F 43 53 50 L2190: FCB 4,"?CSP" | |
FA11 BD E1 12 QCSP: JSR DOLST | |
FA14 E1 F9 E4 27 E1 89 E2 99 FDB SPAT,CSP,AT,XORR ;compare pointers | |
FA1C F2 92 FDB ABORQ ;abort if different | |
FA1E 06 73 74 61 63 6B 73 FCB 6,"stacks" | |
FA25 E1 71 FDB EXIT | |
FA27 ; | |
FA27 ; >NAME ( ca -- na | F ) | |
FA27 ; Convert code address to a name address. | |
FA27 ; | |
FA27 FA 31 FA 0C FDB TNAME,L2190 | |
FA2B 05 3E 4E 41 4D 45 L2200: FCB 5,">NAME" | |
FA31 BD E1 12 TNAME: JSR DOLST | |
FA34 E4 87 FDB CRRNT ;vocabulary link | |
FA36 E8 D7 E1 89 E4 E3 TNAM1: FDB CELLP,AT,QDUP | |
FA3C E1 40 FA 6E FDB QBRAN,TNAM4 | |
FA40 E5 21 FDB DDUP | |
FA42 E1 89 E2 21 TNAM2: FDB AT,DUPP | |
FA46 E1 40 FA 5A FDB QBRAN,TNAM3 | |
FA4A E5 21 EF FC E2 99 FDB DDUP,NAMET,XORR ;compare | |
FA50 E1 40 FA 5A FDB QBRAN,TNAM3 | |
FA54 E8 EB FDB CELLM ;continue with next word | |
FA56 E1 57 FA 42 FDB BRAN,TNAM2 | |
FA5A E2 30 E2 15 E4 E3 TNAM3: FDB SWAP,DROP,QDUP | |
FA60 E1 40 FA 36 FDB QBRAN,TNAM1 | |
FA64 E2 30 E2 15 E2 30 E2 15 E1 71 FDB SWAP,DROP,SWAP,DROP,EXIT | |
FA6E E2 15 E0 EF 00 00 E1 71 TNAM4: FDB DROP,DOLIT,0,EXIT | |
FA76 ; | |
FA76 ; .ID ( na -- ) | |
FA76 ; Display the name at address. | |
FA76 ; | |
FA76 FA 7E FA 2B FDB DOTID,L2200 | |
FA7A 03 2E 49 44 L2210: FCB 3,".ID" | |
FA7E BD E1 12 DOTID: JSR DOLST | |
FA81 E4 E3 FDB QDUP ;if zero no name | |
FA83 E1 40 FA 92 FDB QBRAN,DOTI1 | |
FA87 E9 F1 E1 00 FDB COUNT,DOCLIT | |
FA8B 1F FCB $1F | |
FA8C E2 76 FDB ANDD ;mask lexicon bits | |
FA8E F9 39 E1 71 FDB UTYPE,EXIT ;display name string | |
FA92 EE 1D DOTI1: FDB DOTQP | |
FA94 09 20 7B 6E 6F 4E 61 6D 65 7D FCB 9," {noName}" | |
FA9E E1 71 FDB EXIT | |
FAA0 ; | |
FAA0 ; SEE ( -- ; <string> ) | |
FAA0 ; A simple decompiler. | |
FAA0 ; | |
FAA0 FA A8 FA 7A FDB SEE,L2210 | |
FAA4 03 53 45 45 L2220: FCB 3,"SEE" | |
FAA8 BD E1 12 SEE: JSR DOLST | |
FAAB F4 5D FDB TICK ;starting address | |
FAAD E5 96 FDB PLUS1 ;skip JSR | |
FAAF ;primitive check ... | |
FAAF E3 E4 E1 89 E1 EB EC 1C FDB BASE,AT,TOR,HEX ;switch to hex base | |
FAB7 E2 21 E1 89 E0 EF E1 12 E2 99 FDB DUPP,AT,DOLIT,DOLST,XORR | |
FAC1 ;high level word? | |
FAC1 E1 40 FA D7 FDB QBRAN,SEE1 ;yes! | |
FAC5 ED D8 EE 1D FDB CR,DOTQP ;primitive word only | |
FAC9 09 20 50 52 49 4D 49 54 56 45 FCB 9," PRIMITVE" | |
FAD3 E1 57 FB EA FDB BRAN,SEE5 ;exit | |
FAD7 ED D8 E8 D7 E2 21 EE 68 ED 86 SEE1: FDB CR,CELLP,DUPP,UDOT,SPACE | |
FAE1 E2 21 E1 89 E2 21 FDB DUPP,AT,DUPP ;?does it contain a zero | |
FAE7 E1 40 FA ED FDB QBRAN,SEE2 | |
FAEB FA 31 FDB TNAME ;?is it a name | |
FAED E4 E3 SEE2: FDB QDUP | |
FAEF E1 40 FB CC FDB QBRAN,SEE3 | |
FAF3 ; | |
FAF3 ED 86 FA 7E FDB SPACE,DOTID ;display name | |
FAF7 E2 21 E1 89 FDB DUPP,AT | |
FAFB ; | |
FAFB E2 21 E0 EF E1 00 E6 56 FDB DUPP,DOLIT,DOCLIT,EQUAL ; doCLIT? | |
FB03 E1 40 FB 1B FDB QBRAN,SEE21 | |
FB07 E2 43 E8 D7 E1 A5 ED 86 EE 68 FDB OVER,CELLP,CAT,SPACE,UDOT ; CLIT: get only single byte | |
FB11 E2 30 E5 96 E2 30 FDB SWAP,PLUS1,SWAP | |
FB17 E1 57 FB C0 FDB BRAN,SEE28 | |
FB1B ; | |
FB1B E2 21 E0 EF E0 EF E6 56 SEE21: FDB DUPP,DOLIT,DOLIT,EQUAL | |
FB23 E2 43 E0 EF E1 40 E6 56 E2 87 FDB OVER,DOLIT,QBRAN,EQUAL,ORR ; ?BRAN ? | |
FB2D E2 43 E0 EF E1 57 E6 56 E2 87 FDB OVER,DOLIT,BRAN,EQUAL,ORR ; BRANCH ? | |
FB37 E2 43 E0 EF E1 21 E6 56 E2 87 FDB OVER,DOLIT,DONXT,EQUAL,ORR ; next ? (from FOR/NEXT) | |
FB41 E2 43 E0 EF F5 BB E6 56 E2 87 FDB OVER,DOLIT,DOLOOP,EQUAL,ORR ; (LOOP) ? | |
FB4B E2 43 E0 EF F5 CC E6 56 E2 87 FDB OVER,DOLIT,DOPLOOP,EQUAL,ORR ; (+LOOP) ? | |
FB55 E2 43 E0 EF F5 A8 E6 56 E2 87 FDB OVER,DOLIT,DODO,EQUAL,ORR ; (DO) ? | |
FB5F E2 43 E0 EF F5 4E E6 56 E2 87 FDB OVER,DOLIT,DOQDO,EQUAL,ORR ; (?DO) ? | |
FB69 E2 43 E0 EF F5 88 E6 56 E2 87 FDB OVER,DOLIT,DOMDO,EQUAL,ORR ; (-DO) ? | |
FB73 E1 40 FB 89 FDB QBRAN,SEE27 | |
FB77 E2 30 E8 D7 E2 21 E1 89 ED 86 EE 68 E2 30 FDB SWAP,CELLP,DUPP,AT,SPACE,UDOT,SWAP ; LIT: get word | |
FB85 E1 57 FB C0 FDB BRAN,SEE28 | |
FB89 SEE27: | |
FB89 E2 21 E0 EF EE 1D E6 56 FDB DUPP,DOLIT,DOTQP,EQUAL ; ." ..." | |
FB91 E2 43 E0 EF F2 92 E6 56 E2 87 FDB OVER,DOLIT,ABORQ,EQUAL,ORR ; ABORT" ..." | |
FB9B E2 43 E0 EF EE 0E E6 56 E2 87 FDB OVER,DOLIT,STRQP,EQUAL,ORR ; $" ..." | |
FBA5 E1 40 FB C6 FDB QBRAN,SEE29 ; last case aalway to SEE29!! | |
FBA9 E2 30 E8 D7 FDB SWAP,CELLP ; print compiled string | |
FBAD E2 21 E9 F1 ED B8 E1 00 FDB DUPP,COUNT,TYPES,DOCLIT | |
FBB5 22 FCB 34 | |
FBB6 ED 41 FDB EMIT | |
FBB8 E9 F1 E5 CF E8 EB E2 30 FDB COUNT,PLUS,CELLM,SWAP ; adjust continuation address | |
FBC0 ; | |
FBC0 E2 15 SEE28: FDB DROP | |
FBC2 E1 57 FB E4 FDB BRAN,SEE4 | |
FBC6 E2 15 SEE29: FDB DROP | |
FBC8 E1 57 FB D6 FDB BRAN,SEE31 ; cleanup, check for EXIT | |
FBCC ; | |
FBCC E2 21 E1 89 EE 68 SEE3: FDB DUPP,AT,UDOT | |
FBD2 E1 57 FB E4 FDB BRAN,SEE4 | |
FBD6 E2 21 E1 89 E0 EF E1 71 E2 99 SEE31: FDB DUPP,AT,DOLIT,EXIT,XORR | |
FBE0 ; but not if SEE decompiles itself! | |
FBE0 E1 40 FB EA FDB QBRAN,SEE5 | |
FBE4 ED 53 SEE4: FDB NUFQ | |
FBE6 E1 40 FA D7 FDB QBRAN,SEE1 | |
FBEA E1 CB E3 E4 E1 7B E2 15 E1 71 SEE5: FDB RFROM,BASE,STORE,DROP,EXIT | |
FBF4 ; | |
FBF4 ; WORDS ( -- ) | |
FBF4 ; Display the names in the context vocabulary. | |
FBF4 ; | |
FBF4 FB FE FA A4 FDB WORDS,L2220 | |
FBF8 05 57 4F 52 44 53 L2230: FCB 5,"WORDS" | |
FBFE BD E1 12 WORDS: JSR DOLST | |
FC01 ED D8 E4 76 E1 89 FDB CR,CNTXT,AT ;only in context | |
FC07 E1 89 E4 E3 WORS1: FDB AT,QDUP | |
FC0B E1 40 FC 1F FDB QBRAN,WORS2 | |
FC0F E2 21 ED 86 FA 7E FDB DUPP,SPACE,DOTID ;display a name | |
FC15 E8 EB ED 53 FDB CELLM,NUFQ ;user control | |
FC19 E1 40 FC 07 FDB QBRAN,WORS1 | |
FC1D E2 15 FDB DROP | |
FC1F E1 71 WORS2: FDB EXIT | |
FC21 ; | |
FC21 ; Hardware reset | |
FC21 ; | |
FC21 ; VER ( -- n ) | |
FC21 ; Return the version number of this implementation. | |
FC21 ; | |
FC21 FC 29 FB F8 FDB VERSN,L2230 | |
FC25 03 56 45 52 L2240: FCB 3,"VER" | |
FC29 BD E1 12 VERSN: JSR DOLST | |
FC2C E0 EF 01 00 E1 71 FDB DOLIT,VER*256+EXT,EXIT | |
FC32 ; | |
FC32 ; hi ( -- ) | |
FC32 ; Display the sign-on message of eForth. | |
FC32 ; | |
FC32 FC 39 FC 25 FDB HI,L2240 | |
FC36 02 68 69 L2250: FCB 2,"hi" | |
FC39 BD E1 12 HI: JSR DOLST | |
FC3C E0 E3 ED D8 EE 1D FDB STOIO,CR,DOTQP ;initialize I/O | |
FC42 0B 65 46 6F 72 74 68 20 76 FCB 11,"eForth v" ;model | |
FC4B 31 2E 30 FCB VER+"0",".",EXT+"0" ;version | |
FC4E ED D8 E1 71 FDB CR,EXIT | |
FC52 ; | |
FC52 ; 'BOOT ( -- a ) | |
FC52 ; The application startup vector. | |
FC52 ; | |
FC52 FC 5C FC 36 FDB TBOOT,L2250 | |
FC56 05 27 42 4F 4F 54 L2260: FCB 5,"'BOOT" | |
FC5C TBOOT: | |
FC5C ; jsr DOLST | |
FC5C ; FDB DOVAR | |
FC5C BD E3 33 JSR FDOVAR | |
FC5F FC 39 FDB HI ;application to boot | |
FC61 ; | |
FC61 ; COLD ( -- ) | |
FC61 ; The hilevel cold start sequence. | |
FC61 ; | |
FC61 FC 6A FC 56 FDB COLD,L2260 | |
FC65 04 43 4F 4C 44 L2270: FCB 4,"COLD" | |
FC6A BD E1 12 COLD: JSR DOLST | |
FC6D E0 EF E0 0D E0 EF 6F 80 COLD1: FDB DOLIT,UZERO,DOLIT,UPP | |
FC75 E0 EF 00 4A EA 5E FDB DOLIT,ULAST-UZERO,CMOVE ;initialize user area | |
FC7B F3 6F FDB PRESE ;initialize data stack and TIB | |
FC7D FC 5C EA 45 FDB TBOOT,ATEXE ;application boot | |
FC81 E4 D1 E4 76 E1 89 E2 21 FDB FORTH,CNTXT,AT,DUPP ;initialize search order | |
FC89 E4 87 E9 C2 F8 32 FDB CRRNT,DSTOR,OVERT | |
FC8F ; TEST | |
FC8F ; FDB DOLIT,10,DOLIT,1 | |
FC8F ; FDB DODO | |
FC8F ; | |
FC8F F4 08 FDB QUIT ;start interpretation | |
FC91 E1 57 FC 6D FDB BRAN,COLD1 ;just in case | |
FC95 ; | |
FC95 ;=============================================================== | |
FC95 ; | |
FC95 LASTN: EQU L2270 | |
FC95 ; | |
FC95 NTOP: EQU NAMEE | |
FC95 CTOP: EQU $ | |
FC95 ; | |
FC95 ; | |
FC95 ; END ORIG | |
FC95 ; | |
FC95 ;=============================================================== | |
VER: 0001 DEFINED AT LINE 53 | |
> USED AT LINE 3324 | |
> USED AT LINE 3334 | |
EXT: 0000 DEFINED AT LINE 54 | |
> USED AT LINE 3324 | |
TRUEE: 00-1 DEFINED AT LINE 58 | |
COMPO: 0040 DEFINED AT LINE 60 | |
> USED AT LINE 244 | |
> USED AT LINE 258 | |
> USED AT LINE 269 | |
> USED AT LINE 281 | |
> USED AT LINE 297 | |
> USED AT LINE 310 | |
> USED AT LINE 603 | |
> USED AT LINE 649 | |
> USED AT LINE 674 | |
> USED AT LINE 792 | |
> USED AT LINE 948 | |
> USED AT LINE 2094 | |
> USED AT LINE 2103 | |
> USED AT LINE 2111 | |
> USED AT LINE 2461 | |
> USED AT LINE 2545 | |
> USED AT LINE 2653 | |
> USED AT LINE 3021 | |
IMEDD: 0080 DEFINED AT LINE 61 | |
> USED AT LINE 2215 | |
> USED AT LINE 2223 | |
> USED AT LINE 2231 | |
> USED AT LINE 2491 | |
> USED AT LINE 2645 | |
> USED AT LINE 2662 | |
> USED AT LINE 2680 | |
> USED AT LINE 2690 | |
> USED AT LINE 2700 | |
> USED AT LINE 2730 | |
> USED AT LINE 2780 | |
> USED AT LINE 2806 | |
> USED AT LINE 2818 | |
> USED AT LINE 2839 | |
> USED AT LINE 2847 | |
> USED AT LINE 2855 | |
> USED AT LINE 2863 | |
> USED AT LINE 2871 | |
> USED AT LINE 2879 | |
> USED AT LINE 2888 | |
> USED AT LINE 2896 | |
> USED AT LINE 2904 | |
> USED AT LINE 2912 | |
> USED AT LINE 2920 | |
> USED AT LINE 2928 | |
> USED AT LINE 2936 | |
> USED AT LINE 2944 | |
> USED AT LINE 2952 | |
> USED AT LINE 3021 | |
> USED AT LINE 3060 | |
MASKK: 1F7F DEFINED AT LINE 62 | |
CFAOFF: 0003 DEFINED AT LINE 64 | |
> USED AT LINE 682 | |
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 1518 | |
> USED AT LINE 1528 | |
> USED AT LINE 1538 | |
> USED AT LINE 1582 | |
BASEE: 000A DEFINED AT LINE 67 | |
> USED AT LINE 143 | |
VOCSS: 0008 DEFINED AT LINE 68 | |
> USED AT LINE 155 | |
> USED AT LINE 905 | |
> USED AT LINE 916 | |
> USED AT LINE 927 | |
> USED AT LINE 938 | |
BKSPP: 0008 DEFINED AT LINE 70 | |
> USED AT LINE 2344 | |
> USED AT LINE 2346 | |
BKSPP2: 007F DEFINED AT LINE 71 | |
LF: 000D DEFINED AT LINE 72 | |
> USED AT LINE 2087 | |
CRR: 000A DEFINED AT LINE 73 | |
> USED AT LINE 2030 | |
> USED AT LINE 2084 | |
> USED AT LINE 2365 | |
ERR: 001B DEFINED AT LINE 74 | |
> USED AT LINE 2607 | |
TIC: 0027 DEFINED AT LINE 75 | |
CALLL: 12BD DEFINED AT LINE 77 | |
> USED AT LINE 3040 | |
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 668 | |
RPP: 6F70 DEFINED AT LINE 86 | |
> USED AT LINE 87 | |
> USED AT LINE 136 | |
TIBB: 6E70 DEFINED AT LINE 87 | |
> USED AT LINE 88 | |
> USED AT LINE 148 | |
> USED AT LINE 2539 | |
SPP: 6E60 DEFINED AT LINE 88 | |
> USED AT LINE 135 | |
COLDD: E000 DEFINED AT LINE 90 | |
> USED AT LINE 91 | |
> USED AT LINE 120 | |
CODEE: E080 DEFINED AT LINE 91 | |
> USED AT LINE 163 | |
NAMEE: 6C00 DEFINED AT LINE 92 | |
> USED AT LINE 3371 | |
RESET: E000 DEFINED AT LINE 124 | |
> 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: E000 DEFINED AT LINE 125 | |
UZERO: E00D DEFINED AT LINE 134 | |
> USED AT LINE 3354 | |
> USED AT LINE 3355 | |
ULAST: E057 DEFINED AT LINE 161 | |
> USED AT LINE 3355 | |
ACIA: 83FE DEFINED AT LINE 167 | |
> USED AT LINE 168 | |
> USED AT LINE 169 | |
> USED AT LINE 170 | |
ACIAC: 83FE DEFINED AT LINE 168 | |
ACIAS: 83FE DEFINED AT LINE 169 | |
> USED AT LINE 178 | |
> USED AT LINE 186 | |
ACIAD: 83FF DEFINED AT LINE 170 | |
> USED AT LINE 181 | |
> USED AT LINE 189 | |
ACIA_TDRE: 0002 DEFINED AT LINE 172 | |
ACIA_RDRF: 0001 DEFINED AT LINE 173 | |
SEROUT: E080 DEFINED AT LINE 175 | |
> USED AT LINE 227 | |
SEROUTL: E082 DEFINED AT LINE 177 | |
> USED AT LINE 180 | |
SERIN: E08F DEFINED AT LINE 185 | |
> USED AT LINE 206 | |
SERIN_RET: E099 DEFINED AT LINE 190 | |
> USED AT LINE 188 | |
L100: E09E DEFINED AT LINE 197 | |
> USED AT LINE 203 | |
BYE: E0A2 DEFINED AT LINE 198 | |
> USED AT LINE 196 | |
L110: E0A9 DEFINED AT LINE 204 | |
> USED AT LINE 219 | |
QRX: E0AD DEFINED AT LINE 205 | |
> USED AT LINE 137 | |
> USED AT LINE 203 | |
> USED AT LINE 2577 | |
QRX1: E0B9 DEFINED AT LINE 210 | |
> USED AT LINE 207 | |
L120: E0C8 DEFINED AT LINE 220 | |
> USED AT LINE 234 | |
TXSTO: E0CC DEFINED AT LINE 221 | |
> USED AT LINE 138 | |
> USED AT LINE 141 | |
> USED AT LINE 219 | |
> USED AT LINE 2577 | |
TX1: E0D4 DEFINED AT LINE 225 | |
> USED AT LINE 223 | |
L130: E0DF DEFINED AT LINE 235 | |
> USED AT LINE 243 | |
STOIO: E0E3 DEFINED AT LINE 236 | |
> USED AT LINE 234 | |
> USED AT LINE 3332 | |
L140: E0E9 DEFINED AT LINE 244 | |
> USED AT LINE 257 | |
DOLIT: E0EF DEFINED AT LINE 245 | |
> USED AT LINE 243 | |
> USED AT LINE 1363 | |
> USED AT LINE 1377 | |
> USED AT LINE 1461 | |
> USED AT LINE 1566 | |
> USED AT LINE 1571 | |
> USED AT LINE 1688 | |
> USED AT LINE 1845 | |
> USED AT LINE 1901 | |
> USED AT LINE 1951 | |
> USED AT LINE 1959 | |
> USED AT LINE 2217 | |
> USED AT LINE 2225 | |
> USED AT LINE 2287 | |
> USED AT LINE 2344 | |
> USED AT LINE 2346 | |
> USED AT LINE 2368 | |
> USED AT LINE 2369 | |
> USED AT LINE 2386 | |
> USED AT LINE 2478 | |
> USED AT LINE 2493 | |
> USED AT LINE 2501 | |
> USED AT LINE 2539 | |
> USED AT LINE 2547 | |
> USED AT LINE 2556 | |
> USED AT LINE 2557 | |
> USED AT LINE 2565 | |
> USED AT LINE 2566 | |
> USED AT LINE 2597 | |
> USED AT LINE 2605 | |
> USED AT LINE 2607 | |
> USED AT LINE 2664 | |
> USED AT LINE 2672 | |
> USED AT LINE 3000 | |
> USED AT LINE 3031 | |
> USED AT LINE 3060 | |
> USED AT LINE 3075 | |
> USED AT LINE 3088 | |
> USED AT LINE 3105 | |
> USED AT LINE 3129 | |
> USED AT LINE 3214 | |
> USED AT LINE 3258 | |
> 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 3271 | |
> USED AT LINE 3272 | |
> USED AT LINE 3277 | |
> USED AT LINE 3278 | |
> USED AT LINE 3279 | |
> USED AT LINE 3324 | |
> USED AT LINE 3354 | |
> USED AT LINE 3355 | |
L141: E0F9 DEFINED AT LINE 258 | |
> USED AT LINE 268 | |
DOCLIT: E100 DEFINED AT LINE 259 | |
> USED AT LINE 257 | |
> USED AT LINE 1517 | |
> USED AT LINE 1527 | |
> USED AT LINE 1537 | |
> USED AT LINE 1567 | |
> USED AT LINE 1581 | |
> USED AT LINE 1839 | |
> USED AT LINE 1842 | |
> USED AT LINE 1929 | |
> USED AT LINE 1939 | |
> USED AT LINE 1952 | |
> USED AT LINE 1956 | |
> USED AT LINE 2040 | |
> USED AT LINE 2083 | |
> USED AT LINE 2086 | |
> USED AT LINE 2364 | |
> USED AT LINE 2408 | |
> USED AT LINE 3039 | |
> USED AT LINE 3144 | |
> USED AT LINE 3148 | |
> USED AT LINE 3224 | |
L150: E10B DEFINED AT LINE 269 | |
> USED AT LINE 280 | |
DOLST: E112 DEFINED AT LINE 270 | |
> USED AT LINE 268 | |
> USED AT LINE 580 | |
> USED AT LINE 651 | |
> USED AT LINE 676 | |
> USED AT LINE 950 | |
> USED AT LINE 959 | |
> USED AT LINE 970 | |
> USED AT LINE 982 | |
> USED AT LINE 991 | |
> USED AT LINE 1000 | |
> USED AT LINE 1188 | |
> USED AT LINE 1260 | |
> USED AT LINE 1271 | |
> USED AT LINE 1282 | |
> USED AT LINE 1360 | |
> USED AT LINE 1385 | |
> USED AT LINE 1402 | |
> USED AT LINE 1410 | |
> USED AT LINE 1419 | |
> USED AT LINE 1460 | |
> USED AT LINE 1476 | |
> USED AT LINE 1485 | |
> USED AT LINE 1498 | |
> USED AT LINE 1506 | |
> USED AT LINE 1516 | |
> USED AT LINE 1526 | |
> USED AT LINE 1536 | |
> USED AT LINE 1546 | |
> USED AT LINE 1565 | |
> USED AT LINE 1579 | |
> USED AT LINE 1612 | |
> USED AT LINE 1649 | |
> USED AT LINE 1661 | |
> USED AT LINE 1670 | |
> USED AT LINE 1679 | |
> USED AT LINE 1687 | |
> USED AT LINE 1695 | |
> USED AT LINE 1703 | |
> USED AT LINE 1809 | |
> USED AT LINE 1823 | |
> USED AT LINE 1838 | |
> USED AT LINE 1852 | |
> USED AT LINE 1861 | |
> USED AT LINE 1870 | |
> USED AT LINE 1879 | |
> USED AT LINE 1887 | |
> USED AT LINE 1898 | |
> USED AT LINE 1909 | |
> USED AT LINE 1918 | |
> USED AT LINE 1928 | |
> USED AT LINE 1938 | |
> USED AT LINE 1950 | |
> USED AT LINE 1967 | |
> USED AT LINE 2000 | |
> USED AT LINE 2008 | |
> USED AT LINE 2018 | |
> USED AT LINE 2026 | |
> USED AT LINE 2039 | |
> USED AT LINE 2049 | |
> USED AT LINE 2057 | |
> USED AT LINE 2069 | |
> USED AT LINE 2082 | |
> USED AT LINE 2095 | |
> USED AT LINE 2104 | |
> USED AT LINE 2112 | |
> USED AT LINE 2120 | |
> USED AT LINE 2129 | |
> USED AT LINE 2139 | |
> USED AT LINE 2148 | |
> USED AT LINE 2161 | |
> USED AT LINE 2171 | |
> USED AT LINE 2206 | |
> USED AT LINE 2216 | |
> USED AT LINE 2224 | |
> USED AT LINE 2232 | |
> USED AT LINE 2240 | |
> USED AT LINE 2248 | |
> USED AT LINE 2260 | |
> USED AT LINE 2270 | |
> USED AT LINE 2278 | |
> USED AT LINE 2294 | |
> USED AT LINE 2320 | |
> USED AT LINE 2341 | |
> USED AT LINE 2354 | |
> USED AT LINE 2363 | |
> USED AT LINE 2380 | |
> USED AT LINE 2399 | |
> USED AT LINE 2407 | |
> USED AT LINE 2420 | |
> USED AT LINE 2431 | |
> USED AT LINE 2454 | |
> USED AT LINE 2463 | |
> USED AT LINE 2475 | |
> USED AT LINE 2492 | |
> USED AT LINE 2500 | |
> USED AT LINE 2512 | |
> USED AT LINE 2523 | |
> USED AT LINE 2537 | |
> USED AT LINE 2546 | |
> USED AT LINE 2555 | |
> USED AT LINE 2564 | |
> USED AT LINE 2584 | |
> USED AT LINE 2593 | |
> USED AT LINE 2618 | |
> USED AT LINE 2629 | |
> USED AT LINE 2637 | |
> USED AT LINE 2646 | |
> USED AT LINE 2654 | |
> USED AT LINE 2663 | |
> USED AT LINE 2671 | |
> USED AT LINE 2681 | |
> USED AT LINE 2691 | |
> USED AT LINE 2701 | |
> USED AT LINE 2731 | |
> USED AT LINE 2807 | |
> USED AT LINE 2819 | |
> USED AT LINE 2840 | |
> USED AT LINE 2848 | |
> USED AT LINE 2856 | |
> USED AT LINE 2864 | |
> USED AT LINE 2872 | |
> USED AT LINE 2880 | |
> USED AT LINE 2889 | |
> USED AT LINE 2897 | |
> USED AT LINE 2905 | |
> USED AT LINE 2913 | |
> USED AT LINE 2921 | |
> USED AT LINE 2929 | |
> USED AT LINE 2937 | |
> USED AT LINE 2945 | |
> USED AT LINE 2953 | |
> USED AT LINE 2963 | |
> USED AT LINE 2976 | |
> USED AT LINE 2997 | |
> USED AT LINE 3014 | |
> USED AT LINE 3022 | |
> USED AT LINE 3030 | |
> USED AT LINE 3038 | |
> USED AT LINE 3050 | |
> USED AT LINE 3059 | |
> USED AT LINE 3070 | |
> USED AT LINE 3083 | |
> USED AT LINE 3095 | |
> USED AT LINE 3103 | |
> USED AT LINE 3115 | |
> USED AT LINE 3128 | |
> USED AT LINE 3142 | |
> USED AT LINE 3166 | |
> USED AT LINE 3181 | |
> USED AT LINE 3189 | |
> USED AT LINE 3200 | |
> USED AT LINE 3221 | |
> USED AT LINE 3237 | |
> USED AT LINE 3306 | |
> USED AT LINE 3323 | |
> USED AT LINE 3331 | |
> USED AT LINE 3353 | |
L160: E11C DEFINED AT LINE 281 | |
> USED AT LINE 296 | |
DONXT: E121 DEFINED AT LINE 282 | |
> USED AT LINE 280 | |
> USED AT LINE 1374 | |
> USED AT LINE 1466 | |
> USED AT LINE 1815 | |
> USED AT LINE 1981 | |
> USED AT LINE 2061 | |
> USED AT LINE 2074 | |
> USED AT LINE 2181 | |
> USED AT LINE 2192 | |
> USED AT LINE 2286 | |
> USED AT LINE 2857 | |
> USED AT LINE 3120 | |
> USED AT LINE 3134 | |
> USED AT LINE 3155 | |
> USED AT LINE 3171 | |
NEXT1: E12E DEFINED AT LINE 288 | |
> USED AT LINE 284 | |
L170: E138 DEFINED AT LINE 297 | |
> USED AT LINE 309 | |
QBRAN: E140 DEFINED AT LINE 298 | |
> USED AT LINE 296 | |
> USED AT LINE 972 | |
> USED AT LINE 1190 | |
> USED AT LINE 1262 | |
> USED AT LINE 1273 | |
> USED AT LINE 1362 | |
> USED AT LINE 1369 | |
> USED AT LINE 1387 | |
> USED AT LINE 1390 | |
> USED AT LINE 1393 | |
> USED AT LINE 1464 | |
> USED AT LINE 1489 | |
> USED AT LINE 1570 | |
> USED AT LINE 1614 | |
> USED AT LINE 1705 | |
> USED AT LINE 1813 | |
> USED AT LINE 1889 | |
> USED AT LINE 1900 | |
> USED AT LINE 1955 | |
> USED AT LINE 1970 | |
> USED AT LINE 1975 | |
> USED AT LINE 1978 | |
> USED AT LINE 1983 | |
> USED AT LINE 2010 | |
> USED AT LINE 2028 | |
> USED AT LINE 2152 | |
> USED AT LINE 2173 | |
> USED AT LINE 2175 | |
> USED AT LINE 2179 | |
> USED AT LINE 2188 | |
> USED AT LINE 2190 | |
> USED AT LINE 2284 | |
> USED AT LINE 2299 | |
> USED AT LINE 2301 | |
> USED AT LINE 2308 | |
> USED AT LINE 2322 | |
> USED AT LINE 2327 | |
> USED AT LINE 2329 | |
> USED AT LINE 2343 | |
> USED AT LINE 2367 | |
> USED AT LINE 2370 | |
> USED AT LINE 2383 | |
> USED AT LINE 2387 | |
> USED AT LINE 2464 | |
> USED AT LINE 2477 | |
> USED AT LINE 2483 | |
> USED AT LINE 2502 | |
> USED AT LINE 2525 | |
> USED AT LINE 2598 | |
> USED AT LINE 2601 | |
> USED AT LINE 2606 | |
> USED AT LINE 2620 | |
> USED AT LINE 2865 | |
> USED AT LINE 2881 | |
> USED AT LINE 2965 | |
> USED AT LINE 2978 | |
> USED AT LINE 2999 | |
> USED AT LINE 3001 | |
> USED AT LINE 3005 | |
> USED AT LINE 3154 | |
> USED AT LINE 3203 | |
> USED AT LINE 3206 | |
> USED AT LINE 3208 | |
> USED AT LINE 3212 | |
> USED AT LINE 3223 | |
> USED AT LINE 3244 | |
> USED AT LINE 3250 | |
> USED AT LINE 3253 | |
> USED AT LINE 3259 | |
> USED AT LINE 3273 | |
> USED AT LINE 3280 | |
> USED AT LINE 3296 | |
> USED AT LINE 3298 | |
> USED AT LINE 3309 | |
> USED AT LINE 3312 | |
BRAN1: E148 DEFINED AT LINE 303 | |
> USED AT LINE 300 | |
L180: E150 DEFINED AT LINE 310 | |
> USED AT LINE 317 | |
BRAN: E157 DEFINED AT LINE 311 | |
> USED AT LINE 309 | |
> USED AT LINE 1371 | |
> USED AT LINE 1615 | |
> USED AT LINE 1811 | |
> USED AT LINE 1890 | |
> USED AT LINE 1986 | |
> USED AT LINE 2059 | |
> USED AT LINE 2071 | |
> USED AT LINE 2194 | |
> USED AT LINE 2280 | |
> USED AT LINE 2303 | |
> USED AT LINE 2305 | |
> USED AT LINE 2310 | |
> USED AT LINE 2389 | |
> USED AT LINE 2391 | |
> USED AT LINE 2527 | |
> USED AT LINE 2609 | |
> USED AT LINE 2873 | |
> USED AT LINE 2890 | |
> USED AT LINE 3117 | |
> USED AT LINE 3131 | |
> USED AT LINE 3156 | |
> USED AT LINE 3169 | |
> USED AT LINE 3210 | |
> USED AT LINE 3247 | |
> USED AT LINE 3262 | |
> USED AT LINE 3275 | |
> USED AT LINE 3288 | |
> USED AT LINE 3290 | |
> USED AT LINE 3293 | |
> USED AT LINE 3365 | |
L190: E15F DEFINED AT LINE 318 | |
> USED AT LINE 325 | |
EXECU: E167 DEFINED AT LINE 319 | |
> USED AT LINE 317 | |
> USED AT LINE 1706 | |
> USED AT LINE 2481 | |
> USED AT LINE 3002 | |
L200: E16C DEFINED AT LINE 326 | |
> USED AT LINE 333 | |
EXIT: E171 DEFINED AT LINE 327 | |
> USED AT LINE 325 | |
> USED AT LINE 652 | |
> USED AT LINE 974 | |
> USED AT LINE 1192 | |
> USED AT LINE 1264 | |
> USED AT LINE 1275 | |
> USED AT LINE 1395 | |
> USED AT LINE 1491 | |
> USED AT LINE 1519 | |
> USED AT LINE 1529 | |
> USED AT LINE 1539 | |
> USED AT LINE 1547 | |
> USED AT LINE 1572 | |
> USED AT LINE 1583 | |
> USED AT LINE 1619 | |
> USED AT LINE 1707 | |
> USED AT LINE 1816 | |
> USED AT LINE 1891 | |
> USED AT LINE 1902 | |
> USED AT LINE 2011 | |
> USED AT LINE 2032 | |
> USED AT LINE 2042 | |
> USED AT LINE 2062 | |
> USED AT LINE 2075 | |
> USED AT LINE 2088 | |
> USED AT LINE 2105 | |
> USED AT LINE 2153 | |
> USED AT LINE 2253 | |
> USED AT LINE 2332 | |
> USED AT LINE 2347 | |
> USED AT LINE 2372 | |
> USED AT LINE 2481 | |
> USED AT LINE 2484 | |
> USED AT LINE 2505 | |
> USED AT LINE 2516 | |
> USED AT LINE 2586 | |
> USED AT LINE 2621 | |
> USED AT LINE 2694 | |
> USED AT LINE 2705 | |
> USED AT LINE 2735 | |
> USED AT LINE 2811 | |
> USED AT LINE 2823 | |
> USED AT LINE 2849 | |
> USED AT LINE 2969 | |
> USED AT LINE 2985 | |
> USED AT LINE 3002 | |
> USED AT LINE 3003 | |
> USED AT LINE 3006 | |
> USED AT LINE 3023 | |
> USED AT LINE 3043 | |
> USED AT LINE 3076 | |
> USED AT LINE 3106 | |
> USED AT LINE 3121 | |
> USED AT LINE 3135 | |
> USED AT LINE 3159 | |
> USED AT LINE 3174 | |
> USED AT LINE 3193 | |
> USED AT LINE 3227 | |
> USED AT LINE 3230 | |
> USED AT LINE 3314 | |
> USED AT LINE 3335 | |
L210: E179 DEFINED AT LINE 334 | |
> USED AT LINE 348 | |
STORE: E17B DEFINED AT LINE 335 | |
> USED AT LINE 333 | |
> USED AT LINE 1651 | |
> USED AT LINE 1931 | |
> USED AT LINE 1941 | |
> USED AT LINE 2172 | |
> USED AT LINE 2296 | |
> USED AT LINE 2639 | |
> USED AT LINE 2674 | |
> USED AT LINE 2985 | |
L220: E187 DEFINED AT LINE 349 | |
> USED AT LINE 357 | |
AT: E189 DEFINED AT LINE 350 | |
> USED AT LINE 348 | |
> USED AT LINE 677 | |
> USED AT LINE 1663 | |
> USED AT LINE 1680 | |
> USED AT LINE 1704 | |
> USED AT LINE 1871 | |
> USED AT LINE 1880 | |
> USED AT LINE 1968 | |
> USED AT LINE 2149 | |
> USED AT LINE 2162 | |
> USED AT LINE 2186 | |
> USED AT LINE 2187 | |
> USED AT LINE 2208 | |
> USED AT LINE 2233 | |
> USED AT LINE 2252 | |
> USED AT LINE 2297 | |
> USED AT LINE 2298 | |
> USED AT LINE 2300 | |
> USED AT LINE 2326 | |
> USED AT LINE 2432 | |
> USED AT LINE 2478 | |
> USED AT LINE 2538 | |
> USED AT LINE 2594 | |
> USED AT LINE 2599 | |
> USED AT LINE 2682 | |
> USED AT LINE 2983 | |
> USED AT LINE 3000 | |
> USED AT LINE 3015 | |
> USED AT LINE 3061 | |
> USED AT LINE 3143 | |
> USED AT LINE 3202 | |
> USED AT LINE 3205 | |
> USED AT LINE 3241 | |
> USED AT LINE 3242 | |
> USED AT LINE 3249 | |
> USED AT LINE 3256 | |
> USED AT LINE 3292 | |
> USED AT LINE 3294 | |
> USED AT LINE 3308 | |
L230: E193 DEFINED AT LINE 358 | |
> USED AT LINE 373 | |
CSTOR: E196 DEFINED AT LINE 359 | |
> USED AT LINE 357 | |
> USED AT LINE 1825 | |
> USED AT LINE 2356 | |
> USED AT LINE 3041 | |
L240: E1A2 DEFINED AT LINE 374 | |
> USED AT LINE 383 | |
CAT: E1A5 DEFINED AT LINE 375 | |
> USED AT LINE 373 | |
> USED AT LINE 1672 | |
> USED AT LINE 1969 | |
> USED AT LINE 1973 | |
> USED AT LINE 2072 | |
> USED AT LINE 2977 | |
> USED AT LINE 3118 | |
> USED AT LINE 3132 | |
L250: E1B0 DEFINED AT LINE 384 | |
> USED AT LINE 391 | |
RPAT: E1B4 DEFINED AT LINE 385 | |
> USED AT LINE 383 | |
> USED AT LINE 2422 | |
L260: E1BC DEFINED AT LINE 392 | |
> USED AT LINE 399 | |
RPSTO: E1C0 DEFINED AT LINE 393 | |
> USED AT LINE 391 | |
L270: E1C8 DEFINED AT LINE 400 | |
> USED AT LINE 409 | |
RFROM: E1CB DEFINED AT LINE 401 | |
> USED AT LINE 399 | |
> USED AT LINE 652 | |
> USED AT LINE 677 | |
> USED AT LINE 951 | |
> USED AT LINE 1284 | |
> USED AT LINE 1366 | |
> USED AT LINE 1367 | |
> USED AT LINE 1368 | |
> USED AT LINE 1373 | |
> USED AT LINE 1392 | |
> USED AT LINE 1488 | |
> USED AT LINE 1618 | |
> USED AT LINE 1814 | |
> USED AT LINE 1960 | |
> USED AT LINE 1987 | |
> USED AT LINE 1987 | |
> USED AT LINE 1989 | |
> USED AT LINE 1990 | |
> USED AT LINE 2096 | |
> USED AT LINE 2131 | |
> USED AT LINE 2182 | |
> USED AT LINE 2183 | |
> USED AT LINE 2195 | |
> USED AT LINE 2198 | |
> USED AT LINE 2198 | |
> USED AT LINE 2199 | |
> USED AT LINE 2209 | |
> USED AT LINE 2285 | |
> USED AT LINE 2306 | |
> USED AT LINE 2311 | |
> USED AT LINE 2325 | |
> USED AT LINE 2330 | |
> USED AT LINE 2331 | |
> USED AT LINE 2423 | |
> USED AT LINE 2424 | |
> USED AT LINE 2433 | |
> USED AT LINE 2434 | |
> USED AT LINE 2435 | |
> USED AT LINE 2605 | |
> USED AT LINE 2655 | |
> USED AT LINE 3157 | |
> USED AT LINE 3158 | |
> USED AT LINE 3299 | |
L279: E1D5 DEFINED AT LINE 410 | |
> USED AT LINE 415 | |
L280: E1DB DEFINED AT LINE 416 | |
> USED AT LINE 427 | |
RAT: E1DE DEFINED AT LINE 417 | |
> USED AT LINE 409 | |
> USED AT LINE 415 | |
> USED AT LINE 1367 | |
> USED AT LINE 1391 | |
> USED AT LINE 1974 | |
> USED AT LINE 1982 | |
> USED AT LINE 2096 | |
> USED AT LINE 2281 | |
> USED AT LINE 2282 | |
> USED AT LINE 3170 | |
I: E1DE DEFINED AT LINE 418 | |
L290: E1E8 DEFINED AT LINE 428 | |
> USED AT LINE 438 | |
TOR: E1EB DEFINED AT LINE 429 | |
> USED AT LINE 427 | |
> USED AT LINE 983 | |
> USED AT LINE 1364 | |
> USED AT LINE 1365 | |
> USED AT LINE 1365 | |
> USED AT LINE 1370 | |
> USED AT LINE 1388 | |
> USED AT LINE 1389 | |
> USED AT LINE 1465 | |
> USED AT LINE 1499 | |
> USED AT LINE 1616 | |
> USED AT LINE 1810 | |
> USED AT LINE 1824 | |
> USED AT LINE 1919 | |
> USED AT LINE 1951 | |
> USED AT LINE 1976 | |
> USED AT LINE 1977 | |
> USED AT LINE 2070 | |
> USED AT LINE 2097 | |
> USED AT LINE 2121 | |
> USED AT LINE 2130 | |
> USED AT LINE 2176 | |
> USED AT LINE 2185 | |
> USED AT LINE 2193 | |
> USED AT LINE 2196 | |
> USED AT LINE 2207 | |
> USED AT LINE 2279 | |
> USED AT LINE 2324 | |
> USED AT LINE 2342 | |
> USED AT LINE 2421 | |
> USED AT LINE 2656 | |
> USED AT LINE 2841 | |
> USED AT LINE 3116 | |
> USED AT LINE 3130 | |
> USED AT LINE 3147 | |
> USED AT LINE 3168 | |
L300: E1F5 DEFINED AT LINE 439 | |
> USED AT LINE 450 | |
SPAT: E1F9 DEFINED AT LINE 440 | |
> USED AT LINE 438 | |
> USED AT LINE 1580 | |
> USED AT LINE 2421 | |
> USED AT LINE 3182 | |
> USED AT LINE 3190 | |
L310: E203 DEFINED AT LINE 451 | |
> USED AT LINE 458 | |
SPSTO: E207 DEFINED AT LINE 452 | |
> USED AT LINE 450 | |
L320: E210 DEFINED AT LINE 459 | |
> USED AT LINE 466 | |
DROP: E215 DEFINED AT LINE 460 | |
> USED AT LINE 458 | |
> USED AT LINE 992 | |
> USED AT LINE 992 | |
> USED AT LINE 1264 | |
> USED AT LINE 1275 | |
> USED AT LINE 1370 | |
> USED AT LINE 1372 | |
> USED AT LINE 1375 | |
> USED AT LINE 1376 | |
> USED AT LINE 1411 | |
> USED AT LINE 1467 | |
> USED AT LINE 1477 | |
> USED AT LINE 1571 | |
> USED AT LINE 1615 | |
> USED AT LINE 1910 | |
> USED AT LINE 2075 | |
> USED AT LINE 2182 | |
> USED AT LINE 2195 | |
> USED AT LINE 2285 | |
> USED AT LINE 2306 | |
> USED AT LINE 2311 | |
> USED AT LINE 2330 | |
> USED AT LINE 2331 | |
> USED AT LINE 2373 | |
> USED AT LINE 2392 | |
> USED AT LINE 2411 | |
> USED AT LINE 2424 | |
> USED AT LINE 2435 | |
> USED AT LINE 2466 | |
> USED AT LINE 2528 | |
> USED AT LINE 2914 | |
> USED AT LINE 2969 | |
> USED AT LINE 3121 | |
> USED AT LINE 3157 | |
> USED AT LINE 3158 | |
> USED AT LINE 3211 | |
> USED AT LINE 3213 | |
> USED AT LINE 3214 | |
> USED AT LINE 3287 | |
> USED AT LINE 3289 | |
> USED AT LINE 3313 | |
L330: E21D DEFINED AT LINE 467 | |
> USED AT LINE 476 | |
DUPP: E221 DEFINED AT LINE 468 | |
> USED AT LINE 466 | |
> USED AT LINE 971 | |
> USED AT LINE 973 | |
> USED AT LINE 1189 | |
> USED AT LINE 1364 | |
> USED AT LINE 1386 | |
> USED AT LINE 1389 | |
> USED AT LINE 1462 | |
> USED AT LINE 1463 | |
> USED AT LINE 1613 | |
> USED AT LINE 1662 | |
> USED AT LINE 1671 | |
> USED AT LINE 1824 | |
> USED AT LINE 1872 | |
> USED AT LINE 1888 | |
> USED AT LINE 1919 | |
> USED AT LINE 1959 | |
> USED AT LINE 1960 | |
> USED AT LINE 1977 | |
> USED AT LINE 1988 | |
> USED AT LINE 2027 | |
> USED AT LINE 2072 | |
> USED AT LINE 2193 | |
> USED AT LINE 2295 | |
> USED AT LINE 2297 | |
> USED AT LINE 2298 | |
> USED AT LINE 2300 | |
> USED AT LINE 2313 | |
> USED AT LINE 2321 | |
> USED AT LINE 2355 | |
> USED AT LINE 2364 | |
> USED AT LINE 2368 | |
> USED AT LINE 2384 | |
> USED AT LINE 2524 | |
> USED AT LINE 2638 | |
> USED AT LINE 2655 | |
> USED AT LINE 2964 | |
> USED AT LINE 2977 | |
> USED AT LINE 2980 | |
> USED AT LINE 2984 | |
> USED AT LINE 3118 | |
> USED AT LINE 3132 | |
> USED AT LINE 3205 | |
> USED AT LINE 3242 | |
> USED AT LINE 3249 | |
> USED AT LINE 3256 | |
> USED AT LINE 3258 | |
> USED AT LINE 3264 | |
> USED AT LINE 3277 | |
> USED AT LINE 3282 | |
> USED AT LINE 3292 | |
> USED AT LINE 3294 | |
> USED AT LINE 3310 | |
L340: E22B DEFINED AT LINE 477 | |
> USED AT LINE 496 | |
SWAP: E230 DEFINED AT LINE 478 | |
> USED AT LINE 476 | |
> USED AT LINE 983 | |
> USED AT LINE 1263 | |
> USED AT LINE 1272 | |
> USED AT LINE 1274 | |
> USED AT LINE 1375 | |
> USED AT LINE 1394 | |
> USED AT LINE 1420 | |
> USED AT LINE 1487 | |
> USED AT LINE 1507 | |
> USED AT LINE 1616 | |
> USED AT LINE 1650 | |
> USED AT LINE 1663 | |
> USED AT LINE 1672 | |
> USED AT LINE 1828 | |
> USED AT LINE 1829 | |
> USED AT LINE 1853 | |
> USED AT LINE 1854 | |
> USED AT LINE 1971 | |
> USED AT LINE 1972 | |
> USED AT LINE 1974 | |
> USED AT LINE 1979 | |
> USED AT LINE 1982 | |
> USED AT LINE 1985 | |
> USED AT LINE 2184 | |
> USED AT LINE 2295 | |
> USED AT LINE 2307 | |
> USED AT LINE 2369 | |
> USED AT LINE 2373 | |
> USED AT LINE 2434 | |
> USED AT LINE 2906 | |
> USED AT LINE 2922 | |
> USED AT LINE 2930 | |
> USED AT LINE 3211 | |
> USED AT LINE 3213 | |
> USED AT LINE 3261 | |
> USED AT LINE 3274 | |
> USED AT LINE 3281 | |
L350: E23E DEFINED AT LINE 497 | |
> USED AT LINE 506 | |
OVER: E243 DEFINED AT LINE 498 | |
> USED AT LINE 496 | |
> USED AT LINE 1001 | |
> USED AT LINE 1001 | |
> USED AT LINE 1283 | |
> USED AT LINE 1403 | |
> USED AT LINE 1465 | |
> USED AT LINE 1650 | |
> USED AT LINE 1812 | |
> USED AT LINE 1841 | |
> USED AT LINE 1911 | |
> USED AT LINE 1954 | |
> USED AT LINE 1969 | |
> USED AT LINE 1973 | |
> USED AT LINE 2131 | |
> USED AT LINE 2177 | |
> USED AT LINE 2184 | |
> USED AT LINE 2197 | |
> USED AT LINE 2199 | |
> USED AT LINE 2281 | |
> USED AT LINE 2282 | |
> USED AT LINE 2342 | |
> USED AT LINE 2356 | |
> USED AT LINE 2381 | |
> USED AT LINE 2392 | |
> USED AT LINE 2968 | |
> USED AT LINE 3129 | |
> USED AT LINE 3260 | |
> 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 3271 | |
> USED AT LINE 3272 | |
> USED AT LINE 3278 | |
> USED AT LINE 3279 | |
L360: E24D DEFINED AT LINE 507 | |
> USED AT LINE 517 | |
ZLESS: E250 DEFINED AT LINE 508 | |
> USED AT LINE 506 | |
> USED AT LINE 1189 | |
> USED AT LINE 1386 | |
> USED AT LINE 1403 | |
> USED AT LINE 1899 | |
> USED AT LINE 2178 | |
> USED AT LINE 2189 | |
> USED AT LINE 2513 | |
L365: E25D DEFINED AT LINE 518 | |
> USED AT LINE 530 | |
ZEQUAL: E260 DEFINED AT LINE 519 | |
> USED AT LINE 517 | |
ZEQUAL1: E26A DEFINED AT LINE 524 | |
> USED AT LINE 522 | |
L370: E272 DEFINED AT LINE 531 | |
> USED AT LINE 541 | |
ANDD: E276 DEFINED AT LINE 532 | |
> USED AT LINE 530 | |
> USED AT LINE 1844 | |
> USED AT LINE 3226 | |
L380: E284 DEFINED AT LINE 542 | |
> USED AT LINE 552 | |
ORR: E287 DEFINED AT LINE 543 | |
> USED AT LINE 541 | |
L390: E295 DEFINED AT LINE 553 | |
> USED AT LINE 563 | |
XORR: E299 DEFINED AT LINE 554 | |
> USED AT LINE 552 | |
> USED AT LINE 1486 | |
> USED AT LINE 2151 | |
> USED AT LINE 2366 | |
> USED AT LINE 2382 | |
L391: E2A7 DEFINED AT LINE 564 | |
> USED AT LINE 578 | |
DPLUS: E2AA DEFINED AT LINE 565 | |
> USED AT LINE 563 | |
> USED AT LINE 581 | |
L392: E2C0 DEFINED AT LINE 579 | |
> USED AT LINE 587 | |
DSUB: E2C3 DEFINED AT LINE 580 | |
> USED AT LINE 578 | |
L400: E2D0 DEFINED AT LINE 588 | |
> USED AT LINE 602 | |
UPLUS: E2D4 DEFINED AT LINE 589 | |
> USED AT LINE 587 | |
> USED AT LINE 1368 | |
> USED AT LINE 1462 | |
> USED AT LINE 1463 | |
L401: E2E7 DEFINED AT LINE 603 | |
> USED AT LINE 613 | |
DOCONST: E2EF DEFINED AT LINE 604 | |
> USED AT LINE 602 | |
> USED AT LINE 1555 | |
> USED AT LINE 3105 | |
FDOCONST: E2EF DEFINED AT LINE 605 | |
> USED AT LINE 615 | |
> USED AT LINE 623 | |
> USED AT LINE 631 | |
> USED AT LINE 640 | |
L402: E2F9 DEFINED AT LINE 614 | |
> USED AT LINE 621 | |
ZERO: E2FB DEFINED AT LINE 615 | |
> USED AT LINE 613 | |
> USED AT LINE 1816 | |
> USED AT LINE 1828 | |
> USED AT LINE 1853 | |
> USED AT LINE 2058 | |
> USED AT LINE 2332 | |
> USED AT LINE 2411 | |
> USED AT LINE 2882 | |
> USED AT LINE 3096 | |
L403: E304 DEFINED AT LINE 622 | |
> USED AT LINE 629 | |
ONE: E306 DEFINED AT LINE 623 | |
> USED AT LINE 621 | |
> USED AT LINE 2693 | |
> USED AT LINE 3042 | |
L404: E30F DEFINED AT LINE 630 | |
> USED AT LINE 638 | |
TWO: E311 DEFINED AT LINE 631 | |
> USED AT LINE 629 | |
> USED AT LINE 1613 | |
> USED AT LINE 2704 | |
> USED AT LINE 2734 | |
> USED AT LINE 2809 | |
> USED AT LINE 2821 | |
> USED AT LINE 3152 | |
L405: E31A DEFINED AT LINE 639 | |
> USED AT LINE 648 | |
MONE: E31D DEFINED AT LINE 640 | |
> USED AT LINE 638 | |
> USED AT LINE 2302 | |
L410: E326 DEFINED AT LINE 649 | |
> USED AT LINE 661 | |
DOVAR: E32C DEFINED AT LINE 650 | |
> USED AT LINE 648 | |
FDOVAR: E333 DEFINED AT LINE 655 | |
> USED AT LINE 667 | |
> USED AT LINE 2445 | |
> USED AT LINE 2576 | |
> USED AT LINE 3088 | |
> USED AT LINE 3345 | |
L420: E339 DEFINED AT LINE 662 | |
> USED AT LINE 673 | |
UP: E33C DEFINED AT LINE 663 | |
> USED AT LINE 661 | |
> USED AT LINE 682 | |
L430: E345 DEFINED AT LINE 674 | |
> USED AT LINE 691 | |
DOUSE: E34C DEFINED AT LINE 675 | |
> USED AT LINE 673 | |
FDOUSE: E35B DEFINED AT LINE 680 | |
> USED AT LINE 694 | |
> USED AT LINE 705 | |
> USED AT LINE 716 | |
> USED AT LINE 727 | |
> USED AT LINE 738 | |
> USED AT LINE 749 | |
> USED AT LINE 760 | |
> USED AT LINE 771 | |
> USED AT LINE 783 | |
> USED AT LINE 794 | |
> USED AT LINE 805 | |
> USED AT LINE 816 | |
> USED AT LINE 827 | |
> USED AT LINE 838 | |
> USED AT LINE 849 | |
> USED AT LINE 860 | |
> USED AT LINE 871 | |
> USED AT LINE 882 | |
> USED AT LINE 893 | |
> USED AT LINE 904 | |
> USED AT LINE 915 | |
> USED AT LINE 926 | |
> USED AT LINE 937 | |
> USED AT LINE 3075 | |
L440: E368 DEFINED AT LINE 692 | |
> USED AT LINE 702 | |
SZERO: E36C DEFINED AT LINE 693 | |
> USED AT LINE 691 | |
> USED AT LINE 1580 | |
> USED AT LINE 2538 | |
L450: E375 DEFINED AT LINE 703 | |
> USED AT LINE 713 | |
RZERO: E379 DEFINED AT LINE 704 | |
> USED AT LINE 702 | |
> USED AT LINE 2594 | |
L460: E382 DEFINED AT LINE 714 | |
> USED AT LINE 724 | |
TQKEY: E388 DEFINED AT LINE 715 | |
> USED AT LINE 713 | |
> USED AT LINE 2001 | |
L470: E391 DEFINED AT LINE 725 | |
> USED AT LINE 735 | |
TEMIT: E397 DEFINED AT LINE 726 | |
> USED AT LINE 724 | |
> USED AT LINE 2019 | |
L480: E3A0 DEFINED AT LINE 736 | |
> USED AT LINE 746 | |
TEXPE: E3A8 DEFINED AT LINE 737 | |
> USED AT LINE 735 | |
> USED AT LINE 2400 | |
> USED AT LINE 2410 | |
L490: E3B1 DEFINED AT LINE 747 | |
> USED AT LINE 757 | |
TTAP: E3B6 DEFINED AT LINE 748 | |
> USED AT LINE 746 | |
> USED AT LINE 2390 | |
L500: E3BF DEFINED AT LINE 758 | |
> USED AT LINE 768 | |
TECHO: E3C5 DEFINED AT LINE 759 | |
> USED AT LINE 757 | |
> USED AT LINE 2345 | |
> USED AT LINE 2355 | |
> USED AT LINE 2548 | |
L510: E3CE DEFINED AT LINE 769 | |
> USED AT LINE 780 | |
TPROM: E3D6 DEFINED AT LINE 770 | |
> USED AT LINE 768 | |
> USED AT LINE 2528 | |
> USED AT LINE 2599 | |
L520: E3DF DEFINED AT LINE 781 | |
> USED AT LINE 791 | |
BASE: E3E4 DEFINED AT LINE 782 | |
> USED AT LINE 780 | |
> USED AT LINE 1880 | |
> USED AT LINE 1931 | |
> USED AT LINE 1941 | |
> USED AT LINE 1968 | |
> USED AT LINE 1979 | |
> USED AT LINE 1990 | |
> USED AT LINE 2149 | |
> USED AT LINE 3143 | |
> USED AT LINE 3241 | |
> USED AT LINE 3299 | |
L530: E3ED DEFINED AT LINE 792 | |
> USED AT LINE 802 | |
TEMP: E3F1 DEFINED AT LINE 793 | |
> USED AT LINE 791 | |
> USED AT LINE 2172 | |
> USED AT LINE 2174 | |
> USED AT LINE 2186 | |
> USED AT LINE 2187 | |
> USED AT LINE 2296 | |
> USED AT LINE 2304 | |
L540: E3FA DEFINED AT LINE 803 | |
> USED AT LINE 813 | |
SPAN: E3FF DEFINED AT LINE 804 | |
> USED AT LINE 802 | |
L550: E408 DEFINED AT LINE 814 | |
> USED AT LINE 824 | |
INN: E40C DEFINED AT LINE 815 | |
> USED AT LINE 813 | |
L560: E415 DEFINED AT LINE 825 | |
> USED AT LINE 835 | |
NTIB: E41A DEFINED AT LINE 826 | |
> USED AT LINE 824 | |
> USED AT LINE 1696 | |
> USED AT LINE 2208 | |
> USED AT LINE 2233 | |
L570: E423 DEFINED AT LINE 836 | |
> USED AT LINE 846 | |
CSP: E427 DEFINED AT LINE 837 | |
> USED AT LINE 835 | |
> USED AT LINE 3182 | |
> USED AT LINE 3190 | |
L580: E430 DEFINED AT LINE 847 | |
> USED AT LINE 857 | |
TEVAL: E436 DEFINED AT LINE 848 | |
> USED AT LINE 846 | |
> USED AT LINE 2526 | |
L590: E43F DEFINED AT LINE 858 | |
> USED AT LINE 868 | |
TNUMB: E447 DEFINED AT LINE 859 | |
> USED AT LINE 857 | |
> USED AT LINE 2482 | |
> USED AT LINE 3004 | |
L600: E450 DEFINED AT LINE 869 | |
> USED AT LINE 879 | |
HLD: E454 DEFINED AT LINE 870 | |
> USED AT LINE 868 | |
> USED AT LINE 1862 | |
> USED AT LINE 1871 | |
> USED AT LINE 1872 | |
> USED AT LINE 1910 | |
L610: E45D DEFINED AT LINE 880 | |
> USED AT LINE 890 | |
HANDL: E465 DEFINED AT LINE 881 | |
> USED AT LINE 879 | |
> USED AT LINE 2422 | |
> USED AT LINE 2423 | |
> USED AT LINE 2432 | |
> USED AT LINE 2433 | |
L620: E46E DEFINED AT LINE 891 | |
> USED AT LINE 901 | |
CNTXT: E476 DEFINED AT LINE 892 | |
> USED AT LINE 890 | |
> USED AT LINE 951 | |
> USED AT LINE 2321 | |
> USED AT LINE 3307 | |
> USED AT LINE 3358 | |
L630: E47F DEFINED AT LINE 902 | |
> USED AT LINE 912 | |
CRRNT: E487 DEFINED AT LINE 903 | |
> USED AT LINE 901 | |
> USED AT LINE 2983 | |
> USED AT LINE 3201 | |
> USED AT LINE 3359 | |
L640: E490 DEFINED AT LINE 913 | |
> USED AT LINE 923 | |
CP: E493 DEFINED AT LINE 914 | |
> USED AT LINE 912 | |
> USED AT LINE 1680 | |
> USED AT LINE 2630 | |
> USED AT LINE 2639 | |
> USED AT LINE 2674 | |
L650: E49C DEFINED AT LINE 924 | |
> USED AT LINE 934 | |
NP: E49F DEFINED AT LINE 925 | |
> USED AT LINE 923 | |
> USED AT LINE 2252 | |
L660: E4A8 DEFINED AT LINE 935 | |
> USED AT LINE 947 | |
LAST: E4AD DEFINED AT LINE 936 | |
> USED AT LINE 934 | |
> USED AT LINE 2682 | |
> USED AT LINE 2980 | |
> USED AT LINE 3015 | |
> USED AT LINE 3061 | |
L670: E4B6 DEFINED AT LINE 948 | |
> USED AT LINE 956 | |
DOVOC: E4BC DEFINED AT LINE 949 | |
> USED AT LINE 947 | |
> USED AT LINE 960 | |
L680: E4CB DEFINED AT LINE 957 | |
> USED AT LINE 967 | |
FORTH: E4D1 DEFINED AT LINE 958 | |
> USED AT LINE 956 | |
> USED AT LINE 3358 | |
L690: E4DE DEFINED AT LINE 968 | |
> USED AT LINE 979 | |
QDUP: E4E3 DEFINED AT LINE 969 | |
> USED AT LINE 967 | |
> USED AT LINE 1704 | |
> USED AT LINE 2283 | |
> USED AT LINE 2326 | |
> USED AT LINE 2328 | |
> USED AT LINE 2476 | |
> USED AT LINE 2998 | |
> USED AT LINE 3222 | |
> USED AT LINE 3252 | |
> USED AT LINE 3308 | |
QDUP1: E4EE DEFINED AT LINE 974 | |
> USED AT LINE 972 | |
L700: E4F4 DEFINED AT LINE 980 | |
> USED AT LINE 988 | |
ROT: E4F8 DEFINED AT LINE 981 | |
> USED AT LINE 979 | |
> USED AT LINE 1467 | |
> USED AT LINE 3151 | |
> USED AT LINE 3151 | |
L710: E509 DEFINED AT LINE 989 | |
> USED AT LINE 997 | |
DDROP: E50F DEFINED AT LINE 990 | |
> USED AT LINE 988 | |
> USED AT LINE 1376 | |
> USED AT LINE 1989 | |
> USED AT LINE 2029 | |
L720: E51C DEFINED AT LINE 998 | |
> USED AT LINE 1005 | |
DDUP: E521 DEFINED AT LINE 999 | |
> USED AT LINE 997 | |
> USED AT LINE 1261 | |
> USED AT LINE 1272 | |
> USED AT LINE 1361 | |
> USED AT LINE 1486 | |
> USED AT LINE 1825 | |
> USED AT LINE 1827 | |
> USED AT LINE 2382 | |
> USED AT LINE 3150 | |
> USED AT LINE 3204 | |
> USED AT LINE 3207 | |
L721: E52E DEFINED AT LINE 1006 | |
> USED AT LINE 1020 | |
LSHIFT: E535 DEFINED AT LINE 1007 | |
> USED AT LINE 1005 | |
LSHIFT1: E53B DEFINED AT LINE 1010 | |
> USED AT LINE 1013 | |
LSHIFT2: E543 DEFINED AT LINE 1015 | |
> USED AT LINE 1008 | |
L721A: E549 DEFINED AT LINE 1021 | |
> USED AT LINE 1035 | |
RSHIFT: E550 DEFINED AT LINE 1022 | |
> USED AT LINE 1020 | |
RSHIFT1: E556 DEFINED AT LINE 1025 | |
> USED AT LINE 1028 | |
RSHIFT2: E55E DEFINED AT LINE 1030 | |
> USED AT LINE 1023 | |
L722: E564 DEFINED AT LINE 1036 | |
> USED AT LINE 1044 | |
SWAPHL: E567 DEFINED AT LINE 1037 | |
> USED AT LINE 1035 | |
L723: E573 DEFINED AT LINE 1045 | |
> USED AT LINE 1053 | |
SLASH256: E578 DEFINED AT LINE 1046 | |
> USED AT LINE 1044 | |
L724: E583 DEFINED AT LINE 1054 | |
> USED AT LINE 1062 | |
STAR256: E588 DEFINED AT LINE 1055 | |
> USED AT LINE 1053 | |
L725: E593 DEFINED AT LINE 1063 | |
> USED AT LINE 1071 | |
PLUS1: E596 DEFINED AT LINE 1064 | |
> USED AT LINE 1062 | |
> USED AT LINE 1671 | |
> USED AT LINE 1814 | |
> USED AT LINE 1826 | |
> USED AT LINE 1980 | |
> USED AT LINE 2073 | |
> USED AT LINE 2180 | |
> USED AT LINE 2191 | |
> USED AT LINE 2196 | |
> USED AT LINE 3119 | |
> USED AT LINE 3133 | |
> USED AT LINE 3239 | |
> USED AT LINE 3261 | |
L726: E5A3 DEFINED AT LINE 1072 | |
> USED AT LINE 1080 | |
MINUS1: E5A6 DEFINED AT LINE 1073 | |
> USED AT LINE 1071 | |
> USED AT LINE 1972 | |
> USED AT LINE 1976 | |
> USED AT LINE 2174 | |
L727: E5B3 DEFINED AT LINE 1081 | |
> USED AT LINE 1088 | |
TWOSTAR: E5B6 DEFINED AT LINE 1082 | |
> USED AT LINE 1080 | |
L728: E5C0 DEFINED AT LINE 1089 | |
> USED AT LINE 1097 | |
TWOSLASH: E5C3 DEFINED AT LINE 1090 | |
> USED AT LINE 1088 | |
L730: E5CD DEFINED AT LINE 1098 | |
> USED AT LINE 1111 | |
PLUS: E5CF DEFINED AT LINE 1099 | |
> USED AT LINE 1097 | |
> USED AT LINE 1366 | |
> USED AT LINE 1391 | |
> USED AT LINE 1519 | |
> USED AT LINE 1529 | |
> USED AT LINE 1827 | |
> USED AT LINE 1844 | |
> USED AT LINE 2381 | |
> USED AT LINE 2673 | |
> USED AT LINE 3285 | |
L740: E5DB DEFINED AT LINE 1112 | |
> USED AT LINE 1131 | |
INVER: E5DF DEFINED AT LINE 1113 | |
> USED AT LINE 1111 | |
> USED AT LINE 3153 | |
L750: E5F1 DEFINED AT LINE 1132 | |
> USED AT LINE 1153 | |
NEGAT: E5F8 DEFINED AT LINE 1133 | |
> USED AT LINE 1131 | |
> USED AT LINE 1191 | |
> USED AT LINE 1363 | |
> USED AT LINE 1388 | |
> USED AT LINE 1394 | |
> USED AT LINE 1984 | |
NEGAT1: E609 DEFINED AT LINE 1144 | |
> USED AT LINE 1141 | |
L760: E611 DEFINED AT LINE 1154 | |
> USED AT LINE 1173 | |
DNEGA: E619 DEFINED AT LINE 1155 | |
> USED AT LINE 581 | |
> USED AT LINE 1153 | |
> USED AT LINE 1490 | |
L770: E62F DEFINED AT LINE 1174 | |
> USED AT LINE 1186 | |
SUBB: E631 DEFINED AT LINE 1175 | |
> USED AT LINE 1173 | |
> USED AT LINE 1283 | |
> USED AT LINE 1284 | |
> USED AT LINE 1617 | |
> USED AT LINE 1958 | |
> USED AT LINE 2178 | |
> USED AT LINE 2197 | |
> USED AT LINE 2283 | |
L780: E63D DEFINED AT LINE 1187 | |
> USED AT LINE 1197 | |
ABSS: E641 DEFINED AT LINE 1188 | |
> USED AT LINE 1186 | |
> USED AT LINE 1487 | |
ABS1: E64E DEFINED AT LINE 1192 | |
> USED AT LINE 1190 | |
L790: E654 DEFINED AT LINE 1198 | |
> USED AT LINE 1217 | |
EQUAL: E656 DEFINED AT LINE 1199 | |
> USED AT LINE 1197 | |
> USED AT LINE 2031 | |
> USED AT LINE 2809 | |
> USED AT LINE 2821 | |
EQUAL1: E663 DEFINED AT LINE 1205 | |
> USED AT LINE 1203 | |
L800: E66B DEFINED AT LINE 1218 | |
> USED AT LINE 1237 | |
ULESS: E66E DEFINED AT LINE 1219 | |
> USED AT LINE 1217 | |
> USED AT LINE 1361 | |
ULES1: E67B DEFINED AT LINE 1225 | |
> USED AT LINE 1223 | |
L810: E683 DEFINED AT LINE 1238 | |
> USED AT LINE 1258 | |
LESS: E685 DEFINED AT LINE 1239 | |
> USED AT LINE 1237 | |
> USED AT LINE 1261 | |
> USED AT LINE 1614 | |
> USED AT LINE 1841 | |
> USED AT LINE 1954 | |
LESS1: E692 DEFINED AT LINE 1245 | |
> USED AT LINE 1243 | |
L820: E69A DEFINED AT LINE 1259 | |
> USED AT LINE 1269 | |
MAX: E69E DEFINED AT LINE 1260 | |
> USED AT LINE 1258 | |
> USED AT LINE 2058 | |
MAX1: E6AB DEFINED AT LINE 1264 | |
> USED AT LINE 1262 | |
L830: E6B3 DEFINED AT LINE 1270 | |
> USED AT LINE 1280 | |
MIN: E6B7 DEFINED AT LINE 1271 | |
> USED AT LINE 1269 | |
> USED AT LINE 2251 | |
MIN1: E6C6 DEFINED AT LINE 1275 | |
> USED AT LINE 1273 | |
L840: E6CE DEFINED AT LINE 1281 | |
> USED AT LINE 1312 | |
WITHI: E6D5 DEFINED AT LINE 1282 | |
> USED AT LINE 1280 | |
> USED AT LINE 1569 | |
L845: E6EA DEFINED AT LINE 1313 | |
> USED AT LINE 1355 | |
USLASH: E6ED DEFINED AT LINE 1315 | |
> USED AT LINE 1312 | |
> USED AT LINE 1358 | |
UMMOD1: E6FB DEFINED AT LINE 1323 | |
> USED AT LINE 1335 | |
UMMOD2: E708 DEFINED AT LINE 1330 | |
> USED AT LINE 1325 | |
> USED AT LINE 1327 | |
UMMOD3: E70C DEFINED AT LINE 1332 | |
> USED AT LINE 1329 | |
UMMODOV: E71B DEFINED AT LINE 1340 | |
> USED AT LINE 1319 | |
UMMOD4: E720 DEFINED AT LINE 1344 | |
> USED AT LINE 1339 | |
L850: E72C DEFINED AT LINE 1356 | |
> USED AT LINE 1382 | |
UMMOD: E733 DEFINED AT LINE 1357 | |
> USED AT LINE 1355 | |
> USED AT LINE 1392 | |
UMM1: E749 DEFINED AT LINE 1364 | |
> USED AT LINE 1374 | |
UMM2: E77B DEFINED AT LINE 1372 | |
> USED AT LINE 1369 | |
UMM3: E77D DEFINED AT LINE 1373 | |
> USED AT LINE 1371 | |
UMM4: E789 DEFINED AT LINE 1376 | |
> USED AT LINE 1362 | |
L860: E799 DEFINED AT LINE 1383 | |
> USED AT LINE 1400 | |
MSMOD: E79F DEFINED AT LINE 1384 | |
> USED AT LINE 1382 | |
MMOD1: E7B6 DEFINED AT LINE 1389 | |
> USED AT LINE 1387 | |
MMOD2: E7C4 DEFINED AT LINE 1392 | |
> USED AT LINE 1390 | |
MMOD3: E7D4 DEFINED AT LINE 1395 | |
> USED AT LINE 1393 | |
L870: E7DA DEFINED AT LINE 1401 | |
> USED AT LINE 1408 | |
SLMOD: E7DF DEFINED AT LINE 1402 | |
> USED AT LINE 1400 | |
> USED AT LINE 1411 | |
> USED AT LINE 1420 | |
L880: E7F0 DEFINED AT LINE 1409 | |
> USED AT LINE 1416 | |
MODD: E7F4 DEFINED AT LINE 1410 | |
> USED AT LINE 1408 | |
L890: E801 DEFINED AT LINE 1417 | |
> USED AT LINE 1427 | |
SLASH: E803 DEFINED AT LINE 1418 | |
> USED AT LINE 1416 | |
> USED AT LINE 1583 | |
> USED AT LINE 3146 | |
L900: E812 DEFINED AT LINE 1428 | |
> USED AT LINE 1457 | |
UMSTA: E816 DEFINED AT LINE 1429 | |
> USED AT LINE 1427 | |
UUMSTA1: E81D DEFINED AT LINE 1434 | |
> USED AT LINE 1441 | |
UUMSTA2: E821 DEFINED AT LINE 1436 | |
> USED AT LINE 1434 | |
UUMSTA3: E823 DEFINED AT LINE 1438 | |
> USED AT LINE 1433 | |
L900A: E833 DEFINED AT LINE 1458 | |
> USED AT LINE 1473 | |
UUMSTA: E838 DEFINED AT LINE 1459 | |
> USED AT LINE 1457 | |
UMST1: E847 DEFINED AT LINE 1462 | |
> USED AT LINE 1466 | |
UMST2: E867 DEFINED AT LINE 1466 | |
> USED AT LINE 1464 | |
L910: E875 DEFINED AT LINE 1474 | |
> USED AT LINE 1482 | |
STAR: E877 DEFINED AT LINE 1475 | |
> USED AT LINE 1473 | |
> USED AT LINE 1539 | |
L920: E884 DEFINED AT LINE 1483 | |
> USED AT LINE 1496 | |
MSTAR: E887 DEFINED AT LINE 1484 | |
> USED AT LINE 1477 | |
> USED AT LINE 1482 | |
> USED AT LINE 1499 | |
MSTA1: E8A2 DEFINED AT LINE 1491 | |
> USED AT LINE 1489 | |
L930: E8A8 DEFINED AT LINE 1497 | |
> USED AT LINE 1504 | |
SSMOD: E8AE DEFINED AT LINE 1498 | |
> USED AT LINE 1496 | |
> USED AT LINE 1507 | |
L940: E8BF DEFINED AT LINE 1505 | |
> USED AT LINE 1514 | |
STASL: E8C2 DEFINED AT LINE 1506 | |
> USED AT LINE 1504 | |
L950: E8D1 DEFINED AT LINE 1515 | |
> USED AT LINE 1524 | |
CELLP: E8D7 DEFINED AT LINE 1516 | |
> USED AT LINE 1514 | |
> USED AT LINE 1651 | |
> USED AT LINE 1662 | |
> USED AT LINE 1696 | |
> USED AT LINE 2302 | |
> USED AT LINE 2304 | |
> USED AT LINE 2325 | |
> USED AT LINE 2656 | |
> USED AT LINE 2810 | |
> USED AT LINE 2822 | |
> USED AT LINE 3202 | |
> USED AT LINE 3248 | |
> USED AT LINE 3260 | |
> USED AT LINE 3274 | |
> USED AT LINE 3281 | |
L960: E8E5 DEFINED AT LINE 1525 | |
> USED AT LINE 1534 | |
CELLM: E8EB DEFINED AT LINE 1526 | |
> USED AT LINE 1524 | |
> USED AT LINE 2271 | |
> USED AT LINE 2271 | |
> USED AT LINE 2307 | |
> USED AT LINE 2309 | |
> USED AT LINE 2309 | |
> USED AT LINE 2312 | |
> USED AT LINE 2323 | |
> USED AT LINE 2982 | |
> USED AT LINE 2984 | |
> USED AT LINE 3209 | |
> USED AT LINE 3311 | |
L970: E8F9 DEFINED AT LINE 1535 | |
> USED AT LINE 1544 | |
CELLS: E8FF DEFINED AT LINE 1536 | |
> USED AT LINE 1534 | |
L975: E90D DEFINED AT LINE 1545 | |
> USED AT LINE 1552 | |
ALGND: E915 DEFINED AT LINE 1546 | |
> USED AT LINE 1544 | |
> USED AT LINE 2097 | |
> USED AT LINE 2981 | |
L980: E91E DEFINED AT LINE 1553 | |
> USED AT LINE 1563 | |
BLANK: E921 DEFINED AT LINE 1554 | |
> USED AT LINE 1552 | |
> USED AT LINE 1569 | |
> USED AT LINE 1812 | |
> USED AT LINE 2050 | |
> USED AT LINE 2177 | |
> USED AT LINE 2241 | |
> USED AT LINE 2249 | |
> USED AT LINE 2345 | |
> USED AT LINE 2371 | |
> USED AT LINE 2386 | |
L990: E928 DEFINED AT LINE 1564 | |
> USED AT LINE 1577 | |
TCHAR: E92E DEFINED AT LINE 1565 | |
> USED AT LINE 1563 | |
TCHA1: E948 DEFINED AT LINE 1572 | |
> USED AT LINE 1570 | |
L1000: E94E DEFINED AT LINE 1578 | |
> USED AT LINE 1588 | |
DEPTH: E954 DEFINED AT LINE 1579 | |
> USED AT LINE 1577 | |
> USED AT LINE 2513 | |
> USED AT LINE 3167 | |
L1010: E96C DEFINED AT LINE 1589 | |
> USED AT LINE 1607 | |
PICK: E971 DEFINED AT LINE 1590 | |
> USED AT LINE 1588 | |
> USED AT LINE 3170 | |
L1015: E982 DEFINED AT LINE 1608 | |
> USED AT LINE 1626 | |
ROLL: E987 DEFINED AT LINE 1609 | |
> USED AT LINE 1607 | |
> USED AT LINE 1618 | |
ROL1: E99A DEFINED AT LINE 1616 | |
ROL2: E9A8 DEFINED AT LINE 1619 | |
L1020: E9AE DEFINED AT LINE 1627 | |
> USED AT LINE 1644 | |
PSTOR: E9B1 DEFINED AT LINE 1628 | |
> USED AT LINE 1626 | |
> USED AT LINE 2630 | |
L1030: E9BF DEFINED AT LINE 1645 | |
> USED AT LINE 1656 | |
DSTOR: E9C2 DEFINED AT LINE 1646 | |
> USED AT LINE 1644 | |
> USED AT LINE 2548 | |
> USED AT LINE 3359 | |
L1040: E9D5 DEFINED AT LINE 1657 | |
> USED AT LINE 1668 | |
DAT: E9D8 DEFINED AT LINE 1658 | |
> USED AT LINE 1656 | |
> USED AT LINE 2585 | |
L1050: E9EB DEFINED AT LINE 1669 | |
> USED AT LINE 1677 | |
COUNT: E9F1 DEFINED AT LINE 1670 | |
> USED AT LINE 1668 | |
> USED AT LINE 2113 | |
> USED AT LINE 2602 | |
> USED AT LINE 2673 | |
> USED AT LINE 2968 | |
> USED AT LINE 3224 | |
> USED AT LINE 3282 | |
> USED AT LINE 3285 | |
L1060: EA02 DEFINED AT LINE 1678 | |
> USED AT LINE 1685 | |
HERE: EA07 DEFINED AT LINE 1679 | |
> USED AT LINE 1677 | |
> USED AT LINE 1688 | |
> USED AT LINE 2261 | |
> USED AT LINE 2638 | |
> USED AT LINE 2810 | |
> USED AT LINE 2822 | |
> USED AT LINE 2849 | |
> USED AT LINE 2898 | |
> USED AT LINE 2906 | |
> USED AT LINE 2981 | |
> USED AT LINE 3041 | |
L1070: EA14 DEFINED AT LINE 1686 | |
> USED AT LINE 1693 | |
PAD: EA18 DEFINED AT LINE 1687 | |
> USED AT LINE 1685 | |
> USED AT LINE 1862 | |
> USED AT LINE 1911 | |
L1080: EA29 DEFINED AT LINE 1694 | |
> USED AT LINE 1701 | |
TIB: EA2D DEFINED AT LINE 1695 | |
> USED AT LINE 1693 | |
> USED AT LINE 2207 | |
> USED AT LINE 2408 | |
L1090: EA3C DEFINED AT LINE 1702 | |
> USED AT LINE 1712 | |
ATEXE: EA45 DEFINED AT LINE 1703 | |
> USED AT LINE 1701 | |
> USED AT LINE 2001 | |
> USED AT LINE 2019 | |
> USED AT LINE 2390 | |
> USED AT LINE 2400 | |
> USED AT LINE 2410 | |
> USED AT LINE 2482 | |
> USED AT LINE 2526 | |
> USED AT LINE 3004 | |
> USED AT LINE 3357 | |
EXE1: EA52 DEFINED AT LINE 1707 | |
> USED AT LINE 1705 | |
L1100: EA58 DEFINED AT LINE 1713 | |
> USED AT LINE 1777 | |
CMOVE: EA5E DEFINED AT LINE 1714 | |
> USED AT LINE 1712 | |
> USED AT LINE 1829 | |
CMOVE1: EA6A DEFINED AT LINE 1721 | |
> USED AT LINE 1719 | |
CMOVE2: EA70 DEFINED AT LINE 1725 | |
> USED AT LINE 1728 | |
> USED AT LINE 1730 | |
CMOVE3: EA7D DEFINED AT LINE 1732 | |
> USED AT LINE 1717 | |
CMOVEW: EA81 DEFINED AT LINE 1736 | |
> USED AT LINE 1715 | |
CMOVEW1: EA94 DEFINED AT LINE 1746 | |
> USED AT LINE 1744 | |
CMOVEW2: EA99 DEFINED AT LINE 1748 | |
> USED AT LINE 1751 | |
> USED AT LINE 1753 | |
CMOVEW3: EAA3 DEFINED AT LINE 1754 | |
> USED AT LINE 1747 | |
CMOVEW4: EAAB DEFINED AT LINE 1758 | |
> USED AT LINE 1755 | |
L1110: EAB5 DEFINED AT LINE 1778 | |
> USED AT LINE 1807 | |
FILL: EABA DEFINED AT LINE 1779 | |
> USED AT LINE 1777 | |
NFILL1: EAC3 DEFINED AT LINE 1785 | |
> USED AT LINE 1783 | |
NFILL2: EAC7 DEFINED AT LINE 1788 | |
> USED AT LINE 1791 | |
> USED AT LINE 1793 | |
NFILL3: EAD0 DEFINED AT LINE 1794 | |
> USED AT LINE 1781 | |
L1120: EAD8 DEFINED AT LINE 1808 | |
> USED AT LINE 1821 | |
DTRAI: EAE2 DEFINED AT LINE 1809 | |
> USED AT LINE 1807 | |
DTRA1: EAEB DEFINED AT LINE 1812 | |
> USED AT LINE 1815 | |
DTRA2: EB01 DEFINED AT LINE 1815 | |
> USED AT LINE 1811 | |
> USED AT LINE 1813 | |
L1130: EB0D DEFINED AT LINE 1822 | |
> USED AT LINE 1836 | |
PACKS: EB13 DEFINED AT LINE 1823 | |
> USED AT LINE 1821 | |
> USED AT LINE 2253 | |
L1140: EB36 DEFINED AT LINE 1837 | |
> USED AT LINE 1850 | |
DIGIT: EB3C DEFINED AT LINE 1838 | |
> USED AT LINE 1836 | |
> USED AT LINE 1854 | |
L1150: EB57 DEFINED AT LINE 1851 | |
> USED AT LINE 1859 | |
EXTRC: EB5F DEFINED AT LINE 1852 | |
> USED AT LINE 1850 | |
L1160: EB72 DEFINED AT LINE 1860 | |
> USED AT LINE 1868 | |
BDIGS: EB75 DEFINED AT LINE 1861 | |
> USED AT LINE 1859 | |
> USED AT LINE 1920 | |
> USED AT LINE 2130 | |
> USED AT LINE 2140 | |
L1170: EB84 DEFINED AT LINE 1869 | |
> USED AT LINE 1877 | |
HOLD: EB89 DEFINED AT LINE 1870 | |
> USED AT LINE 1868 | |
L1180: EBA0 DEFINED AT LINE 1878 | |
> USED AT LINE 1885 | |
DIG: EBA2 DEFINED AT LINE 1879 | |
> USED AT LINE 1877 | |
> USED AT LINE 1888 | |
L1190: EBB3 DEFINED AT LINE 1886 | |
> USED AT LINE 1896 | |
DIGS: EBB6 DEFINED AT LINE 1887 | |
> USED AT LINE 1885 | |
> USED AT LINE 1920 | |
> USED AT LINE 2140 | |
DIGS1: EBB9 DEFINED AT LINE 1888 | |
> USED AT LINE 1890 | |
DIGS2: EBC5 DEFINED AT LINE 1891 | |
> USED AT LINE 1889 | |
L1200: EBCB DEFINED AT LINE 1897 | |
> USED AT LINE 1907 | |
SIGN: EBD0 DEFINED AT LINE 1898 | |
> USED AT LINE 1896 | |
> USED AT LINE 1921 | |
SIGN1: EBDD DEFINED AT LINE 1902 | |
> USED AT LINE 1900 | |
L1210: EBE3 DEFINED AT LINE 1908 | |
> USED AT LINE 1916 | |
EDIGS: EBE6 DEFINED AT LINE 1909 | |
> USED AT LINE 1907 | |
> USED AT LINE 1921 | |
L1220: EBFB DEFINED AT LINE 1917 | |
> USED AT LINE 1926 | |
STR: EBFF DEFINED AT LINE 1918 | |
> USED AT LINE 1916 | |
> USED AT LINE 2121 | |
> USED AT LINE 2154 | |
L1230: EC18 DEFINED AT LINE 1927 | |
> USED AT LINE 1936 | |
HEX: EC1C DEFINED AT LINE 1928 | |
> USED AT LINE 1926 | |
> USED AT LINE 1971 | |
L1240: EC2C DEFINED AT LINE 1937 | |
> USED AT LINE 1948 | |
DECIM: EC34 DEFINED AT LINE 1938 | |
> USED AT LINE 1936 | |
L1250: EC44 DEFINED AT LINE 1949 | |
> USED AT LINE 1965 | |
DIGTQ: EC4B DEFINED AT LINE 1950 | |
> USED AT LINE 1948 | |
DGTQ1: EC6E DEFINED AT LINE 1960 | |
> USED AT LINE 1955 | |
L1260: EC7A DEFINED AT LINE 1966 | |
> USED AT LINE 1998 | |
NUMBQ: EC82 DEFINED AT LINE 1967 | |
> USED AT LINE 151 | |
> USED AT LINE 1965 | |
NUMQ1: ECA7 DEFINED AT LINE 1973 | |
> USED AT LINE 1970 | |
NUMQ2: ECC7 DEFINED AT LINE 1977 | |
> USED AT LINE 1981 | |
NUMQ3: ECF5 DEFINED AT LINE 1985 | |
> USED AT LINE 1983 | |
NUMQ4: ECFB DEFINED AT LINE 1987 | |
> USED AT LINE 1978 | |
NUMQ5: ED05 DEFINED AT LINE 1988 | |
> USED AT LINE 1986 | |
NUMQ6: ED07 DEFINED AT LINE 1989 | |
> USED AT LINE 1975 | |
L1270: ED17 DEFINED AT LINE 1999 | |
> USED AT LINE 2006 | |
QKEY: ED1C DEFINED AT LINE 2000 | |
> USED AT LINE 1998 | |
> USED AT LINE 2009 | |
> USED AT LINE 2027 | |
L1280: ED29 DEFINED AT LINE 2007 | |
> USED AT LINE 2016 | |
KEY: ED2D DEFINED AT LINE 2008 | |
> USED AT LINE 2006 | |
> USED AT LINE 2029 | |
> USED AT LINE 2384 | |
KEY1: ED30 DEFINED AT LINE 2009 | |
> USED AT LINE 2010 | |
L1290: ED3C DEFINED AT LINE 2017 | |
> USED AT LINE 2024 | |
EMIT: ED41 DEFINED AT LINE 2018 | |
> USED AT LINE 2016 | |
> USED AT LINE 2042 | |
> USED AT LINE 2050 | |
> USED AT LINE 2085 | |
> USED AT LINE 2088 | |
> USED AT LINE 3284 | |
L1300: ED4E DEFINED AT LINE 2025 | |
> USED AT LINE 2037 | |
NUFQ: ED53 DEFINED AT LINE 2026 | |
> USED AT LINE 2024 | |
> USED AT LINE 3153 | |
> USED AT LINE 3297 | |
> USED AT LINE 3311 | |
NUFQ1: ED67 DEFINED AT LINE 2032 | |
> USED AT LINE 2028 | |
L1310: ED6D DEFINED AT LINE 2038 | |
> USED AT LINE 2047 | |
PACE: ED72 DEFINED AT LINE 2039 | |
> USED AT LINE 2037 | |
> USED AT LINE 2556 | |
L1320: ED80 DEFINED AT LINE 2048 | |
> USED AT LINE 2055 | |
SPACE: ED86 DEFINED AT LINE 2049 | |
> USED AT LINE 2047 | |
> USED AT LINE 2060 | |
> USED AT LINE 2141 | |
> USED AT LINE 2154 | |
> USED AT LINE 2602 | |
> USED AT LINE 3130 | |
> USED AT LINE 3255 | |
> USED AT LINE 3310 | |
L1330: ED93 DEFINED AT LINE 2056 | |
> USED AT LINE 2067 | |
SPACS: ED9A DEFINED AT LINE 2057 | |
> USED AT LINE 2055 | |
> USED AT LINE 2122 | |
> USED AT LINE 2132 | |
> USED AT LINE 3152 | |
CHAR1: EDA7 DEFINED AT LINE 2060 | |
> USED AT LINE 2061 | |
CHAR2: EDA9 DEFINED AT LINE 2061 | |
> USED AT LINE 2059 | |
L1340: EDB3 DEFINED AT LINE 2068 | |
> USED AT LINE 2080 | |
TYPES: EDB8 DEFINED AT LINE 2069 | |
> USED AT LINE 2067 | |
> USED AT LINE 2122 | |
> USED AT LINE 2132 | |
> USED AT LINE 2141 | |
TYPE1: EDC1 DEFINED AT LINE 2072 | |
> USED AT LINE 2074 | |
TYPE2: EDC9 DEFINED AT LINE 2074 | |
> USED AT LINE 2071 | |
L1350: EDD5 DEFINED AT LINE 2081 | |
> USED AT LINE 2093 | |
CR: EDD8 DEFINED AT LINE 2082 | |
> USED AT LINE 2080 | |
> USED AT LINE 2505 | |
> USED AT LINE 3148 | |
> USED AT LINE 3167 | |
> USED AT LINE 3245 | |
> USED AT LINE 3248 | |
> USED AT LINE 3307 | |
> USED AT LINE 3332 | |
> USED AT LINE 3335 | |
L1360: EDEB DEFINED AT LINE 2094 | |
> USED AT LINE 2102 | |
DOSTR: EDEF DEFINED AT LINE 2095 | |
> USED AT LINE 2093 | |
> USED AT LINE 2105 | |
> USED AT LINE 2113 | |
> USED AT LINE 2465 | |
> USED AT LINE 2466 | |
L1370: EE0A DEFINED AT LINE 2103 | |
> USED AT LINE 2110 | |
STRQP: EE0E DEFINED AT LINE 2104 | |
> USED AT LINE 2102 | |
> USED AT LINE 2946 | |
> USED AT LINE 2986 | |
L1380: EE19 DEFINED AT LINE 2111 | |
> USED AT LINE 2118 | |
DOTQP: EE1D DEFINED AT LINE 2112 | |
> USED AT LINE 2110 | |
> USED AT LINE 2503 | |
> USED AT LINE 2603 | |
> USED AT LINE 2954 | |
> USED AT LINE 2966 | |
> USED AT LINE 3172 | |
> USED AT LINE 3228 | |
> USED AT LINE 3245 | |
L1390: EE2C DEFINED AT LINE 2119 | |
> USED AT LINE 2127 | |
DOTR: EE2F DEFINED AT LINE 2120 | |
> USED AT LINE 2118 | |
L1400: EE46 DEFINED AT LINE 2128 | |
> USED AT LINE 2137 | |
UDOTR: EE4A DEFINED AT LINE 2129 | |
> USED AT LINE 2127 | |
L1410: EE65 DEFINED AT LINE 2138 | |
> USED AT LINE 2146 | |
UDOT: EE68 DEFINED AT LINE 2139 | |
> USED AT LINE 2137 | |
> USED AT LINE 2153 | |
L1420: EE7B DEFINED AT LINE 2147 | |
> USED AT LINE 2159 | |
DOT: EE7D DEFINED AT LINE 2148 | |
> USED AT LINE 2146 | |
> USED AT LINE 2162 | |
DOT1: EE91 DEFINED AT LINE 2154 | |
> USED AT LINE 2152 | |
L1430: EE9D DEFINED AT LINE 2160 | |
> USED AT LINE 2169 | |
QUEST: EE9F DEFINED AT LINE 2161 | |
> USED AT LINE 2159 | |
L1440: EEAC DEFINED AT LINE 2170 | |
> USED AT LINE 2204 | |
PARS: EEB2 DEFINED AT LINE 2171 | |
> USED AT LINE 2169 | |
> USED AT LINE 2209 | |
PARS1: EED3 DEFINED AT LINE 2177 | |
> USED AT LINE 2181 | |
PARS2: EEF3 DEFINED AT LINE 2183 | |
> USED AT LINE 2179 | |
PARS3: EEF5 DEFINED AT LINE 2184 | |
> USED AT LINE 2175 | |
PARS4: EEFB DEFINED AT LINE 2186 | |
> USED AT LINE 2192 | |
PARS5: EF13 DEFINED AT LINE 2190 | |
> USED AT LINE 2188 | |
PARS6: EF25 DEFINED AT LINE 2195 | |
> USED AT LINE 2190 | |
PARS7: EF2F DEFINED AT LINE 2197 | |
> USED AT LINE 2194 | |
PARS8: EF3B DEFINED AT LINE 2199 | |
> USED AT LINE 2173 | |
L1450: EF47 DEFINED AT LINE 2205 | |
> USED AT LINE 2214 | |
PARSE: EF4D DEFINED AT LINE 2206 | |
> USED AT LINE 2204 | |
> USED AT LINE 2241 | |
> USED AT LINE 2249 | |
> USED AT LINE 2261 | |
L1460: EF72 DEFINED AT LINE 2215 | |
> USED AT LINE 2222 | |
DOTPR: EF75 DEFINED AT LINE 2216 | |
> USED AT LINE 2214 | |
L1470: EF84 DEFINED AT LINE 2223 | |
> USED AT LINE 2230 | |
PAREN: EF86 DEFINED AT LINE 2224 | |
> USED AT LINE 2222 | |
L1480: EF95 DEFINED AT LINE 2231 | |
> USED AT LINE 2238 | |
BKSLA: EF97 DEFINED AT LINE 2232 | |
> USED AT LINE 2230 | |
L1490: EFA8 DEFINED AT LINE 2239 | |
> USED AT LINE 2246 | |
CHAR: EFAD DEFINED AT LINE 2240 | |
> USED AT LINE 2238 | |
L1500: EFBE DEFINED AT LINE 2247 | |
> USED AT LINE 2258 | |
TOKEN: EFC4 DEFINED AT LINE 2248 | |
> USED AT LINE 2246 | |
> USED AT LINE 2524 | |
> USED AT LINE 2619 | |
> USED AT LINE 3051 | |
> USED AT LINE 3071 | |
> USED AT LINE 3084 | |
> USED AT LINE 3104 | |
L1510: EFE2 DEFINED AT LINE 2259 | |
> USED AT LINE 2268 | |
WORD: EFE7 DEFINED AT LINE 2260 | |
> USED AT LINE 2258 | |
L1520: EFF6 DEFINED AT LINE 2269 | |
> USED AT LINE 2276 | |
NAMET: EFFC DEFINED AT LINE 2270 | |
> USED AT LINE 2268 | |
> USED AT LINE 2313 | |
> USED AT LINE 3207 | |
L1530: F00B DEFINED AT LINE 2277 | |
> USED AT LINE 2292 | |
SAMEQ: F011 DEFINED AT LINE 2278 | |
> USED AT LINE 2276 | |
SAME1: F01A DEFINED AT LINE 2281 | |
> USED AT LINE 2286 | |
SAME2: F038 DEFINED AT LINE 2286 | |
> USED AT LINE 2280 | |
> USED AT LINE 2284 | |
L1540: F046 DEFINED AT LINE 2293 | |
> USED AT LINE 2318 | |
FIND: F04B DEFINED AT LINE 2294 | |
> USED AT LINE 2292 | |
> USED AT LINE 2328 | |
FIND1: F064 DEFINED AT LINE 2298 | |
> USED AT LINE 2310 | |
FIND2: F086 DEFINED AT LINE 2304 | |
> USED AT LINE 2301 | |
FIND3: F08E DEFINED AT LINE 2305 | |
> USED AT LINE 2303 | |
FIND6: F092 DEFINED AT LINE 2306 | |
> USED AT LINE 2299 | |
FIND4: F09E DEFINED AT LINE 2308 | |
> USED AT LINE 2305 | |
FIND5: F0AA DEFINED AT LINE 2311 | |
> USED AT LINE 2308 | |
L1550: F0C0 DEFINED AT LINE 2319 | |
> USED AT LINE 2339 | |
NAMEQ: F0C6 DEFINED AT LINE 2320 | |
> USED AT LINE 2318 | |
> USED AT LINE 2476 | |
> USED AT LINE 2619 | |
> USED AT LINE 2964 | |
> USED AT LINE 2998 | |
NAMQ1: F0D7 DEFINED AT LINE 2324 | |
> USED AT LINE 2322 | |
NAMQ2: F0D9 DEFINED AT LINE 2325 | |
> USED AT LINE 2329 | |
NAMQ3: F0F7 DEFINED AT LINE 2331 | |
> USED AT LINE 2327 | |
L1560: F103 DEFINED AT LINE 2340 | |
> USED AT LINE 2352 | |
BKSP: F106 DEFINED AT LINE 2341 | |
> USED AT LINE 2339 | |
> USED AT LINE 2372 | |
BACK1: F131 DEFINED AT LINE 2347 | |
> USED AT LINE 2343 | |
L1570: F137 DEFINED AT LINE 2353 | |
> USED AT LINE 2361 | |
TAP: F13B DEFINED AT LINE 2354 | |
> USED AT LINE 2352 | |
> USED AT LINE 2371 | |
> USED AT LINE 2388 | |
L1580: F150 DEFINED AT LINE 2362 | |
> USED AT LINE 2378 | |
KTAP: F155 DEFINED AT LINE 2363 | |
> USED AT LINE 140 | |
> USED AT LINE 2361 | |
> USED AT LINE 2557 | |
> USED AT LINE 2566 | |
KTAP1: F17F DEFINED AT LINE 2372 | |
> USED AT LINE 2370 | |
KTAP2: F183 DEFINED AT LINE 2373 | |
> USED AT LINE 2367 | |
L1590: F191 DEFINED AT LINE 2379 | |
> USED AT LINE 2397 | |
ACCEP: F198 DEFINED AT LINE 2380 | |
> USED AT LINE 139 | |
> USED AT LINE 2378 | |
> USED AT LINE 2547 | |
ACCP1: F1A1 DEFINED AT LINE 2382 | |
> USED AT LINE 2391 | |
ACCP2: F1BF DEFINED AT LINE 2390 | |
> USED AT LINE 2387 | |
ACCP3: F1C3 DEFINED AT LINE 2391 | |
> USED AT LINE 2389 | |
ACCP4: F1C7 DEFINED AT LINE 2392 | |
> USED AT LINE 2383 | |
L1600: F1D3 DEFINED AT LINE 2398 | |
> USED AT LINE 2405 | |
EXPEC: F1DA DEFINED AT LINE 2399 | |
> USED AT LINE 2397 | |
L1610: F1ED DEFINED AT LINE 2406 | |
> USED AT LINE 2418 | |
QUERY: F1F3 DEFINED AT LINE 2407 | |
> USED AT LINE 2405 | |
> USED AT LINE 2596 | |
L1620: F211 DEFINED AT LINE 2419 | |
> USED AT LINE 2429 | |
CATCH: F217 DEFINED AT LINE 2420 | |
> USED AT LINE 2418 | |
L1630: F23E DEFINED AT LINE 2430 | |
> USED AT LINE 2440 | |
THROW: F244 DEFINED AT LINE 2431 | |
> USED AT LINE 2429 | |
> USED AT LINE 2455 | |
> USED AT LINE 2465 | |
> USED AT LINE 2485 | |
> USED AT LINE 2622 | |
> USED AT LINE 2988 | |
> USED AT LINE 3007 | |
L1640: F265 DEFINED AT LINE 2441 | |
> USED AT LINE 2452 | |
NULLS: F26B DEFINED AT LINE 2442 | |
> USED AT LINE 2440 | |
> USED AT LINE 2455 | |
> USED AT LINE 2600 | |
L1650: F27A DEFINED AT LINE 2453 | |
> USED AT LINE 2460 | |
ABORT: F280 DEFINED AT LINE 2454 | |
> USED AT LINE 2452 | |
L1660: F28B DEFINED AT LINE 2461 | |
> USED AT LINE 2473 | |
ABORQ: F292 DEFINED AT LINE 2463 | |
> USED AT LINE 2460 | |
> USED AT LINE 2479 | |
> USED AT LINE 2514 | |
> USED AT LINE 2938 | |
> USED AT LINE 3191 | |
ABOR1: F29D DEFINED AT LINE 2466 | |
> USED AT LINE 2464 | |
L1670: F2A7 DEFINED AT LINE 2474 | |
> USED AT LINE 2490 | |
INTER: F2B2 DEFINED AT LINE 2475 | |
> USED AT LINE 150 | |
> USED AT LINE 2473 | |
> USED AT LINE 2493 | |
> USED AT LINE 2501 | |
INTE1: F2D9 DEFINED AT LINE 2482 | |
> USED AT LINE 2477 | |
INTE2: F2E3 DEFINED AT LINE 2485 | |
> USED AT LINE 2483 | |
L1680: F2E9 DEFINED AT LINE 2491 | |
> USED AT LINE 2498 | |
LBRAC: F2EB DEFINED AT LINE 2492 | |
> USED AT LINE 2490 | |
> USED AT LINE 2595 | |
L1690: F2FC DEFINED AT LINE 2499 | |
> USED AT LINE 2510 | |
DOTOK: F300 DEFINED AT LINE 2500 | |
> USED AT LINE 142 | |
> USED AT LINE 2498 | |
> USED AT LINE 2565 | |
DOTO1: F317 DEFINED AT LINE 2505 | |
> USED AT LINE 2502 | |
L1700: F31F DEFINED AT LINE 2511 | |
> USED AT LINE 2521 | |
QSTAC: F326 DEFINED AT LINE 2512 | |
> USED AT LINE 2510 | |
L1710: F340 DEFINED AT LINE 2522 | |
> USED AT LINE 2535 | |
EVAL: F345 DEFINED AT LINE 2523 | |
> USED AT LINE 2521 | |
> USED AT LINE 2597 | |
EVAL1: F348 DEFINED AT LINE 2524 | |
> USED AT LINE 2527 | |
EVAL2: F35C DEFINED AT LINE 2528 | |
> USED AT LINE 2525 | |
L1720: F368 DEFINED AT LINE 2536 | |
> USED AT LINE 2544 | |
PRESE: F36F DEFINED AT LINE 2537 | |
> USED AT LINE 2535 | |
> USED AT LINE 2608 | |
> USED AT LINE 3356 | |
L1730: F388 DEFINED AT LINE 2545 | |
> USED AT LINE 2553 | |
XIO: F38C DEFINED AT LINE 2546 | |
> USED AT LINE 2544 | |
L1740: F3A1 DEFINED AT LINE 2554 | |
> USED AT LINE 2562 | |
FILE: F3A6 DEFINED AT LINE 2555 | |
> USED AT LINE 2553 | |
L1750: F3BD DEFINED AT LINE 2563 | |
> USED AT LINE 2571 | |
HAND: F3C2 DEFINED AT LINE 2564 | |
> USED AT LINE 2562 | |
> USED AT LINE 2586 | |
L1760: F3D9 DEFINED AT LINE 2572 | |
> USED AT LINE 2582 | |
ISLO: F3DD DEFINED AT LINE 2573 | |
> USED AT LINE 2571 | |
> USED AT LINE 2585 | |
L1770: F3E8 DEFINED AT LINE 2583 | |
> USED AT LINE 2591 | |
CONSO: F3F0 DEFINED AT LINE 2584 | |
> USED AT LINE 2582 | |
> USED AT LINE 2600 | |
L1780: F403 DEFINED AT LINE 2592 | |
> USED AT LINE 2616 | |
QUIT: F408 DEFINED AT LINE 2593 | |
> USED AT LINE 2591 | |
> USED AT LINE 3364 | |
QUIT1: F411 DEFINED AT LINE 2595 | |
> USED AT LINE 2609 | |
QUIT2: F413 DEFINED AT LINE 2596 | |
> USED AT LINE 2598 | |
QUIT3: F43F DEFINED AT LINE 2605 | |
> USED AT LINE 2601 | |
QUIT4: F451 DEFINED AT LINE 2608 | |
> USED AT LINE 2606 | |
L1790: F45B DEFINED AT LINE 2617 | |
> USED AT LINE 2627 | |
TICK: F45D DEFINED AT LINE 2618 | |
> USED AT LINE 2616 | |
> USED AT LINE 2647 | |
> USED AT LINE 3238 | |
TICK1: F46A DEFINED AT LINE 2622 | |
> USED AT LINE 2620 | |
L1800: F470 DEFINED AT LINE 2628 | |
> USED AT LINE 2635 | |
ALLOT: F476 DEFINED AT LINE 2629 | |
> USED AT LINE 2627 | |
> USED AT LINE 3042 | |
L1810: F483 DEFINED AT LINE 2636 | |
> USED AT LINE 2644 | |
COMMA: F485 DEFINED AT LINE 2637 | |
> USED AT LINE 2635 | |
> USED AT LINE 2647 | |
> USED AT LINE 2811 | |
> USED AT LINE 2823 | |
> USED AT LINE 2882 | |
> USED AT LINE 3003 | |
> USED AT LINE 3043 | |
> USED AT LINE 3076 | |
> USED AT LINE 3106 | |
L1820: F49A DEFINED AT LINE 2645 | |
> USED AT LINE 2652 | |
BCOMP: F4A4 DEFINED AT LINE 2646 | |
> USED AT LINE 2644 | |
L1830: F4B1 DEFINED AT LINE 2653 | |
> USED AT LINE 2661 | |
COMPI: F4B9 DEFINED AT LINE 2654 | |
> USED AT LINE 2652 | |
> USED AT LINE 2664 | |
> USED AT LINE 2692 | |
> USED AT LINE 2702 | |
> USED AT LINE 2703 | |
> USED AT LINE 2732 | |
> USED AT LINE 2733 | |
> USED AT LINE 2808 | |
> USED AT LINE 2820 | |
> USED AT LINE 2841 | |
> USED AT LINE 2857 | |
> USED AT LINE 2865 | |
> USED AT LINE 2873 | |
> USED AT LINE 2881 | |
> USED AT LINE 2890 | |
> USED AT LINE 2938 | |
> USED AT LINE 2946 | |
> USED AT LINE 2954 | |
> USED AT LINE 3023 | |
L1840: F4CE DEFINED AT LINE 2662 | |
> USED AT LINE 2669 | |
LITER: F4D6 DEFINED AT LINE 2663 | |
> USED AT LINE 2661 | |
> USED AT LINE 3006 | |
L1850: F4E5 DEFINED AT LINE 2670 | |
> USED AT LINE 2679 | |
STRCQ: F4E9 DEFINED AT LINE 2671 | |
> USED AT LINE 2669 | |
L1860: F502 DEFINED AT LINE 2680 | |
> USED AT LINE 2689 | |
RECUR: F50A DEFINED AT LINE 2681 | |
> USED AT LINE 2679 | |
L1861: F51B DEFINED AT LINE 2690 | |
> USED AT LINE 2699 | |
DO: F51E DEFINED AT LINE 2691 | |
> USED AT LINE 2689 | |
L1862: F52F DEFINED AT LINE 2700 | |
> USED AT LINE 2710 | |
QDO: F533 DEFINED AT LINE 2701 | |
> USED AT LINE 2699 | |
L1862A: F548 DEFINED AT LINE 2711 | |
> USED AT LINE 2729 | |
DOQDO: F54E DEFINED AT LINE 2712 | |
> USED AT LINE 2702 | |
> USED AT LINE 2710 | |
DOQDO1: F55B DEFINED AT LINE 2719 | |
> USED AT LINE 2715 | |
L1862B: F569 DEFINED AT LINE 2730 | |
> USED AT LINE 2740 | |
MDO: F56D DEFINED AT LINE 2731 | |
> USED AT LINE 2729 | |
L1862C: F582 DEFINED AT LINE 2741 | |
> USED AT LINE 2759 | |
DOMDO: F588 DEFINED AT LINE 2742 | |
> USED AT LINE 2732 | |
> USED AT LINE 2740 | |
DOMDO1: F595 DEFINED AT LINE 2749 | |
> USED AT LINE 2745 | |
L1863: F5A3 DEFINED AT LINE 2760 | |
> USED AT LINE 2770 | |
DODO: F5A8 DEFINED AT LINE 2761 | |
> USED AT LINE 2692 | |
> USED AT LINE 2759 | |
L1864: F5B4 DEFINED AT LINE 2771 | |
> USED AT LINE 2779 | |
DOLOOP: F5BB DEFINED AT LINE 2772 | |
> USED AT LINE 2770 | |
> USED AT LINE 2808 | |
L1865: F5C4 DEFINED AT LINE 2780 | |
> USED AT LINE 2805 | |
DOPLOOP: F5CC DEFINED AT LINE 2781 | |
> USED AT LINE 2779 | |
> USED AT LINE 2820 | |
DOPLOF: F5DD DEFINED AT LINE 2791 | |
> USED AT LINE 2774 | |
> USED AT LINE 2783 | |
DOPLO1: F5EA DEFINED AT LINE 2797 | |
> USED AT LINE 2786 | |
> USED AT LINE 2793 | |
L1866: F5F4 DEFINED AT LINE 2806 | |
> USED AT LINE 2817 | |
LOOP: F5F9 DEFINED AT LINE 2807 | |
> USED AT LINE 2805 | |
LOOP1: F612 DEFINED AT LINE 2811 | |
L1867: F61A DEFINED AT LINE 2818 | |
> USED AT LINE 2828 | |
> USED AT LINE 2838 | |
PLOOP: F620 DEFINED AT LINE 2819 | |
> USED AT LINE 2817 | |
PLOOP1: F639 DEFINED AT LINE 2823 | |
L1868: F641 DEFINED AT LINE 2829 | |
LEAVE: F647 DEFINED AT LINE 2830 | |
> USED AT LINE 2828 | |
L1870: F651 DEFINED AT LINE 2839 | |
> USED AT LINE 2846 | |
FOR: F655 DEFINED AT LINE 2840 | |
> USED AT LINE 2838 | |
L1880: F664 DEFINED AT LINE 2847 | |
> USED AT LINE 2854 | |
BEGIN: F66A DEFINED AT LINE 2848 | |
> USED AT LINE 2846 | |
L1890: F675 DEFINED AT LINE 2855 | |
> USED AT LINE 2862 | |
NEXT: F67A DEFINED AT LINE 2856 | |
> USED AT LINE 2854 | |
L1900: F689 DEFINED AT LINE 2863 | |
> USED AT LINE 2870 | |
UNTIL: F68F DEFINED AT LINE 2864 | |
> USED AT LINE 2862 | |
L1910: F69E DEFINED AT LINE 2871 | |
> USED AT LINE 2878 | |
AGAIN: F6A4 DEFINED AT LINE 2872 | |
> USED AT LINE 2870 | |
> USED AT LINE 2898 | |
L1920: F6B3 DEFINED AT LINE 2879 | |
> USED AT LINE 2887 | |
IFF: F6B6 DEFINED AT LINE 2880 | |
> USED AT LINE 2878 | |
> USED AT LINE 2930 | |
L1930: F6C9 DEFINED AT LINE 2888 | |
> USED AT LINE 2895 | |
AHEAD: F6CF DEFINED AT LINE 2889 | |
> USED AT LINE 2887 | |
> USED AT LINE 2914 | |
> USED AT LINE 2922 | |
L1940: F6E2 DEFINED AT LINE 2896 | |
> USED AT LINE 2903 | |
REPEA: F6E9 DEFINED AT LINE 2897 | |
> USED AT LINE 2895 | |
L1950: F6FA DEFINED AT LINE 2904 | |
> USED AT LINE 2911 | |
THENN: F6FF DEFINED AT LINE 2905 | |
> USED AT LINE 2903 | |
L1960: F70E DEFINED AT LINE 2912 | |
> USED AT LINE 2919 | |
AFT: F712 DEFINED AT LINE 2913 | |
> USED AT LINE 2911 | |
L1970: F723 DEFINED AT LINE 2920 | |
> USED AT LINE 2927 | |
ELSEE: F728 DEFINED AT LINE 2921 | |
> USED AT LINE 2919 | |
L1980: F737 DEFINED AT LINE 2928 | |
> USED AT LINE 2935 | |
WHILE: F73D DEFINED AT LINE 2929 | |
> USED AT LINE 2927 | |
L1990: F74A DEFINED AT LINE 2936 | |
> USED AT LINE 2943 | |
ABRTQ: F751 DEFINED AT LINE 2937 | |
> USED AT LINE 2935 | |
L2000: F760 DEFINED AT LINE 2944 | |
> USED AT LINE 2951 | |
STRQ: F763 DEFINED AT LINE 2945 | |
> USED AT LINE 2943 | |
L2010: F772 DEFINED AT LINE 2952 | |
> USED AT LINE 2961 | |
DOTQ: F775 DEFINED AT LINE 2953 | |
> USED AT LINE 2951 | |
L2020: F784 DEFINED AT LINE 2962 | |
> USED AT LINE 2974 | |
UNIQU: F78C DEFINED AT LINE 2963 | |
> USED AT LINE 2961 | |
> USED AT LINE 2979 | |
UNIQ1: F7A7 DEFINED AT LINE 2969 | |
> USED AT LINE 2965 | |
L2030: F7AF DEFINED AT LINE 2975 | |
> USED AT LINE 2995 | |
SNAME: F7B3 DEFINED AT LINE 2976 | |
> USED AT LINE 2974 | |
> USED AT LINE 3051 | |
> USED AT LINE 3071 | |
> USED AT LINE 3084 | |
> USED AT LINE 3104 | |
PNAM1: F7E4 DEFINED AT LINE 2986 | |
> USED AT LINE 2978 | |
L2040: F7F2 DEFINED AT LINE 2996 | |
> USED AT LINE 3012 | |
SCOMP: F7FB DEFINED AT LINE 2997 | |
> USED AT LINE 2995 | |
> USED AT LINE 3031 | |
SCOM1: F816 DEFINED AT LINE 3003 | |
> USED AT LINE 3001 | |
SCOM2: F81A DEFINED AT LINE 3004 | |
> USED AT LINE 2999 | |
SCOM3: F826 DEFINED AT LINE 3007 | |
> USED AT LINE 3005 | |
L2050: F82C DEFINED AT LINE 3013 | |
> USED AT LINE 3020 | |
OVERT: F832 DEFINED AT LINE 3014 | |
> USED AT LINE 3012 | |
L2060: F845 DEFINED AT LINE 3021 | |
> USED AT LINE 3028 | |
SEMIS: F847 DEFINED AT LINE 3022 | |
> USED AT LINE 3020 | |
L2070: F858 DEFINED AT LINE 3029 | |
> USED AT LINE 3036 | |
RBRAC: F85A DEFINED AT LINE 3030 | |
> USED AT LINE 3028 | |
> USED AT LINE 3052 | |
L2080: F86B DEFINED AT LINE 3037 | |
> USED AT LINE 3048 | |
CALLC: F871 DEFINED AT LINE 3038 | |
> USED AT LINE 3036 | |
> USED AT LINE 3052 | |
L2090: F887 DEFINED AT LINE 3049 | |
> USED AT LINE 3057 | |
COLON: F889 DEFINED AT LINE 3050 | |
> USED AT LINE 3048 | |
L2100: F89E DEFINED AT LINE 3058 | |
> USED AT LINE 3068 | |
IMMED: F8A8 DEFINED AT LINE 3059 | |
> USED AT LINE 3057 | |
L2110: F8C3 DEFINED AT LINE 3069 | |
> USED AT LINE 3081 | |
USER: F8C8 DEFINED AT LINE 3070 | |
> USED AT LINE 3068 | |
L2120: F8DF DEFINED AT LINE 3082 | |
> USED AT LINE 3093 | |
CREAT: F8E6 DEFINED AT LINE 3083 | |
> USED AT LINE 3081 | |
> USED AT LINE 3096 | |
L2130: F8FB DEFINED AT LINE 3094 | |
> USED AT LINE 3101 | |
VARIA: F904 DEFINED AT LINE 3095 | |
> USED AT LINE 3093 | |
L2135: F913 DEFINED AT LINE 3102 | |
> USED AT LINE 3113 | |
CONST: F91C DEFINED AT LINE 3103 | |
> USED AT LINE 3101 | |
L2140: F933 DEFINED AT LINE 3114 | |
> USED AT LINE 3126 | |
UTYPE: F939 DEFINED AT LINE 3115 | |
> USED AT LINE 3113 | |
> USED AT LINE 3227 | |
UTYP1: F942 DEFINED AT LINE 3118 | |
> USED AT LINE 3120 | |
UTYP2: F94C DEFINED AT LINE 3120 | |
> USED AT LINE 3117 | |
L2150: F958 DEFINED AT LINE 3127 | |
> USED AT LINE 3140 | |
DUMPP: F95C DEFINED AT LINE 3128 | |
> USED AT LINE 3126 | |
> USED AT LINE 3150 | |
PDUM1: F96F DEFINED AT LINE 3132 | |
> USED AT LINE 3134 | |
PDUM2: F97B DEFINED AT LINE 3134 | |
> USED AT LINE 3131 | |
L2160: F985 DEFINED AT LINE 3141 | |
> USED AT LINE 3164 | |
DUMP: F98A DEFINED AT LINE 3142 | |
> USED AT LINE 3140 | |
DUMP1: F99C DEFINED AT LINE 3148 | |
> USED AT LINE 3155 | |
DUMP2: F9BF DEFINED AT LINE 3157 | |
> USED AT LINE 3154 | |
DUMP3: F9C3 DEFINED AT LINE 3158 | |
> USED AT LINE 3156 | |
L2170: F9D1 DEFINED AT LINE 3165 | |
> USED AT LINE 3179 | |
DOTS: F9D4 DEFINED AT LINE 3166 | |
> USED AT LINE 3164 | |
DOTS1: F9E1 DEFINED AT LINE 3170 | |
> USED AT LINE 3171 | |
DOTS2: F9E7 DEFINED AT LINE 3171 | |
> USED AT LINE 3169 | |
L2180: F9F8 DEFINED AT LINE 3180 | |
> USED AT LINE 3187 | |
STCSP: F9FD DEFINED AT LINE 3181 | |
> USED AT LINE 3179 | |
L2190: FA0C DEFINED AT LINE 3188 | |
> USED AT LINE 3198 | |
QCSP: FA11 DEFINED AT LINE 3189 | |
> USED AT LINE 3187 | |
L2200: FA2B DEFINED AT LINE 3199 | |
> USED AT LINE 3219 | |
TNAME: FA31 DEFINED AT LINE 3200 | |
> USED AT LINE 3198 | |
> USED AT LINE 3251 | |
TNAM1: FA36 DEFINED AT LINE 3202 | |
> USED AT LINE 3212 | |
TNAM2: FA42 DEFINED AT LINE 3205 | |
> USED AT LINE 3210 | |
TNAM3: FA5A DEFINED AT LINE 3211 | |
> USED AT LINE 3206 | |
> USED AT LINE 3208 | |
TNAM4: FA6E DEFINED AT LINE 3214 | |
> USED AT LINE 3203 | |
L2210: FA7A DEFINED AT LINE 3220 | |
> USED AT LINE 3235 | |
DOTID: FA7E DEFINED AT LINE 3221 | |
> USED AT LINE 3219 | |
> USED AT LINE 3255 | |
DOTI1: FA92 DEFINED AT LINE 3228 | |
> USED AT LINE 3223 | |
L2220: FAA4 DEFINED AT LINE 3236 | |
> USED AT LINE 3304 | |
SEE: FAA8 DEFINED AT LINE 3237 | |
> USED AT LINE 3235 | |
SEE1: FAD7 DEFINED AT LINE 3248 | |
> USED AT LINE 3244 | |
> USED AT LINE 3298 | |
SEE2: FAED DEFINED AT LINE 3252 | |
> USED AT LINE 3250 | |
SEE21: FB1B DEFINED AT LINE 3264 | |
> USED AT LINE 3259 | |
SEE27: FB89 DEFINED AT LINE 3276 | |
> USED AT LINE 3273 | |
SEE28: FBC0 DEFINED AT LINE 3287 | |
> USED AT LINE 3262 | |
> USED AT LINE 3275 | |
SEE29: FBC6 DEFINED AT LINE 3289 | |
> USED AT LINE 3280 | |
SEE3: FBCC DEFINED AT LINE 3292 | |
> USED AT LINE 3253 | |
SEE31: FBD6 DEFINED AT LINE 3294 | |
> USED AT LINE 3290 | |
SEE4: FBE4 DEFINED AT LINE 3297 | |
> USED AT LINE 3288 | |
> USED AT LINE 3293 | |
SEE5: FBEA DEFINED AT LINE 3299 | |
> USED AT LINE 3247 | |
> USED AT LINE 3296 | |
L2230: FBF8 DEFINED AT LINE 3305 | |
> USED AT LINE 3321 | |
WORDS: FBFE DEFINED AT LINE 3306 | |
> USED AT LINE 3304 | |
WORS1: FC07 DEFINED AT LINE 3308 | |
> USED AT LINE 3312 | |
WORS2: FC1F DEFINED AT LINE 3314 | |
> USED AT LINE 3309 | |
L2240: FC25 DEFINED AT LINE 3322 | |
> USED AT LINE 3329 | |
VERSN: FC29 DEFINED AT LINE 3323 | |
> USED AT LINE 3321 | |
L2250: FC36 DEFINED AT LINE 3330 | |
> USED AT LINE 3340 | |
HI: FC39 DEFINED AT LINE 3331 | |
> USED AT LINE 3329 | |
> USED AT LINE 3346 | |
L2260: FC56 DEFINED AT LINE 3341 | |
> USED AT LINE 3351 | |
TBOOT: FC5C DEFINED AT LINE 3342 | |
> USED AT LINE 3340 | |
> USED AT LINE 3357 | |
L2270: FC65 DEFINED AT LINE 3352 | |
> USED AT LINE 3369 | |
COLD: FC6A DEFINED AT LINE 3353 | |
> USED AT LINE 3351 | |
COLD1: FC6D DEFINED AT LINE 3354 | |
> USED AT LINE 3365 | |
LASTN: FC65 DEFINED AT LINE 3369 | |
> USED AT LINE 160 | |
NTOP: 6C00 DEFINED AT LINE 3371 | |
> USED AT LINE 159 | |
CTOP: FC95 DEFINED AT LINE 3372 | |
> USED AT LINE 158 |
4acdd5e725ca42d03213a9a0551f7fe9 |
; 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 |
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+B |
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)