Cleanup BASIC sources
This commit is contained in:
1 parent
385de7a111
commit
25236f542d
36 files changed
+319
-2909
No files matched your search
+1
-44
@@ -20,10 +20,7 @@ L2FAF:
|
||||
; ----------------------------------------------------------------------------
|
||||
NEG32768:
|
||||
.byte $90,$80,$00,$00
|
||||
|
||||
.ifdef CONFIG_2C
|
||||
.byte $00; bugfix: short number
|
||||
.endif
|
||||
.byte $00; bugfix: short number
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
; EVALUATE NUMERIC FORMULA AT TXTPTR
|
||||
@@ -32,20 +29,14 @@ NEG32768:
|
||||
; ----------------------------------------------------------------------------
|
||||
MAKINT:
|
||||
jsr CHRGET
|
||||
.ifdef CONFIG_2
|
||||
jsr FRMEVL
|
||||
.else
|
||||
jsr FRMNUM
|
||||
.endif
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
; CONVERT FAC TO INTEGER
|
||||
; MUST BE POSITIVE AND LESS THAN 32768
|
||||
; ----------------------------------------------------------------------------
|
||||
MKINT:
|
||||
.ifdef CONFIG_2
|
||||
jsr CHKNUM
|
||||
.endif
|
||||
lda FACSIGN
|
||||
bmi MI1
|
||||
|
||||
@@ -70,9 +61,7 @@ MI2:
|
||||
; ----------------------------------------------------------------------------
|
||||
ARRAY:
|
||||
lda DIMFLG
|
||||
.ifndef CONFIG_SMALL
|
||||
ora VALTYP+1
|
||||
.endif
|
||||
pha
|
||||
lda VALTYP
|
||||
pha
|
||||
@@ -109,10 +98,8 @@ L2FDE:
|
||||
pla
|
||||
sta VALTYP
|
||||
pla
|
||||
.ifndef CONFIG_SMALL
|
||||
sta VALTYP+1
|
||||
and #$7F
|
||||
.endif
|
||||
sta DIMFLG
|
||||
; ----------------------------------------------------------------------------
|
||||
; SEARCH ARRAY TABLE FOR THIS ARRAY NAME
|
||||
@@ -185,28 +172,19 @@ MAKE_NEW_ARRAY:
|
||||
tay
|
||||
sta STRNG2+1
|
||||
ldx #BYTES_PER_ELEMENT
|
||||
.if .def(CONFIG_SMALL) && (!.def(CONFIG_2))
|
||||
stx STRNG2
|
||||
.endif
|
||||
lda VARNAM
|
||||
sta (LOWTR),y
|
||||
.ifndef CONFIG_SMALL
|
||||
bpl L3078
|
||||
dex
|
||||
L3078:
|
||||
.endif
|
||||
iny
|
||||
lda VARNAM+1
|
||||
sta (LOWTR),y
|
||||
.if (!.def(CONFIG_SMALL)) || .def(CONFIG_2)
|
||||
bpl L3081
|
||||
dex
|
||||
.if !(.def(CONFIG_SMALL) && .def(CONFIG_2))
|
||||
dex
|
||||
.endif
|
||||
L3081:
|
||||
stx STRNG2
|
||||
.endif
|
||||
lda EOLPNTR
|
||||
iny
|
||||
iny
|
||||
@@ -324,42 +302,21 @@ L3124:
|
||||
stx STRNG2
|
||||
dec EOLPNTR
|
||||
bne L30F6
|
||||
.if .def(CONFIG_SMALL) && (!.def(CONFIG_2))
|
||||
asl STRNG2
|
||||
rol a
|
||||
bcs GSE
|
||||
asl STRNG2
|
||||
rol a
|
||||
bcs GSE
|
||||
tay
|
||||
lda STRNG2
|
||||
.else
|
||||
.ifdef CONFIG_11A
|
||||
sta STRNG2+1
|
||||
.endif
|
||||
ldx #BYTES_FP
|
||||
.ifdef CONFIG_SMALL
|
||||
lda VARNAM+1
|
||||
.else
|
||||
lda VARNAM
|
||||
.endif
|
||||
bpl L3135
|
||||
dex
|
||||
L3135:
|
||||
.ifdef CONFIG_SMALL
|
||||
stx RESULT+1
|
||||
.else
|
||||
lda VARNAM+1
|
||||
bpl L313B
|
||||
dex
|
||||
dex
|
||||
L313B:
|
||||
stx RESULT+2
|
||||
.endif
|
||||
lda #$00
|
||||
jsr MULTIPLY_SUBS1
|
||||
txa
|
||||
.endif
|
||||
adc HIGHDS
|
||||
sta VARPNT
|
||||
tya
|
||||
|
||||
+2
-2
@@ -2,5 +2,5 @@ if [ ! -d tmp ]; then
|
||||
mkdir tmp
|
||||
fi
|
||||
|
||||
ca65 -D kilian msbasic.s -o tmp/kilian.o
|
||||
ld65 -C kilian.cfg tmp/kilian.o -o tmp/kilian.bin -Ln tmp/kilian.lbl
|
||||
ca65 msbasic.s -o tmp/rom.o
|
||||
ld65 -C config.cfg tmp/rom.o -o tmp/rom.bin -Ln tmp/rom.lbl
|
||||
@@ -7,9 +7,6 @@ GENERIC_CHRGET:
|
||||
GENERIC_CHRGOT:
|
||||
GENERIC_TXTPTR = GENERIC_CHRGOT + 1
|
||||
lda $EA60
|
||||
.ifdef KBD
|
||||
jsr LF430
|
||||
.endif
|
||||
cmp #$3A
|
||||
bcs L4058
|
||||
GENERIC_CHRGOT2:
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
MEMORY {
|
||||
ZP: start = $0000, size = $0100, type = rw;
|
||||
BASROM: start = $C000, size = $3F00, fill = yes, file = %O;
|
||||
WOZMON: start = $FDAA, size = $FA, fill = yes, file = %O;
|
||||
WOZMON: start = $FF00, size = $FA, fill = yes, file = %O;
|
||||
RESETVEC: start = $FFFA, size = $6, fill = yes, file = %O;
|
||||
DUMMY: start = $0000, size = $00FF, file = "";
|
||||
}
|
||||
+8
-80
@@ -1,99 +1,27 @@
|
||||
.if .def(cbmbasic1)
|
||||
CBM1 := 1
|
||||
.include "defines_cbm1.s"
|
||||
.elseif .def(osi)
|
||||
OSI := 1
|
||||
.include "defines_osi.s"
|
||||
.elseif .def(applesoft)
|
||||
APPLE := 1
|
||||
.include "defines_apple.s"
|
||||
.elseif .def(kb9)
|
||||
KIM := 1
|
||||
.include "defines_kim.s"
|
||||
.elseif .def(cbmbasic2)
|
||||
CBM2 := 1
|
||||
.include "defines_cbm2.s"
|
||||
.elseif .def(kbdbasic)
|
||||
KBD := 1
|
||||
.include "defines_kbd.s"
|
||||
.elseif .def(microtan)
|
||||
MICROTAN := 1
|
||||
.include "defines_microtan.s"
|
||||
.elseif .def(aim65)
|
||||
AIM65 := 1
|
||||
.include "defines_aim65.s"
|
||||
.elseif .def(sym1)
|
||||
SYM1 := 1
|
||||
.include "defines_sym1.s"
|
||||
.elseif .def(w65c816sxb)
|
||||
W65C816SXB := 1
|
||||
.include "defines_w65c816sxb.s"
|
||||
.elseif .def(kilian)
|
||||
KILIAN := 1
|
||||
.include "defines_kilian.s"
|
||||
.endif
|
||||
; extra/override ZP variables
|
||||
USR := GORESTART ; XXX
|
||||
|
||||
.ifdef CONFIG_2C
|
||||
CONFIG_2B := 1
|
||||
.endif
|
||||
.ifdef CONFIG_2B
|
||||
CONFIG_2A := 1
|
||||
.endif
|
||||
.ifdef CONFIG_2A
|
||||
CONFIG_2 := 1
|
||||
.endif
|
||||
.ifdef CONFIG_2
|
||||
CONFIG_11A := 1
|
||||
.endif
|
||||
.ifdef CONFIG_11A
|
||||
CONFIG_11 := 1
|
||||
.endif
|
||||
.ifdef CONFIG_11
|
||||
CONFIG_10A := 1
|
||||
.endif
|
||||
; constants
|
||||
SPACE_FOR_GOSUB := $3E
|
||||
STACK_TOP := $FA
|
||||
WIDTH := 80
|
||||
WIDTH2 := 30
|
||||
RAMSTART2 := $0400
|
||||
|
||||
.ifdef CONFIG_SMALL
|
||||
BYTES_FP := 4
|
||||
CONFIG_SMALL_ERROR := 1
|
||||
.else
|
||||
BYTES_FP := 5
|
||||
.endif
|
||||
|
||||
.ifndef BYTES_PER_ELEMENT
|
||||
BYTES_PER_ELEMENT := BYTES_FP
|
||||
.endif
|
||||
BYTES_PER_VARIABLE := BYTES_FP+2
|
||||
MANTISSA_BYTES := BYTES_FP-1
|
||||
BYTES_PER_FRAME := 2*BYTES_FP+8
|
||||
FOR_STACK1 := 2*BYTES_FP+5
|
||||
FOR_STACK2 := BYTES_FP+4
|
||||
|
||||
.ifndef MAX_EXPON
|
||||
MAX_EXPON = 10
|
||||
.endif
|
||||
|
||||
STACK := $0100
|
||||
.ifndef STACK2
|
||||
STACK2 := STACK
|
||||
.endif
|
||||
|
||||
.ifdef INPUTBUFFER
|
||||
.if INPUTBUFFER >= $0100
|
||||
CONFIG_NO_INPUTBUFFER_ZP := 1
|
||||
.endif
|
||||
.if INPUTBUFFER = $0200
|
||||
CONFIG_INPUTBUFFER_0200 := 1
|
||||
.endif
|
||||
.endif
|
||||
INPUTBUFFERX = INPUTBUFFER & $FF00
|
||||
|
||||
CR=13
|
||||
LF=10
|
||||
|
||||
.ifndef CRLF_1
|
||||
CRLF_1 := CR
|
||||
CRLF_2 := LF
|
||||
.endif
|
||||
|
||||
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
; configuration
|
||||
CONFIG_2A := 1
|
||||
|
||||
CONFIG_DATAFLG := 1
|
||||
CONFIG_EASTER_EGG := 1
|
||||
CONFIG_NO_READ_Y_IS_ZERO_HACK := 1
|
||||
CONFIG_PEEK_SAVE_LINNUM := 1
|
||||
CONFIG_SCRTCH_ORDER := 2
|
||||
|
||||
; zero page -- CBM BASIC V2 layout
|
||||
ZP_START1 = $02
|
||||
ZP_START2 = $0C
|
||||
ZP_START3 = $12
|
||||
ZP_START4 = $1D
|
||||
|
||||
; input buffer
|
||||
INPUTBUFFER := $0200
|
||||
|
||||
; extra/override ZP variables
|
||||
USR := GORESTART ; XXX
|
||||
|
||||
; constants
|
||||
SPACE_FOR_GOSUB := $3E
|
||||
STACK_TOP := $FA
|
||||
WIDTH := 80
|
||||
WIDTH2 := 30
|
||||
RAMSTART2 := $0400
|
||||
+1
-28
@@ -1,32 +1,10 @@
|
||||
init_error_table
|
||||
|
||||
.ifdef CONFIG_SMALL_ERROR
|
||||
define_error ERR_NOFOR, "NF"
|
||||
define_error ERR_SYNTAX, "SN"
|
||||
define_error ERR_NOGOSUB, "RG"
|
||||
define_error ERR_NODATA, "OD"
|
||||
define_error ERR_ILLQTY, "FC"
|
||||
define_error ERR_OVERFLOW, "OV"
|
||||
define_error ERR_MEMFULL, "OM"
|
||||
define_error ERR_UNDEFSTAT, "US"
|
||||
define_error ERR_BADSUBS, "BS"
|
||||
define_error ERR_REDIMD, "DD"
|
||||
define_error ERR_ZERODIV, "/0"
|
||||
define_error ERR_ILLDIR, "ID"
|
||||
define_error ERR_BADTYPE, "TM"
|
||||
define_error ERR_STRLONG, "LS"
|
||||
define_error ERR_FRMCPX, "ST"
|
||||
define_error ERR_CANTCONT, "CN"
|
||||
define_error ERR_UNDEFFN, "UF"
|
||||
.else
|
||||
define_error ERR_NOFOR, "NEXT WITHOUT FOR"
|
||||
define_error ERR_SYNTAX, "SYNTAX"
|
||||
define_error ERR_NOGOSUB, "RETURN WITHOUT GOSUB"
|
||||
define_error ERR_NODATA, "OUT OF DATA"
|
||||
define_error ERR_ILLQTY, "ILLEGAL QUANTITY"
|
||||
.ifdef CBM1
|
||||
.byte 0,0,0,0,0
|
||||
.endif
|
||||
define_error ERR_OVERFLOW, "OVERFLOW"
|
||||
define_error ERR_MEMFULL, "OUT OF MEMORY"
|
||||
define_error ERR_UNDEFSTAT, "UNDEF'D STATEMENT"
|
||||
@@ -37,13 +15,8 @@ define_error ERR_ILLDIR, "ILLEGAL DIRECT"
|
||||
define_error ERR_BADTYPE, "TYPE MISMATCH"
|
||||
define_error ERR_STRLONG, "STRING TOO LONG"
|
||||
.ifdef CONFIG_FILE
|
||||
.ifdef CBM1
|
||||
define_error ERR_BADDATA, "BAD DATA"
|
||||
.else
|
||||
define_error ERR_BADDATA, "FILE DATA"
|
||||
.endif
|
||||
.endif
|
||||
define_error ERR_FRMCPX, "FORMULA TOO COMPLEX"
|
||||
define_error ERR_CANTCONT, "CAN'T CONTINUE"
|
||||
define_error ERR_UNDEFFN, "UNDEF'D FUNCTION"
|
||||
.endif
|
||||
define_error ERR_UNDEFFN, "UNDEF'D FUNCTION"
|
||||
-227
@@ -19,31 +19,13 @@ GERR:
|
||||
beq JERROR
|
||||
NEXT3:
|
||||
txs
|
||||
.ifndef CONFIG_2
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
.endif
|
||||
txa
|
||||
.ifdef CONFIG_2
|
||||
clc
|
||||
adc #$04
|
||||
pha
|
||||
adc #BYTES_FP+1
|
||||
sta DEST
|
||||
pla
|
||||
.else
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
.ifndef CONFIG_SMALL
|
||||
inx
|
||||
.endif
|
||||
stx DEST
|
||||
.endif
|
||||
ldy #>STACK
|
||||
jsr LOAD_FAC_FROM_YA
|
||||
tsx
|
||||
@@ -240,18 +222,12 @@ FRM_STACK2:
|
||||
tay
|
||||
pla
|
||||
sta INDEX
|
||||
.ifndef CONFIG_2B
|
||||
inc INDEX ; bug: assumes not on page boundary
|
||||
; bug exists on AppleSoft II
|
||||
.endif
|
||||
pla
|
||||
sta INDEX+1
|
||||
.ifdef CONFIG_2B
|
||||
inc INDEX
|
||||
bne LEB69
|
||||
inc INDEX+1
|
||||
LEB69:
|
||||
.endif
|
||||
tya
|
||||
pha
|
||||
|
||||
@@ -261,10 +237,8 @@ LEB69:
|
||||
; ----------------------------------------------------------------------------
|
||||
FRM_STACK3:
|
||||
jsr ROUND_FAC
|
||||
.ifndef CONFIG_SMALL
|
||||
lda FAC+4
|
||||
pha
|
||||
.endif
|
||||
lda FAC+3
|
||||
pha
|
||||
lda FAC+2
|
||||
@@ -307,10 +281,8 @@ FRM_PERFORM2:
|
||||
pla
|
||||
sta ARG+3
|
||||
pla
|
||||
.ifndef CONFIG_SMALL
|
||||
sta ARG+4
|
||||
pla
|
||||
.endif
|
||||
sta ARGSIGN
|
||||
eor FACSIGN
|
||||
sta SGNCPR
|
||||
@@ -335,17 +307,6 @@ L2D36:
|
||||
L2D39:
|
||||
jsr ISLETC
|
||||
bcs FRM_VARIABLE
|
||||
.ifdef CONFIG_CBM_ALL
|
||||
cmp #$FF
|
||||
bne LCDC1
|
||||
lda #<CON_PI
|
||||
ldy #>CON_PI
|
||||
jsr LOAD_FAC_FROM_YA
|
||||
jmp CHRGET
|
||||
CON_PI:
|
||||
.byte $82,$49,$0f,$DA,$A1
|
||||
LCDC1:
|
||||
.endif
|
||||
cmp #$2E
|
||||
beq L2D36
|
||||
cmp #TOKEN_MINUS
|
||||
@@ -394,16 +355,6 @@ EQUOP:
|
||||
eor #$FF
|
||||
jmp GIVAYF
|
||||
L2D74:
|
||||
.ifdef SYM1
|
||||
cmp #TOKEN_USR
|
||||
bne LCC8A
|
||||
jmp LCDBD
|
||||
LCC8A:
|
||||
cmp #$26
|
||||
bne LCC91
|
||||
jmp LCDFE
|
||||
LCC91:
|
||||
.endif
|
||||
cmp #TOKEN_FN
|
||||
bne L2D7B
|
||||
jmp L31F3
|
||||
@@ -452,49 +403,14 @@ FRM_VARIABLE:
|
||||
FRM_VARIABLE_CALL = *-1
|
||||
sta FAC_LAST-1
|
||||
sty FAC_LAST
|
||||
.ifdef CONFIG_CBM_ALL
|
||||
lda VARNAM
|
||||
ldy VARNAM+1
|
||||
.endif
|
||||
ldx VALTYP
|
||||
beq L2DB1
|
||||
.ifdef CONFIG_CBM_ALL
|
||||
.ifdef CONFIG_CBM1_PATCHES
|
||||
jmp PATCH2
|
||||
clc
|
||||
LCE3B:
|
||||
.else
|
||||
ldx #$00
|
||||
stx STRNG1+1
|
||||
bit FAC+4
|
||||
bpl LCE53
|
||||
cmp #$54 ; T
|
||||
bne LCE53
|
||||
.endif
|
||||
cpy #$C9 ; I$
|
||||
bne LCE53
|
||||
jsr LCE76
|
||||
sty EXPON
|
||||
dey
|
||||
sty STRNG2
|
||||
ldy #$06
|
||||
sty INDX
|
||||
ldy #$24
|
||||
jsr LDD3A
|
||||
jmp LD353
|
||||
LCE53:
|
||||
.endif
|
||||
.ifdef CONFIG_2
|
||||
.ifndef CBM2
|
||||
; bugfix?
|
||||
; fixed on AppleSoft II, not on any CBM
|
||||
ldx #$00
|
||||
stx STRNG1+1
|
||||
.endif
|
||||
.endif
|
||||
rts
|
||||
L2DB1:
|
||||
.ifndef CONFIG_SMALL
|
||||
ldx VALTYP+1
|
||||
bpl L2DC2
|
||||
ldy #$00
|
||||
@@ -506,57 +422,7 @@ L2DB1:
|
||||
txa
|
||||
jmp GIVAYF
|
||||
L2DC2:
|
||||
.endif
|
||||
.ifdef CONFIG_CBM1_PATCHES
|
||||
jmp PATCH3
|
||||
.byte $19
|
||||
.endif
|
||||
.ifdef CBM2
|
||||
bit FAC+4
|
||||
bpl LCE90
|
||||
cmp #$54
|
||||
bne LCE82
|
||||
.endif
|
||||
.ifndef CONFIG_CBM_ALL
|
||||
jmp LOAD_FAC_FROM_YA
|
||||
.endif
|
||||
.ifdef CONFIG_CBM_ALL
|
||||
LCE69:
|
||||
cpy #$49
|
||||
.ifdef CBM1
|
||||
bne LCE82
|
||||
.else
|
||||
bne LCE90
|
||||
.endif
|
||||
jsr LCE76
|
||||
tya
|
||||
ldx #$A0
|
||||
jmp LDB21
|
||||
LCE76:
|
||||
.ifdef CBM1
|
||||
lda #$FE
|
||||
ldy #$01
|
||||
.else
|
||||
lda #$8B
|
||||
ldy #$00
|
||||
.endif
|
||||
sei
|
||||
jsr LOAD_FAC_FROM_YA
|
||||
cli
|
||||
sty FAC+1
|
||||
rts
|
||||
LCE82:
|
||||
cmp #$53
|
||||
bne LCE90
|
||||
cpy #$54
|
||||
bne LCE90
|
||||
lda Z96
|
||||
jmp FLOAT
|
||||
LCE90:
|
||||
lda FAC+3
|
||||
ldy FAC+4
|
||||
jmp LOAD_FAC_FROM_YA
|
||||
.endif
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
UNARY:
|
||||
@@ -593,11 +459,7 @@ L2DF4:
|
||||
sta JMPADRS+1
|
||||
lda UNFNC-TOKEN_SGN-TOKEN_SGN+$101,y
|
||||
sta JMPADRS+2
|
||||
.ifdef KBD
|
||||
jsr LF47D
|
||||
.else
|
||||
jsr JMPADRS
|
||||
.endif
|
||||
jmp CHKNUM
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
@@ -697,92 +559,3 @@ CMPDONE:
|
||||
lda #$FF
|
||||
L2E99:
|
||||
jmp FLOAT
|
||||
|
||||
.ifdef SYM1
|
||||
LCDBD:
|
||||
jsr CHRGET
|
||||
jsr CHKOPN
|
||||
jsr FRMEVL
|
||||
jsr CHRGOT
|
||||
cmp #$29
|
||||
beq LCDF1
|
||||
jsr AYINT
|
||||
lda FAC+4
|
||||
ldy FAC+3
|
||||
sta USR+1
|
||||
sty USR+2
|
||||
LCDD8:
|
||||
jsr CHKCOM
|
||||
jsr FRMEVL
|
||||
jsr CHRGOT
|
||||
cmp #$29
|
||||
beq LCDF1
|
||||
jsr AYINT
|
||||
lda FAC+3
|
||||
pha
|
||||
lda FAC+4
|
||||
pha
|
||||
jmp LCDD8
|
||||
|
||||
LCDF1:
|
||||
jsr CHRGET
|
||||
jsr AYINT
|
||||
lda FAC+3
|
||||
ldy FAC+4
|
||||
jmp USR
|
||||
|
||||
LCDFE:
|
||||
lda ZD4
|
||||
pha
|
||||
lda ZD3
|
||||
pha
|
||||
jsr CHRGET
|
||||
cmp #$22
|
||||
bne LCE49
|
||||
jsr CHRGET
|
||||
jsr LCE2B
|
||||
tax
|
||||
jsr CHRGOT
|
||||
jsr LCE2B
|
||||
pha
|
||||
jsr CHRGOT
|
||||
cmp #$22
|
||||
bne LCE48
|
||||
jsr CHRGET
|
||||
pla
|
||||
tay
|
||||
pla
|
||||
pla
|
||||
txa
|
||||
jmp GIVAYF
|
||||
|
||||
LCE2B:
|
||||
jsr ASCNIB
|
||||
bcs LCE47
|
||||
pha
|
||||
jsr CHRGET
|
||||
jsr ASCNIB
|
||||
sta FAC+4
|
||||
bcs LCE46
|
||||
jsr CHRGET
|
||||
pla
|
||||
asl a
|
||||
asl a
|
||||
asl a
|
||||
asl a
|
||||
ora FAC+4
|
||||
rts
|
||||
|
||||
LCE46:
|
||||
pla
|
||||
LCE47:
|
||||
pla
|
||||
LCE48:
|
||||
pla
|
||||
LCE49:
|
||||
pla
|
||||
sta ZD3
|
||||
pla
|
||||
sta ZD4
|
||||
jmp ZERO_FAC
|
||||
.endif
|
||||
+26
-29
@@ -1,38 +1,35 @@
|
||||
.segment "EXTRA"
|
||||
|
||||
.ifdef KIM
|
||||
.include "kim_extra.s"
|
||||
.endif
|
||||
LOAD:
|
||||
rts
|
||||
|
||||
.ifdef CONFIG_CBM1_PATCHES
|
||||
.include "cbm1_patches.s"
|
||||
.endif
|
||||
SAVE:
|
||||
rts
|
||||
|
||||
.ifdef KBD
|
||||
.include "kbd_extra.s"
|
||||
.endif
|
||||
ISCNTC:
|
||||
lda $BC01
|
||||
cmp #$03
|
||||
beq @break
|
||||
rts
|
||||
@break:
|
||||
jmp STOP
|
||||
|
||||
.ifdef APPLE
|
||||
.include "apple_extra.s"
|
||||
.endif
|
||||
MONRDKEY:
|
||||
lda $BC01
|
||||
bmi @skipped
|
||||
sta $BC00 ; echo
|
||||
@skipped:
|
||||
rts
|
||||
|
||||
.ifdef MICROTAN
|
||||
.include "microtan_extra.s"
|
||||
.endif
|
||||
MONCOUT:
|
||||
sta $BC00
|
||||
|
||||
.ifdef AIM65
|
||||
.include "aim65_extra.s"
|
||||
.endif
|
||||
rts
|
||||
|
||||
.ifdef SYM1
|
||||
.byte 0,0,0
|
||||
.endif
|
||||
|
||||
.ifdef W65C816SXB
|
||||
.include "w65c816sxb_extra.s"
|
||||
.endif
|
||||
|
||||
.ifdef KILIAN
|
||||
.include "kilian_extra.s"
|
||||
.segment "WOZMON"
|
||||
.include "wozmon.s"
|
||||
.endif
|
||||
|
||||
.segment "RESETVEC"
|
||||
.word $0000 ; NMI vector
|
||||
.word RESET ; RESET vector
|
||||
.word $0000 ; IRQ vector
|
||||
-319
@@ -31,7 +31,6 @@ FSUBT:
|
||||
; ----------------------------------------------------------------------------
|
||||
; Commodore BASIC V2 Easter Egg
|
||||
; ----------------------------------------------------------------------------
|
||||
.ifdef CONFIG_EASTER_EGG
|
||||
EASTER_EGG:
|
||||
lda LINNUM
|
||||
cmp #<6502
|
||||
@@ -58,7 +57,6 @@ LD766:
|
||||
dec FORPNT
|
||||
bne LD758
|
||||
rts
|
||||
.endif
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
; SHIFT SMALLER ARGUMENT MORE THAN 7 BITS
|
||||
@@ -86,11 +84,7 @@ L365B:
|
||||
lda ARG
|
||||
FADD2:
|
||||
tay
|
||||
.ifdef KBD
|
||||
beq RTS4
|
||||
.else
|
||||
beq RTS3
|
||||
.endif
|
||||
sec
|
||||
sbc FAC
|
||||
beq FADD3
|
||||
@@ -126,11 +120,9 @@ L369B:
|
||||
eor #$FF
|
||||
adc ARGEXTENSION
|
||||
sta FACEXTENSION
|
||||
.ifndef CONFIG_SMALL
|
||||
lda 4,y
|
||||
sbc 4,x
|
||||
sta FAC+4
|
||||
.endif
|
||||
lda 3,y
|
||||
sbc 3,x
|
||||
sta FAC+3
|
||||
@@ -158,24 +150,13 @@ L36C7:
|
||||
stx FAC+1
|
||||
ldx FAC+3
|
||||
stx FAC+2
|
||||
.ifdef CONFIG_SMALL
|
||||
ldx FACEXTENSION
|
||||
stx FAC+3
|
||||
.else
|
||||
ldx FAC+4
|
||||
stx FAC+3
|
||||
ldx FACEXTENSION
|
||||
stx FAC+4
|
||||
.endif
|
||||
sty FACEXTENSION
|
||||
adc #$08
|
||||
.ifdef CONFIG_2B
|
||||
; bugfix?
|
||||
; fix does not exist on AppleSoft 2
|
||||
cmp #(MANTISSA_BYTES+1)*8
|
||||
.else
|
||||
cmp #MANTISSA_BYTES*8
|
||||
.endif
|
||||
bne L36C7
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
@@ -196,11 +177,9 @@ STA_IN_FAC_SIGN:
|
||||
FADD4:
|
||||
adc ARGEXTENSION
|
||||
sta FACEXTENSION
|
||||
.ifndef CONFIG_SMALL
|
||||
lda FAC+4
|
||||
adc ARG+4
|
||||
sta FAC+4
|
||||
.endif
|
||||
lda FAC+3
|
||||
adc ARG+3
|
||||
sta FAC+3
|
||||
@@ -218,9 +197,7 @@ FADD4:
|
||||
NORMALIZE_FAC3:
|
||||
adc #$01
|
||||
asl FACEXTENSION
|
||||
.ifndef CONFIG_SMALL
|
||||
rol FAC+4
|
||||
.endif
|
||||
rol FAC+3
|
||||
rol FAC+2
|
||||
rol FAC+1
|
||||
@@ -237,51 +214,11 @@ NORMALIZE_FAC5:
|
||||
NORMALIZE_FAC6:
|
||||
inc FAC
|
||||
beq OVERFLOW
|
||||
.ifndef CONFIG_ROR_WORKAROUND
|
||||
ror FAC+1
|
||||
ror FAC+2
|
||||
ror FAC+3
|
||||
.ifndef CONFIG_SMALL
|
||||
ror FAC+4
|
||||
.endif
|
||||
ror FACEXTENSION
|
||||
.else
|
||||
lda #$00
|
||||
bcc L372E
|
||||
lda #$80
|
||||
L372E:
|
||||
lsr FAC+1
|
||||
ora FAC+1
|
||||
sta FAC+1
|
||||
lda #$00
|
||||
bcc L373A
|
||||
lda #$80
|
||||
L373A:
|
||||
lsr FAC+2
|
||||
ora FAC+2
|
||||
sta FAC+2
|
||||
lda #$00
|
||||
bcc L3746
|
||||
lda #$80
|
||||
L3746:
|
||||
lsr FAC+3
|
||||
ora FAC+3
|
||||
sta FAC+3
|
||||
lda #$00
|
||||
bcc L3752
|
||||
lda #$80
|
||||
L3752:
|
||||
lsr FAC+4
|
||||
ora FAC+4
|
||||
sta FAC+4
|
||||
lda #$00
|
||||
bcc L375E
|
||||
lda #$80
|
||||
L375E:
|
||||
lsr FACEXTENSION
|
||||
ora FACEXTENSION
|
||||
sta FACEXTENSION
|
||||
.endif
|
||||
L3764:
|
||||
rts
|
||||
|
||||
@@ -306,11 +243,9 @@ COMPLEMENT_FAC_MANTISSA:
|
||||
lda FAC+3
|
||||
eor #$FF
|
||||
sta FAC+3
|
||||
.ifndef CONFIG_SMALL
|
||||
lda FAC+4
|
||||
eor #$FF
|
||||
sta FAC+4
|
||||
.endif
|
||||
lda FACEXTENSION
|
||||
eor #$FF
|
||||
sta FACEXTENSION
|
||||
@@ -321,10 +256,8 @@ COMPLEMENT_FAC_MANTISSA:
|
||||
; INCREMENT FAC MANTISSA
|
||||
; ----------------------------------------------------------------------------
|
||||
INCREMENT_FAC_MANTISSA:
|
||||
.ifndef CONFIG_SMALL
|
||||
inc FAC+4
|
||||
bne RTS12
|
||||
.endif
|
||||
inc FAC+3
|
||||
bne RTS12
|
||||
inc FAC+2
|
||||
@@ -346,16 +279,10 @@ OVERFLOW:
|
||||
SHIFT_RIGHT1:
|
||||
ldx #RESULT-1
|
||||
SHIFT_RIGHT2:
|
||||
.ifdef CONFIG_SMALL
|
||||
ldy 3,x
|
||||
.else
|
||||
ldy 4,x
|
||||
.endif
|
||||
sty FACEXTENSION
|
||||
.ifndef CONFIG_SMALL
|
||||
ldy 3,x
|
||||
sty 4,x
|
||||
.endif
|
||||
ldy 2,x
|
||||
sty 3,x
|
||||
ldy 1,x
|
||||
@@ -374,7 +301,6 @@ SHIFT_RIGHT:
|
||||
tay
|
||||
lda FACEXTENSION
|
||||
bcs SHIFT_RIGHT5
|
||||
.ifndef CONFIG_ROR_WORKAROUND
|
||||
LB588:
|
||||
asl 1,x
|
||||
bcc LB58E
|
||||
@@ -389,76 +315,15 @@ LB58E:
|
||||
SHIFT_RIGHT4:
|
||||
ror 2,x
|
||||
ror 3,x
|
||||
.ifndef CONFIG_SMALL
|
||||
ror 4,x
|
||||
.endif
|
||||
ror a
|
||||
iny
|
||||
bne LB588
|
||||
.else
|
||||
L37C4:
|
||||
pha
|
||||
lda 1,x
|
||||
and #$80
|
||||
lsr 1,x
|
||||
ora 1,x
|
||||
sta 1,x
|
||||
.byte $24
|
||||
SHIFT_RIGHT4:
|
||||
pha
|
||||
lda #$00
|
||||
bcc L37D7
|
||||
lda #$80
|
||||
L37D7:
|
||||
lsr 2,x
|
||||
ora 2,x
|
||||
sta 2,x
|
||||
lda #$00
|
||||
bcc L37E3
|
||||
lda #$80
|
||||
L37E3:
|
||||
lsr 3,x
|
||||
ora 3,x
|
||||
sta 3,x
|
||||
lda #$00
|
||||
bcc L37EF
|
||||
lda #$80
|
||||
L37EF:
|
||||
lsr 4,x
|
||||
ora 4,x
|
||||
sta 4,x
|
||||
pla
|
||||
php
|
||||
lsr a
|
||||
plp
|
||||
bcc L37FD
|
||||
ora #$80
|
||||
L37FD:
|
||||
iny
|
||||
bne L37C4
|
||||
.endif
|
||||
SHIFT_RIGHT5:
|
||||
clc
|
||||
rts
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
.ifdef CONFIG_SMALL
|
||||
CON_ONE:
|
||||
.byte $81,$00,$00,$00
|
||||
POLY_LOG:
|
||||
.byte $02
|
||||
.byte $80,$19,$56,$62
|
||||
.byte $80,$76,$22,$F3
|
||||
.byte $82,$38,$AA,$40
|
||||
CON_SQR_HALF:
|
||||
.byte $80,$35,$04,$F3
|
||||
CON_SQR_TWO:
|
||||
.byte $81,$35,$04,$F3
|
||||
CON_NEG_HALF:
|
||||
.byte $80,$80,$00,$00
|
||||
CON_LOG_TWO:
|
||||
.byte $80,$31,$72,$18
|
||||
.else
|
||||
CON_ONE:
|
||||
.byte $81,$00,$00,$00,$00
|
||||
POLY_LOG:
|
||||
@@ -475,7 +340,6 @@ CON_NEG_HALF:
|
||||
.byte $80,$80,$00,$00,$00
|
||||
CON_LOG_TWO:
|
||||
.byte $80,$31,$72,$17,$F8
|
||||
.endif
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
; "LOG" FUNCTION
|
||||
@@ -522,25 +386,17 @@ FMULT:
|
||||
; FAC = ARG * FAC
|
||||
; ----------------------------------------------------------------------------
|
||||
FMULTT:
|
||||
.ifndef CONFIG_11
|
||||
beq L3903
|
||||
.else
|
||||
jeq L3903
|
||||
.endif
|
||||
jsr ADD_EXPONENTS
|
||||
lda #$00
|
||||
sta RESULT
|
||||
sta RESULT+1
|
||||
sta RESULT+2
|
||||
.ifndef CONFIG_SMALL
|
||||
sta RESULT+3
|
||||
.endif
|
||||
lda FACEXTENSION
|
||||
jsr MULTIPLY1
|
||||
.ifndef CONFIG_SMALL
|
||||
lda FAC+4
|
||||
jsr MULTIPLY1
|
||||
.endif
|
||||
lda FAC+3
|
||||
jsr MULTIPLY1
|
||||
lda FAC+2
|
||||
@@ -562,11 +418,9 @@ L38A7:
|
||||
tay
|
||||
bcc L38C3
|
||||
clc
|
||||
.ifndef CONFIG_SMALL
|
||||
lda RESULT+3
|
||||
adc ARG+4
|
||||
sta RESULT+3
|
||||
.endif
|
||||
lda RESULT+2
|
||||
adc ARG+3
|
||||
sta RESULT+2
|
||||
@@ -577,56 +431,11 @@ L38A7:
|
||||
adc ARG+1
|
||||
sta RESULT
|
||||
L38C3:
|
||||
.ifndef CONFIG_ROR_WORKAROUND
|
||||
ror RESULT
|
||||
ror RESULT+1
|
||||
.ifdef APPLE_BAD_BYTE
|
||||
; this seems to be a bad byte in the dump
|
||||
.byte RESULT+2,RESULT+2 ; XXX BUG!
|
||||
.else
|
||||
ror RESULT+2
|
||||
.endif
|
||||
.ifndef CONFIG_SMALL
|
||||
ror RESULT+3
|
||||
.endif
|
||||
ror FACEXTENSION
|
||||
.else
|
||||
lda #$00
|
||||
bcc L38C9
|
||||
lda #$80
|
||||
L38C9:
|
||||
lsr RESULT
|
||||
ora RESULT
|
||||
sta RESULT
|
||||
lda #$00
|
||||
bcc L38D5
|
||||
lda #$80
|
||||
L38D5:
|
||||
lsr RESULT+1
|
||||
ora RESULT+1
|
||||
sta RESULT+1
|
||||
lda #$00
|
||||
bcc L38E1
|
||||
lda #$80
|
||||
L38E1:
|
||||
lsr RESULT+2
|
||||
ora RESULT+2
|
||||
sta RESULT+2
|
||||
lda #$00
|
||||
bcc L38ED
|
||||
lda #$80
|
||||
L38ED:
|
||||
lsr RESULT+3
|
||||
ora RESULT+3
|
||||
sta RESULT+3
|
||||
lda #$00
|
||||
bcc L38F9
|
||||
lda #$80
|
||||
L38F9:
|
||||
lsr FACEXTENSION
|
||||
ora FACEXTENSION
|
||||
sta FACEXTENSION
|
||||
.endif
|
||||
tya
|
||||
lsr a
|
||||
bne L38A7
|
||||
@@ -640,11 +449,9 @@ LOAD_ARG_FROM_YA:
|
||||
sta INDEX
|
||||
sty INDEX+1
|
||||
ldy #BYTES_FP-1
|
||||
.ifndef CONFIG_SMALL
|
||||
lda (INDEX),y
|
||||
sta ARG+4
|
||||
dey
|
||||
.endif
|
||||
lda (INDEX),y
|
||||
sta ARG+3
|
||||
dey
|
||||
@@ -732,11 +539,7 @@ L3970:
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
CONTEN:
|
||||
.ifdef CONFIG_SMALL
|
||||
.byte $84,$20,$00,$00
|
||||
.else
|
||||
.byte $84,$20,$00,$00,$00
|
||||
.endif
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
; DIVIDE FAC BY 10
|
||||
@@ -785,11 +588,9 @@ L39A1:
|
||||
bne L39B7
|
||||
ldy ARG+3
|
||||
cpy FAC+3
|
||||
.ifndef CONFIG_SMALL
|
||||
bne L39B7
|
||||
ldy ARG+4
|
||||
cpy FAC+4
|
||||
.endif
|
||||
L39B7:
|
||||
php
|
||||
rol a
|
||||
@@ -804,9 +605,7 @@ L39C4:
|
||||
bcs L39D5
|
||||
L39C7:
|
||||
asl ARG_LAST
|
||||
.ifndef CONFIG_SMALL
|
||||
rol ARG+3
|
||||
.endif
|
||||
rol ARG+2
|
||||
rol ARG+1
|
||||
bcs L39B7
|
||||
@@ -814,11 +613,9 @@ L39C7:
|
||||
bpl L39B7
|
||||
L39D5:
|
||||
tay
|
||||
.ifndef CONFIG_SMALL
|
||||
lda ARG+4
|
||||
sbc FAC+4
|
||||
sta ARG+4
|
||||
.endif
|
||||
lda ARG+3
|
||||
sbc FAC+3
|
||||
sta ARG+3
|
||||
@@ -857,10 +654,8 @@ COPY_RESULT_INTO_FAC:
|
||||
sta FAC+2
|
||||
lda RESULT+2
|
||||
sta FAC+3
|
||||
.ifndef CONFIG_SMALL
|
||||
lda RESULT+3
|
||||
sta FAC+4
|
||||
.endif
|
||||
jmp NORMALIZE_FAC2
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
@@ -870,11 +665,9 @@ LOAD_FAC_FROM_YA:
|
||||
sta INDEX
|
||||
sty INDEX+1
|
||||
ldy #MANTISSA_BYTES
|
||||
.ifndef CONFIG_SMALL
|
||||
lda (INDEX),y
|
||||
sta FAC+4
|
||||
dey
|
||||
.endif
|
||||
lda (INDEX),y
|
||||
sta FAC+3
|
||||
dey
|
||||
@@ -921,11 +714,9 @@ STORE_FAC_AT_YX_ROUNDED:
|
||||
stx INDEX
|
||||
sty INDEX+1
|
||||
ldy #MANTISSA_BYTES
|
||||
.ifndef CONFIG_SMALL
|
||||
lda FAC+4
|
||||
sta (INDEX),y
|
||||
dey
|
||||
.endif
|
||||
lda FAC+3
|
||||
sta (INDEX),y
|
||||
dey
|
||||
@@ -1043,9 +834,7 @@ FLOAT1:
|
||||
; ----------------------------------------------------------------------------
|
||||
FLOAT2:
|
||||
lda #$00
|
||||
.ifndef CONFIG_SMALL
|
||||
sta FAC+4
|
||||
.endif
|
||||
sta FAC+3
|
||||
LDB21:
|
||||
stx FAC
|
||||
@@ -1092,12 +881,10 @@ FCOMP2:
|
||||
cmp FAC+2
|
||||
bne L3B0A
|
||||
iny
|
||||
.ifndef CONFIG_SMALL
|
||||
lda (DEST),y
|
||||
cmp FAC+3
|
||||
bne L3B0A
|
||||
iny
|
||||
.endif
|
||||
lda #$7F
|
||||
cmp FACEXTENSION
|
||||
lda (DEST),y
|
||||
@@ -1175,9 +962,7 @@ QINT3:
|
||||
sta FAC+1
|
||||
sta FAC+2
|
||||
sta FAC+3
|
||||
.ifndef CONFIG_SMALL
|
||||
sta FAC+4
|
||||
.endif
|
||||
tay
|
||||
RTS17:
|
||||
rts
|
||||
@@ -1197,12 +982,6 @@ L3B6F:
|
||||
dex
|
||||
bpl L3B6F
|
||||
bcc FIN2
|
||||
.ifdef SYM1
|
||||
cmp #$26
|
||||
bne LDABB
|
||||
jmp LCDFE
|
||||
LDABB:
|
||||
.endif
|
||||
cmp #$2D
|
||||
bne L3B7E
|
||||
stx SERLEN
|
||||
@@ -1231,17 +1010,7 @@ FIN3:
|
||||
beq FIN4
|
||||
bne FIN6
|
||||
L3BA6:
|
||||
.ifndef CONFIG_ROR_WORKAROUND
|
||||
ror EXPSGN
|
||||
.else
|
||||
lda #$00
|
||||
bcc L3BAC
|
||||
lda #$80
|
||||
L3BAC:
|
||||
lsr EXPSGN
|
||||
ora EXPSGN
|
||||
sta EXPSGN
|
||||
.endif
|
||||
FIN4:
|
||||
jsr CHRGET
|
||||
FIN5:
|
||||
@@ -1258,17 +1027,7 @@ FIN6:
|
||||
; FOUND A DECIMAL POINT
|
||||
; ----------------------------------------------------------------------------
|
||||
FIN10:
|
||||
.ifndef CONFIG_ROR_WORKAROUND
|
||||
ror LOWTR
|
||||
.else
|
||||
lda #$00
|
||||
bcc L3BC9
|
||||
lda #$80
|
||||
L3BC9:
|
||||
lsr LOWTR
|
||||
ora LOWTR
|
||||
sta LOWTR
|
||||
.endif
|
||||
bit LOWTR
|
||||
bvc FIN1
|
||||
|
||||
@@ -1336,20 +1095,11 @@ GETEXP:
|
||||
lda EXPON
|
||||
cmp #MAX_EXPON
|
||||
bcc L3C2C
|
||||
.ifdef CONFIG_10A
|
||||
lda #$64
|
||||
.endif
|
||||
bit EXPSGN
|
||||
.ifdef CONFIG_10A
|
||||
bmi L3C3A
|
||||
.else
|
||||
bmi LDC70
|
||||
.endif
|
||||
jmp OVERFLOW
|
||||
LDC70:
|
||||
.ifndef CONFIG_10A
|
||||
lda #$0B
|
||||
.endif
|
||||
L3C2C:
|
||||
asl a
|
||||
asl a
|
||||
@@ -1366,40 +1116,20 @@ L3C3A:
|
||||
jmp FIN4
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
.ifdef CONFIG_SMALL
|
||||
; these values are /1000 of what the labels say
|
||||
CON_99999999_9:
|
||||
.byte $91,$43,$4F,$F8
|
||||
CON_999999999:
|
||||
.byte $94,$74,$23,$F7
|
||||
CON_BILLION:
|
||||
.byte $94,$74,$24,$00
|
||||
.else
|
||||
CON_99999999_9:
|
||||
.byte $9B,$3E,$BC,$1F,$FD
|
||||
CON_999999999:
|
||||
.ifndef CONFIG_10A
|
||||
.byte $9E,$6E,$6B,$27,$FE
|
||||
.else
|
||||
.byte $9E,$6E,$6B,$27,$FD
|
||||
.endif
|
||||
CON_BILLION:
|
||||
.byte $9E,$6E,$6B,$28,$00
|
||||
.endif
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
; PRINT "IN <LINE #>"
|
||||
; ----------------------------------------------------------------------------
|
||||
INPRT:
|
||||
.ifdef KBD
|
||||
jsr LFE0B
|
||||
.byte " in"
|
||||
.byte 0
|
||||
.else
|
||||
lda #<QT_IN
|
||||
ldy #>QT_IN
|
||||
jsr GOSTROUT2
|
||||
.endif
|
||||
lda CURLIN+1
|
||||
ldx CURLIN
|
||||
|
||||
@@ -1451,11 +1181,7 @@ L3C8C:
|
||||
lda #<CON_BILLION
|
||||
ldy #>CON_BILLION
|
||||
jsr FMULT
|
||||
.ifdef CONFIG_SMALL
|
||||
lda #<-6 ; exponent adjustment
|
||||
.else
|
||||
lda #<-9
|
||||
.endif
|
||||
L3C95:
|
||||
sta INDX
|
||||
; ----------------------------------------------------------------------------
|
||||
@@ -1533,11 +1259,9 @@ LDD3A:
|
||||
L3CF6:
|
||||
lda FAC_LAST
|
||||
clc
|
||||
.ifndef CONFIG_SMALL
|
||||
adc DECTBL+3,y
|
||||
sta FAC+4
|
||||
lda FAC+3
|
||||
.endif
|
||||
adc DECTBL+2,y
|
||||
sta FAC+3
|
||||
lda FAC+2
|
||||
@@ -1562,9 +1286,7 @@ L3D23:
|
||||
iny
|
||||
iny
|
||||
iny
|
||||
.ifndef CONFIG_SMALL
|
||||
iny
|
||||
.endif
|
||||
sty VARPNT
|
||||
ldy STRNG2
|
||||
iny
|
||||
@@ -1584,10 +1306,6 @@ L3D3E:
|
||||
and #$80
|
||||
tax
|
||||
cpy #DECTBL_END-DECTBL
|
||||
.ifdef CONFIG_CBM_ALL
|
||||
beq LDD96
|
||||
cpy #$3C ; XXX
|
||||
.endif
|
||||
bne L3CF6
|
||||
; ----------------------------------------------------------------------------
|
||||
; NINE DIGITS HAVE BEEN STORED IN STRING. NOW LOOK
|
||||
@@ -1644,25 +1362,13 @@ L3D94:
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
CON_HALF:
|
||||
.ifdef CONFIG_SMALL
|
||||
.byte $80,$00,$00,$00
|
||||
.else
|
||||
.byte $80,$00,$00,$00,$00
|
||||
.endif
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
; POWERS OF 10 FROM 1E8 DOWN TO 1,
|
||||
; AS 32-BIT INTEGERS, WITH ALTERNATING SIGNS
|
||||
; ----------------------------------------------------------------------------
|
||||
DECTBL:
|
||||
.ifdef CONFIG_SMALL
|
||||
.byte $FE,$79,$60 ; -100000
|
||||
.byte $00,$27,$10 ; 10000
|
||||
.byte $FF,$FC,$18 ; -1000
|
||||
.byte $00,$00,$64 ; 100
|
||||
.byte $FF,$FF,$F6 ; -10
|
||||
.byte $00,$00,$01 ; 1
|
||||
.else
|
||||
.byte $FA,$0A,$1F,$00 ; -100000000
|
||||
.byte $00,$98,$96,$80 ; 10000000
|
||||
.byte $FF,$F0,$BD,$C0 ; -1000000
|
||||
@@ -1672,19 +1378,8 @@ DECTBL:
|
||||
.byte $FF,$FF,$FF,$9C ; -100
|
||||
.byte $00,$00,$00,$0A ; 10
|
||||
.byte $FF,$FF,$FF,$FF ; -1
|
||||
.endif
|
||||
DECTBL_END:
|
||||
.ifdef CONFIG_CBM_ALL
|
||||
.byte $FF,$DF,$0A,$80 ; TI$
|
||||
.byte $00,$03,$4B,$C0
|
||||
.byte $FF,$FF,$73,$60
|
||||
.byte $00,$00,$0E,$10
|
||||
.byte $FF,$FF,$FD,$A8
|
||||
.byte $00,$00,$00,$3C
|
||||
.endif
|
||||
.ifdef CONFIG_2
|
||||
C_ZERO = CON_HALF + 2
|
||||
.endif
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
; "SQR" FUNCTION
|
||||
@@ -1744,19 +1439,6 @@ L3E0F:
|
||||
rts
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
.ifdef CONFIG_SMALL
|
||||
CON_LOG_E:
|
||||
.byte $81,$38,$AA,$3B
|
||||
POLY_EXP:
|
||||
.byte $06
|
||||
.byte $74,$63,$90,$8C
|
||||
.byte $77,$23,$0C,$AB
|
||||
.byte $7A,$1E,$94,$00
|
||||
.byte $7C,$63,$42,$80
|
||||
.byte $7E,$75,$FE,$D0
|
||||
.byte $80,$31,$72,$15
|
||||
.byte $81,$00,$00,$00
|
||||
.else
|
||||
CON_LOG_E:
|
||||
.byte $81,$38,$AA,$3B,$29
|
||||
POLY_EXP:
|
||||
@@ -1769,7 +1451,6 @@ POLY_EXP:
|
||||
.byte $7E,$75,$FD,$E7,$C6
|
||||
.byte $80,$31,$72,$18,$10
|
||||
.byte $81,$00,$00,$00,$00
|
||||
.endif
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
; "EXP" FUNCTION
|
||||
|
||||
-95
@@ -82,41 +82,19 @@ NEWSTT:
|
||||
jsr ISCNTC
|
||||
lda TXTPTR
|
||||
ldy TXTPTR+1
|
||||
.if .def(CONFIG_NO_INPUTBUFFER_ZP) && .def(CONFIG_2)
|
||||
cpy #>INPUTBUFFER
|
||||
.ifdef CBM2
|
||||
nop
|
||||
.endif
|
||||
beq LC6D4
|
||||
.else
|
||||
; BUG on AppleSoft I,
|
||||
; fixed differently on AppleSoft II (ldx/inx)
|
||||
beq L2683
|
||||
.endif
|
||||
sta OLDTEXT
|
||||
sty OLDTEXT+1
|
||||
LC6D4:
|
||||
ldy #$00
|
||||
L2683:
|
||||
lda (TXTPTR),y
|
||||
.ifndef CONFIG_11
|
||||
beq LA5DC ; old: 1 cycle more on generic case
|
||||
cmp #$3A
|
||||
beq NEWSTT2
|
||||
SYNERR1:
|
||||
jmp SYNERR
|
||||
LA5DC:
|
||||
.else
|
||||
bne COLON; new: 1 cycle more on ":" case
|
||||
.endif
|
||||
ldy #$02
|
||||
lda (TXTPTR),y
|
||||
clc
|
||||
.ifdef CONFIG_2
|
||||
jeq L2701
|
||||
.else
|
||||
beq L2701
|
||||
.endif
|
||||
iny
|
||||
lda (TXTPTR),y
|
||||
sta CURLIN
|
||||
@@ -140,27 +118,12 @@ NEWSTT2:
|
||||
; CARRY IS SET
|
||||
; ----------------------------------------------------------------------------
|
||||
EXECUTE_STATEMENT:
|
||||
.ifndef CONFIG_11A
|
||||
beq RET1
|
||||
.else
|
||||
beq RET2
|
||||
.endif
|
||||
.ifndef CONFIG_11
|
||||
sec
|
||||
.endif
|
||||
EXECUTE_STATEMENT1:
|
||||
sbc #$80
|
||||
.ifndef CONFIG_11
|
||||
jcc LET ; old: 1 cycle more on instr.
|
||||
.else
|
||||
bcc LET1; new: 1 cycle more on assignment
|
||||
.endif
|
||||
cmp #NUM_TOKENS
|
||||
.ifdef CONFIG_2
|
||||
bcs LC721
|
||||
.else
|
||||
bcs SYNERR1
|
||||
.endif
|
||||
asl a
|
||||
tay
|
||||
lda TOKEN_ADDRESS_TABLE+1,y
|
||||
@@ -169,7 +132,6 @@ EXECUTE_STATEMENT1:
|
||||
pha
|
||||
jmp CHRGET
|
||||
|
||||
.ifdef CONFIG_11
|
||||
LET1:
|
||||
jmp LET
|
||||
|
||||
@@ -178,9 +140,7 @@ COLON:
|
||||
beq NEWSTT2
|
||||
SYNERR1:
|
||||
jmp SYNERR
|
||||
.endif
|
||||
|
||||
.ifdef CONFIG_2; GO TO
|
||||
LC721:
|
||||
cmp #TOKEN_GO-$80
|
||||
bne SYNERR1
|
||||
@@ -188,7 +148,6 @@ LC721:
|
||||
lda #TOKEN_TO
|
||||
jsr SYNCHR
|
||||
jmp GOTO
|
||||
.endif
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
; "RESTORE" STATEMENT
|
||||
@@ -223,13 +182,11 @@ END2:
|
||||
bne RET1
|
||||
lda TXTPTR
|
||||
ldy TXTPTR+1
|
||||
.if .def(CONFIG_NO_INPUTBUFFER_ZP) && .def(CONFIG_2)
|
||||
; BUG on AppleSoft I
|
||||
; fix exists on AppleSoft II
|
||||
; TXTPTR+1 will always be > 0
|
||||
ldx CURLIN+1
|
||||
inx
|
||||
.endif
|
||||
beq END4
|
||||
sta OLDTEXT
|
||||
sty OLDTEXT+1
|
||||
@@ -244,19 +201,12 @@ END4:
|
||||
L2701:
|
||||
lda #<QT_BREAK
|
||||
ldy #>QT_BREAK
|
||||
.ifndef KBD
|
||||
ldx #$00
|
||||
stx Z14
|
||||
.endif
|
||||
bcc L270E
|
||||
jmp PRINT_ERROR_LINNUM
|
||||
L270E:
|
||||
jmp RESTART
|
||||
.ifdef KBD
|
||||
LE664:
|
||||
tay
|
||||
jmp SNGFLT
|
||||
.endif
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
; "CONT" COMMAND
|
||||
@@ -277,48 +227,3 @@ L271C:
|
||||
sty CURLIN+1
|
||||
RET1:
|
||||
rts
|
||||
|
||||
.ifdef KBD
|
||||
PRT:
|
||||
jsr GETBYT
|
||||
txa
|
||||
; not ROR bug safe
|
||||
ror a
|
||||
ror a
|
||||
ror a
|
||||
sta $8F
|
||||
rts
|
||||
|
||||
LE68C:
|
||||
ldy #$12
|
||||
LE68E:
|
||||
lda LEA30,y
|
||||
sta $03A2,y
|
||||
dey
|
||||
bpl LE68E
|
||||
rts
|
||||
.endif
|
||||
|
||||
.ifndef AIM65
|
||||
.if .def(CONFIG_NULL) || .def(CONFIG_PRINTNULLS)
|
||||
; CBM1 has the keyword removed,
|
||||
; but the code is still here
|
||||
NULL:
|
||||
jsr GETBYT
|
||||
bne RET1
|
||||
inx
|
||||
cpx #NULL_MAX
|
||||
bcs L2739
|
||||
dex
|
||||
stx Z15
|
||||
L2738:
|
||||
rts
|
||||
L2739:
|
||||
jmp IQERR
|
||||
.endif
|
||||
.ifndef CONFIG_11A
|
||||
CLEAR:
|
||||
bne RET1
|
||||
jmp CLEARC
|
||||
.endif
|
||||
.endif
|
||||
-14
@@ -57,13 +57,8 @@ L2809:
|
||||
lda TXTTAB
|
||||
ldx TXTTAB+1
|
||||
L280D:
|
||||
.ifdef KBD
|
||||
jsr LF457
|
||||
bne UNDERR
|
||||
.else
|
||||
jsr FL1
|
||||
bcc UNDERR
|
||||
.endif
|
||||
lda LOWTRX
|
||||
sbc #$01
|
||||
sta TXTPTR
|
||||
@@ -79,11 +74,7 @@ L281E:
|
||||
POP:
|
||||
bne L281E
|
||||
lda #$FF
|
||||
.ifdef CONFIG_2A
|
||||
sta FORPNT+1 ; bugfix, wrong in AppleSoft II
|
||||
.else
|
||||
sta FORPNT
|
||||
.endif
|
||||
jsr GTFORPNT
|
||||
txs
|
||||
cmp #TOKEN_GOSUB
|
||||
@@ -151,13 +142,8 @@ L2866:
|
||||
beq L2852
|
||||
iny
|
||||
cmp #$22
|
||||
.ifndef CONFIG_11
|
||||
beq L285E; old: swap & cont is faster
|
||||
bne L2866
|
||||
.else
|
||||
bne L2866; new: cont is faster
|
||||
beq L285E
|
||||
.endif
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
; "IF" STATEMENT
|
||||
|
||||
+2
-32
@@ -1,33 +1,3 @@
|
||||
.segment "HEADER"
|
||||
.ifdef W65C816SXB
|
||||
; Disable emulation mode (is left on from the monitor)
|
||||
.setcpu "65816"
|
||||
SEC ;set carry for emulation mode
|
||||
XCE ;go into emulation mode
|
||||
.setcpu "65C02"
|
||||
jsr INITUSBSERIAL
|
||||
.segment "HEADER"
|
||||
|
||||
; Add a small delay to allow monitor to connect the terminal after
|
||||
; starting execution
|
||||
ldy #0
|
||||
ldx #0
|
||||
@loop:
|
||||
dex
|
||||
bne @loop
|
||||
dey
|
||||
bne @loop
|
||||
jmp COLD_START
|
||||
.endif
|
||||
|
||||
.ifdef KBD
|
||||
jmp LE68C
|
||||
.byte $00,$13,$56
|
||||
.endif
|
||||
.ifdef AIM65
|
||||
jmp COLD_START
|
||||
jmp RESTART
|
||||
.word AYINT,GIVAYF
|
||||
.endif
|
||||
.ifdef SYM1
|
||||
jmp PR_WRITTEN_BY
|
||||
.endif
|
||||
; Empty
|
||||
+170
-509
@@ -1,129 +1,44 @@
|
||||
.segment "INIT"
|
||||
|
||||
.ifdef KBD
|
||||
FNDLIN2:
|
||||
php
|
||||
jmp FNDLIN
|
||||
.endif
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
PR_WRITTEN_BY:
|
||||
.ifndef KBD
|
||||
.ifndef CONFIG_CBM_ALL
|
||||
.ifndef AIM65
|
||||
.ifndef SYM1
|
||||
lda #<QT_WRITTEN_BY
|
||||
ldy #>QT_WRITTEN_BY
|
||||
jsr STROUT
|
||||
.endif
|
||||
.endif
|
||||
.endif
|
||||
.endif
|
||||
COLD_START:
|
||||
.ifdef SYM1
|
||||
jsr ACCESS
|
||||
.endif
|
||||
.ifdef KBD
|
||||
lda #<LFD81
|
||||
sta $03A0
|
||||
lda #>LFD81
|
||||
sta $03A1
|
||||
lda #$20
|
||||
sta $0480
|
||||
lda $0352
|
||||
sta $04
|
||||
lda $0353
|
||||
sta $05
|
||||
.else
|
||||
.ifndef CBM2
|
||||
ldx #$FF
|
||||
stx CURLIN+1
|
||||
.endif
|
||||
.ifdef CONFIG_NO_INPUTBUFFER_ZP
|
||||
ldx #$FB
|
||||
.elseif .def(AIM65)
|
||||
ldx #$FE
|
||||
.endif
|
||||
txs
|
||||
.ifndef CONFIG_CBM_ALL
|
||||
lda #<COLD_START
|
||||
ldy #>COLD_START
|
||||
sta GORESTART+1
|
||||
sty GORESTART+2
|
||||
.ifndef AIM65
|
||||
sta GOSTROUT+1
|
||||
sty GOSTROUT+2
|
||||
lda #<AYINT
|
||||
ldy #>AYINT
|
||||
sta GOAYINT
|
||||
sty GOAYINT+1
|
||||
lda #<GIVAYF
|
||||
ldy #>GIVAYF
|
||||
sta GOGIVEAYF
|
||||
sty GOGIVEAYF+1
|
||||
.endif
|
||||
.endif
|
||||
lda #$4C
|
||||
.ifdef CONFIG_CBM_ALL
|
||||
sta JMPADRS
|
||||
.endif
|
||||
sta GORESTART
|
||||
.ifdef AIM65
|
||||
sta JMPADRS
|
||||
sta ATN
|
||||
sta GOSTROUT
|
||||
.else
|
||||
.ifndef CONFIG_CBM_ALL
|
||||
sta GOSTROUT
|
||||
sta JMPADRS
|
||||
.endif
|
||||
.ifdef SYM1
|
||||
sta USR1
|
||||
sta USR3
|
||||
sta USR2
|
||||
.endif
|
||||
.if (!.def(CONFIG_RAM)) && (!.def(CONFIG_CBM_ALL))
|
||||
sta USR
|
||||
.endif
|
||||
.endif
|
||||
lda #<QT_WRITTEN_BY
|
||||
ldy #>QT_WRITTEN_BY
|
||||
jsr STROUT
|
||||
|
||||
.ifndef CONFIG_RAM
|
||||
.ifdef APPLE
|
||||
lda #<USR_FUNC
|
||||
ldy #>USR_FUNC
|
||||
.else
|
||||
lda #<IQERR
|
||||
ldy #>IQERR
|
||||
.endif
|
||||
.ifdef AIM65
|
||||
sta ATN+1
|
||||
sty ATN+2
|
||||
sta GOSTROUT+1
|
||||
sty GOSTROUT+2
|
||||
.else
|
||||
sta USR+1
|
||||
sty USR+2
|
||||
.ifdef SYM1
|
||||
sta USR1+1
|
||||
sty USR1+2
|
||||
lda #<DUMPT
|
||||
ldy #>DUMPT
|
||||
sta USR2+1
|
||||
sty USR2+2
|
||||
lda #<L8C78
|
||||
ldy #>L8C78
|
||||
sta USR3+1
|
||||
sty USR3+2
|
||||
.endif
|
||||
.endif
|
||||
.endif
|
||||
.ifndef CBM1
|
||||
lda #WIDTH
|
||||
sta Z17
|
||||
lda #WIDTH2
|
||||
sta Z18
|
||||
.endif
|
||||
.endif
|
||||
COLD_START:
|
||||
ldx #$FF
|
||||
stx CURLIN+1
|
||||
ldx #$FB
|
||||
txs
|
||||
lda #<COLD_START
|
||||
ldy #>COLD_START
|
||||
sta GORESTART+1
|
||||
sty GORESTART+2
|
||||
sta GOSTROUT+1
|
||||
sty GOSTROUT+2
|
||||
lda #<AYINT
|
||||
ldy #>AYINT
|
||||
sta GOAYINT
|
||||
sty GOAYINT+1
|
||||
lda #<GIVAYF
|
||||
ldy #>GIVAYF
|
||||
sta GOGIVEAYF
|
||||
sty GOGIVEAYF+1
|
||||
lda #$4C
|
||||
sta GORESTART
|
||||
sta GOSTROUT
|
||||
sta JMPADRS
|
||||
sta USR
|
||||
|
||||
lda #<IQERR
|
||||
ldy #>IQERR
|
||||
sta USR+1
|
||||
sty USR+2
|
||||
lda #WIDTH
|
||||
sta Z17
|
||||
lda #WIDTH2
|
||||
sta Z18
|
||||
|
||||
; All non-CONFIG_SMALL versions of BASIC have
|
||||
; the same bug here: While the number of bytes
|
||||
@@ -141,408 +56,154 @@ COLD_START:
|
||||
; the number of bytes by adding 3 - this
|
||||
; copies four bytes too many, which is no
|
||||
; problem.
|
||||
.ifdef CONFIG_SMALL
|
||||
.ifdef KBD
|
||||
ldx #GENERIC_CHRGET_END-GENERIC_CHRGET+4
|
||||
.else
|
||||
ldx #GENERIC_CHRGET_END-GENERIC_CHRGET
|
||||
.endif
|
||||
.else
|
||||
ldx #GENERIC_CHRGET_END-GENERIC_CHRGET-1 ; XXX
|
||||
.endif
|
||||
ldx #GENERIC_CHRGET_END-GENERIC_CHRGET-1 ; XXX
|
||||
L4098:
|
||||
lda GENERIC_CHRGET-1,x
|
||||
sta CHRGET-1,x
|
||||
dex
|
||||
bne L4098
|
||||
.ifdef CONFIG_2
|
||||
lda #$03
|
||||
sta DSCLEN
|
||||
.endif
|
||||
.ifndef KBD
|
||||
txa
|
||||
sta SHIFTSIGNEXT
|
||||
.ifdef CONFIG_CBM_ALL
|
||||
sta CURDVC
|
||||
.endif
|
||||
sta LASTPT+1
|
||||
.ifndef AIM65
|
||||
.if .defined(CONFIG_NULL) || .defined(CONFIG_PRINTNULLS)
|
||||
sta Z15
|
||||
.endif
|
||||
.endif
|
||||
.ifndef CONFIG_11
|
||||
sta POSX
|
||||
.endif
|
||||
pha
|
||||
sta Z14
|
||||
.ifndef CBM2
|
||||
.ifndef AIM65
|
||||
.ifndef SYM1
|
||||
.ifndef MICROTAN
|
||||
lda #$03
|
||||
sta DSCLEN
|
||||
.endif
|
||||
.endif
|
||||
.endif
|
||||
.ifndef CONFIG_11
|
||||
lda #$2C
|
||||
sta LINNUM+1
|
||||
.endif
|
||||
jsr CRDO
|
||||
.endif
|
||||
.ifdef CBM2
|
||||
inx
|
||||
stx INPUTBUFFER-3
|
||||
stx INPUTBUFFER-4
|
||||
.endif
|
||||
.ifdef APPLE
|
||||
lda #$01
|
||||
sta INPUTBUFFER-3
|
||||
sta INPUTBUFFER-4
|
||||
.endif
|
||||
.ifdef CONFIG_INPUTBUFFER_0200
|
||||
lda #$01
|
||||
sta INPUTBUFFER-3
|
||||
sta INPUTBUFFER-4
|
||||
.endif
|
||||
ldx #TEMPST
|
||||
stx TEMPPT
|
||||
.ifndef CONFIG_CBM_ALL
|
||||
.ifdef KILIAN
|
||||
lda #<$BC00
|
||||
sta MEMSIZ
|
||||
lda #>$BC00
|
||||
sta MEMSIZ+1
|
||||
jmp L4106
|
||||
.else
|
||||
lda #<QT_MEMORY_SIZE
|
||||
ldy #>QT_MEMORY_SIZE
|
||||
jsr STROUT
|
||||
.endif
|
||||
.ifdef APPLE
|
||||
jsr INLINX
|
||||
.else
|
||||
jsr NXIN
|
||||
.endif
|
||||
stx TXTPTR
|
||||
sty TXTPTR+1
|
||||
jsr CHRGET
|
||||
.ifndef AIM65
|
||||
.ifndef SYM1
|
||||
cmp #$41
|
||||
bne SKIPPED
|
||||
jmp PR_WRITTEN_BY
|
||||
lda GENERIC_CHRGET-1,x
|
||||
sta CHRGET-1,x
|
||||
dex
|
||||
bne L4098
|
||||
lda #$03
|
||||
sta DSCLEN
|
||||
txa
|
||||
sta SHIFTSIGNEXT
|
||||
sta LASTPT+1
|
||||
pha
|
||||
sta Z14
|
||||
lda #$03
|
||||
sta DSCLEN
|
||||
jsr CRDO
|
||||
lda #$01
|
||||
sta INPUTBUFFER-3
|
||||
sta INPUTBUFFER-4
|
||||
ldx #TEMPST
|
||||
stx TEMPPT
|
||||
lda #<$BC00 ; Start of IO
|
||||
sta MEMSIZ
|
||||
lda #>$BC00
|
||||
sta MEMSIZ+1
|
||||
jmp L4106
|
||||
jsr NXIN
|
||||
stx TXTPTR
|
||||
sty TXTPTR+1
|
||||
jsr CHRGET
|
||||
cmp #$41
|
||||
bne SKIPPED
|
||||
jmp PR_WRITTEN_BY
|
||||
SKIPPED:
|
||||
.endif
|
||||
.endif
|
||||
tay
|
||||
bne L40EE
|
||||
.endif
|
||||
.ifndef CBM2
|
||||
lda #<RAMSTART2
|
||||
.endif
|
||||
ldy #>RAMSTART2
|
||||
.ifdef CONFIG_2
|
||||
sta TXTTAB
|
||||
sty TXTTAB+1
|
||||
.endif
|
||||
sta LINNUM
|
||||
sty LINNUM+1
|
||||
.ifdef CBM2
|
||||
tay
|
||||
.else
|
||||
ldy #$00
|
||||
.endif
|
||||
tay
|
||||
bne L40EE
|
||||
lda #<RAMSTART2
|
||||
ldy #>RAMSTART2
|
||||
sta TXTTAB
|
||||
sty TXTTAB+1
|
||||
sta LINNUM
|
||||
sty LINNUM+1
|
||||
ldy #$00
|
||||
L40D7:
|
||||
inc LINNUM
|
||||
bne L40DD
|
||||
inc LINNUM+1
|
||||
.ifdef CBM1
|
||||
; CBM: hard RAM top limit is $8000
|
||||
lda LINNUM+1
|
||||
cmp #$80
|
||||
beq L40FA
|
||||
.endif
|
||||
.ifdef CBM2
|
||||
; optimized version of the CBM1 code
|
||||
bmi L40FA
|
||||
.endif
|
||||
.if .def(AIM65)
|
||||
; AIM65: hard RAM top limit is $A000
|
||||
lda LINNUM+1
|
||||
cmp #$A0
|
||||
beq L40FA
|
||||
.endif
|
||||
inc LINNUM
|
||||
bne L40DD
|
||||
inc LINNUM+1
|
||||
L40DD:
|
||||
.ifdef CONFIG_2
|
||||
lda #$55 ; 01010101 / 10101010
|
||||
.else
|
||||
lda #$92 ; 10010010 / 00100100
|
||||
.endif
|
||||
sta (LINNUM),y
|
||||
cmp (LINNUM),y
|
||||
bne L40FA
|
||||
asl a
|
||||
sta (LINNUM),y
|
||||
cmp (LINNUM),y
|
||||
.ifdef CONFIG_CBM_ALL
|
||||
beq L40D7
|
||||
.else
|
||||
.ifndef CONFIG_11
|
||||
beq L40D7; old: faster
|
||||
bne L40FA
|
||||
.else
|
||||
bne L40FA; new: slower
|
||||
beq L40D7
|
||||
.endif
|
||||
lda #$55 ; 01010101 / 10101010
|
||||
sta (LINNUM),y
|
||||
cmp (LINNUM),y
|
||||
bne L40FA
|
||||
asl a
|
||||
sta (LINNUM),y
|
||||
cmp (LINNUM),y
|
||||
bne L40FA; new: slower
|
||||
beq L40D7
|
||||
L40EE:
|
||||
jsr CHRGOT
|
||||
jsr LINGET
|
||||
tay
|
||||
beq L40FA
|
||||
jmp SYNERR
|
||||
.endif
|
||||
jsr CHRGOT
|
||||
jsr LINGET
|
||||
tay
|
||||
beq L40FA
|
||||
jmp SYNERR
|
||||
L40FA:
|
||||
lda LINNUM
|
||||
ldy LINNUM+1
|
||||
sta MEMSIZ
|
||||
sty MEMSIZ+1
|
||||
.if !(.def(MICROTAN) || .def(AIM65) || .def(SYM1))
|
||||
sta FRETOP
|
||||
sty FRETOP+1
|
||||
.endif
|
||||
lda LINNUM
|
||||
ldy LINNUM+1
|
||||
sta MEMSIZ
|
||||
sty MEMSIZ+1
|
||||
sta FRETOP
|
||||
sty FRETOP+1
|
||||
L4106:
|
||||
.ifndef CONFIG_CBM_ALL
|
||||
.ifdef APPLE
|
||||
lda #$FF
|
||||
jmp L2829
|
||||
.word STROUT ; PATCH!
|
||||
jsr NXIN
|
||||
.else
|
||||
lda #<QT_TERMINAL_WIDTH
|
||||
ldy #>QT_TERMINAL_WIDTH
|
||||
jsr STROUT
|
||||
jsr NXIN
|
||||
.endif
|
||||
stx TXTPTR
|
||||
sty TXTPTR+1
|
||||
jsr CHRGET
|
||||
tay
|
||||
beq L4136
|
||||
jsr LINGET
|
||||
lda LINNUM+1
|
||||
bne L4106
|
||||
lda LINNUM
|
||||
cmp #$10
|
||||
bcc L4106
|
||||
lda #<QT_TERMINAL_WIDTH
|
||||
ldy #>QT_TERMINAL_WIDTH
|
||||
jsr STROUT
|
||||
jsr NXIN
|
||||
stx TXTPTR
|
||||
sty TXTPTR+1
|
||||
jsr CHRGET
|
||||
tay
|
||||
beq L4136
|
||||
jsr LINGET
|
||||
lda LINNUM+1
|
||||
bne L4106
|
||||
lda LINNUM
|
||||
cmp #$10
|
||||
bcc L4106
|
||||
L2829:
|
||||
sta Z17
|
||||
sta Z17
|
||||
L4129:
|
||||
.ifdef AIM65
|
||||
sbc #$0A
|
||||
.else
|
||||
sbc #$0E
|
||||
.endif
|
||||
bcs L4129
|
||||
eor #$FF
|
||||
.ifdef AIM65
|
||||
sbc #$08
|
||||
.else
|
||||
sbc #$0C
|
||||
.endif
|
||||
clc
|
||||
adc Z17
|
||||
sta Z18
|
||||
.endif
|
||||
sbc #$0E
|
||||
bcs L4129
|
||||
eor #$FF
|
||||
sbc #$0C
|
||||
clc
|
||||
adc Z17
|
||||
sta Z18
|
||||
L4136:
|
||||
.ifdef CONFIG_RAM
|
||||
lda #<QT_WANT
|
||||
ldy #>QT_WANT
|
||||
jsr STROUT
|
||||
jsr NXIN
|
||||
stx TXTPTR
|
||||
sty TXTPTR+1
|
||||
jsr CHRGET
|
||||
ldx #<RAMSTART1
|
||||
ldy #>RAMSTART1
|
||||
cmp #'Y'
|
||||
beq L4183
|
||||
cmp #'A'
|
||||
beq L4157
|
||||
cmp #'N'
|
||||
bne L4136
|
||||
L4157:
|
||||
ldx #<IQERR
|
||||
ldy #>IQERR
|
||||
stx UNFNC_ATN
|
||||
sty UNFNC_ATN+1
|
||||
ldx #<ATN ; overwrite starting
|
||||
ldy #>ATN ; with ATN
|
||||
cmp #'A'
|
||||
beq L4183
|
||||
ldx #<IQERR
|
||||
ldy #>IQERR
|
||||
stx UNFNC_COS
|
||||
sty UNFNC_COS+1
|
||||
stx UNFNC_TAN
|
||||
sty UNFNC_TAN+1
|
||||
stx UNFNC_SIN
|
||||
sty UNFNC_SIN+1
|
||||
ldx #<SIN_COS_TAN_ATN ; overwrite
|
||||
ldy #>SIN_COS_TAN_ATN ; all of trig.s
|
||||
L4183:
|
||||
.else
|
||||
ldx #<RAMSTART2
|
||||
ldy #>RAMSTART2
|
||||
.endif
|
||||
stx TXTTAB
|
||||
sty TXTTAB+1
|
||||
ldy #$00
|
||||
tya
|
||||
sta (TXTTAB),y
|
||||
inc TXTTAB
|
||||
.ifndef CBM2
|
||||
bne L4192
|
||||
inc TXTTAB+1
|
||||
ldx #<RAMSTART2
|
||||
ldy #>RAMSTART2
|
||||
stx TXTTAB
|
||||
sty TXTTAB+1
|
||||
ldy #$00
|
||||
tya
|
||||
sta (TXTTAB),y
|
||||
inc TXTTAB
|
||||
bne L4192
|
||||
inc TXTTAB+1
|
||||
L4192:
|
||||
.endif
|
||||
.if CONFIG_SCRTCH_ORDER = 1
|
||||
jsr SCRTCH
|
||||
.endif
|
||||
lda TXTTAB
|
||||
ldy TXTTAB+1
|
||||
jsr REASON
|
||||
.ifdef CBM2
|
||||
lda #<QT_BASIC
|
||||
ldy #>QT_BASIC
|
||||
jsr STROUT
|
||||
.else
|
||||
jsr CRDO
|
||||
.endif
|
||||
lda MEMSIZ
|
||||
sec
|
||||
sbc TXTTAB
|
||||
tax
|
||||
lda MEMSIZ+1
|
||||
sbc TXTTAB+1
|
||||
jsr LINPRT
|
||||
lda #<QT_BYTES_FREE
|
||||
ldy #>QT_BYTES_FREE
|
||||
jsr STROUT
|
||||
.if CONFIG_SCRTCH_ORDER = 2
|
||||
jsr SCRTCH
|
||||
.endif
|
||||
.ifdef CONFIG_CBM_ALL
|
||||
jmp RESTART
|
||||
.elseif .def(AIM65)
|
||||
lda #<CRDO
|
||||
ldy #>CRDO
|
||||
sta GORESTART+1
|
||||
sty GORESTART+2
|
||||
jmp RESTART
|
||||
.else
|
||||
lda #<STROUT
|
||||
ldy #>STROUT
|
||||
sta GOSTROUT+1
|
||||
sty GOSTROUT+2
|
||||
.if CONFIG_SCRTCH_ORDER = 3
|
||||
jsr SCRTCH
|
||||
.endif
|
||||
lda #<RESTART
|
||||
ldy #>RESTART
|
||||
sta GORESTART+1
|
||||
sty GORESTART+2
|
||||
jmp (GORESTART+1)
|
||||
.endif
|
||||
lda TXTTAB
|
||||
ldy TXTTAB+1
|
||||
jsr REASON
|
||||
jsr CRDO
|
||||
lda MEMSIZ
|
||||
sec
|
||||
sbc TXTTAB
|
||||
tax
|
||||
lda MEMSIZ+1
|
||||
sbc TXTTAB+1
|
||||
jsr LINPRT
|
||||
lda #<QT_BYTES_FREE
|
||||
ldy #>QT_BYTES_FREE
|
||||
jsr STROUT
|
||||
jsr SCRTCH
|
||||
lda #<STROUT
|
||||
ldy #>STROUT
|
||||
sta GOSTROUT+1
|
||||
sty GOSTROUT+2
|
||||
lda #<RESTART
|
||||
ldy #>RESTART
|
||||
sta GORESTART+1
|
||||
sty GORESTART+2
|
||||
jmp (GORESTART+1)
|
||||
|
||||
.if .def(CONFIG_RAM) || .def(OSI)
|
||||
; OSI is compiled for ROM, but includes
|
||||
; this unused string
|
||||
QT_WANT:
|
||||
.byte "WANT SIN-COS-TAN-ATN"
|
||||
.byte 0
|
||||
.endif
|
||||
QT_WRITTEN_BY:
|
||||
.ifndef CONFIG_CBM_ALL
|
||||
.if !(.def(AIM65) || .def(SYM1))
|
||||
.ifdef APPLE
|
||||
asc80 "COPYRIGHT 1977 BY MICROSOFT CO"
|
||||
.byte CR,0
|
||||
.else
|
||||
.byte CR,LF,$0C ; FORM FEED
|
||||
.ifndef CONFIG_11
|
||||
.byte "WRITTEN BY RICHARD W. WEILAND."
|
||||
.else
|
||||
.byte "WRITTEN BY WEILAND & GATES"
|
||||
.endif
|
||||
.byte CR,LF,0
|
||||
.endif
|
||||
.endif
|
||||
.byte CR,LF,$0C ; FORM FEED
|
||||
.byte "WRITTEN BY WEILAND & GATES"
|
||||
.byte CR,LF,0
|
||||
QT_MEMORY_SIZE:
|
||||
.byte "MEMORY SIZE"
|
||||
.byte 0
|
||||
.byte "MEMORY SIZE"
|
||||
.byte 0
|
||||
QT_TERMINAL_WIDTH:
|
||||
.if !(.def(AIM65) || .def(SYM1))
|
||||
.byte "TERMINAL "
|
||||
.endif
|
||||
.byte "WIDTH"
|
||||
.byte 0
|
||||
.endif
|
||||
.byte "TERMINAL "
|
||||
.byte "WIDTH"
|
||||
.byte 0
|
||||
QT_BYTES_FREE:
|
||||
.byte " BYTES FREE"
|
||||
.ifdef CBM1
|
||||
.elseif .def(CBM2)
|
||||
.byte CR,0
|
||||
.elseif .def(APPLE)
|
||||
.byte 0
|
||||
.else
|
||||
.byte CR,LF,CR,LF
|
||||
.endif
|
||||
.byte " BYTES FREE"
|
||||
.byte CR,LF,CR,LF
|
||||
QT_BASIC:
|
||||
.ifdef OSI
|
||||
.byte "OSI 6502 BASIC VERSION 1.0 REV 3.2"
|
||||
.endif
|
||||
.ifdef KIM
|
||||
.byte "MOS TECH 6502 BASIC V1.1"
|
||||
.endif
|
||||
.ifdef MICROTAN
|
||||
.byte "MICROTAN BASIC"
|
||||
.endif
|
||||
.ifdef AIM65
|
||||
.byte " AIM 65 BASIC V1.1"
|
||||
.endif
|
||||
.ifdef SYM1
|
||||
.byte "BASIC V1.1"
|
||||
.endif
|
||||
.ifdef CBM1
|
||||
.byte $13 ; HOME
|
||||
.byte "*** COMMODORE BASIC ***"
|
||||
.byte $11,$11,$11,0 ; DOWN/DOWN/DOWN
|
||||
.endif
|
||||
.ifdef CBM2
|
||||
.byte "### COMMODORE BASIC ###"
|
||||
.byte CR,CR,0
|
||||
.endif
|
||||
.ifdef APPLE
|
||||
.byte LF,CR,LF
|
||||
.byte "APPLE BASIC V1.1"
|
||||
.endif
|
||||
.ifndef CONFIG_CBM_ALL
|
||||
.byte CR,LF
|
||||
.ifdef MICROTAN
|
||||
.byte "(C) 1980 MICROSOFT"
|
||||
.elseif .def(AIM65)
|
||||
.byte 0
|
||||
.byte "(C) 1978 MICROSOFT"
|
||||
.elseif .def(SYM1)
|
||||
.byte "COPYRIGHT 1978 SYNERTEK SYSTEMS CORP."
|
||||
.else
|
||||
.byte "COPYRIGHT 1977 BY MICROSOFT CO."
|
||||
.endif
|
||||
.byte CR,LF
|
||||
.ifndef AIM65
|
||||
.byte 0
|
||||
.endif
|
||||
.endif
|
||||
.endif
|
||||
.byte CR,LF
|
||||
.byte "COPYRIGHT 1977 BY MICROSOFT CO."
|
||||
.byte CR,LF
|
||||
-107
@@ -1,123 +1,44 @@
|
||||
.segment "CODE"
|
||||
|
||||
.ifndef CONFIG_NO_LINE_EDITING
|
||||
L2420:
|
||||
.ifdef OSI
|
||||
jsr OUTDO
|
||||
.endif
|
||||
dex
|
||||
.ifdef AIM65
|
||||
bmi L2423
|
||||
jsr PSLS
|
||||
jmp INLIN2
|
||||
LB35F:
|
||||
jsr OUTDO
|
||||
.else
|
||||
bpl INLIN2
|
||||
.endif
|
||||
L2423:
|
||||
.ifdef OSI
|
||||
jsr OUTDO
|
||||
.endif
|
||||
jsr CRDO
|
||||
.endif
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
; READ A LINE, AND STRIP OFF SIGN BITS
|
||||
; ----------------------------------------------------------------------------
|
||||
.ifndef KBD
|
||||
INLIN:
|
||||
.ifdef APPLE
|
||||
ldx #$DD
|
||||
INLIN1:
|
||||
stx $33
|
||||
jsr L2900
|
||||
cpx #$EF
|
||||
bcs L0C32
|
||||
ldx #$EF
|
||||
L0C32:
|
||||
lda #$00
|
||||
sta INPUTBUFFER,x
|
||||
ldx #<(INPUTBUFFER-1)
|
||||
ldy #>(INPUTBUFFER-1)
|
||||
rts
|
||||
.endif
|
||||
|
||||
.ifndef APPLE
|
||||
ldx #$00
|
||||
INLIN2:
|
||||
jsr GETLN
|
||||
.ifdef AIM65
|
||||
cmp #$1A
|
||||
bne INLINAIM
|
||||
jsr DU13
|
||||
jmp INLIN
|
||||
INLINAIM:
|
||||
.endif
|
||||
.ifndef CONFIG_NO_LINE_EDITING
|
||||
cmp #$07
|
||||
beq L2443
|
||||
.endif
|
||||
cmp #$0D
|
||||
beq L2453
|
||||
.ifndef CONFIG_NO_LINE_EDITING
|
||||
cmp #$20
|
||||
.ifdef AIM65
|
||||
bcc L244E
|
||||
.else
|
||||
bcc INLIN2
|
||||
.endif
|
||||
.ifdef MICROTAN
|
||||
cmp #$80
|
||||
.else
|
||||
.ifdef AIM65
|
||||
cmp #$7F
|
||||
beq L2420
|
||||
.endif
|
||||
cmp #$7D
|
||||
.endif
|
||||
bcs INLIN2
|
||||
cmp #$40 ; @
|
||||
.ifdef AIM65
|
||||
beq LB35F
|
||||
.else
|
||||
beq L2423
|
||||
.ifdef MICROTAN
|
||||
cmp #$7F ; DEL
|
||||
.else
|
||||
cmp #$5F ; _
|
||||
.endif
|
||||
beq L2420
|
||||
.endif
|
||||
L2443:
|
||||
.ifdef MICROTAN
|
||||
cpx #$4F
|
||||
.else
|
||||
cpx #$47
|
||||
.endif
|
||||
bcs L244C
|
||||
.endif
|
||||
sta INPUTBUFFER,x
|
||||
inx
|
||||
.if .def(OSI) || .def(AIM65)
|
||||
.byte $2C
|
||||
.else
|
||||
bne INLIN2
|
||||
.endif
|
||||
L244C:
|
||||
.ifndef CONFIG_NO_LINE_EDITING
|
||||
lda #$07 ; BEL
|
||||
L244E:
|
||||
jsr OUTDO
|
||||
bne INLIN2
|
||||
.endif
|
||||
L2453:
|
||||
jmp L29B9
|
||||
.endif
|
||||
.endif
|
||||
|
||||
.ifndef KBD
|
||||
.ifndef APPLE
|
||||
GETLN:
|
||||
.ifdef CONFIG_FILE
|
||||
jsr CHRIN
|
||||
@@ -126,34 +47,7 @@ GETLN:
|
||||
.else
|
||||
jsr MONRDKEY
|
||||
.endif
|
||||
.ifdef OSI
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
and #$7F
|
||||
.endif
|
||||
.endif
|
||||
.ifdef APPLE
|
||||
RDKEY:
|
||||
jsr LFD0C
|
||||
and #$7F
|
||||
.endif
|
||||
.ifdef SYM1
|
||||
cmp #$14
|
||||
.else
|
||||
cmp #$0F
|
||||
.endif
|
||||
bne L2465
|
||||
pha
|
||||
lda Z14
|
||||
@@ -162,4 +56,3 @@ RDKEY:
|
||||
pla
|
||||
L2465:
|
||||
rts
|
||||
.endif
|
||||
-140
@@ -8,25 +8,14 @@
|
||||
INPUTERR:
|
||||
lda INPUTFLG
|
||||
beq RESPERR ; INPUT
|
||||
.ifndef SYM1
|
||||
.ifndef CONFIG_SMALL
|
||||
.ifdef CONFIG_10A
|
||||
; without this, it treats GET errors
|
||||
; like READ errors
|
||||
bmi L2A63 ; READ
|
||||
ldy #$FF ; GET
|
||||
bne L2A67
|
||||
L2A63:
|
||||
.endif
|
||||
.endif
|
||||
.endif
|
||||
.ifdef CONFIG_CBM1_PATCHES
|
||||
jsr PATCH5
|
||||
nop
|
||||
.else
|
||||
lda Z8C
|
||||
ldy Z8C+1
|
||||
.endif
|
||||
L2A67:
|
||||
sta CURLIN
|
||||
sty CURLIN+1
|
||||
@@ -53,8 +42,6 @@ RTS20:
|
||||
; ----------------------------------------------------------------------------
|
||||
; "GET" STATEMENT
|
||||
; ----------------------------------------------------------------------------
|
||||
.ifndef CONFIG_SMALL
|
||||
.ifndef SYM1
|
||||
GET:
|
||||
jsr ERRDIR
|
||||
; CBM: if GET#, then switch input
|
||||
@@ -71,12 +58,8 @@ LCAB6:
|
||||
.endif
|
||||
ldx #<(INPUTBUFFER+1)
|
||||
ldy #>(INPUTBUFFER+1)
|
||||
.ifdef CONFIG_NO_INPUTBUFFER_ZP
|
||||
lda #$00
|
||||
sta INPUTBUFFER+1
|
||||
.else
|
||||
sty INPUTBUFFER+1
|
||||
.endif
|
||||
lda #$40
|
||||
jsr PROCESS_INPUT_LIST
|
||||
; CBM: if GET#, then switch input back
|
||||
@@ -85,8 +68,6 @@ LCAB6:
|
||||
bne LCAD8
|
||||
.endif
|
||||
rts
|
||||
.endif
|
||||
.endif
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
; "INPUT#" STATEMENT
|
||||
@@ -109,30 +90,13 @@ LCAD8:
|
||||
LCAE0:
|
||||
.endif
|
||||
|
||||
.ifdef SYM1
|
||||
LC9B0:
|
||||
jsr OUTQUES ; '?'
|
||||
jsr OUTSP
|
||||
jmp L2A9E
|
||||
.endif
|
||||
; ----------------------------------------------------------------------------
|
||||
; "INPUT" STATEMENT
|
||||
; ----------------------------------------------------------------------------
|
||||
INPUT:
|
||||
.ifndef KBD
|
||||
lsr Z14
|
||||
.endif
|
||||
.ifdef AIM65
|
||||
lda PRIFLG
|
||||
sta ZBE
|
||||
jsr LCFFA
|
||||
.endif
|
||||
cmp #$22
|
||||
.ifdef SYM1
|
||||
bne LC9B0
|
||||
.else
|
||||
bne L2A9E
|
||||
.endif
|
||||
jsr STRTXT
|
||||
lda #$3B
|
||||
jsr SYNCHR
|
||||
@@ -142,16 +106,7 @@ L2A9E:
|
||||
lda #$2C
|
||||
sta INPUTBUFFER-1
|
||||
LCAF8:
|
||||
.ifdef APPLE
|
||||
jsr INLINX
|
||||
.elseif .def(SYM1)
|
||||
jsr INLIN
|
||||
.else
|
||||
jsr NXIN
|
||||
.endif
|
||||
.ifdef KBD
|
||||
bmi L2ABE
|
||||
.else
|
||||
.ifdef CONFIG_FILE
|
||||
lda CURDVC
|
||||
beq LCB0C
|
||||
@@ -168,21 +123,10 @@ LCB0C:
|
||||
lda CURDVC
|
||||
bne LCAF8
|
||||
.endif
|
||||
.ifdef CONFIG_CBM1_PATCHES
|
||||
jmp PATCH1
|
||||
.else
|
||||
clc
|
||||
jmp CONTROL_C_TYPED
|
||||
.endif
|
||||
.endif
|
||||
|
||||
NXIN:
|
||||
.ifdef KBD
|
||||
jsr INLIN
|
||||
bmi RTS20
|
||||
pla
|
||||
jmp LE86C
|
||||
.else
|
||||
.ifdef CONFIG_FILE
|
||||
lda CURDVC
|
||||
bne LCB21
|
||||
@@ -191,17 +135,6 @@ NXIN:
|
||||
jsr OUTSP
|
||||
LCB21:
|
||||
jmp INLIN
|
||||
.endif
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
; "GETC" STATEMENT
|
||||
; ----------------------------------------------------------------------------
|
||||
.ifdef KBD
|
||||
GETC:
|
||||
jsr CONINT
|
||||
jsr LF43D
|
||||
jmp LE664
|
||||
.endif
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
; "READ" STATEMENT
|
||||
@@ -209,17 +142,11 @@ GETC:
|
||||
READ:
|
||||
ldx DATPTR
|
||||
ldy DATPTR+1
|
||||
.ifdef CONFIG_NO_READ_Y_IS_ZERO_HACK
|
||||
; AppleSoft II, too
|
||||
lda #$98 ; READ
|
||||
.byte $2C
|
||||
L2ABE:
|
||||
lda #$00 ; INPUT
|
||||
.else
|
||||
.byte $A9 ; LDA #$98
|
||||
L2ABE:
|
||||
tya
|
||||
.endif
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
; PROCESS INPUT LIST
|
||||
@@ -248,19 +175,8 @@ PROCESS_INPUT_ITEM:
|
||||
jsr CHRGOT
|
||||
bne INSTART
|
||||
bit INPUTFLG
|
||||
.ifndef CONFIG_SMALL ; GET
|
||||
.ifndef SYM1
|
||||
bvc L2AF0
|
||||
.ifdef MICROTAN
|
||||
jsr MONRDKEY2
|
||||
.elseif .def(AIM65)
|
||||
jsr MONRDKEY2
|
||||
.else
|
||||
jsr MONRDKEY
|
||||
.endif
|
||||
.ifdef CONFIG_IO_MSB
|
||||
and #$7F
|
||||
.endif
|
||||
sta INPUTBUFFER
|
||||
; BUG: The beq/bne L2AF8 below is supposed
|
||||
; to be always taken. For this to happen,
|
||||
@@ -275,31 +191,16 @@ PROCESS_INPUT_ITEM:
|
||||
; Microsoft fixed this somewhere after KIM
|
||||
; and before MICROTAN, by using beq instead
|
||||
; of bne in the ZP case.
|
||||
.ifdef CBM1
|
||||
ldy #>(INPUTBUFFER-1)
|
||||
ldx #<(INPUTBUFFER-1)
|
||||
.else
|
||||
ldx #<(INPUTBUFFER-1)
|
||||
ldy #>(INPUTBUFFER-1)
|
||||
.endif
|
||||
.if .def(CONFIG_2) && (!.def(CONFIG_NO_INPUTBUFFER_ZP))
|
||||
beq L2AF8 ; always
|
||||
.else
|
||||
bne L2AF8 ; always
|
||||
.endif
|
||||
L2AF0:
|
||||
.endif
|
||||
.endif
|
||||
bmi FINDATA
|
||||
.ifdef CONFIG_FILE
|
||||
lda CURDVC
|
||||
bne LCB64
|
||||
.endif
|
||||
.ifdef KBD
|
||||
jsr OUTQUESSP
|
||||
.else
|
||||
jsr OUTQUES
|
||||
.endif
|
||||
LCB64:
|
||||
jsr NXIN
|
||||
L2AF8:
|
||||
@@ -311,24 +212,14 @@ INSTART:
|
||||
jsr CHRGET
|
||||
bit VALTYP
|
||||
bpl L2B34
|
||||
.ifndef CONFIG_SMALL ; GET
|
||||
.ifndef SYM1
|
||||
bit INPUTFLG
|
||||
bvc L2B10
|
||||
.ifdef CONFIG_CBM1_PATCHES
|
||||
lda #$00
|
||||
jsr PATCH4
|
||||
nop
|
||||
.else
|
||||
inx
|
||||
stx TXTPTR
|
||||
lda #$00
|
||||
sta CHARAC
|
||||
beq L2B1C
|
||||
.endif
|
||||
L2B10:
|
||||
.endif
|
||||
.endif
|
||||
sta CHARAC
|
||||
cmp #$22
|
||||
beq L2B1D
|
||||
@@ -347,21 +238,13 @@ L2B1D:
|
||||
L2B28:
|
||||
jsr STRLT2
|
||||
jsr POINT
|
||||
.ifdef CONFIG_SMALL
|
||||
jsr LETSTRING
|
||||
.else
|
||||
jsr PUTSTR
|
||||
.endif
|
||||
jmp INPUT_MORE
|
||||
; ----------------------------------------------------------------------------
|
||||
L2B34:
|
||||
jsr FIN
|
||||
.ifdef CONFIG_SMALL
|
||||
jsr SETFOR
|
||||
.else
|
||||
lda VALTYP+1
|
||||
jsr LET2
|
||||
.endif
|
||||
; ----------------------------------------------------------------------------
|
||||
INPUT_MORE:
|
||||
jsr CHRGOT
|
||||
@@ -411,17 +294,10 @@ INPDONE:
|
||||
lda INPTR
|
||||
ldy INPTR+1
|
||||
ldx INPUTFLG
|
||||
.if .def(CONFIG_SMALL) && (!.def(CONFIG_11))
|
||||
beq L2B94 ; INPUT
|
||||
.else
|
||||
bpl L2B94; INPUT or GET
|
||||
.endif
|
||||
jmp SETDA
|
||||
L2B94:
|
||||
ldy #$00
|
||||
.ifdef AIM65
|
||||
jsr LB8B1
|
||||
.endif
|
||||
lda (INPTR),y
|
||||
beq L2BA1
|
||||
.ifdef CONFIG_FILE
|
||||
@@ -436,24 +312,8 @@ L2BA1:
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
ERREXTRA:
|
||||
.ifdef KBD
|
||||
.byte "?Extra"
|
||||
.else
|
||||
.byte "?EXTRA IGNORED"
|
||||
.endif
|
||||
.byte $0D,$0A,$00
|
||||
ERRREENTRY:
|
||||
.ifdef KBD
|
||||
.byte "What?"
|
||||
.else
|
||||
.byte "?REDO FROM START"
|
||||
.endif
|
||||
.byte $0D,$0A,$00
|
||||
.ifdef KBD
|
||||
LEA30:
|
||||
.byte "B"
|
||||
.byte $FD
|
||||
.byte "GsBASIC"
|
||||
.byte $00,$1B,$0D,$13
|
||||
.byte " BASIC"
|
||||
.endif
|
||||
@@ -1,33 +0,0 @@
|
||||
.segment "EXTRA"
|
||||
.export MONRDKEY, MONCOUT, LOAD; SAVE; ISCNTC
|
||||
|
||||
LOAD:
|
||||
rts
|
||||
|
||||
SAVE:
|
||||
rts
|
||||
|
||||
ISCNTC:
|
||||
lda $BC01
|
||||
cmp #$03
|
||||
beq @break
|
||||
rts
|
||||
@break:
|
||||
jmp STOP
|
||||
|
||||
MONRDKEY:
|
||||
lda $BC01
|
||||
bmi @skipped
|
||||
sta $BC00 ; echo
|
||||
@skipped:
|
||||
rts
|
||||
|
||||
MONCOUT:
|
||||
sta $BC00
|
||||
|
||||
rts
|
||||
|
||||
.segment "RESETVEC"
|
||||
.word $0000 ; NMI vector
|
||||
.word RESET ; RESET vector
|
||||
.word $0000 ; IRQ vector
|
||||
+1
-15
@@ -1,17 +1,3 @@
|
||||
.segment "CODE"
|
||||
|
||||
.ifdef APPLE
|
||||
.include "apple_loadsave.s"
|
||||
.endif
|
||||
.ifdef KIM
|
||||
.include "kim_loadsave.s"
|
||||
.endif
|
||||
.ifdef MICROTAN
|
||||
.include "microtan_loadsave.s"
|
||||
.endif
|
||||
.ifdef AIM65
|
||||
.include "aim65_loadsave.s"
|
||||
.endif
|
||||
.ifdef SYM1
|
||||
.include "sym1_loadsave.s"
|
||||
.endif
|
||||
; None yet
|
||||
+3
-47
@@ -3,58 +3,14 @@
|
||||
.segment "CODE"
|
||||
|
||||
QT_ERROR:
|
||||
.ifdef KBD
|
||||
.byte " err"
|
||||
.else
|
||||
.ifdef APPLE
|
||||
.byte " ERR"
|
||||
.byte $07,$07
|
||||
.else
|
||||
.byte " ERROR"
|
||||
.endif
|
||||
.endif
|
||||
.byte 0
|
||||
|
||||
.ifndef KBD
|
||||
QT_IN:
|
||||
.byte " IN "
|
||||
.byte $00
|
||||
.endif
|
||||
|
||||
.ifdef KBD
|
||||
.byte $54,$D2 ; ???
|
||||
OKPRT:
|
||||
jsr PRIMM
|
||||
.byte CR,CR,">>",CR,LF
|
||||
.byte 0
|
||||
rts
|
||||
nop
|
||||
.else
|
||||
.ifndef AIM65
|
||||
QT_OK:
|
||||
.ifdef CONFIG_CBM_ALL
|
||||
.byte CR,LF,"READY.",CR,LF
|
||||
.else
|
||||
.ifdef APPLE
|
||||
; binary patch!
|
||||
.byte CR,0,0,"K",CR,LF
|
||||
.else
|
||||
.byte CR,LF,"OK",CR,LF
|
||||
.endif
|
||||
.endif
|
||||
.byte 0
|
||||
.endif
|
||||
.endif
|
||||
.byte CR,LF,"OK",CR,LF
|
||||
.byte 0
|
||||
QT_BREAK:
|
||||
|
||||
.ifdef KBD
|
||||
.byte CR,LF," Brk"
|
||||
.byte CR,LF,"BREAK"
|
||||
.byte 0
|
||||
.byte $54,$D0 ; ???
|
||||
.elseif .def(MICROTAN) || .def(AIM65)
|
||||
.byte CR,LF," BREAK"
|
||||
.byte 0
|
||||
.else
|
||||
.byte CR,LF,"BREAK"
|
||||
.byte 0
|
||||
.endif
|
||||
-72
@@ -60,10 +60,8 @@ LET:
|
||||
sty FORPNT+1
|
||||
lda #TOKEN_EQUAL
|
||||
jsr SYNCHR
|
||||
.ifndef CONFIG_SMALL
|
||||
lda VALTYP+1
|
||||
pha
|
||||
.endif
|
||||
lda VALTYP
|
||||
pha
|
||||
jsr FRMEVL
|
||||
@@ -71,7 +69,6 @@ LET:
|
||||
rol a
|
||||
jsr CHKVAL
|
||||
bne LETSTRING
|
||||
.ifndef CONFIG_SMALL
|
||||
pla
|
||||
LET2:
|
||||
bpl L2923
|
||||
@@ -85,79 +82,18 @@ LET2:
|
||||
sta (FORPNT),y
|
||||
rts
|
||||
L2923:
|
||||
.endif
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
; REAL VARIABLE = EXPRESSION
|
||||
; ----------------------------------------------------------------------------
|
||||
jmp SETFOR
|
||||
LETSTRING:
|
||||
.ifndef CONFIG_SMALL
|
||||
pla
|
||||
.endif
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
; INSTALL STRING, DESCRIPTOR ADDRESS IS AT FAC+3,4
|
||||
; ----------------------------------------------------------------------------
|
||||
PUTSTR:
|
||||
.ifdef CONFIG_CBM_ALL
|
||||
ldy FORPNT+1
|
||||
.ifdef CBM1
|
||||
cpy #$D0 ; TI$
|
||||
.else
|
||||
cpy #$DE
|
||||
.endif
|
||||
bne LC92B
|
||||
jsr FREFAC
|
||||
cmp #$06
|
||||
.ifdef CBM2
|
||||
bne IQERR1
|
||||
.else
|
||||
jne IQERR
|
||||
.endif
|
||||
ldy #$00
|
||||
sty FAC
|
||||
sty FACSIGN
|
||||
LC8E8:
|
||||
sty STRNG2
|
||||
jsr LC91C
|
||||
jsr MUL10
|
||||
inc STRNG2
|
||||
ldy STRNG2
|
||||
jsr LC91C
|
||||
jsr COPY_FAC_TO_ARG_ROUNDED
|
||||
tax
|
||||
beq LC902
|
||||
inx
|
||||
txa
|
||||
jsr LD9BF
|
||||
LC902:
|
||||
ldy STRNG2
|
||||
iny
|
||||
cpy #$06
|
||||
bne LC8E8
|
||||
jsr MUL10
|
||||
jsr QINT
|
||||
ldx #$02
|
||||
sei
|
||||
LC912:
|
||||
lda FAC+2,x
|
||||
sta TISTR,x
|
||||
dex
|
||||
bpl LC912
|
||||
cli
|
||||
rts
|
||||
LC91C:
|
||||
lda (INDEX),y
|
||||
jsr CHRGOT2
|
||||
bcc LC926
|
||||
IQERR1:
|
||||
jmp IQERR
|
||||
LC926:
|
||||
sbc #$2F
|
||||
jmp ADDACC
|
||||
LC92B:
|
||||
.endif
|
||||
ldy #$02
|
||||
lda (FAC_LAST-1),y
|
||||
cmp FRETOP+1
|
||||
@@ -205,14 +141,6 @@ L2963:
|
||||
sta (FORPNT),y
|
||||
RET5:
|
||||
rts
|
||||
.ifdef AIM65
|
||||
LB89D:
|
||||
cmp #$21
|
||||
bne RET5
|
||||
lda #$80
|
||||
sta PRIFLG
|
||||
jmp CHRGET
|
||||
.endif
|
||||
|
||||
.ifdef CONFIG_FILE
|
||||
PRINTH:
|
||||
|
||||
-16
@@ -49,11 +49,9 @@ ERRDIR:
|
||||
inx
|
||||
bne RTS9
|
||||
ldx #ERR_ILLDIR
|
||||
.ifdef CONFIG_2
|
||||
.byte $2C
|
||||
LD288:
|
||||
ldx #ERR_UNDEFFN
|
||||
.endif
|
||||
L31AF:
|
||||
jmp ERROR
|
||||
DEF:
|
||||
@@ -67,9 +65,7 @@ DEF:
|
||||
jsr CHKCLS
|
||||
lda #TOKEN_EQUAL
|
||||
jsr SYNCHR
|
||||
.ifndef CONFIG_SMALL
|
||||
pha
|
||||
.endif
|
||||
lda VARPNT+1
|
||||
pha
|
||||
lda VARPNT
|
||||
@@ -102,24 +98,14 @@ L31F3:
|
||||
pla
|
||||
sta FNCNAM+1
|
||||
ldy #$02
|
||||
.ifndef CONFIG_2
|
||||
ldx #ERR_UNDEFFN
|
||||
.endif
|
||||
lda (FNCNAM),y
|
||||
.ifndef CONFIG_2
|
||||
beq L31AF
|
||||
.endif
|
||||
sta VARPNT
|
||||
tax
|
||||
iny
|
||||
lda (FNCNAM),y
|
||||
.ifdef CONFIG_2
|
||||
beq LD288
|
||||
.endif
|
||||
sta VARPNT+1
|
||||
.ifndef CONFIG_SMALL
|
||||
iny
|
||||
.endif
|
||||
L3219:
|
||||
lda (VARPNT),y
|
||||
pha
|
||||
@@ -166,9 +152,7 @@ L3250:
|
||||
pla
|
||||
iny
|
||||
sta (FNCNAM),y
|
||||
.ifndef CONFIG_SMALL
|
||||
pla
|
||||
iny
|
||||
sta (FNCNAM),y
|
||||
.endif
|
||||
rts
|
||||
-76
@@ -1,76 +0,0 @@
|
||||
; KBD specific patches
|
||||
|
||||
.segment "CODE"
|
||||
|
||||
.ifdef KBD
|
||||
VARTAB_MINUS_2_TO_AY:
|
||||
lda VARTAB
|
||||
sec
|
||||
sbc #$02
|
||||
ldy VARTAB+1
|
||||
bcs LF42C
|
||||
dey
|
||||
LF42C:
|
||||
rts
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
GET_UPPER:
|
||||
lda INPUTBUFFERX,x
|
||||
LF430:
|
||||
cmp #'a'
|
||||
bcc LF43A
|
||||
cmp #'z'+1
|
||||
bcs LF43A
|
||||
LF438:
|
||||
sbc #$1F
|
||||
LF43A:
|
||||
rts
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
GETLN:
|
||||
ldx #$5D
|
||||
LF43D:
|
||||
txa
|
||||
and #$7F
|
||||
cmp $0340
|
||||
beq LF44D
|
||||
sta $0340
|
||||
lda #$03
|
||||
jsr LDE48
|
||||
LF44D:
|
||||
jsr LDE7F
|
||||
bne RTS4
|
||||
cpx #$80
|
||||
bcc LF44D
|
||||
RTS4:
|
||||
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 LINNUM+1
|
||||
bne LF472
|
||||
lda (JMPADRS+1),y
|
||||
cmp LINNUM
|
||||
LF472:
|
||||
bcs LF43A
|
||||
dey
|
||||
lda (JMPADRS+1),y
|
||||
tax
|
||||
dey
|
||||
lda (JMPADRS+1),y
|
||||
bcc LF45B
|
||||
LF47D:
|
||||
jmp (JMPADRS+1)
|
||||
.endif
|
||||
@@ -24,7 +24,6 @@
|
||||
.include "array.s"
|
||||
.include "misc2.s"
|
||||
.include "string.s"
|
||||
.include "misc3.s"
|
||||
.include "poke.s"
|
||||
.include "float.s"
|
||||
.include "chrget.s"
|
||||
|
||||
-33
@@ -1,6 +1,5 @@
|
||||
.segment "CODE"
|
||||
|
||||
.ifndef CONFIG_NO_POKE
|
||||
; ----------------------------------------------------------------------------
|
||||
; EVALUATE "EXP1,EXP2"
|
||||
;
|
||||
@@ -24,12 +23,7 @@ COMBYTE:
|
||||
; ----------------------------------------------------------------------------
|
||||
GETADR:
|
||||
lda FACSIGN
|
||||
.ifdef APPLE
|
||||
nop ; PATCH
|
||||
nop
|
||||
.else
|
||||
bmi GOIQ
|
||||
.endif
|
||||
lda FAC
|
||||
cmp #$91
|
||||
bcs GOIQ
|
||||
@@ -44,40 +38,18 @@ GETADR:
|
||||
; "PEEK" FUNCTION
|
||||
; ----------------------------------------------------------------------------
|
||||
PEEK:
|
||||
.ifdef CONFIG_PEEK_SAVE_LINNUM
|
||||
lda LINNUM+1
|
||||
pha
|
||||
lda LINNUM
|
||||
pha
|
||||
.endif
|
||||
jsr GETADR
|
||||
ldy #$00
|
||||
.ifdef CBM1
|
||||
; disallow PEEK between $C000 and $DFFF
|
||||
cmp #$C0
|
||||
bcc LD6F3
|
||||
cmp #$E1
|
||||
bcc LD6F6
|
||||
LD6F3:
|
||||
.endif
|
||||
.ifdef CBM2
|
||||
nop ; patch that disables the compares above
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
.endif
|
||||
lda (LINNUM),y
|
||||
tay
|
||||
.ifdef CONFIG_PEEK_SAVE_LINNUM
|
||||
pla
|
||||
sta LINNUM
|
||||
pla
|
||||
sta LINNUM+1
|
||||
.endif
|
||||
LD6F6:
|
||||
jmp SNGFLT
|
||||
|
||||
@@ -99,11 +71,7 @@ WAIT:
|
||||
stx FORPNT
|
||||
ldx #$00
|
||||
jsr CHRGOT
|
||||
.ifdef CONFIG_EASTER_EGG
|
||||
beq EASTER_EGG
|
||||
.else
|
||||
beq L3628
|
||||
.endif
|
||||
jsr COMBYTE
|
||||
L3628:
|
||||
stx FORPNT+1
|
||||
@@ -115,4 +83,3 @@ L362C:
|
||||
beq L362C
|
||||
RTS3:
|
||||
rts
|
||||
.endif
|
||||
+2
-250
@@ -1,16 +1,5 @@
|
||||
.segment "CODE"
|
||||
|
||||
.ifdef AIM65
|
||||
PRINT:
|
||||
lda PRIFLG
|
||||
sta ZBE
|
||||
jsr L297E
|
||||
LB8B1:
|
||||
lda ZBE
|
||||
sta PRIFLG
|
||||
rts
|
||||
.endif
|
||||
|
||||
PRSTRING:
|
||||
jsr STRPRT
|
||||
L297E:
|
||||
@@ -19,30 +8,16 @@ L297E:
|
||||
; ----------------------------------------------------------------------------
|
||||
; "PRINT" STATEMENT
|
||||
; ----------------------------------------------------------------------------
|
||||
.ifndef AIM65
|
||||
PRINT:
|
||||
.endif
|
||||
beq CRDO
|
||||
PRINT2:
|
||||
beq L29DD
|
||||
.ifdef AIM65
|
||||
jsr LB89D
|
||||
beq L29DD
|
||||
.endif
|
||||
cmp #TOKEN_TAB
|
||||
beq L29F5
|
||||
cmp #TOKEN_SPC
|
||||
.ifdef CONFIG_2
|
||||
clc ; also AppleSoft II
|
||||
.endif
|
||||
beq L29F5
|
||||
cmp #','
|
||||
; Pre-KIM had no CLC. KIM added the CLC
|
||||
; here. Post-KIM moved the CLC up...
|
||||
; (makes no sense on KIM, liveness = 0)
|
||||
.if .def(CONFIG_11A) && (!.def(CONFIG_2))
|
||||
clc
|
||||
.endif
|
||||
beq L29DE
|
||||
cmp #$3B
|
||||
beq L2A0D
|
||||
@@ -51,216 +26,77 @@ PRINT2:
|
||||
bmi PRSTRING
|
||||
jsr FOUT
|
||||
jsr STRLIT
|
||||
.ifndef CONFIG_NO_CR
|
||||
ldy #$00
|
||||
lda (FAC_LAST-1),y
|
||||
clc
|
||||
adc POSX
|
||||
.ifdef KBD
|
||||
cmp #$28
|
||||
.else
|
||||
cmp Z17
|
||||
.endif
|
||||
bcc L29B1
|
||||
jsr CRDO
|
||||
L29B1:
|
||||
.endif
|
||||
jsr STRPRT
|
||||
.ifdef KBD
|
||||
jmp L297E
|
||||
.else
|
||||
jsr OUTSP
|
||||
bne L297E ; branch always
|
||||
.endif
|
||||
|
||||
.ifdef KBD
|
||||
; PATCHES
|
||||
LE86C:
|
||||
pla
|
||||
jmp CONTROL_C_TYPED
|
||||
LE870:
|
||||
jsr GETBYT
|
||||
txa
|
||||
LE874:
|
||||
beq LE878
|
||||
bpl LE8F2
|
||||
LE878:
|
||||
jmp IQERR
|
||||
; PATCHES
|
||||
.endif
|
||||
|
||||
|
||||
|
||||
.ifndef KBD
|
||||
L29B9:
|
||||
.ifdef CONFIG_INPUTBUFFER_0200
|
||||
lda #$00
|
||||
sta INPUTBUFFER,x
|
||||
ldx #<(INPUTBUFFER-1)
|
||||
ldy #>(INPUTBUFFER-1)
|
||||
.else
|
||||
.ifndef APPLE
|
||||
ldy #$00
|
||||
sty INPUTBUFFER,x
|
||||
ldx #LINNUM+1
|
||||
.endif
|
||||
.if .def(MICROTAN) || .def(SYM1)
|
||||
bne CRDO2
|
||||
.endif
|
||||
.endif
|
||||
.ifdef CONFIG_FILE
|
||||
lda CURDVC
|
||||
bne L29DD
|
||||
.endif
|
||||
.endif
|
||||
|
||||
|
||||
CRDO:
|
||||
.if .def(CONFIG_PRINTNULLS) && .def(CONFIG_FILE)
|
||||
lda CURDVC
|
||||
bne LC9D8
|
||||
lda #CR
|
||||
sta POSX
|
||||
LC9D8:
|
||||
.endif
|
||||
lda #CRLF_1
|
||||
.ifndef CONFIG_CBM_ALL
|
||||
sta POSX
|
||||
.endif
|
||||
jsr OUTDO
|
||||
CRDO2:
|
||||
lda #CRLF_2
|
||||
lda #LF
|
||||
jsr OUTDO
|
||||
|
||||
PRINTNULLS:
|
||||
.if .def(KBD) || .def(AIM65)
|
||||
lda #$00
|
||||
sta POSX
|
||||
eor #$FF
|
||||
.else
|
||||
.if .def(CONFIG_NULL) || .def(CONFIG_PRINTNULLS)
|
||||
.ifdef CONFIG_FILE
|
||||
; Although there is no statement for it,
|
||||
; CBM1 had NULL support and ignores
|
||||
; it when not targeting the screen,
|
||||
; CBM2 dropped it completely.
|
||||
lda CURDVC
|
||||
bne L29DD
|
||||
.endif
|
||||
txa
|
||||
pha
|
||||
ldx Z15
|
||||
beq L29D9
|
||||
.ifdef SYM1
|
||||
lda #$FF
|
||||
.else
|
||||
lda #$00
|
||||
.endif
|
||||
L29D3:
|
||||
jsr OUTDO
|
||||
dex
|
||||
bne L29D3
|
||||
L29D9:
|
||||
stx POSX
|
||||
pla
|
||||
tax
|
||||
.else
|
||||
.ifndef CONFIG_2
|
||||
lda #$00
|
||||
sta POSX
|
||||
.endif
|
||||
eor #$FF
|
||||
.endif
|
||||
.endif
|
||||
L29DD:
|
||||
rts
|
||||
L29DE:
|
||||
lda POSX
|
||||
.ifndef CONFIG_NO_CR
|
||||
.ifdef KBD
|
||||
cmp #$1A
|
||||
.else
|
||||
cmp Z18
|
||||
.endif
|
||||
bcc L29EA
|
||||
jsr CRDO
|
||||
jmp L2A0D
|
||||
L29EA:
|
||||
.endif
|
||||
sec
|
||||
L29EB:
|
||||
.if .def(CONFIG_CBM_ALL) || .def(AIM65)
|
||||
sbc #$0A
|
||||
.else
|
||||
.ifdef KBD
|
||||
sbc #$0D
|
||||
.else
|
||||
sbc #$0E
|
||||
.endif
|
||||
.endif
|
||||
bcs L29EB
|
||||
eor #$FF
|
||||
adc #$01
|
||||
bne L2A08
|
||||
L29F5:
|
||||
.ifdef CONFIG_11A
|
||||
php
|
||||
.else
|
||||
pha
|
||||
.endif
|
||||
jsr GTBYTC
|
||||
cmp #')'
|
||||
.ifdef CONFIG_11A
|
||||
.ifdef CONFIG_2
|
||||
bne SYNERR4
|
||||
.else
|
||||
jne SYNERR
|
||||
.endif
|
||||
plp
|
||||
bcc L2A09
|
||||
.else
|
||||
.ifdef CONFIG_11
|
||||
jne SYNERR
|
||||
.else
|
||||
bne SYNERR4
|
||||
.endif
|
||||
pla
|
||||
cmp #TOKEN_TAB
|
||||
.ifdef CONFIG_11
|
||||
bne L2A09
|
||||
.else
|
||||
bne L2A0A
|
||||
.endif
|
||||
.endif
|
||||
txa
|
||||
sbc POSX
|
||||
bcc L2A0D
|
||||
.ifndef CONFIG_11
|
||||
beq L2A0D
|
||||
.endif
|
||||
L2A08:
|
||||
tax
|
||||
.ifdef CONFIG_11
|
||||
L2A09:
|
||||
inx
|
||||
.endif
|
||||
L2A0A:
|
||||
.ifndef CONFIG_11
|
||||
jsr OUTSP
|
||||
.endif
|
||||
dex
|
||||
.ifndef CONFIG_11
|
||||
bne L2A0A
|
||||
.else
|
||||
bne L2A13
|
||||
.endif
|
||||
L2A0D:
|
||||
jsr CHRGET
|
||||
jmp PRINT2
|
||||
.ifdef CONFIG_11
|
||||
L2A13:
|
||||
jsr OUTSP
|
||||
bne L2A0A
|
||||
.endif
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
; PRINT STRING AT (Y,A)
|
||||
@@ -289,7 +125,6 @@ L2A22:
|
||||
; ----------------------------------------------------------------------------
|
||||
OUTSP:
|
||||
.ifdef CONFIG_FILE
|
||||
.ifndef CBM1
|
||||
; on non-screen devices, print SPACE
|
||||
; instead of CRSR RIGHT
|
||||
lda CURDVC
|
||||
@@ -297,7 +132,6 @@ OUTSP:
|
||||
lda #$20
|
||||
.byte $2C
|
||||
LCA40:
|
||||
.endif
|
||||
lda #$1D ; CRSR RIGHT
|
||||
.else
|
||||
lda #$20
|
||||
@@ -310,101 +144,19 @@ OUTQUES:
|
||||
; PRINT CHAR FROM (A)
|
||||
; ----------------------------------------------------------------------------
|
||||
OUTDO:
|
||||
.ifndef KBD
|
||||
bit Z14
|
||||
bmi L2A56
|
||||
.endif
|
||||
.if .def(CONFIG_PRINT_CR) || .def(CBM1)
|
||||
; Commodore forgot to remove this in CBM1
|
||||
pha
|
||||
.endif
|
||||
.ifdef CBM1
|
||||
cmp #$1D ; CRSR RIGHT
|
||||
beq LCA6A
|
||||
cmp #$9D ; CRSR LEFT
|
||||
beq LCA5A
|
||||
cmp #$14 ; DEL
|
||||
bne LCA64
|
||||
LCA5A:
|
||||
lda POSX
|
||||
beq L2A4E
|
||||
lda CURDVC
|
||||
bne L2A4E
|
||||
dec POSX
|
||||
LCA64:
|
||||
and #$7F
|
||||
.endif
|
||||
.ifndef CBM2
|
||||
cmp #$20
|
||||
bcc L2A4E
|
||||
.endif
|
||||
LCA6A:
|
||||
.ifdef CONFIG_CBM1_PATCHES
|
||||
lda CURDVC
|
||||
jsr PATCH6
|
||||
nop
|
||||
.endif
|
||||
.ifdef CONFIG_PRINT_CR
|
||||
lda POSX
|
||||
cmp Z17
|
||||
bne L2A4C
|
||||
.ifdef AIM65
|
||||
lda #$00
|
||||
sta POSX
|
||||
.elseif .def(APPLE)
|
||||
nop ; PATCH!
|
||||
nop ; don't print CR
|
||||
nop
|
||||
.else
|
||||
jsr CRDO
|
||||
.endif
|
||||
L2A4C:
|
||||
.endif
|
||||
.ifndef CONFIG_CBM_ALL
|
||||
inc POSX
|
||||
.endif
|
||||
L2A4E:
|
||||
.if .def(CONFIG_PRINT_CR) || .def(CBM1)
|
||||
; Commodore forgot to remove this in CBM1
|
||||
pla
|
||||
.endif
|
||||
.ifdef CONFIG_MONCOUT_DESTROYS_Y
|
||||
sty DIMFLG
|
||||
.endif
|
||||
.ifdef CONFIG_IO_MSB
|
||||
ora #$80
|
||||
.endif
|
||||
jsr MONCOUT
|
||||
.ifdef CONFIG_IO_MSB
|
||||
and #$7F
|
||||
.endif
|
||||
.ifdef CONFIG_MONCOUT_DESTROYS_Y
|
||||
ldy DIMFLG
|
||||
.endif
|
||||
.ifdef OSI
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
.endif
|
||||
L2A56:
|
||||
and #$FF
|
||||
LE8F2:
|
||||
rts
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
; ???
|
||||
; ----------------------------------------------------------------------------
|
||||
.ifdef KBD
|
||||
LE8F3:
|
||||
pha
|
||||
lda $047F
|
||||
clc
|
||||
beq LE900
|
||||
lda #$00
|
||||
sta $047F
|
||||
sec
|
||||
LE900:
|
||||
pla
|
||||
rts
|
||||
.endif
|
||||
+2
-280
@@ -32,22 +32,12 @@ LC366:
|
||||
jsr OUTQUES
|
||||
L2329:
|
||||
lda ERROR_MESSAGES,x
|
||||
.ifndef CONFIG_SMALL_ERROR
|
||||
pha
|
||||
and #$7F
|
||||
.endif
|
||||
jsr OUTDO
|
||||
.ifdef CONFIG_SMALL_ERROR
|
||||
lda ERROR_MESSAGES+1,x
|
||||
.ifdef KBD
|
||||
and #$7F
|
||||
.endif
|
||||
jsr OUTDO
|
||||
.else
|
||||
inx
|
||||
pla
|
||||
bpl L2329
|
||||
.endif
|
||||
jsr STKINI
|
||||
lda #<QT_ERROR
|
||||
ldy #>QT_ERROR
|
||||
@@ -68,45 +58,20 @@ PRINT_ERROR_LINNUM:
|
||||
; WARM RESTART ENTRY
|
||||
; ----------------------------------------------------------------------------
|
||||
RESTART:
|
||||
.ifdef KBD
|
||||
jsr CRDO
|
||||
nop
|
||||
L2351X:
|
||||
jsr OKPRT
|
||||
L2351:
|
||||
jsr INLIN
|
||||
LE28E:
|
||||
bpl RESTART
|
||||
.else
|
||||
lsr Z14
|
||||
.ifndef AIM65
|
||||
lda #<QT_OK
|
||||
ldy #>QT_OK
|
||||
.ifdef CONFIG_CBM_ALL
|
||||
jsr STROUT
|
||||
.else
|
||||
jsr GOSTROUT
|
||||
.endif
|
||||
.else
|
||||
jsr GORESTART
|
||||
.endif
|
||||
L2351:
|
||||
jsr INLIN
|
||||
.endif
|
||||
stx TXTPTR
|
||||
sty TXTPTR+1
|
||||
jsr CHRGET
|
||||
.ifdef CONFIG_11
|
||||
; bug in pre-1.1: CHRGET sets Z on '\0'
|
||||
; and ':' - a line starting with ':' in
|
||||
; direct mode gets ignored
|
||||
tax
|
||||
.endif
|
||||
.ifdef KBD
|
||||
beq L2351X
|
||||
.else
|
||||
beq L2351
|
||||
.endif
|
||||
ldx #$FF
|
||||
stx CURLIN+1
|
||||
bcc NUMBERED_LINE
|
||||
@@ -120,57 +85,6 @@ NUMBERED_LINE:
|
||||
jsr LINGET
|
||||
jsr PARSE_INPUT_LINE
|
||||
sty EOLPNTR
|
||||
.ifdef KBD
|
||||
jsr FNDLIN2
|
||||
lda JMPADRS+1
|
||||
sta LOWTR
|
||||
sta Z96
|
||||
lda JMPADRS+2
|
||||
sta LOWTR+1
|
||||
sta Z96+1
|
||||
lda LINNUM
|
||||
sta L06FE
|
||||
lda LINNUM+1
|
||||
sta L06FE+1
|
||||
inc LINNUM
|
||||
bne LE2D2
|
||||
inc LINNUM+1
|
||||
bne LE2D2
|
||||
jmp SYNERR
|
||||
LE2D2:
|
||||
jsr LF457
|
||||
ldx #Z96
|
||||
jsr CMPJMPADRS
|
||||
bcs LE2FD
|
||||
LE2DC:
|
||||
ldx #$00
|
||||
lda (JMPADRS+1,x)
|
||||
sta (Z96,x)
|
||||
inc JMPADRS+1
|
||||
bne LE2E8
|
||||
inc JMPADRS+2
|
||||
LE2E8:
|
||||
inc Z96
|
||||
bne LE2EE
|
||||
inc Z96+1
|
||||
LE2EE:
|
||||
ldx #VARTAB
|
||||
jsr CMPJMPADRS
|
||||
bne LE2DC
|
||||
lda Z96
|
||||
sta VARTAB
|
||||
lda Z96+1
|
||||
sta VARTAB+1
|
||||
LE2FD:
|
||||
jsr SETPTRS
|
||||
jsr LE33D
|
||||
lda INPUTBUFFER
|
||||
LE306:
|
||||
beq LE28E
|
||||
cmp #$A5
|
||||
beq LE306
|
||||
clc
|
||||
.else
|
||||
jsr FNDLIN
|
||||
bcc PUT_NEW_LINE
|
||||
ldy #$01
|
||||
@@ -214,25 +128,13 @@ L23AD:
|
||||
inc DEST+1
|
||||
dex
|
||||
bne L23AD
|
||||
.endif
|
||||
; ----------------------------------------------------------------------------
|
||||
PUT_NEW_LINE:
|
||||
.ifndef KBD
|
||||
.ifdef CONFIG_2
|
||||
jsr SETPTRS
|
||||
jsr LE33D
|
||||
lda INPUTBUFFER
|
||||
beq L2351
|
||||
clc
|
||||
.else
|
||||
lda INPUTBUFFER
|
||||
beq FIX_LINKS
|
||||
lda MEMSIZ
|
||||
ldy MEMSIZ+1
|
||||
sta FRETOP
|
||||
sty FRETOP+1
|
||||
.endif
|
||||
.endif
|
||||
lda VARTAB
|
||||
sta HIGHTR
|
||||
adc EOLPNTR
|
||||
@@ -244,12 +146,10 @@ PUT_NEW_LINE:
|
||||
L23D6:
|
||||
sty HIGHDS+1
|
||||
jsr BLTU
|
||||
.ifdef CONFIG_INPUTBUFFER_0200
|
||||
lda LINNUM
|
||||
ldy LINNUM+1
|
||||
sta INPUTBUFFER-2
|
||||
sty INPUTBUFFER-1
|
||||
.endif
|
||||
lda STREND
|
||||
ldy STREND+1
|
||||
sta VARTAB
|
||||
@@ -269,11 +169,9 @@ L23E6:
|
||||
; ----------------------------------------------------------------------------
|
||||
FIX_LINKS:
|
||||
jsr SETPTRS
|
||||
.ifdef CONFIG_2
|
||||
jsr LE33D
|
||||
jmp L2351
|
||||
LE33D:
|
||||
.endif
|
||||
lda TXTTAB
|
||||
ldy TXTTAB+1
|
||||
sta INDEX
|
||||
@@ -282,11 +180,7 @@ LE33D:
|
||||
L23FA:
|
||||
ldy #$01
|
||||
lda (INDEX),y
|
||||
.ifdef CONFIG_2
|
||||
beq RET3
|
||||
.else
|
||||
jeq L2351
|
||||
.endif
|
||||
ldy #$04
|
||||
L2405:
|
||||
iny
|
||||
@@ -306,16 +200,10 @@ L2405:
|
||||
sta INDEX+1
|
||||
bcc L23FA ; always
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
.ifdef KBD
|
||||
.include "kbd_loadsave.s"
|
||||
.endif
|
||||
|
||||
.ifdef CONFIG_2
|
||||
; !!! kbd_loadsave.s requires an RTS here!
|
||||
RET3:
|
||||
rts
|
||||
.endif
|
||||
|
||||
.include "inline.s"
|
||||
|
||||
@@ -328,14 +216,6 @@ PARSE_INPUT_LINE:
|
||||
sty DATAFLG
|
||||
L246C:
|
||||
lda INPUTBUFFERX,x
|
||||
.ifdef CONFIG_CBM_ALL
|
||||
bpl LC49E
|
||||
cmp #$FF
|
||||
beq L24AC
|
||||
inx
|
||||
bne L246C
|
||||
LC49E:
|
||||
.endif
|
||||
cmp #$20
|
||||
beq L24AC
|
||||
sta ENDCHR
|
||||
@@ -368,15 +248,7 @@ L2496:
|
||||
L2497:
|
||||
inx
|
||||
L2498:
|
||||
.ifdef KBD
|
||||
jsr GET_UPPER
|
||||
.else
|
||||
lda INPUTBUFFERX,x
|
||||
.ifndef CONFIG_2
|
||||
cmp #$20
|
||||
beq L2497
|
||||
.endif
|
||||
.endif
|
||||
sec
|
||||
sbc TOKEN_NAME_TABLE,y
|
||||
beq L2496
|
||||
@@ -437,9 +309,7 @@ L24DB:
|
||||
; ---END OF LINE------------------
|
||||
L24EA:
|
||||
sta INPUTBUFFER-3,y
|
||||
.ifdef CONFIG_NO_INPUTBUFFER_ZP
|
||||
dec TXTPTR+1
|
||||
.endif
|
||||
lda #<(INPUTBUFFER-1)
|
||||
sta TXTPTR
|
||||
rts
|
||||
@@ -454,32 +324,6 @@ L24EA:
|
||||
; LOWTR POINTS AT LINE
|
||||
; ----------------------------------------------------------------------------
|
||||
FNDLIN:
|
||||
.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 LINNUM
|
||||
stx LINNUM+1
|
||||
.else
|
||||
lda TXTTAB
|
||||
ldx TXTTAB+1
|
||||
FL1:
|
||||
@@ -511,7 +355,6 @@ L2516:
|
||||
bcs FL1
|
||||
L251F:
|
||||
clc
|
||||
.endif
|
||||
L2520:
|
||||
rts
|
||||
|
||||
@@ -527,9 +370,7 @@ SCRTCH:
|
||||
iny
|
||||
sta (TXTTAB),y
|
||||
lda TXTTAB
|
||||
.ifdef CONFIG_2
|
||||
clc
|
||||
.endif
|
||||
clc
|
||||
adc #$02
|
||||
sta VARTAB
|
||||
lda TXTTAB+1
|
||||
@@ -538,7 +379,6 @@ SCRTCH:
|
||||
; ----------------------------------------------------------------------------
|
||||
SETPTRS:
|
||||
jsr STXTPT
|
||||
.ifdef CONFIG_11A
|
||||
lda #$00
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
@@ -546,20 +386,11 @@ SETPTRS:
|
||||
; ----------------------------------------------------------------------------
|
||||
CLEAR:
|
||||
bne L256A
|
||||
.endif
|
||||
CLEARC:
|
||||
.ifdef KBD
|
||||
lda #<CONST_MEMSIZ
|
||||
ldy #>CONST_MEMSIZ
|
||||
.else
|
||||
lda MEMSIZ
|
||||
ldy MEMSIZ+1
|
||||
.endif
|
||||
sta FRETOP
|
||||
sty FRETOP+1
|
||||
.ifdef CONFIG_CBM_ALL
|
||||
jsr CLALL
|
||||
.endif
|
||||
lda VARTAB
|
||||
ldy VARTAB+1
|
||||
sta ARYTAB
|
||||
@@ -572,22 +403,13 @@ STKINI:
|
||||
ldx #TEMPST
|
||||
stx TEMPPT
|
||||
pla
|
||||
.ifdef CONFIG_2
|
||||
tay
|
||||
.else
|
||||
sta STACK+STACK_TOP+1
|
||||
.endif
|
||||
tay
|
||||
pla
|
||||
.ifndef CONFIG_2
|
||||
sta STACK+STACK_TOP+2
|
||||
.endif
|
||||
ldx #STACK_TOP
|
||||
txs
|
||||
.ifdef CONFIG_2
|
||||
pha
|
||||
tya
|
||||
pha
|
||||
.endif
|
||||
lda #$00
|
||||
sta OLDTEXT+1
|
||||
sta SUBFLG
|
||||
@@ -607,121 +429,41 @@ STXTPT:
|
||||
sta TXTPTR+1
|
||||
rts
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
.ifdef KBD
|
||||
LE4C0:
|
||||
ldy #<LE444
|
||||
ldx #>LE444
|
||||
LE4C4:
|
||||
jsr LFFD6
|
||||
jsr LFFED
|
||||
lda $0504
|
||||
clc
|
||||
adc #$08
|
||||
sta $0504
|
||||
rts
|
||||
|
||||
CMPJMPADRS:
|
||||
lda 1,x
|
||||
cmp JMPADRS+2
|
||||
bne LE4DE
|
||||
lda 0,x
|
||||
cmp JMPADRS+1
|
||||
LE4DE:
|
||||
rts
|
||||
.endif
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
; "LIST" STATEMENT
|
||||
; ----------------------------------------------------------------------------
|
||||
LIST:
|
||||
.ifdef KBD
|
||||
jsr LE440
|
||||
bne LE4DE
|
||||
pla
|
||||
pla
|
||||
L25A6:
|
||||
jsr CRDO
|
||||
.else
|
||||
.ifdef AIM65
|
||||
pha
|
||||
lda #$00
|
||||
LB4BF:
|
||||
sta INPUTFLG
|
||||
pla
|
||||
.endif
|
||||
.ifdef MICROTAN
|
||||
php
|
||||
jmp LE21C ; patch
|
||||
LC57E:
|
||||
.elseif .def(AIM65) || .def(SYM1)
|
||||
php
|
||||
jsr LINGET
|
||||
LC57E:
|
||||
.else
|
||||
bcc L2581
|
||||
beq L2581
|
||||
cmp #TOKEN_MINUS
|
||||
bne L256A
|
||||
L2581:
|
||||
jsr LINGET
|
||||
.endif
|
||||
jsr FNDLIN
|
||||
.if .def(MICROTAN) || .def(AIM65) || .def(SYM1)
|
||||
plp
|
||||
beq L2598
|
||||
.endif
|
||||
jsr CHRGOT
|
||||
.if .def(MICROTAN) || .def(AIM65) || .def(SYM1)
|
||||
beq L25A6
|
||||
.else
|
||||
beq L2598
|
||||
.endif
|
||||
cmp #TOKEN_MINUS
|
||||
bne L2520
|
||||
jsr CHRGET
|
||||
.if .def(MICROTAN) || .def(AIM65) || .def(SYM1)
|
||||
beq L2598
|
||||
jsr LINGET
|
||||
beq L25A6
|
||||
rts
|
||||
.else
|
||||
jsr LINGET
|
||||
bne L2520
|
||||
.endif
|
||||
L2598:
|
||||
.if !(.def(MICROTAN) || .def(AIM65) || .def(SYM1))
|
||||
pla
|
||||
pla
|
||||
lda LINNUM
|
||||
ora LINNUM+1
|
||||
bne L25A6
|
||||
.endif
|
||||
lda #$FF
|
||||
sta LINNUM
|
||||
sta LINNUM+1
|
||||
L25A6:
|
||||
.if .def(MICROTAN) || .def(AIM65) || .def(SYM1)
|
||||
pla
|
||||
pla
|
||||
.endif
|
||||
L25A6X:
|
||||
.endif
|
||||
ldy #$01
|
||||
.ifdef CONFIG_DATAFLG
|
||||
sty DATAFLG
|
||||
.endif
|
||||
lda (LOWTRX),y
|
||||
beq L25E5
|
||||
.ifdef MICROTAN
|
||||
jmp LE21F
|
||||
LC5A9:
|
||||
.else
|
||||
jsr ISCNTC
|
||||
.endif
|
||||
.ifndef KBD
|
||||
jsr CRDO
|
||||
.endif
|
||||
iny
|
||||
lda (LOWTRX),y
|
||||
tax
|
||||
@@ -743,18 +485,14 @@ L25CA:
|
||||
and #$7F
|
||||
L25CE:
|
||||
jsr OUTDO
|
||||
.ifdef CONFIG_DATAFLG
|
||||
cmp #$22
|
||||
bne LA519
|
||||
lda DATAFLG
|
||||
eor #$FF
|
||||
sta DATAFLG
|
||||
LA519:
|
||||
.endif
|
||||
iny
|
||||
.ifdef CONFIG_11
|
||||
beq L25E5
|
||||
.endif
|
||||
lda (LOWTRX),y
|
||||
bne L25E8
|
||||
tay
|
||||
@@ -764,31 +502,15 @@ LA519:
|
||||
lda (LOWTRX),y
|
||||
stx LOWTRX
|
||||
sta LOWTRX+1
|
||||
.if .def(MICROTAN) || .def(AIM65) || .def(SYM1)
|
||||
bne L25A6X
|
||||
.else
|
||||
bne L25A6
|
||||
.endif
|
||||
L25E5:
|
||||
.ifdef AIM65
|
||||
lda INPUTFLG
|
||||
beq L25E5a
|
||||
jsr CRDO
|
||||
jsr CRDO
|
||||
lda #$1a
|
||||
jsr OUTDO
|
||||
jsr $e50a
|
||||
L25E5a:
|
||||
.endif
|
||||
jmp RESTART
|
||||
L25E8:
|
||||
bpl L25CE
|
||||
.ifdef CONFIG_DATAFLG
|
||||
cmp #$FF
|
||||
beq L25CE
|
||||
bit DATAFLG
|
||||
bmi L25CE
|
||||
.endif
|
||||
sec
|
||||
sbc #$7F
|
||||
tax
|
||||
|
||||
@@ -4,51 +4,6 @@
|
||||
; "RND" FUNCTION
|
||||
; ----------------------------------------------------------------------------
|
||||
|
||||
.ifdef KBD
|
||||
RND:
|
||||
ldx #$10
|
||||
jsr SIGN
|
||||
beq LFC26
|
||||
bmi LFC10
|
||||
lda RNDSEED
|
||||
ldy RNDSEED+1
|
||||
LFBFA:
|
||||
sta FAC+2
|
||||
sty FAC+1
|
||||
LFBFE:
|
||||
asl a
|
||||
asl a
|
||||
eor FAC+2
|
||||
asl a
|
||||
eor FAC+1
|
||||
asl a
|
||||
asl a
|
||||
asl a
|
||||
asl a
|
||||
eor FAC+1
|
||||
asl a
|
||||
rol FAC+2
|
||||
rol FAC+1
|
||||
LFC10:
|
||||
lda FAC+2
|
||||
dex
|
||||
bne LFBFE
|
||||
sta RNDSEED
|
||||
sta FAC+3
|
||||
lda FAC+1
|
||||
sta RNDSEED+1
|
||||
lda #$80
|
||||
sta FAC
|
||||
stx FACSIGN
|
||||
jmp NORMALIZE_FAC2
|
||||
LFC26:
|
||||
ldy $03CA
|
||||
lda $03C7
|
||||
ora #$01
|
||||
GOMOVMF:
|
||||
bne LFBFA
|
||||
.byte $F0
|
||||
.else
|
||||
; <<< THESE ARE MISSING ONE BYTE FOR FP VALUES >>>
|
||||
; (non CONFIG_SMALL)
|
||||
CONRND1:
|
||||
@@ -57,30 +12,13 @@ CONRND2:
|
||||
.byte $68,$28,$B1,$46
|
||||
RND:
|
||||
jsr SIGN
|
||||
.ifdef CONFIG_CBM_ALL
|
||||
bmi L3F01
|
||||
bne LDF63
|
||||
lda ENTROPY
|
||||
sta FAC+1
|
||||
lda ENTROPY+4
|
||||
sta FAC+2
|
||||
lda ENTROPY+1
|
||||
sta FAC+3
|
||||
lda ENTROPY+5
|
||||
sta FAC+4
|
||||
jmp LDF88
|
||||
LDF63:
|
||||
.else
|
||||
tax
|
||||
bmi L3F01
|
||||
.endif
|
||||
lda #<RNDSEED
|
||||
ldy #>RNDSEED
|
||||
jsr LOAD_FAC_FROM_YA
|
||||
.ifndef CONFIG_CBM_ALL
|
||||
txa
|
||||
beq RTS19
|
||||
.endif
|
||||
lda #<CONRND1
|
||||
ldy #>CONRND1
|
||||
jsr FMULT
|
||||
@@ -92,13 +30,6 @@ L3F01:
|
||||
lda FAC+1
|
||||
sta FAC_LAST
|
||||
stx FAC+1
|
||||
.ifdef CONFIG_CBM_ALL
|
||||
ldx FAC+2
|
||||
lda FAC+3
|
||||
sta FAC+2
|
||||
stx FAC+3
|
||||
LDF88:
|
||||
.endif
|
||||
lda #$00
|
||||
sta FACSIGN
|
||||
lda FAC
|
||||
@@ -110,7 +41,6 @@ LDF88:
|
||||
ldy #>RNDSEED
|
||||
GOMOVMF:
|
||||
jmp STORE_FAC_AT_YX_ROUNDED
|
||||
.endif
|
||||
|
||||
.segment "CHRGET"
|
||||
; ----------------------------------------------------------------------------
|
||||
@@ -120,16 +50,6 @@ GOMOVMF:
|
||||
; (on all non-CONFIG_SMALL)
|
||||
; ----------------------------------------------------------------------------
|
||||
GENERIC_RNDSEED:
|
||||
.ifndef KBD
|
||||
; random number seed
|
||||
.ifdef CONFIG_SMALL
|
||||
.byte $80,$4F,$C7,$52
|
||||
.else
|
||||
.ifdef CONFIG_11
|
||||
.byte $80,$4F,$C7,$52,$58
|
||||
.else
|
||||
.byte $80,$4F,$C7,$52,$59
|
||||
.endif
|
||||
.endif
|
||||
.endif
|
||||
GENERIC_CHRGET_END:
|
||||
@@ -86,13 +86,8 @@ L32AA:
|
||||
L32B6:
|
||||
stx STRNG2+1
|
||||
lda STRNG1+1
|
||||
.ifdef CONFIG_NO_INPUTBUFFER_ZP
|
||||
beq LD399
|
||||
cmp #>INPUTBUFFER
|
||||
.elseif .def(AIM65)
|
||||
beq LD399
|
||||
cmp #$01
|
||||
.endif
|
||||
bne PUTNEW
|
||||
LD399:
|
||||
tya
|
||||
@@ -124,9 +119,7 @@ PUTEMP:
|
||||
ldy #$00
|
||||
stx FAC_LAST-1
|
||||
sty FAC_LAST
|
||||
.ifdef CONFIG_2
|
||||
sty FACEXTENSION
|
||||
.endif
|
||||
dey
|
||||
sty VALTYP
|
||||
stx LASTPT
|
||||
@@ -183,22 +176,14 @@ L3311:
|
||||
; BELOW STRING AREA DOWN TO STREND.
|
||||
; ----------------------------------------------------------------------------
|
||||
GARBAG:
|
||||
|
||||
.ifdef CONST_MEMSIZ
|
||||
ldx #<CONST_MEMSIZ
|
||||
lda #>CONST_MEMSIZ
|
||||
.else
|
||||
ldx MEMSIZ
|
||||
lda MEMSIZ+1
|
||||
.endif
|
||||
FINDHIGHESTSTRING:
|
||||
stx FRETOP
|
||||
sta FRETOP+1
|
||||
ldy #$00
|
||||
sty FNCNAM+1
|
||||
.ifdef CONFIG_2
|
||||
sty FNCNAM ; GC bugfix!
|
||||
.endif
|
||||
lda STREND
|
||||
ldx STREND+1
|
||||
sta LOWTR
|
||||
@@ -244,14 +229,10 @@ L336B:
|
||||
L3376:
|
||||
sta INDEX
|
||||
stx INDEX+1
|
||||
.ifdef CONFIG_SMALL
|
||||
ldy #$01
|
||||
.else
|
||||
ldy #$00
|
||||
lda (INDEX),y
|
||||
tax
|
||||
iny
|
||||
.endif
|
||||
lda (INDEX),y
|
||||
php
|
||||
iny
|
||||
@@ -264,21 +245,13 @@ L3376:
|
||||
sta HIGHDS+1
|
||||
plp
|
||||
bpl L3367
|
||||
.ifndef CONFIG_SMALL
|
||||
txa
|
||||
bmi L3367
|
||||
.endif
|
||||
iny
|
||||
lda (INDEX),y
|
||||
.ifdef CONFIG_CBM1_PATCHES
|
||||
jsr LE7F3 ; XXX patch, call into screen editor
|
||||
.else
|
||||
.ifdef CONFIG_11
|
||||
ldy #$00 ; GC bugfix
|
||||
.endif
|
||||
asl a
|
||||
adc #$05
|
||||
.endif
|
||||
adc INDEX
|
||||
sta INDEX
|
||||
bcc L33A7
|
||||
@@ -298,10 +271,8 @@ L33B1:
|
||||
; PROCESS A SIMPLE VARIABLE
|
||||
; ----------------------------------------------------------------------------
|
||||
CHECK_SIMPLE_VARIABLE:
|
||||
.ifndef CONFIG_SMALL
|
||||
lda (INDEX),y
|
||||
bmi CHECK_BUMP
|
||||
.endif
|
||||
iny
|
||||
lda (INDEX),y
|
||||
bpl CHECK_BUMP
|
||||
@@ -360,19 +331,11 @@ L33FA:
|
||||
; TO TOP AND GO BACK FOR ANOTHER
|
||||
; ----------------------------------------------------------------------------
|
||||
MOVE_HIGHEST_STRING_TO_TOP:
|
||||
.ifdef CONFIG_2
|
||||
lda FNCNAM+1 ; GC bugfix
|
||||
ora FNCNAM
|
||||
.else
|
||||
ldx FNCNAM+1
|
||||
.endif
|
||||
beq L33FA
|
||||
lda Z52
|
||||
.ifndef CONFIG_10A
|
||||
sbc #$03
|
||||
.else
|
||||
and #$04
|
||||
.endif
|
||||
lsr a
|
||||
tay
|
||||
sta Z52
|
||||
@@ -531,11 +494,7 @@ L34CD:
|
||||
; RELEASE TEMPORARY DESCRIPTOR IF Y,A = LASTPT
|
||||
; ----------------------------------------------------------------------------
|
||||
FRETMS:
|
||||
.ifdef KBD
|
||||
cpy #$00
|
||||
.else
|
||||
cpy LASTPT+1
|
||||
.endif
|
||||
bne L34E2
|
||||
cmp LASTPT
|
||||
bne L34E2
|
||||
@@ -620,9 +579,7 @@ MIDSTR:
|
||||
jsr GETBYT
|
||||
L353F:
|
||||
jsr SUBSTRING_SETUP
|
||||
.ifdef CONFIG_2
|
||||
beq GOIQ
|
||||
.endif
|
||||
dex
|
||||
txa
|
||||
pha
|
||||
@@ -644,15 +601,9 @@ L353F:
|
||||
SUBSTRING_SETUP:
|
||||
jsr CHKCLS
|
||||
pla
|
||||
.ifndef CONFIG_11
|
||||
sta JMPADRS+1
|
||||
pla
|
||||
sta JMPADRS+2
|
||||
.else
|
||||
tay
|
||||
pla
|
||||
sta Z52
|
||||
.endif
|
||||
pla
|
||||
pla
|
||||
pla
|
||||
@@ -661,23 +612,13 @@ SUBSTRING_SETUP:
|
||||
sta DSCPTR
|
||||
pla
|
||||
sta DSCPTR+1
|
||||
.ifdef CONFIG_11
|
||||
lda Z52
|
||||
pha
|
||||
tya
|
||||
pha
|
||||
.endif
|
||||
ldy #$00
|
||||
txa
|
||||
.ifndef CONFIG_2
|
||||
beq GOIQ
|
||||
.endif
|
||||
.ifndef CONFIG_11
|
||||
inc JMPADRS+1
|
||||
jmp (JMPADRS+1)
|
||||
.else
|
||||
rts
|
||||
.endif
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
; "LEN" FUNCTION
|
||||
@@ -707,11 +648,7 @@ ASC:
|
||||
ldy #$00
|
||||
lda (INDEX),y
|
||||
tay
|
||||
.ifndef CONFIG_11A
|
||||
jmp SNGFLT1
|
||||
.else
|
||||
jmp SNGFLT
|
||||
.endif
|
||||
; ----------------------------------------------------------------------------
|
||||
GOIQ:
|
||||
jmp IQERR
|
||||
|
||||
+79
-139
@@ -1,163 +1,103 @@
|
||||
init_token_tables
|
||||
init_token_tables
|
||||
|
||||
keyword_rts "END", END
|
||||
keyword_rts "FOR", FOR
|
||||
keyword_rts "NEXT", NEXT
|
||||
keyword_rts "DATA", DATA
|
||||
keyword_rts "END", END
|
||||
keyword_rts "FOR", FOR
|
||||
keyword_rts "NEXT", NEXT
|
||||
keyword_rts "DATA", DATA
|
||||
.ifdef CONFIG_FILE
|
||||
keyword_rts "INPUT#", INPUTH
|
||||
.endif
|
||||
keyword_rts "INPUT", INPUT
|
||||
keyword_rts "DIM", DIM
|
||||
keyword_rts "READ", READ
|
||||
.ifdef APPLE
|
||||
keyword_rts "PLT", PLT
|
||||
.else
|
||||
keyword_rts "LET", LET
|
||||
.endif
|
||||
keyword_rts "GOTO", GOTO, TOKEN_GOTO
|
||||
keyword_rts "RUN", RUN
|
||||
keyword_rts "IF", IF
|
||||
keyword_rts "RESTORE", RESTORE
|
||||
keyword_rts "GOSUB", GOSUB, TOKEN_GOSUB
|
||||
keyword_rts "RETURN", POP
|
||||
.ifdef APPLE
|
||||
keyword_rts "TEX", TEX, TOKEN_REM
|
||||
.else
|
||||
keyword_rts "REM", REM, TOKEN_REM
|
||||
.endif
|
||||
keyword_rts "STOP", STOP
|
||||
keyword_rts "ON", ON
|
||||
.ifdef CONFIG_NULL
|
||||
keyword_rts "NULL", NULL
|
||||
.endif
|
||||
.ifdef KBD
|
||||
keyword_rts "PLOD", PLOD
|
||||
keyword_rts "PSAV", PSAV
|
||||
keyword_rts "VLOD", VLOD
|
||||
keyword_rts "VSAV", VSAV
|
||||
.endif
|
||||
.ifndef CONFIG_NO_POKE
|
||||
keyword_rts "WAIT", WAIT
|
||||
.endif
|
||||
.ifndef KBD
|
||||
keyword_rts "LOAD", LOAD
|
||||
keyword_rts "SAVE", SAVE
|
||||
.endif
|
||||
.ifdef CONFIG_CBM_ALL
|
||||
keyword_rts "VERIFY", VERIFY
|
||||
.endif
|
||||
keyword_rts "DEF", DEF
|
||||
.ifdef KBD
|
||||
keyword_rts "SLOD", SLOD
|
||||
.endif
|
||||
.ifndef CONFIG_NO_POKE
|
||||
keyword_rts "POKE", POKE
|
||||
keyword_rts "INPUT#", INPUTH
|
||||
.endif
|
||||
keyword_rts "INPUT", INPUT
|
||||
keyword_rts "DIM", DIM
|
||||
keyword_rts "READ", READ
|
||||
keyword_rts "LET", LET
|
||||
keyword_rts "GOTO", GOTO, TOKEN_GOTO
|
||||
keyword_rts "RUN", RUN
|
||||
keyword_rts "IF", IF
|
||||
keyword_rts "RESTORE", RESTORE
|
||||
keyword_rts "GOSUB", GOSUB, TOKEN_GOSUB
|
||||
keyword_rts "RETURN", POP
|
||||
keyword_rts "REM", REM, TOKEN_REM
|
||||
keyword_rts "STOP", STOP
|
||||
keyword_rts "ON", ON
|
||||
keyword_rts "WAIT", WAIT
|
||||
keyword_rts "DEF", DEF
|
||||
keyword_rts "POKE", POKE
|
||||
.ifdef CONFIG_FILE
|
||||
keyword_rts "PRINT#", PRINTH
|
||||
.endif
|
||||
keyword_rts "PRINT", PRINT, TOKEN_PRINT
|
||||
keyword_rts "CONT", CONT
|
||||
keyword_rts "LIST", LIST
|
||||
.ifdef CONFIG_CBM_ALL
|
||||
keyword_rts "CLR", CLEAR
|
||||
.else
|
||||
keyword_rts "CLEAR", CLEAR
|
||||
keyword_rts "PRINT#", PRINTH
|
||||
.endif
|
||||
keyword_rts "PRINT", PRINT, TOKEN_PRINT
|
||||
keyword_rts "CONT", CONT
|
||||
keyword_rts "LIST", LIST
|
||||
keyword_rts "CLEAR", CLEAR
|
||||
.ifdef CONFIG_FILE
|
||||
keyword_rts "CMD", CMD
|
||||
keyword_rts "SYS", SYS
|
||||
keyword_rts "OPEN", OPEN
|
||||
keyword_rts "CLOSE", CLOSE
|
||||
keyword_rts "CMD", CMD
|
||||
keyword_rts "SYS", SYS
|
||||
keyword_rts "OPEN", OPEN
|
||||
keyword_rts "CLOSE", CLOSE
|
||||
.endif
|
||||
.ifndef CONFIG_SMALL
|
||||
keyword_rts "GET", GET
|
||||
.endif
|
||||
.ifdef KBD
|
||||
keyword_rts "PRT", PRT
|
||||
.endif
|
||||
keyword_rts "NEW", NEW
|
||||
keyword_rts "GET", GET
|
||||
keyword_rts "NEW", NEW
|
||||
|
||||
count_tokens
|
||||
count_tokens
|
||||
|
||||
keyword "TAB(", TOKEN_TAB
|
||||
keyword "TO", TOKEN_TO
|
||||
keyword "FN", TOKEN_FN
|
||||
keyword "SPC(", TOKEN_SPC
|
||||
keyword "THEN", TOKEN_THEN
|
||||
keyword "NOT", TOKEN_NOT
|
||||
keyword "STEP", TOKEN_STEP
|
||||
keyword "+", TOKEN_PLUS
|
||||
keyword "-", TOKEN_MINUS
|
||||
keyword "*"
|
||||
keyword "/"
|
||||
.ifdef KBD
|
||||
keyword "#"
|
||||
.else
|
||||
keyword "^"
|
||||
.endif
|
||||
keyword "AND"
|
||||
keyword "OR"
|
||||
keyword ">", TOKEN_GREATER
|
||||
keyword "=", TOKEN_EQUAL
|
||||
keyword "<"
|
||||
keyword "TAB(", TOKEN_TAB
|
||||
keyword "TO", TOKEN_TO
|
||||
keyword "FN", TOKEN_FN
|
||||
keyword "SPC(", TOKEN_SPC
|
||||
keyword "THEN", TOKEN_THEN
|
||||
keyword "NOT", TOKEN_NOT
|
||||
keyword "STEP", TOKEN_STEP
|
||||
keyword "+", TOKEN_PLUS
|
||||
keyword "-", TOKEN_MINUS
|
||||
keyword "*"
|
||||
keyword "/"
|
||||
keyword "^"
|
||||
keyword "AND"
|
||||
keyword "OR"
|
||||
keyword ">", TOKEN_GREATER
|
||||
keyword "=", TOKEN_EQUAL
|
||||
keyword "<"
|
||||
|
||||
.segment "VECTORS"
|
||||
.segment "VECTORS"
|
||||
UNFNC:
|
||||
|
||||
keyword_addr "SGN", SGN, TOKEN_SGN
|
||||
keyword_addr "INT", INT
|
||||
keyword_addr "ABS", ABS
|
||||
.ifdef KBD
|
||||
keyword_addr "VER", VER
|
||||
.endif
|
||||
.ifndef CONFIG_NO_POKE
|
||||
.ifdef CONFIG_RAM
|
||||
keyword_addr "USR", IQERR
|
||||
.else
|
||||
keyword_addr "USR", USR, TOKEN_USR
|
||||
.endif
|
||||
.endif
|
||||
keyword_addr "FRE", FRE
|
||||
keyword_addr "POS", POS
|
||||
keyword_addr "SQR", SQR
|
||||
keyword_addr "RND", RND
|
||||
keyword_addr "LOG", LOG
|
||||
keyword_addr "EXP", EXP
|
||||
keyword_addr "SGN", SGN, TOKEN_SGN
|
||||
keyword_addr "INT", INT
|
||||
keyword_addr "ABS", ABS
|
||||
keyword_addr "USR", USR, TOKEN_USR
|
||||
keyword_addr "FRE", FRE
|
||||
keyword_addr "POS", POS
|
||||
keyword_addr "SQR", SQR
|
||||
keyword_addr "RND", RND
|
||||
keyword_addr "LOG", LOG
|
||||
keyword_addr "EXP", EXP
|
||||
.segment "VECTORS"
|
||||
UNFNC_COS:
|
||||
keyword_addr "COS", COS
|
||||
keyword_addr "COS", COS
|
||||
.segment "VECTORS"
|
||||
UNFNC_SIN:
|
||||
keyword_addr "SIN", SIN
|
||||
keyword_addr "SIN", SIN
|
||||
.segment "VECTORS"
|
||||
UNFNC_TAN:
|
||||
keyword_addr "TAN", TAN
|
||||
keyword_addr "TAN", TAN
|
||||
.segment "VECTORS"
|
||||
UNFNC_ATN:
|
||||
keyword_addr "ATN", ATN
|
||||
.ifdef KBD
|
||||
keyword_addr "GETC", GETC
|
||||
.endif
|
||||
.ifndef CONFIG_NO_POKE
|
||||
keyword_addr "PEEK", PEEK
|
||||
.endif
|
||||
keyword_addr "LEN", LEN
|
||||
keyword_addr "STR$", STR
|
||||
keyword_addr "VAL", VAL
|
||||
keyword_addr "ASC", ASC
|
||||
keyword_addr "CHR$", CHRSTR
|
||||
keyword_addr "LEFT$", LEFTSTR, TOKEN_LEFTSTR
|
||||
keyword_addr "RIGHT$", RIGHTSTR
|
||||
keyword_addr "MID$", MIDSTR
|
||||
.ifdef CONFIG_2
|
||||
keyword "GO", TOKEN_GO
|
||||
.endif
|
||||
.segment "KEYWORDS"
|
||||
.byte 0
|
||||
keyword_addr "ATN", ATN
|
||||
keyword_addr "PEEK", PEEK
|
||||
keyword_addr "LEN", LEN
|
||||
keyword_addr "STR$", STR
|
||||
keyword_addr "VAL", VAL
|
||||
keyword_addr "ASC", ASC
|
||||
keyword_addr "CHR$", CHRSTR
|
||||
keyword_addr "LEFT$", LEFTSTR, TOKEN_LEFTSTR
|
||||
keyword_addr "RIGHT$", RIGHTSTR
|
||||
keyword_addr "MID$", MIDSTR
|
||||
keyword "GO", TOKEN_GO
|
||||
.segment "KEYWORDS"
|
||||
.byte 0
|
||||
|
||||
.segment "VECTORS"
|
||||
.segment "VECTORS"
|
||||
MATHTBL:
|
||||
.byte $79
|
||||
.word FADDT-1
|
||||
|
||||
+11
-54
@@ -1,6 +1,5 @@
|
||||
.segment "CODE"
|
||||
|
||||
.ifndef SYM1
|
||||
SIN_COS_TAN_ATN:
|
||||
; ----------------------------------------------------------------------------
|
||||
; "COS" FUNCTION
|
||||
@@ -93,18 +92,6 @@ TAN1:
|
||||
jmp SIN1
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
.ifdef CONFIG_SMALL
|
||||
CON_PI_HALF:
|
||||
.byte $81,$49,$0F,$DB
|
||||
CON_PI_DOUB:
|
||||
.byte $83,$49,$0F,$DB
|
||||
QUARTER:
|
||||
.byte $7F,$00,$00,$00
|
||||
POLY_SIN:
|
||||
.byte $04,$86,$1E,$D7,$FB,$87,$99,$26
|
||||
.byte $65,$87,$23,$34,$58,$86,$A5,$5D
|
||||
.byte $E1,$83,$49,$0F,$DB
|
||||
.else
|
||||
CON_PI_HALF:
|
||||
.byte $81,$49,$0F,$DA,$A2
|
||||
CON_PI_DOUB:
|
||||
@@ -116,22 +103,11 @@ POLY_SIN:
|
||||
.byte $07,$FB,$F8,$87,$99,$68,$89,$01
|
||||
.byte $87,$23,$35,$DF,$E1,$86,$A5,$5D
|
||||
.byte $E7,$28,$83,$49,$0F,$DA,$A2
|
||||
.ifndef CONFIG_11
|
||||
; no easter egg text before BASIC 1.1
|
||||
.elseif !.def(CONFIG_2A)
|
||||
; ASCII encoded easter egg
|
||||
MICROSOFT:
|
||||
.byte $A6,$D3,$C1,$C8,$D4,$C8,$D5,$C4
|
||||
.byte $CE,$CA
|
||||
.else
|
||||
; PET encoded easter egg text since CBM2
|
||||
MICROSOFT:
|
||||
.byte $A1,$54,$46,$8F,$13,$8F,$52,$43
|
||||
.byte $89,$CD
|
||||
.endif
|
||||
.endif
|
||||
|
||||
.ifndef AIM65
|
||||
; ----------------------------------------------------------------------------
|
||||
; "ATN" FUNCTION
|
||||
; ----------------------------------------------------------------------------
|
||||
@@ -171,35 +147,16 @@ L4002:
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
POLY_ATN:
|
||||
.ifdef CONFIG_SMALL
|
||||
.byte $08
|
||||
.byte $78,$3A,$C5,$37
|
||||
.byte $7B,$83,$A2,$5C
|
||||
.byte $7C,$2E,$DD,$4D
|
||||
.byte $7D,$99,$B0,$1E
|
||||
.byte $7D,$59,$ED,$24
|
||||
.byte $7E,$91,$72,$00
|
||||
.byte $7E,$4C,$B9,$73
|
||||
.byte $7F,$AA,$AA,$53
|
||||
.byte $81,$00,$00,$00
|
||||
.else
|
||||
.byte $0B
|
||||
.byte $76,$B3,$83,$BD,$D3
|
||||
.byte $79,$1E,$F4,$A6,$F5
|
||||
.byte $7B,$83,$FC,$B0,$10
|
||||
.byte $76,$B3,$83,$BD,$D3
|
||||
.byte $79,$1E,$F4,$A6,$F5
|
||||
.byte $7B,$83,$FC,$B0,$10
|
||||
.byte $7C,$0C,$1F,$67,$CA
|
||||
.byte $7C,$DE,$53,$CB,$C1
|
||||
.byte $7D,$14,$64,$70,$4C
|
||||
.byte $7D,$B7,$EA,$51,$7A
|
||||
.byte $7D,$63,$30,$88,$7E
|
||||
.byte $7E,$92,$44,$99,$3A
|
||||
.byte $7E,$4C,$CC,$91,$C7
|
||||
.byte $7F,$AA,$AA,$AA,$13
|
||||
.byte $81,$00,$00,$00,$00
|
||||
.endif
|
||||
|
||||
.if .def(CONFIG_11A) && (!.def(CONFIG_2))
|
||||
.byte $00 ; XXX
|
||||
.endif
|
||||
.endif
|
||||
.endif
|
||||
.byte $7C,$DE,$53,$CB,$C1
|
||||
.byte $7D,$14,$64,$70,$4C
|
||||
.byte $7D,$B7,$EA,$51,$7A
|
||||
.byte $7D,$63,$30,$88,$7E
|
||||
.byte $7E,$92,$44,$99,$3A
|
||||
.byte $7E,$4C,$CC,$91,$C7
|
||||
.byte $7F,$AA,$AA,$AA,$13
|
||||
.byte $81,$00,$00,$00,$00
|
||||
@@ -42,9 +42,7 @@ SYNERR3:
|
||||
NAMOK:
|
||||
ldx #$00
|
||||
stx VALTYP
|
||||
.ifndef CONFIG_SMALL
|
||||
stx VALTYP+1
|
||||
.endif
|
||||
jsr CHRGET
|
||||
bcc L2ECD
|
||||
jsr ISLETC
|
||||
@@ -58,14 +56,9 @@ L2ECE:
|
||||
bcs L2ECE
|
||||
L2ED8:
|
||||
cmp #$24
|
||||
.ifdef CONFIG_SMALL
|
||||
bne L2EF9
|
||||
.else
|
||||
bne L2EE2
|
||||
.endif
|
||||
lda #$FF
|
||||
sta VALTYP
|
||||
.ifndef CONFIG_SMALL
|
||||
bne L2EF2
|
||||
L2EE2:
|
||||
cmp #$25
|
||||
@@ -77,7 +70,6 @@ L2EE2:
|
||||
ora VARNAM
|
||||
sta VARNAM
|
||||
L2EF2:
|
||||
.endif
|
||||
txa
|
||||
ora #$80
|
||||
tax
|
||||
@@ -143,22 +135,12 @@ NAMENOTFOUND:
|
||||
pha
|
||||
cmp #<FRM_VARIABLE_CALL
|
||||
bne MAKENEWVARIABLE
|
||||
.ifdef CONFIG_SAFE_NAMENOTFOUND
|
||||
tsx
|
||||
lda STACK+2,x
|
||||
cmp #>FRM_VARIABLE_CALL
|
||||
bne MAKENEWVARIABLE
|
||||
.endif
|
||||
LD015:
|
||||
lda #<C_ZERO
|
||||
ldy #>C_ZERO
|
||||
rts
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
.ifndef CONFIG_2
|
||||
C_ZERO:
|
||||
.byte $00,$00
|
||||
.endif
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
; MAKE A NEW SIMPLE VARIABLE
|
||||
@@ -167,24 +149,6 @@ C_ZERO:
|
||||
; ENTER 7-BYTE VARIABLE DATA IN THE HOLE
|
||||
; ----------------------------------------------------------------------------
|
||||
MAKENEWVARIABLE:
|
||||
.ifdef CONFIG_CBM_ALL
|
||||
lda VARNAM
|
||||
ldy VARNAM+1
|
||||
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
|
||||
lda ARYTAB
|
||||
ldy ARYTAB+1
|
||||
sta LOWTR
|
||||
@@ -221,10 +185,8 @@ L2F68:
|
||||
sta (LOWTR),y
|
||||
iny
|
||||
sta (LOWTR),y
|
||||
.ifndef CONFIG_SMALL
|
||||
iny
|
||||
sta (LOWTR),y
|
||||
.endif
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
; PUT ADDRESS OF VALUE OF VARIABLE IN VARPNT AND Y,A
|
||||
|
||||
+2
-4
@@ -1,5 +1,3 @@
|
||||
.segment "WOZMON"
|
||||
|
||||
XAML = $24 ; Last "opened" location Low
|
||||
XAMH = $25 ; Last "opened" location High
|
||||
STL = $26 ; Store address Low
|
||||
@@ -27,7 +25,7 @@ ESCAPE:
|
||||
JSR ECHO ; Output it.
|
||||
|
||||
GETLINE:
|
||||
LDA #$0D ; Send CR
|
||||
LDA #$0A ; Send LF
|
||||
JSR ECHO
|
||||
|
||||
LDY #$01 ; Initialize text index.
|
||||
@@ -120,7 +118,7 @@ SETADR: LDA L-1,X ; Copy hex data to
|
||||
|
||||
NXTPRNT:
|
||||
BNE PRDATA ; NE means no address to print.
|
||||
LDA #$0D ; CR.
|
||||
LDA #$0A ; LF.
|
||||
JSR ECHO ; Output it.
|
||||
LDA XAMH ; 'Examine index' high-order byte.
|
||||
JSR PRBYTE ; Output it in hex format.
|
||||
|
||||
+5
-50
@@ -2,7 +2,7 @@
|
||||
.feature org_per_seg
|
||||
.zeropage
|
||||
|
||||
.org ZP_START1
|
||||
.org $02
|
||||
|
||||
GORESTART:
|
||||
.res 3
|
||||
@@ -13,31 +13,21 @@ GOAYINT:
|
||||
GOGIVEAYF:
|
||||
.res 2
|
||||
|
||||
.org ZP_START2
|
||||
.org $0C
|
||||
Z15:
|
||||
.res 1
|
||||
.ifndef POSX; allow override
|
||||
POSX:
|
||||
.endif
|
||||
.res 1
|
||||
.ifndef Z17; allow override
|
||||
Z17:
|
||||
.endif
|
||||
.res 1
|
||||
.ifndef Z18; allow override
|
||||
Z18:
|
||||
.endif
|
||||
.res 1
|
||||
LINNUM:
|
||||
.ifndef TXPSV; allow override
|
||||
TXPSV:
|
||||
.endif
|
||||
.res 2
|
||||
.ifndef INPUTBUFFER; allow override
|
||||
INPUTBUFFER:
|
||||
.endif
|
||||
INPUTBUFFER = $0200
|
||||
|
||||
.org ZP_START3
|
||||
.org $12
|
||||
|
||||
CHARAC:
|
||||
.res 1
|
||||
@@ -48,11 +38,7 @@ EOLPNTR:
|
||||
DIMFLG:
|
||||
.res 1
|
||||
VALTYP:
|
||||
.ifdef CONFIG_SMALL
|
||||
.res 1
|
||||
.else
|
||||
.res 2
|
||||
.endif
|
||||
DATAFLG:
|
||||
.res 1
|
||||
SUBFLG:
|
||||
@@ -64,7 +50,7 @@ CPRMASK:
|
||||
Z14:
|
||||
.res 1
|
||||
|
||||
.org ZP_START4
|
||||
.org $1D
|
||||
|
||||
TEMPPT:
|
||||
.res 1
|
||||
@@ -119,44 +105,29 @@ FNCNAM:
|
||||
TEMP3:
|
||||
.res 2
|
||||
DSCPTR:
|
||||
.ifdef CONFIG_SMALL
|
||||
.res 2
|
||||
.else
|
||||
.res 3
|
||||
.endif
|
||||
DSCLEN:
|
||||
.res 2
|
||||
.ifndef JMPADRS ; allow override
|
||||
JMPADRS := DSCLEN + 1
|
||||
.endif
|
||||
Z52:
|
||||
.res 1
|
||||
ARGEXTENSION:
|
||||
.ifndef CONFIG_SMALL
|
||||
.res 1
|
||||
.endif
|
||||
TEMP1:
|
||||
.res 1
|
||||
HIGHDS:
|
||||
.res 2
|
||||
HIGHTR:
|
||||
.res 2
|
||||
.ifndef CONFIG_SMALL
|
||||
TEMP2:
|
||||
.res 1
|
||||
.endif
|
||||
INDX:
|
||||
TMPEXP:
|
||||
.ifdef CONFIG_SMALL
|
||||
TEMP2:
|
||||
.endif
|
||||
.res 1
|
||||
EXPON:
|
||||
.res 1
|
||||
LOWTR:
|
||||
.ifndef LOWTRX ; allow override
|
||||
LOWTRX:
|
||||
.endif
|
||||
.res 1
|
||||
EXPSGN:
|
||||
.res 1
|
||||
@@ -180,24 +151,8 @@ SGNCPR = STRNG1
|
||||
FACEXTENSION = STRNG1+1
|
||||
STRNG2:
|
||||
.res 2
|
||||
.ifdef AIM65
|
||||
ATN:
|
||||
.res 3
|
||||
ZBE:
|
||||
.res 1
|
||||
.endif
|
||||
.ifdef SYM1
|
||||
USR1:
|
||||
.res 3
|
||||
USR2:
|
||||
.res 3
|
||||
USR3:
|
||||
.res 3
|
||||
.endif
|
||||
CHRGET:
|
||||
TXTPTR = <(GENERIC_TXTPTR-GENERIC_CHRGET + CHRGET)
|
||||
CHRGOT = <(GENERIC_CHRGOT-GENERIC_CHRGET + CHRGET)
|
||||
CHRGOT2 = <(GENERIC_CHRGOT2-GENERIC_CHRGET + CHRGET)
|
||||
RNDSEED = <(GENERIC_RNDSEED-GENERIC_CHRGET + CHRGET)
|
||||
|
||||
|
||||
Reference in new issue
Block a user