2008-10-09 07:24:49 +00:00
|
|
|
; Microsoft BASIC for 6502
|
2008-10-06 05:21:05 +00:00
|
|
|
|
2008-10-12 03:33:45 +00:00
|
|
|
.debuginfo +
|
|
|
|
|
2008-10-12 19:50:23 +00:00
|
|
|
.if .def(cbmbasic1)
|
2008-10-12 03:33:45 +00:00
|
|
|
CBM1 := 1
|
2008-10-12 20:17:43 +00:00
|
|
|
.include "defines_cbm.s"
|
2008-10-12 19:50:23 +00:00
|
|
|
.elseif .def(osi)
|
2008-10-12 03:33:45 +00:00
|
|
|
OSI := 1
|
2008-10-12 20:17:43 +00:00
|
|
|
.include "defines_osi.s"
|
2008-10-12 19:50:23 +00:00
|
|
|
.elseif .def(applesoft)
|
2008-10-12 03:33:45 +00:00
|
|
|
APPLE := 1
|
2008-10-12 20:17:43 +00:00
|
|
|
.include "defines_apple.s"
|
2008-10-12 19:50:23 +00:00
|
|
|
.elseif .def(kb9)
|
2008-10-12 03:33:45 +00:00
|
|
|
KIM := 1
|
2008-10-12 20:17:43 +00:00
|
|
|
.include "defines_kim.s"
|
2008-10-12 19:50:23 +00:00
|
|
|
.elseif .def(cbmbasic2)
|
2008-10-12 03:33:45 +00:00
|
|
|
CBM2 := 1
|
2008-10-12 20:17:43 +00:00
|
|
|
.include "defines_cbm.s"
|
2008-10-12 19:50:23 +00:00
|
|
|
.elseif .def(kbdbasic)
|
2008-10-12 03:33:45 +00:00
|
|
|
KBD := 1
|
2008-10-12 20:17:43 +00:00
|
|
|
.include "defines_kbd.s"
|
2008-10-12 01:32:09 +00:00
|
|
|
.endif
|
|
|
|
|
2008-10-12 19:54:16 +00:00
|
|
|
.ifdef CONFIG_SMALL
|
|
|
|
BYTES_FP := 4
|
|
|
|
.else
|
|
|
|
BYTES_FP := 5
|
2008-10-12 20:17:43 +00:00
|
|
|
.endif
|
2008-10-12 19:54:16 +00:00
|
|
|
|
2008-10-12 20:17:43 +00:00
|
|
|
.ifdef APPLE
|
|
|
|
BYTES_PER_ELEMENT := 6 ; ???
|
|
|
|
.else
|
|
|
|
BYTES_PER_ELEMENT := BYTES_FP
|
2008-10-12 19:54:16 +00:00
|
|
|
.endif
|
2008-10-12 20:43:37 +00:00
|
|
|
BYTES_PER_VARIABLE := BYTES_FP+2
|
2008-10-12 19:54:16 +00:00
|
|
|
MANTISSA_BYTES := BYTES_FP-1
|
2008-10-12 19:50:23 +00:00
|
|
|
BYTES_PER_FRAME := 2*BYTES_FP+8
|
|
|
|
FOR_STACK1 := 2*BYTES_FP+5
|
|
|
|
FOR_STACK2 := BYTES_FP+4
|
2008-10-12 01:32:09 +00:00
|
|
|
|
2008-10-12 20:17:43 +00:00
|
|
|
.ifdef CBM1
|
|
|
|
MAX_EXPON = 12
|
|
|
|
.else
|
|
|
|
MAX_EXPON = 10
|
|
|
|
.endif
|
|
|
|
|
|
|
|
|
2008-10-12 19:50:23 +00:00
|
|
|
.include "macros.s"
|
|
|
|
.include "zeropage.s"
|
2008-10-11 23:57:13 +00:00
|
|
|
|
2008-10-06 05:21:05 +00:00
|
|
|
.setcpu "6502"
|
2008-10-09 09:18:45 +00:00
|
|
|
.macpack longbranch
|
2008-10-06 05:21:05 +00:00
|
|
|
|
|
|
|
STACK := $0100
|
|
|
|
|
2008-10-11 17:10:12 +00:00
|
|
|
.segment "HEADER"
|
2008-10-08 05:07:59 +00:00
|
|
|
.ifdef KBD
|
|
|
|
jmp LE68C
|
|
|
|
.byte $00,$13,$56
|
|
|
|
.endif
|
|
|
|
|
2008-10-13 00:44:36 +00:00
|
|
|
.include "token.s"
|
2008-10-12 19:04:31 +00:00
|
|
|
|
2008-10-13 00:44:36 +00:00
|
|
|
.include "error.s"
|
2008-10-11 22:37:02 +00:00
|
|
|
|
2008-10-13 00:44:36 +00:00
|
|
|
.segment "CODE"
|
2008-10-11 17:10:12 +00:00
|
|
|
|
2008-10-06 05:21:05 +00:00
|
|
|
QT_ERROR:
|
2008-10-08 05:07:59 +00:00
|
|
|
.ifdef KBD
|
|
|
|
.byte " err"
|
2008-10-11 06:23:53 +00:00
|
|
|
.else
|
|
|
|
.ifdef APPLE
|
|
|
|
.byte " ERR"
|
|
|
|
.byte $07,$07
|
2008-10-08 05:07:59 +00:00
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
.byte " ERROR"
|
2008-10-11 06:23:53 +00:00
|
|
|
.endif
|
2008-10-08 05:07:59 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
.byte $00
|
2008-10-09 07:24:49 +00:00
|
|
|
.ifndef KBD
|
2008-10-06 05:21:05 +00:00
|
|
|
QT_IN:
|
|
|
|
.byte " IN "
|
|
|
|
.byte $00
|
|
|
|
QT_OK:
|
2008-10-11 06:23:53 +00:00
|
|
|
.ifdef APPLE
|
|
|
|
.byte $0D,$00,$00
|
|
|
|
.byte "K"
|
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
.byte $0D,$0A
|
2008-10-11 09:56:31 +00:00
|
|
|
.ifdef CONFIG_CBM_ALL
|
2008-10-06 10:32:35 +00:00
|
|
|
.byte "READY."
|
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
.byte "OK"
|
2008-10-11 06:23:53 +00:00
|
|
|
.endif
|
2008-10-06 10:32:35 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
.byte $0D,$0A,$00
|
2008-10-09 07:24:49 +00:00
|
|
|
.else
|
|
|
|
.byte $54,$D2 ; ???
|
|
|
|
OKPRT:
|
|
|
|
jsr LDE42
|
|
|
|
.byte $0D,$0D
|
|
|
|
.byte ">>"
|
|
|
|
.byte $0D,$0A,$00
|
|
|
|
rts
|
|
|
|
nop
|
2008-10-08 11:42:15 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
QT_BREAK:
|
2008-10-08 05:07:59 +00:00
|
|
|
.ifdef KBD
|
2008-10-08 06:08:08 +00:00
|
|
|
.byte $0D,$0A
|
2008-10-08 05:07:59 +00:00
|
|
|
.byte " Brk"
|
|
|
|
.byte $00
|
2008-10-09 07:24:49 +00:00
|
|
|
.byte $54,$D0 ; ???
|
2008-10-08 05:07:59 +00:00
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
.byte $0D,$0A
|
|
|
|
.byte "BREAK"
|
|
|
|
.byte $00
|
2008-10-08 05:07:59 +00:00
|
|
|
.endif
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; CALLED BY "NEXT" AND "FOR" TO SCAN THROUGH
|
|
|
|
; THE STACK FOR A FRAME WITH THE SAME VARIABLE.
|
|
|
|
;
|
|
|
|
; (FORPNT) = ADDRESS OF VARIABLE IF "FOR" OR "NEXT"
|
|
|
|
; = $XXFF IF CALLED FROM "RETURN"
|
|
|
|
; <<< BUG: SHOULD BE $FFXX >>>
|
|
|
|
;
|
|
|
|
; RETURNS .NE. IF VARIABLE NOT FOUND,
|
|
|
|
; (X) = STACK PNTR AFTER SKIPPING ALL FRAMES
|
|
|
|
;
|
|
|
|
; .EQ. IF FOUND
|
|
|
|
; (X) = STACK PNTR OF FRAME FOUND
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
GTFORPNT:
|
|
|
|
tsx
|
|
|
|
inx
|
|
|
|
inx
|
|
|
|
inx
|
|
|
|
inx
|
|
|
|
L2279:
|
|
|
|
lda STACK+1,x
|
|
|
|
cmp #$81
|
|
|
|
bne L22A1
|
|
|
|
lda FORPNT+1
|
|
|
|
bne L228E
|
|
|
|
lda STACK+2,x
|
|
|
|
sta FORPNT
|
|
|
|
lda STACK+3,x
|
|
|
|
sta FORPNT+1
|
|
|
|
L228E:
|
|
|
|
cmp STACK+3,x
|
|
|
|
bne L229A
|
|
|
|
lda FORPNT
|
|
|
|
cmp STACK+2,x
|
|
|
|
beq L22A1
|
|
|
|
L229A:
|
|
|
|
txa
|
|
|
|
clc
|
|
|
|
adc #BYTES_PER_FRAME
|
|
|
|
tax
|
|
|
|
bne L2279
|
|
|
|
L22A1:
|
|
|
|
rts
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; MOVE BLOCK OF MEMORY UP
|
|
|
|
;
|
|
|
|
; ON ENTRY:
|
|
|
|
; (Y,A) = (HIGHDS) = DESTINATION END+1
|
|
|
|
; (LOWTR) = LOWEST ADDRESS OF SOURCE
|
|
|
|
; (HIGHTR) = HIGHEST SOURCE ADDRESS+1
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
BLTU:
|
|
|
|
jsr REASON
|
|
|
|
sta STREND
|
|
|
|
sty STREND+1
|
|
|
|
BLTU2:
|
|
|
|
sec
|
|
|
|
lda HIGHTR
|
|
|
|
sbc LOWTR
|
|
|
|
sta INDEX
|
|
|
|
tay
|
|
|
|
lda HIGHTR+1
|
|
|
|
sbc LOWTR+1
|
|
|
|
tax
|
|
|
|
inx
|
|
|
|
tya
|
|
|
|
beq L22DD
|
|
|
|
lda HIGHTR
|
|
|
|
sec
|
|
|
|
sbc INDEX
|
|
|
|
sta HIGHTR
|
|
|
|
bcs L22C6
|
|
|
|
dec HIGHTR+1
|
|
|
|
sec
|
|
|
|
L22C6:
|
|
|
|
lda HIGHDS
|
|
|
|
sbc INDEX
|
|
|
|
sta HIGHDS
|
|
|
|
bcs L22D6
|
|
|
|
dec HIGHDS+1
|
|
|
|
bcc L22D6
|
|
|
|
L22D2:
|
|
|
|
lda (HIGHTR),y
|
|
|
|
sta (HIGHDS),y
|
|
|
|
L22D6:
|
|
|
|
dey
|
|
|
|
bne L22D2
|
|
|
|
lda (HIGHTR),y
|
|
|
|
sta (HIGHDS),y
|
|
|
|
L22DD:
|
|
|
|
dec HIGHTR+1
|
|
|
|
dec HIGHDS+1
|
|
|
|
dex
|
|
|
|
bne L22D6
|
|
|
|
rts
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; CHECK IF ENOUGH ROOM LEFT ON STACK
|
|
|
|
; FOR "FOR", "GOSUB", OR EXPRESSION EVALUATION
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
CHKMEM:
|
|
|
|
asl a
|
|
|
|
adc #SPACE_FOR_GOSUB
|
|
|
|
bcs MEMERR
|
|
|
|
sta INDEX
|
|
|
|
tsx
|
|
|
|
cpx INDEX
|
|
|
|
bcc MEMERR
|
|
|
|
rts
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; CHECK IF ENOUGH ROOM BETWEEN ARRAYS AND STRINGS
|
|
|
|
; (Y,A) = ADDR ARRAYS NEED TO GROW TO
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
REASON:
|
|
|
|
cpy FRETOP+1
|
|
|
|
bcc L231E
|
|
|
|
bne L22FC
|
|
|
|
cmp FRETOP
|
|
|
|
bcc L231E
|
|
|
|
L22FC:
|
|
|
|
pha
|
|
|
|
ldx #FAC-TEMP1-1
|
|
|
|
tya
|
|
|
|
L2300:
|
|
|
|
pha
|
|
|
|
lda TEMP1,x
|
|
|
|
dex
|
|
|
|
bpl L2300
|
|
|
|
jsr GARBAG
|
|
|
|
ldx #TEMP1-FAC+1
|
|
|
|
L230B:
|
|
|
|
pla
|
|
|
|
sta FAC,x
|
|
|
|
inx
|
|
|
|
bmi L230B
|
|
|
|
pla
|
|
|
|
tay
|
|
|
|
pla
|
|
|
|
cpy FRETOP+1
|
|
|
|
bcc L231E
|
|
|
|
bne MEMERR
|
|
|
|
cmp FRETOP
|
|
|
|
bcs MEMERR
|
|
|
|
L231E:
|
|
|
|
rts
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
MEMERR:
|
|
|
|
ldx #ERR_MEMFULL
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; HANDLE AN ERROR
|
|
|
|
;
|
|
|
|
; (X)=OFFSET IN ERROR MESSAGE TABLE
|
|
|
|
; (ERRFLG) > 128 IF "ON ERR" TURNED ON
|
|
|
|
; (CURLIN+1) = $FF IF IN DIRECT MODE
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
ERROR:
|
|
|
|
lsr Z14
|
2008-10-11 09:56:31 +00:00
|
|
|
.ifdef CONFIG_CBM_ALL
|
2008-10-09 07:24:49 +00:00
|
|
|
lda Z03 ; output
|
|
|
|
beq LC366 ; is screen
|
|
|
|
jsr CLRCH ; otherwise redirect output back to screen
|
2008-10-06 10:32:35 +00:00
|
|
|
lda #$00
|
2008-10-07 04:44:27 +00:00
|
|
|
sta Z03
|
2008-10-06 10:32:35 +00:00
|
|
|
LC366:
|
2008-10-09 07:24:49 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
jsr CRDO
|
|
|
|
jsr OUTQUES
|
|
|
|
L2329:
|
|
|
|
lda ERROR_MESSAGES,x
|
2008-10-11 10:14:29 +00:00
|
|
|
.ifndef CONFIG_SMALL
|
2008-10-06 05:21:05 +00:00
|
|
|
pha
|
|
|
|
and #$7F
|
2008-10-07 05:52:42 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
jsr OUTDO
|
2008-10-11 10:14:29 +00:00
|
|
|
.ifdef CONFIG_SMALL
|
2008-10-06 05:21:05 +00:00
|
|
|
lda ERROR_MESSAGES+1,x
|
2008-10-08 05:07:59 +00:00
|
|
|
.ifdef KBD
|
|
|
|
and #$7F
|
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
jsr OUTDO
|
2008-10-07 05:52:42 +00:00
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
inx
|
|
|
|
pla
|
|
|
|
bpl L2329
|
2008-10-07 05:52:42 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
jsr STKINI
|
|
|
|
lda #<QT_ERROR
|
|
|
|
ldy #>QT_ERROR
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; PRINT STRING AT (Y,A)
|
|
|
|
; PRINT CURRENT LINE # UNLESS IN DIRECT MODE
|
|
|
|
; FALL INTO WARM RESTART
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
PRINT_ERROR_LINNUM:
|
|
|
|
jsr STROUT
|
|
|
|
ldy CURLIN+1
|
|
|
|
iny
|
|
|
|
beq RESTART
|
|
|
|
jsr INPRT
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; WARM RESTART ENTRY
|
|
|
|
;
|
|
|
|
; COME HERE FROM MONITOR BY CTL-C, 0G, 3D0G, OR E003G
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
RESTART:
|
2008-10-08 05:07:59 +00:00
|
|
|
.ifdef KBD
|
|
|
|
jsr CRDO
|
|
|
|
nop
|
2008-10-08 11:42:15 +00:00
|
|
|
L2351X:
|
2008-10-09 07:24:49 +00:00
|
|
|
jsr OKPRT
|
2008-10-08 11:42:15 +00:00
|
|
|
L2351:
|
2008-10-08 05:07:59 +00:00
|
|
|
jsr LFDDA
|
|
|
|
LE28E:
|
|
|
|
bpl RESTART
|
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
lsr Z14
|
|
|
|
lda #<QT_OK
|
|
|
|
ldy #>QT_OK
|
2008-10-11 09:56:31 +00:00
|
|
|
.ifdef CONFIG_CBM_ALL
|
2008-10-07 04:44:27 +00:00
|
|
|
jsr STROUT
|
|
|
|
.else
|
2008-10-11 09:24:32 +00:00
|
|
|
jsr GOWARM
|
2008-10-07 04:44:27 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
L2351:
|
|
|
|
jsr INLIN
|
2008-10-08 05:07:59 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
stx TXTPTR
|
|
|
|
sty TXTPTR+1
|
|
|
|
jsr CHRGET
|
2008-10-07 10:36:34 +00:00
|
|
|
.ifdef CONFIG_11
|
2008-10-06 05:21:05 +00:00
|
|
|
tax
|
2008-10-07 05:52:42 +00:00
|
|
|
.endif
|
2008-10-08 11:42:15 +00:00
|
|
|
.ifdef KBD
|
|
|
|
beq L2351X
|
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
beq L2351
|
2008-10-08 11:42:15 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
ldx #$FF
|
|
|
|
stx CURLIN+1
|
|
|
|
bcc NUMBERED_LINE
|
|
|
|
jsr PARSE_INPUT_LINE
|
|
|
|
jmp NEWSTT2
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; HANDLE NUMBERED LINE
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
NUMBERED_LINE:
|
|
|
|
jsr LINGET
|
|
|
|
jsr PARSE_INPUT_LINE
|
|
|
|
sty EOLPNTR
|
2008-10-08 05:07:59 +00:00
|
|
|
.ifdef KBD
|
2008-10-08 11:42:15 +00:00
|
|
|
jsr LFD3E
|
2008-10-08 05:07:59 +00:00
|
|
|
lda JMPADRS+1
|
|
|
|
sta LOWTR
|
|
|
|
sta $96
|
|
|
|
lda JMPADRS+2
|
|
|
|
sta LOWTR+1
|
|
|
|
sta $97
|
|
|
|
lda $13
|
|
|
|
sta $06FE
|
|
|
|
lda $14
|
|
|
|
sta $06FF
|
|
|
|
inc $13
|
|
|
|
bne LE2D2
|
|
|
|
inc $14
|
|
|
|
bne LE2D2
|
|
|
|
jmp SYNERR
|
|
|
|
LE2D2:
|
|
|
|
jsr LF457
|
|
|
|
ldx #$96
|
|
|
|
jsr LE4D4
|
|
|
|
bcs LE2FD
|
|
|
|
LE2DC:
|
|
|
|
ldx #$00
|
|
|
|
lda (JMPADRS+1,x)
|
|
|
|
sta ($96,x)
|
|
|
|
inc JMPADRS+1
|
|
|
|
bne LE2E8
|
|
|
|
inc JMPADRS+2
|
|
|
|
LE2E8:
|
|
|
|
inc $96
|
|
|
|
bne LE2EE
|
|
|
|
inc $97
|
|
|
|
LE2EE:
|
|
|
|
ldx #$2B
|
|
|
|
jsr LE4D4
|
|
|
|
bne LE2DC
|
|
|
|
lda $96
|
|
|
|
sta VARTAB
|
|
|
|
lda $97
|
|
|
|
sta VARTAB+1
|
|
|
|
LE2FD:
|
|
|
|
jsr SETPTRS
|
|
|
|
jsr LE33D
|
|
|
|
lda Z00
|
|
|
|
LE306:
|
|
|
|
beq LE28E
|
|
|
|
cmp #$A5
|
|
|
|
beq LE306
|
|
|
|
clc
|
|
|
|
.else
|
2008-10-08 11:42:15 +00:00
|
|
|
jsr FNDLIN
|
2008-10-06 05:21:05 +00:00
|
|
|
bcc PUT_NEW_LINE
|
|
|
|
ldy #$01
|
|
|
|
lda (LOWTR),y
|
|
|
|
sta INDEX+1
|
|
|
|
lda VARTAB
|
|
|
|
sta INDEX
|
|
|
|
lda LOWTR+1
|
|
|
|
sta DEST+1
|
|
|
|
lda LOWTR
|
|
|
|
dey
|
|
|
|
sbc (LOWTR),y
|
|
|
|
clc
|
|
|
|
adc VARTAB
|
|
|
|
sta VARTAB
|
|
|
|
sta DEST
|
|
|
|
lda VARTAB+1
|
|
|
|
adc #$FF
|
|
|
|
sta VARTAB+1
|
|
|
|
sbc LOWTR+1
|
|
|
|
tax
|
|
|
|
sec
|
|
|
|
lda LOWTR
|
|
|
|
sbc VARTAB
|
|
|
|
tay
|
|
|
|
bcs L23A5
|
|
|
|
inx
|
|
|
|
dec DEST+1
|
|
|
|
L23A5:
|
|
|
|
clc
|
|
|
|
adc INDEX
|
|
|
|
bcc L23AD
|
|
|
|
dec INDEX+1
|
|
|
|
clc
|
|
|
|
L23AD:
|
|
|
|
lda (INDEX),y
|
|
|
|
sta (DEST),y
|
|
|
|
iny
|
|
|
|
bne L23AD
|
|
|
|
inc INDEX+1
|
|
|
|
inc DEST+1
|
|
|
|
dex
|
|
|
|
bne L23AD
|
2008-10-13 01:12:57 +00:00
|
|
|
.endif
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
PUT_NEW_LINE:
|
2008-10-07 08:03:36 +00:00
|
|
|
.ifdef CBM2
|
|
|
|
jsr SETPTRS
|
2008-10-08 11:42:15 +00:00
|
|
|
jsr LE33D
|
2008-10-09 07:24:49 +00:00
|
|
|
lda INPUTBUFFER
|
2008-10-07 08:03:36 +00:00
|
|
|
beq L2351
|
|
|
|
clc
|
|
|
|
.else
|
2008-10-13 01:12:57 +00:00
|
|
|
.ifndef KBD
|
2008-10-06 05:21:05 +00:00
|
|
|
lda INPUTBUFFER
|
|
|
|
beq FIX_LINKS
|
|
|
|
lda MEMSIZ
|
|
|
|
ldy MEMSIZ+1
|
|
|
|
sta FRETOP
|
|
|
|
sty FRETOP+1
|
2008-10-08 05:07:59 +00:00
|
|
|
.endif
|
2008-10-07 08:03:36 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
lda VARTAB
|
|
|
|
sta HIGHTR
|
|
|
|
adc EOLPNTR
|
|
|
|
sta HIGHDS
|
|
|
|
ldy VARTAB+1
|
|
|
|
sty HIGHTR+1
|
|
|
|
bcc L23D6
|
|
|
|
iny
|
|
|
|
L23D6:
|
|
|
|
sty HIGHDS+1
|
|
|
|
jsr BLTU
|
2008-10-11 06:23:53 +00:00
|
|
|
.ifdef CBM2_APPLE
|
2008-10-08 05:07:59 +00:00
|
|
|
lda LINNUM
|
|
|
|
ldy LINNUM+1
|
2008-10-11 06:23:53 +00:00
|
|
|
sta INPUTBUFFER-2
|
2008-10-08 05:07:59 +00:00
|
|
|
sty INPUTBUFFER-1
|
2008-10-07 08:03:36 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
lda STREND
|
|
|
|
ldy STREND+1
|
|
|
|
sta VARTAB
|
|
|
|
sty VARTAB+1
|
|
|
|
ldy EOLPNTR
|
|
|
|
dey
|
2008-10-13 01:12:57 +00:00
|
|
|
; ---COPY LINE INTO PROGRAM-------
|
2008-10-06 05:21:05 +00:00
|
|
|
L23E6:
|
2008-10-07 08:03:36 +00:00
|
|
|
lda INPUTBUFFER-4,y
|
2008-10-06 05:21:05 +00:00
|
|
|
sta (LOWTR),y
|
|
|
|
dey
|
|
|
|
bpl L23E6
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; CLEAR ALL VARIABLES
|
|
|
|
; RE-ESTABLISH ALL FORWARD LINKS
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
FIX_LINKS:
|
|
|
|
jsr SETPTRS
|
2008-10-08 05:07:59 +00:00
|
|
|
.ifdef CBM2_KBD
|
2008-10-08 11:42:15 +00:00
|
|
|
jsr LE33D
|
2008-10-07 09:18:22 +00:00
|
|
|
jmp L2351
|
2008-10-08 11:42:15 +00:00
|
|
|
LE33D:
|
2008-10-07 08:03:36 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
lda TXTTAB
|
|
|
|
ldy TXTTAB+1
|
|
|
|
sta INDEX
|
|
|
|
sty INDEX+1
|
|
|
|
clc
|
|
|
|
L23FA:
|
|
|
|
ldy #$01
|
|
|
|
lda (INDEX),y
|
2008-10-09 07:24:49 +00:00
|
|
|
.ifdef CBM2_KBD
|
|
|
|
beq RET3
|
2008-10-07 10:05:20 +00:00
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
bne L2403
|
|
|
|
jmp L2351
|
2008-10-07 08:03:36 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
L2403:
|
|
|
|
ldy #$04
|
|
|
|
L2405:
|
|
|
|
iny
|
|
|
|
lda (INDEX),y
|
|
|
|
bne L2405
|
|
|
|
iny
|
|
|
|
tya
|
|
|
|
adc INDEX
|
|
|
|
tax
|
|
|
|
ldy #$00
|
|
|
|
sta (INDEX),y
|
|
|
|
lda INDEX+1
|
|
|
|
adc #$00
|
|
|
|
iny
|
|
|
|
sta (INDEX),y
|
|
|
|
stx INDEX
|
|
|
|
sta INDEX+1
|
|
|
|
bcc L23FA
|
2008-10-08 05:07:59 +00:00
|
|
|
.ifdef KBD
|
|
|
|
SLOD:
|
|
|
|
ldx #$01
|
|
|
|
.byte $2C
|
|
|
|
PLOD:
|
|
|
|
ldx #$00
|
|
|
|
ldy CURLIN+1
|
|
|
|
iny
|
|
|
|
sty JMPADRS
|
|
|
|
jsr LFFD3
|
|
|
|
jsr LF422
|
|
|
|
ldx #$02
|
|
|
|
jsr LFF64
|
|
|
|
ldx #$6F
|
|
|
|
ldy #$00
|
|
|
|
jsr LE39A
|
|
|
|
jsr LE33D
|
|
|
|
jmp CLEARC
|
|
|
|
.byte $FF
|
|
|
|
.byte $FF
|
|
|
|
.byte $FF
|
|
|
|
VER:
|
|
|
|
lda #$13
|
|
|
|
ldx FAC
|
|
|
|
beq LE397
|
|
|
|
lda $DFF9
|
|
|
|
LE397:
|
|
|
|
jmp FLOAT
|
|
|
|
LE39A:
|
|
|
|
lda VARTAB,x
|
|
|
|
clc
|
|
|
|
adc $051B,y
|
|
|
|
sta VARTAB,y
|
|
|
|
lda VARTAB+1,x
|
|
|
|
adc $051C,y
|
|
|
|
sta VARTAB+1,y
|
2008-10-09 07:24:49 +00:00
|
|
|
RET3:
|
2008-10-08 05:07:59 +00:00
|
|
|
rts
|
|
|
|
.else
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; READ A LINE, AND STRIP OFF SIGN BITS
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-11 06:23:53 +00:00
|
|
|
.ifdef APPLE
|
2008-10-11 07:15:19 +00:00
|
|
|
INLIN:
|
2008-10-11 06:23:53 +00:00
|
|
|
ldx #$DD
|
2008-10-11 07:15:19 +00:00
|
|
|
INLIN1:
|
2008-10-11 06:23:53 +00:00
|
|
|
stx $33
|
|
|
|
jsr L2900
|
|
|
|
cpx #$EF
|
|
|
|
bcs L0C32
|
|
|
|
ldx #$EF
|
|
|
|
L0C32:
|
|
|
|
lda #$00
|
2008-10-13 01:12:57 +00:00
|
|
|
sta INPUTBUFFER,x
|
|
|
|
ldx #<INPUTBUFFER-1
|
|
|
|
ldy #>INPUTBUFFER-1
|
2008-10-11 06:23:53 +00:00
|
|
|
rts
|
2008-10-11 10:14:29 +00:00
|
|
|
RDKEY:
|
2008-10-11 06:23:53 +00:00
|
|
|
jsr LFD0C
|
|
|
|
and #$7F
|
|
|
|
.else
|
2008-10-07 08:03:36 +00:00
|
|
|
.ifdef CBM2
|
2008-10-09 07:32:26 +00:00
|
|
|
RET3:
|
2008-10-07 08:03:36 +00:00
|
|
|
rts
|
|
|
|
.else
|
2008-10-09 07:32:26 +00:00
|
|
|
L2420:
|
2008-10-09 07:24:49 +00:00
|
|
|
.ifdef OSI
|
|
|
|
jsr OUTDO
|
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
dex
|
|
|
|
bpl INLIN2
|
|
|
|
L2423:
|
2008-10-07 05:52:42 +00:00
|
|
|
.ifdef OSI
|
2008-10-06 05:21:05 +00:00
|
|
|
jsr OUTDO
|
2008-10-07 08:03:36 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
jsr CRDO
|
2008-10-07 08:03:36 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
INLIN:
|
|
|
|
ldx #$00
|
|
|
|
INLIN2:
|
|
|
|
jsr GETLN
|
2008-10-11 09:56:31 +00:00
|
|
|
.ifndef CONFIG_CBM_ALL
|
2008-10-06 05:21:05 +00:00
|
|
|
cmp #$07
|
|
|
|
beq L2443
|
2008-10-06 10:32:35 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
cmp #$0D
|
|
|
|
beq L2453
|
2008-10-11 09:56:31 +00:00
|
|
|
.ifndef CONFIG_CBM_ALL
|
2008-10-11 16:21:06 +00:00
|
|
|
cmp #$20 ; line editing
|
2008-10-06 05:21:05 +00:00
|
|
|
bcc INLIN2
|
|
|
|
cmp #$7D
|
|
|
|
bcs INLIN2
|
2008-10-11 16:21:06 +00:00
|
|
|
cmp #$40 ; @
|
2008-10-06 05:21:05 +00:00
|
|
|
beq L2423
|
2008-10-11 16:21:06 +00:00
|
|
|
cmp #$5F ; _
|
2008-10-09 07:32:26 +00:00
|
|
|
beq L2420
|
2008-10-06 05:21:05 +00:00
|
|
|
L2443:
|
|
|
|
cpx #$47
|
|
|
|
bcs L244C
|
2008-10-06 10:32:35 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
sta INPUTBUFFER,x
|
|
|
|
inx
|
2008-10-07 05:52:42 +00:00
|
|
|
.ifdef OSI
|
2008-10-06 05:21:05 +00:00
|
|
|
.byte $2C
|
2008-10-07 05:52:42 +00:00
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
bne INLIN2
|
2008-10-07 05:52:42 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
L244C:
|
2008-10-11 09:56:31 +00:00
|
|
|
.ifndef CONFIG_CBM_ALL
|
2008-10-06 05:21:05 +00:00
|
|
|
lda #$07
|
|
|
|
jsr OUTDO
|
|
|
|
bne INLIN2
|
2008-10-06 10:32:35 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
L2453:
|
|
|
|
jmp L29B9
|
2008-10-07 04:44:27 +00:00
|
|
|
GETLN:
|
2008-10-11 09:56:31 +00:00
|
|
|
.ifdef CONFIG_CBM_ALL
|
2008-10-07 04:44:27 +00:00
|
|
|
jsr CHRIN
|
|
|
|
ldy Z03
|
2008-10-06 10:32:35 +00:00
|
|
|
bne L2465
|
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
jsr MONRDKEY
|
2008-10-06 10:32:35 +00:00
|
|
|
.endif
|
2008-10-07 05:52:42 +00:00
|
|
|
.ifdef OSI
|
2008-10-06 05:21:05 +00:00
|
|
|
nop
|
|
|
|
nop
|
|
|
|
nop
|
|
|
|
nop
|
|
|
|
nop
|
|
|
|
nop
|
|
|
|
nop
|
|
|
|
nop
|
|
|
|
nop
|
|
|
|
nop
|
|
|
|
nop
|
|
|
|
nop
|
|
|
|
nop
|
|
|
|
nop
|
|
|
|
and #$7F
|
2008-10-11 06:23:53 +00:00
|
|
|
.endif
|
2008-10-07 08:03:36 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
cmp #$0F
|
|
|
|
bne L2465
|
|
|
|
pha
|
|
|
|
lda Z14
|
|
|
|
eor #$FF
|
|
|
|
sta Z14
|
|
|
|
pla
|
|
|
|
L2465:
|
|
|
|
rts
|
2008-10-08 05:07:59 +00:00
|
|
|
.endif /* KBD */
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; TOKENIZE THE INPUT LINE
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
PARSE_INPUT_LINE:
|
|
|
|
ldx TXTPTR
|
|
|
|
ldy #$04
|
|
|
|
sty DATAFLG
|
|
|
|
L246C:
|
2008-10-09 07:32:26 +00:00
|
|
|
lda INPUTBUFFERX,x
|
2008-10-11 09:56:31 +00:00
|
|
|
.ifdef CONFIG_CBM_ALL
|
2008-10-06 10:32:35 +00:00
|
|
|
bpl LC49E
|
|
|
|
cmp #$FF
|
|
|
|
beq L24AC
|
|
|
|
inx
|
|
|
|
bne L246C
|
|
|
|
LC49E:
|
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
cmp #$20
|
|
|
|
beq L24AC
|
|
|
|
sta ENDCHR
|
|
|
|
cmp #$22
|
|
|
|
beq L24D0
|
|
|
|
bit DATAFLG
|
|
|
|
bvs L24AC
|
|
|
|
cmp #$3F
|
|
|
|
bne L2484
|
2008-10-09 08:23:42 +00:00
|
|
|
lda #TOKEN_PRINT
|
2008-10-06 05:21:05 +00:00
|
|
|
bne L24AC
|
|
|
|
L2484:
|
|
|
|
cmp #$30
|
|
|
|
bcc L248C
|
|
|
|
cmp #$3C
|
|
|
|
bcc L24AC
|
2008-10-13 01:12:57 +00:00
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; SEARCH TOKEN NAME TABLE FOR MATCH STARTING
|
|
|
|
; WITH CURRENT CHAR FROM INPUT LINE
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
L248C:
|
|
|
|
sty STRNG2
|
|
|
|
ldy #$00
|
|
|
|
sty EOLPNTR
|
|
|
|
dey
|
|
|
|
stx TXTPTR
|
|
|
|
dex
|
|
|
|
L2496:
|
|
|
|
iny
|
|
|
|
L2497:
|
|
|
|
inx
|
|
|
|
L2498:
|
2008-10-08 11:42:15 +00:00
|
|
|
.ifdef KBD
|
|
|
|
jsr LF42D
|
|
|
|
.else
|
2008-10-09 08:23:42 +00:00
|
|
|
lda INPUTBUFFERX,x
|
|
|
|
.ifndef CBM2
|
2008-10-06 05:21:05 +00:00
|
|
|
cmp #$20
|
|
|
|
beq L2497
|
2008-10-08 11:42:15 +00:00
|
|
|
.endif
|
2008-10-07 08:03:36 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
sec
|
|
|
|
sbc TOKEN_NAME_TABLE,y
|
|
|
|
beq L2496
|
|
|
|
cmp #$80
|
|
|
|
bne L24D7
|
|
|
|
ora EOLPNTR
|
2008-10-13 01:12:57 +00:00
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; STORE CHARACTER OR TOKEN IN OUTPUT LINE
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
L24AA:
|
|
|
|
ldy STRNG2
|
|
|
|
L24AC:
|
|
|
|
inx
|
|
|
|
iny
|
2008-10-07 08:03:36 +00:00
|
|
|
sta INPUTBUFFER-5,y
|
|
|
|
lda INPUTBUFFER-5,y
|
2008-10-06 05:21:05 +00:00
|
|
|
beq L24EA
|
|
|
|
sec
|
|
|
|
sbc #$3A
|
|
|
|
beq L24BF
|
|
|
|
cmp #$49
|
|
|
|
bne L24C1
|
|
|
|
L24BF:
|
|
|
|
sta DATAFLG
|
|
|
|
L24C1:
|
|
|
|
sec
|
2008-10-09 08:23:42 +00:00
|
|
|
sbc #TOKEN_REM-':'
|
2008-10-06 05:21:05 +00:00
|
|
|
bne L246C
|
|
|
|
sta ENDCHR
|
2008-10-13 01:12:57 +00:00
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; HANDLE LITERAL (BETWEEN QUOTES) OR REMARK,
|
|
|
|
; BY COPYING CHARS UP TO ENDCHR.
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
L24C8:
|
2008-10-09 08:23:42 +00:00
|
|
|
lda INPUTBUFFERX,x
|
2008-10-06 05:21:05 +00:00
|
|
|
beq L24AC
|
|
|
|
cmp ENDCHR
|
|
|
|
beq L24AC
|
|
|
|
L24D0:
|
|
|
|
iny
|
2008-10-07 08:03:36 +00:00
|
|
|
sta INPUTBUFFER-5,y
|
2008-10-06 05:21:05 +00:00
|
|
|
inx
|
|
|
|
bne L24C8
|
2008-10-13 01:12:57 +00:00
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; ADVANCE POINTER TO NEXT TOKEN NAME
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
L24D7:
|
|
|
|
ldx TXTPTR
|
|
|
|
inc EOLPNTR
|
|
|
|
L24DB:
|
|
|
|
iny
|
|
|
|
lda MATHTBL+28+1,y
|
|
|
|
bpl L24DB
|
|
|
|
lda TOKEN_NAME_TABLE,y
|
|
|
|
bne L2498
|
2008-10-09 08:23:42 +00:00
|
|
|
lda INPUTBUFFERX,x
|
2008-10-06 05:21:05 +00:00
|
|
|
bpl L24AA
|
2008-10-13 01:12:57 +00:00
|
|
|
; ---END OF LINE------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
L24EA:
|
2008-10-07 08:03:36 +00:00
|
|
|
sta INPUTBUFFER-3,y
|
2008-10-11 10:36:02 +00:00
|
|
|
.if INPUTBUFFER >= $0100
|
2008-10-07 08:03:36 +00:00
|
|
|
dec TXTPTR+1
|
|
|
|
.endif
|
2008-10-09 08:23:42 +00:00
|
|
|
lda #<INPUTBUFFER-1
|
2008-10-06 05:21:05 +00:00
|
|
|
sta TXTPTR
|
|
|
|
rts
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; SEARCH FOR LINE
|
|
|
|
;
|
|
|
|
; (LINNUM) = LINE # TO FIND
|
|
|
|
; IF NOT FOUND: CARRY = 0
|
|
|
|
; LOWTR POINTS AT NEXT LINE
|
|
|
|
; IF FOUND: CARRY = 1
|
|
|
|
; LOWTR POINTS AT LINE
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
FNDLIN:
|
2008-10-08 05:07:59 +00:00
|
|
|
.ifdef KBD
|
|
|
|
jsr CHRGET
|
|
|
|
jmp LE444
|
|
|
|
LE440:
|
|
|
|
php
|
|
|
|
jsr LINGET
|
|
|
|
LE444:
|
|
|
|
jsr LF457
|
|
|
|
ldx #$FF
|
|
|
|
plp
|
|
|
|
beq LE464
|
|
|
|
jsr CHRGOT
|
|
|
|
beq L2520
|
|
|
|
cmp #$A5
|
|
|
|
bne L2520
|
|
|
|
jsr CHRGET
|
|
|
|
beq LE464
|
|
|
|
bcs LE461
|
|
|
|
jsr LINGET
|
|
|
|
beq L2520
|
|
|
|
LE461:
|
|
|
|
jmp SYNERR
|
|
|
|
LE464:
|
|
|
|
stx $13
|
|
|
|
stx $14
|
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
lda TXTTAB
|
|
|
|
ldx TXTTAB+1
|
|
|
|
FL1:
|
|
|
|
ldy #$01
|
|
|
|
sta LOWTR
|
|
|
|
stx LOWTR+1
|
|
|
|
lda (LOWTR),y
|
|
|
|
beq L251F
|
|
|
|
iny
|
|
|
|
iny
|
|
|
|
lda LINNUM+1
|
|
|
|
cmp (LOWTR),y
|
|
|
|
bcc L2520
|
|
|
|
beq L250D
|
|
|
|
dey
|
|
|
|
bne L2516
|
|
|
|
L250D:
|
|
|
|
lda LINNUM
|
|
|
|
dey
|
|
|
|
cmp (LOWTR),y
|
|
|
|
bcc L2520
|
|
|
|
beq L2520
|
|
|
|
L2516:
|
|
|
|
dey
|
|
|
|
lda (LOWTR),y
|
|
|
|
tax
|
|
|
|
dey
|
|
|
|
lda (LOWTR),y
|
|
|
|
bcs FL1
|
|
|
|
L251F:
|
|
|
|
clc
|
2008-10-08 05:07:59 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
L2520:
|
|
|
|
rts
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; "NEW" STATEMENT
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
NEW:
|
|
|
|
bne L2520
|
|
|
|
SCRTCH:
|
|
|
|
lda #$00
|
|
|
|
tay
|
|
|
|
sta (TXTTAB),y
|
|
|
|
iny
|
|
|
|
sta (TXTTAB),y
|
|
|
|
lda TXTTAB
|
2008-10-08 05:07:59 +00:00
|
|
|
.ifdef CBM2_KBD
|
2008-10-07 08:03:36 +00:00
|
|
|
clc
|
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
adc #$02
|
|
|
|
sta VARTAB
|
|
|
|
lda TXTTAB+1
|
|
|
|
adc #$00
|
|
|
|
sta VARTAB+1
|
2008-10-13 01:12:57 +00:00
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
SETPTRS:
|
|
|
|
jsr STXTPT
|
2008-10-11 06:23:53 +00:00
|
|
|
.ifndef APPLE
|
2008-10-07 10:36:34 +00:00
|
|
|
.ifdef CONFIG_11
|
2008-10-06 05:21:05 +00:00
|
|
|
lda #$00
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; "CLEAR" STATEMENT
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
CLEAR:
|
|
|
|
bne L256A
|
2008-10-07 05:52:42 +00:00
|
|
|
.endif
|
2008-10-11 06:23:53 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
CLEARC:
|
2008-10-08 06:08:08 +00:00
|
|
|
.ifdef KBD
|
|
|
|
lda #<CONST_MEMSIZ
|
|
|
|
ldy #>CONST_MEMSIZ
|
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
lda MEMSIZ
|
|
|
|
ldy MEMSIZ+1
|
2008-10-08 06:08:08 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
sta FRETOP
|
|
|
|
sty FRETOP+1
|
2008-10-11 09:56:31 +00:00
|
|
|
.ifdef CONFIG_CBM_ALL
|
2008-10-07 04:44:27 +00:00
|
|
|
jsr CLALL
|
2008-10-06 10:32:35 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
lda VARTAB
|
|
|
|
ldy VARTAB+1
|
|
|
|
sta ARYTAB
|
|
|
|
sty ARYTAB+1
|
|
|
|
sta STREND
|
|
|
|
sty STREND+1
|
|
|
|
jsr RESTORE
|
2008-10-13 01:12:57 +00:00
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
STKINI:
|
|
|
|
ldx #TEMPST
|
|
|
|
stx TEMPPT
|
|
|
|
pla
|
2008-10-08 05:07:59 +00:00
|
|
|
.ifdef CBM2_KBD
|
2008-10-07 08:03:36 +00:00
|
|
|
tay
|
2008-10-11 07:15:19 +00:00
|
|
|
.else
|
|
|
|
.ifdef APPLE
|
|
|
|
sta STACK+249
|
2008-10-07 08:03:36 +00:00
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
sta STACK+253
|
2008-10-11 07:15:19 +00:00
|
|
|
.endif
|
2008-10-07 08:03:36 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
pla
|
2008-10-08 05:07:59 +00:00
|
|
|
.ifndef CBM2_KBD
|
2008-10-11 07:15:19 +00:00
|
|
|
.ifdef APPLE
|
|
|
|
sta STACK+250
|
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
sta STACK+254
|
2008-10-11 07:15:19 +00:00
|
|
|
.endif
|
2008-10-07 08:03:36 +00:00
|
|
|
.endif
|
2008-10-09 08:23:42 +00:00
|
|
|
ldx #STACK_TOP
|
2008-10-06 05:21:05 +00:00
|
|
|
txs
|
2008-10-08 05:07:59 +00:00
|
|
|
.ifdef CBM2_KBD
|
2008-10-07 08:03:36 +00:00
|
|
|
pha
|
|
|
|
tya
|
|
|
|
pha
|
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
lda #$00
|
|
|
|
sta OLDTEXT+1
|
|
|
|
sta SUBFLG
|
|
|
|
L256A:
|
|
|
|
rts
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; SET TXTPTR TO BEGINNING OF PROGRAM
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
STXTPT:
|
|
|
|
clc
|
|
|
|
lda TXTTAB
|
|
|
|
adc #$FF
|
|
|
|
sta TXTPTR
|
|
|
|
lda TXTTAB+1
|
|
|
|
adc #$FF
|
|
|
|
sta TXTPTR+1
|
|
|
|
rts
|
2008-10-08 05:07:59 +00:00
|
|
|
.ifdef KBD
|
2008-10-08 11:42:15 +00:00
|
|
|
LE4C0:
|
2008-10-09 09:18:45 +00:00
|
|
|
ldy #<LE444
|
|
|
|
ldx #>LE444
|
2008-10-08 05:07:59 +00:00
|
|
|
LE4C4:
|
|
|
|
jsr LFFD6
|
|
|
|
jsr LFFED
|
|
|
|
lda $0504
|
|
|
|
clc
|
|
|
|
adc #$08
|
|
|
|
sta $0504
|
|
|
|
rts
|
|
|
|
LE4D4:
|
|
|
|
lda $01,x
|
|
|
|
cmp JMPADRS+2
|
|
|
|
bne LE4DE
|
|
|
|
lda $00,x
|
|
|
|
cmp JMPADRS+1
|
|
|
|
LE4DE:
|
|
|
|
rts
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; "LIST" STATEMENT
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-08 05:07:59 +00:00
|
|
|
LIST:
|
|
|
|
jsr LE440
|
|
|
|
bne LE4DE
|
|
|
|
pla
|
|
|
|
pla
|
|
|
|
L25A6:
|
|
|
|
jsr CRDO
|
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
LIST:
|
|
|
|
bcc L2581
|
|
|
|
beq L2581
|
|
|
|
cmp #TOKEN_MINUS
|
|
|
|
bne L256A
|
|
|
|
L2581:
|
|
|
|
jsr LINGET
|
|
|
|
jsr FNDLIN
|
|
|
|
jsr CHRGOT
|
|
|
|
beq L2598
|
|
|
|
cmp #TOKEN_MINUS
|
|
|
|
bne L2520
|
|
|
|
jsr CHRGET
|
|
|
|
jsr LINGET
|
|
|
|
bne L2520
|
|
|
|
L2598:
|
|
|
|
pla
|
|
|
|
pla
|
|
|
|
lda LINNUM
|
|
|
|
ora LINNUM+1
|
|
|
|
bne L25A6
|
|
|
|
lda #$FF
|
|
|
|
sta LINNUM
|
|
|
|
sta LINNUM+1
|
|
|
|
L25A6:
|
2008-10-08 05:07:59 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
ldy #$01
|
2008-10-11 10:44:10 +00:00
|
|
|
.ifdef CONFIG_DATAFLAG
|
2008-10-06 05:21:05 +00:00
|
|
|
sty DATAFLG
|
2008-10-07 08:03:36 +00:00
|
|
|
.endif
|
2008-10-08 11:42:15 +00:00
|
|
|
lda (LOWTRX),y
|
2008-10-06 05:21:05 +00:00
|
|
|
beq L25E5
|
|
|
|
jsr ISCNTC
|
2008-10-08 05:07:59 +00:00
|
|
|
.ifndef KBD
|
2008-10-06 05:21:05 +00:00
|
|
|
jsr CRDO
|
2008-10-08 05:07:59 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
iny
|
2008-10-08 11:42:15 +00:00
|
|
|
lda (LOWTRX),y
|
2008-10-06 05:21:05 +00:00
|
|
|
tax
|
|
|
|
iny
|
2008-10-08 11:42:15 +00:00
|
|
|
lda (LOWTRX),y
|
2008-10-06 05:21:05 +00:00
|
|
|
cmp LINNUM+1
|
|
|
|
bne L25C1
|
|
|
|
cpx LINNUM
|
|
|
|
beq L25C3
|
|
|
|
L25C1:
|
|
|
|
bcs L25E5
|
2008-10-13 01:12:57 +00:00
|
|
|
; ---LIST ONE LINE----------------
|
2008-10-06 05:21:05 +00:00
|
|
|
L25C3:
|
|
|
|
sty FORPNT
|
|
|
|
jsr LINPRT
|
|
|
|
lda #$20
|
|
|
|
L25CA:
|
|
|
|
ldy FORPNT
|
|
|
|
and #$7F
|
|
|
|
L25CE:
|
|
|
|
jsr OUTDO
|
2008-10-11 10:44:10 +00:00
|
|
|
.ifdef CONFIG_DATAFLAG
|
2008-10-06 05:21:05 +00:00
|
|
|
cmp #$22
|
|
|
|
bne LA519
|
|
|
|
lda DATAFLG
|
|
|
|
eor #$FF
|
|
|
|
sta DATAFLG
|
|
|
|
LA519:
|
2008-10-07 08:03:36 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
iny
|
2008-10-07 10:36:34 +00:00
|
|
|
.ifdef CONFIG_11
|
2008-10-06 05:21:05 +00:00
|
|
|
beq L25E5
|
2008-10-07 05:52:42 +00:00
|
|
|
.endif
|
2008-10-08 11:42:15 +00:00
|
|
|
lda (LOWTRX),y
|
2008-10-06 05:21:05 +00:00
|
|
|
bne L25E8
|
|
|
|
tay
|
2008-10-08 11:42:15 +00:00
|
|
|
lda (LOWTRX),y
|
2008-10-06 05:21:05 +00:00
|
|
|
tax
|
|
|
|
iny
|
2008-10-08 11:42:15 +00:00
|
|
|
lda (LOWTRX),y
|
|
|
|
stx LOWTRX
|
|
|
|
sta LOWTRX+1
|
2008-10-06 05:21:05 +00:00
|
|
|
bne L25A6
|
|
|
|
L25E5:
|
|
|
|
jmp RESTART
|
|
|
|
L25E8:
|
|
|
|
bpl L25CE
|
2008-10-11 10:44:10 +00:00
|
|
|
.ifdef CONFIG_DATAFLAG
|
2008-10-06 05:21:05 +00:00
|
|
|
cmp #$FF
|
|
|
|
beq L25CE
|
|
|
|
bit DATAFLG
|
|
|
|
bmi L25CE
|
2008-10-07 08:03:36 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
sec
|
|
|
|
sbc #$7F
|
|
|
|
tax
|
|
|
|
sty FORPNT
|
|
|
|
ldy #$FF
|
|
|
|
L25F2:
|
|
|
|
dex
|
|
|
|
beq L25FD
|
|
|
|
L25F5:
|
|
|
|
iny
|
|
|
|
lda TOKEN_NAME_TABLE,y
|
|
|
|
bpl L25F5
|
|
|
|
bmi L25F2
|
|
|
|
L25FD:
|
|
|
|
iny
|
|
|
|
lda TOKEN_NAME_TABLE,y
|
|
|
|
bmi L25CA
|
|
|
|
jsr OUTDO
|
|
|
|
bne L25FD
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; "FOR" STATEMENT
|
|
|
|
;
|
|
|
|
; FOR PUSHES 18 BYTES ON THE STACK:
|
|
|
|
; 2 -- TXTPTR
|
|
|
|
; 2 -- LINE NUMBER
|
|
|
|
; 5 -- INITIAL (CURRENT) FOR VARIABLE VALUE
|
|
|
|
; 1 -- STEP SIGN
|
|
|
|
; 5 -- STEP VALUE
|
|
|
|
; 2 -- ADDRESS OF FOR VARIABLE IN VARTAB
|
|
|
|
; 1 -- FOR TOKEN ($81)
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
FOR:
|
|
|
|
lda #$80
|
|
|
|
sta SUBFLG
|
|
|
|
jsr LET
|
|
|
|
jsr GTFORPNT
|
|
|
|
bne L2619
|
|
|
|
txa
|
|
|
|
adc #FOR_STACK1
|
|
|
|
tax
|
|
|
|
txs
|
|
|
|
L2619:
|
|
|
|
pla
|
|
|
|
pla
|
|
|
|
lda #FOR_STACK2
|
|
|
|
jsr CHKMEM
|
|
|
|
jsr DATAN
|
|
|
|
clc
|
|
|
|
tya
|
|
|
|
adc TXTPTR
|
|
|
|
pha
|
|
|
|
lda TXTPTR+1
|
|
|
|
adc #$00
|
|
|
|
pha
|
|
|
|
lda CURLIN+1
|
|
|
|
pha
|
|
|
|
lda CURLIN
|
|
|
|
pha
|
|
|
|
lda #TOKEN_TO
|
|
|
|
jsr SYNCHR
|
|
|
|
jsr CHKNUM
|
|
|
|
jsr FRMNUM
|
|
|
|
lda FACSIGN
|
|
|
|
ora #$7F
|
|
|
|
and FAC+1
|
|
|
|
sta FAC+1
|
|
|
|
lda #<STEP
|
|
|
|
ldy #>STEP
|
|
|
|
sta INDEX
|
|
|
|
sty INDEX+1
|
2008-10-13 01:12:57 +00:00
|
|
|
jmp FRM_STACK3
|
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; "STEP" PHRASE OF "FOR" STATEMENT
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
STEP:
|
|
|
|
lda #<CON_ONE
|
|
|
|
ldy #>CON_ONE
|
|
|
|
jsr LOAD_FAC_FROM_YA
|
|
|
|
jsr CHRGOT
|
|
|
|
cmp #TOKEN_STEP
|
|
|
|
bne L2665
|
|
|
|
jsr CHRGET
|
|
|
|
jsr FRMNUM
|
|
|
|
L2665:
|
|
|
|
jsr SIGN
|
|
|
|
jsr FRM_STACK2
|
|
|
|
lda FORPNT+1
|
|
|
|
pha
|
|
|
|
lda FORPNT
|
|
|
|
pha
|
|
|
|
lda #$81
|
|
|
|
pha
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; PERFORM NEXT STATEMENT
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
NEWSTT:
|
|
|
|
jsr ISCNTC
|
|
|
|
lda TXTPTR
|
|
|
|
ldy TXTPTR+1
|
2008-10-09 09:18:45 +00:00
|
|
|
.ifdef CBM2_KBD
|
|
|
|
cpy #>INPUTBUFFER
|
|
|
|
.endif
|
2008-10-08 06:08:08 +00:00
|
|
|
.ifdef CBM2
|
2008-10-07 08:03:36 +00:00
|
|
|
nop
|
2008-10-09 09:18:45 +00:00
|
|
|
.endif
|
|
|
|
.ifdef CBM2_KBD
|
2008-10-08 11:42:15 +00:00
|
|
|
beq LC6D4
|
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
beq L2683
|
2008-10-07 08:03:36 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
sta OLDTEXT
|
|
|
|
sty OLDTEXT+1
|
2008-10-07 08:03:36 +00:00
|
|
|
LC6D4:
|
2008-10-06 05:21:05 +00:00
|
|
|
ldy #$00
|
|
|
|
L2683:
|
|
|
|
lda (TXTPTR),y
|
2008-10-07 10:36:34 +00:00
|
|
|
.ifndef CONFIG_11
|
2008-10-06 05:21:05 +00:00
|
|
|
beq LA5DC
|
|
|
|
cmp #$3A
|
|
|
|
beq NEWSTT2
|
|
|
|
SYNERR1:
|
|
|
|
jmp SYNERR
|
|
|
|
LA5DC:
|
2008-10-07 05:52:42 +00:00
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
bne COLON
|
2008-10-07 05:52:42 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
ldy #$02
|
|
|
|
lda (TXTPTR),y
|
|
|
|
clc
|
2008-10-08 05:07:59 +00:00
|
|
|
.ifdef CBM2_KBD
|
2008-10-09 09:18:45 +00:00
|
|
|
jeq L2701
|
2008-10-07 08:03:36 +00:00
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
beq L2701
|
2008-10-07 08:03:36 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
iny
|
|
|
|
lda (TXTPTR),y
|
|
|
|
sta CURLIN
|
|
|
|
iny
|
|
|
|
lda (TXTPTR),y
|
|
|
|
sta CURLIN+1
|
|
|
|
tya
|
|
|
|
adc TXTPTR
|
|
|
|
sta TXTPTR
|
|
|
|
bcc NEWSTT2
|
|
|
|
inc TXTPTR+1
|
|
|
|
NEWSTT2:
|
|
|
|
jsr CHRGET
|
|
|
|
jsr EXECUTE_STATEMENT
|
|
|
|
jmp NEWSTT
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; EXECUTE A STATEMENT
|
|
|
|
;
|
|
|
|
; (A) IS FIRST CHAR OF STATEMENT
|
|
|
|
; CARRY IS SET
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
EXECUTE_STATEMENT:
|
2008-10-11 07:15:19 +00:00
|
|
|
.ifndef CONFIG_11_NOAPPLE
|
2008-10-06 05:21:05 +00:00
|
|
|
beq RET1
|
2008-10-11 07:15:19 +00:00
|
|
|
.ifndef APPLE
|
2008-10-06 05:21:05 +00:00
|
|
|
sec
|
2008-10-11 07:15:19 +00:00
|
|
|
.endif
|
2008-10-07 05:52:42 +00:00
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
beq RET2
|
2008-10-07 05:52:42 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
EXECUTE_STATEMENT1:
|
|
|
|
sbc #$80
|
2008-10-07 10:36:34 +00:00
|
|
|
.ifndef CONFIG_11
|
2008-10-09 09:18:45 +00:00
|
|
|
jcc LET
|
2008-10-07 05:52:42 +00:00
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
bcc LET1
|
2008-10-07 05:52:42 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
cmp #NUM_TOKENS
|
2008-10-08 05:07:59 +00:00
|
|
|
.ifdef CBM2_KBD
|
2008-10-07 10:05:20 +00:00
|
|
|
bcs LC721
|
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
bcs SYNERR1
|
2008-10-07 10:05:20 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
asl a
|
|
|
|
tay
|
|
|
|
lda TOKEN_ADDRESS_TABLE+1,y
|
|
|
|
pha
|
|
|
|
lda TOKEN_ADDRESS_TABLE,y
|
|
|
|
pha
|
|
|
|
jmp CHRGET
|
2008-10-07 10:36:34 +00:00
|
|
|
.ifdef CONFIG_11
|
2008-10-06 05:21:05 +00:00
|
|
|
LET1:
|
|
|
|
jmp LET
|
|
|
|
COLON:
|
|
|
|
cmp #$3A
|
|
|
|
beq NEWSTT2
|
|
|
|
SYNERR1:
|
|
|
|
jmp SYNERR
|
2008-10-07 05:52:42 +00:00
|
|
|
.endif
|
2008-10-08 05:07:59 +00:00
|
|
|
.ifdef CBM2_KBD
|
2008-10-07 10:05:20 +00:00
|
|
|
LC721:
|
2008-10-08 06:08:08 +00:00
|
|
|
.ifdef KBD
|
|
|
|
cmp #$45
|
|
|
|
.else
|
2008-10-07 08:03:36 +00:00
|
|
|
cmp #$4B
|
2008-10-08 06:08:08 +00:00
|
|
|
.endif
|
2008-10-07 08:03:36 +00:00
|
|
|
bne SYNERR1
|
|
|
|
jsr CHRGET
|
2008-10-09 10:35:37 +00:00
|
|
|
lda #TOKEN_TO
|
2008-10-07 08:03:36 +00:00
|
|
|
jsr SYNCHR
|
|
|
|
jmp GOTO
|
|
|
|
.endif
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; "RESTORE" STATEMENT
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
RESTORE:
|
|
|
|
sec
|
|
|
|
lda TXTTAB
|
|
|
|
sbc #$01
|
|
|
|
ldy TXTTAB+1
|
|
|
|
bcs SETDA
|
|
|
|
dey
|
|
|
|
SETDA:
|
|
|
|
sta DATPTR
|
|
|
|
sty DATPTR+1
|
|
|
|
RET2:
|
|
|
|
rts
|
2008-10-11 09:56:31 +00:00
|
|
|
.ifndef CONFIG_CBM_ALL
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; SEE IF CONTROL-C TYPED
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
ISCNTC:
|
2008-10-07 04:44:27 +00:00
|
|
|
.endif
|
2008-10-11 10:14:29 +00:00
|
|
|
.ifdef KBD
|
|
|
|
jsr LE8F3
|
|
|
|
bcc RET1
|
|
|
|
LE633:
|
|
|
|
jsr LDE7F
|
|
|
|
beq STOP
|
|
|
|
cmp #$03
|
|
|
|
bne LE633
|
2008-10-11 06:23:53 +00:00
|
|
|
.endif
|
2008-10-08 06:08:08 +00:00
|
|
|
.ifdef OSI
|
2008-10-06 05:21:05 +00:00
|
|
|
jmp MONISCNTC
|
|
|
|
nop
|
|
|
|
nop
|
|
|
|
nop
|
|
|
|
nop
|
|
|
|
lsr a
|
|
|
|
bcc RET2
|
|
|
|
jsr GETLN
|
2008-10-11 10:14:29 +00:00
|
|
|
cmp #$03
|
|
|
|
.endif
|
|
|
|
.ifdef APPLE
|
|
|
|
lda $C000
|
|
|
|
cmp #$83
|
|
|
|
beq L0ECC
|
|
|
|
rts
|
|
|
|
L0ECC:
|
|
|
|
jsr RDKEY
|
|
|
|
cmp #$03
|
2008-10-06 10:32:35 +00:00
|
|
|
.endif
|
|
|
|
.ifdef KIM
|
2008-10-06 05:21:05 +00:00
|
|
|
lda #$01
|
|
|
|
bit $1740
|
|
|
|
bmi RET2
|
|
|
|
ldx #$08
|
|
|
|
lda #$03
|
|
|
|
clc
|
|
|
|
cmp #$03
|
2008-10-06 10:32:35 +00:00
|
|
|
.endif
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; "STOP" STATEMENT
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
STOP:
|
|
|
|
bcs END2
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; "END" STATEMENT
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
END:
|
|
|
|
clc
|
|
|
|
END2:
|
|
|
|
bne RET1
|
|
|
|
lda TXTPTR
|
|
|
|
ldy TXTPTR+1
|
2008-10-08 05:07:59 +00:00
|
|
|
.ifdef CBM2_KBD
|
2008-10-08 06:08:08 +00:00
|
|
|
ldx CURLIN+1
|
2008-10-07 08:03:36 +00:00
|
|
|
inx
|
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
beq END4
|
|
|
|
sta OLDTEXT
|
|
|
|
sty OLDTEXT+1
|
|
|
|
CONTROL_C_TYPED:
|
|
|
|
lda CURLIN
|
|
|
|
ldy CURLIN+1
|
|
|
|
sta OLDLIN
|
|
|
|
sty OLDLIN+1
|
|
|
|
END4:
|
|
|
|
pla
|
|
|
|
pla
|
|
|
|
L2701:
|
|
|
|
lda #<QT_BREAK
|
|
|
|
ldy #>QT_BREAK
|
2008-10-08 06:08:08 +00:00
|
|
|
.ifndef KBD
|
2008-10-06 05:21:05 +00:00
|
|
|
ldx #$00
|
|
|
|
stx Z14
|
2008-10-08 06:08:08 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
bcc L270E
|
|
|
|
jmp PRINT_ERROR_LINNUM
|
|
|
|
L270E:
|
|
|
|
jmp RESTART
|
2008-10-08 06:08:08 +00:00
|
|
|
.ifdef KBD
|
|
|
|
LE664:
|
|
|
|
tay
|
2008-10-08 11:42:15 +00:00
|
|
|
jmp SNGFLT
|
2008-10-08 06:08:08 +00:00
|
|
|
.endif
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; "CONT" COMMAND
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
CONT:
|
|
|
|
bne RET1
|
|
|
|
ldx #ERR_CANTCONT
|
|
|
|
ldy OLDTEXT+1
|
|
|
|
bne L271C
|
|
|
|
jmp ERROR
|
|
|
|
L271C:
|
|
|
|
lda OLDTEXT
|
|
|
|
sta TXTPTR
|
|
|
|
sty TXTPTR+1
|
|
|
|
lda OLDLIN
|
|
|
|
ldy OLDLIN+1
|
|
|
|
sta CURLIN
|
|
|
|
sty CURLIN+1
|
|
|
|
RET1:
|
|
|
|
rts
|
2008-10-08 06:08:08 +00:00
|
|
|
.ifdef KBD
|
2008-10-08 11:42:15 +00:00
|
|
|
PRT:
|
2008-10-08 06:08:08 +00:00
|
|
|
jsr GETBYT
|
|
|
|
txa
|
|
|
|
ror a
|
|
|
|
ror a
|
|
|
|
ror a
|
|
|
|
sta $8F
|
|
|
|
rts
|
|
|
|
LE68C:
|
|
|
|
ldy #$12
|
|
|
|
LE68E:
|
|
|
|
lda LEA30,y
|
|
|
|
sta $03A2,y
|
|
|
|
dey
|
|
|
|
bpl LE68E
|
|
|
|
rts
|
|
|
|
.endif
|
2008-10-11 10:36:02 +00:00
|
|
|
.if .def(CONFIG_NULL) || .def(CBM1)
|
|
|
|
; CBM1 has the keyword removed,
|
|
|
|
; but the code is, still here
|
2008-10-06 05:21:05 +00:00
|
|
|
NULL:
|
|
|
|
jsr GETBYT
|
|
|
|
bne RET1
|
|
|
|
inx
|
|
|
|
cpx #NULL_MAX
|
|
|
|
bcs L2739
|
|
|
|
dex
|
|
|
|
stx Z15
|
|
|
|
rts
|
|
|
|
L2739:
|
|
|
|
jmp IQERR
|
2008-10-07 08:03:36 +00:00
|
|
|
.endif
|
2008-10-11 07:15:19 +00:00
|
|
|
.ifndef CONFIG_11_NOAPPLE
|
2008-10-06 05:21:05 +00:00
|
|
|
CLEAR:
|
|
|
|
bne RET1
|
|
|
|
jmp CLEARC
|
2008-10-07 08:03:36 +00:00
|
|
|
.endif
|
2008-10-11 07:15:19 +00:00
|
|
|
.ifdef APPLE
|
|
|
|
SAVE:
|
|
|
|
jsr L0F42
|
|
|
|
jsr LFECD
|
|
|
|
jsr L0F51
|
|
|
|
jmp LFECD
|
|
|
|
LOAD:
|
|
|
|
jsr L0F42
|
|
|
|
jsr LFEFD
|
|
|
|
jsr L0F51
|
|
|
|
jsr LFEFD
|
|
|
|
lda #<QT_LOADED
|
|
|
|
ldy #>QT_LOADED
|
|
|
|
jsr STROUT
|
|
|
|
jmp FIX_LINKS
|
|
|
|
QT_LOADED:
|
|
|
|
.byte 0 ; XXX PATCHED
|
|
|
|
.byte "OADED"
|
|
|
|
.byte 0
|
|
|
|
L0F42:
|
|
|
|
lda #$6C
|
|
|
|
ldy #$00
|
|
|
|
sta $3C
|
|
|
|
sty $3D
|
|
|
|
lda #$6E
|
|
|
|
sta $3E
|
|
|
|
sty $3F
|
|
|
|
rts
|
|
|
|
L0F51:
|
|
|
|
lda $6A
|
|
|
|
ldy $6B
|
|
|
|
sta $3C
|
|
|
|
sty $3D
|
|
|
|
lda $6C
|
|
|
|
ldy $6D
|
|
|
|
sta $3E
|
|
|
|
sty $3F
|
|
|
|
rts
|
|
|
|
.endif
|
2008-10-07 08:03:36 +00:00
|
|
|
.ifdef KIM
|
2008-10-06 05:21:05 +00:00
|
|
|
SAVE:
|
|
|
|
tsx
|
|
|
|
stx INPUTFLG
|
|
|
|
lda #$37
|
|
|
|
sta $F2
|
|
|
|
lda #$FE
|
|
|
|
sta $17F9
|
|
|
|
lda TXTTAB
|
|
|
|
ldy TXTTAB+1
|
|
|
|
sta $17F5
|
|
|
|
sty $17F6
|
|
|
|
lda VARTAB
|
|
|
|
ldy VARTAB+1
|
|
|
|
sta $17F7
|
|
|
|
sty $17F8
|
|
|
|
jmp L1800
|
|
|
|
ldx INPUTFLG
|
|
|
|
txs
|
2008-10-07 04:44:27 +00:00
|
|
|
lda #<QT_SAVED
|
|
|
|
ldy #>QT_SAVED
|
2008-10-06 05:21:05 +00:00
|
|
|
jmp STROUT
|
2008-10-07 04:44:27 +00:00
|
|
|
QT_LOADED:
|
2008-10-06 05:21:05 +00:00
|
|
|
.byte "LOADED"
|
|
|
|
.byte $00
|
2008-10-07 04:44:27 +00:00
|
|
|
QT_SAVED:
|
2008-10-06 05:21:05 +00:00
|
|
|
.byte "SAVED"
|
|
|
|
.byte $0D,$0A,$00,$00,$00,$00,$00,$00
|
|
|
|
.byte $00,$00,$00,$00,$00,$00,$00,$00
|
|
|
|
.byte $00,$00,$00,$00,$00,$00,$00
|
|
|
|
LOAD:
|
|
|
|
lda TXTTAB
|
|
|
|
ldy TXTTAB+1
|
|
|
|
sta $17F5
|
|
|
|
sty $17F6
|
|
|
|
lda #$FF
|
|
|
|
sta $17F9
|
|
|
|
lda #$A6
|
2008-10-09 09:18:45 +00:00
|
|
|
ldy #$27 ; XXX
|
2008-10-06 05:21:05 +00:00
|
|
|
sta L0001
|
2008-10-11 09:24:32 +00:00
|
|
|
sty L0001+1
|
2008-10-06 05:21:05 +00:00
|
|
|
jmp L1873
|
|
|
|
ldx #$FF
|
|
|
|
txs
|
|
|
|
lda #$48
|
2008-10-09 09:18:45 +00:00
|
|
|
ldy #$23 ; XXX
|
2008-10-06 05:21:05 +00:00
|
|
|
sta L0001
|
2008-10-11 09:24:32 +00:00
|
|
|
sty L0001+1
|
2008-10-07 04:44:27 +00:00
|
|
|
lda #<QT_LOADED
|
|
|
|
ldy #>QT_LOADED
|
2008-10-06 05:21:05 +00:00
|
|
|
jsr STROUT
|
|
|
|
ldx $17ED
|
|
|
|
ldy $17EE
|
|
|
|
txa
|
|
|
|
bne L27C2
|
|
|
|
nop
|
|
|
|
L27C2:
|
|
|
|
nop
|
|
|
|
stx VARTAB
|
|
|
|
sty VARTAB+1
|
|
|
|
jmp FIX_LINKS
|
2008-10-07 05:52:42 +00:00
|
|
|
.endif
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; "RUN" COMMAND
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
RUN:
|
|
|
|
bne L27CF
|
|
|
|
jmp SETPTRS
|
|
|
|
L27CF:
|
|
|
|
jsr CLEARC
|
|
|
|
jmp L27E9
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; "GOSUB" STATEMENT
|
|
|
|
;
|
|
|
|
; LEAVES 7 BYTES ON STACK:
|
|
|
|
; 2 -- RETURN ADDRESS (NEWSTT)
|
|
|
|
; 2 -- TXTPTR
|
|
|
|
; 2 -- LINE #
|
|
|
|
; 1 -- GOSUB TOKEN
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
GOSUB:
|
|
|
|
lda #$03
|
|
|
|
jsr CHKMEM
|
|
|
|
lda TXTPTR+1
|
|
|
|
pha
|
|
|
|
lda TXTPTR
|
|
|
|
pha
|
|
|
|
lda CURLIN+1
|
|
|
|
pha
|
|
|
|
lda CURLIN
|
|
|
|
pha
|
2008-10-09 09:18:45 +00:00
|
|
|
lda #TOKEN_GOSUB
|
2008-10-06 05:21:05 +00:00
|
|
|
pha
|
|
|
|
L27E9:
|
|
|
|
jsr CHRGOT
|
|
|
|
jsr GOTO
|
|
|
|
jmp NEWSTT
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; "GOTO" STATEMENT
|
|
|
|
; ALSO USED BY "RUN" AND "GOSUB"
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
GOTO:
|
|
|
|
jsr LINGET
|
|
|
|
jsr REMN
|
|
|
|
lda CURLIN+1
|
|
|
|
cmp LINNUM+1
|
|
|
|
bcs L2809
|
|
|
|
tya
|
|
|
|
sec
|
|
|
|
adc TXTPTR
|
|
|
|
ldx TXTPTR+1
|
|
|
|
bcc L280D
|
|
|
|
inx
|
|
|
|
bcs L280D
|
|
|
|
L2809:
|
|
|
|
lda TXTTAB
|
|
|
|
ldx TXTTAB+1
|
|
|
|
L280D:
|
2008-10-08 06:08:08 +00:00
|
|
|
.ifdef KBD
|
2008-10-08 11:42:15 +00:00
|
|
|
jsr LF457
|
2008-10-08 06:08:08 +00:00
|
|
|
bne UNDERR
|
|
|
|
.else
|
2008-10-08 11:42:15 +00:00
|
|
|
jsr FL1
|
2008-10-06 05:21:05 +00:00
|
|
|
bcc UNDERR
|
2008-10-08 06:08:08 +00:00
|
|
|
.endif
|
2008-10-08 11:42:15 +00:00
|
|
|
lda LOWTRX
|
2008-10-06 05:21:05 +00:00
|
|
|
sbc #$01
|
|
|
|
sta TXTPTR
|
2008-10-08 11:42:15 +00:00
|
|
|
lda LOWTRX+1
|
2008-10-06 05:21:05 +00:00
|
|
|
sbc #$00
|
|
|
|
sta TXTPTR+1
|
|
|
|
L281E:
|
|
|
|
rts
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; "POP" AND "RETURN" STATEMENTS
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
POP:
|
|
|
|
bne L281E
|
|
|
|
lda #$FF
|
2008-10-08 05:07:59 +00:00
|
|
|
.ifdef CBM2_KBD
|
2008-10-11 06:23:53 +00:00
|
|
|
sta FORPNT+1 ; bugfix, wrong in AppleSoft
|
2008-10-07 10:05:20 +00:00
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
sta FORPNT
|
2008-10-07 10:05:20 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
jsr GTFORPNT
|
|
|
|
txs
|
2008-10-09 09:18:45 +00:00
|
|
|
cmp #TOKEN_GOSUB
|
2008-10-06 05:21:05 +00:00
|
|
|
beq RETURN
|
|
|
|
ldx #ERR_NOGOSUB
|
|
|
|
.byte $2C
|
|
|
|
UNDERR:
|
|
|
|
ldx #ERR_UNDEFSTAT
|
|
|
|
jmp ERROR
|
2008-10-13 01:12:57 +00:00
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
SYNERR2:
|
|
|
|
jmp SYNERR
|
2008-10-13 01:12:57 +00:00
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
RETURN:
|
|
|
|
pla
|
|
|
|
pla
|
|
|
|
sta CURLIN
|
|
|
|
pla
|
|
|
|
sta CURLIN+1
|
|
|
|
pla
|
|
|
|
sta TXTPTR
|
|
|
|
pla
|
|
|
|
sta TXTPTR+1
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; "DATA" STATEMENT
|
|
|
|
; EXECUTED BY SKIPPING TO NEXT COLON OR EOL
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
DATA:
|
|
|
|
jsr DATAN
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; ADD (Y) TO TXTPTR
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
ADDON:
|
|
|
|
tya
|
|
|
|
clc
|
|
|
|
adc TXTPTR
|
|
|
|
sta TXTPTR
|
|
|
|
bcc L2852
|
|
|
|
inc TXTPTR+1
|
|
|
|
L2852:
|
|
|
|
rts
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; SCAN AHEAD TO NEXT ":" OR EOL
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
DATAN:
|
|
|
|
ldx #$3A
|
|
|
|
.byte $2C
|
|
|
|
REMN:
|
|
|
|
ldx #$00
|
|
|
|
stx CHARAC
|
|
|
|
ldy #$00
|
|
|
|
sty ENDCHR
|
|
|
|
L285E:
|
|
|
|
lda ENDCHR
|
|
|
|
ldx CHARAC
|
|
|
|
sta CHARAC
|
|
|
|
stx ENDCHR
|
|
|
|
L2866:
|
|
|
|
lda (TXTPTR),y
|
|
|
|
beq L2852
|
|
|
|
cmp ENDCHR
|
|
|
|
beq L2852
|
|
|
|
iny
|
|
|
|
cmp #$22
|
2008-10-07 10:36:34 +00:00
|
|
|
.ifndef CONFIG_11
|
2008-10-06 05:21:05 +00:00
|
|
|
beq L285E
|
|
|
|
bne L2866
|
2008-10-06 10:32:35 +00:00
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
bne L2866
|
|
|
|
beq L285E
|
2008-10-07 05:52:42 +00:00
|
|
|
.endif
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; "IF" STATEMENT
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
IF:
|
|
|
|
jsr FRMEVL
|
|
|
|
jsr CHRGOT
|
2008-10-09 09:18:45 +00:00
|
|
|
cmp #TOKEN_GOTO
|
2008-10-06 05:21:05 +00:00
|
|
|
beq L2884
|
|
|
|
lda #TOKEN_THEN
|
|
|
|
jsr SYNCHR
|
|
|
|
L2884:
|
|
|
|
lda FAC
|
|
|
|
bne L288D
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; "REM" STATEMENT, OR FALSE "IF" STATEMENT
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
REM:
|
|
|
|
jsr REMN
|
|
|
|
beq ADDON
|
|
|
|
L288D:
|
|
|
|
jsr CHRGOT
|
|
|
|
bcs L2895
|
|
|
|
jmp GOTO
|
|
|
|
L2895:
|
|
|
|
jmp EXECUTE_STATEMENT
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; "ON" STATEMENT
|
|
|
|
;
|
|
|
|
; ON <EXP> GOTO <LIST>
|
|
|
|
; ON <EXP> GOSUB <LIST>
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
ON:
|
|
|
|
jsr GETBYT
|
|
|
|
pha
|
|
|
|
cmp #TOKEN_GOSUB
|
|
|
|
beq L28A4
|
|
|
|
L28A0:
|
|
|
|
cmp #TOKEN_GOTO
|
|
|
|
bne SYNERR2
|
|
|
|
L28A4:
|
|
|
|
dec FAC_LAST
|
|
|
|
bne L28AC
|
|
|
|
pla
|
|
|
|
jmp EXECUTE_STATEMENT1
|
|
|
|
L28AC:
|
|
|
|
jsr CHRGET
|
|
|
|
jsr LINGET
|
|
|
|
cmp #$2C
|
|
|
|
beq L28A4
|
|
|
|
pla
|
|
|
|
L28B7:
|
|
|
|
rts
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; CONVERT LINE NUMBER
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
LINGET:
|
|
|
|
ldx #$00
|
|
|
|
stx LINNUM
|
|
|
|
stx LINNUM+1
|
|
|
|
L28BE:
|
|
|
|
bcs L28B7
|
|
|
|
sbc #$2F
|
|
|
|
sta CHARAC
|
|
|
|
lda LINNUM+1
|
|
|
|
sta INDEX
|
|
|
|
cmp #$19
|
|
|
|
bcs L28A0
|
2008-10-13 00:44:36 +00:00
|
|
|
; <<<<<DANGEROUS CODE>>>>>
|
|
|
|
; NOTE THAT IF (A) = $AB ON THE LINE ABOVE,
|
|
|
|
; ON.1 WILL COMPARE = AND CAUSE A CATASTROPHIC
|
|
|
|
; JUMP TO $22D9 (FOR GOTO), OR OTHER LOCATIONS
|
|
|
|
; FOR OTHER CALLS TO LINGET.
|
|
|
|
;
|
|
|
|
; YOU CAN SEE THIS IS YOU FIRST PUT "BRK" IN $22D9,
|
|
|
|
; THEN TYPE "GO TO 437761".
|
|
|
|
;
|
|
|
|
; ANY VALUE FROM 437760 THROUGH 440319 WILL CAUSE
|
|
|
|
; THE PROBLEM. ($AB00 - $ABFF)
|
|
|
|
; <<<<<DANGEROUS CODE>>>>>
|
2008-10-06 05:21:05 +00:00
|
|
|
lda LINNUM
|
|
|
|
asl a
|
|
|
|
rol INDEX
|
|
|
|
asl a
|
|
|
|
rol INDEX
|
|
|
|
adc LINNUM
|
|
|
|
sta LINNUM
|
|
|
|
lda INDEX
|
|
|
|
adc LINNUM+1
|
|
|
|
sta LINNUM+1
|
|
|
|
asl LINNUM
|
|
|
|
rol LINNUM+1
|
|
|
|
lda LINNUM
|
|
|
|
adc CHARAC
|
|
|
|
sta LINNUM
|
|
|
|
bcc L28EC
|
|
|
|
inc LINNUM+1
|
|
|
|
L28EC:
|
|
|
|
jsr CHRGET
|
|
|
|
jmp L28BE
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; "LET" STATEMENT
|
|
|
|
;
|
|
|
|
; LET <VAR> = <EXP>
|
|
|
|
; <VAR> = <EXP>
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
LET:
|
|
|
|
jsr PTRGET
|
|
|
|
sta FORPNT
|
|
|
|
sty FORPNT+1
|
|
|
|
lda #TOKEN_EQUAL
|
|
|
|
jsr SYNCHR
|
2008-10-11 10:14:29 +00:00
|
|
|
.ifndef CONFIG_SMALL
|
2008-10-06 05:21:05 +00:00
|
|
|
lda VALTYP+1
|
|
|
|
pha
|
2008-10-07 05:52:42 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
lda VALTYP
|
|
|
|
pha
|
|
|
|
jsr FRMEVL
|
|
|
|
pla
|
|
|
|
rol a
|
|
|
|
jsr CHKVAL
|
|
|
|
bne LETSTRING
|
2008-10-11 10:14:29 +00:00
|
|
|
.ifndef CONFIG_SMALL
|
2008-10-06 05:21:05 +00:00
|
|
|
pla
|
|
|
|
LET2:
|
|
|
|
bpl L2923
|
|
|
|
jsr ROUND_FAC
|
|
|
|
jsr AYINT
|
|
|
|
ldy #$00
|
|
|
|
lda FAC+3
|
|
|
|
sta (FORPNT),y
|
|
|
|
iny
|
|
|
|
lda FAC+4
|
|
|
|
sta (FORPNT),y
|
|
|
|
rts
|
|
|
|
L2923:
|
2008-10-07 05:52:42 +00:00
|
|
|
.endif
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; REAL VARIABLE = EXPRESSION
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
jmp SETFOR
|
|
|
|
LETSTRING:
|
2008-10-11 10:14:29 +00:00
|
|
|
.ifndef CONFIG_SMALL
|
2008-10-06 05:21:05 +00:00
|
|
|
pla
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; INSTALL STRING, DESCRIPTOR ADDRESS IS AT FAC+3,4
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
PUTSTR:
|
2008-10-07 05:52:42 +00:00
|
|
|
.endif
|
2008-10-11 09:56:31 +00:00
|
|
|
.ifdef CONFIG_CBM_ALL
|
2008-10-07 10:05:20 +00:00
|
|
|
ldy FORPNT+1
|
|
|
|
.ifdef CBM1
|
2008-10-06 10:32:35 +00:00
|
|
|
cpy #$D0
|
2008-10-07 10:05:20 +00:00
|
|
|
.else
|
|
|
|
cpy #$DE
|
|
|
|
.endif
|
2008-10-06 10:32:35 +00:00
|
|
|
bne LC92B
|
2008-10-07 04:44:27 +00:00
|
|
|
jsr FREFAC
|
2008-10-06 10:32:35 +00:00
|
|
|
cmp #$06
|
2008-10-08 05:07:59 +00:00
|
|
|
.ifdef CBM2_KBD
|
2008-10-07 08:03:36 +00:00
|
|
|
bne IQERR1
|
|
|
|
.else
|
2008-10-06 10:32:35 +00:00
|
|
|
beq LC8E2
|
2008-10-07 04:44:27 +00:00
|
|
|
jmp IQERR
|
2008-10-06 10:32:35 +00:00
|
|
|
LC8E2:
|
2008-10-07 08:03:36 +00:00
|
|
|
.endif
|
2008-10-06 10:32:35 +00:00
|
|
|
ldy #$00
|
2008-10-07 10:05:20 +00:00
|
|
|
sty FAC
|
|
|
|
sty FACSIGN
|
2008-10-06 10:32:35 +00:00
|
|
|
LC8E8:
|
2008-10-07 10:05:20 +00:00
|
|
|
sty STRNG2
|
2008-10-06 10:32:35 +00:00
|
|
|
jsr LC91C
|
2008-10-07 04:44:27 +00:00
|
|
|
jsr MUL10
|
2008-10-07 10:05:20 +00:00
|
|
|
inc STRNG2
|
|
|
|
ldy STRNG2
|
2008-10-06 10:32:35 +00:00
|
|
|
jsr LC91C
|
2008-10-07 04:44:27 +00:00
|
|
|
jsr COPY_FAC_TO_ARG_ROUNDED
|
2008-10-06 10:32:35 +00:00
|
|
|
tax
|
|
|
|
beq LC902
|
|
|
|
inx
|
|
|
|
txa
|
|
|
|
jsr LD9BF
|
|
|
|
LC902:
|
2008-10-07 10:05:20 +00:00
|
|
|
ldy STRNG2
|
2008-10-06 10:32:35 +00:00
|
|
|
iny
|
|
|
|
cpy #$06
|
|
|
|
bne LC8E8
|
2008-10-07 04:44:27 +00:00
|
|
|
jsr MUL10
|
|
|
|
jsr QINT
|
2008-10-06 10:32:35 +00:00
|
|
|
ldx #$02
|
|
|
|
sei
|
|
|
|
LC912:
|
2008-10-09 09:18:45 +00:00
|
|
|
lda FAC+2,x
|
|
|
|
.ifdef CBM2
|
2008-10-07 08:03:36 +00:00
|
|
|
sta $8D,x
|
|
|
|
.else
|
2008-10-06 10:32:35 +00:00
|
|
|
sta $0200,x
|
2008-10-07 08:03:36 +00:00
|
|
|
.endif
|
2008-10-06 10:32:35 +00:00
|
|
|
dex
|
|
|
|
bpl LC912
|
|
|
|
cli
|
|
|
|
rts
|
|
|
|
LC91C:
|
2008-10-07 04:44:27 +00:00
|
|
|
lda (INDEX),y
|
2008-10-06 10:32:35 +00:00
|
|
|
jsr L00CF
|
|
|
|
bcc LC926
|
2008-10-07 08:03:36 +00:00
|
|
|
IQERR1:
|
2008-10-07 04:44:27 +00:00
|
|
|
jmp IQERR
|
2008-10-06 10:32:35 +00:00
|
|
|
LC926:
|
|
|
|
sbc #$2F
|
2008-10-07 04:44:27 +00:00
|
|
|
jmp ADDACC
|
2008-10-06 10:32:35 +00:00
|
|
|
LC92B:
|
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
ldy #$02
|
|
|
|
lda (FAC_LAST-1),y
|
|
|
|
cmp FRETOP+1
|
|
|
|
bcc L2946
|
|
|
|
bne L2938
|
|
|
|
dey
|
|
|
|
lda (FAC_LAST-1),y
|
|
|
|
cmp FRETOP
|
|
|
|
bcc L2946
|
|
|
|
L2938:
|
|
|
|
ldy FAC_LAST
|
|
|
|
cpy VARTAB+1
|
|
|
|
bcc L2946
|
|
|
|
bne L294D
|
|
|
|
lda FAC_LAST-1
|
|
|
|
cmp VARTAB
|
|
|
|
bcs L294D
|
|
|
|
L2946:
|
|
|
|
lda FAC_LAST-1
|
|
|
|
ldy FAC_LAST
|
|
|
|
jmp L2963
|
|
|
|
L294D:
|
|
|
|
ldy #$00
|
|
|
|
lda (FAC_LAST-1),y
|
|
|
|
jsr STRINI
|
|
|
|
lda DSCPTR
|
|
|
|
ldy DSCPTR+1
|
|
|
|
sta STRNG1
|
|
|
|
sty STRNG1+1
|
|
|
|
jsr MOVINS
|
2008-10-07 10:36:34 +00:00
|
|
|
lda #FAC
|
2008-10-06 05:21:05 +00:00
|
|
|
ldy #$00
|
|
|
|
L2963:
|
|
|
|
sta DSCPTR
|
|
|
|
sty DSCPTR+1
|
|
|
|
jsr FRETMS
|
|
|
|
ldy #$00
|
|
|
|
lda (DSCPTR),y
|
|
|
|
sta (FORPNT),y
|
|
|
|
iny
|
|
|
|
lda (DSCPTR),y
|
|
|
|
sta (FORPNT),y
|
|
|
|
iny
|
|
|
|
lda (DSCPTR),y
|
|
|
|
sta (FORPNT),y
|
|
|
|
rts
|
2008-10-11 09:56:31 +00:00
|
|
|
.ifdef CONFIG_CBM_ALL
|
2008-10-07 04:44:27 +00:00
|
|
|
PRINTH:
|
|
|
|
jsr CMD
|
2008-10-06 10:32:35 +00:00
|
|
|
jmp LCAD6
|
2008-10-07 04:44:27 +00:00
|
|
|
CMD:
|
|
|
|
jsr GETBYT
|
2008-10-06 10:32:35 +00:00
|
|
|
beq LC98F
|
|
|
|
lda #$2C
|
2008-10-07 04:44:27 +00:00
|
|
|
jsr SYNCHR
|
2008-10-06 10:32:35 +00:00
|
|
|
LC98F:
|
|
|
|
php
|
2008-10-07 04:44:27 +00:00
|
|
|
jsr CHKOUT
|
|
|
|
stx Z03
|
2008-10-06 10:32:35 +00:00
|
|
|
plp
|
2008-10-07 04:44:27 +00:00
|
|
|
jmp PRINT
|
2008-10-06 10:32:35 +00:00
|
|
|
.endif
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
PRSTRING:
|
|
|
|
jsr STRPRT
|
|
|
|
L297E:
|
|
|
|
jsr CHRGOT
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; "PRINT" STATEMENT
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
PRINT:
|
|
|
|
beq CRDO
|
|
|
|
PRINT2:
|
|
|
|
beq L29DD
|
|
|
|
cmp #TOKEN_TAB
|
|
|
|
beq L29F5
|
|
|
|
cmp #TOKEN_SPC
|
2008-10-08 05:07:59 +00:00
|
|
|
.ifdef CBM2_KBD
|
2008-10-07 08:03:36 +00:00
|
|
|
clc
|
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
beq L29F5
|
|
|
|
cmp #','
|
|
|
|
.ifdef KIM
|
|
|
|
clc
|
2008-10-07 05:52:42 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
beq L29DE
|
|
|
|
cmp #$3B
|
|
|
|
beq L2A0D
|
|
|
|
jsr FRMEVL
|
|
|
|
bit VALTYP
|
|
|
|
bmi PRSTRING
|
|
|
|
jsr FOUT
|
|
|
|
jsr STRLIT
|
2008-10-11 09:56:31 +00:00
|
|
|
.ifndef CONFIG_CBM_ALL
|
2008-10-06 05:21:05 +00:00
|
|
|
ldy #$00
|
|
|
|
lda (FAC_LAST-1),y
|
|
|
|
clc
|
|
|
|
adc Z16
|
2008-10-08 06:08:08 +00:00
|
|
|
.ifdef KBD
|
|
|
|
cmp #$28
|
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
cmp Z17
|
2008-10-08 06:08:08 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
bcc L29B1
|
|
|
|
jsr CRDO
|
|
|
|
L29B1:
|
2008-10-06 10:32:35 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
jsr STRPRT
|
2008-10-08 06:08:08 +00:00
|
|
|
.ifdef KBD
|
2008-10-08 11:42:15 +00:00
|
|
|
jmp L297E
|
|
|
|
LE86C:
|
|
|
|
pla
|
|
|
|
jmp CONTROL_C_TYPED
|
|
|
|
LE870:
|
|
|
|
jsr GETBYT
|
2008-10-08 06:08:08 +00:00
|
|
|
txa
|
2008-10-08 11:42:15 +00:00
|
|
|
LE874:
|
|
|
|
beq LE878
|
2008-10-08 06:08:08 +00:00
|
|
|
bpl LE8F2
|
2008-10-08 11:42:15 +00:00
|
|
|
LE878:
|
|
|
|
jmp IQERR
|
|
|
|
CRDO:
|
|
|
|
lda #$0A
|
2008-10-08 06:08:08 +00:00
|
|
|
sta $10
|
2008-10-08 11:42:15 +00:00
|
|
|
jsr OUTDO
|
|
|
|
LE882:
|
|
|
|
lda #$0D
|
|
|
|
jsr OUTDO
|
2008-10-09 10:10:09 +00:00
|
|
|
PRINTNULLS:
|
2008-10-08 11:42:15 +00:00
|
|
|
lda #$00
|
2008-10-08 06:08:08 +00:00
|
|
|
sta $10
|
|
|
|
eor #$FF
|
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
jsr OUTSP
|
|
|
|
bne L297E
|
|
|
|
L29B9:
|
2008-10-09 10:10:09 +00:00
|
|
|
.ifdef CBM2
|
2008-10-07 08:03:36 +00:00
|
|
|
lda #$00
|
2008-10-09 09:18:45 +00:00
|
|
|
sta INPUTBUFFER,x
|
|
|
|
ldx #<(INPUTBUFFER-1)
|
|
|
|
ldy #>(INPUTBUFFER-1)
|
2008-10-07 08:03:36 +00:00
|
|
|
.else
|
2008-10-11 06:23:53 +00:00
|
|
|
.ifndef APPLE
|
2008-10-06 05:21:05 +00:00
|
|
|
ldy #$00
|
|
|
|
sty INPUTBUFFER,x
|
2008-10-07 10:36:34 +00:00
|
|
|
ldx #LINNUM+1
|
2008-10-07 08:03:36 +00:00
|
|
|
.endif
|
2008-10-11 06:23:53 +00:00
|
|
|
.endif
|
2008-10-11 09:56:31 +00:00
|
|
|
.ifdef CONFIG_CBM_ALL
|
2008-10-07 04:44:27 +00:00
|
|
|
lda Z03
|
2008-10-06 10:32:35 +00:00
|
|
|
bne L29DD
|
|
|
|
LC9D2:
|
2008-10-07 04:44:27 +00:00
|
|
|
.endif
|
|
|
|
CRDO:
|
2008-10-07 08:03:36 +00:00
|
|
|
.ifdef CBM1
|
2008-10-07 04:44:27 +00:00
|
|
|
lda Z03
|
2008-10-06 10:32:35 +00:00
|
|
|
bne LC9D8
|
|
|
|
sta $05
|
|
|
|
LC9D8:
|
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
lda #$0D
|
2008-10-11 09:56:31 +00:00
|
|
|
.ifndef CONFIG_CBM_ALL
|
2008-10-06 05:21:05 +00:00
|
|
|
sta Z16
|
2008-10-06 10:32:35 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
jsr OUTDO
|
2008-10-11 07:15:19 +00:00
|
|
|
.ifdef APPLE
|
|
|
|
lda #$80
|
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
lda #$0A
|
2008-10-11 07:15:19 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
jsr OUTDO
|
|
|
|
PRINTNULLS:
|
2008-10-09 10:10:09 +00:00
|
|
|
.ifdef CBM1
|
2008-10-07 04:44:27 +00:00
|
|
|
lda Z03
|
2008-10-06 10:32:35 +00:00
|
|
|
bne L29DD
|
|
|
|
.endif
|
2008-10-11 10:36:02 +00:00
|
|
|
.if .def(CONFIG_NULL) || .def(CBM1)
|
2008-10-06 05:21:05 +00:00
|
|
|
txa
|
|
|
|
pha
|
|
|
|
ldx Z15
|
|
|
|
beq L29D9
|
|
|
|
lda #$00
|
|
|
|
L29D3:
|
|
|
|
jsr OUTDO
|
|
|
|
dex
|
|
|
|
bne L29D3
|
|
|
|
L29D9:
|
|
|
|
stx Z16
|
|
|
|
pla
|
|
|
|
tax
|
2008-10-07 08:03:36 +00:00
|
|
|
.else
|
2008-10-11 06:23:53 +00:00
|
|
|
.ifdef APPLE
|
|
|
|
lda #$00
|
|
|
|
sta $50
|
|
|
|
.endif
|
2008-10-07 08:03:36 +00:00
|
|
|
eor #$FF
|
|
|
|
.endif
|
2008-10-08 06:08:08 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
L29DD:
|
|
|
|
rts
|
|
|
|
L29DE:
|
|
|
|
lda Z16
|
2008-10-11 09:56:31 +00:00
|
|
|
.ifndef CONFIG_CBM_ALL
|
2008-10-08 06:08:08 +00:00
|
|
|
.ifdef KBD
|
|
|
|
cmp #$1A
|
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
cmp Z18
|
2008-10-08 06:08:08 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
bcc L29EA
|
|
|
|
jsr CRDO
|
|
|
|
jmp L2A0D
|
|
|
|
L29EA:
|
2008-10-06 10:32:35 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
sec
|
|
|
|
L29EB:
|
2008-10-11 09:56:31 +00:00
|
|
|
.ifdef CONFIG_CBM_ALL
|
2008-10-06 10:32:35 +00:00
|
|
|
sbc #$0A
|
2008-10-08 11:42:15 +00:00
|
|
|
.else
|
|
|
|
.ifdef KBD
|
|
|
|
sbc #$0D
|
2008-10-06 10:32:35 +00:00
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
sbc #$0E
|
2008-10-08 11:42:15 +00:00
|
|
|
.endif
|
2008-10-06 10:32:35 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
bcs L29EB
|
|
|
|
eor #$FF
|
|
|
|
adc #$01
|
|
|
|
bne L2A08
|
|
|
|
L29F5:
|
2008-10-11 06:23:53 +00:00
|
|
|
.ifdef CONFIG_11_NOAPPLE
|
2008-10-06 05:21:05 +00:00
|
|
|
php
|
2008-10-11 06:23:53 +00:00
|
|
|
.else
|
|
|
|
pha
|
2008-10-07 05:52:42 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
jsr GTBYTC
|
|
|
|
cmp #$29
|
2008-10-11 06:23:53 +00:00
|
|
|
.ifndef CONFIG_11_NOAPPLE
|
|
|
|
.ifdef APPLE
|
|
|
|
beq L1185
|
2008-10-11 07:15:19 +00:00
|
|
|
jmp SYNERR
|
2008-10-11 06:23:53 +00:00
|
|
|
L1185:
|
|
|
|
.else
|
2008-10-07 08:03:36 +00:00
|
|
|
bne SYNERR4
|
2008-10-11 06:23:53 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
pla
|
2008-10-06 10:32:35 +00:00
|
|
|
cmp #TOKEN_TAB
|
2008-10-11 07:15:19 +00:00
|
|
|
.ifdef APPLE
|
|
|
|
bne L2A09
|
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
bne L2A0A
|
2008-10-11 07:15:19 +00:00
|
|
|
.endif
|
2008-10-07 08:03:36 +00:00
|
|
|
.else
|
2008-10-08 05:07:59 +00:00
|
|
|
.ifdef CBM2_KBD
|
2008-10-07 08:03:36 +00:00
|
|
|
bne SYNERR4
|
2008-10-07 05:52:42 +00:00
|
|
|
.else
|
2008-10-06 06:02:37 +00:00
|
|
|
beq @1
|
2008-10-06 05:21:05 +00:00
|
|
|
jmp SYNERR
|
2008-10-06 06:02:37 +00:00
|
|
|
@1:
|
2008-10-07 08:03:36 +00:00
|
|
|
.endif
|
2008-10-06 10:32:35 +00:00
|
|
|
plp ;; XXX c64 has this
|
2008-10-06 05:21:05 +00:00
|
|
|
bcc L2A09
|
2008-10-07 05:52:42 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
txa
|
|
|
|
sbc Z16
|
|
|
|
bcc L2A0D
|
2008-10-07 10:36:34 +00:00
|
|
|
.ifndef CONFIG_11
|
2008-10-06 05:21:05 +00:00
|
|
|
beq L2A0D
|
2008-10-07 08:03:36 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
L2A08:
|
|
|
|
tax
|
2008-10-07 10:36:34 +00:00
|
|
|
.ifdef CONFIG_11
|
2008-10-06 05:21:05 +00:00
|
|
|
L2A09:
|
|
|
|
inx
|
2008-10-07 05:52:42 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
L2A0A:
|
2008-10-07 10:36:34 +00:00
|
|
|
.ifndef CONFIG_11
|
2008-10-06 05:21:05 +00:00
|
|
|
jsr OUTSP
|
2008-10-07 08:03:36 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
dex
|
2008-10-07 10:36:34 +00:00
|
|
|
.ifndef CONFIG_11
|
2008-10-06 05:21:05 +00:00
|
|
|
bne L2A0A
|
2008-10-07 05:52:42 +00:00
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
bne L2A13
|
2008-10-07 05:52:42 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
L2A0D:
|
|
|
|
jsr CHRGET
|
|
|
|
jmp PRINT2
|
2008-10-07 10:36:34 +00:00
|
|
|
.ifdef CONFIG_11
|
2008-10-06 05:21:05 +00:00
|
|
|
L2A13:
|
|
|
|
jsr OUTSP
|
|
|
|
bne L2A0A
|
2008-10-07 05:52:42 +00:00
|
|
|
.endif
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; PRINT STRING AT (Y,A)
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
STROUT:
|
|
|
|
jsr STRLIT
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; PRINT STRING AT (FACMO,FACLO)
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
STRPRT:
|
|
|
|
jsr FREFAC
|
|
|
|
tax
|
|
|
|
ldy #$00
|
|
|
|
inx
|
|
|
|
L2A22:
|
|
|
|
dex
|
|
|
|
beq L29DD
|
|
|
|
lda (INDEX),y
|
|
|
|
jsr OUTDO
|
|
|
|
iny
|
|
|
|
cmp #$0D
|
|
|
|
bne L2A22
|
|
|
|
jsr PRINTNULLS
|
|
|
|
jmp L2A22
|
2008-10-13 01:12:57 +00:00
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
OUTSP:
|
2008-10-07 08:03:36 +00:00
|
|
|
.ifdef CBM2
|
|
|
|
lda $0E
|
|
|
|
beq LCA40
|
|
|
|
lda #$20
|
|
|
|
.byte $2C
|
|
|
|
LCA40:
|
|
|
|
.endif
|
2008-10-11 09:56:31 +00:00
|
|
|
.ifdef CONFIG_CBM_ALL
|
2008-10-06 10:32:35 +00:00
|
|
|
lda #$1D
|
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
lda #$20
|
2008-10-06 10:32:35 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
.byte $2C
|
|
|
|
OUTQUES:
|
|
|
|
lda #$3F
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; PRINT CHAR FROM (A)
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
OUTDO:
|
2008-10-08 06:08:08 +00:00
|
|
|
.ifndef KBD
|
2008-10-06 05:21:05 +00:00
|
|
|
bit Z14
|
|
|
|
bmi L2A56
|
2008-10-08 06:08:08 +00:00
|
|
|
.endif
|
2008-10-08 05:07:59 +00:00
|
|
|
.ifndef CBM2_KBD
|
2008-10-06 05:21:05 +00:00
|
|
|
pha
|
2008-10-08 06:08:08 +00:00
|
|
|
.endif
|
|
|
|
.ifdef CBM1
|
2008-10-06 10:32:35 +00:00
|
|
|
cmp #$1D
|
|
|
|
beq LCA6A
|
|
|
|
cmp #$9D
|
|
|
|
beq LCA5A
|
|
|
|
cmp #$14
|
|
|
|
bne LCA64
|
|
|
|
LCA5A:
|
|
|
|
lda $05
|
|
|
|
beq L2A4E
|
2008-10-07 04:44:27 +00:00
|
|
|
lda Z03
|
2008-10-06 10:32:35 +00:00
|
|
|
bne L2A4E
|
|
|
|
dec $05
|
|
|
|
LCA64:
|
|
|
|
and #$7F
|
|
|
|
.endif
|
2008-10-08 06:08:08 +00:00
|
|
|
.ifndef CBM2
|
2008-10-06 05:21:05 +00:00
|
|
|
cmp #$20
|
|
|
|
bcc L2A4E
|
2008-10-08 06:08:08 +00:00
|
|
|
.endif
|
2008-10-06 10:32:35 +00:00
|
|
|
LCA6A:
|
2008-10-09 10:37:43 +00:00
|
|
|
.ifdef CONFIG_CBM1_PATCHES
|
2008-10-07 04:44:27 +00:00
|
|
|
lda Z03
|
|
|
|
jsr PATCH6
|
2008-10-06 10:32:35 +00:00
|
|
|
nop
|
2008-10-08 06:08:08 +00:00
|
|
|
.endif
|
2008-10-11 10:14:29 +00:00
|
|
|
.ifdef CONFIG_PRINT_CR
|
2008-10-06 05:21:05 +00:00
|
|
|
lda Z16
|
|
|
|
cmp Z17
|
|
|
|
bne L2A4C
|
2008-10-11 06:23:53 +00:00
|
|
|
.ifdef APPLE
|
2008-10-11 09:56:31 +00:00
|
|
|
nop ; PATCH!
|
2008-10-11 10:14:29 +00:00
|
|
|
nop ; don't print CR
|
2008-10-11 06:23:53 +00:00
|
|
|
nop
|
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
jsr CRDO
|
2008-10-11 06:23:53 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
L2A4C:
|
2008-10-08 06:08:08 +00:00
|
|
|
.endif
|
2008-10-11 09:56:31 +00:00
|
|
|
.ifndef CONFIG_CBM_ALL
|
2008-10-06 05:21:05 +00:00
|
|
|
inc Z16
|
2008-10-06 10:32:35 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
L2A4E:
|
2008-10-08 06:08:08 +00:00
|
|
|
.ifndef CBM2_KBD
|
2008-10-06 05:21:05 +00:00
|
|
|
pla
|
2008-10-07 08:03:36 +00:00
|
|
|
.endif
|
2008-10-06 10:32:35 +00:00
|
|
|
.ifdef KIM
|
2008-10-06 05:21:05 +00:00
|
|
|
sty DIMFLG
|
2008-10-11 06:23:53 +00:00
|
|
|
.endif
|
|
|
|
.ifdef APPLE
|
|
|
|
ora #$80
|
2008-10-07 04:44:27 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
jsr MONCOUT
|
2008-10-11 06:23:53 +00:00
|
|
|
.ifdef APPLE
|
|
|
|
and #$7F
|
|
|
|
.endif
|
2008-10-07 04:44:27 +00:00
|
|
|
.ifdef KIM
|
2008-10-06 05:21:05 +00:00
|
|
|
ldy DIMFLG
|
2008-10-06 10:32:35 +00:00
|
|
|
.endif
|
2008-10-08 07:04:03 +00:00
|
|
|
.ifdef OSI
|
2008-10-07 04:44:27 +00:00
|
|
|
nop
|
|
|
|
nop
|
|
|
|
nop
|
|
|
|
nop
|
2008-10-06 10:32:35 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
L2A56:
|
|
|
|
and #$FF
|
2008-10-08 11:42:15 +00:00
|
|
|
LE8F2:
|
2008-10-06 05:21:05 +00:00
|
|
|
rts
|
2008-10-08 07:04:03 +00:00
|
|
|
.ifdef KBD
|
|
|
|
LE8F3:
|
|
|
|
pha
|
|
|
|
lda $047F
|
|
|
|
clc
|
|
|
|
beq LE900
|
|
|
|
lda #$00
|
|
|
|
sta $047F
|
|
|
|
sec
|
|
|
|
LE900:
|
|
|
|
pla
|
|
|
|
rts
|
|
|
|
.endif
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; INPUT CONVERSION ERROR: ILLEGAL CHARACTER
|
|
|
|
; IN NUMERIC FIELD. MUST DISTINGUISH
|
|
|
|
; BETWEEN INPUT, READ, AND GET
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
INPUTERR:
|
2008-10-06 05:21:05 +00:00
|
|
|
lda INPUTFLG
|
2008-10-13 01:12:57 +00:00
|
|
|
beq RESPERR
|
2008-10-11 06:23:53 +00:00
|
|
|
.ifdef CBM2_KIM_APPLE
|
2008-10-06 05:21:05 +00:00
|
|
|
bmi L2A63
|
|
|
|
ldy #$FF
|
|
|
|
bne L2A67
|
|
|
|
L2A63:
|
2008-10-07 05:52:42 +00:00
|
|
|
.endif
|
2008-10-09 10:37:43 +00:00
|
|
|
.ifdef CONFIG_CBM1_PATCHES
|
2008-10-07 04:44:27 +00:00
|
|
|
jsr PATCH5
|
2008-10-06 10:32:35 +00:00
|
|
|
nop
|
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
lda Z8C
|
|
|
|
ldy Z8C+1
|
2008-10-06 10:32:35 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
L2A67:
|
|
|
|
sta CURLIN
|
|
|
|
sty CURLIN+1
|
2008-10-07 08:03:36 +00:00
|
|
|
SYNERR4:
|
2008-10-06 05:21:05 +00:00
|
|
|
jmp SYNERR
|
2008-10-13 01:12:57 +00:00
|
|
|
RESPERR:
|
2008-10-11 09:56:31 +00:00
|
|
|
.ifdef CONFIG_CBM_ALL
|
2008-10-07 04:44:27 +00:00
|
|
|
lda Z03
|
2008-10-06 10:32:35 +00:00
|
|
|
beq LCA8F
|
2008-10-07 10:05:20 +00:00
|
|
|
ldx #ERR_BADDATA
|
2008-10-06 10:32:35 +00:00
|
|
|
jmp ERROR
|
|
|
|
LCA8F:
|
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
lda #<ERRREENTRY
|
|
|
|
ldy #>ERRREENTRY
|
|
|
|
jsr STROUT
|
|
|
|
lda OLDTEXT
|
|
|
|
ldy OLDTEXT+1
|
|
|
|
sta TXTPTR
|
|
|
|
sty TXTPTR+1
|
2008-10-08 07:04:03 +00:00
|
|
|
LE920:
|
2008-10-06 05:21:05 +00:00
|
|
|
rts
|
2008-10-11 10:14:29 +00:00
|
|
|
.ifndef CONFIG_SMALL
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; "GET" STATEMENT
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
GET:
|
|
|
|
jsr ERRDIR
|
2008-10-11 09:56:31 +00:00
|
|
|
.ifdef CONFIG_CBM_ALL
|
2008-10-06 10:32:35 +00:00
|
|
|
cmp #$23
|
|
|
|
bne LCAB6
|
2008-10-07 04:44:27 +00:00
|
|
|
jsr CHRGET
|
|
|
|
jsr GETBYT
|
2008-10-06 10:32:35 +00:00
|
|
|
lda #$2C
|
2008-10-07 04:44:27 +00:00
|
|
|
jsr SYNCHR
|
|
|
|
jsr CHKIN
|
|
|
|
stx Z03
|
2008-10-06 10:32:35 +00:00
|
|
|
LCAB6:
|
|
|
|
.endif
|
2008-10-07 04:44:27 +00:00
|
|
|
ldx #<(INPUTBUFFER+1)
|
2008-10-07 08:03:36 +00:00
|
|
|
ldy #>(INPUTBUFFER+1)
|
2008-10-11 10:44:10 +00:00
|
|
|
.if INPUTBUFFER >= $0100
|
2008-10-07 08:03:36 +00:00
|
|
|
lda #$00
|
|
|
|
sta INPUTBUFFER+1
|
|
|
|
.else
|
2008-10-07 04:44:27 +00:00
|
|
|
sty INPUTBUFFER+1
|
2008-10-07 08:03:36 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
lda #$40
|
|
|
|
jsr PROCESS_INPUT_LIST
|
2008-10-11 09:56:31 +00:00
|
|
|
.ifdef CONFIG_CBM_ALL
|
2008-10-07 04:44:27 +00:00
|
|
|
ldx Z03
|
2008-10-06 10:32:35 +00:00
|
|
|
bne LCAD8
|
|
|
|
.endif
|
|
|
|
rts
|
2008-10-08 07:04:03 +00:00
|
|
|
.endif
|
2008-10-11 09:56:31 +00:00
|
|
|
.ifdef CONFIG_CBM_ALL
|
2008-10-07 04:44:27 +00:00
|
|
|
INPUTH:
|
|
|
|
jsr GETBYT
|
2008-10-06 10:32:35 +00:00
|
|
|
lda #$2C
|
2008-10-07 04:44:27 +00:00
|
|
|
jsr SYNCHR
|
|
|
|
jsr CHKIN
|
|
|
|
stx Z03
|
|
|
|
jsr L2A9E
|
2008-10-06 10:32:35 +00:00
|
|
|
LCAD6:
|
2008-10-07 04:44:27 +00:00
|
|
|
lda Z03
|
2008-10-06 10:32:35 +00:00
|
|
|
LCAD8:
|
2008-10-07 04:44:27 +00:00
|
|
|
jsr CLRCH
|
2008-10-06 10:32:35 +00:00
|
|
|
ldx #$00
|
2008-10-07 04:44:27 +00:00
|
|
|
stx Z03
|
2008-10-06 05:21:05 +00:00
|
|
|
rts
|
2008-10-06 10:32:35 +00:00
|
|
|
LCAE0:
|
|
|
|
.endif
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; "INPUT" STATEMENT
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
INPUT:
|
2008-10-08 07:04:03 +00:00
|
|
|
.ifndef KBD
|
2008-10-06 05:21:05 +00:00
|
|
|
lsr Z14
|
2008-10-08 07:04:03 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
cmp #$22
|
|
|
|
bne L2A9E
|
|
|
|
jsr STRTXT
|
|
|
|
lda #$3B
|
|
|
|
jsr SYNCHR
|
|
|
|
jsr STRPRT
|
|
|
|
L2A9E:
|
|
|
|
jsr ERRDIR
|
|
|
|
lda #$2C
|
2008-10-07 08:03:36 +00:00
|
|
|
sta INPUTBUFFER-1
|
2008-10-06 10:32:35 +00:00
|
|
|
LCAF8:
|
2008-10-11 07:15:19 +00:00
|
|
|
.ifdef APPLE
|
|
|
|
jsr INLINX
|
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
jsr NXIN
|
2008-10-11 07:15:19 +00:00
|
|
|
.endif
|
2008-10-08 07:04:03 +00:00
|
|
|
.ifdef KBD
|
|
|
|
bmi L2ABE
|
|
|
|
NXIN:
|
|
|
|
jsr LFDDA
|
|
|
|
bmi LE920
|
|
|
|
pla
|
|
|
|
jmp LE86C
|
|
|
|
.else
|
2008-10-11 09:56:31 +00:00
|
|
|
.ifdef CONFIG_CBM_ALL
|
2008-10-07 04:44:27 +00:00
|
|
|
lda Z03
|
2008-10-06 10:32:35 +00:00
|
|
|
beq LCB0C
|
2008-10-09 10:10:09 +00:00
|
|
|
lda Z96
|
2008-10-06 10:32:35 +00:00
|
|
|
and #$02
|
|
|
|
beq LCB0C
|
|
|
|
jsr LCAD6
|
2008-10-07 04:44:27 +00:00
|
|
|
jmp DATA
|
2008-10-06 10:32:35 +00:00
|
|
|
LCB0C:
|
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
lda INPUTBUFFER
|
|
|
|
bne L2ABE
|
2008-10-11 09:56:31 +00:00
|
|
|
.ifdef CONFIG_CBM_ALL
|
2008-10-07 04:44:27 +00:00
|
|
|
lda Z03
|
2008-10-06 10:32:35 +00:00
|
|
|
bne LCAF8
|
2008-10-09 10:37:43 +00:00
|
|
|
.ifdef CONFIG_CBM1_PATCHES
|
|
|
|
jmp PATCH1
|
|
|
|
.else
|
2008-10-07 08:03:36 +00:00
|
|
|
clc
|
|
|
|
jmp CONTROL_C_TYPED
|
|
|
|
.endif
|
2008-10-07 04:44:27 +00:00
|
|
|
NXIN:
|
|
|
|
lda Z03
|
2008-10-06 10:32:35 +00:00
|
|
|
bne LCB21
|
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
clc
|
|
|
|
jmp CONTROL_C_TYPED
|
|
|
|
NXIN:
|
2008-10-07 04:44:27 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
jsr OUTQUES
|
|
|
|
jsr OUTSP
|
2008-10-06 10:32:35 +00:00
|
|
|
LCB21:
|
2008-10-06 05:21:05 +00:00
|
|
|
jmp INLIN
|
2008-10-08 11:42:15 +00:00
|
|
|
.endif /* KBD */
|
|
|
|
.ifdef KBD
|
|
|
|
GETC:
|
|
|
|
jsr CONINT
|
|
|
|
jsr LF43D
|
|
|
|
jmp LE664
|
|
|
|
.endif
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; "READ" STATEMENT
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
READ:
|
|
|
|
ldx DATPTR
|
|
|
|
ldy DATPTR+1
|
2008-10-08 05:07:59 +00:00
|
|
|
.ifdef CBM2_KBD
|
2008-10-09 10:10:09 +00:00
|
|
|
lda #$98 ; AppleSoft, too
|
2008-10-07 08:03:36 +00:00
|
|
|
.byte $2C
|
|
|
|
L2ABE:
|
|
|
|
lda #$00
|
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
.byte $A9
|
|
|
|
L2ABE:
|
|
|
|
tya
|
2008-10-07 08:03:36 +00:00
|
|
|
.endif
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; PROCESS INPUT LIST
|
|
|
|
;
|
|
|
|
; (Y,X) IS ADDRESS OF INPUT DATA STRING
|
|
|
|
; (A) = VALUE FOR INPUTFLG: $00 FOR INPUT
|
|
|
|
; $40 FOR GET
|
|
|
|
; $98 FOR READ
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
PROCESS_INPUT_LIST:
|
|
|
|
sta INPUTFLG
|
|
|
|
stx INPTR
|
|
|
|
sty INPTR+1
|
|
|
|
PROCESS_INPUT_ITEM:
|
|
|
|
jsr PTRGET
|
|
|
|
sta FORPNT
|
|
|
|
sty FORPNT+1
|
|
|
|
lda TXTPTR
|
|
|
|
ldy TXTPTR+1
|
2008-10-07 10:05:20 +00:00
|
|
|
sta TXPSV
|
|
|
|
sty TXPSV+1
|
2008-10-06 05:21:05 +00:00
|
|
|
ldx INPTR
|
|
|
|
ldy INPTR+1
|
|
|
|
stx TXTPTR
|
|
|
|
sty TXTPTR+1
|
|
|
|
jsr CHRGOT
|
|
|
|
bne INSTART
|
|
|
|
bit INPUTFLG
|
2008-10-11 10:14:29 +00:00
|
|
|
.ifndef CONFIG_SMALL
|
2008-10-06 05:21:05 +00:00
|
|
|
bvc L2AF0
|
|
|
|
jsr MONRDKEY
|
2008-10-11 06:23:53 +00:00
|
|
|
.ifdef APPLE
|
|
|
|
and #$7F
|
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
sta INPUTBUFFER
|
2008-10-07 08:03:36 +00:00
|
|
|
.ifdef CBM1
|
|
|
|
ldy #>(INPUTBUFFER-1)
|
|
|
|
ldx #<(INPUTBUFFER-1)
|
2008-10-07 04:44:27 +00:00
|
|
|
.else
|
2008-10-07 08:03:36 +00:00
|
|
|
ldx #<(INPUTBUFFER-1)
|
|
|
|
ldy #>(INPUTBUFFER-1)
|
2008-10-07 04:44:27 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
bne L2AF8
|
|
|
|
L2AF0:
|
2008-10-07 05:52:42 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
bmi FINDATA
|
2008-10-11 09:56:31 +00:00
|
|
|
.ifdef CONFIG_CBM_ALL
|
2008-10-07 04:44:27 +00:00
|
|
|
lda Z03
|
2008-10-06 10:32:35 +00:00
|
|
|
bne LCB64
|
|
|
|
.endif
|
2008-10-08 11:42:15 +00:00
|
|
|
.ifdef KBD
|
|
|
|
jsr OUTQUESSP
|
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
jsr OUTQUES
|
2008-10-08 11:42:15 +00:00
|
|
|
.endif
|
2008-10-06 10:32:35 +00:00
|
|
|
LCB64:
|
2008-10-06 05:21:05 +00:00
|
|
|
jsr NXIN
|
|
|
|
L2AF8:
|
|
|
|
stx TXTPTR
|
|
|
|
sty TXTPTR+1
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
INSTART:
|
|
|
|
jsr CHRGET
|
|
|
|
bit VALTYP
|
|
|
|
bpl L2B34
|
2008-10-11 10:14:29 +00:00
|
|
|
.ifndef CONFIG_SMALL
|
2008-10-06 05:21:05 +00:00
|
|
|
bit INPUTFLG
|
|
|
|
bvc L2B10
|
2008-10-09 10:37:43 +00:00
|
|
|
.ifdef CONFIG_CBM1_PATCHES
|
2008-10-06 10:32:35 +00:00
|
|
|
lda #$00
|
2008-10-07 04:44:27 +00:00
|
|
|
jsr PATCH4
|
2008-10-06 10:32:35 +00:00
|
|
|
nop
|
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
inx
|
|
|
|
stx TXTPTR
|
|
|
|
lda #$00
|
|
|
|
sta CHARAC
|
|
|
|
beq L2B1C
|
2008-10-06 10:32:35 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
L2B10:
|
2008-10-07 05:52:42 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
sta CHARAC
|
|
|
|
cmp #$22
|
|
|
|
beq L2B1D
|
|
|
|
lda #$3A
|
|
|
|
sta CHARAC
|
|
|
|
lda #$2C
|
|
|
|
L2B1C:
|
|
|
|
clc
|
|
|
|
L2B1D:
|
|
|
|
sta ENDCHR
|
|
|
|
lda TXTPTR
|
|
|
|
ldy TXTPTR+1
|
|
|
|
adc #$00
|
|
|
|
bcc L2B28
|
|
|
|
iny
|
|
|
|
L2B28:
|
|
|
|
jsr STRLT2
|
|
|
|
jsr POINT
|
2008-10-11 10:14:29 +00:00
|
|
|
.ifdef CONFIG_SMALL
|
2008-10-06 05:21:05 +00:00
|
|
|
jsr LETSTRING
|
2008-10-07 05:52:42 +00:00
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
jsr PUTSTR
|
2008-10-07 05:52:42 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
jmp INPUT_MORE
|
2008-10-13 01:12:57 +00:00
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
L2B34:
|
|
|
|
jsr FIN
|
2008-10-11 10:14:29 +00:00
|
|
|
.ifdef CONFIG_SMALL
|
2008-10-06 05:21:05 +00:00
|
|
|
jsr SETFOR
|
2008-10-07 05:52:42 +00:00
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
lda VALTYP+1
|
|
|
|
jsr LET2
|
2008-10-07 05:52:42 +00:00
|
|
|
.endif
|
2008-10-13 01:12:57 +00:00
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
INPUT_MORE:
|
|
|
|
jsr CHRGOT
|
|
|
|
beq L2B48
|
|
|
|
cmp #$2C
|
|
|
|
beq L2B48
|
2008-10-13 01:12:57 +00:00
|
|
|
jmp INPUTERR
|
2008-10-06 05:21:05 +00:00
|
|
|
L2B48:
|
|
|
|
lda TXTPTR
|
|
|
|
ldy TXTPTR+1
|
|
|
|
sta INPTR
|
|
|
|
sty INPTR+1
|
2008-10-07 10:05:20 +00:00
|
|
|
lda TXPSV
|
|
|
|
ldy TXPSV+1
|
2008-10-06 05:21:05 +00:00
|
|
|
sta TXTPTR
|
|
|
|
sty TXTPTR+1
|
|
|
|
jsr CHRGOT
|
|
|
|
beq INPDONE
|
|
|
|
jsr CHKCOM
|
|
|
|
jmp PROCESS_INPUT_ITEM
|
2008-10-13 01:12:57 +00:00
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
FINDATA:
|
|
|
|
jsr DATAN
|
|
|
|
iny
|
|
|
|
tax
|
|
|
|
bne L2B7C
|
2008-10-06 06:02:37 +00:00
|
|
|
ldx #ERR_NODATA
|
2008-10-06 05:21:05 +00:00
|
|
|
iny
|
|
|
|
lda (TXTPTR),y
|
|
|
|
beq GERR
|
|
|
|
iny
|
|
|
|
lda (TXTPTR),y
|
|
|
|
sta Z8C
|
|
|
|
iny
|
|
|
|
lda (TXTPTR),y
|
|
|
|
iny
|
|
|
|
sta Z8C+1
|
|
|
|
L2B7C:
|
|
|
|
lda (TXTPTR),y
|
|
|
|
tax
|
|
|
|
jsr ADDON
|
|
|
|
cpx #$83
|
|
|
|
bne FINDATA
|
|
|
|
jmp INSTART
|
2008-10-13 01:12:57 +00:00
|
|
|
; ---NO MORE INPUT REQUESTED------
|
2008-10-06 05:21:05 +00:00
|
|
|
INPDONE:
|
|
|
|
lda INPTR
|
|
|
|
ldy INPTR+1
|
|
|
|
ldx INPUTFLG
|
2008-10-08 11:42:15 +00:00
|
|
|
.ifdef OSI
|
2008-10-06 05:21:05 +00:00
|
|
|
beq L2B94
|
2008-10-07 05:52:42 +00:00
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
bpl L2B94
|
2008-10-07 05:52:42 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
jmp SETDA
|
|
|
|
L2B94:
|
|
|
|
ldy #$00
|
|
|
|
lda (INPTR),y
|
2008-10-06 10:32:35 +00:00
|
|
|
beq L2BA1
|
2008-10-11 09:56:31 +00:00
|
|
|
.ifdef CONFIG_CBM_ALL
|
2008-10-07 04:44:27 +00:00
|
|
|
lda Z03
|
|
|
|
bne L2BA1
|
2008-10-06 10:32:35 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
lda #<ERREXTRA
|
|
|
|
ldy #>ERREXTRA
|
|
|
|
jmp STROUT
|
|
|
|
L2BA1:
|
|
|
|
rts
|
|
|
|
|
2008-10-13 01:12:57 +00:00
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
ERREXTRA:
|
2008-10-08 07:04:03 +00:00
|
|
|
.ifdef KBD
|
|
|
|
.byte "?Extra"
|
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
.byte "?EXTRA IGNORED"
|
2008-10-08 07:04:03 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
.byte $0D,$0A,$00
|
|
|
|
ERRREENTRY:
|
2008-10-08 07:04:03 +00:00
|
|
|
.ifdef KBD
|
|
|
|
.byte "What?"
|
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
.byte "?REDO FROM START"
|
2008-10-08 07:04:03 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
.byte $0D,$0A,$00
|
2008-10-08 07:04:03 +00:00
|
|
|
.ifdef KBD
|
|
|
|
LEA30:
|
|
|
|
.byte "B"
|
|
|
|
.byte $FD
|
|
|
|
.byte "GsBASIC"
|
|
|
|
.byte $00,$1B,$0D,$13
|
|
|
|
.byte " BASIC"
|
|
|
|
.endif
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; "NEXT" STATEMENT
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
NEXT:
|
|
|
|
bne NEXT1
|
|
|
|
ldy #$00
|
|
|
|
beq NEXT2
|
|
|
|
NEXT1:
|
|
|
|
jsr PTRGET
|
|
|
|
NEXT2:
|
|
|
|
sta FORPNT
|
|
|
|
sty FORPNT+1
|
|
|
|
jsr GTFORPNT
|
|
|
|
beq NEXT3
|
|
|
|
ldx #$00
|
|
|
|
GERR:
|
|
|
|
beq JERROR
|
|
|
|
NEXT3:
|
|
|
|
txs
|
2008-10-08 05:07:59 +00:00
|
|
|
.ifndef CBM2_KBD
|
2008-10-06 05:21:05 +00:00
|
|
|
inx
|
|
|
|
inx
|
|
|
|
inx
|
|
|
|
inx
|
2008-10-07 08:03:36 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
txa
|
2008-10-08 05:07:59 +00:00
|
|
|
.ifdef CBM2_KBD
|
2008-10-07 08:03:36 +00:00
|
|
|
clc
|
|
|
|
adc #$04
|
|
|
|
pha
|
2008-10-09 10:10:09 +00:00
|
|
|
adc #BYTES_FP+1
|
2008-10-08 11:42:15 +00:00
|
|
|
sta DEST
|
2008-10-07 08:03:36 +00:00
|
|
|
pla
|
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
inx
|
|
|
|
inx
|
|
|
|
inx
|
|
|
|
inx
|
|
|
|
inx
|
2008-10-11 10:14:29 +00:00
|
|
|
.ifndef CONFIG_SMALL
|
2008-10-06 05:21:05 +00:00
|
|
|
inx
|
2008-10-07 05:52:42 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
stx DEST
|
2008-10-07 08:03:36 +00:00
|
|
|
.endif
|
2008-10-06 06:02:37 +00:00
|
|
|
ldy #>STACK
|
2008-10-06 05:21:05 +00:00
|
|
|
jsr LOAD_FAC_FROM_YA
|
|
|
|
tsx
|
2008-10-06 06:02:37 +00:00
|
|
|
lda STACK+BYTES_FP+4,x
|
2008-10-06 05:21:05 +00:00
|
|
|
sta FACSIGN
|
|
|
|
lda FORPNT
|
|
|
|
ldy FORPNT+1
|
|
|
|
jsr FADD
|
|
|
|
jsr SETFOR
|
2008-10-06 06:02:37 +00:00
|
|
|
ldy #>STACK
|
2008-10-06 05:21:05 +00:00
|
|
|
jsr FCOMP2
|
|
|
|
tsx
|
|
|
|
sec
|
2008-10-06 06:02:37 +00:00
|
|
|
sbc STACK+BYTES_FP+4,x
|
2008-10-06 05:21:05 +00:00
|
|
|
beq L2C22
|
2008-10-06 06:02:37 +00:00
|
|
|
lda STACK+2*BYTES_FP+5,x
|
2008-10-06 05:21:05 +00:00
|
|
|
sta CURLIN
|
2008-10-06 06:02:37 +00:00
|
|
|
lda STACK+2*BYTES_FP+6,x
|
2008-10-06 05:21:05 +00:00
|
|
|
sta CURLIN+1
|
2008-10-06 06:02:37 +00:00
|
|
|
lda STACK+2*BYTES_FP+8,x
|
2008-10-06 05:21:05 +00:00
|
|
|
sta TXTPTR
|
2008-10-06 06:02:37 +00:00
|
|
|
lda STACK+2*BYTES_FP+7,x
|
2008-10-06 05:21:05 +00:00
|
|
|
sta TXTPTR+1
|
|
|
|
L2C1F:
|
|
|
|
jmp NEWSTT
|
|
|
|
L2C22:
|
|
|
|
txa
|
2008-10-06 06:02:37 +00:00
|
|
|
adc #2*BYTES_FP+7
|
2008-10-06 05:21:05 +00:00
|
|
|
tax
|
|
|
|
txs
|
|
|
|
jsr CHRGOT
|
|
|
|
cmp #$2C
|
|
|
|
bne L2C1F
|
|
|
|
jsr CHRGET
|
|
|
|
jsr NEXT1
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; EVALUATE EXPRESSION, MAKE SURE IT IS NUMERIC
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
FRMNUM:
|
|
|
|
jsr FRMEVL
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; MAKE SURE (FAC) IS NUMERIC
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
CHKNUM:
|
|
|
|
clc
|
|
|
|
.byte $24
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; MAKE SURE (FAC) IS STRING
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
CHKSTR:
|
|
|
|
sec
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; MAKE SURE (FAC) IS CORRECT TYPE
|
|
|
|
; IF C=0, TYPE MUST BE NUMERIC
|
|
|
|
; IF C=1, TYPE MUST BE STRING
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
CHKVAL:
|
|
|
|
bit VALTYP
|
|
|
|
bmi L2C41
|
|
|
|
bcs L2C43
|
|
|
|
L2C40:
|
|
|
|
rts
|
|
|
|
L2C41:
|
|
|
|
bcs L2C40
|
|
|
|
L2C43:
|
2008-10-06 06:02:37 +00:00
|
|
|
ldx #ERR_BADTYPE
|
2008-10-06 05:21:05 +00:00
|
|
|
JERROR:
|
|
|
|
jmp ERROR
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; EVALUATE THE EXPRESSION AT TXTPTR, LEAVING THE
|
|
|
|
; RESULT IN FAC. WORKS FOR BOTH STRING AND NUMERIC
|
|
|
|
; EXPRESSIONS.
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
FRMEVL:
|
|
|
|
ldx TXTPTR
|
|
|
|
bne L2C4E
|
|
|
|
dec TXTPTR+1
|
|
|
|
L2C4E:
|
|
|
|
dec TXTPTR
|
|
|
|
ldx #$00
|
|
|
|
.byte $24
|
|
|
|
FRMEVL1:
|
|
|
|
pha
|
|
|
|
txa
|
|
|
|
pha
|
|
|
|
lda #$01
|
|
|
|
jsr CHKMEM
|
|
|
|
jsr FRM_ELEMENT
|
|
|
|
lda #$00
|
|
|
|
sta CPRTYP
|
|
|
|
FRMEVL2:
|
|
|
|
jsr CHRGOT
|
|
|
|
L2C65:
|
|
|
|
sec
|
2008-10-06 06:02:37 +00:00
|
|
|
sbc #TOKEN_GREATER
|
2008-10-06 05:21:05 +00:00
|
|
|
bcc L2C81
|
|
|
|
cmp #$03
|
|
|
|
bcs L2C81
|
|
|
|
cmp #$01
|
|
|
|
rol a
|
|
|
|
eor #$01
|
|
|
|
eor CPRTYP
|
|
|
|
cmp CPRTYP
|
|
|
|
bcc SNTXERR
|
|
|
|
sta CPRTYP
|
|
|
|
jsr CHRGET
|
|
|
|
jmp L2C65
|
|
|
|
L2C81:
|
|
|
|
ldx CPRTYP
|
|
|
|
bne FRM_RELATIONAL
|
|
|
|
bcs L2D02
|
|
|
|
adc #$07
|
|
|
|
bcc L2D02
|
|
|
|
adc VALTYP
|
|
|
|
bne L2C92
|
|
|
|
jmp CAT
|
|
|
|
L2C92:
|
|
|
|
adc #$FF
|
|
|
|
sta INDEX
|
|
|
|
asl a
|
|
|
|
adc INDEX
|
|
|
|
tay
|
|
|
|
FRM_PRECEDENCE_TEST:
|
|
|
|
pla
|
|
|
|
cmp MATHTBL,y
|
|
|
|
bcs FRM_PERFORM1
|
|
|
|
jsr CHKNUM
|
|
|
|
L2CA3:
|
|
|
|
pha
|
|
|
|
L2CA4:
|
|
|
|
jsr FRM_RECURSE
|
|
|
|
pla
|
|
|
|
ldy LASTOP
|
|
|
|
bpl PREFNC
|
|
|
|
tax
|
|
|
|
beq GOEX
|
|
|
|
bne FRM_PERFORM2
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; FOUND ONE OR MORE RELATIONAL OPERATORS <,=,>
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
FRM_RELATIONAL:
|
|
|
|
lsr VALTYP
|
|
|
|
txa
|
|
|
|
rol a
|
|
|
|
ldx TXTPTR
|
|
|
|
bne L2CBB
|
|
|
|
dec TXTPTR+1
|
|
|
|
L2CBB:
|
|
|
|
dec TXTPTR
|
|
|
|
ldy #$1B
|
|
|
|
sta CPRTYP
|
|
|
|
bne FRM_PRECEDENCE_TEST
|
|
|
|
PREFNC:
|
|
|
|
cmp MATHTBL,y
|
|
|
|
bcs FRM_PERFORM2
|
|
|
|
bcc L2CA3
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; STACK THIS OPERATION AND CALL FRMEVL FOR
|
|
|
|
; ANOTHER ONE
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
FRM_RECURSE:
|
|
|
|
lda MATHTBL+2,y
|
|
|
|
pha
|
|
|
|
lda MATHTBL+1,y
|
|
|
|
pha
|
|
|
|
jsr FRM_STACK1
|
|
|
|
lda CPRTYP
|
|
|
|
jmp FRMEVL1
|
|
|
|
SNTXERR:
|
|
|
|
jmp SYNERR
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; STACK (FAC)
|
|
|
|
; THREE ENTRY POINTS:
|
|
|
|
; 1, FROM FRMEVL
|
|
|
|
; 2, FROM "STEP"
|
|
|
|
; 3, FROM "FOR"
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
FRM_STACK1:
|
|
|
|
lda FACSIGN
|
|
|
|
ldx MATHTBL,y
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; ENTER HERE FROM "STEP", TO PUSH STEP SIGN AND VALUE
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
FRM_STACK2:
|
|
|
|
tay
|
|
|
|
pla
|
|
|
|
sta INDEX
|
2008-10-08 07:04:03 +00:00
|
|
|
.ifndef KBD
|
2008-10-09 10:10:09 +00:00
|
|
|
inc INDEX ; bug: assumes not on page boundary
|
2008-10-08 07:04:03 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
pla
|
|
|
|
sta INDEX+1
|
2008-10-08 07:04:03 +00:00
|
|
|
.ifdef KBD
|
|
|
|
inc INDEX
|
|
|
|
bne LEB69
|
|
|
|
inc INDEX+1
|
|
|
|
LEB69:
|
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
tya
|
|
|
|
pha
|
2008-10-13 01:12:57 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; ENTER HERE FROM "FOR", WITH (INDEX) = STEP,
|
|
|
|
; TO PUSH INITIAL VALUE OF "FOR" VARIABLE
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
FRM_STACK3:
|
2008-10-06 05:21:05 +00:00
|
|
|
jsr ROUND_FAC
|
2008-10-11 10:14:29 +00:00
|
|
|
.ifndef CONFIG_SMALL
|
2008-10-06 05:21:05 +00:00
|
|
|
lda FAC+4
|
|
|
|
pha
|
2008-10-07 05:52:42 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
lda FAC+3
|
|
|
|
pha
|
|
|
|
lda FAC+2
|
|
|
|
pha
|
|
|
|
lda FAC+1
|
|
|
|
pha
|
|
|
|
lda FAC
|
|
|
|
pha
|
|
|
|
jmp (INDEX)
|
|
|
|
L2D02:
|
|
|
|
ldy #$FF
|
|
|
|
pla
|
|
|
|
GOEX:
|
|
|
|
beq EXIT
|
2008-10-13 01:43:59 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; PERFORM STACKED OPERATION
|
|
|
|
;
|
|
|
|
; (A) = PRECEDENCE BYTE
|
|
|
|
; STACK: 1 -- CPRMASK
|
|
|
|
; 5 -- (ARG)
|
|
|
|
; 2 -- ADDR OF PERFORMER
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
FRM_PERFORM1:
|
|
|
|
cmp #$64
|
|
|
|
beq L2D0E
|
|
|
|
jsr CHKNUM
|
|
|
|
L2D0E:
|
|
|
|
sty LASTOP
|
|
|
|
FRM_PERFORM2:
|
|
|
|
pla
|
|
|
|
lsr a
|
|
|
|
sta CPRMASK
|
|
|
|
pla
|
|
|
|
sta ARG
|
|
|
|
pla
|
|
|
|
sta ARG+1
|
|
|
|
pla
|
|
|
|
sta ARG+2
|
|
|
|
pla
|
|
|
|
sta ARG+3
|
|
|
|
pla
|
2008-10-11 10:14:29 +00:00
|
|
|
.ifndef CONFIG_SMALL
|
2008-10-06 05:21:05 +00:00
|
|
|
sta ARG+4
|
|
|
|
pla
|
2008-10-07 05:52:42 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
sta ARGSIGN
|
|
|
|
eor FACSIGN
|
|
|
|
sta STRNG1
|
|
|
|
EXIT:
|
|
|
|
lda FAC
|
|
|
|
rts
|
2008-10-13 01:43:59 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; GET ELEMENT IN EXPRESSION
|
|
|
|
;
|
|
|
|
; GET VALUE OF VARIABLE OR NUMBER AT TXTPNT, OR POINT
|
|
|
|
; TO STRING DESCRIPTOR IF A STRING, AND PUT IN FAC.
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
FRM_ELEMENT:
|
|
|
|
lda #$00
|
|
|
|
sta VALTYP
|
|
|
|
L2D31:
|
|
|
|
jsr CHRGET
|
|
|
|
bcs L2D39
|
|
|
|
L2D36:
|
|
|
|
jmp FIN
|
|
|
|
L2D39:
|
|
|
|
jsr ISLETC
|
|
|
|
bcs FRM_VARIABLE
|
2008-10-11 09:56:31 +00:00
|
|
|
.ifdef CONFIG_CBM_ALL
|
2008-10-06 10:32:35 +00:00
|
|
|
cmp #$FF
|
|
|
|
bne LCDC1
|
|
|
|
lda #<CON_PI
|
|
|
|
ldy #>CON_PI
|
2008-10-07 04:44:27 +00:00
|
|
|
jsr LOAD_FAC_FROM_YA
|
|
|
|
jmp CHRGET
|
2008-10-06 10:32:35 +00:00
|
|
|
CON_PI:
|
|
|
|
.byte $82,$49,$0f,$DA,$A1
|
|
|
|
LCDC1:
|
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
cmp #$2E
|
|
|
|
beq L2D36
|
2008-10-06 06:02:37 +00:00
|
|
|
cmp #TOKEN_MINUS
|
2008-10-06 05:21:05 +00:00
|
|
|
beq MIN
|
2008-10-06 06:02:37 +00:00
|
|
|
cmp #TOKEN_PLUS
|
2008-10-06 05:21:05 +00:00
|
|
|
beq L2D31
|
|
|
|
cmp #$22
|
|
|
|
bne NOT_
|
2008-10-13 01:43:59 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; STRING CONSTANT ELEMENT
|
|
|
|
;
|
|
|
|
; SET Y,A = (TXTPTR)+CARRY
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
STRTXT:
|
|
|
|
lda TXTPTR
|
|
|
|
ldy TXTPTR+1
|
|
|
|
adc #$00
|
|
|
|
bcc L2D57
|
|
|
|
iny
|
|
|
|
L2D57:
|
|
|
|
jsr STRLIT
|
|
|
|
jmp POINT
|
2008-10-13 01:43:59 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; "NOT" FUNCTION
|
|
|
|
; IF FAC=0, RETURN FAC=1
|
|
|
|
; IF FAC<>0, RETURN FAC=0
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
NOT_:
|
2008-10-06 06:02:37 +00:00
|
|
|
cmp #TOKEN_NOT
|
2008-10-06 05:21:05 +00:00
|
|
|
bne L2D74
|
|
|
|
ldy #$18
|
|
|
|
bne EQUL
|
2008-10-13 01:43:59 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; COMPARISON FOR EQUALITY (= OPERATOR)
|
|
|
|
; ALSO USED TO EVALUATE "NOT" FUNCTION
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-09 07:24:49 +00:00
|
|
|
EQUOP:
|
2008-10-06 05:21:05 +00:00
|
|
|
jsr AYINT
|
|
|
|
lda FAC_LAST
|
|
|
|
eor #$FF
|
|
|
|
tay
|
|
|
|
lda FAC_LAST-1
|
|
|
|
eor #$FF
|
|
|
|
jmp GIVAYF
|
|
|
|
L2D74:
|
2008-10-06 06:02:37 +00:00
|
|
|
cmp #TOKEN_FN
|
2008-10-06 05:21:05 +00:00
|
|
|
bne L2D7B
|
|
|
|
jmp L31F3
|
|
|
|
L2D7B:
|
2008-10-06 06:02:37 +00:00
|
|
|
cmp #TOKEN_SGN
|
2008-10-06 05:21:05 +00:00
|
|
|
bcc PARCHK
|
|
|
|
jmp UNARY
|
2008-10-13 01:43:59 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; EVALUATE "(EXPRESSION)"
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
PARCHK:
|
|
|
|
jsr CHKOPN
|
|
|
|
jsr FRMEVL
|
|
|
|
CHKCLS:
|
|
|
|
lda #$29
|
|
|
|
.byte $2C
|
|
|
|
CHKOPN:
|
|
|
|
lda #$28
|
|
|
|
.byte $2C
|
|
|
|
CHKCOM:
|
|
|
|
lda #$2C
|
2008-10-13 01:43:59 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; UNLESS CHAR AT TXTPTR = (A), SYNTAX ERROR
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-07 04:44:27 +00:00
|
|
|
SYNCHR: ; XXX all CBM code calls SYNCHR instead of CHKCOM
|
2008-10-06 05:21:05 +00:00
|
|
|
ldy #$00
|
|
|
|
cmp (TXTPTR),y
|
|
|
|
bne SYNERR
|
|
|
|
jmp CHRGET
|
2008-10-13 01:43:59 +00:00
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
SYNERR:
|
2008-10-06 06:02:37 +00:00
|
|
|
ldx #ERR_SYNTAX
|
2008-10-06 05:21:05 +00:00
|
|
|
jmp ERROR
|
2008-10-13 01:43:59 +00:00
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
MIN:
|
|
|
|
ldy #$15
|
|
|
|
EQUL:
|
|
|
|
pla
|
|
|
|
pla
|
|
|
|
jmp L2CA4
|
2008-10-13 01:43:59 +00:00
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
FRM_VARIABLE:
|
|
|
|
jsr PTRGET
|
|
|
|
FRM_VARIABLE_CALL = *-1
|
|
|
|
sta FAC_LAST-1
|
|
|
|
sty FAC_LAST
|
2008-10-11 09:56:31 +00:00
|
|
|
.ifdef CONFIG_CBM_ALL
|
2008-10-07 10:05:20 +00:00
|
|
|
lda VARNAM
|
|
|
|
ldy VARNAM+1
|
2008-10-06 10:32:35 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
ldx VALTYP
|
|
|
|
beq L2DB1
|
2008-10-11 09:56:31 +00:00
|
|
|
.ifdef CONFIG_CBM_ALL
|
2008-10-09 10:37:43 +00:00
|
|
|
.ifdef CONFIG_CBM1_PATCHES
|
2008-10-07 04:44:27 +00:00
|
|
|
jmp PATCH2
|
2008-10-06 10:32:35 +00:00
|
|
|
clc
|
|
|
|
LCE3B:
|
2008-10-07 08:03:36 +00:00
|
|
|
.else
|
|
|
|
ldx #$00
|
|
|
|
stx $6D
|
|
|
|
bit $62
|
|
|
|
bpl LCE53
|
|
|
|
cmp #$54
|
|
|
|
bne LCE53
|
|
|
|
.endif
|
2008-10-06 10:32:35 +00:00
|
|
|
cpy #$C9
|
|
|
|
bne LCE53
|
|
|
|
jsr LCE76
|
2008-10-07 10:05:20 +00:00
|
|
|
sty EXPON
|
2008-10-06 10:32:35 +00:00
|
|
|
dey
|
2008-10-07 10:05:20 +00:00
|
|
|
sty STRNG2
|
2008-10-06 10:32:35 +00:00
|
|
|
ldy #$06
|
2008-10-07 10:05:20 +00:00
|
|
|
sty INDX
|
2008-10-06 10:32:35 +00:00
|
|
|
ldy #$24
|
|
|
|
jsr LDD3A
|
|
|
|
jmp LD353
|
|
|
|
LCE53:
|
2008-10-08 07:04:03 +00:00
|
|
|
.endif
|
|
|
|
.ifdef KBD
|
|
|
|
ldx #$00
|
|
|
|
stx STRNG1+1
|
2008-10-06 10:32:35 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
rts
|
|
|
|
L2DB1:
|
2008-10-11 10:14:29 +00:00
|
|
|
.ifndef CONFIG_SMALL
|
2008-10-06 05:21:05 +00:00
|
|
|
ldx VALTYP+1
|
|
|
|
bpl L2DC2
|
|
|
|
ldy #$00
|
|
|
|
lda (FAC+3),y
|
|
|
|
tax
|
|
|
|
iny
|
|
|
|
lda (FAC+3),y
|
|
|
|
tay
|
|
|
|
txa
|
|
|
|
jmp GIVAYF
|
|
|
|
L2DC2:
|
2008-10-07 05:52:42 +00:00
|
|
|
.endif
|
2008-10-09 10:37:43 +00:00
|
|
|
.ifdef CONFIG_CBM1_PATCHES
|
2008-10-07 04:44:27 +00:00
|
|
|
jmp PATCH3
|
2008-10-07 08:03:36 +00:00
|
|
|
.endif
|
|
|
|
.ifdef CBM2
|
|
|
|
bit $62
|
2008-10-07 10:05:20 +00:00
|
|
|
bpl LCE90
|
2008-10-07 08:03:36 +00:00
|
|
|
cmp #$54
|
|
|
|
bne LCE82
|
|
|
|
.endif
|
2008-10-11 09:56:31 +00:00
|
|
|
.ifndef CONFIG_CBM_ALL
|
2008-10-09 10:10:09 +00:00
|
|
|
jmp LOAD_FAC_FROM_YA
|
|
|
|
.endif
|
2008-10-07 08:03:36 +00:00
|
|
|
.ifdef CBM1
|
2008-10-06 10:32:35 +00:00
|
|
|
.byte $19
|
2008-10-07 08:03:36 +00:00
|
|
|
.endif
|
2008-10-11 09:56:31 +00:00
|
|
|
.ifdef CONFIG_CBM_ALL
|
2008-10-06 10:32:35 +00:00
|
|
|
LCE69:
|
|
|
|
cpy #$49
|
2008-10-07 10:05:20 +00:00
|
|
|
.ifdef CBM1
|
2008-10-06 10:32:35 +00:00
|
|
|
bne LCE82
|
2008-10-07 10:05:20 +00:00
|
|
|
.else
|
|
|
|
bne LCE90
|
|
|
|
.endif
|
2008-10-06 10:32:35 +00:00
|
|
|
jsr LCE76
|
|
|
|
tya
|
|
|
|
ldx #$A0
|
|
|
|
jmp LDB21
|
|
|
|
LCE76:
|
2008-10-07 10:05:20 +00:00
|
|
|
.ifdef CBM1
|
2008-10-06 10:32:35 +00:00
|
|
|
lda #$FE
|
|
|
|
ldy #$01
|
2008-10-07 10:05:20 +00:00
|
|
|
.else
|
|
|
|
lda #$8B
|
|
|
|
ldy #$00
|
|
|
|
.endif
|
2008-10-06 10:32:35 +00:00
|
|
|
sei
|
2008-10-07 04:44:27 +00:00
|
|
|
jsr LOAD_FAC_FROM_YA
|
2008-10-06 10:32:35 +00:00
|
|
|
cli
|
2008-10-07 10:05:20 +00:00
|
|
|
sty FAC+1
|
2008-10-06 10:32:35 +00:00
|
|
|
rts
|
|
|
|
LCE82:
|
|
|
|
cmp #$53
|
|
|
|
bne LCE90
|
|
|
|
cpy #$54
|
|
|
|
bne LCE90
|
2008-10-09 10:10:09 +00:00
|
|
|
lda Z96
|
2008-10-07 04:44:27 +00:00
|
|
|
jmp FLOAT
|
2008-10-06 10:32:35 +00:00
|
|
|
LCE90:
|
2008-10-07 10:05:20 +00:00
|
|
|
lda FAC+3
|
|
|
|
ldy FAC+4
|
2008-10-07 04:44:27 +00:00
|
|
|
jmp LOAD_FAC_FROM_YA
|
2008-10-06 10:32:35 +00:00
|
|
|
.endif
|
2008-10-13 01:43:59 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
UNARY:
|
|
|
|
asl a
|
|
|
|
pha
|
|
|
|
tax
|
|
|
|
jsr CHRGET
|
2008-10-06 06:02:37 +00:00
|
|
|
cpx #<(TOKEN_LEFTSTR*2-1)
|
2008-10-06 05:21:05 +00:00
|
|
|
bcc L2DEF
|
|
|
|
jsr CHKOPN
|
|
|
|
jsr FRMEVL
|
|
|
|
jsr CHKCOM
|
|
|
|
jsr CHKSTR
|
|
|
|
pla
|
|
|
|
tax
|
|
|
|
lda FAC_LAST
|
|
|
|
pha
|
|
|
|
lda FAC_LAST-1
|
|
|
|
pha
|
|
|
|
txa
|
|
|
|
pha
|
|
|
|
jsr GETBYT
|
|
|
|
pla
|
|
|
|
tay
|
|
|
|
txa
|
|
|
|
pha
|
|
|
|
jmp L2DF4
|
|
|
|
L2DEF:
|
|
|
|
jsr PARCHK
|
|
|
|
pla
|
|
|
|
tay
|
|
|
|
L2DF4:
|
2008-10-06 06:02:37 +00:00
|
|
|
lda UNFNC-TOKEN_SGN-TOKEN_SGN+$100,y
|
2008-10-06 05:21:05 +00:00
|
|
|
sta JMPADRS+1
|
2008-10-06 06:02:37 +00:00
|
|
|
lda UNFNC-TOKEN_SGN-TOKEN_SGN+$101,y
|
2008-10-08 11:42:15 +00:00
|
|
|
sta JMPADRS+2
|
|
|
|
.ifdef KBD
|
|
|
|
jsr LF47D
|
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
jsr JMPADRS
|
2008-10-08 11:42:15 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
jmp CHKNUM
|
2008-10-13 01:43:59 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-09 07:24:49 +00:00
|
|
|
OR:
|
2008-10-06 05:21:05 +00:00
|
|
|
ldy #$FF
|
|
|
|
.byte $2C
|
2008-10-13 01:43:59 +00:00
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-09 07:24:49 +00:00
|
|
|
TAND:
|
2008-10-06 05:21:05 +00:00
|
|
|
ldy #$00
|
|
|
|
sty EOLPNTR
|
|
|
|
jsr AYINT
|
|
|
|
lda FAC_LAST-1
|
|
|
|
eor EOLPNTR
|
|
|
|
sta CHARAC
|
|
|
|
lda FAC_LAST
|
|
|
|
eor EOLPNTR
|
|
|
|
sta ENDCHR
|
|
|
|
jsr COPY_ARG_TO_FAC
|
|
|
|
jsr AYINT
|
|
|
|
lda FAC_LAST
|
|
|
|
eor EOLPNTR
|
|
|
|
and ENDCHR
|
|
|
|
eor EOLPNTR
|
|
|
|
tay
|
|
|
|
lda FAC_LAST-1
|
|
|
|
eor EOLPNTR
|
|
|
|
and CHARAC
|
|
|
|
eor EOLPNTR
|
|
|
|
jmp GIVAYF
|
2008-10-13 01:43:59 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; PERFORM RELATIONAL OPERATIONS
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
RELOPS:
|
|
|
|
jsr CHKVAL
|
|
|
|
bcs STRCMP
|
|
|
|
lda ARGSIGN
|
|
|
|
ora #$7F
|
|
|
|
and ARG+1
|
|
|
|
sta ARG+1
|
|
|
|
lda #<ARG
|
|
|
|
ldy #$00
|
|
|
|
jsr FCOMP
|
|
|
|
tax
|
|
|
|
jmp NUMCMP
|
2008-10-13 01:43:59 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; STRING COMPARISON
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
STRCMP:
|
|
|
|
lda #$00
|
|
|
|
sta VALTYP
|
|
|
|
dec CPRTYP
|
|
|
|
jsr FREFAC
|
|
|
|
sta FAC
|
|
|
|
stx FAC+1
|
|
|
|
sty FAC+2
|
|
|
|
lda ARG_LAST-1
|
|
|
|
ldy ARG_LAST
|
|
|
|
jsr FRETMP
|
|
|
|
stx ARG_LAST-1
|
|
|
|
sty ARG_LAST
|
|
|
|
tax
|
|
|
|
sec
|
|
|
|
sbc FAC
|
|
|
|
beq L2E74
|
|
|
|
lda #$01
|
|
|
|
bcc L2E74
|
|
|
|
ldx FAC
|
|
|
|
lda #$FF
|
|
|
|
L2E74:
|
|
|
|
sta FACSIGN
|
|
|
|
ldy #$FF
|
|
|
|
inx
|
|
|
|
STRCMP1:
|
|
|
|
iny
|
|
|
|
dex
|
|
|
|
bne L2E84
|
|
|
|
ldx FACSIGN
|
|
|
|
NUMCMP:
|
|
|
|
bmi CMPDONE
|
|
|
|
clc
|
|
|
|
bcc CMPDONE
|
|
|
|
L2E84:
|
|
|
|
lda (ARG_LAST-1),y
|
|
|
|
cmp (FAC+1),y
|
|
|
|
beq STRCMP1
|
|
|
|
ldx #$FF
|
|
|
|
bcs CMPDONE
|
|
|
|
ldx #$01
|
|
|
|
CMPDONE:
|
|
|
|
inx
|
|
|
|
txa
|
|
|
|
rol a
|
|
|
|
and CPRMASK
|
|
|
|
beq L2E99
|
|
|
|
lda #$FF
|
|
|
|
L2E99:
|
|
|
|
jmp FLOAT
|
2008-10-13 01:43:59 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; "DIM" STATEMENT
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
NXDIM:
|
|
|
|
jsr CHKCOM
|
|
|
|
DIM:
|
|
|
|
tax
|
|
|
|
jsr PTRGET2
|
|
|
|
jsr CHRGOT
|
|
|
|
bne NXDIM
|
|
|
|
rts
|
2008-10-13 01:43:59 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; PTRGET -- GENERAL VARIABLE SCAN
|
|
|
|
;
|
|
|
|
; SCANS VARIABLE NAME AT TXTPTR, AND SEARCHES THE
|
|
|
|
; VARTAB AND ARYTAB FOR THE NAME.
|
|
|
|
; IF NOT FOUND, CREATE VARIABLE OF APPROPRIATE TYPE.
|
|
|
|
; RETURN WITH ADDRESS IN VARPNT AND Y,A
|
|
|
|
;
|
|
|
|
; ACTUAL ACTIVITY CONTROLLED SOMEWHAT BY TWO FLAGS:
|
|
|
|
; DIMFLG -- NONZERO IF CALLED FROM "DIM"
|
|
|
|
; ELSE = 0
|
|
|
|
;
|
|
|
|
; SUBFLG -- = $00
|
|
|
|
; = $40 IF CALLED FROM "GETARYPT"
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
PTRGET:
|
|
|
|
ldx #$00
|
|
|
|
jsr CHRGOT
|
|
|
|
PTRGET2:
|
|
|
|
stx DIMFLG
|
|
|
|
PTRGET3:
|
|
|
|
sta VARNAM
|
|
|
|
jsr CHRGOT
|
|
|
|
jsr ISLETC
|
|
|
|
bcs NAMOK
|
|
|
|
SYNERR3:
|
|
|
|
jmp SYNERR
|
|
|
|
NAMOK:
|
|
|
|
ldx #$00
|
|
|
|
stx VALTYP
|
2008-10-11 10:14:29 +00:00
|
|
|
.ifndef CONFIG_SMALL
|
2008-10-06 05:21:05 +00:00
|
|
|
stx VALTYP+1
|
2008-10-07 05:52:42 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
jsr CHRGET
|
|
|
|
bcc L2ECD
|
|
|
|
jsr ISLETC
|
|
|
|
bcc L2ED8
|
|
|
|
L2ECD:
|
|
|
|
tax
|
|
|
|
L2ECE:
|
|
|
|
jsr CHRGET
|
|
|
|
bcc L2ECE
|
|
|
|
jsr ISLETC
|
|
|
|
bcs L2ECE
|
|
|
|
L2ED8:
|
|
|
|
cmp #$24
|
2008-10-11 10:14:29 +00:00
|
|
|
.ifdef CONFIG_SMALL
|
2008-10-06 05:21:05 +00:00
|
|
|
bne L2EF9
|
2008-10-07 05:52:42 +00:00
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
bne L2EE2
|
2008-10-07 05:52:42 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
lda #$FF
|
|
|
|
sta VALTYP
|
2008-10-11 10:14:29 +00:00
|
|
|
.ifndef CONFIG_SMALL
|
2008-10-06 05:21:05 +00:00
|
|
|
bne L2EF2
|
|
|
|
L2EE2:
|
|
|
|
cmp #$25
|
|
|
|
bne L2EF9
|
|
|
|
lda SUBFLG
|
|
|
|
bne SYNERR3
|
|
|
|
lda #$80
|
|
|
|
sta VALTYP+1
|
|
|
|
ora VARNAM
|
|
|
|
sta VARNAM
|
|
|
|
L2EF2:
|
2008-10-07 05:52:42 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
txa
|
|
|
|
ora #$80
|
|
|
|
tax
|
|
|
|
jsr CHRGET
|
|
|
|
L2EF9:
|
|
|
|
stx VARNAM+1
|
|
|
|
sec
|
|
|
|
ora SUBFLG
|
|
|
|
sbc #$28
|
|
|
|
bne L2F05
|
|
|
|
jmp ARRAY
|
|
|
|
L2F05:
|
|
|
|
lda #$00
|
|
|
|
sta SUBFLG
|
|
|
|
lda VARTAB
|
|
|
|
ldx VARTAB+1
|
|
|
|
ldy #$00
|
|
|
|
L2F0F:
|
|
|
|
stx LOWTR+1
|
|
|
|
L2F11:
|
|
|
|
sta LOWTR
|
|
|
|
cpx ARYTAB+1
|
|
|
|
bne L2F1B
|
|
|
|
cmp ARYTAB
|
|
|
|
beq NAMENOTFOUND
|
|
|
|
L2F1B:
|
|
|
|
lda VARNAM
|
|
|
|
cmp (LOWTR),y
|
|
|
|
bne L2F29
|
|
|
|
lda VARNAM+1
|
|
|
|
iny
|
|
|
|
cmp (LOWTR),y
|
|
|
|
beq SET_VARPNT_AND_YA
|
|
|
|
dey
|
|
|
|
L2F29:
|
|
|
|
clc
|
|
|
|
lda LOWTR
|
|
|
|
adc #BYTES_PER_VARIABLE
|
|
|
|
bcc L2F11
|
|
|
|
inx
|
|
|
|
bne L2F0F
|
2008-10-13 01:43:59 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; CHECK IF (A) IS ASCII LETTER A-Z
|
|
|
|
;
|
|
|
|
; RETURN CARRY = 1 IF A-Z
|
|
|
|
; = 0 IF NOT
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
ISLETC:
|
|
|
|
cmp #$41
|
|
|
|
bcc L2F3C
|
|
|
|
sbc #$5B
|
|
|
|
sec
|
|
|
|
sbc #$A5
|
|
|
|
L2F3C:
|
|
|
|
rts
|
2008-10-13 01:43:59 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; VARIABLE NOT FOUND, SO MAKE ONE
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
NAMENOTFOUND:
|
|
|
|
pla
|
|
|
|
pha
|
|
|
|
cmp #<FRM_VARIABLE_CALL
|
|
|
|
bne MAKENEWVARIABLE
|
2008-10-11 10:44:10 +00:00
|
|
|
.ifdef CONFIG_SAFE_NAMENOTFOUND
|
2008-10-06 05:21:05 +00:00
|
|
|
tsx
|
|
|
|
lda STACK+2,x
|
|
|
|
cmp #>FRM_VARIABLE_CALL
|
|
|
|
bne MAKENEWVARIABLE
|
2008-10-07 05:52:42 +00:00
|
|
|
.endif
|
2008-10-06 10:32:35 +00:00
|
|
|
LD015:
|
2008-10-06 05:21:05 +00:00
|
|
|
lda #<C_ZERO
|
|
|
|
ldy #>C_ZERO
|
|
|
|
rts
|
2008-10-13 01:43:59 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-08 07:04:03 +00:00
|
|
|
.ifndef CBM2_KBD
|
2008-10-07 10:05:20 +00:00
|
|
|
C_ZERO:
|
2008-10-06 05:21:05 +00:00
|
|
|
.byte $00,$00
|
2008-10-07 08:03:36 +00:00
|
|
|
.endif
|
2008-10-13 01:43:59 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; MAKE A NEW SIMPLE VARIABLE
|
|
|
|
;
|
|
|
|
; MOVE ARRAYS UP 7 BYTES TO MAKE ROOM FOR NEW VARIABLE
|
|
|
|
; ENTER 7-BYTE VARIABLE DATA IN THE HOLE
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
MAKENEWVARIABLE:
|
2008-10-11 09:56:31 +00:00
|
|
|
.ifdef CONFIG_CBM_ALL
|
2008-10-07 10:05:20 +00:00
|
|
|
lda VARNAM
|
|
|
|
ldy VARNAM+1
|
2008-10-06 10:32:35 +00:00
|
|
|
cmp #$54
|
|
|
|
bne LD02F
|
|
|
|
cpy #$C9
|
|
|
|
beq LD015
|
|
|
|
cpy #$49
|
|
|
|
bne LD02F
|
|
|
|
LD02C:
|
|
|
|
jmp SYNERR
|
|
|
|
LD02F:
|
|
|
|
cmp #$53
|
|
|
|
bne LD037
|
|
|
|
cpy #$54
|
|
|
|
beq LD02C
|
|
|
|
LD037:
|
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
lda ARYTAB
|
|
|
|
ldy ARYTAB+1
|
|
|
|
sta LOWTR
|
|
|
|
sty LOWTR+1
|
|
|
|
lda STREND
|
|
|
|
ldy STREND+1
|
|
|
|
sta HIGHTR
|
|
|
|
sty HIGHTR+1
|
|
|
|
clc
|
|
|
|
adc #BYTES_PER_VARIABLE
|
|
|
|
bcc L2F68
|
|
|
|
iny
|
|
|
|
L2F68:
|
|
|
|
sta HIGHDS
|
|
|
|
sty HIGHDS+1
|
|
|
|
jsr BLTU
|
|
|
|
lda HIGHDS
|
|
|
|
ldy HIGHDS+1
|
|
|
|
iny
|
|
|
|
sta ARYTAB
|
|
|
|
sty ARYTAB+1
|
|
|
|
ldy #$00
|
|
|
|
lda VARNAM
|
|
|
|
sta (LOWTR),y
|
|
|
|
iny
|
|
|
|
lda VARNAM+1
|
|
|
|
sta (LOWTR),y
|
|
|
|
lda #$00
|
|
|
|
iny
|
|
|
|
sta (LOWTR),y
|
|
|
|
iny
|
|
|
|
sta (LOWTR),y
|
|
|
|
iny
|
|
|
|
sta (LOWTR),y
|
|
|
|
iny
|
|
|
|
sta (LOWTR),y
|
2008-10-11 10:14:29 +00:00
|
|
|
.ifndef CONFIG_SMALL
|
2008-10-06 05:21:05 +00:00
|
|
|
iny
|
|
|
|
sta (LOWTR),y
|
2008-10-07 05:52:42 +00:00
|
|
|
.endif
|
2008-10-13 01:43:59 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; PUT ADDRESS OF VALUE OF VARIABLE IN VARPNT AND Y,A
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
SET_VARPNT_AND_YA:
|
|
|
|
lda LOWTR
|
|
|
|
clc
|
|
|
|
adc #$02
|
|
|
|
ldy LOWTR+1
|
|
|
|
bcc L2F9E
|
|
|
|
iny
|
|
|
|
L2F9E:
|
|
|
|
sta VARPNT
|
|
|
|
sty VARPNT+1
|
|
|
|
rts
|
2008-10-13 01:43:59 +00:00
|
|
|
|
|
|
|
|
|
|
|
.include "array.s"
|
|
|
|
|
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; "FRE" FUNCTION
|
|
|
|
;
|
|
|
|
; COLLECTS GARBAGE AND RETURNS # BYTES OF MEMORY LEFT
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
FRE:
|
|
|
|
lda VALTYP
|
|
|
|
beq L3188
|
|
|
|
jsr FREFAC
|
|
|
|
L3188:
|
|
|
|
jsr GARBAG
|
|
|
|
sec
|
|
|
|
lda FRETOP
|
|
|
|
sbc STREND
|
|
|
|
tay
|
|
|
|
lda FRETOP+1
|
|
|
|
sbc STREND+1
|
|
|
|
; FALL INTO GIVAYF TO FLOAT THE VALUE
|
|
|
|
; NOTE THAT VALUES OVER 32767 WILL RETURN AS NEGATIVE
|
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; FLOAT THE SIGNED INTEGER IN A,Y
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
GIVAYF:
|
|
|
|
ldx #$00
|
|
|
|
stx VALTYP
|
|
|
|
sta FAC+1
|
|
|
|
sty FAC+2
|
|
|
|
ldx #$90
|
|
|
|
jmp FLOAT1
|
|
|
|
POS:
|
|
|
|
ldy Z16
|
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; FLOAT (Y) INTO FAC, GIVING VALUE 0-255
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
SNGFLT:
|
|
|
|
lda #$00
|
|
|
|
beq GIVAYF
|
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; CHECK FOR DIRECT OR RUNNING MODE
|
|
|
|
; GIVING ERROR IF DIRECT MODE
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
ERRDIR:
|
|
|
|
ldx CURLIN+1
|
|
|
|
inx
|
|
|
|
bne RTS9
|
|
|
|
ldx #ERR_ILLDIR
|
2008-10-08 05:07:59 +00:00
|
|
|
.ifdef CBM2_KBD
|
2008-10-13 01:43:59 +00:00
|
|
|
.byte $2C
|
|
|
|
LD288:
|
|
|
|
ldx #ERR_UNDEFFN
|
2008-10-07 10:05:20 +00:00
|
|
|
.endif
|
2008-10-13 01:43:59 +00:00
|
|
|
L31AF:
|
|
|
|
jmp ERROR
|
|
|
|
DEF:
|
|
|
|
jsr FNC
|
|
|
|
jsr ERRDIR
|
|
|
|
jsr CHKOPN
|
|
|
|
lda #$80
|
|
|
|
sta SUBFLG
|
|
|
|
jsr PTRGET
|
2008-10-07 08:03:36 +00:00
|
|
|
jsr CHKNUM
|
2008-10-13 01:43:59 +00:00
|
|
|
jsr CHKCLS
|
|
|
|
lda #TOKEN_EQUAL
|
|
|
|
jsr SYNCHR
|
2008-10-11 10:14:29 +00:00
|
|
|
.ifndef CONFIG_SMALL
|
2008-10-06 05:21:05 +00:00
|
|
|
pha
|
2008-10-13 01:43:59 +00:00
|
|
|
.endif
|
|
|
|
lda VARPNT+1
|
2008-10-06 05:21:05 +00:00
|
|
|
pha
|
2008-10-13 01:43:59 +00:00
|
|
|
lda VARPNT
|
2008-10-06 05:21:05 +00:00
|
|
|
pha
|
2008-10-13 01:43:59 +00:00
|
|
|
lda TXTPTR+1
|
2008-10-06 05:21:05 +00:00
|
|
|
pha
|
2008-10-13 01:43:59 +00:00
|
|
|
lda TXTPTR
|
2008-10-06 05:21:05 +00:00
|
|
|
pha
|
2008-10-13 01:43:59 +00:00
|
|
|
jsr DATA
|
|
|
|
jmp L3250
|
|
|
|
FNC:
|
|
|
|
lda #TOKEN_FN
|
|
|
|
jsr SYNCHR
|
|
|
|
ora #$80
|
|
|
|
sta SUBFLG
|
|
|
|
jsr PTRGET3
|
|
|
|
sta FNCNAM
|
|
|
|
sty FNCNAM+1
|
|
|
|
jmp CHKNUM
|
|
|
|
L31F3:
|
|
|
|
jsr FNC
|
|
|
|
lda FNCNAM+1
|
2008-10-06 05:21:05 +00:00
|
|
|
pha
|
2008-10-13 01:43:59 +00:00
|
|
|
lda FNCNAM
|
2008-10-06 05:21:05 +00:00
|
|
|
pha
|
2008-10-13 01:43:59 +00:00
|
|
|
jsr PARCHK
|
|
|
|
jsr CHKNUM
|
2008-10-06 05:21:05 +00:00
|
|
|
pla
|
2008-10-13 01:43:59 +00:00
|
|
|
sta FNCNAM
|
2008-10-06 05:21:05 +00:00
|
|
|
pla
|
2008-10-13 01:43:59 +00:00
|
|
|
sta FNCNAM+1
|
|
|
|
ldy #$02
|
|
|
|
.ifndef CBM2_KBD
|
|
|
|
ldx #ERR_UNDEFFN
|
2008-10-07 05:52:42 +00:00
|
|
|
.endif
|
2008-10-13 01:43:59 +00:00
|
|
|
lda (FNCNAM),y
|
|
|
|
.ifndef CBM2_KBD
|
|
|
|
beq L31AF
|
|
|
|
.endif
|
|
|
|
sta VARPNT
|
2008-10-06 05:21:05 +00:00
|
|
|
tax
|
|
|
|
iny
|
2008-10-13 01:43:59 +00:00
|
|
|
lda (FNCNAM),y
|
|
|
|
.ifdef CBM2_KBD
|
|
|
|
beq LD288
|
2008-10-07 05:52:42 +00:00
|
|
|
.endif
|
2008-10-13 01:43:59 +00:00
|
|
|
sta VARPNT+1
|
2008-10-11 10:14:29 +00:00
|
|
|
.ifndef CONFIG_SMALL
|
2008-10-06 05:21:05 +00:00
|
|
|
iny
|
2008-10-08 07:04:03 +00:00
|
|
|
.endif
|
2008-10-13 01:43:59 +00:00
|
|
|
L3219:
|
|
|
|
lda (VARPNT),y
|
|
|
|
pha
|
|
|
|
dey
|
|
|
|
bpl L3219
|
|
|
|
ldy VARPNT+1
|
|
|
|
jsr STORE_FAC_AT_YX_ROUNDED
|
|
|
|
lda TXTPTR+1
|
|
|
|
pha
|
|
|
|
lda TXTPTR
|
|
|
|
pha
|
|
|
|
lda (FNCNAM),y
|
|
|
|
sta TXTPTR
|
2008-10-06 05:21:05 +00:00
|
|
|
iny
|
2008-10-13 01:43:59 +00:00
|
|
|
lda (FNCNAM),y
|
|
|
|
sta TXTPTR+1
|
|
|
|
lda VARPNT+1
|
|
|
|
pha
|
|
|
|
lda VARPNT
|
|
|
|
pha
|
|
|
|
jsr FRMNUM
|
2008-10-06 05:21:05 +00:00
|
|
|
pla
|
2008-10-13 01:43:59 +00:00
|
|
|
sta FNCNAM
|
2008-10-06 05:21:05 +00:00
|
|
|
pla
|
2008-10-13 01:43:59 +00:00
|
|
|
sta FNCNAM+1
|
|
|
|
jsr CHRGOT
|
|
|
|
beq L324A
|
|
|
|
jmp SYNERR
|
|
|
|
L324A:
|
2008-10-06 05:21:05 +00:00
|
|
|
pla
|
2008-10-13 01:43:59 +00:00
|
|
|
sta TXTPTR
|
2008-10-06 05:21:05 +00:00
|
|
|
pla
|
2008-10-13 01:43:59 +00:00
|
|
|
sta TXTPTR+1
|
|
|
|
L3250:
|
2008-10-06 05:21:05 +00:00
|
|
|
ldy #$00
|
|
|
|
pla
|
2008-10-13 01:43:59 +00:00
|
|
|
sta (FNCNAM),y
|
2008-10-06 05:21:05 +00:00
|
|
|
pla
|
|
|
|
iny
|
2008-10-13 01:43:59 +00:00
|
|
|
sta (FNCNAM),y
|
2008-10-06 05:21:05 +00:00
|
|
|
pla
|
2008-10-13 01:43:59 +00:00
|
|
|
iny
|
|
|
|
sta (FNCNAM),y
|
2008-10-06 05:21:05 +00:00
|
|
|
pla
|
2008-10-13 01:43:59 +00:00
|
|
|
iny
|
|
|
|
sta (FNCNAM),y
|
|
|
|
.ifndef CONFIG_SMALL
|
2008-10-06 05:21:05 +00:00
|
|
|
pla
|
2008-10-13 01:43:59 +00:00
|
|
|
iny
|
|
|
|
sta (FNCNAM),y
|
2008-10-07 05:52:42 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
rts
|
2008-10-13 01:43:59 +00:00
|
|
|
|
|
|
|
|
|
|
|
.include "string.s"
|
|
|
|
|
|
|
|
|
2008-10-08 07:04:03 +00:00
|
|
|
.ifdef KBD
|
|
|
|
LF422:
|
|
|
|
lda VARTAB
|
|
|
|
sec
|
|
|
|
sbc #$02
|
|
|
|
ldy VARTAB+1
|
|
|
|
bcs LF42C
|
|
|
|
dey
|
|
|
|
LF42C:
|
|
|
|
rts
|
|
|
|
LF42D:
|
|
|
|
lda Z00,x
|
|
|
|
LF430:
|
|
|
|
cmp #$61
|
|
|
|
bcc LF43A
|
|
|
|
cmp #$7B
|
|
|
|
bcs LF43A
|
|
|
|
LF438:
|
|
|
|
sbc #$1F
|
|
|
|
LF43A:
|
|
|
|
rts
|
|
|
|
LF43B:
|
|
|
|
ldx #$5D
|
|
|
|
LF43D:
|
|
|
|
txa
|
|
|
|
and #$7F
|
|
|
|
cmp $0340
|
|
|
|
beq LF44D
|
|
|
|
sta $0340
|
|
|
|
lda #$03
|
|
|
|
jsr LDE48
|
|
|
|
LF44D:
|
|
|
|
jsr LDE7F
|
2008-10-09 10:10:09 +00:00
|
|
|
bne RTS4
|
2008-10-08 07:04:03 +00:00
|
|
|
cpx #$80
|
|
|
|
bcc LF44D
|
2008-10-09 10:10:09 +00:00
|
|
|
RTS4:
|
2008-10-08 07:04:03 +00:00
|
|
|
rts
|
|
|
|
LF457:
|
|
|
|
lda TXTTAB
|
|
|
|
ldx TXTTAB+1
|
|
|
|
LF45B:
|
|
|
|
sta JMPADRS+1
|
|
|
|
stx JMPADRS+2
|
|
|
|
ldy #$01
|
|
|
|
lda (JMPADRS+1),y
|
|
|
|
beq LF438
|
|
|
|
iny
|
|
|
|
iny
|
|
|
|
lda (JMPADRS+1),y
|
|
|
|
dey
|
|
|
|
cmp $14
|
|
|
|
bne LF472
|
|
|
|
lda (JMPADRS+1),y
|
|
|
|
cmp $13
|
|
|
|
LF472:
|
|
|
|
bcs LF43A
|
|
|
|
dey
|
|
|
|
lda (JMPADRS+1),y
|
|
|
|
tax
|
|
|
|
dey
|
|
|
|
lda (JMPADRS+1),y
|
|
|
|
bcc LF45B
|
|
|
|
LF47D:
|
|
|
|
jmp (JMPADRS+1)
|
|
|
|
.else
|
2008-10-13 01:43:59 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; EVALUATE "EXP1,EXP2"
|
|
|
|
;
|
|
|
|
; CONVERT EXP1 TO 16-BIT NUMBER IN LINNUM
|
|
|
|
; CONVERT EXP2 TO 8-BIT NUMBER IN X-REG
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
GTNUM:
|
|
|
|
jsr FRMNUM
|
|
|
|
jsr GETADR
|
2008-10-13 01:43:59 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; EVALUATE ",EXPRESSION"
|
|
|
|
; CONVERT EXPRESSION TO SINGLE BYTE IN X-REG
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
COMBYTE:
|
|
|
|
jsr CHKCOM
|
|
|
|
jmp GETBYT
|
2008-10-13 01:43:59 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; CONVERT (FAC) TO A 16-BIT VALUE IN LINNUM
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
GETADR:
|
|
|
|
lda FACSIGN
|
2008-10-11 06:23:53 +00:00
|
|
|
.ifdef APPLE
|
|
|
|
nop
|
|
|
|
nop
|
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
bmi GOIQ
|
2008-10-11 06:23:53 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
lda FAC
|
|
|
|
cmp #$91
|
|
|
|
bcs GOIQ
|
|
|
|
jsr QINT
|
|
|
|
lda FAC_LAST-1
|
|
|
|
ldy FAC_LAST
|
|
|
|
sty LINNUM
|
|
|
|
sta LINNUM+1
|
|
|
|
rts
|
2008-10-13 01:43:59 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; "PEEK" FUNCTION
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
PEEK:
|
2008-10-08 05:07:59 +00:00
|
|
|
.ifdef CBM2_KBD
|
2008-10-07 08:47:13 +00:00
|
|
|
lda $12
|
|
|
|
pha
|
|
|
|
lda $11
|
|
|
|
pha
|
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
jsr GETADR
|
|
|
|
ldy #$00
|
2008-10-07 08:47:13 +00:00
|
|
|
.ifdef CBM1
|
2008-10-06 10:58:56 +00:00
|
|
|
cmp #$C0
|
|
|
|
bcc LD6F3
|
|
|
|
cmp #$E1
|
|
|
|
bcc LD6F6
|
|
|
|
LD6F3:
|
2008-10-07 08:47:13 +00:00
|
|
|
.endif
|
2008-10-08 05:07:59 +00:00
|
|
|
.ifdef CBM2_KBD
|
2008-10-13 01:43:59 +00:00
|
|
|
nop ; patch that disables the compares above
|
2008-10-07 08:47:13 +00:00
|
|
|
nop
|
|
|
|
nop
|
|
|
|
nop
|
|
|
|
nop
|
|
|
|
nop
|
|
|
|
nop
|
|
|
|
nop
|
2008-10-06 10:58:56 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
lda (LINNUM),y
|
|
|
|
tay
|
2008-10-08 05:07:59 +00:00
|
|
|
.ifdef CBM2_KBD
|
2008-10-07 08:47:13 +00:00
|
|
|
pla
|
|
|
|
sta $11
|
|
|
|
pla
|
|
|
|
sta $12
|
|
|
|
.endif
|
2008-10-06 10:58:56 +00:00
|
|
|
LD6F6:
|
2008-10-06 05:21:05 +00:00
|
|
|
jmp SNGFLT
|
2008-10-13 01:43:59 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; "POKE" STATEMENT
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
POKE:
|
|
|
|
jsr GTNUM
|
|
|
|
txa
|
|
|
|
ldy #$00
|
|
|
|
sta (LINNUM),y
|
|
|
|
rts
|
2008-10-13 01:43:59 +00:00
|
|
|
|
|
|
|
; ----------------------------------------------------------------------------
|
|
|
|
; "WAIT" STATEMENT
|
|
|
|
; ----------------------------------------------------------------------------
|
2008-10-06 05:21:05 +00:00
|
|
|
WAIT:
|
|
|
|
jsr GTNUM
|
|
|
|
stx FORPNT
|
|
|
|
ldx #$00
|
|
|
|
jsr CHRGOT
|
2008-10-07 10:05:20 +00:00
|
|
|
.ifdef CBM2
|
2008-10-12 21:39:54 +00:00
|
|
|
beq EASTER_EGG
|
2008-10-07 10:05:20 +00:00
|
|
|
.else
|
2008-10-06 05:21:05 +00:00
|
|
|
beq L3628
|
2008-10-07 10:05:20 +00:00
|
|
|
.endif
|
2008-10-06 05:21:05 +00:00
|
|
|
jsr COMBYTE
|
|
|
|
L3628:
|
|
|
|
stx FORPNT+1
|
|
|
|
ldy #$00
|
|
|
|
L362C:
|
|
|
|
lda (LINNUM),y
|
|
|
|
eor FORPNT+1
|
|
|
|
and FORPNT
|
|
|
|
beq L362C
|
2008-10-09 10:10:09 +00:00
|
|
|
RTS3:
|
2008-10-06 05:21:05 +00:00
|
|
|
rts
|
2008-10-08 07:04:03 +00:00
|
|
|
.endif
|
2008-10-12 21:39:54 +00:00
|
|
|
|
|
|
|
|
|
|
|
.include "float.s"
|
|
|
|
|
2008-10-13 00:27:11 +00:00
|
|
|
.include "chrget.s"
|
2008-10-12 21:39:54 +00:00
|
|
|
|
2008-10-13 00:11:02 +00:00
|
|
|
.include "rnd.s"
|
2008-10-12 21:39:54 +00:00
|
|
|
|
2008-10-13 00:11:02 +00:00
|
|
|
.include "trig.s"
|
2008-10-12 21:39:54 +00:00
|
|
|
|
2008-10-13 00:27:11 +00:00
|
|
|
.include "init.s"
|