From 25236f542d9e640f90616bfa09d350f577eeba31 Mon Sep 17 00:00:00 2001 From: Kilian Hofmann Date: Sun, 27 Sep 2026 22:09:00 +0200 Subject: [PATCH] Cleanup BASIC sources --- rom/array.s | 45 +-- rom/build.sh | 4 +- rom/chrget.s | 3 - rom/{kilian.cfg => config.cfg} | 2 +- rom/defines.s | 88 +---- rom/defines_kilian.s | 27 -- rom/error.s | 29 +- rom/eval.s | 227 ----------- rom/extra.s | 55 ++- rom/float.s | 319 ---------------- rom/flow1.s | 95 ----- rom/flow2.s | 14 - rom/header.s | 34 +- rom/init.s | 679 +++++++++------------------------ rom/inline.s | 107 ------ rom/input.s | 140 ------- rom/kilian_extra.s | 33 -- rom/loadsave.s | 16 +- rom/message.s | 50 +-- rom/misc1.s | 72 ---- rom/misc2.s | 16 - rom/misc3.s | 76 ---- rom/msbasic.s | 1 - rom/poke.s | 33 -- rom/print.s | 252 +----------- rom/program.s | 282 +------------- rom/rnd.s | 80 ---- rom/string.s | 63 --- rom/token.s | 218 ++++------- rom/trig.s | 65 +--- rom/var.s | 38 -- rom/wozmon.s | 6 +- rom/zeropage.s | 55 +-- src/io.c | 1 + src/main.c | 1 + src/rom.c | 2 +- 36 files changed, 319 insertions(+), 2909 deletions(-) rename rom/{kilian.cfg => config.cfg} (88%) delete mode 100644 rom/defines_kilian.s delete mode 100644 rom/kilian_extra.s delete mode 100644 rom/misc3.s diff --git a/rom/array.s b/rom/array.s index 44f6920..dd3d5cc 100644 --- a/rom/array.s +++ b/rom/array.s @@ -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 diff --git a/rom/build.sh b/rom/build.sh index 2f1c53a..25bf50b 100644 --- a/rom/build.sh +++ b/rom/build.sh @@ -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 diff --git a/rom/chrget.s b/rom/chrget.s index bfaada4..a67c9fe 100644 --- a/rom/chrget.s +++ b/rom/chrget.s @@ -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: diff --git a/rom/kilian.cfg b/rom/config.cfg similarity index 88% rename from rom/kilian.cfg rename to rom/config.cfg index 2f8e426..de1e266 100644 --- a/rom/kilian.cfg +++ b/rom/config.cfg @@ -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 = ""; } diff --git a/rom/defines.s b/rom/defines.s index b0dbc05..58135c6 100644 --- a/rom/defines.s +++ b/rom/defines.s @@ -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 - - - diff --git a/rom/defines_kilian.s b/rom/defines_kilian.s deleted file mode 100644 index 393f60f..0000000 --- a/rom/defines_kilian.s +++ /dev/null @@ -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 diff --git a/rom/error.s b/rom/error.s index e05ce65..6c6ef48 100644 --- a/rom/error.s +++ b/rom/error.s @@ -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 \ No newline at end of file +define_error ERR_UNDEFFN, "UNDEF'D FUNCTION" \ No newline at end of file diff --git a/rom/eval.s b/rom/eval.s index 1024c22..99d67e6 100644 --- a/rom/eval.s +++ b/rom/eval.s @@ -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 - 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 diff --git a/rom/extra.s b/rom/extra.s index 653f80c..c21f4ae 100644 --- a/rom/extra.s +++ b/rom/extra.s @@ -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 diff --git a/rom/float.s b/rom/float.s index 2e07352..0b33ed7 100644 --- a/rom/float.s +++ b/rom/float.s @@ -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 " ; ---------------------------------------------------------------------------- INPRT: -.ifdef KBD - jsr LFE0B - .byte " in" - .byte 0 -.else lda #QT_IN jsr GOSTROUT2 -.endif lda CURLIN+1 ldx CURLIN @@ -1451,11 +1181,7 @@ L3C8C: lda #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 diff --git a/rom/flow1.s b/rom/flow1.s index 465f3c1..77b3e07 100644 --- a/rom/flow1.s +++ b/rom/flow1.s @@ -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 -.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 diff --git a/rom/flow2.s b/rom/flow2.s index 8720004..78927d1 100644 --- a/rom/flow2.s +++ b/rom/flow2.s @@ -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 diff --git a/rom/header.s b/rom/header.s index 429e150..d0ce47c 100644 --- a/rom/header.s +++ b/rom/header.s @@ -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 \ No newline at end of file diff --git a/rom/init.s b/rom/init.s index 7fc1a9a..2519f46 100644 --- a/rom/init.s +++ b/rom/init.s @@ -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 - jsr STROUT - .endif - .endif - .endif -.endif -COLD_START: -.ifdef SYM1 - jsr ACCESS -.endif -.ifdef KBD - 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 - sta GORESTART+1 - sty GORESTART+2 - .ifndef AIM65 - sta GOSTROUT+1 - sty GOSTROUT+2 - lda #AYINT - sta GOAYINT - sty GOAYINT+1 - lda #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 +jsr STROUT - .ifndef CONFIG_RAM - .ifdef APPLE - lda #USR_FUNC - .else - lda #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 - sta USR2+1 - sty USR2+2 - lda #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 + sta GORESTART+1 + sty GORESTART+2 + sta GOSTROUT+1 + sty GOSTROUT+2 + lda #AYINT + sta GOAYINT + sty GOAYINT+1 + lda #GIVAYF + sta GOGIVEAYF + sty GOGIVEAYF+1 + lda #$4C + sta GORESTART + sta GOSTROUT + sta JMPADRS + sta USR + + lda #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 - 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 -.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 + 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 - 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 + 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 - jsr STROUT - jsr NXIN - stx TXTPTR - sty TXTPTR+1 - jsr CHRGET - ldx #RAMSTART1 - cmp #'Y' - beq L4183 - cmp #'A' - beq L4157 - cmp #'N' - bne L4136 -L4157: - ldx #IQERR - stx UNFNC_ATN - sty UNFNC_ATN+1 - ldx #ATN ; with ATN - cmp #'A' - beq L4183 - ldx #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 ; all of trig.s -L4183: -.else - ldx #RAMSTART2 -.endif - stx TXTTAB - sty TXTTAB+1 - ldy #$00 - tya - sta (TXTTAB),y - inc TXTTAB -.ifndef CBM2 - bne L4192 - inc TXTTAB+1 + ldx #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 - jsr STROUT -.else - jsr CRDO -.endif - lda MEMSIZ - sec - sbc TXTTAB - tax - lda MEMSIZ+1 - sbc TXTTAB+1 - jsr LINPRT - lda #QT_BYTES_FREE - jsr STROUT -.if CONFIG_SCRTCH_ORDER = 2 - jsr SCRTCH -.endif -.ifdef CONFIG_CBM_ALL - jmp RESTART -.elseif .def(AIM65) - lda #CRDO - sta GORESTART+1 - sty GORESTART+2 - jmp RESTART -.else - lda #STROUT - sta GOSTROUT+1 - sty GOSTROUT+2 - .if CONFIG_SCRTCH_ORDER = 3 - jsr SCRTCH - .endif - lda #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 + jsr STROUT + jsr SCRTCH + lda #STROUT + sta GOSTROUT+1 + sty GOSTROUT+2 + lda #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 diff --git a/rom/inline.s b/rom/inline.s index 9d25b37..26195bd 100644 --- a/rom/inline.s +++ b/rom/inline.s @@ -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 diff --git a/rom/input.s b/rom/input.s index 3dcb22e..c0c427b 100644 --- a/rom/input.s +++ b/rom/input.s @@ -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 diff --git a/rom/kilian_extra.s b/rom/kilian_extra.s deleted file mode 100644 index 28a4f51..0000000 --- a/rom/kilian_extra.s +++ /dev/null @@ -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 diff --git a/rom/loadsave.s b/rom/loadsave.s index f567bd2..2ea209c 100644 --- a/rom/loadsave.s +++ b/rom/loadsave.s @@ -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 \ No newline at end of file +; None yet \ No newline at end of file diff --git a/rom/message.s b/rom/message.s index 79f7800..5395124 100644 --- a/rom/message.s +++ b/rom/message.s @@ -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 diff --git a/rom/misc1.s b/rom/misc1.s index 8b03b9a..5e7aee3 100644 --- a/rom/misc1.s +++ b/rom/misc1.s @@ -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: diff --git a/rom/misc2.s b/rom/misc2.s index 4f4a6c9..2e86468 100644 --- a/rom/misc2.s +++ b/rom/misc2.s @@ -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 diff --git a/rom/misc3.s b/rom/misc3.s deleted file mode 100644 index 19b8c5b..0000000 --- a/rom/misc3.s +++ /dev/null @@ -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 diff --git a/rom/msbasic.s b/rom/msbasic.s index e6a3348..9d3718c 100644 --- a/rom/msbasic.s +++ b/rom/msbasic.s @@ -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" diff --git a/rom/poke.s b/rom/poke.s index e6e1c1e..1b5eaac 100644 --- a/rom/poke.s +++ b/rom/poke.s @@ -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 diff --git a/rom/print.s b/rom/print.s index 972c9c2..7004d68 100644 --- a/rom/print.s +++ b/rom/print.s @@ -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 diff --git a/rom/program.s b/rom/program.s index 07511c7..593ec74 100644 --- a/rom/program.s +++ b/rom/program.s @@ -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 @@ -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 - .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 -.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 -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 diff --git a/rom/rnd.s b/rom/rnd.s index 7603444..342cfcd 100644 --- a/rom/rnd.s +++ b/rom/rnd.s @@ -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 jsr LOAD_FAC_FROM_YA -.ifndef CONFIG_CBM_ALL txa beq RTS19 -.endif lda #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: diff --git a/rom/string.s b/rom/string.s index 1f02458..bfe6b32 100644 --- a/rom/string.s +++ b/rom/string.s @@ -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 -.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 diff --git a/rom/token.s b/rom/token.s index 30b2397..b8a07ed 100644 --- a/rom/token.s +++ b/rom/token.s @@ -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 diff --git a/rom/trig.s b/rom/trig.s index e3e2f85..a1c34d0 100644 --- a/rom/trig.s +++ b/rom/trig.s @@ -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 \ No newline at end of file + .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 \ No newline at end of file diff --git a/rom/var.s b/rom/var.s index cc7e269..1b95677 100644 --- a/rom/var.s +++ b/rom/var.s @@ -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 -.endif LD015: lda #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 diff --git a/rom/wozmon.s b/rom/wozmon.s index 7a2e08f..e607ebb 100644 --- a/rom/wozmon.s +++ b/rom/wozmon.s @@ -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. diff --git a/rom/zeropage.s b/rom/zeropage.s index 0c787e4..7067380 100644 --- a/rom/zeropage.s +++ b/rom/zeropage.s @@ -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) - - diff --git a/src/io.c b/src/io.c index 5b7d85c..3b5460f 100644 --- a/src/io.c +++ b/src/io.c @@ -6,6 +6,7 @@ int putChar(uint8_t c) { int _c = putchar(c); fflush(stdout); + return _c; } diff --git a/src/main.c b/src/main.c index f8a0ea8..6770f1f 100644 --- a/src/main.c +++ b/src/main.c @@ -46,6 +46,7 @@ int main(void) { printf("6502PC Emulator with MS Basic\n"); printf("CTRL + G to exit\n"); + printf("DF6FR to jump to BASIC\n"); clock_gettime(CLOCK_MONOTONIC, &emulationStart); diff --git a/src/rom.c b/src/rom.c index 681b850..de34e6e 100644 --- a/src/rom.c +++ b/src/rom.c @@ -7,7 +7,7 @@ uint8_t rom[ROM_SIZE] = {0}; void initRom(uint8_t *rom) { - FILE *fp = fopen("rom/tmp/kilian.bin", "rb"); + FILE *fp = fopen("rom/tmp/rom.bin", "rb"); if (!fp) { perror("fopen");