From deef96a6bcb8fde265ed5484482b53cf37a065fa Mon Sep 17 00:00:00 2001 From: Kilian Hofmann Date: Sun, 27 Sep 2026 23:22:55 +0200 Subject: [PATCH] More cleanup of ASM --- rom/defines.s | 35 +++++++++++------------- rom/float.s | 7 +---- rom/init.s | 74 +++++++++++++-------------------------------------- rom/program.s | 8 +++--- rom/token.s | 2 +- rom/trig.s | 4 +-- src/main.c | 2 +- 7 files changed, 42 insertions(+), 90 deletions(-) diff --git a/rom/defines.s b/rom/defines.s index 58135c6..21a4610 100644 --- a/rom/defines.s +++ b/rom/defines.s @@ -1,27 +1,22 @@ -; extra/override ZP variables -USR := GORESTART ; XXX - ; constants SPACE_FOR_GOSUB := $3E STACK_TOP := $FA -WIDTH := 80 -WIDTH2 := 30 +WIDTH := 80 ; Default terminal width +WIDTH2 := 70 ; mac column for zoned print RAMSTART2 := $0400 -BYTES_FP := 5 -BYTES_PER_ELEMENT := BYTES_FP -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 +BYTES_FP := 5 +BYTES_PER_ELEMENT := BYTES_FP +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 + +STACK := $0100 +STACK2 := STACK + MAX_EXPON = 10 - -STACK := $0100 -STACK2 := STACK - -INPUTBUFFERX = INPUTBUFFER & $FF00 - -CR=13 -LF=10 +CR = 13 +LF = 10 diff --git a/rom/float.s b/rom/float.s index 0b33ed7..9b8e72d 100644 --- a/rom/float.s +++ b/rom/float.s @@ -46,12 +46,7 @@ LD758: ldx #$0A LD75A: lda MICROSOFT-1,x - and #$3F - sta (LINNUM),y - iny - bne LD766 - inc LINNUM+1 -LD766: + jsr MONCOUT dex bne LD75A dec FORPNT diff --git a/rom/init.s b/rom/init.s index 2519f46..5459b8c 100644 --- a/rom/init.s +++ b/rom/init.s @@ -2,9 +2,9 @@ ; ---------------------------------------------------------------------------- PR_WRITTEN_BY: -lda #QT_WRITTEN_BY -jsr STROUT + lda #QT_WRITTEN_BY + jsr STROUT COLD_START: ldx #$FF @@ -29,12 +29,12 @@ COLD_START: sta GORESTART sta GOSTROUT sta JMPADRS - sta USR + sta GORESTART lda #IQERR - sta USR+1 - sty USR+2 + sta GORESTART+1 + sty GORESTART+2 lda #WIDTH sta Z17 lda #WIDTH2 @@ -81,49 +81,6 @@ L4098: 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: - 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 -L40DD: - 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 -L40FA: - lda LINNUM - ldy LINNUM+1 - sta MEMSIZ - sty MEMSIZ+1 sta FRETOP sty FRETOP+1 L4106: @@ -134,6 +91,10 @@ L4106: stx TXTPTR sty TXTPTR+1 jsr CHRGET + cmp #'A' + bne :+ + jmp PR_WRITTEN_BY +: tay beq L4136 jsr LINGET @@ -178,6 +139,9 @@ L4192: lda #QT_BYTES_FREE jsr STROUT + lda #QT_BASIC + jsr STROUT jsr SCRTCH lda #STROUT @@ -190,20 +154,18 @@ L4192: jmp (GORESTART+1) QT_WRITTEN_BY: - .byte CR,LF,$0C ; FORM FEED + .byte CR,LF .byte "WRITTEN BY WEILAND & GATES" + .byte CR,LF + .byte "PORTED BY KILIAN KURT HOFMANN" .byte CR,LF,0 -QT_MEMORY_SIZE: - .byte "MEMORY SIZE" - .byte 0 QT_TERMINAL_WIDTH: .byte "TERMINAL " .byte "WIDTH" .byte 0 QT_BYTES_FREE: .byte " BYTES FREE" - .byte CR,LF,CR,LF + .byte CR,LF,0 QT_BASIC: - .byte CR,LF .byte "COPYRIGHT 1977 BY MICROSOFT CO." - .byte CR,LF + .byte CR,LF,CR,LF,0 diff --git a/rom/program.s b/rom/program.s index 593ec74..fcca936 100644 --- a/rom/program.s +++ b/rom/program.s @@ -215,7 +215,7 @@ PARSE_INPUT_LINE: ldy #$04 sty DATAFLG L246C: - lda INPUTBUFFERX,x + lda $200,x cmp #$20 beq L24AC sta ENDCHR @@ -248,7 +248,7 @@ L2496: L2497: inx L2498: - lda INPUTBUFFERX,x + lda $200,x sec sbc TOKEN_NAME_TABLE,y beq L2496 @@ -283,7 +283,7 @@ L24C1: ; BY COPYING CHARS UP TO ENDCHR. ; ---------------------------------------------------------------------------- L24C8: - lda INPUTBUFFERX,x + lda $200,x beq L24AC cmp ENDCHR beq L24AC @@ -304,7 +304,7 @@ L24DB: bpl L24DB lda TOKEN_NAME_TABLE,y bne L2498 - lda INPUTBUFFERX,x + lda $200,x bpl L24AA ; ---END OF LINE------------------ L24EA: diff --git a/rom/token.s b/rom/token.s index b8a07ed..c3e4b1f 100644 --- a/rom/token.s +++ b/rom/token.s @@ -65,7 +65,7 @@ UNFNC: keyword_addr "SGN", SGN, TOKEN_SGN keyword_addr "INT", INT keyword_addr "ABS", ABS - keyword_addr "USR", USR, TOKEN_USR + keyword_addr "USR", GORESTART, TOKEN_USR keyword_addr "FRE", FRE keyword_addr "POS", POS keyword_addr "SQR", SQR diff --git a/rom/trig.s b/rom/trig.s index a1c34d0..e09146e 100644 --- a/rom/trig.s +++ b/rom/trig.s @@ -105,8 +105,8 @@ POLY_SIN: .byte $E7,$28,$83,$49,$0F,$DA,$A2 ; PET encoded easter egg text since CBM2 MICROSOFT: - .byte $A1,$54,$46,$8F,$13,$8F,$52,$43 - .byte $89,$CD + .byte "!TFOSORCIM" + .byte 0 ; ---------------------------------------------------------------------------- ; "ATN" FUNCTION diff --git a/src/main.c b/src/main.c index 6770f1f..60f5a0c 100644 --- a/src/main.c +++ b/src/main.c @@ -46,7 +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"); + printf("DF6AR to jump to BASIC\n"); clock_gettime(CLOCK_MONOTONIC, &emulationStart);