3808 lines
98 KiB
NASM
3808 lines
98 KiB
NASM
|
|
;
|
|||
|
|
; Through the courtesy of
|
|||
|
|
;
|
|||
|
|
; FORTH INTEREST GROUP
|
|||
|
|
; P.O. BOX 2154
|
|||
|
|
; OAKLAND, CALIFORNIA
|
|||
|
|
; 94621
|
|||
|
|
;
|
|||
|
|
;
|
|||
|
|
; Release 1.k0010
|
|||
|
|
;
|
|||
|
|
; with compiler security
|
|||
|
|
; and
|
|||
|
|
; variable length names
|
|||
|
|
;
|
|||
|
|
; Further distribution need not include this notice.
|
|||
|
|
; The FIG installation Manual is required as it contains
|
|||
|
|
; the model of FORTH and glossary of the system.
|
|||
|
|
; Might be available from FIG at the above address for $95.00 postpaid.
|
|||
|
|
;
|
|||
|
|
; Translated from the FIG model by W.F. Ragsdale with input-
|
|||
|
|
; output given for the Rockwell System-65. Transportation to
|
|||
|
|
; other systems requires only the alteration of :
|
|||
|
|
; XEMIT, XKEY, XQTER, XCR, AND RSLW
|
|||
|
|
;
|
|||
|
|
; Equates giving memory assignments, machine
|
|||
|
|
; registers, and disk parameters.
|
|||
|
|
;
|
|||
|
|
SSIZE = 128 ; sector size in bytes
|
|||
|
|
NBUF = 8 ; number of buffers desired in RAM
|
|||
|
|
; (SSIZE*NBUF >= 1024 bytes)
|
|||
|
|
SECTR = 800 ; sector per drive
|
|||
|
|
; forcing high drive to zero
|
|||
|
|
SECTL = 1600 ; sector limit for two drives
|
|||
|
|
; of 800 per drive.
|
|||
|
|
BMAG = 1056 ; total buffer magnitude, in bytes
|
|||
|
|
; expressed by SSIZE+4*NBUF
|
|||
|
|
;
|
|||
|
|
BOS = $20 ; bottom of data stack, in zero-page.
|
|||
|
|
TOS = $9F ; top of data stack, in zero-page.
|
|||
|
|
N = TOS+8 ; scratch workspace.
|
|||
|
|
IP = N+8 ; interpretive pointer.
|
|||
|
|
W = IP+3 ; code field pointer.
|
|||
|
|
UP = W+2 ; user area pointer.
|
|||
|
|
XSAVE = UP+2 ; temporary for X register.
|
|||
|
|
;
|
|||
|
|
TIBX = $0100 ; terminal input buffer of 84 bytes.
|
|||
|
|
ORIG = $0400 ; origin of FORTH's Dictionary.
|
|||
|
|
MEM = $3F00 ; top of assigned memory+1 byte.
|
|||
|
|
UAREA = MEM-128 ; 128 bytes of user area
|
|||
|
|
DAREA = UAREA-BMAG ; disk buffer space.
|
|||
|
|
;
|
|||
|
|
; Monitor calls for terminal support
|
|||
|
|
;
|
|||
|
|
OUTCH = cout ; output one ASCII char. to term.
|
|||
|
|
INCH = cin ; input one ASCII char. to term.
|
|||
|
|
TCR = crout ; terminal return and line feed.
|
|||
|
|
;
|
|||
|
|
; From DAREA downward to the top of the dictionary is free
|
|||
|
|
; space where the user's applications are compiled.
|
|||
|
|
;
|
|||
|
|
; Boot up parameters. This area provides jump vectors
|
|||
|
|
; to Boot up code, and parameters describing the system.
|
|||
|
|
;
|
|||
|
|
;
|
|||
|
|
; .ORG ORIG
|
|||
|
|
;
|
|||
|
|
; User cold entry point
|
|||
|
|
|
|||
|
|
|
|||
|
|
ENTER NOP ; Vector to COLD entry
|
|||
|
|
JMP COLD+2 ;
|
|||
|
|
REENTR NOP ; User Warm entry point
|
|||
|
|
JMP WARM ; Vector to WARM entry
|
|||
|
|
.WORD $0004 ; 6502 in radix-36
|
|||
|
|
.WORD $5ED2 ;
|
|||
|
|
.WORD NTOP ; Name address of MON
|
|||
|
|
.WORD $7F ; Backspace Character
|
|||
|
|
.WORD UAREA ; Initial User Area
|
|||
|
|
.WORD TOS ; Initial Top of Stack
|
|||
|
|
.WORD $1FF ; Initial Top of Return Stack
|
|||
|
|
.WORD TIBX ; Initial terminal input buffer
|
|||
|
|
;
|
|||
|
|
;
|
|||
|
|
.WORD 31 ; Initial name field width
|
|||
|
|
.WORD 1 ; 0=nod disk, 1=disk
|
|||
|
|
.WORD TOP ; Initial fence address
|
|||
|
|
.WORD TOP ; Initial top of dictionary
|
|||
|
|
.WORD VL0 ; Initial Vocabulary link ptr.
|
|||
|
|
;
|
|||
|
|
; The following offset adjusts all code fields to avoid an
|
|||
|
|
; address ending $XXFF. This must be checked and altered on
|
|||
|
|
; any alteration , for the indirect jump at W-1 to operate !
|
|||
|
|
;
|
|||
|
|
; .ORG *+2 ;.ORIGIN *+2
|
|||
|
|
nop
|
|||
|
|
nop
|
|||
|
|
;
|
|||
|
|
;
|
|||
|
|
; LIT
|
|||
|
|
; SCREEN 13 LINE 1
|
|||
|
|
;
|
|||
|
|
L22 .BYTE $83,"LI",$D4 ; <--- name field
|
|||
|
|
; <----- link field
|
|||
|
|
.WORD 00 ; last link marked by zero
|
|||
|
|
LIT .WORD *+2 ; <----- code address field
|
|||
|
|
LDA (IP),Y ; <----- start of parameter field
|
|||
|
|
PHA
|
|||
|
|
INC IP
|
|||
|
|
BNE L30
|
|||
|
|
INC IP+1
|
|||
|
|
L30 LDA (IP),Y
|
|||
|
|
L31 INC IP
|
|||
|
|
BNE PUSH
|
|||
|
|
INC IP+1
|
|||
|
|
;
|
|||
|
|
PUSH DEX
|
|||
|
|
DEX
|
|||
|
|
;
|
|||
|
|
PUT STA 1,X
|
|||
|
|
PLA
|
|||
|
|
STA 0,X
|
|||
|
|
;
|
|||
|
|
; NEXT is the address interpreter that moves from machine
|
|||
|
|
; level word to word.
|
|||
|
|
;
|
|||
|
|
NEXT LDY #1
|
|||
|
|
LDA (IP),Y ; Fetch code field address pointed
|
|||
|
|
STA W+1 ; to by IP.
|
|||
|
|
DEY
|
|||
|
|
LDA (IP),Y
|
|||
|
|
STA W
|
|||
|
|
CLC ; Increment IP by two.
|
|||
|
|
LDA IP
|
|||
|
|
ADC #2
|
|||
|
|
STA IP
|
|||
|
|
BCC L54
|
|||
|
|
INC IP+1
|
|||
|
|
L54 JMP W-1 ; Jump to an indirect jump (W) which
|
|||
|
|
; vectors to code pointed to by a code
|
|||
|
|
; field.
|
|||
|
|
;
|
|||
|
|
; CLIT pushes the next inline byte to data stack
|
|||
|
|
;
|
|||
|
|
L35 .BYTE $84,"CLI",$D4
|
|||
|
|
.WORD L22 ; Link to LIT
|
|||
|
|
CLIT .WORD *+2
|
|||
|
|
LDA (IP),Y
|
|||
|
|
PHA
|
|||
|
|
TYA
|
|||
|
|
BEQ L31 ; a forced branch into LIT
|
|||
|
|
|
|||
|
|
;
|
|||
|
|
;
|
|||
|
|
SETUP ASL
|
|||
|
|
STA N-1
|
|||
|
|
L63 LDA 0,X
|
|||
|
|
STA N,Y
|
|||
|
|
INX
|
|||
|
|
INY
|
|||
|
|
CPY N-1
|
|||
|
|
BNE L63
|
|||
|
|
LDY #0
|
|||
|
|
RTS
|
|||
|
|
;
|
|||
|
|
; EXCECUTE
|
|||
|
|
; SCREEN 14 LINE 11
|
|||
|
|
;
|
|||
|
|
L75 .BYTE $87,"EXECUT",$C5
|
|||
|
|
.WORD L35 ; link to CLIT
|
|||
|
|
EXEC .WORD *+2
|
|||
|
|
LDA 0,X
|
|||
|
|
STA W
|
|||
|
|
LDA 1,X
|
|||
|
|
STA W+1
|
|||
|
|
INX
|
|||
|
|
INX
|
|||
|
|
JMP W-1 ; to JMP (W) in z-page
|
|||
|
|
;
|
|||
|
|
; BRANCH
|
|||
|
|
; SCREEN 15 LINE 11
|
|||
|
|
;
|
|||
|
|
L89 .BYTE $86,"BRANC",$C8
|
|||
|
|
.WORD L75 ; link to EXCECUTE
|
|||
|
|
BRAN .WORD *+2
|
|||
|
|
CLC
|
|||
|
|
LDA (IP),Y
|
|||
|
|
ADC IP
|
|||
|
|
PHA
|
|||
|
|
INY
|
|||
|
|
LDA (IP),Y
|
|||
|
|
ADC IP+1
|
|||
|
|
STA IP+1
|
|||
|
|
PLA
|
|||
|
|
STA IP
|
|||
|
|
JMP NEXT +2
|
|||
|
|
;
|
|||
|
|
; 0BRANCH
|
|||
|
|
; SCREEN 15 LINE 6
|
|||
|
|
;
|
|||
|
|
L107 .BYTE $87,"0BRANC",$C8
|
|||
|
|
.WORD L89 ; link to BRANCH
|
|||
|
|
ZBRAN .WORD *+2
|
|||
|
|
INX
|
|||
|
|
INX
|
|||
|
|
LDA $FE,X
|
|||
|
|
ORA $FF,X
|
|||
|
|
BEQ BRAN+2
|
|||
|
|
;
|
|||
|
|
BUMP CLC
|
|||
|
|
LDA IP
|
|||
|
|
ADC #2
|
|||
|
|
STA IP
|
|||
|
|
BCC L122
|
|||
|
|
INC IP+1
|
|||
|
|
L122 JMP NEXT
|
|||
|
|
;
|
|||
|
|
; (LOOP)
|
|||
|
|
; SCREEN 16 LINE 1
|
|||
|
|
;
|
|||
|
|
L127 .BYTE $86,"(LOOP",$A9
|
|||
|
|
.WORD L107 ; link to 0BRANCH
|
|||
|
|
PLOOP .WORD L130
|
|||
|
|
L130 STX XSAVE
|
|||
|
|
TSX
|
|||
|
|
INC $101,X
|
|||
|
|
BNE PL1
|
|||
|
|
INC $102,X
|
|||
|
|
;
|
|||
|
|
PL1 CLC
|
|||
|
|
LDA $103,X
|
|||
|
|
SBC $101,X
|
|||
|
|
LDA $104,X
|
|||
|
|
SBC $102,X
|
|||
|
|
;
|
|||
|
|
PL2 LDX XSAVE
|
|||
|
|
ASL
|
|||
|
|
BCC BRAN+2
|
|||
|
|
PLA
|
|||
|
|
PLA
|
|||
|
|
PLA
|
|||
|
|
PLA
|
|||
|
|
JMP BUMP
|
|||
|
|
;
|
|||
|
|
; (+LOOP)
|
|||
|
|
; SCREEN 16 LINE 8
|
|||
|
|
;
|
|||
|
|
L154 .BYTE $87,"(+LOOP",$A9
|
|||
|
|
.WORD L127 ; link to (loop)
|
|||
|
|
PPLOO .WORD *+2
|
|||
|
|
INX
|
|||
|
|
INX
|
|||
|
|
STX XSAVE
|
|||
|
|
LDA $FF,X
|
|||
|
|
PHA
|
|||
|
|
PHA
|
|||
|
|
LDA $FE,X
|
|||
|
|
TSX
|
|||
|
|
INX
|
|||
|
|
INX
|
|||
|
|
CLC
|
|||
|
|
ADC $101,X
|
|||
|
|
STA $101,X
|
|||
|
|
PLA
|
|||
|
|
ADC $102,X
|
|||
|
|
STA $102,X
|
|||
|
|
PLA
|
|||
|
|
BPL PL1
|
|||
|
|
CLC
|
|||
|
|
LDA $101,X
|
|||
|
|
SBC $103,X
|
|||
|
|
LDA $102,X
|
|||
|
|
SBC $104,X
|
|||
|
|
JMP PL2
|
|||
|
|
;
|
|||
|
|
; (DO)
|
|||
|
|
; SCREEN 17 LINE 2
|
|||
|
|
;
|
|||
|
|
L185 .BYTE $84,"(DO",$A9
|
|||
|
|
.WORD L154 ; link to (+LOOP)
|
|||
|
|
PDO .WORD *+2
|
|||
|
|
LDA 3,X
|
|||
|
|
PHA
|
|||
|
|
LDA 2,X
|
|||
|
|
PHA
|
|||
|
|
LDA 1,X
|
|||
|
|
PHA
|
|||
|
|
LDA 0,X
|
|||
|
|
PHA
|
|||
|
|
;
|
|||
|
|
POPTWO INX
|
|||
|
|
INX
|
|||
|
|
;
|
|||
|
|
;
|
|||
|
|
;
|
|||
|
|
POP INX
|
|||
|
|
INX
|
|||
|
|
JMP NEXT
|
|||
|
|
;
|
|||
|
|
; I
|
|||
|
|
; SCREEN 17 LINE 9
|
|||
|
|
;
|
|||
|
|
L207 .BYTE $81,$C9
|
|||
|
|
.WORD L185 ; link to (DO)
|
|||
|
|
I .WORD R+2 ; share the code for R
|
|||
|
|
;
|
|||
|
|
; DIGIT
|
|||
|
|
; SCREEN 18 LINE 1
|
|||
|
|
;
|
|||
|
|
L214 .BYTE $85,"DIGI",$D4
|
|||
|
|
.WORD L207 ; link to I
|
|||
|
|
DIGIT .WORD *+2
|
|||
|
|
SEC
|
|||
|
|
LDA 2,X
|
|||
|
|
SBC #$30
|
|||
|
|
BMI L234
|
|||
|
|
CMP #$A
|
|||
|
|
BMI L227
|
|||
|
|
SEC
|
|||
|
|
SBC #7
|
|||
|
|
CMP #$A
|
|||
|
|
BMI L234
|
|||
|
|
L227 CMP 0,X
|
|||
|
|
BPL L234
|
|||
|
|
STA 2,X
|
|||
|
|
LDA #1
|
|||
|
|
PHA
|
|||
|
|
TYA
|
|||
|
|
JMP PUT ; exit true with converted value
|
|||
|
|
L234 TYA
|
|||
|
|
PHA
|
|||
|
|
INX
|
|||
|
|
INX
|
|||
|
|
JMP PUT ; exit false with bad conversion
|
|||
|
|
;
|
|||
|
|
; (FIND)
|
|||
|
|
; SCREEN 19 LINE 1
|
|||
|
|
;
|
|||
|
|
L243 .BYTE $86,"(FIND",$A9
|
|||
|
|
.WORD L214 ; Link to DIGIT
|
|||
|
|
PFIND .WORD *+2
|
|||
|
|
LDA #2
|
|||
|
|
JSR SETUP
|
|||
|
|
STX XSAVE
|
|||
|
|
L249 LDY #0
|
|||
|
|
LDA (N),Y
|
|||
|
|
EOR (N+2),Y
|
|||
|
|
;
|
|||
|
|
;
|
|||
|
|
AND #$3F
|
|||
|
|
BNE L281
|
|||
|
|
L254 INY
|
|||
|
|
LDA (N),Y
|
|||
|
|
EOR (N+2),Y
|
|||
|
|
ASL
|
|||
|
|
BNE L280
|
|||
|
|
BCC L254
|
|||
|
|
LDX XSAVE
|
|||
|
|
DEX
|
|||
|
|
DEX
|
|||
|
|
DEX
|
|||
|
|
DEX
|
|||
|
|
CLC
|
|||
|
|
TYA
|
|||
|
|
ADC #5
|
|||
|
|
ADC N
|
|||
|
|
STA 2,X
|
|||
|
|
LDY #0
|
|||
|
|
TYA
|
|||
|
|
ADC N+1
|
|||
|
|
STA 3,X
|
|||
|
|
STY 1,X
|
|||
|
|
LDA (N),Y
|
|||
|
|
STA 0,X
|
|||
|
|
LDA #1
|
|||
|
|
PHA
|
|||
|
|
JMP PUSH
|
|||
|
|
L280 BCS L284
|
|||
|
|
L281 INY
|
|||
|
|
LDA (N),Y
|
|||
|
|
BPL L281
|
|||
|
|
L284 INY
|
|||
|
|
LDA (N),Y
|
|||
|
|
TAX
|
|||
|
|
INY
|
|||
|
|
LDA (N),Y
|
|||
|
|
STA N+1
|
|||
|
|
STX N
|
|||
|
|
ORA N
|
|||
|
|
BNE L249
|
|||
|
|
LDX XSAVE
|
|||
|
|
LDA #0
|
|||
|
|
PHA
|
|||
|
|
JMP PUSH ; exit false upon reading null link
|
|||
|
|
;
|
|||
|
|
; ENCLOSE
|
|||
|
|
; SCREEN 20 LINE 1
|
|||
|
|
;
|
|||
|
|
L301 .BYTE $87,"ENCLOS",$C5
|
|||
|
|
.WORD L243 ; link to (FIND)
|
|||
|
|
ENCL .WORD *+2
|
|||
|
|
LDA #2
|
|||
|
|
JSR SETUP
|
|||
|
|
TXA
|
|||
|
|
SEC
|
|||
|
|
SBC #8
|
|||
|
|
TAX
|
|||
|
|
STY 3,X
|
|||
|
|
STY 1,X
|
|||
|
|
DEY
|
|||
|
|
L313 INY
|
|||
|
|
LDA (N+2),Y
|
|||
|
|
CMP N
|
|||
|
|
BEQ L313
|
|||
|
|
STY 4,X
|
|||
|
|
L318 LDA (N+2),Y
|
|||
|
|
BNE L327
|
|||
|
|
STY 2,X
|
|||
|
|
STY 0,X
|
|||
|
|
TYA
|
|||
|
|
CMP 4,X
|
|||
|
|
BNE L326
|
|||
|
|
INC 2,X
|
|||
|
|
L326 JMP NEXT
|
|||
|
|
L327 STY 2,X
|
|||
|
|
INY
|
|||
|
|
CMP N
|
|||
|
|
BNE L318
|
|||
|
|
STY 0,X
|
|||
|
|
JMP NEXT
|
|||
|
|
;
|
|||
|
|
; EMIT
|
|||
|
|
; SCREEN 21 LINE 5
|
|||
|
|
;
|
|||
|
|
L337 .BYTE $84,"EMI",$D4
|
|||
|
|
.WORD L301 ; link to ENCLOSE
|
|||
|
|
EMIT .WORD XEMIT ; Vector to code for KEY
|
|||
|
|
;
|
|||
|
|
; KEY
|
|||
|
|
; SCREEN 21 LINE 7
|
|||
|
|
;
|
|||
|
|
L344 .BYTE $83,"KE",$D9
|
|||
|
|
.WORD L337 ; link to EMIT
|
|||
|
|
KEY .WORD XKEY ; Vector to code for KEY
|
|||
|
|
;
|
|||
|
|
; ?TERMINAL
|
|||
|
|
; SCREEN 21 LINE 9
|
|||
|
|
;
|
|||
|
|
L351 .BYTE $89,"?TERMINA",$CC
|
|||
|
|
.WORD L344 ; link to KEY
|
|||
|
|
QTERM .WORD XQTER ; Vector to code for ?TERMINAL
|
|||
|
|
;
|
|||
|
|
;
|
|||
|
|
;
|
|||
|
|
;
|
|||
|
|
;
|
|||
|
|
; CR
|
|||
|
|
; SCREEN 21 LINE 11
|
|||
|
|
;
|
|||
|
|
L358 .BYTE $82,"C",$D2
|
|||
|
|
.WORD L351 ; link to ?TERMINAL
|
|||
|
|
CR .WORD XCR ; Vector to code for CR
|
|||
|
|
;
|
|||
|
|
; CMOVE
|
|||
|
|
; SCREEN 22 LINE 1
|
|||
|
|
;
|
|||
|
|
L365 .BYTE $85,"CMOV",$C5
|
|||
|
|
.WORD L358 ; link to CR
|
|||
|
|
CMOVE .WORD *+2
|
|||
|
|
LDA #3
|
|||
|
|
JSR SETUP
|
|||
|
|
L370 CPY N
|
|||
|
|
BNE L375
|
|||
|
|
DEC N+1
|
|||
|
|
BPL L375
|
|||
|
|
JMP NEXT
|
|||
|
|
L375 LDA (N+4),Y
|
|||
|
|
STA (N+2),Y
|
|||
|
|
INY
|
|||
|
|
BNE L370
|
|||
|
|
INC N+5
|
|||
|
|
INC N+3
|
|||
|
|
JMP L370
|
|||
|
|
;
|
|||
|
|
; U*
|
|||
|
|
; SCREEN 23 LINE 1
|
|||
|
|
;
|
|||
|
|
L386 .BYTE $82,"U",$AA
|
|||
|
|
.WORD L365 ; link to CMOVE
|
|||
|
|
USTAR .WORD *+2
|
|||
|
|
; LDA 2,X
|
|||
|
|
; STA N
|
|||
|
|
; STY 2,X
|
|||
|
|
; LDA 3,X
|
|||
|
|
; STA N+1
|
|||
|
|
; STY 3,X
|
|||
|
|
; LDY #16 ; for 16 bits
|
|||
|
|
;L396 ASL 2,X
|
|||
|
|
; ROL 3,X
|
|||
|
|
; ROL 0,X
|
|||
|
|
; ROL 1,X
|
|||
|
|
; BCC L411
|
|||
|
|
; CLC
|
|||
|
|
; LDA N
|
|||
|
|
; ADC 2,X
|
|||
|
|
; STA 2,X
|
|||
|
|
; LDA N+1
|
|||
|
|
; ADC 3,X
|
|||
|
|
; STA 3,X
|
|||
|
|
; LDA #0 ; bug here as high byte of this high word does not
|
|||
|
|
; ADC 0,X ; get incremented when 0,x rolls over to $00
|
|||
|
|
; STA 0,X
|
|||
|
|
;
|
|||
|
|
;L411 DEY
|
|||
|
|
; BNE L396
|
|||
|
|
; JMP NEXT
|
|||
|
|
|
|||
|
|
;
|
|||
|
|
; replacement code from 6502.org - http://forum.6502.org/viewtopic.php?t=689
|
|||
|
|
;
|
|||
|
|
LDA #0 ; in some implementations TYA can be used since NEXT leaves Y=$00
|
|||
|
|
STA N
|
|||
|
|
LDY #16
|
|||
|
|
LSR 3,X
|
|||
|
|
ROR 2,X
|
|||
|
|
L1 BCC L2
|
|||
|
|
CLC
|
|||
|
|
sta N+1 ; PHA
|
|||
|
|
LDA N
|
|||
|
|
ADC 0,X
|
|||
|
|
STA N
|
|||
|
|
lda N+1 ; PLA
|
|||
|
|
ADC 1,X
|
|||
|
|
L2 ROR
|
|||
|
|
ROR N
|
|||
|
|
ROR 3,X
|
|||
|
|
ROR 2,X
|
|||
|
|
DEY
|
|||
|
|
BNE L1
|
|||
|
|
STA 1,X
|
|||
|
|
LDA N
|
|||
|
|
STA 0,X
|
|||
|
|
JMP NEXT
|
|||
|
|
|
|||
|
|
;
|
|||
|
|
; U/
|
|||
|
|
; SCREEN 24 LINE 1
|
|||
|
|
;
|
|||
|
|
L418 .BYTE $82,"U",$AF
|
|||
|
|
.WORD L386 ; link to U*
|
|||
|
|
USLAS .WORD *+2
|
|||
|
|
; LDA 4,X ; bugged code replaced - dr
|
|||
|
|
; LDY 2,X
|
|||
|
|
; STY 4,X
|
|||
|
|
; ASL
|
|||
|
|
; STA 2,X
|
|||
|
|
; LDA 5,X
|
|||
|
|
; LDY 3,X
|
|||
|
|
; STY 5,X
|
|||
|
|
; ROL
|
|||
|
|
; STA 3,X
|
|||
|
|
; LDA #16
|
|||
|
|
; STA N
|
|||
|
|
;L433 ROL 4,X
|
|||
|
|
; ROL 5,X
|
|||
|
|
; SEC
|
|||
|
|
; LDA 4,X
|
|||
|
|
; SBC 0,X
|
|||
|
|
; TAY
|
|||
|
|
; LDA 5,X
|
|||
|
|
; SBC 1,X
|
|||
|
|
; BCC L444
|
|||
|
|
; STY 4,X
|
|||
|
|
; STA 5,X
|
|||
|
|
;L444 ROL 2,X
|
|||
|
|
; ROL 3,X
|
|||
|
|
; DEC N
|
|||
|
|
; BNE L433
|
|||
|
|
; JMP POP
|
|||
|
|
|
|||
|
|
;
|
|||
|
|
; updated code from 6502.org - source code repository 32bit division
|
|||
|
|
;
|
|||
|
|
SEC ; Modified code - dr
|
|||
|
|
LDA 2,X ; Subtract hi cell of dividend by
|
|||
|
|
SBC 0,X ; divisor to see if there's an overflow condition.
|
|||
|
|
LDA 3,X
|
|||
|
|
SBC 1,X
|
|||
|
|
BCS oflow ; Branch if /0 or overflow.
|
|||
|
|
LDA #$11 ; Loop 17x.
|
|||
|
|
STA N ; Use N for loop counter.
|
|||
|
|
loopp ROL 4,X ; Rotate dividend lo cell left one bit.
|
|||
|
|
ROL 5,X
|
|||
|
|
DEC N ; Decrement loop counter.
|
|||
|
|
BEQ endd ; If we're done, then branch to end.
|
|||
|
|
ROL 2,X ; Otherwise rotate dividend hi cell left one bit.
|
|||
|
|
ROL 3,X
|
|||
|
|
STZ N+1
|
|||
|
|
ROL N+1 ; Rotate the bit carried out of above into N+1.
|
|||
|
|
SEC
|
|||
|
|
LDA 2,X ; Subtract dividend hi cell minus divisor.
|
|||
|
|
SBC 0,X
|
|||
|
|
STA N+2 ; Put result temporarily in N+2 (lo byte)
|
|||
|
|
LDA 3,X
|
|||
|
|
SBC 1,X
|
|||
|
|
TAY ; and Y (hi byte).
|
|||
|
|
LDA N+1 ; Remember now to bring in the bit carried out above.
|
|||
|
|
SBC #$00
|
|||
|
|
BCC loopp
|
|||
|
|
LDA N+2 ; If that didn't cause a borrow,
|
|||
|
|
STA 2,X ; make the result from above to
|
|||
|
|
STY 3,X ; be the new dividend hi cell
|
|||
|
|
BRA loopp ; and then brach up. (NMOS 6502 can use BCS here.)
|
|||
|
|
oflow LDA #$FF ; If overflow or /0 condition found,
|
|||
|
|
STA 2,X ; just put FFFF in both the remainder
|
|||
|
|
STA 3,X
|
|||
|
|
STA 4,X ; and the quotient.
|
|||
|
|
STA 5,X
|
|||
|
|
endd INX ; When you're done, show one less cell on data stack,
|
|||
|
|
INX ; (INX INX is exactly what the Forth word DROP does)
|
|||
|
|
JMP SWAP+2 ; and swap the two top cells to put quotient on top.
|
|||
|
|
|
|||
|
|
;
|
|||
|
|
; AND
|
|||
|
|
; SCREEN 25 LINE 2
|
|||
|
|
;
|
|||
|
|
L453 .BYTE $83,"AN",$C4
|
|||
|
|
.WORD L418 ; link to U/
|
|||
|
|
ANDD .WORD *+2
|
|||
|
|
LDA 0,X
|
|||
|
|
AND 2,X
|
|||
|
|
PHA
|
|||
|
|
LDA 1,X
|
|||
|
|
AND 3,X
|
|||
|
|
;
|
|||
|
|
BINARY INX
|
|||
|
|
INX
|
|||
|
|
JMP PUT
|
|||
|
|
;
|
|||
|
|
; OR
|
|||
|
|
; SCREEN 25 LINE 7
|
|||
|
|
;
|
|||
|
|
L469 .BYTE $82,"O",$D2
|
|||
|
|
.WORD L453 ; link to AND
|
|||
|
|
OR .WORD *+2
|
|||
|
|
LDA 0,X
|
|||
|
|
ORA 2,X
|
|||
|
|
PHA
|
|||
|
|
LDA 1,X
|
|||
|
|
ORA 3,X
|
|||
|
|
INX
|
|||
|
|
INX
|
|||
|
|
JMP PUT
|
|||
|
|
;
|
|||
|
|
; XOR
|
|||
|
|
; SCREEN 25 LINE 11
|
|||
|
|
;
|
|||
|
|
L484 .BYTE $83,"XO",$D2
|
|||
|
|
.WORD L469 ; link to OR
|
|||
|
|
XOR .WORD *+2
|
|||
|
|
LDA 0,X
|
|||
|
|
EOR 2,X
|
|||
|
|
PHA
|
|||
|
|
LDA 1,X
|
|||
|
|
EOR 3,X
|
|||
|
|
INX
|
|||
|
|
INX
|
|||
|
|
JMP PUT
|
|||
|
|
;
|
|||
|
|
; SP@
|
|||
|
|
; SCREEN 26 LINE 1
|
|||
|
|
;
|
|||
|
|
L499 .BYTE $83,"SP",$C0
|
|||
|
|
.WORD L484 ; link to XOR
|
|||
|
|
SPAT .WORD *+2
|
|||
|
|
TXA
|
|||
|
|
;
|
|||
|
|
PUSHOA PHA
|
|||
|
|
LDA #0
|
|||
|
|
JMP PUSH
|
|||
|
|
;
|
|||
|
|
; SP!
|
|||
|
|
; SCREEN 26 LINE 5
|
|||
|
|
;
|
|||
|
|
;
|
|||
|
|
L511 .BYTE $83,"SP",$A1
|
|||
|
|
.WORD L499 ; link to SP@
|
|||
|
|
SPSTO .WORD *+2
|
|||
|
|
LDY #6
|
|||
|
|
LDA (UP),Y ; load data stack pointer (X reg) from
|
|||
|
|
TAX ; silent user variable S0.
|
|||
|
|
JMP NEXT
|
|||
|
|
;
|
|||
|
|
; RP!
|
|||
|
|
; SCREEN 26 LINE 8
|
|||
|
|
;
|
|||
|
|
L522 .BYTE $83,"RP",$A1
|
|||
|
|
.WORD L511 ; link to SP!
|
|||
|
|
RPSTO .WORD *+2
|
|||
|
|
STX XSAVE ; load return stack pointer (machine
|
|||
|
|
LDY #8 ; stack pointer) from silent user
|
|||
|
|
LDA (UP),Y ; VARIABLE R0
|
|||
|
|
TAX
|
|||
|
|
TXS
|
|||
|
|
LDX XSAVE
|
|||
|
|
JMP NEXT
|
|||
|
|
;
|
|||
|
|
; ;S
|
|||
|
|
; SCREEN 26 LINE 12
|
|||
|
|
;
|
|||
|
|
L536 .BYTE $82,";",$D3
|
|||
|
|
.WORD L522 ; link to RP!
|
|||
|
|
SEMIS .WORD *+2
|
|||
|
|
PLA
|
|||
|
|
STA IP
|
|||
|
|
PLA
|
|||
|
|
STA IP+1
|
|||
|
|
JMP NEXT
|
|||
|
|
;
|
|||
|
|
; LEAVE
|
|||
|
|
; SCREEN 27 LINE 1
|
|||
|
|
;
|
|||
|
|
L548 .BYTE $85,"LEAV",$C5
|
|||
|
|
.WORD L536 ; link to ;S
|
|||
|
|
LEAVE .WORD *+2
|
|||
|
|
STX XSAVE
|
|||
|
|
TSX
|
|||
|
|
LDA $101,X
|
|||
|
|
STA $103,X
|
|||
|
|
LDA $102,X
|
|||
|
|
STA $104,X
|
|||
|
|
LDX XSAVE
|
|||
|
|
JMP NEXT
|
|||
|
|
;
|
|||
|
|
; >R
|
|||
|
|
; SCREEN 27 LINE 5
|
|||
|
|
;
|
|||
|
|
L563 .BYTE $82,">",$D2
|
|||
|
|
.WORD L548 ; link to LEAVE
|
|||
|
|
TOR .WORD *+2
|
|||
|
|
LDA 1,X ; move high byte
|
|||
|
|
PHA
|
|||
|
|
LDA 0,X ; then low byte
|
|||
|
|
PHA ; to return stack
|
|||
|
|
INX
|
|||
|
|
INX ; popping off data stack
|
|||
|
|
JMP NEXT
|
|||
|
|
;
|
|||
|
|
; R>
|
|||
|
|
; SCREEN 27 LINE 8
|
|||
|
|
;
|
|||
|
|
L577 .BYTE $82,"R",$BE
|
|||
|
|
.WORD L563 ; link to >R
|
|||
|
|
RFROM .WORD *+2
|
|||
|
|
DEX ; make room on data stack
|
|||
|
|
DEX
|
|||
|
|
PLA ; high byte
|
|||
|
|
STA 0,X
|
|||
|
|
PLA ; then low byte
|
|||
|
|
STA 1,X ; restored to data stack
|
|||
|
|
JMP NEXT
|
|||
|
|
;
|
|||
|
|
; R
|
|||
|
|
; SCREEN 27 LINE 11
|
|||
|
|
;
|
|||
|
|
L591 .BYTE $81,$D2
|
|||
|
|
.WORD L577 ; link to R>
|
|||
|
|
R .WORD *+2
|
|||
|
|
STX XSAVE
|
|||
|
|
TSX ; address return stack
|
|||
|
|
LDA $101,X ; copy bottom value
|
|||
|
|
PHA ; to data stack
|
|||
|
|
LDA $102,X
|
|||
|
|
LDX XSAVE
|
|||
|
|
JMP PUSH
|
|||
|
|
;
|
|||
|
|
; 0=
|
|||
|
|
; SCREEN 28 LINE 2
|
|||
|
|
;
|
|||
|
|
L605 .BYTE $82,"0",$BD
|
|||
|
|
.WORD L591 ; link to R
|
|||
|
|
ZEQU .WORD *+2
|
|||
|
|
LDA 1,X ; Corrected from FD3/2 p69
|
|||
|
|
STY 1,X
|
|||
|
|
ORA 0,X
|
|||
|
|
BNE L613
|
|||
|
|
INY
|
|||
|
|
L613 STY 0,X
|
|||
|
|
JMP NEXT
|
|||
|
|
;
|
|||
|
|
; 0<
|
|||
|
|
; SCREEN 28 LINE 6
|
|||
|
|
;
|
|||
|
|
L619 .BYTE $82,"0",$BC
|
|||
|
|
.WORD L605 ; link to 0=
|
|||
|
|
ZLESS .WORD *+2
|
|||
|
|
ASL 1,X
|
|||
|
|
TYA
|
|||
|
|
ROL
|
|||
|
|
STY 1,X
|
|||
|
|
STA 0,X
|
|||
|
|
JMP NEXT
|
|||
|
|
;
|
|||
|
|
; +
|
|||
|
|
; SCREEN 29 LINE 1
|
|||
|
|
;
|
|||
|
|
L632 .BYTE $81,$AB
|
|||
|
|
.WORD L619 ; link to V-ADJ
|
|||
|
|
PLUS .WORD *+2
|
|||
|
|
CLC
|
|||
|
|
LDA 0,X
|
|||
|
|
ADC 2,X
|
|||
|
|
STA 2,X
|
|||
|
|
LDA 1,X
|
|||
|
|
ADC 3,X
|
|||
|
|
STA 3,X
|
|||
|
|
INX
|
|||
|
|
INX
|
|||
|
|
JMP NEXT
|
|||
|
|
;
|
|||
|
|
; D+
|
|||
|
|
; SCREEN 29 LINE 4
|
|||
|
|
;
|
|||
|
|
L649 .BYTE $82,"D",$AB
|
|||
|
|
.WORD L632 ; LINK TO +
|
|||
|
|
DPLUS .WORD *+2
|
|||
|
|
CLC
|
|||
|
|
LDA 2,X
|
|||
|
|
ADC 6,X
|
|||
|
|
STA 6,X
|
|||
|
|
LDA 3,X
|
|||
|
|
ADC 7,X
|
|||
|
|
STA 7,X
|
|||
|
|
LDA 0,X
|
|||
|
|
ADC 4,X
|
|||
|
|
STA 4,X
|
|||
|
|
LDA 1,X
|
|||
|
|
ADC 5,X
|
|||
|
|
STA 5,X
|
|||
|
|
JMP POPTWO
|
|||
|
|
;
|
|||
|
|
; MINUS
|
|||
|
|
; SCREEN 29 LINE 9
|
|||
|
|
;
|
|||
|
|
L670 .BYTE $85,"MINU",$D3
|
|||
|
|
.WORD L649 ; link to D+
|
|||
|
|
MINUS .WORD *+2
|
|||
|
|
SEC
|
|||
|
|
TYA
|
|||
|
|
SBC 0,X
|
|||
|
|
STA 0,X
|
|||
|
|
TYA
|
|||
|
|
SBC 1,X
|
|||
|
|
STA 1,X
|
|||
|
|
JMP NEXT
|
|||
|
|
;
|
|||
|
|
; DMINUS
|
|||
|
|
; SCREEN 29 LINE 12
|
|||
|
|
;
|
|||
|
|
L685 .BYTE $86,"DMINU",$D3
|
|||
|
|
.WORD L670 ; link to MINUS
|
|||
|
|
DMINU .WORD *+2
|
|||
|
|
SEC
|
|||
|
|
TYA
|
|||
|
|
SBC 2,X
|
|||
|
|
STA 2,X
|
|||
|
|
TYA
|
|||
|
|
SBC 3,X
|
|||
|
|
STA 3,X
|
|||
|
|
JMP MINUS+3
|
|||
|
|
;
|
|||
|
|
; OVER
|
|||
|
|
; SCREEN 30 LINE 1
|
|||
|
|
;
|
|||
|
|
L700 .BYTE $84,"OVE",$D2
|
|||
|
|
.WORD L685 ; link to DMINUS
|
|||
|
|
OVER .WORD *+2
|
|||
|
|
LDA 2,X
|
|||
|
|
PHA
|
|||
|
|
LDA 3,X
|
|||
|
|
JMP PUSH
|
|||
|
|
;
|
|||
|
|
; DROP
|
|||
|
|
; SCREEN 30 LINE 4
|
|||
|
|
;
|
|||
|
|
L711 .BYTE $84,"DRO",$D0
|
|||
|
|
.WORD L700 ; link to OVER
|
|||
|
|
DROP .WORD POP
|
|||
|
|
;
|
|||
|
|
; SWAP
|
|||
|
|
; SCREEN 30 LINE 8
|
|||
|
|
;
|
|||
|
|
L718 .BYTE $84,"SWA",$D0
|
|||
|
|
.WORD L711 ; link to DROP
|
|||
|
|
SWAP .WORD *+2
|
|||
|
|
LDA 2,X
|
|||
|
|
PHA
|
|||
|
|
LDA 0,X
|
|||
|
|
STA 2,X
|
|||
|
|
LDA 3,X
|
|||
|
|
LDY 1,X
|
|||
|
|
STY 3,X
|
|||
|
|
JMP PUT
|
|||
|
|
;
|
|||
|
|
; DUP
|
|||
|
|
; SCREEN 30 LINE 21
|
|||
|
|
;
|
|||
|
|
L733 .BYTE $83,"DU",$D0
|
|||
|
|
.WORD L718 ; link to SWAP
|
|||
|
|
DUP .WORD *+2
|
|||
|
|
LDA 0,X
|
|||
|
|
PHA
|
|||
|
|
LDA 1,X
|
|||
|
|
JMP PUSH
|
|||
|
|
;
|
|||
|
|
; +!
|
|||
|
|
; SCREEN 31 LINE 2
|
|||
|
|
;
|
|||
|
|
L744 .BYTE $82,"+",$A1
|
|||
|
|
.WORD L733 ; link to DUP
|
|||
|
|
PSTOR .WORD *+2
|
|||
|
|
CLC
|
|||
|
|
LDA (0,X) ; fetch 16 bit value addressed by
|
|||
|
|
ADC 2,X ; bottom of stack, adding to
|
|||
|
|
STA (0,X) ; second item on stack, and return
|
|||
|
|
INC 0,X ; to memory
|
|||
|
|
BNE L754
|
|||
|
|
INC 1,X
|
|||
|
|
L754 LDA (0,X)
|
|||
|
|
ADC 3,X
|
|||
|
|
STA (0,X)
|
|||
|
|
JMP POPTWO
|
|||
|
|
;
|
|||
|
|
; TOGGLE
|
|||
|
|
; SCREEN 31 LINE 7
|
|||
|
|
;
|
|||
|
|
L762 .BYTE $81,"TOGGL",$C5
|
|||
|
|
.WORD L744 ; link to +!
|
|||
|
|
TOGGL .WORD *+2
|
|||
|
|
LDA (2,X) ; complement bits in memory address
|
|||
|
|
EOR 0,X ; second on stack, by pattern on
|
|||
|
|
STA (2,X) ; bottom of stack.
|
|||
|
|
JMP POPTWO
|
|||
|
|
;
|
|||
|
|
; @
|
|||
|
|
; SCREEN 32 LINE 1
|
|||
|
|
;
|
|||
|
|
L773 .BYTE $81,$C0
|
|||
|
|
.WORD L762 ; link to TOGGLE
|
|||
|
|
AT .WORD *+2
|
|||
|
|
LDA (0,X)
|
|||
|
|
PHA
|
|||
|
|
INC 0,X
|
|||
|
|
BNE L781
|
|||
|
|
INC 1,X
|
|||
|
|
L781 LDA (0,X)
|
|||
|
|
JMP PUT
|
|||
|
|
;
|
|||
|
|
; C@
|
|||
|
|
; SCREEN 32 LINE 5
|
|||
|
|
;
|
|||
|
|
L787 .BYTE $82,"C",$C0
|
|||
|
|
.WORD L773 ; link to @
|
|||
|
|
CAT .WORD *+2
|
|||
|
|
LDA (0,X) ; fetch byte addressed by bottom of
|
|||
|
|
STA 0,X ; stack to stack, zeroing the high
|
|||
|
|
STY 1,X ; byte
|
|||
|
|
JMP NEXT
|
|||
|
|
;
|
|||
|
|
; !
|
|||
|
|
; SCREEN 32 LINE 8
|
|||
|
|
;
|
|||
|
|
L798 .BYTE $81,$A1
|
|||
|
|
.WORD L787 ; link to C@
|
|||
|
|
STORE .WORD *+2
|
|||
|
|
LDA 2,X
|
|||
|
|
STA (0,X) ; store second 16bit value on stack
|
|||
|
|
INC 0,X ; to memory as addressed by bottom
|
|||
|
|
BNE L806 ; of stack.
|
|||
|
|
INC 1,X
|
|||
|
|
L806 LDA 3,X
|
|||
|
|
STA (0,X)
|
|||
|
|
JMP POPTWO
|
|||
|
|
;
|
|||
|
|
; C!
|
|||
|
|
; SCREEN 32 LINE 12
|
|||
|
|
;
|
|||
|
|
L813 .BYTE $82,"C",$A1
|
|||
|
|
.WORD L798 ; link to !
|
|||
|
|
CSTOR .WORD *+2
|
|||
|
|
LDA 2,X
|
|||
|
|
STA (0,X)
|
|||
|
|
JMP POPTWO
|
|||
|
|
;
|
|||
|
|
; :
|
|||
|
|
; SCREEN 33 LINE 2
|
|||
|
|
;
|
|||
|
|
L823 .BYTE $C1,$BA
|
|||
|
|
.WORD L813 ; link to C!
|
|||
|
|
COLON .WORD DOCOL
|
|||
|
|
.WORD QEXEC
|
|||
|
|
.WORD SCSP
|
|||
|
|
.WORD CURR
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD CON
|
|||
|
|
.WORD STORE
|
|||
|
|
.WORD CREAT
|
|||
|
|
.WORD RBRAC
|
|||
|
|
.WORD PSCOD
|
|||
|
|
;
|
|||
|
|
DOCOL LDA IP+1
|
|||
|
|
PHA
|
|||
|
|
LDA IP
|
|||
|
|
PHA
|
|||
|
|
CLC
|
|||
|
|
LDA W
|
|||
|
|
ADC #2
|
|||
|
|
STA IP
|
|||
|
|
TYA
|
|||
|
|
ADC W+1
|
|||
|
|
STA IP+1
|
|||
|
|
JMP NEXT
|
|||
|
|
;
|
|||
|
|
; ;
|
|||
|
|
; SCREEN 33 LINE 9
|
|||
|
|
;
|
|||
|
|
L853 .BYTE $C1,$BB
|
|||
|
|
.WORD L823 ; link to :
|
|||
|
|
.WORD DOCOL
|
|||
|
|
.WORD QCSP
|
|||
|
|
.WORD COMP
|
|||
|
|
.WORD SEMIS
|
|||
|
|
.WORD SMUDG
|
|||
|
|
.WORD LBRAC
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; CONSTANT
|
|||
|
|
; SCREEN 34 LINE 1
|
|||
|
|
;
|
|||
|
|
L867 .BYTE $88,"CONSTAN",$D4
|
|||
|
|
.WORD L853 ; link to ;
|
|||
|
|
CONST .WORD DOCOL
|
|||
|
|
.WORD CREAT
|
|||
|
|
.WORD SMUDG
|
|||
|
|
.WORD COMMA
|
|||
|
|
.WORD PSCOD
|
|||
|
|
;
|
|||
|
|
DOCON LDY #2
|
|||
|
|
LDA (W),Y
|
|||
|
|
PHA
|
|||
|
|
INY
|
|||
|
|
LDA (W),Y
|
|||
|
|
JMP PUSH
|
|||
|
|
;
|
|||
|
|
; VARIABLE
|
|||
|
|
; SCREEN 34 LINE 5
|
|||
|
|
;
|
|||
|
|
L885 .BYTE $88,"VARIABL",$C5
|
|||
|
|
.WORD L867 ; link to CONSTANT
|
|||
|
|
VAR .WORD DOCOL
|
|||
|
|
.WORD CONST
|
|||
|
|
.WORD PSCOD
|
|||
|
|
;
|
|||
|
|
DOVAR CLC
|
|||
|
|
LDA W
|
|||
|
|
ADC #2
|
|||
|
|
PHA
|
|||
|
|
TYA
|
|||
|
|
ADC W+1
|
|||
|
|
JMP PUSH
|
|||
|
|
;
|
|||
|
|
; USER
|
|||
|
|
; SCREEN 34 LINE 10
|
|||
|
|
;
|
|||
|
|
L902 .BYTE $84,"USE",$D2
|
|||
|
|
.WORD L885 ; link to VARIABLE
|
|||
|
|
USER .WORD DOCOL
|
|||
|
|
.WORD CONST
|
|||
|
|
.WORD PSCOD
|
|||
|
|
;
|
|||
|
|
DOUSE LDY #2
|
|||
|
|
CLC
|
|||
|
|
LDA (W),Y
|
|||
|
|
ADC UP
|
|||
|
|
PHA
|
|||
|
|
LDA #0
|
|||
|
|
ADC UP+1
|
|||
|
|
JMP PUSH
|
|||
|
|
;
|
|||
|
|
; 0
|
|||
|
|
; SCREEN 35 LINE 2
|
|||
|
|
;
|
|||
|
|
L920 .BYTE $81,$B0
|
|||
|
|
.WORD L902 ; link to USER
|
|||
|
|
ZERO .WORD DOCON
|
|||
|
|
.WORD 0
|
|||
|
|
;
|
|||
|
|
; 1
|
|||
|
|
; SCREEN 35 LINE 2
|
|||
|
|
;
|
|||
|
|
L928 .BYTE $81,$B1
|
|||
|
|
.WORD L920 ; link to 0
|
|||
|
|
ONE .WORD DOCON
|
|||
|
|
.WORD 1
|
|||
|
|
;
|
|||
|
|
; 2
|
|||
|
|
; SCREEN 35 LINE 3
|
|||
|
|
;
|
|||
|
|
L936 .BYTE $81,$B2
|
|||
|
|
.WORD L928 ; link to 1
|
|||
|
|
TWO .WORD DOCON
|
|||
|
|
.WORD 2
|
|||
|
|
;
|
|||
|
|
; 3
|
|||
|
|
; SCREEN 35 LINE 3
|
|||
|
|
;
|
|||
|
|
L944 .BYTE $81,$B3
|
|||
|
|
.WORD L936 ; link to 2
|
|||
|
|
THREE .WORD DOCON
|
|||
|
|
.WORD 3
|
|||
|
|
;
|
|||
|
|
; BL
|
|||
|
|
; SCREEN 35 LINE 4
|
|||
|
|
;
|
|||
|
|
L952 .BYTE $82,"B",$CC
|
|||
|
|
.WORD L944 ; link to 3
|
|||
|
|
BL .WORD DOCON
|
|||
|
|
.WORD $20
|
|||
|
|
;
|
|||
|
|
; C/L
|
|||
|
|
; SCREEN 35 LINE 5
|
|||
|
|
; Characters per line
|
|||
|
|
L960 .BYTE $83,"C/",$CC
|
|||
|
|
.WORD L952 ; link to BL
|
|||
|
|
CSLL .WORD DOCON
|
|||
|
|
.WORD 64
|
|||
|
|
;
|
|||
|
|
; FIRST
|
|||
|
|
; SCREEN 35 LINE 7
|
|||
|
|
;
|
|||
|
|
L968 .BYTE $85,"FIRS",$D4
|
|||
|
|
.WORD L960 ; link to C/L
|
|||
|
|
FIRST .WORD DOCON
|
|||
|
|
.WORD DAREA ; bottom of disk buffer area
|
|||
|
|
;
|
|||
|
|
; LIMIT
|
|||
|
|
; SCREEN 35 LINE 8
|
|||
|
|
;
|
|||
|
|
L976 .BYTE $85,"LIMI",$D4
|
|||
|
|
.WORD L968 ; link to FIRST
|
|||
|
|
LIMIT .WORD DOCON
|
|||
|
|
.WORD UAREA ; buffers end at user area
|
|||
|
|
;
|
|||
|
|
; B/BUF
|
|||
|
|
; SCREEN 35 LINE 9
|
|||
|
|
; Bytes per Buffer
|
|||
|
|
;
|
|||
|
|
L984 .BYTE $85,"B/BU",$C6
|
|||
|
|
.WORD L976 ; link to LIMIT
|
|||
|
|
BBUF .WORD DOCON
|
|||
|
|
.WORD SSIZE ; sector size
|
|||
|
|
;
|
|||
|
|
; B/SCR
|
|||
|
|
; SCREEN 35 LINE 10
|
|||
|
|
; Blocks per screen
|
|||
|
|
;
|
|||
|
|
L992 .BYTE $85,"B/SC",$D2
|
|||
|
|
.WORD L984 ; link to B/BUF
|
|||
|
|
BSCR .WORD DOCON
|
|||
|
|
.WORD 8 ; blocks to make one screen
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
;
|
|||
|
|
; +ORIGIN
|
|||
|
|
; SCREEN 35 LINE 12
|
|||
|
|
;
|
|||
|
|
L1000 .BYTE $87,"+ORIGI",$CE
|
|||
|
|
.WORD L992 ; link to B/SCR
|
|||
|
|
PORIG .WORD DOCOL
|
|||
|
|
.WORD LIT,ORIG
|
|||
|
|
.WORD PLUS
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; TIB
|
|||
|
|
; SCREEN 36 LINE 4
|
|||
|
|
;
|
|||
|
|
L1010 .BYTE $83,"TI",$C2
|
|||
|
|
.WORD L1000 ; link to +ORIGIN
|
|||
|
|
TIB .WORD DOUSE
|
|||
|
|
.BYTE $A
|
|||
|
|
;
|
|||
|
|
; WIDTH
|
|||
|
|
; SCREEN 36 LINE 5
|
|||
|
|
;
|
|||
|
|
L1018 .BYTE $85,"WIDT",$C8
|
|||
|
|
.WORD L1010 ; link to TIB
|
|||
|
|
WIDTH .WORD DOUSE
|
|||
|
|
.BYTE $C
|
|||
|
|
;
|
|||
|
|
; WARNING
|
|||
|
|
; SCREEN 36 LINE 6
|
|||
|
|
;
|
|||
|
|
L1026 .BYTE $87,"WARNIN",$C7
|
|||
|
|
.WORD L1018 ; link to WIDTH
|
|||
|
|
WARN .WORD DOUSE
|
|||
|
|
.BYTE $E
|
|||
|
|
;
|
|||
|
|
; FENCE
|
|||
|
|
; SCREEN 36 LINE 7
|
|||
|
|
;
|
|||
|
|
L1034 .BYTE $85,"FENC",$C5
|
|||
|
|
.WORD L1026 ; link to WARNING
|
|||
|
|
FENCE .WORD DOUSE
|
|||
|
|
.BYTE $10
|
|||
|
|
;
|
|||
|
|
;
|
|||
|
|
; DP
|
|||
|
|
; SCREEN 36 LINE 8
|
|||
|
|
;
|
|||
|
|
L1042 .BYTE $82,"D",$D0
|
|||
|
|
.WORD L1034 ; link to FENCE
|
|||
|
|
DP .WORD DOUSE
|
|||
|
|
.BYTE $12
|
|||
|
|
;
|
|||
|
|
; VOC-LINK
|
|||
|
|
; SCREEN 36 LINE 9
|
|||
|
|
;
|
|||
|
|
L1050 .BYTE $88,"VOC-LIN",$CB
|
|||
|
|
.WORD L1042 ; link to DP
|
|||
|
|
VOCL .WORD DOUSE
|
|||
|
|
.BYTE $14
|
|||
|
|
;
|
|||
|
|
; BLK
|
|||
|
|
; SCREEN 36 LINE 10
|
|||
|
|
;
|
|||
|
|
L1058 .BYTE $83,"BL",$CB
|
|||
|
|
.WORD L1050 ; link to VOC-LINK
|
|||
|
|
BLK .WORD DOUSE
|
|||
|
|
.BYTE $16
|
|||
|
|
;
|
|||
|
|
; IN
|
|||
|
|
; SCREEN 36 LINE 11
|
|||
|
|
;
|
|||
|
|
L1066 .BYTE $82,"I",$CE
|
|||
|
|
.WORD L1058 ; link to BLK
|
|||
|
|
IN .WORD DOUSE
|
|||
|
|
.BYTE $18
|
|||
|
|
;
|
|||
|
|
; OUT
|
|||
|
|
; SCREEN 36 LINE 12
|
|||
|
|
;
|
|||
|
|
L1074 .BYTE $83,"OU",$D4
|
|||
|
|
.WORD L1066 ; link to IN
|
|||
|
|
OUT .WORD DOUSE
|
|||
|
|
.BYTE $1A
|
|||
|
|
;
|
|||
|
|
; SCR
|
|||
|
|
; SCREEN 36 LINE 13
|
|||
|
|
;
|
|||
|
|
L1082 .BYTE $83,"SC",$D2
|
|||
|
|
.WORD L1074 ; link to OUT
|
|||
|
|
SCR .WORD DOUSE
|
|||
|
|
.BYTE $1C
|
|||
|
|
;
|
|||
|
|
; OFFSET
|
|||
|
|
; SCREEN 37 LINE 1
|
|||
|
|
;
|
|||
|
|
L1090 .BYTE $86,"OFFSE",$D4
|
|||
|
|
.WORD L1082 ; link to SCR
|
|||
|
|
OFSET .WORD DOUSE
|
|||
|
|
.BYTE $1E
|
|||
|
|
;
|
|||
|
|
; CONTEXT
|
|||
|
|
; SCREEN 37 LINE 2
|
|||
|
|
;
|
|||
|
|
L1098 .BYTE $87,"CONTEX",$D4
|
|||
|
|
.WORD L1090 ; link to OFFSET
|
|||
|
|
CON .WORD DOUSE
|
|||
|
|
.BYTE $20
|
|||
|
|
;
|
|||
|
|
; CURRENT
|
|||
|
|
; SCREEN 37 LINE 3
|
|||
|
|
;
|
|||
|
|
L1106 .BYTE $87,"CURREN",$D4
|
|||
|
|
.WORD L1098 ; link to CONTEXT
|
|||
|
|
CURR .WORD DOUSE
|
|||
|
|
.BYTE $22
|
|||
|
|
;
|
|||
|
|
; STATE
|
|||
|
|
; SCREEN 37 LINE 4
|
|||
|
|
;
|
|||
|
|
L1114 .BYTE $85,"STAT",$C5
|
|||
|
|
.WORD L1106 ; link to CURRENT
|
|||
|
|
STATE .WORD DOUSE
|
|||
|
|
.BYTE $24
|
|||
|
|
;
|
|||
|
|
; BASE
|
|||
|
|
; SCREEN 37 LINE 5
|
|||
|
|
;
|
|||
|
|
L1122 .BYTE $84,"BAS",$C5
|
|||
|
|
.WORD L1114 ; link to STATE
|
|||
|
|
BASE .WORD DOUSE
|
|||
|
|
.BYTE $26
|
|||
|
|
;
|
|||
|
|
; DPL
|
|||
|
|
; SCREEN 37 LINE 6
|
|||
|
|
;
|
|||
|
|
L1130 .BYTE $83,"DP",$CC
|
|||
|
|
.WORD L1122 ; link to BASE
|
|||
|
|
DPL .WORD DOUSE
|
|||
|
|
.BYTE $28
|
|||
|
|
;
|
|||
|
|
; FLD
|
|||
|
|
; SCREEN 37 LINE 7
|
|||
|
|
;
|
|||
|
|
L1138 .BYTE $83,"FL",$C4
|
|||
|
|
.WORD L1130 ; link to DPL
|
|||
|
|
FLD .WORD DOUSE
|
|||
|
|
.BYTE $2A
|
|||
|
|
;
|
|||
|
|
;
|
|||
|
|
;
|
|||
|
|
; CSP
|
|||
|
|
; SCREEN 37 LINE 8
|
|||
|
|
;
|
|||
|
|
L1146 .BYTE $83,"CS",$D0
|
|||
|
|
.WORD L1138 ; link to FLD
|
|||
|
|
CSP .WORD DOUSE
|
|||
|
|
.BYTE $2C
|
|||
|
|
;
|
|||
|
|
; R#
|
|||
|
|
; SCREEN 37 LINE 9
|
|||
|
|
;
|
|||
|
|
L1154 .BYTE $82,"R",$A3
|
|||
|
|
.WORD L1146 ; link to CSP
|
|||
|
|
RNUM .WORD DOUSE
|
|||
|
|
.BYTE $2E
|
|||
|
|
;
|
|||
|
|
; HLD
|
|||
|
|
; SCREEN 37 LINE 10
|
|||
|
|
;
|
|||
|
|
L1162 .BYTE $83,"HL",$C4
|
|||
|
|
.WORD L1154 ; link to R#
|
|||
|
|
HLD .WORD DOUSE
|
|||
|
|
.BYTE $30
|
|||
|
|
;
|
|||
|
|
; 1+
|
|||
|
|
; SCREEN 38 LINE 1
|
|||
|
|
;
|
|||
|
|
L1170 .BYTE $82,"1",$AB
|
|||
|
|
.WORD L1162 ; link to HLD
|
|||
|
|
ONEP .WORD DOCOL
|
|||
|
|
.WORD ONE
|
|||
|
|
.WORD PLUS
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; 2+
|
|||
|
|
; SCREEN 38 LINE 2
|
|||
|
|
;
|
|||
|
|
L1180 .BYTE $82,"2",$AB
|
|||
|
|
.WORD L1170 ; link to 1+
|
|||
|
|
TWOP .WORD DOCOL
|
|||
|
|
.WORD TWO
|
|||
|
|
.WORD PLUS
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; HERE
|
|||
|
|
; SCREEN 38 LINE 3
|
|||
|
|
;
|
|||
|
|
L1190 .BYTE $84,"HER",$C5
|
|||
|
|
.WORD L1180 ; link to 2+
|
|||
|
|
HERE .WORD DOCOL
|
|||
|
|
.WORD DP
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; ALLOT
|
|||
|
|
; SCREEN 38 LINE 4
|
|||
|
|
;
|
|||
|
|
L1200 .BYTE $85,"ALLO",$D4
|
|||
|
|
.WORD L1190 ; link to HERE
|
|||
|
|
ALLOT .WORD DOCOL
|
|||
|
|
.WORD DP
|
|||
|
|
.WORD PSTOR
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; ,
|
|||
|
|
; SCREEN 38 LINE 5
|
|||
|
|
;
|
|||
|
|
L1210 .BYTE $81,$AC
|
|||
|
|
.WORD L1200 ; link to ALLOT
|
|||
|
|
COMMA .WORD DOCOL
|
|||
|
|
.WORD HERE
|
|||
|
|
.WORD STORE
|
|||
|
|
.WORD TWO
|
|||
|
|
.WORD ALLOT
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; C,
|
|||
|
|
; SCREEN 38 LINE 6
|
|||
|
|
;
|
|||
|
|
L1222 .BYTE $82,"C",$AC
|
|||
|
|
.WORD L1210 ; link to ,
|
|||
|
|
CCOMM .WORD DOCOL
|
|||
|
|
.WORD HERE
|
|||
|
|
.WORD CSTOR
|
|||
|
|
.WORD ONE
|
|||
|
|
.WORD ALLOT
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; -
|
|||
|
|
; SCREEN 38 LINE 7
|
|||
|
|
;
|
|||
|
|
L1234 .BYTE $81,$AD
|
|||
|
|
.WORD L1222 ; link to C,
|
|||
|
|
SUB .WORD DOCOL
|
|||
|
|
.WORD MINUS
|
|||
|
|
.WORD PLUS
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; =
|
|||
|
|
; SCREEN 38 LINE 8
|
|||
|
|
;
|
|||
|
|
L1244 .BYTE $81,$BD
|
|||
|
|
.WORD L1234 ; link to -
|
|||
|
|
EQUAL .WORD DOCOL
|
|||
|
|
.WORD SUB
|
|||
|
|
.WORD ZEQU
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; U<
|
|||
|
|
; Unsigned less than
|
|||
|
|
;
|
|||
|
|
L1246 .BYTE $82,"U",$BC
|
|||
|
|
.WORD L1244 ; link to =
|
|||
|
|
ULESS .WORD DOCOL
|
|||
|
|
.WORD SUB ; subtract two values
|
|||
|
|
.WORD ZLESS ; test sign
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; <
|
|||
|
|
; Altered from model
|
|||
|
|
; SCREEN 38 LINE 9
|
|||
|
|
;
|
|||
|
|
L1254 .BYTE $81,$BC
|
|||
|
|
.WORD L1246 ; link to U<
|
|||
|
|
LESS .WORD *+2
|
|||
|
|
SEC
|
|||
|
|
LDA 2,X
|
|||
|
|
SBC 0,X ; subtract
|
|||
|
|
LDA 3,X
|
|||
|
|
SBC 1,X
|
|||
|
|
STY 3,X ; zero high byte
|
|||
|
|
BVC L1258
|
|||
|
|
EOR #$80 ; correct overflow
|
|||
|
|
L1258 BPL L1260
|
|||
|
|
INY ; invert boolean
|
|||
|
|
L1260 STY 2,X ; leave boolean
|
|||
|
|
JMP POP
|
|||
|
|
;
|
|||
|
|
; >
|
|||
|
|
; SCREEN 38 LINE 10
|
|||
|
|
L1264 .BYTE $81,$BE
|
|||
|
|
.WORD L1254 ; link to <
|
|||
|
|
GREAT .WORD DOCOL
|
|||
|
|
.WORD SWAP
|
|||
|
|
.WORD LESS
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; ROT
|
|||
|
|
; SCREEN 38 LINE 11
|
|||
|
|
;
|
|||
|
|
L1274 .BYTE $83,"RO",$D4
|
|||
|
|
.WORD L1264 ; link to >
|
|||
|
|
ROT .WORD DOCOL
|
|||
|
|
.WORD TOR
|
|||
|
|
.WORD SWAP
|
|||
|
|
.WORD RFROM
|
|||
|
|
.WORD SWAP
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; SPACE
|
|||
|
|
; SCREEN 38 LINE 12
|
|||
|
|
;
|
|||
|
|
L1286 .BYTE $85,"SPAC",$C5
|
|||
|
|
.WORD L1274 ; link to ROT
|
|||
|
|
SPACE .WORD DOCOL
|
|||
|
|
.WORD BL
|
|||
|
|
.WORD EMIT
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; -DUP
|
|||
|
|
; SCREEN 38 LINE 13
|
|||
|
|
;
|
|||
|
|
L1296 .BYTE $84,"-DU",$D0
|
|||
|
|
.WORD L1286 ; link to SPACE
|
|||
|
|
DDUP .WORD DOCOL
|
|||
|
|
.WORD DUP
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L1301 .WORD $4 ; L1303-L1301
|
|||
|
|
.WORD DUP
|
|||
|
|
L1303 .WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; TRAVERSE
|
|||
|
|
; SCREEN 39 LINE 14
|
|||
|
|
;
|
|||
|
|
L1308 .BYTE $88,"TRAVERS",$C5
|
|||
|
|
.WORD L1296 ; link to -DUP
|
|||
|
|
TRAV .WORD DOCOL
|
|||
|
|
.WORD SWAP
|
|||
|
|
L1312 .WORD OVER
|
|||
|
|
.WORD PLUS
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE $7F
|
|||
|
|
.WORD OVER
|
|||
|
|
.WORD CAT
|
|||
|
|
.WORD LESS
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L1320 .WORD $FFF1 ; L1312-L1320
|
|||
|
|
.WORD SWAP
|
|||
|
|
.WORD DROP
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; LATEST
|
|||
|
|
; SCREEN 39 LINE 6
|
|||
|
|
;
|
|||
|
|
L1328 .BYTE $86,"LATES",$D4
|
|||
|
|
.WORD L1308 ; link to TRAVERSE
|
|||
|
|
LATES .WORD DOCOL
|
|||
|
|
.WORD CURR
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
;
|
|||
|
|
; LFA
|
|||
|
|
; SCREEN 39 LINE 11
|
|||
|
|
;
|
|||
|
|
L1339 .BYTE $83,"LF",$C1
|
|||
|
|
.WORD L1328 ; link to LATEST
|
|||
|
|
LFA .WORD DOCOL
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE 4
|
|||
|
|
.WORD SUB
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; CFA
|
|||
|
|
; SCREEN 39 LINE 12
|
|||
|
|
;
|
|||
|
|
L1350 .BYTE $83,"CF",$C1
|
|||
|
|
.WORD L1339 ; link to LFA
|
|||
|
|
CFA .WORD DOCOL
|
|||
|
|
.WORD TWO
|
|||
|
|
.WORD SUB
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; NFA
|
|||
|
|
; SCREEN 39 LIINE 13
|
|||
|
|
;
|
|||
|
|
L1360 .BYTE $83,"NF",$C1
|
|||
|
|
.WORD L1350 ; link to CFA
|
|||
|
|
NFA .WORD DOCOL
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE $5
|
|||
|
|
.WORD SUB
|
|||
|
|
.WORD LIT,$FFFF
|
|||
|
|
.WORD TRAV
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; PFA
|
|||
|
|
; SCREEN 39 LINE 14
|
|||
|
|
;
|
|||
|
|
L1373 .BYTE $83,"PF",$C1
|
|||
|
|
.WORD L1360 ; link to NFA
|
|||
|
|
PFA .WORD DOCOL
|
|||
|
|
.WORD ONE
|
|||
|
|
.WORD TRAV
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE 5
|
|||
|
|
.WORD PLUS
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; !CSP
|
|||
|
|
; SCREEN 40 LINE 1
|
|||
|
|
;
|
|||
|
|
L1386 .BYTE $84,"!CS",$D0
|
|||
|
|
.WORD L1373 ; link to PFA
|
|||
|
|
SCSP .WORD DOCOL
|
|||
|
|
.WORD SPAT
|
|||
|
|
.WORD CSP
|
|||
|
|
.WORD STORE
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; ?ERROR
|
|||
|
|
; SCREEN 40 LINE 3
|
|||
|
|
;
|
|||
|
|
L1397 .BYTE $86,"?ERRO",$D2
|
|||
|
|
.WORD L1386 ; link to !CSP
|
|||
|
|
QERR .WORD DOCOL
|
|||
|
|
.WORD SWAP
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L1402 .WORD 8 ; L1406-L1402
|
|||
|
|
.WORD ERROR
|
|||
|
|
.WORD BRAN
|
|||
|
|
L1405 .WORD 4 ; L1407-L1405
|
|||
|
|
L1406 .WORD DROP
|
|||
|
|
L1407 .WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; ?COMP
|
|||
|
|
; SCREEN 40 LINE 6
|
|||
|
|
;
|
|||
|
|
L1412 .BYTE $85,"?COM",$D0
|
|||
|
|
.WORD L1397 ; link to ?ERROR
|
|||
|
|
QCOMP .WORD DOCOL
|
|||
|
|
.WORD STATE
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD ZEQU
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE $11
|
|||
|
|
.WORD QERR
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; ?EXEC
|
|||
|
|
; SCREEN 40 LINE 8
|
|||
|
|
;
|
|||
|
|
L1426 .BYTE $85,"?EXE",$C3
|
|||
|
|
.WORD L1412 ; link to ?COMP
|
|||
|
|
QEXEC .WORD DOCOL
|
|||
|
|
.WORD STATE
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE $12
|
|||
|
|
.WORD QERR
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; ?PAIRS
|
|||
|
|
; SCREEN 40 LINE 10
|
|||
|
|
;
|
|||
|
|
L1439 .BYTE $86,"?PAIR",$D3
|
|||
|
|
.WORD L1426 ; link to ?EXEC
|
|||
|
|
QPAIR .WORD DOCOL
|
|||
|
|
.WORD SUB
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE $13
|
|||
|
|
.WORD QERR
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; ?CSP
|
|||
|
|
; SCREEN 40 LINE 12
|
|||
|
|
;
|
|||
|
|
L1451 .BYTE $84,"?CS",$D0
|
|||
|
|
.WORD L1439 ; link to ?PAIRS
|
|||
|
|
QCSP .WORD DOCOL
|
|||
|
|
.WORD SPAT
|
|||
|
|
.WORD CSP
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD SUB
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE $14
|
|||
|
|
.WORD QERR
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; ?LOADING
|
|||
|
|
; SCREEN 40 LINE 14
|
|||
|
|
;
|
|||
|
|
L1466 .BYTE $88,"?LOADIN",$C7
|
|||
|
|
.WORD L1451 ; link to ?CSP
|
|||
|
|
QLOAD .WORD DOCOL
|
|||
|
|
.WORD BLK
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD ZEQU
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE $16
|
|||
|
|
.WORD QERR
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; COMPILE
|
|||
|
|
; SCREEN 41 LINE 2
|
|||
|
|
;
|
|||
|
|
L1480 .BYTE $87,"COMPIL",$C5
|
|||
|
|
.WORD L1466 ; link to ?LOADING
|
|||
|
|
COMP .WORD DOCOL
|
|||
|
|
.WORD QCOMP
|
|||
|
|
.WORD RFROM
|
|||
|
|
.WORD DUP
|
|||
|
|
.WORD TWOP
|
|||
|
|
.WORD TOR
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD COMMA
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; [
|
|||
|
|
; SCREEN 41 LINE 5
|
|||
|
|
;
|
|||
|
|
L1495 .BYTE $C1,$DB
|
|||
|
|
.WORD L1480 ; link to COMPILE
|
|||
|
|
LBRAC .WORD DOCOL
|
|||
|
|
.WORD ZERO
|
|||
|
|
.WORD STATE
|
|||
|
|
.WORD STORE
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; ]
|
|||
|
|
; SCREEN 41 LINE 7
|
|||
|
|
;
|
|||
|
|
L1507 .BYTE $81,$DD
|
|||
|
|
.WORD L1495 ; link to [
|
|||
|
|
RBRAC .WORD DOCOL
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE $C0
|
|||
|
|
.WORD STATE
|
|||
|
|
.WORD STORE
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; SMUDGE
|
|||
|
|
; SCREEN 41 LINE 9
|
|||
|
|
;
|
|||
|
|
L1519 .BYTE $86,"SMUDG",$C5
|
|||
|
|
.WORD L1507 ; link to ]
|
|||
|
|
SMUDG .WORD DOCOL
|
|||
|
|
.WORD LATES
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE $20
|
|||
|
|
.WORD TOGGL
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; HEX
|
|||
|
|
; SCREEN 41 LINE 11
|
|||
|
|
;
|
|||
|
|
L1531 .BYTE $83,"HE",$D8
|
|||
|
|
.WORD L1519 ; link to SMUDGE
|
|||
|
|
HEX .WORD DOCOL
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE 16
|
|||
|
|
.WORD BASE
|
|||
|
|
.WORD STORE
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; DECIMAL
|
|||
|
|
; SCREEN 41 LINE 13
|
|||
|
|
;
|
|||
|
|
L1543 .BYTE $87,"DECIMA",$CC
|
|||
|
|
.WORD L1531 ; link to HEX
|
|||
|
|
DECIM .WORD DOCOL
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE 10
|
|||
|
|
.WORD BASE
|
|||
|
|
.WORD STORE
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
;
|
|||
|
|
;
|
|||
|
|
; (;CODE)
|
|||
|
|
; SCREEN 42 LINE 2
|
|||
|
|
;
|
|||
|
|
L1555 .BYTE $87,"(;CODE",$A9
|
|||
|
|
.WORD L1543 ; link to DECIMAL
|
|||
|
|
PSCOD .WORD DOCOL
|
|||
|
|
.WORD RFROM
|
|||
|
|
.WORD LATES
|
|||
|
|
.WORD PFA
|
|||
|
|
.WORD CFA
|
|||
|
|
.WORD STORE
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; ;CODE
|
|||
|
|
; SCREEN 42 LINE 6
|
|||
|
|
;
|
|||
|
|
L1568 .BYTE $C5,";COD",$C5
|
|||
|
|
.WORD L1555 ; link to (;CODE)
|
|||
|
|
.WORD DOCOL
|
|||
|
|
.WORD QCSP
|
|||
|
|
.WORD COMP
|
|||
|
|
.WORD PSCOD
|
|||
|
|
.WORD LBRAC
|
|||
|
|
.WORD SMUDG
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; <BUILDS
|
|||
|
|
; SCREEN 43 LINE 2
|
|||
|
|
;
|
|||
|
|
L1582 .BYTE $87,"<BUILD",$D3
|
|||
|
|
.WORD L1568 ; link to ;CODE
|
|||
|
|
BUILD .WORD DOCOL
|
|||
|
|
.WORD ZERO
|
|||
|
|
.WORD CONST
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; DOES>
|
|||
|
|
; SCREEN 43 LINE 4
|
|||
|
|
;
|
|||
|
|
L1592 .BYTE $85,"DOES",$BE
|
|||
|
|
.WORD L1582 ; link to <BUILDS
|
|||
|
|
DOES .WORD DOCOL
|
|||
|
|
.WORD RFROM
|
|||
|
|
.WORD LATES
|
|||
|
|
.WORD PFA
|
|||
|
|
.WORD STORE
|
|||
|
|
.WORD PSCOD
|
|||
|
|
;
|
|||
|
|
DODOE LDA IP+1
|
|||
|
|
PHA
|
|||
|
|
LDA IP
|
|||
|
|
PHA
|
|||
|
|
LDY #2
|
|||
|
|
LDA (W),Y
|
|||
|
|
STA IP
|
|||
|
|
INY
|
|||
|
|
LDA (W),Y
|
|||
|
|
STA IP+1
|
|||
|
|
CLC
|
|||
|
|
LDA W
|
|||
|
|
ADC #4
|
|||
|
|
PHA
|
|||
|
|
LDA W+1
|
|||
|
|
ADC #0
|
|||
|
|
JMP PUSH
|
|||
|
|
;
|
|||
|
|
; COUNT
|
|||
|
|
; SCREEN 44 LINE 1
|
|||
|
|
;
|
|||
|
|
L1622 .BYTE $85,"COUN",$D4
|
|||
|
|
.WORD L1592 ; link to DOES>
|
|||
|
|
COUNT .WORD DOCOL
|
|||
|
|
.WORD DUP
|
|||
|
|
.WORD ONEP
|
|||
|
|
.WORD SWAP
|
|||
|
|
.WORD CAT
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; TYPE
|
|||
|
|
; SCREEN 44 LINE 2
|
|||
|
|
;
|
|||
|
|
L1634 .BYTE $84,"TYP",$C5
|
|||
|
|
.WORD L1622 ; link to COUNT
|
|||
|
|
TYPE .WORD DOCOL
|
|||
|
|
.WORD DDUP
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L1639 .WORD $18 ; L1651-L1639
|
|||
|
|
.WORD OVER
|
|||
|
|
.WORD PLUS
|
|||
|
|
.WORD SWAP
|
|||
|
|
.WORD PDO
|
|||
|
|
L1644 .WORD I
|
|||
|
|
.WORD CAT
|
|||
|
|
.WORD EMIT
|
|||
|
|
.WORD PLOOP
|
|||
|
|
L1648 .WORD $FFF8 ; L1644-L1648
|
|||
|
|
.WORD BRAN
|
|||
|
|
L1650 .WORD $4 ; L1652-L1650
|
|||
|
|
L1651 .WORD DROP
|
|||
|
|
L1652 .WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; -TRAILING
|
|||
|
|
; SCREEN 44 LINE 5
|
|||
|
|
;
|
|||
|
|
L1657 .BYTE $89,"-TRAILIN",$C7
|
|||
|
|
.WORD L1634 ; link to TYPE
|
|||
|
|
DTRAI .WORD DOCOL
|
|||
|
|
.WORD DUP
|
|||
|
|
.WORD ZERO
|
|||
|
|
.WORD PDO
|
|||
|
|
L1663 .WORD OVER
|
|||
|
|
.WORD OVER
|
|||
|
|
.WORD PLUS
|
|||
|
|
.WORD ONE
|
|||
|
|
.WORD SUB
|
|||
|
|
.WORD CAT
|
|||
|
|
.WORD BL
|
|||
|
|
.WORD SUB
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L1672 .WORD 8 ; L1676-L1672
|
|||
|
|
.WORD LEAVE
|
|||
|
|
.WORD BRAN
|
|||
|
|
L1675 .WORD 6 ; L1678-L1675
|
|||
|
|
L1676 .WORD ONE
|
|||
|
|
.WORD SUB
|
|||
|
|
L1678 .WORD PLOOP
|
|||
|
|
L1679 .WORD $FFE0 ; L1663-L1679
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; (.")
|
|||
|
|
; SCREEN 44 LINE 8
|
|||
|
|
L1685 .BYTE $84,"(.",$22,$A9 ; $84 (." $A9
|
|||
|
|
.WORD L1657 ; link to -TRAILING
|
|||
|
|
PDOTQ .WORD DOCOL
|
|||
|
|
.WORD R
|
|||
|
|
.WORD COUNT
|
|||
|
|
.WORD DUP
|
|||
|
|
.WORD ONEP
|
|||
|
|
.WORD RFROM
|
|||
|
|
.WORD PLUS
|
|||
|
|
.WORD TOR
|
|||
|
|
.WORD TYPE
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; ."
|
|||
|
|
; SCREEN 44 LINE12
|
|||
|
|
;
|
|||
|
|
L1701 .BYTE $C2,".",$A2
|
|||
|
|
.WORD L1685 ; link to PDOTQ
|
|||
|
|
.WORD DOCOL
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE $22
|
|||
|
|
.WORD STATE
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L1709 .WORD $14 ;L1719-L1709
|
|||
|
|
.WORD COMP
|
|||
|
|
.WORD PDOTQ
|
|||
|
|
.WORD WORD
|
|||
|
|
.WORD HERE
|
|||
|
|
.WORD CAT
|
|||
|
|
.WORD ONEP
|
|||
|
|
.WORD ALLOT
|
|||
|
|
.WORD BRAN
|
|||
|
|
L1718 .WORD $A ;L1723-L1718
|
|||
|
|
L1719 .WORD WORD
|
|||
|
|
.WORD HERE
|
|||
|
|
.WORD COUNT
|
|||
|
|
.WORD TYPE
|
|||
|
|
L1723 .WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; EXPECT
|
|||
|
|
; SCREEN 45 LINE 2
|
|||
|
|
;
|
|||
|
|
L1729 .BYTE $86,"EXPEC",$D4
|
|||
|
|
.WORD L1701 ; link to ."
|
|||
|
|
EXPEC .WORD DOCOL
|
|||
|
|
.WORD OVER
|
|||
|
|
.WORD PLUS
|
|||
|
|
.WORD OVER
|
|||
|
|
.WORD PDO
|
|||
|
|
L1736 .WORD KEY
|
|||
|
|
.WORD DUP
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE $E
|
|||
|
|
.WORD PORIG
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD EQUAL
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L1744 .WORD $1F ; L1760-L1744
|
|||
|
|
.WORD DROP
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE 08
|
|||
|
|
.WORD OVER
|
|||
|
|
.WORD I
|
|||
|
|
.WORD EQUAL
|
|||
|
|
.WORD DUP
|
|||
|
|
.WORD RFROM
|
|||
|
|
.WORD TWO
|
|||
|
|
.WORD SUB
|
|||
|
|
.WORD PLUS
|
|||
|
|
.WORD TOR
|
|||
|
|
.WORD SUB
|
|||
|
|
.WORD BRAN
|
|||
|
|
L1759 .WORD $27 ; L1779-L1759
|
|||
|
|
L1760 .WORD DUP
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE $0D
|
|||
|
|
.WORD EQUAL
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L1765 .WORD $0E ; L1772-L1765
|
|||
|
|
.WORD LEAVE
|
|||
|
|
.WORD DROP
|
|||
|
|
.WORD BL
|
|||
|
|
.WORD ZERO
|
|||
|
|
.WORD BRAN
|
|||
|
|
L1771 .WORD 04 ; L1773-L1771
|
|||
|
|
L1772 .WORD DUP
|
|||
|
|
L1773 .WORD I
|
|||
|
|
.WORD CSTOR
|
|||
|
|
.WORD ZERO
|
|||
|
|
.WORD I
|
|||
|
|
.WORD ONEP
|
|||
|
|
.WORD STORE
|
|||
|
|
L1779 .WORD EMIT
|
|||
|
|
.WORD PLOOP
|
|||
|
|
L1781 .WORD $FFA9
|
|||
|
|
.WORD DROP ; L1736-L1781
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; QUERY
|
|||
|
|
; SCREEN 45 LINE 9
|
|||
|
|
;
|
|||
|
|
L1788 .BYTE $85,"QUER",$D9
|
|||
|
|
.WORD L1729 ; link to EXPECT
|
|||
|
|
QUERY .WORD DOCOL
|
|||
|
|
.WORD TIB
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE 80 ; 80 characters from terminal
|
|||
|
|
.WORD EXPEC
|
|||
|
|
.WORD ZERO
|
|||
|
|
.WORD IN
|
|||
|
|
.WORD STORE
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; X
|
|||
|
|
; SCREEN 45 LINE 11
|
|||
|
|
; Actually Ascii Null
|
|||
|
|
;
|
|||
|
|
L1804 .BYTE $C1,$80
|
|||
|
|
.WORD L1788 ; link to QUERY
|
|||
|
|
.WORD DOCOL
|
|||
|
|
.WORD BLK
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L1810 .WORD $2A ; L1830-l1810
|
|||
|
|
.WORD ONE
|
|||
|
|
.WORD BLK
|
|||
|
|
.WORD PSTOR
|
|||
|
|
.WORD ZERO
|
|||
|
|
.WORD IN
|
|||
|
|
.WORD STORE
|
|||
|
|
.WORD BLK
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD ZERO,BSCR
|
|||
|
|
.WORD USLAS
|
|||
|
|
.WORD DROP ; fixed from model
|
|||
|
|
.WORD ZEQU
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L1824 .WORD 8 ; L1828-L1824
|
|||
|
|
.WORD QEXEC
|
|||
|
|
.WORD RFROM
|
|||
|
|
.WORD DROP
|
|||
|
|
L1828 .WORD BRAN
|
|||
|
|
L1829 .WORD 6 ; L1832-L1829
|
|||
|
|
L1830 .WORD RFROM
|
|||
|
|
.WORD DROP
|
|||
|
|
L1832 .WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; FILL
|
|||
|
|
; SCREEN 46 LINE 1
|
|||
|
|
;
|
|||
|
|
;
|
|||
|
|
L1838 .BYTE $84,"FIL",$CC
|
|||
|
|
.WORD L1804 ; link to X
|
|||
|
|
FILL .WORD DOCOL
|
|||
|
|
.WORD SWAP
|
|||
|
|
.WORD TOR
|
|||
|
|
.WORD OVER
|
|||
|
|
.WORD CSTOR
|
|||
|
|
.WORD DUP
|
|||
|
|
.WORD ONEP
|
|||
|
|
.WORD RFROM
|
|||
|
|
.WORD ONE
|
|||
|
|
.WORD SUB
|
|||
|
|
.WORD CMOVE
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; ERASE
|
|||
|
|
; SCREEN 46 LINE 4
|
|||
|
|
;
|
|||
|
|
L1856 .BYTE $85,"ERAS",$C5
|
|||
|
|
.WORD L1838 ; link to FILL
|
|||
|
|
ERASE .WORD DOCOL
|
|||
|
|
.WORD ZERO
|
|||
|
|
.WORD FILL
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; BLANKS
|
|||
|
|
; SCREEN 46 LINE 7
|
|||
|
|
;
|
|||
|
|
L1866 .BYTE $86,"BLANK",$D3
|
|||
|
|
.WORD L1856 ; link to ERASE
|
|||
|
|
BLANK .WORD DOCOL
|
|||
|
|
.WORD BL
|
|||
|
|
.WORD FILL
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; HOLD
|
|||
|
|
; SCREEN 46 LINE 10
|
|||
|
|
;
|
|||
|
|
L1876 .BYTE $84,"HOL",$C4
|
|||
|
|
.WORD L1866 ; link to BLANKS
|
|||
|
|
HOLD .WORD DOCOL
|
|||
|
|
.WORD LIT,$FFFF
|
|||
|
|
.WORD HLD
|
|||
|
|
.WORD PSTOR
|
|||
|
|
.WORD HLD
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD CSTOR
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; PAD
|
|||
|
|
; SCREEN 46 LINE 13
|
|||
|
|
;
|
|||
|
|
L1890 .BYTE $83,"PA",$C4
|
|||
|
|
.WORD L1876 ; link to HOLD
|
|||
|
|
PAD .WORD DOCOL
|
|||
|
|
.WORD HERE
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE 68 ; PAD is 68 bytes above here.
|
|||
|
|
.WORD PLUS
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; WORD
|
|||
|
|
; SCREEN 47 LINE 1
|
|||
|
|
;
|
|||
|
|
L1902 .BYTE $84,"WOR",$C4
|
|||
|
|
.WORD L1890 ; link to PAD
|
|||
|
|
WORD .WORD DOCOL
|
|||
|
|
.WORD BLK
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L1908 .WORD $C ; L1914-L1908
|
|||
|
|
.WORD BLK
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD BLOCK
|
|||
|
|
.WORD BRAN
|
|||
|
|
L1913 .WORD $6 ; L1916-L1913
|
|||
|
|
L1914 .WORD TIB
|
|||
|
|
.WORD AT
|
|||
|
|
L1916 .WORD IN
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD PLUS
|
|||
|
|
.WORD SWAP
|
|||
|
|
.WORD ENCL
|
|||
|
|
.WORD HERE
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE $22
|
|||
|
|
.WORD BLANK
|
|||
|
|
.WORD IN
|
|||
|
|
.WORD PSTOR
|
|||
|
|
.WORD OVER
|
|||
|
|
.WORD SUB
|
|||
|
|
.WORD TOR
|
|||
|
|
.WORD R
|
|||
|
|
.WORD HERE
|
|||
|
|
.WORD CSTOR
|
|||
|
|
.WORD PLUS
|
|||
|
|
.WORD HERE
|
|||
|
|
.WORD ONEP
|
|||
|
|
.WORD RFROM
|
|||
|
|
.WORD CMOVE
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; UPPER
|
|||
|
|
; SCREEN 47 LINE 12
|
|||
|
|
;
|
|||
|
|
L1943 .BYTE $85,"UPPE",$D2
|
|||
|
|
.WORD L1902 ; link to WORD
|
|||
|
|
UPPER .WORD DOCOL
|
|||
|
|
.WORD OVER ; This routine converts text to U case
|
|||
|
|
.WORD PLUS ; It allows interpretation from a term.
|
|||
|
|
.WORD SWAP ; without a shift-lock.
|
|||
|
|
.WORD PDO
|
|||
|
|
L1950 .WORD I
|
|||
|
|
.WORD CAT
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE $5F
|
|||
|
|
.WORD GREAT
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L1956 .WORD 09 ; L1961-L1956
|
|||
|
|
.WORD I
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE $20
|
|||
|
|
.WORD TOGGL
|
|||
|
|
L1961 .WORD PLOOP
|
|||
|
|
L1962 .WORD $FFEA ; L1950-L1962
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; (NUMBER)
|
|||
|
|
; SCREEN 48 LINE 1
|
|||
|
|
;
|
|||
|
|
L1968 .BYTE $88,"(NUMBER",$A9
|
|||
|
|
.WORD L1943 ; link to UPPER
|
|||
|
|
PNUMB .WORD DOCOL
|
|||
|
|
L1971 .WORD ONEP
|
|||
|
|
.WORD DUP
|
|||
|
|
.WORD TOR
|
|||
|
|
.WORD CAT
|
|||
|
|
.WORD BASE
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD DIGIT
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L1979 .WORD $2C ; L2001-L1979
|
|||
|
|
.WORD SWAP
|
|||
|
|
.WORD BASE
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD USTAR
|
|||
|
|
.WORD DROP
|
|||
|
|
.WORD ROT
|
|||
|
|
.WORD BASE
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD USTAR
|
|||
|
|
.WORD DPLUS
|
|||
|
|
.WORD DPL
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD ONEP
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L1994 .WORD 8 ; L1998-L1994
|
|||
|
|
.WORD ONE
|
|||
|
|
.WORD DPL
|
|||
|
|
.WORD PSTOR
|
|||
|
|
L1998 .WORD RFROM
|
|||
|
|
.WORD BRAN
|
|||
|
|
L2000 .WORD $FFC6 ; L1971-L2000
|
|||
|
|
L2001 .WORD RFROM
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; NUMBER
|
|||
|
|
; SCREEN 48 LINE 6
|
|||
|
|
;
|
|||
|
|
L2007 .BYTE $86,"NUMBE",$D2
|
|||
|
|
.WORD L1968 ; link to (NUMBER)
|
|||
|
|
NUMBER .WORD DOCOL
|
|||
|
|
.WORD ZERO
|
|||
|
|
.WORD ZERO
|
|||
|
|
.WORD ROT
|
|||
|
|
.WORD DUP
|
|||
|
|
.WORD ONEP
|
|||
|
|
.WORD CAT
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE $2D
|
|||
|
|
.WORD EQUAL
|
|||
|
|
.WORD DUP
|
|||
|
|
.WORD TOR
|
|||
|
|
.WORD PLUS
|
|||
|
|
.WORD LIT,$FFFF
|
|||
|
|
L2023 .WORD DPL
|
|||
|
|
.WORD STORE
|
|||
|
|
.WORD PNUMB
|
|||
|
|
.WORD DUP
|
|||
|
|
.WORD CAT
|
|||
|
|
.WORD BL
|
|||
|
|
.WORD SUB
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L2031 .WORD $15 ; L2042-L2031
|
|||
|
|
.WORD DUP
|
|||
|
|
.WORD CAT
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE $2E
|
|||
|
|
.WORD SUB
|
|||
|
|
.WORD ZERO
|
|||
|
|
.WORD QERR
|
|||
|
|
.WORD ZERO
|
|||
|
|
.WORD BRAN
|
|||
|
|
L2041 .WORD $FFDD ; L2023-L2041
|
|||
|
|
L2042 .WORD DROP
|
|||
|
|
.WORD RFROM
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L2045 .WORD 4 ; L2047-L2045
|
|||
|
|
.WORD DMINU
|
|||
|
|
L2047 .WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; -FIND
|
|||
|
|
; SCREEN 48 LINE 12
|
|||
|
|
;
|
|||
|
|
L2052 .BYTE $85,"-FIN",$C4
|
|||
|
|
.WORD L2007 ; link to NUMBER
|
|||
|
|
DFIND .WORD DOCOL
|
|||
|
|
.WORD BL
|
|||
|
|
.WORD WORD
|
|||
|
|
.WORD HERE ; )
|
|||
|
|
.WORD COUNT ; |- Optional allowing free use of low
|
|||
|
|
.WORD UPPER ; ) case from terminal
|
|||
|
|
.WORD HERE
|
|||
|
|
.WORD CON
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD PFIND
|
|||
|
|
.WORD DUP
|
|||
|
|
.WORD ZEQU
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L2068 .WORD $A ; L2073-L2068
|
|||
|
|
.WORD DROP
|
|||
|
|
.WORD HERE
|
|||
|
|
.WORD LATES
|
|||
|
|
.WORD PFIND
|
|||
|
|
L2073 .WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; (ABORT)
|
|||
|
|
; SCREEN 49 LINE 2
|
|||
|
|
;
|
|||
|
|
L2078 .BYTE $87,"(ABORT",$A9
|
|||
|
|
.WORD L2052 ; link to -FIND
|
|||
|
|
PABOR .WORD DOCOL
|
|||
|
|
.WORD ABORT
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; ERROR
|
|||
|
|
; SCREEN 49 LINE 4
|
|||
|
|
;
|
|||
|
|
L2087 .BYTE $85,"ERRO",$D2
|
|||
|
|
.WORD L2078 ; link to (ABORT)
|
|||
|
|
ERROR .WORD DOCOL
|
|||
|
|
.WORD WARN
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD ZLESS
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L2094 .WORD $4 ; L2096-L2094
|
|||
|
|
.WORD PABOR
|
|||
|
|
L2096 .WORD HERE
|
|||
|
|
.WORD COUNT
|
|||
|
|
.WORD TYPE
|
|||
|
|
.WORD PDOTQ
|
|||
|
|
.BYTE 4," ? "
|
|||
|
|
.WORD MESS
|
|||
|
|
.WORD SPSTO
|
|||
|
|
.WORD DROP,DROP; make room for 2 error values
|
|||
|
|
.WORD IN
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD BLK
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD QUIT
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; ID.
|
|||
|
|
; SCREEN 49 LINE 9
|
|||
|
|
;
|
|||
|
|
L2113 .BYTE $83,"ID",$AE
|
|||
|
|
.WORD L2087 ; link to ERROR
|
|||
|
|
IDDOT .WORD DOCOL
|
|||
|
|
.WORD PAD
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE $20
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE $5F
|
|||
|
|
.WORD FILL
|
|||
|
|
.WORD DUP
|
|||
|
|
.WORD PFA
|
|||
|
|
.WORD LFA
|
|||
|
|
.WORD OVER
|
|||
|
|
.WORD SUB
|
|||
|
|
.WORD PAD
|
|||
|
|
.WORD SWAP
|
|||
|
|
.WORD CMOVE
|
|||
|
|
.WORD PAD
|
|||
|
|
.WORD COUNT
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE $1F
|
|||
|
|
.WORD ANDD
|
|||
|
|
.WORD TYPE
|
|||
|
|
.WORD SPACE
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; CREATE
|
|||
|
|
; SCREEN 50 LINE 2
|
|||
|
|
;
|
|||
|
|
L2142 .BYTE $86,"CREAT",$C5
|
|||
|
|
.WORD L2113 ; link to ID
|
|||
|
|
CREAT .WORD DOCOL
|
|||
|
|
.WORD TIB ;)
|
|||
|
|
.WORD HERE ;|
|
|||
|
|
.WORD CLIT ;| 6502 only, assures
|
|||
|
|
.BYTE $A0 ;| room exists in dict.
|
|||
|
|
.WORD PLUS ;|
|
|||
|
|
.WORD ULESS ;|
|
|||
|
|
.WORD TWO ;|
|
|||
|
|
.WORD QERR ;)
|
|||
|
|
.WORD DFIND
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L2155 .WORD $0F
|
|||
|
|
.WORD DROP
|
|||
|
|
.WORD NFA
|
|||
|
|
.WORD IDDOT
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE 4
|
|||
|
|
.WORD MESS
|
|||
|
|
.WORD SPACE
|
|||
|
|
L2163 .WORD HERE
|
|||
|
|
.WORD DUP
|
|||
|
|
.WORD CAT
|
|||
|
|
.WORD WIDTH
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD MIN
|
|||
|
|
.WORD ONEP
|
|||
|
|
.WORD ALLOT
|
|||
|
|
.WORD DP ;)
|
|||
|
|
.WORD CAT ;| 6502 only. The code field
|
|||
|
|
.WORD CLIT ;| must not straddle page
|
|||
|
|
.BYTE $FD ;| boundaries
|
|||
|
|
.WORD EQUAL ;|
|
|||
|
|
.WORD ALLOT ;)
|
|||
|
|
.WORD DUP
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE $A0
|
|||
|
|
.WORD TOGGL
|
|||
|
|
.WORD HERE
|
|||
|
|
.WORD ONE
|
|||
|
|
.WORD SUB
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE $80
|
|||
|
|
.WORD TOGGL
|
|||
|
|
.WORD LATES
|
|||
|
|
.WORD COMMA
|
|||
|
|
.WORD CURR
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD STORE
|
|||
|
|
.WORD HERE
|
|||
|
|
.WORD TWOP
|
|||
|
|
.WORD COMMA
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; [COMPILE]
|
|||
|
|
; SCREEN 51 LINE 2
|
|||
|
|
;
|
|||
|
|
L2200 .BYTE $C9,"[COMPILE",$DD
|
|||
|
|
.WORD L2142 ; link to CREATE
|
|||
|
|
.WORD DOCOL
|
|||
|
|
.WORD DFIND
|
|||
|
|
.WORD ZEQU
|
|||
|
|
.WORD ZERO
|
|||
|
|
.WORD QERR
|
|||
|
|
.WORD DROP
|
|||
|
|
.WORD CFA
|
|||
|
|
.WORD COMMA
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; LITERAL
|
|||
|
|
; SCREEN 51 LINE 2
|
|||
|
|
;
|
|||
|
|
L2216 .BYTE $C7,"LITERA",$CC
|
|||
|
|
.WORD L2200 ; link to [COMPILE]
|
|||
|
|
LITER .WORD DOCOL
|
|||
|
|
.WORD STATE
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L2222 .WORD 8 ; L2226-L2222
|
|||
|
|
.WORD COMP
|
|||
|
|
.WORD LIT
|
|||
|
|
.WORD COMMA
|
|||
|
|
L2226 .WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; DLITERAL
|
|||
|
|
; SCREEN 51 LINE 8
|
|||
|
|
;
|
|||
|
|
L2232 .BYTE $C8,"DLITERA",$CC
|
|||
|
|
.WORD L2216 ; link to LITERAL
|
|||
|
|
DLIT .WORD DOCOL
|
|||
|
|
.WORD STATE
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L2238 .WORD 8 ; L2242-L2238
|
|||
|
|
.WORD SWAP
|
|||
|
|
.WORD LITER
|
|||
|
|
.WORD LITER
|
|||
|
|
L2242 .WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; ?STACK
|
|||
|
|
; SCREEN 51 LINE 13
|
|||
|
|
;
|
|||
|
|
L2248 .BYTE $86,"?STAC",$CB
|
|||
|
|
.WORD L2232 ; link to DLITERAL
|
|||
|
|
QSTAC .WORD DOCOL
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE TOS
|
|||
|
|
.WORD SPAT
|
|||
|
|
.WORD ULESS
|
|||
|
|
.WORD ONE
|
|||
|
|
.WORD QERR
|
|||
|
|
.WORD SPAT
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE BOS
|
|||
|
|
.WORD ULESS
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE 7
|
|||
|
|
.WORD QERR
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; INTERPRET
|
|||
|
|
; SCREEN 52 LINE 2
|
|||
|
|
;
|
|||
|
|
L2269 .BYTE $89,"INTERPRE",$D4
|
|||
|
|
.WORD L2248 ; link to ?STACK
|
|||
|
|
INTER .WORD DOCOL
|
|||
|
|
L2272 .WORD DFIND
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L2274 .WORD $1E ; L2289-L2274
|
|||
|
|
.WORD STATE
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD LESS
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L2279 .WORD $A ; L2284-L2279
|
|||
|
|
.WORD CFA
|
|||
|
|
.WORD COMMA
|
|||
|
|
.WORD BRAN
|
|||
|
|
L2283 .WORD $6 ; L2286-L2283
|
|||
|
|
L2284 .WORD CFA
|
|||
|
|
.WORD EXEC
|
|||
|
|
L2286 .WORD QSTAC
|
|||
|
|
.WORD BRAN
|
|||
|
|
L2288 .WORD $1C ; L2302-L2288
|
|||
|
|
L2289 .WORD HERE
|
|||
|
|
.WORD NUMBER
|
|||
|
|
.WORD DPL
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD ONEP
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L2295 .WORD 8 ; L2299-L2295
|
|||
|
|
.WORD DLIT
|
|||
|
|
.WORD BRAN
|
|||
|
|
L2298 .WORD $6 ; L2301-L2298
|
|||
|
|
L2299 .WORD DROP
|
|||
|
|
.WORD LITER
|
|||
|
|
L2301 .WORD QSTAC
|
|||
|
|
L2302 .WORD BRAN
|
|||
|
|
L2303 .WORD $FFC2 ; L2272-L2303
|
|||
|
|
;
|
|||
|
|
; IMMEDIATE
|
|||
|
|
; SCREEN 53 LINE 1
|
|||
|
|
;
|
|||
|
|
L2309 .BYTE $89,"IMMEDIAT",$C5
|
|||
|
|
.WORD L2269; ; link to INTERPRET
|
|||
|
|
.WORD DOCOL
|
|||
|
|
.WORD LATES
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE $40
|
|||
|
|
.WORD TOGGL
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; VOCABULARY
|
|||
|
|
; SCREEN 53 LINE 4
|
|||
|
|
;
|
|||
|
|
L2321 .BYTE $8A,"VOCABULAR",$D9
|
|||
|
|
.WORD L2309 ; link to IMMEDIATE
|
|||
|
|
.WORD DOCOL
|
|||
|
|
.WORD BUILD
|
|||
|
|
.WORD LIT,$A081
|
|||
|
|
.WORD COMMA
|
|||
|
|
.WORD CURR
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD CFA
|
|||
|
|
.WORD COMMA
|
|||
|
|
.WORD HERE
|
|||
|
|
.WORD VOCL
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD COMMA
|
|||
|
|
.WORD VOCL
|
|||
|
|
.WORD STORE
|
|||
|
|
.WORD DOES
|
|||
|
|
DOVOC .WORD TWOP
|
|||
|
|
.WORD CON
|
|||
|
|
.WORD STORE
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; FORTH
|
|||
|
|
; SCREEN 53 LINE 9
|
|||
|
|
;
|
|||
|
|
L2346 .BYTE $C5,"FORT",$C8
|
|||
|
|
.WORD L2321 ; link to VOCABULARY
|
|||
|
|
FORTH .WORD DODOE
|
|||
|
|
.WORD DOVOC
|
|||
|
|
.WORD $A081
|
|||
|
|
XFOR .WORD NTOP ; points to top name in FORTH
|
|||
|
|
VL0 .WORD 0 ; last vocab link ends at zero
|
|||
|
|
;
|
|||
|
|
; DEFINITIONS
|
|||
|
|
; SCREEN 53 LINE 11
|
|||
|
|
;
|
|||
|
|
;
|
|||
|
|
L2357 .BYTE $8B,"DEFINITION",$D3
|
|||
|
|
.WORD L2346 ; link to FORTH
|
|||
|
|
DEFIN .WORD DOCOL
|
|||
|
|
.WORD CON
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD CURR
|
|||
|
|
.WORD STORE
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; (
|
|||
|
|
; SCREEN 53 LINE 14
|
|||
|
|
;
|
|||
|
|
L2369 .BYTE $C1,$A8
|
|||
|
|
.WORD L2357 ; link to DEFINITIONS
|
|||
|
|
.WORD DOCOL
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE $29
|
|||
|
|
.WORD WORD
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; QUIT
|
|||
|
|
; SCREEN 54 LINE 2
|
|||
|
|
;
|
|||
|
|
L2381 .BYTE $84,"QUI",$D4
|
|||
|
|
.WORD L2369 ; link to (
|
|||
|
|
QUIT .WORD DOCOL
|
|||
|
|
.WORD ZERO
|
|||
|
|
.WORD BLK
|
|||
|
|
.WORD STORE
|
|||
|
|
.WORD LBRAC
|
|||
|
|
L2388 .WORD RPSTO
|
|||
|
|
.WORD CR
|
|||
|
|
.WORD QUERY
|
|||
|
|
.WORD INTER
|
|||
|
|
.WORD STATE
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD ZEQU
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L2396 .WORD 7 ; L2399-L2396
|
|||
|
|
.WORD PDOTQ
|
|||
|
|
.BYTE 2,"OK"
|
|||
|
|
L2399 .WORD BRAN
|
|||
|
|
L2400 .WORD $FFE7 ; L2388-L2400
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; ABORT
|
|||
|
|
; SCREEN 54 LINE 7
|
|||
|
|
;
|
|||
|
|
L2406 .BYTE $85,"ABOR",$D4
|
|||
|
|
.WORD L2381 ; link to QUIT
|
|||
|
|
ABORT .WORD DOCOL
|
|||
|
|
.WORD SPSTO
|
|||
|
|
.WORD DECIM
|
|||
|
|
.WORD DR0
|
|||
|
|
.WORD CR
|
|||
|
|
.WORD PDOTQ
|
|||
|
|
.BYTE 14,"fig-FORTH 1.0"
|
|||
|
|
.WORD FORTH
|
|||
|
|
.WORD DEFIN
|
|||
|
|
.WORD QUIT
|
|||
|
|
;
|
|||
|
|
; COLD
|
|||
|
|
; SCREEN 55 LINE 1
|
|||
|
|
;
|
|||
|
|
L2423 .BYTE $84,"COL",$C4
|
|||
|
|
.WORD L2406 ; link to ABORT
|
|||
|
|
COLD .WORD *+2
|
|||
|
|
LDA ORIG+$0C ; from cold start area
|
|||
|
|
STA FORTH+6
|
|||
|
|
LDA ORIG+$0D
|
|||
|
|
STA FORTH+7
|
|||
|
|
LDY #$15
|
|||
|
|
BNE L2433
|
|||
|
|
WARM LDY #$0F
|
|||
|
|
L2433 LDA ORIG+$10
|
|||
|
|
STA UP
|
|||
|
|
LDA ORIG+$11
|
|||
|
|
STA UP+1
|
|||
|
|
L2437 LDA ORIG+$0C,Y
|
|||
|
|
STA (UP),Y
|
|||
|
|
DEY
|
|||
|
|
BPL L2437
|
|||
|
|
LDA #>ABORT ; actually #>(ABORT+2)
|
|||
|
|
STA IP+1
|
|||
|
|
LDA #<ABORT+2
|
|||
|
|
STA IP
|
|||
|
|
CLD
|
|||
|
|
LDA #$6C ; ind jump opcode
|
|||
|
|
STA W-1
|
|||
|
|
JMP RPSTO+2 ; And off we go !
|
|||
|
|
;
|
|||
|
|
; S->D
|
|||
|
|
; SCREEN 56 LINE 1
|
|||
|
|
;
|
|||
|
|
L2453 .BYTE $84,"S->",$C4
|
|||
|
|
.WORD L2423 ; link to COLD
|
|||
|
|
STOD .WORD DOCOL
|
|||
|
|
.WORD DUP
|
|||
|
|
.WORD ZLESS
|
|||
|
|
.WORD MINUS
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; +-
|
|||
|
|
; SCREEN 56 LINE 4
|
|||
|
|
;
|
|||
|
|
L2464 .BYTE $82,"+",$AD
|
|||
|
|
.WORD L2453 ; link to S->D
|
|||
|
|
PM .WORD DOCOL
|
|||
|
|
.WORD ZLESS
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L2469 .WORD 4
|
|||
|
|
.WORD MINUS
|
|||
|
|
L2471 .WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; D+-
|
|||
|
|
; SCREEN 56 LINE 6
|
|||
|
|
;
|
|||
|
|
L2476 .BYTE $83,"D+",$AD
|
|||
|
|
.WORD L2464 ; link to +-
|
|||
|
|
DPM .WORD DOCOL
|
|||
|
|
.WORD ZLESS
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L2481 .WORD 4 ; L2483-L2481
|
|||
|
|
.WORD DMINU
|
|||
|
|
L2483 .WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; ABS
|
|||
|
|
; SCREEN 56 LINE 9
|
|||
|
|
;
|
|||
|
|
L2488 .BYTE $83,"AB",$D3
|
|||
|
|
.WORD L2476 ; link to D+-
|
|||
|
|
ABS .WORD DOCOL
|
|||
|
|
.WORD DUP
|
|||
|
|
.WORD PM
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; DABS
|
|||
|
|
; SCREEN 56 LINE 10
|
|||
|
|
;
|
|||
|
|
L2498 .BYTE $84,"DAB",$D3
|
|||
|
|
.WORD L2488 ; link to ABS
|
|||
|
|
DABS .WORD DOCOL
|
|||
|
|
.WORD DUP
|
|||
|
|
.WORD DPM
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; MIN
|
|||
|
|
; SCREEN 56 LINE 12
|
|||
|
|
;
|
|||
|
|
L2508 .BYTE $83,"MI",$CE
|
|||
|
|
.WORD L2498 ; link to DABS
|
|||
|
|
MIN .WORD DOCOL
|
|||
|
|
.WORD OVER
|
|||
|
|
.WORD OVER
|
|||
|
|
.WORD GREAT
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L2515 .WORD 4 ; L2517-L2515
|
|||
|
|
.WORD SWAP
|
|||
|
|
L2517 .WORD DROP
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; MAX
|
|||
|
|
; SCREEN 56 LINE 14
|
|||
|
|
;
|
|||
|
|
L2523 .BYTE $83,"MA",$D8
|
|||
|
|
.WORD L2508 ; link to MIN
|
|||
|
|
MAX .WORD DOCOL
|
|||
|
|
.WORD OVER
|
|||
|
|
.WORD OVER
|
|||
|
|
.WORD LESS
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L2530 .WORD 4 ; L2532-L2530
|
|||
|
|
.WORD SWAP
|
|||
|
|
L2532 .WORD DROP
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; M*
|
|||
|
|
; SCREEN 57 LINE 1
|
|||
|
|
;
|
|||
|
|
L2538 .BYTE $82,"M",$AA
|
|||
|
|
.WORD L2523 ; link to MAX
|
|||
|
|
MSTAR .WORD DOCOL
|
|||
|
|
.WORD OVER
|
|||
|
|
.WORD OVER
|
|||
|
|
.WORD XOR
|
|||
|
|
.WORD TOR
|
|||
|
|
.WORD ABS
|
|||
|
|
.WORD SWAP
|
|||
|
|
.WORD ABS
|
|||
|
|
.WORD USTAR
|
|||
|
|
.WORD RFROM
|
|||
|
|
.WORD DPM
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; M/
|
|||
|
|
; SCREEN 57 LINE 3
|
|||
|
|
;
|
|||
|
|
L2556 .BYTE $82,"M",$AF
|
|||
|
|
.WORD L2538 ; link to M*
|
|||
|
|
MSLAS .WORD DOCOL
|
|||
|
|
.WORD OVER
|
|||
|
|
.WORD TOR
|
|||
|
|
.WORD TOR
|
|||
|
|
.WORD DABS
|
|||
|
|
.WORD R
|
|||
|
|
.WORD ABS
|
|||
|
|
.WORD USLAS
|
|||
|
|
.WORD RFROM
|
|||
|
|
.WORD R
|
|||
|
|
.WORD XOR
|
|||
|
|
.WORD PM
|
|||
|
|
.WORD SWAP
|
|||
|
|
.WORD RFROM
|
|||
|
|
.WORD PM
|
|||
|
|
.WORD SWAP
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; *
|
|||
|
|
; SCREEN 57 LINE 7
|
|||
|
|
;
|
|||
|
|
L2579 .BYTE $81,$AA
|
|||
|
|
.WORD L2556 ; link to M/
|
|||
|
|
STAR .WORD DOCOL
|
|||
|
|
.WORD USTAR
|
|||
|
|
.WORD DROP
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; /MOD
|
|||
|
|
; SCREEN 57 LINE 8
|
|||
|
|
;
|
|||
|
|
L2589 .BYTE $84,"/MO",$C4
|
|||
|
|
.WORD L2579 ; link to *
|
|||
|
|
SLMOD .WORD DOCOL
|
|||
|
|
.WORD TOR
|
|||
|
|
.WORD STOD
|
|||
|
|
.WORD RFROM
|
|||
|
|
.WORD MSLAS
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; /
|
|||
|
|
; SCREEN 57 LINE 9
|
|||
|
|
;
|
|||
|
|
L2601 .BYTE $81,$AF
|
|||
|
|
.WORD L2589 ; link to /MOD
|
|||
|
|
SLASH .WORD DOCOL
|
|||
|
|
.WORD SLMOD
|
|||
|
|
.WORD SWAP
|
|||
|
|
.WORD DROP
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; MOD
|
|||
|
|
; SCREEN 57 LINE 10
|
|||
|
|
;
|
|||
|
|
L2612 .BYTE $83,"MO",$C4
|
|||
|
|
.WORD L2601 ; link to /
|
|||
|
|
MOD .WORD DOCOL
|
|||
|
|
.WORD SLMOD
|
|||
|
|
.WORD DROP
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; */MOD
|
|||
|
|
; SCREEN 57 LINE 11
|
|||
|
|
;
|
|||
|
|
L2622 .BYTE $85,"*/MO",$C4
|
|||
|
|
.WORD L2612 ; link to MOD
|
|||
|
|
SSMOD .WORD DOCOL
|
|||
|
|
.WORD TOR
|
|||
|
|
.WORD MSTAR
|
|||
|
|
.WORD RFROM
|
|||
|
|
.WORD MSLAS
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; */
|
|||
|
|
; SCREEN 57 LINE 13
|
|||
|
|
;
|
|||
|
|
L2634 .BYTE $82,"*",$AF
|
|||
|
|
.WORD L2622 ; link to */MOD
|
|||
|
|
SSLAS .WORD DOCOL
|
|||
|
|
.WORD SSMOD
|
|||
|
|
.WORD SWAP
|
|||
|
|
.WORD DROP
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; M/MOD
|
|||
|
|
; SCREEN 57 LINE 14
|
|||
|
|
;
|
|||
|
|
L2645 .BYTE $85,"M/MO",$C4
|
|||
|
|
.WORD L2634 ; link to */
|
|||
|
|
MSMOD .WORD DOCOL
|
|||
|
|
.WORD TOR
|
|||
|
|
.WORD ZERO
|
|||
|
|
.WORD R
|
|||
|
|
.WORD USLAS
|
|||
|
|
.WORD RFROM
|
|||
|
|
.WORD SWAP
|
|||
|
|
.WORD TOR
|
|||
|
|
.WORD USLAS
|
|||
|
|
.WORD RFROM
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; USE
|
|||
|
|
; SCREEN 58 LINE 1
|
|||
|
|
;
|
|||
|
|
L2662 .BYTE $83,"US",$C5
|
|||
|
|
.WORD L2645 ; link to M/MOD
|
|||
|
|
USE .WORD DOVAR
|
|||
|
|
.WORD DAREA
|
|||
|
|
;
|
|||
|
|
; PREV
|
|||
|
|
; SCREEN 58 LINE 2
|
|||
|
|
;
|
|||
|
|
L2670 .BYTE $84,"PRE",$D6
|
|||
|
|
.WORD L2662 ; link to USE
|
|||
|
|
PREV .WORD DOVAR
|
|||
|
|
.WORD DAREA
|
|||
|
|
;
|
|||
|
|
; +BUF
|
|||
|
|
; SCREEN 58 LINE 4
|
|||
|
|
;
|
|||
|
|
;
|
|||
|
|
L2678 .BYTE $84,"+BU",$C6
|
|||
|
|
.WORD L2670 ; link to PREV
|
|||
|
|
PBUF .WORD DOCOL
|
|||
|
|
.WORD LIT
|
|||
|
|
.WORD SSIZE+4 ; hold block #, one sector two num
|
|||
|
|
.WORD PLUS
|
|||
|
|
.WORD DUP
|
|||
|
|
.WORD LIMIT
|
|||
|
|
.WORD EQUAL
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L2688 .WORD 6 ; L2691-L2688
|
|||
|
|
.WORD DROP
|
|||
|
|
.WORD FIRST
|
|||
|
|
L2691 .WORD DUP
|
|||
|
|
.WORD PREV
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD SUB
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; UPDATE
|
|||
|
|
; SCREEN 58 LINE 8
|
|||
|
|
;
|
|||
|
|
L2700 .BYTE $86,"UPDAT",$C5
|
|||
|
|
.WORD L2678 ; link to +BUF
|
|||
|
|
UPDAT .WORD DOCOL
|
|||
|
|
.WORD PREV
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD LIT,$8000
|
|||
|
|
.WORD OR
|
|||
|
|
.WORD PREV
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD STORE
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; FLUSH
|
|||
|
|
;
|
|||
|
|
L2705 .BYTE $85,"FLUS",$C8
|
|||
|
|
.WORD L2700 ; link to UPDATE
|
|||
|
|
.WORD DOCOL
|
|||
|
|
.WORD LIMIT,FIRST,SUB
|
|||
|
|
.WORD BBUF,CLIT
|
|||
|
|
.BYTE 4
|
|||
|
|
.WORD PLUS,SLASH,ONEP
|
|||
|
|
.WORD ZERO,PDO
|
|||
|
|
L2835 .WORD LIT,$7FFF,BUFFR
|
|||
|
|
.WORD DROP,PLOOP
|
|||
|
|
L2839 .WORD $FFF6 ; L2835-L2839
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; EMPTY-BUFFERS
|
|||
|
|
; SCREEN 58 LINE 11
|
|||
|
|
;
|
|||
|
|
L2716 .BYTE $8D,"EMPTY-BUFFER",$D3
|
|||
|
|
.WORD L2705 ; link to FLUSH
|
|||
|
|
.WORD DOCOL
|
|||
|
|
.WORD FIRST
|
|||
|
|
.WORD LIMIT
|
|||
|
|
.WORD OVER
|
|||
|
|
.WORD SUB
|
|||
|
|
.WORD ERASE
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; DR0
|
|||
|
|
; SCREEN 58 LINE 14
|
|||
|
|
;
|
|||
|
|
L2729 .BYTE $83,"DR",$B0
|
|||
|
|
.WORD L2716 ; link to EMPTY-BUFFERS
|
|||
|
|
DR0 .WORD DOCOL
|
|||
|
|
.WORD ZERO
|
|||
|
|
.WORD OFSET
|
|||
|
|
.WORD STORE
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; DR1
|
|||
|
|
; SCREEN 58 LINE 15
|
|||
|
|
;
|
|||
|
|
L2740 .BYTE $83,"DR",$B1
|
|||
|
|
.WORD L2729 ; link to DR0
|
|||
|
|
.WORD DOCOL
|
|||
|
|
.WORD LIT,SECTR ; sectors per drive
|
|||
|
|
.WORD OFSET
|
|||
|
|
.WORD STORE
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; BUFFER
|
|||
|
|
; SCREEN 59 LINE 1
|
|||
|
|
;
|
|||
|
|
L2751 .BYTE $86,"BUFFE",$D2
|
|||
|
|
.WORD L2740 ; link to DR1
|
|||
|
|
BUFFR .WORD DOCOL
|
|||
|
|
.WORD USE
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD DUP
|
|||
|
|
.WORD TOR
|
|||
|
|
L2758 .WORD PBUF
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L2760 .WORD $FFFC ; L2758-L2760
|
|||
|
|
.WORD USE
|
|||
|
|
.WORD STORE
|
|||
|
|
.WORD R
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD ZLESS
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L2767 .WORD $14 ; L2776-L2767
|
|||
|
|
.WORD R
|
|||
|
|
.WORD TWOP
|
|||
|
|
.WORD R
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD LIT,$7FFF
|
|||
|
|
.WORD ANDD
|
|||
|
|
.WORD ZERO
|
|||
|
|
; .WORD RSLW
|
|||
|
|
.WORD RSW
|
|||
|
|
L2776 .WORD R
|
|||
|
|
.WORD STORE
|
|||
|
|
.WORD R
|
|||
|
|
.WORD PREV
|
|||
|
|
.WORD STORE
|
|||
|
|
.WORD RFROM
|
|||
|
|
.WORD TWOP
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; BLOCK
|
|||
|
|
; SCREEN 60 LINE 1
|
|||
|
|
;
|
|||
|
|
L2788 .BYTE $85,"BLOC",$CB
|
|||
|
|
.WORD L2751 ; link to BUFFER
|
|||
|
|
BLOCK .WORD DOCOL
|
|||
|
|
.WORD OFSET
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD PLUS
|
|||
|
|
.WORD TOR
|
|||
|
|
.WORD PREV
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD DUP
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD R
|
|||
|
|
.WORD SUB
|
|||
|
|
.WORD DUP
|
|||
|
|
.WORD PLUS
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L2804 .WORD $34 ; L2830-L2804
|
|||
|
|
L2805 .WORD PBUF
|
|||
|
|
.WORD ZEQU
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L2808 .WORD $14 ; L2818-L2808
|
|||
|
|
.WORD DROP
|
|||
|
|
.WORD R
|
|||
|
|
.WORD BUFFR
|
|||
|
|
.WORD DUP
|
|||
|
|
.WORD R
|
|||
|
|
.WORD ONE
|
|||
|
|
; .WORD RSLW
|
|||
|
|
.WORD RSW
|
|||
|
|
.WORD TWO
|
|||
|
|
.WORD SUB
|
|||
|
|
L2818 .WORD DUP
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD R
|
|||
|
|
.WORD SUB
|
|||
|
|
.WORD DUP
|
|||
|
|
.WORD PLUS
|
|||
|
|
.WORD ZEQU
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L2826 .WORD $FFD6 ; L2805-L2826
|
|||
|
|
.WORD DUP
|
|||
|
|
.WORD PREV
|
|||
|
|
.WORD STORE
|
|||
|
|
L2830 .WORD RFROM
|
|||
|
|
.WORD DROP
|
|||
|
|
.WORD TWOP
|
|||
|
|
.WORD SEMIS ; end of BLOCK
|
|||
|
|
;
|
|||
|
|
;
|
|||
|
|
; (LINE)
|
|||
|
|
; SCREEN 61 LINE 2
|
|||
|
|
;
|
|||
|
|
L2838 .BYTE $86,"(LINE",$A9
|
|||
|
|
.WORD L2788 ; link to BLOCK
|
|||
|
|
PLINE .WORD DOCOL
|
|||
|
|
.WORD TOR
|
|||
|
|
.WORD CSLL
|
|||
|
|
.WORD BBUF
|
|||
|
|
.WORD SSMOD
|
|||
|
|
.WORD RFROM
|
|||
|
|
.WORD BSCR
|
|||
|
|
.WORD STAR
|
|||
|
|
.WORD PLUS
|
|||
|
|
.WORD BLOCK
|
|||
|
|
.WORD PLUS
|
|||
|
|
.WORD CSLL
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; .LINE
|
|||
|
|
; SCREEN 61 LINE 6
|
|||
|
|
;
|
|||
|
|
L2857 .BYTE $85,".LIN",$C5
|
|||
|
|
.WORD L2838 ; link to (LINE)
|
|||
|
|
DLINE .WORD DOCOL
|
|||
|
|
.WORD PLINE
|
|||
|
|
.WORD DTRAI
|
|||
|
|
.WORD TYPE
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; MESSAGE
|
|||
|
|
; SCREEN 61 LINE 9
|
|||
|
|
;
|
|||
|
|
L2868 .BYTE $87,"MESSAG",$C5
|
|||
|
|
.WORD L2857 ; link to .LINE
|
|||
|
|
MESS .WORD DOCOL
|
|||
|
|
.WORD WARN
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L2874 .WORD $1B ; L2888-L2874
|
|||
|
|
.WORD DDUP
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L2877 .WORD $11 ; L2886-L2877
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE 4
|
|||
|
|
.WORD OFSET
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD BSCR
|
|||
|
|
.WORD SLASH
|
|||
|
|
.WORD SUB
|
|||
|
|
.WORD DLINE
|
|||
|
|
L2886 .WORD BRAN
|
|||
|
|
L2887 .WORD 13 ; L2891-L2887
|
|||
|
|
L2888 .WORD PDOTQ
|
|||
|
|
.BYTE 6,"MSG # "
|
|||
|
|
.WORD DOT
|
|||
|
|
L2891 .WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; LOAD
|
|||
|
|
; SCREEN 62 LINE 2
|
|||
|
|
;
|
|||
|
|
L2896 .BYTE $84,"LOA",$C4
|
|||
|
|
.WORD L2868 ; link to MESSAGE
|
|||
|
|
LOAD .WORD DOCOL
|
|||
|
|
.WORD BLK
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD TOR
|
|||
|
|
.WORD IN
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD TOR
|
|||
|
|
.WORD ZERO
|
|||
|
|
.WORD IN
|
|||
|
|
.WORD STORE
|
|||
|
|
.WORD BSCR
|
|||
|
|
.WORD STAR
|
|||
|
|
.WORD BLK
|
|||
|
|
.WORD STORE
|
|||
|
|
.WORD INTER
|
|||
|
|
.WORD RFROM
|
|||
|
|
.WORD IN
|
|||
|
|
.WORD STORE
|
|||
|
|
.WORD RFROM
|
|||
|
|
.WORD BLK
|
|||
|
|
.WORD STORE
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; -->
|
|||
|
|
; SCREEN 62 LINE 6
|
|||
|
|
;
|
|||
|
|
L2924 .BYTE $C3,"--",$BE
|
|||
|
|
.WORD L2896 ; link to LOAD
|
|||
|
|
.WORD DOCOL
|
|||
|
|
.WORD QLOAD
|
|||
|
|
.WORD ZERO
|
|||
|
|
.WORD IN
|
|||
|
|
.WORD STORE
|
|||
|
|
.WORD BSCR
|
|||
|
|
.WORD BLK
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD OVER
|
|||
|
|
.WORD MOD
|
|||
|
|
.WORD SUB
|
|||
|
|
.WORD BLK
|
|||
|
|
.WORD PSTOR
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; XEMIT writes one ascii character to terminal
|
|||
|
|
;
|
|||
|
|
;
|
|||
|
|
XEMIT
|
|||
|
|
; TYA
|
|||
|
|
; SEC
|
|||
|
|
; LDY #$1A
|
|||
|
|
; ADC (UP),Y
|
|||
|
|
; STA (UP),Y
|
|||
|
|
; INY ; bump user varaible OUT
|
|||
|
|
; LDA #0
|
|||
|
|
; ADC (UP),Y
|
|||
|
|
; STA (UP),Y
|
|||
|
|
LDA 0,X ; fetch character to output
|
|||
|
|
; STX XSAVE
|
|||
|
|
JSR OUTCH ; and display it
|
|||
|
|
; LDX XSAVE
|
|||
|
|
JMP POP
|
|||
|
|
;
|
|||
|
|
; XKEY reads one terminal keystroke to stack
|
|||
|
|
;
|
|||
|
|
;
|
|||
|
|
XKEY
|
|||
|
|
; STX XSAVE
|
|||
|
|
JSR INCH ; might otherwise clobber it while
|
|||
|
|
; LDX XSAVE ; inputting a char to accumulator
|
|||
|
|
JMP PUSHOA
|
|||
|
|
;
|
|||
|
|
; XQTER leaves a boolean representing terminal break
|
|||
|
|
;
|
|||
|
|
;
|
|||
|
|
XQTER jsr cbrk ; if Ctrl-c, set C else clear C
|
|||
|
|
lda #$00 ; 0
|
|||
|
|
rol ; move carry to bit 0
|
|||
|
|
JMP PUSHOA
|
|||
|
|
;
|
|||
|
|
; XCR displays a CR and LF to terminal
|
|||
|
|
;
|
|||
|
|
;
|
|||
|
|
XCR
|
|||
|
|
; STX XSAVE
|
|||
|
|
JSR TCR ; use monitor call
|
|||
|
|
; LDX XSAVE
|
|||
|
|
JMP NEXT
|
|||
|
|
;
|
|||
|
|
; *** -DISC
|
|||
|
|
; machine level sector R/W
|
|||
|
|
;
|
|||
|
|
;L3030 .BYTE $85,"-DIS",$C3
|
|||
|
|
; .WORD L2924 ; link to -->
|
|||
|
|
;DDISC .WORD *+2
|
|||
|
|
; LDA 0,X
|
|||
|
|
; STA $C60C
|
|||
|
|
; STA $C60D ; store sector number
|
|||
|
|
; LDA 2,X
|
|||
|
|
; STA $C60A
|
|||
|
|
; STA $C60B ; store track number
|
|||
|
|
; LDA 4,X
|
|||
|
|
; STA $C4CD
|
|||
|
|
; STA $C4CE ; store drive number
|
|||
|
|
; STX XSAVE
|
|||
|
|
; LDA $C4DA ; sense read or write
|
|||
|
|
; BNE L3032
|
|||
|
|
; JSR $E1FE
|
|||
|
|
; JMP L3040
|
|||
|
|
;L3032 JSR $E262
|
|||
|
|
;L3040 JSR $E3EF ; head up motor off
|
|||
|
|
; LDX XSAVE
|
|||
|
|
; LDA $C4E1 ; report error code
|
|||
|
|
; STA 4,X
|
|||
|
|
; JMP POPTWO
|
|||
|
|
;
|
|||
|
|
; -BCD
|
|||
|
|
; Convert binary value to BCD
|
|||
|
|
;
|
|||
|
|
L3050 .BYTE $84,"-BC",$C4
|
|||
|
|
.WORD L2924 ; link to -DISC
|
|||
|
|
DBCD .WORD DOCOL
|
|||
|
|
.WORD ZERO,CLIT
|
|||
|
|
.BYTE 10
|
|||
|
|
.WORD USLAS,CLIT
|
|||
|
|
.BYTE 16
|
|||
|
|
.WORD STAR,OR,SEMIS
|
|||
|
|
|
|||
|
|
;
|
|||
|
|
; *** R/W
|
|||
|
|
; Read or write one sector
|
|||
|
|
;
|
|||
|
|
;L3060 .BYTE $83,"R/",$D7
|
|||
|
|
; .WORD L3050 ; link to -BCD
|
|||
|
|
;RSLW .WORD DOCOL
|
|||
|
|
; .WORD ZEQU,LIT,$C4DA,CSTOR
|
|||
|
|
; .WORD SWAP,ZERO,STORE
|
|||
|
|
; .WORD ZERO,OVER,GREAT,OVER
|
|||
|
|
; .WORD LIT,SECTL-1,GREAT,OR,CLIT
|
|||
|
|
; .BYTE 6
|
|||
|
|
; .WORD QERR
|
|||
|
|
; .WORD ZERO,LIT,SECTR,USLAS,ONEP
|
|||
|
|
; .WORD SWAP,ZERO,CLIT
|
|||
|
|
; .BYTE $12
|
|||
|
|
; .WORD USLAS,DBCD,SWAP,ONEP
|
|||
|
|
; .WORD DBCD,DDISC,CLIT
|
|||
|
|
; .BYTE 8
|
|||
|
|
; .WORD QERR
|
|||
|
|
; .WORD SEMIS
|
|||
|
|
;
|
|||
|
|
;
|
|||
|
|
; RSW
|
|||
|
|
; Read or write one sector
|
|||
|
|
;
|
|||
|
|
L3070 .BYTE $83,"RS",$D7
|
|||
|
|
.WORD L3050 ; link to R/W
|
|||
|
|
RSW .WORD DOCOL
|
|||
|
|
.WORD TOR
|
|||
|
|
.WORD BBUF, STAR, LIT, $4000, PLUS, DUP
|
|||
|
|
.WORD LIT, $6800, GREAT, LIT, $6, QERR
|
|||
|
|
.WORD RFROM, ZBRAN, $4, SWAP
|
|||
|
|
.WORD BBUF, CMOVE
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
;
|
|||
|
|
; '
|
|||
|
|
; SCREEN 72 LINE 2
|
|||
|
|
;
|
|||
|
|
L3202 .BYTE $C1,$A7
|
|||
|
|
.WORD L3070 ; link to RSW
|
|||
|
|
TICK .WORD DOCOL
|
|||
|
|
.WORD DFIND
|
|||
|
|
.WORD ZEQU
|
|||
|
|
.WORD ZERO
|
|||
|
|
.WORD QERR
|
|||
|
|
.WORD DROP
|
|||
|
|
.WORD LITER
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; FORGET
|
|||
|
|
; Altered from model
|
|||
|
|
; SCREEN 72 LINE 6
|
|||
|
|
;
|
|||
|
|
L3217 .BYTE $86,"FORGE",$D4
|
|||
|
|
.WORD L3202 ; link to ' TICK
|
|||
|
|
FORG .WORD DOCOL
|
|||
|
|
.WORD TICK,NFA,DUP
|
|||
|
|
.WORD FENCE,AT,ULESS,CLIT
|
|||
|
|
.BYTE $15
|
|||
|
|
.WORD QERR,TOR,VOCL,AT
|
|||
|
|
L3220 .WORD R,OVER,ULESS
|
|||
|
|
.WORD ZBRAN,L3225-*
|
|||
|
|
.WORD FORTH,DEFIN,AT,DUP
|
|||
|
|
.WORD VOCL,STORE
|
|||
|
|
.WORD BRAN,$FFFF-24+1 ; L3220-*
|
|||
|
|
L3225 .WORD DUP,CLIT
|
|||
|
|
.BYTE 4
|
|||
|
|
.WORD SUB
|
|||
|
|
L3228 .WORD PFA,LFA,AT
|
|||
|
|
.WORD DUP,R,ULESS
|
|||
|
|
.WORD ZBRAN,$FFFF-14+1 ; L3228-*
|
|||
|
|
.WORD OVER,TWO,SUB,STORE
|
|||
|
|
.WORD AT,DDUP,ZEQU
|
|||
|
|
.WORD ZBRAN,$FFFF-39+1 ; L3225-*
|
|||
|
|
.WORD RFROM,DP,STORE
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; BACK
|
|||
|
|
; SCREEN 73 LINE 1
|
|||
|
|
;
|
|||
|
|
L3250 .BYTE $84,"BAC",$CB
|
|||
|
|
.WORD L3217 ; link to FORGET
|
|||
|
|
BACK .WORD DOCOL
|
|||
|
|
.WORD HERE
|
|||
|
|
.WORD SUB
|
|||
|
|
.WORD COMMA
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; BEGIN
|
|||
|
|
; SCREEN 73 LINE 3
|
|||
|
|
;
|
|||
|
|
L3261 .BYTE $C5,"BEGI",$CE
|
|||
|
|
.WORD L3250 ; link to BACK
|
|||
|
|
.WORD DOCOL
|
|||
|
|
.WORD QCOMP
|
|||
|
|
.WORD HERE
|
|||
|
|
.WORD ONE
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; ENDIF
|
|||
|
|
; SCREEN 73 LINE 5
|
|||
|
|
;
|
|||
|
|
L3273 .BYTE $C5,"ENDI",$C6
|
|||
|
|
.WORD L3261 ; link to BEGIN
|
|||
|
|
ENDIF .WORD DOCOL
|
|||
|
|
.WORD QCOMP
|
|||
|
|
.WORD TWO
|
|||
|
|
.WORD QPAIR
|
|||
|
|
.WORD HERE
|
|||
|
|
.WORD OVER
|
|||
|
|
.WORD SUB
|
|||
|
|
.WORD SWAP
|
|||
|
|
.WORD STORE
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; THEN
|
|||
|
|
; SCREEN 73 LINE 7
|
|||
|
|
;
|
|||
|
|
L3290 .BYTE $C4,"THE",$CE
|
|||
|
|
.WORD L3273 ; link to ENDIF
|
|||
|
|
.WORD DOCOL
|
|||
|
|
.WORD ENDIF
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; DO
|
|||
|
|
; SCREEN 73 LINE 9
|
|||
|
|
;
|
|||
|
|
L3300 .BYTE $C2,"D",$CF
|
|||
|
|
.WORD L3290 ; link to THEN
|
|||
|
|
.WORD DOCOL
|
|||
|
|
.WORD COMP
|
|||
|
|
.WORD PDO
|
|||
|
|
.WORD HERE
|
|||
|
|
.WORD THREE
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; LOOP
|
|||
|
|
; SCREEN 73 LINE 11
|
|||
|
|
;
|
|||
|
|
;
|
|||
|
|
L3313 .BYTE $C4,"LOO",$D0
|
|||
|
|
.WORD L3300 ; link to DO
|
|||
|
|
.WORD DOCOL
|
|||
|
|
.WORD THREE
|
|||
|
|
.WORD QPAIR
|
|||
|
|
.WORD COMP
|
|||
|
|
.WORD PLOOP
|
|||
|
|
.WORD BACK
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; +LOOP
|
|||
|
|
; SCREEN 73 LINE 13
|
|||
|
|
;
|
|||
|
|
L3327 .BYTE $C5,"+LOO",$D0
|
|||
|
|
.WORD L3313 ; link to LOOP
|
|||
|
|
.WORD DOCOL
|
|||
|
|
.WORD THREE
|
|||
|
|
.WORD QPAIR
|
|||
|
|
.WORD COMP
|
|||
|
|
.WORD PPLOO
|
|||
|
|
.WORD BACK
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; UNTIL
|
|||
|
|
; SCREEN 73 LINE 15
|
|||
|
|
;
|
|||
|
|
L3341 .BYTE $C5,"UNTI",$CC
|
|||
|
|
.WORD L3327 ; link to +LOOP
|
|||
|
|
UNTIL .WORD DOCOL
|
|||
|
|
.WORD ONE
|
|||
|
|
.WORD QPAIR
|
|||
|
|
.WORD COMP
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
.WORD BACK
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; END
|
|||
|
|
; SCREEN 74 LINE 1
|
|||
|
|
;
|
|||
|
|
L3355 .BYTE $C3,"EN",$C4
|
|||
|
|
.WORD L3341 ; link to UNTIL
|
|||
|
|
.WORD DOCOL
|
|||
|
|
.WORD UNTIL
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; AGAIN
|
|||
|
|
; SCREEN 74 LINE 3
|
|||
|
|
;
|
|||
|
|
L3365 .BYTE $C5,"AGAI",$CE
|
|||
|
|
.WORD L3355 ; link to END
|
|||
|
|
AGAIN .WORD DOCOL
|
|||
|
|
.WORD ONE
|
|||
|
|
.WORD QPAIR
|
|||
|
|
.WORD COMP
|
|||
|
|
.WORD BRAN
|
|||
|
|
.WORD BACK
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; REPEAT
|
|||
|
|
; SCREEN 74 LINE 5
|
|||
|
|
;
|
|||
|
|
L3379 .BYTE $C6,"REPEA",$D4
|
|||
|
|
.WORD L3365 ; link to AGAIN
|
|||
|
|
.WORD DOCOL
|
|||
|
|
.WORD TOR
|
|||
|
|
.WORD TOR
|
|||
|
|
.WORD AGAIN
|
|||
|
|
.WORD RFROM
|
|||
|
|
.WORD RFROM
|
|||
|
|
.WORD TWO
|
|||
|
|
.WORD SUB
|
|||
|
|
.WORD ENDIF
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; IF
|
|||
|
|
; SCREEN 74 LINE 8
|
|||
|
|
;
|
|||
|
|
L3396 .BYTE $C2,"I",$C6
|
|||
|
|
.WORD L3379 ; link to REPEAT
|
|||
|
|
IF .WORD DOCOL
|
|||
|
|
.WORD COMP
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
.WORD HERE
|
|||
|
|
.WORD ZERO
|
|||
|
|
.WORD COMMA
|
|||
|
|
.WORD TWO
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; ELSE
|
|||
|
|
; SCREEN 74 LINE 10
|
|||
|
|
;
|
|||
|
|
L3411 .BYTE $C4,"ELS",$C5
|
|||
|
|
.WORD L3396 ; link to IF
|
|||
|
|
.WORD DOCOL
|
|||
|
|
.WORD TWO
|
|||
|
|
.WORD QPAIR
|
|||
|
|
.WORD COMP
|
|||
|
|
.WORD BRAN
|
|||
|
|
.WORD HERE
|
|||
|
|
.WORD ZERO
|
|||
|
|
.WORD COMMA
|
|||
|
|
.WORD SWAP
|
|||
|
|
.WORD TWO
|
|||
|
|
.WORD ENDIF
|
|||
|
|
.WORD TWO
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; WHILE
|
|||
|
|
; SCREEN 74 LINE 13
|
|||
|
|
;
|
|||
|
|
L3431 .BYTE $C5,"WHIL",$C5
|
|||
|
|
.WORD L3411 ; link to ELSE
|
|||
|
|
.WORD DOCOL
|
|||
|
|
.WORD IF
|
|||
|
|
.WORD TWOP
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; SPACES
|
|||
|
|
; SCREEN 75 LINE 1
|
|||
|
|
;
|
|||
|
|
L3442 .BYTE $86,"SPACE",$D3
|
|||
|
|
.WORD L3431 ; link to WHILE
|
|||
|
|
SPACS .WORD DOCOL
|
|||
|
|
.WORD ZERO
|
|||
|
|
.WORD MAX
|
|||
|
|
.WORD DDUP
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L3449 .WORD $0C ; L3455-L3449
|
|||
|
|
.WORD ZERO
|
|||
|
|
.WORD PDO
|
|||
|
|
L3452 .WORD SPACE
|
|||
|
|
.WORD PLOOP
|
|||
|
|
L3454 .WORD $FFFC ; L3452-L3454
|
|||
|
|
L3455 .WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; <#
|
|||
|
|
; SCREEN 75 LINE 3
|
|||
|
|
;
|
|||
|
|
L3460 .BYTE $82,"<",$A3
|
|||
|
|
.WORD L3442 ; link to SPACES
|
|||
|
|
BDIGS .WORD DOCOL
|
|||
|
|
.WORD PAD
|
|||
|
|
.WORD HLD
|
|||
|
|
.WORD STORE
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; #>
|
|||
|
|
; SCREEN 75 LINE 5
|
|||
|
|
;
|
|||
|
|
L3471 .BYTE $82,"#",$BE
|
|||
|
|
.WORD L3460 ; link to <#
|
|||
|
|
EDIGS .WORD DOCOL
|
|||
|
|
.WORD DROP
|
|||
|
|
.WORD DROP
|
|||
|
|
.WORD HLD
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD PAD
|
|||
|
|
.WORD OVER
|
|||
|
|
.WORD SUB
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; SIGN
|
|||
|
|
; SCREEN 75 LINE 7
|
|||
|
|
;
|
|||
|
|
L3486 .BYTE $84,"SIG",$CE
|
|||
|
|
.WORD L3471 ; link to #>
|
|||
|
|
SIGN .WORD DOCOL
|
|||
|
|
.WORD ROT
|
|||
|
|
.WORD ZLESS
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L3492 .WORD $7 ; L3496-L3492
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE $2D
|
|||
|
|
.WORD HOLD
|
|||
|
|
L3496 .WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; #
|
|||
|
|
; SCREEN 75 LINE 9
|
|||
|
|
;
|
|||
|
|
L3501 .BYTE $81,$A3
|
|||
|
|
.WORD L3486 ; link to SIGN
|
|||
|
|
DIG .WORD DOCOL
|
|||
|
|
.WORD BASE
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD MSMOD
|
|||
|
|
.WORD ROT
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE 9
|
|||
|
|
.WORD OVER
|
|||
|
|
.WORD LESS
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L3513 .WORD 7 ; L3517-L3513
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE 7
|
|||
|
|
.WORD PLUS
|
|||
|
|
L3517 .WORD CLIT
|
|||
|
|
.BYTE $30
|
|||
|
|
.WORD PLUS
|
|||
|
|
.WORD HOLD
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; #S
|
|||
|
|
; SCREEN 75 LINE 12
|
|||
|
|
;
|
|||
|
|
L3526 .BYTE $82,"#",$D3
|
|||
|
|
.WORD L3501 ; link to #
|
|||
|
|
DIGS .WORD DOCOL
|
|||
|
|
L3529 .WORD DIG
|
|||
|
|
.WORD OVER
|
|||
|
|
.WORD OVER
|
|||
|
|
.WORD OR
|
|||
|
|
.WORD ZEQU
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L3535 .WORD $FFF4 ; L3529-L3535
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; D.R
|
|||
|
|
; SCREEN 76 LINE 1
|
|||
|
|
;
|
|||
|
|
L3541 .BYTE $83,"D.",$D2
|
|||
|
|
.WORD L3526 ; link to #S
|
|||
|
|
DDOTR .WORD DOCOL
|
|||
|
|
.WORD TOR
|
|||
|
|
.WORD SWAP
|
|||
|
|
.WORD OVER
|
|||
|
|
.WORD DABS
|
|||
|
|
.WORD BDIGS
|
|||
|
|
.WORD DIGS
|
|||
|
|
.WORD SIGN
|
|||
|
|
.WORD EDIGS
|
|||
|
|
.WORD RFROM
|
|||
|
|
.WORD OVER
|
|||
|
|
.WORD SUB
|
|||
|
|
.WORD SPACS
|
|||
|
|
.WORD TYPE
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; D.
|
|||
|
|
; SCREEN 76 LINE 5
|
|||
|
|
;
|
|||
|
|
L3562 .BYTE $82,"D",$AE
|
|||
|
|
.WORD L3541 ; link to D.R
|
|||
|
|
DDOT .WORD DOCOL
|
|||
|
|
.WORD ZERO
|
|||
|
|
.WORD DDOTR
|
|||
|
|
.WORD SPACE
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; .R
|
|||
|
|
; SCREEN 76 LINE 7
|
|||
|
|
;
|
|||
|
|
L3573 .BYTE $82,".",$D2
|
|||
|
|
.WORD L3562 ; link to D.
|
|||
|
|
DOTR .WORD DOCOL
|
|||
|
|
.WORD TOR
|
|||
|
|
.WORD STOD
|
|||
|
|
.WORD RFROM
|
|||
|
|
.WORD DDOTR
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; .
|
|||
|
|
; SCREEN 76 LINE 9
|
|||
|
|
;
|
|||
|
|
L3585 .BYTE $81,$AE
|
|||
|
|
.WORD L3573 ; link to .R
|
|||
|
|
DOT .WORD DOCOL
|
|||
|
|
.WORD STOD
|
|||
|
|
.WORD DDOT
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; ?
|
|||
|
|
; SCREEN 76 LINE 11
|
|||
|
|
;
|
|||
|
|
L3595 .BYTE $81,$BF
|
|||
|
|
.WORD L3585 ; link to .
|
|||
|
|
QUES .WORD DOCOL
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD DOT
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; LIST
|
|||
|
|
; SCREEN 77 LINE 2
|
|||
|
|
;
|
|||
|
|
L3605 .BYTE $84,"LIS",$D4
|
|||
|
|
.WORD L3595 ; link to ?
|
|||
|
|
LIST .WORD DOCOL
|
|||
|
|
.WORD DECIM
|
|||
|
|
.WORD CR
|
|||
|
|
.WORD DUP
|
|||
|
|
.WORD SCR
|
|||
|
|
.WORD STORE
|
|||
|
|
.WORD PDOTQ
|
|||
|
|
.BYTE 6,"SCR # "
|
|||
|
|
.WORD DOT
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE 16
|
|||
|
|
.WORD ZERO
|
|||
|
|
.WORD PDO
|
|||
|
|
L3620 .WORD CR
|
|||
|
|
.WORD I
|
|||
|
|
.WORD THREE
|
|||
|
|
.WORD DOTR
|
|||
|
|
.WORD SPACE
|
|||
|
|
.WORD I
|
|||
|
|
.WORD SCR
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD DLINE
|
|||
|
|
.WORD PLOOP
|
|||
|
|
L3630 .WORD $FFEC
|
|||
|
|
.WORD CR
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; INDEX
|
|||
|
|
; SCREEN 77 LINE 7
|
|||
|
|
;
|
|||
|
|
L3637 .BYTE $85,"INDE",$D8
|
|||
|
|
.WORD L3605 ; link to LIST
|
|||
|
|
.WORD DOCOL
|
|||
|
|
.WORD CR
|
|||
|
|
.WORD ONEP
|
|||
|
|
.WORD SWAP
|
|||
|
|
.WORD PDO
|
|||
|
|
L3647 .WORD CR
|
|||
|
|
.WORD I
|
|||
|
|
.WORD THREE
|
|||
|
|
.WORD DOTR
|
|||
|
|
.WORD SPACE
|
|||
|
|
.WORD ZERO
|
|||
|
|
.WORD I
|
|||
|
|
.WORD DLINE
|
|||
|
|
.WORD QTERM
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L3657 .WORD 4 ; L3659-L3657
|
|||
|
|
.WORD LEAVE
|
|||
|
|
L3659 .WORD PLOOP
|
|||
|
|
L3660 .WORD $FFE6 ; L3647-L3660
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE $0C ; form feed for printer
|
|||
|
|
.WORD EMIT
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; TRIAD
|
|||
|
|
; SCREEN 77 LINE 12
|
|||
|
|
;
|
|||
|
|
L3666 .BYTE $85,"TRIA",$C4
|
|||
|
|
.WORD L3637 ; link to INDEX
|
|||
|
|
.WORD DOCOL
|
|||
|
|
.WORD THREE
|
|||
|
|
.WORD SLASH
|
|||
|
|
.WORD THREE
|
|||
|
|
.WORD STAR
|
|||
|
|
.WORD THREE
|
|||
|
|
.WORD OVER
|
|||
|
|
.WORD PLUS
|
|||
|
|
.WORD SWAP
|
|||
|
|
.WORD PDO
|
|||
|
|
L3681 .WORD CR
|
|||
|
|
.WORD I
|
|||
|
|
.WORD LIST
|
|||
|
|
.WORD PLOOP
|
|||
|
|
L3685 .WORD $FFF8 ; L3681-L3685
|
|||
|
|
.WORD CR
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE $F
|
|||
|
|
.WORD MESS
|
|||
|
|
.WORD CR
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE $0C ; form feed for printer
|
|||
|
|
.WORD EMIT
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; VLIST
|
|||
|
|
; SCREEN 78 LINE 2
|
|||
|
|
;
|
|||
|
|
;
|
|||
|
|
L3696 .BYTE $85,"VLIS",$D4
|
|||
|
|
.WORD L3666 ; link to TRIAD
|
|||
|
|
VLIST .WORD DOCOL
|
|||
|
|
.WORD CLIT
|
|||
|
|
.BYTE $80
|
|||
|
|
.WORD OUT
|
|||
|
|
.WORD STORE
|
|||
|
|
.WORD CON
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD AT
|
|||
|
|
L3706 .WORD OUT
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD CSLL
|
|||
|
|
.WORD GREAT
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L3711 .WORD $A ; L3716-L3711
|
|||
|
|
.WORD CR
|
|||
|
|
.WORD ZERO
|
|||
|
|
.WORD OUT
|
|||
|
|
.WORD STORE
|
|||
|
|
L3716 .WORD DUP
|
|||
|
|
.WORD IDDOT
|
|||
|
|
.WORD SPACE
|
|||
|
|
.WORD SPACE
|
|||
|
|
.WORD PFA
|
|||
|
|
.WORD LFA
|
|||
|
|
.WORD AT
|
|||
|
|
.WORD DUP
|
|||
|
|
.WORD ZEQU
|
|||
|
|
.WORD QTERM
|
|||
|
|
.WORD OR
|
|||
|
|
.WORD ZBRAN
|
|||
|
|
L3728 .WORD $FFD4 ; L3706-L3728
|
|||
|
|
.WORD DROP
|
|||
|
|
.WORD SEMIS
|
|||
|
|
;
|
|||
|
|
; MON
|
|||
|
|
; SCREEN 79 LINE 3
|
|||
|
|
;
|
|||
|
|
NTOP .BYTE $83,"MO",$CE
|
|||
|
|
.WORD L3696 ; link to VLIST
|
|||
|
|
MON .WORD *+2
|
|||
|
|
JMP (RESvector) ; back to SBC Monitor
|
|||
|
|
; STX XSAVE
|
|||
|
|
; BRK ; break to monitor which is assumed
|
|||
|
|
; LDX XSAVE ; to save this as reentry point
|
|||
|
|
; JMP NEXT
|
|||
|
|
;
|
|||
|
|
TOP ; end of listing
|
|||
|
|
|