From 42fd0a2a58570075618d54c9cd3623d44b8c304d Mon Sep 17 00:00:00 2001 From: Martin Hoffmann-Vetter Date: Fri, 14 Feb 2014 18:46:36 -0800 Subject: [PATCH] added SYM-1 --- defines.s | 3 ++ defines_aim65.s | 2 +- defines_sym1.s | 57 ++++++++++++++++++++++++++++ eval.s | 99 ++++++++++++++++++++++++++++++++++++++++++++++++ extra.s | 4 ++ float.s | 6 +++ flow1.s | 1 + header.s | 3 ++ init.s | 37 ++++++++++++++++-- inline.s | 9 +++-- input.s | 20 ++++++++++ iscntc.s | 3 ++ loadsave.s | 3 ++ make.sh | 2 +- orig/sym1.bin | Bin 0 -> 8192 bytes print.s | 12 +++--- program.s | 14 +++---- regress.sh | 2 +- sym1.cfg | 19 ++++++++++ sym1_iscntc.s | 8 ++++ sym1_loadsave.s | 70 ++++++++++++++++++++++++++++++++++ token.s | 2 +- trig.s | 2 + zeropage.s | 8 ++++ 24 files changed, 362 insertions(+), 24 deletions(-) create mode 100644 defines_sym1.s create mode 100644 orig/sym1.bin create mode 100644 sym1.cfg create mode 100644 sym1_iscntc.s create mode 100644 sym1_loadsave.s diff --git a/defines.s b/defines.s index 28e27dc..42b7877 100644 --- a/defines.s +++ b/defines.s @@ -22,6 +22,9 @@ MICROTAN := 1 .elseif .def(aim65) AIM65 := 1 .include "defines_aim65.s" +.elseif .def(sym1) +SYM1 := 1 +.include "defines_sym1.s" .endif .ifdef CONFIG_2C diff --git a/defines_aim65.s b/defines_aim65.s index 7811c07..bed2adf 100644 --- a/defines_aim65.s +++ b/defines_aim65.s @@ -29,7 +29,7 @@ STACK2 := $0200 ; constants STACK_TOP := $FD SPACE_FOR_GOSUB := $44 -NULL_MAX := $F2 ; probably different in original version; the image I have seems +NULL_MAX := $F2 CRLF_1 := CR CRLF_2 := LF WIDTH := 20 diff --git a/defines_sym1.s b/defines_sym1.s new file mode 100644 index 0000000..d136278 --- /dev/null +++ b/defines_sym1.s @@ -0,0 +1,57 @@ +; configuration +CONFIG_2A := 1 + +CONFIG_NULL := 1 +CONFIG_PRINT_CR := 1 ; print CR when line end reached +CONFIG_SAFE_NAMENOTFOUND := 1 +CONFIG_SCRTCH_ORDER := 1 +CONFIG_PEEK_SAVE_LINNUM := 1 +CONFIG_SMALL_ERROR := 1 + +; zero page +ZP_START1 = $00 +ZP_START2 = $18 +ZP_START3 = $0d +ZP_START4 = $66 + +;extra ZP variables +USR := $0A +TXPSV := LASTOP +ZD3 := $D3 +ZD4 := $D4 + +GET := IQERR +COS := USR1 +SIN := USR1 +TAN := USR1 +ATN := USR1 + +; inputbuffer +INPUTBUFFER := $001E + +; constants +STACK_TOP := $FE +SPACE_FOR_GOSUB := $3E +NULL_MAX := $F0 +CRLF_1 := CR +CRLF_2 := LF +WIDTH := 72 +WIDTH2 := 56 + +; memory layout +RAMSTART2 := $0200 + +; monitor functions +ASCNIB := $8275 +INSTAT := $8386 +MONRDKEY := $8A1B +MONCOUT := $8A47 +ACCESS := $8B86 +L8C78 := $8C78 +DUMPT := $8E87 + +P3L := $A64A +P3H := P3L+1 +P2L := $A64C +P2H := P2L+1 +P1L := $A64E \ No newline at end of file diff --git a/eval.s b/eval.s index aa7087c..af5ad87 100644 --- a/eval.s +++ b/eval.s @@ -394,6 +394,16 @@ 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 @@ -687,3 +697,92 @@ 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/extra.s b/extra.s index 8d99dc9..4842d3f 100644 --- a/extra.s +++ b/extra.s @@ -22,4 +22,8 @@ .ifdef AIM65 .include "aim65_extra.s" +.endif + +.ifdef SYM1 + .byte 0,0,0 .endif \ No newline at end of file diff --git a/float.s b/float.s index f555d1b..be3a23b 100644 --- a/float.s +++ b/float.s @@ -1197,6 +1197,12 @@ L3B6F: dex bpl L3B6F bcc FIN2 +.ifdef SYM1 + cmp #$26 + bne LDABB + jmp LCDFE +LDABB: +.endif cmp #$2D bne L3B7E stx SERLEN diff --git a/flow1.s b/flow1.s index 1fdbd3b..dfeb5d9 100644 --- a/flow1.s +++ b/flow1.s @@ -311,6 +311,7 @@ NULL: bcs L2739 dex stx Z15 +L2738: rts L2739: jmp IQERR diff --git a/header.s b/header.s index 879cd4c..c8d4b1d 100644 --- a/header.s +++ b/header.s @@ -8,3 +8,6 @@ jmp RESTART .word AYINT,GIVAYF .endif +.ifdef SYM1 + jmp PR_WRITTEN_BY +.endif diff --git a/init.s b/init.s index eacf244..702938a 100644 --- a/init.s +++ b/init.s @@ -11,13 +11,18 @@ 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 #DUMPT + sta USR2+1 + sty USR2+2 + lda #L8C78 + sta USR3+1 + sty USR3+2 + .endif .endif .endif .ifndef CBM1 @@ -156,10 +178,12 @@ L4098: sta Z14 .ifndef CBM2 .ifndef AIM65 + .ifndef SYM1 .ifndef MICROTAN lda #$03 sta DSCLEN .endif + .endif .endif .ifndef CONFIG_11 lda #$2C @@ -192,8 +216,10 @@ L4098: sty TXTPTR+1 jsr CHRGET .ifndef AIM65 + .ifndef SYM1 cmp #$41 beq PR_WRITTEN_BY + .endif .endif tay bne L40EE @@ -267,7 +293,7 @@ L40FA: ldy LINNUM+1 sta MEMSIZ sty MEMSIZ+1 -.if !(.def(MICROTAN) || .def(AIM65)) +.if !(.def(MICROTAN) || .def(AIM65) || .def(SYM1)) sta FRETOP sty FRETOP+1 .endif @@ -424,7 +450,7 @@ QT_WANT: .endif QT_WRITTEN_BY: .ifndef CONFIG_CBM_ALL - .ifndef AIM65 + .if !(.def(AIM65) || .def(SYM1)) .ifdef APPLE asc80 "COPYRIGHT 1977 BY MICROSOFT CO" .byte CR,0 @@ -442,7 +468,7 @@ QT_MEMORY_SIZE: .byte "MEMORY SIZE" .byte 0 QT_TERMINAL_WIDTH: - .ifndef AIM65 + .if !(.def(AIM65) || .def(SYM1)) .byte "TERMINAL " .endif .byte "WIDTH" @@ -471,6 +497,9 @@ QT_BASIC: .ifdef AIM65 .byte " AIM 65 BASIC V1.1" .endif + .ifdef SYM1 + .byte "BASIC V1.1" + .endif .ifdef CBM1 .byte $13 ; HOME .byte "*** COMMODORE BASIC ***" @@ -491,6 +520,8 @@ QT_BASIC: .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 diff --git a/inline.s b/inline.s index 3599520..78f0084 100644 --- a/inline.s +++ b/inline.s @@ -99,10 +99,7 @@ L2443: .endif sta INPUTBUFFER,x inx - .ifdef OSI - .byte $2C - .elseif .def(AIM65) - + .if .def(OSI) || .def(AIM65) .byte $2C .else bne INLIN2 @@ -152,7 +149,11 @@ RDKEY: jsr LFD0C and #$7F .endif + .ifdef SYM1 + cmp #$14 + .else cmp #$0F + .endif bne L2465 pha lda Z14 diff --git a/input.s b/input.s index 720eb3e..98387b9 100644 --- a/input.s +++ b/input.s @@ -8,6 +8,7 @@ INPUTERR: lda INPUTFLG beq RESPERR ; INPUT +.ifndef SYM1 .ifndef CONFIG_SMALL .ifdef CONFIG_10A ; without this, it treats GET errors @@ -18,6 +19,7 @@ INPUTERR: L2A63: .endif .endif +.endif .ifdef CONFIG_CBM1_PATCHES jsr PATCH5 nop @@ -52,6 +54,7 @@ RTS20: ; "GET" STATEMENT ; ---------------------------------------------------------------------------- .ifndef CONFIG_SMALL +.ifndef SYM1 GET: jsr ERRDIR ; CBM: if GET#, then switch input @@ -83,6 +86,7 @@ LCAB6: .endif rts .endif +.endif ; ---------------------------------------------------------------------------- ; "INPUT#" STATEMENT @@ -105,6 +109,12 @@ LCAD8: LCAE0: .endif +.ifdef SYM1 +LC9B0: + jsr OUTQUES ; '?' + jsr OUTSP + jmp L2A9E +.endif ; ---------------------------------------------------------------------------- ; "INPUT" STATEMENT ; ---------------------------------------------------------------------------- @@ -118,7 +128,11 @@ INPUT: jsr LCFFA .endif cmp #$22 +.ifdef SYM1 + bne LC9B0 +.else bne L2A9E +.endif jsr STRTXT lda #$3B jsr SYNCHR @@ -130,6 +144,8 @@ L2A9E: LCAF8: .ifdef APPLE jsr INLINX +.elseif .def(SYM1) + jsr INLIN .else jsr NXIN .endif @@ -233,6 +249,7 @@ PROCESS_INPUT_ITEM: bne INSTART bit INPUTFLG .ifndef CONFIG_SMALL ; GET + .ifndef SYM1 bvc L2AF0 .ifdef MICROTAN jsr MONRDKEY2 @@ -271,6 +288,7 @@ PROCESS_INPUT_ITEM: bne L2AF8 ; always .endif L2AF0: + .endif .endif bmi FINDATA .ifdef CONFIG_FILE @@ -294,6 +312,7 @@ INSTART: bit VALTYP bpl L2B34 .ifndef CONFIG_SMALL ; GET + .ifndef SYM1 bit INPUTFLG bvc L2B10 .ifdef CONFIG_CBM1_PATCHES @@ -308,6 +327,7 @@ INSTART: beq L2B1C .endif L2B10: + .endif .endif sta CHARAC cmp #$22 diff --git a/iscntc.s b/iscntc.s index 7b2d822..c59baf9 100644 --- a/iscntc.s +++ b/iscntc.s @@ -23,4 +23,7 @@ .ifdef AIM65 .include "aim65_iscntc.s" .endif +.ifdef SYM1 +.include "sym1_iscntc.s" +.endif ;!!! runs into "STOP" \ No newline at end of file diff --git a/loadsave.s b/loadsave.s index 63607fd..dd8359b 100644 --- a/loadsave.s +++ b/loadsave.s @@ -11,4 +11,7 @@ .endif .ifdef AIM65 .include "aim65_loadsave.s" +.endif +.ifdef SYM1 +.include "sym1_loadsave.s" .endif \ No newline at end of file diff --git a/make.sh b/make.sh index 2ab6568..43e1f7e 100644 --- a/make.sh +++ b/make.sh @@ -2,7 +2,7 @@ if [ ! -d tmp ]; then mkdir tmp fi -for i in cbmbasic1 cbmbasic2 kbdbasic osi kb9 applesoft microtan aim65; do +for i in cbmbasic1 cbmbasic2 kbdbasic osi kb9 applesoft microtan aim65 sym1; do echo $i ca65 -D $i msbasic.s -o tmp/$i.o && diff --git a/orig/sym1.bin b/orig/sym1.bin new file mode 100644 index 0000000000000000000000000000000000000000..4fef15b33a938fb89e1a7bbd39d64b2da5e56126 GIT binary patch literal 8192 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 + jmp STROUT + +LOADED: + .byte "LOADED",CR,LF + .byte "OK",CR,LF,0 + +SAVED: + .byte "SAVED",CR,LF,0 + +LOAD: + beq L2739 + sta $A64E + jsr CHRGET + bne L2738 + ldy #$80 + jsr USR3 + bcs LC6EF + + lda #LOADED + jsr STROUT + + ldx P3L + ldy P3H + txa + stx VARTAB + sty VARTAB+1 + jmp FIX_LINKS + +LC6DD: + lda #BAD_SAVE + jmp STROUT + +BAD_SAVE: + htasc "BAD SAVE" + .byte CR,LF,0 +LC6EF: + lda #BAD_LOAD + jsr STROUT + jsr SCRTCH + jmp RESTART + +BAD_LOAD: + htasc "BAD LOAD" + .byte CR,LF,0 diff --git a/token.s b/token.s index 5192afa..3c6cfd7 100644 --- a/token.s +++ b/token.s @@ -116,7 +116,7 @@ UNFNC: .ifdef CONFIG_RAM keyword_addr "USR", IQERR .else - keyword_addr "USR", USR + keyword_addr "USR", USR, TOKEN_USR .endif .endif keyword_addr "FRE", FRE diff --git a/trig.s b/trig.s index 12aa0fb..0cb319e 100644 --- a/trig.s +++ b/trig.s @@ -1,5 +1,6 @@ .segment "CODE" +.ifndef SYM1 SIN_COS_TAN_ATN: ; ---------------------------------------------------------------------------- ; "COS" FUNCTION @@ -200,4 +201,5 @@ POLY_ATN: .if .def(CONFIG_11A) && (!.def(CONFIG_2)) .byte $00 ; XXX .endif +.endif .endif \ No newline at end of file diff --git a/zeropage.s b/zeropage.s index 4787d0d..b09a9bb 100644 --- a/zeropage.s +++ b/zeropage.s @@ -186,6 +186,14 @@ ATN: 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)