From 7d804ddd8f6ab14a8105b307c1e4590f97d5a59e Mon Sep 17 00:00:00 2001 From: Michael Steil Date: Sat, 11 Oct 2008 07:15:19 +0000 Subject: [PATCH] . --- defines_apple.s | 46 +++++++------- macros.s | 10 ++++ msbasic.s | 156 +++++++++++++++++++++++++++++------------------- 3 files changed, 126 insertions(+), 86 deletions(-) create mode 100644 macros.s diff --git a/defines_apple.s b/defines_apple.s index 7803c94..98e894f 100644 --- a/defines_apple.s +++ b/defines_apple.s @@ -1,10 +1,11 @@ Z00 := $0000 L0001 := $0001 L0002 := $0002 -GOWARM := $0000 +GOWARM := $0003 GOSTROUT := $0003 GOGIVEAYF := $0008 +USR := $000A CHARAC := $000D ENDCHR := $000E EOLPNTR := $000F @@ -18,9 +19,9 @@ Z14 := $0017 ; Ctrl+O flag Z15 := $0018 Z16 := $0050 Z17 := $0051 -Z18 := $001B +Z18 := $0052 LINNUM := $0053 -TXPSV := $001C +TXPSV := $0053 INPUTBUFFER := $0200 INPUTBUFFERX := $0200 TEMPPT := $0063-14 @@ -85,8 +86,8 @@ RNDSEED := $00D8-14 L1800 := $1800 L1873 := $1873 -MONRDKEY := $1E5A -MONCOUT := $1EA0 +MONRDKEY := $FD0C +MONCOUT := $FDED STACK_TOP := $F8 BYTES_PER_FRAME := $12 @@ -94,9 +95,8 @@ SPACE_FOR_GOSUB := $36 TEMPST := $58 FOR_STACK1 := $0F FOR_STACK2 := $09 -NUM_TOKENS := $1D -NULL_MAX := $F2 ; probably different in original version; the image I have seems to be modified; see PDF -BYTES_PER_ELEMENT := 5 +NUM_TOKENS := $1C +BYTES_PER_ELEMENT := 6 ; ??? should be 5 on Apple BYTES_PER_VARIABLE := 7 BYTES_FP := 5 MANTISSA_BYTES := BYTES_FP-1 @@ -123,38 +123,32 @@ TOKEN_LEFTSTR := $C1 RAMSTART3 := $AAAA RAMSTART2 := $AAAA -USR := $AAAA -SAVE := $AAAA -LOAD := $AAAA -LFD0C := $AAAA -INLIN := $AAAA -CLEAR := $AAAA -L0BF3 := $AAAA -LFEFD := $AAAA -LFECD := $AAAA +LF689 := $F689 +LF800 := $F800 +LF819 := $F819 +LF828 := $F828 +LF864 := $F864 +TEX := $FB2F +LFB40 := $FB40 +LFD0C := $FD0C +LFD6A := $FD6A +LFECD := $FECD +LFEFD := $FEFD + L0D28 := $AAAA -L1528 := $AAAA L000A := $000A L123C := $AAAA L2829 := $AAAA -QT_WRITTEN_BY := $AAAA L2AAA := $AAAA L2A52 := $AAAA L2AA3 := $AAAA L1008 := $AAAA L2A6D := $AAAA L2A68 := $AAAA -LF689 := $AAAA L0008 := $AA -LFB40 := $AAAA L0006 := $AA -LF828 := $AAAA -LF819 := $AAAA -LF800 := $AAAA -LF864 := $AAAA L1F20 := $AAAA L00A4 := $AA L1751 := $AAAA L2198 := $AAAA L13D7 := $AAAA -LFD6A := $AAAA \ No newline at end of file diff --git a/macros.s b/macros.s new file mode 100644 index 0000000..9be51eb --- /dev/null +++ b/macros.s @@ -0,0 +1,10 @@ +; ---------------------------------------------------------------------------- +; Macros + +; htasc - set the hi bit on the last byte of a string for termination +.macro htasc str + .repeat .strlen(str)-1,I + .byte .strat(str,I) + .endrep + .byte .strat(str,.strlen(str)-1) | $80 +.endmacro diff --git a/msbasic.s b/msbasic.s index e9def34..1eefb8f 100644 --- a/msbasic.s +++ b/msbasic.s @@ -40,14 +40,22 @@ TOKEN_ADDRESS_TABLE: .word INPUT-1 .word DIM-1 .word READ-1 +.ifdef APPLE + .word PLT-1 +.else .word LET-1 +.endif .word GOTO-1 .word RUN-1 .word IF-1 .word RESTORE-1 .word GOSUB-1 .word POP-1 +.ifdef APPLE + .word TEX-1 +.else .word REM-1 +.endif .word STOP-1 .word ON-1 .ifndef CBM_KBD_APPLE @@ -589,7 +597,11 @@ LE28E: .ifdef CBM jsr STROUT .else - jsr GOWARM +.ifdef APPLE + jsr GOSTROUT +.else + jsr GOWARM ; XXX +.endif .endif L2351: jsr INLIN @@ -832,8 +844,9 @@ RET3: rts .else .ifdef APPLE +INLIN: ldx #$DD -L0C27: +INLIN1: stx $33 jsr L2900 cpx #$EF @@ -1158,12 +1171,20 @@ STKINI: pla .ifdef CBM2_KBD tay +.else +.ifdef APPLE + sta STACK+249 .else sta STACK+253 +.endif .endif pla .ifndef CBM2_KBD +.ifdef APPLE + sta STACK+250 +.else sta STACK+254 +.endif .endif ldx #STACK_TOP txs @@ -1434,9 +1455,11 @@ NEWSTT2: jsr EXECUTE_STATEMENT jmp NEWSTT EXECUTE_STATEMENT: -.ifndef CONFIG_11 +.ifndef CONFIG_11_NOAPPLE beq RET1 +.ifndef APPLE sec +.endif .else beq RET2 .endif @@ -1590,49 +1613,6 @@ L271C: sty CURLIN+1 RET1: rts -.ifdef APPLE -L0F14: - bne RET1 - jmp L0D28 -L0F19: - jsr L0F42 - jsr LFECD - jsr L0F51 - jmp LFECD -L0F25: - jsr L0F42 - jsr LFEFD - jsr L0F51 - jsr LFEFD - lda #$3B - ldy #$0F - jsr STROUT - jmp L0BF3 - brk - .byte $4F - eor ($44,x) - eor $44 - brk -L0F42: - lda #$6C - ldy #$00 - sta $3C - sty $3D - lda #$6E - sta $3E - sty $3F - rts -L0F51: - lda $6A - ldy $6B - sta $3C - sty $3D - lda $6C - ldy $6D - sta $3E - sty $3F - rts -.endif .ifdef KBD PRT: jsr GETBYT @@ -1664,11 +1644,50 @@ NULL: L2739: jmp IQERR .endif -.ifndef CONFIG_11 +.ifndef CONFIG_11_NOAPPLE CLEAR: bne RET1 jmp CLEARC .endif +.ifdef APPLE +SAVE: + jsr L0F42 + jsr LFECD + jsr L0F51 + jmp LFECD +LOAD: + jsr L0F42 + jsr LFEFD + jsr L0F51 + jsr LFEFD + lda #QT_LOADED + jsr STROUT + jmp FIX_LINKS +QT_LOADED: + .byte 0 ; XXX PATCHED + .byte "OADED" + .byte 0 +L0F42: + lda #$6C + ldy #$00 + sta $3C + sty $3D + lda #$6E + sta $3E + sty $3F + rts +L0F51: + lda $6A + ldy $6B + sta $3C + sty $3D + lda $6C + ldy $6D + sta $3E + sty $3F + rts +.endif .ifdef KIM SAVE: tsx @@ -2188,7 +2207,11 @@ LC9D8: sta Z16 .endif jsr OUTDO +.ifdef APPLE + lda #$80 +.else lda #$0A +.endif jsr OUTDO PRINTNULLS: .ifdef CBM1 @@ -2258,14 +2281,18 @@ L29F5: .ifndef CONFIG_11_NOAPPLE .ifdef APPLE beq L1185 - jmp L1528 + jmp SYNERR L1185: .else bne SYNERR4 .endif pla cmp #TOKEN_TAB +.ifdef APPLE + bne L2A09 +.else bne L2A0A +.endif .else .ifdef CBM2_KBD bne SYNERR4 @@ -2530,7 +2557,11 @@ L2A9E: lda #$2C sta INPUTBUFFER-1 LCAF8: +.ifdef APPLE + jsr INLINX +.else jsr NXIN +.endif .ifdef KBD bmi L2ABE NXIN: @@ -4624,7 +4655,7 @@ ASC: ldy #$00 lda (INDEX),y tay -.ifndef CONFIG_11 +.ifndef CONFIG_11_NOAPPLE jmp SNGFLT1 .else jmp SNGFLT @@ -7002,17 +7033,23 @@ L4192: sty L0002 jmp (L0001) .endif -.ifdef APPLE - .byte $C3,$CF,$D0,$D9,$D2,$C9,$C7,$C8 - .byte $D4,$A0,$B1,$B9,$B7,$B7,$A0,$C2 - .byte $D9,$A0,$CD,$C9,$C3,$D2,$CF,$D3 - .byte $CF,$C6,$D4,$A0,$C3,$CF,$0D,$00 -.endif .ifndef CBM_APPLE QT_WANT: .byte "WANT SIN-COS-TAN-ATN" .byte $00 +.endif QT_WRITTEN_BY: +.ifndef CBM +.ifdef APPLE +; set the MSB of every byte of a string +.macro asc80 str + .repeat .strlen(str),I + .byte .strat(str,I)+$80 + .endrep +.endmacro + asc80 "COPYRIGHT 1977 BY MICROSOFT CO" + .byte $0D,$00 +.else .byte $0D,$0A,$0C .ifdef OSI_KBD .byte "WRITTEN BY RICHARD W. WEILAND." @@ -7021,7 +7058,6 @@ QT_WRITTEN_BY: .endif .byte $0D,$0A,$00 .endif -.ifndef CBM QT_MEMORY_SIZE: .byte "MEMORY SIZE" .byte $00 @@ -7639,7 +7675,7 @@ L2912: bne L2907 ldx $33 rts -L291B: +PLT: .byte $4C L291C: beq L2947 @@ -7697,7 +7733,7 @@ L2962: L2978: cmp #$56 beq L297F - jmp L1528 + jmp SYNERR L297F: ldy $0300 lda $0302 @@ -7705,11 +7741,11 @@ L297F: L2988: dex beq L2930 -L298B: +INLINX: jsr OUTQUES jsr OUTSP ldx #$80 - jmp L0C27 + jmp INLIN brk brk brk