From 066614dab8471074ad8c4493a8811dde5dc87a81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Fri, 25 Sep 2015 17:50:15 +0200 Subject: [PATCH] Work In Progress --- BIN/ASM.S.txt | 94 ++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 78 insertions(+), 16 deletions(-) diff --git a/BIN/ASM.S.txt b/BIN/ASM.S.txt index fa4120e9..9fa4aaf0 100644 --- a/BIN/ASM.S.txt +++ b/BIN/ASM.S.txt @@ -19,9 +19,11 @@ SRC.IN.DEPTH.MAX .EQ 7 *--------------------------------------- ERR.INV.ARGS .EQ 1 ERR.SRC.INV.TYPE .EQ 2 -ERR.SRC.TOO.LONG .EQ 3 -ERR.SRC.TOO.MANY.IN .EQ 4 +ERR.SRC.TOO.MANY.IN .EQ 3 ERR.SYM.TOO.LARGE .EQ 10 +ERR.LINE.TOO.LONG .EQ 20 +ERR.INVALID.LABEL .EQ 21 + *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- @@ -116,6 +118,9 @@ CS.RUN ldy #bCANCEL .2 jsr SRC.ReadLine bcs .9 + jsr SRC.ParseLine + bcs .9 + >PUSHWI TmpBuffer256 >PUSHW SRC.LINENUM >PUSHW L.MSG.SRCLINE @@ -251,7 +256,7 @@ SRC.OPEN sta hFileName bcs .99 bra .8 -.1 cmp #$FA BAS? +.1 cmp #$FA S-C/BAS? bne .98 .8 ldy #SRC.COUNT @@ -272,10 +277,10 @@ SRC.ReadLine ldy #SRC.COUNT adc #SRC.hFILETYPES-1 tay lda (pData),y - bmi SRC.ReadLine.BIN - jmp SRC.ReadLine.TXT + bmi SRC.ReadLine.TFA + jmp SRC.ReadLine.T04 *--------------------------------------- -SRC.ReadLine.BIN >LDYAI 3 LEN + LINENUM +SRC.ReadLine.TFA >LDYAI 3 LEN + LINENUM jsr SRC.ReadLine.YA bcs .9 @@ -284,13 +289,13 @@ SRC.ReadLine.BIN >LDYAI 3 LEN + LINENUM lda READ.BUFFER+2 sta SRC.LINENUM+1 - lda READ.BUFFER - dec - dec - dec + lda READ.BUFFER LEN + sec + sbc #3 remove LEN + LINENUM from LEN + bcc .9 LEN should be at least 3 beq .8 - tay + tay Read remaining chars lda #0 jsr SRC.ReadLine.YA bcs .9 @@ -307,6 +312,7 @@ SRC.ReadLine.BIN >LDYAI 3 LEN + LINENUM iny bne .1 bra .99 + .2 cmp #$C0 REPEAT char? bne .5 iny @@ -342,11 +348,11 @@ SRC.ReadLine.BIN >LDYAI 3 LEN + LINENUM .8 clc .9 rts -.99 lda #ERR.SRC.TOO.LONG +.99 lda #ERR.LINE.TOO.LONG sec rts *-------------------------------------- -SRC.ReadLine.TXT +SRC.ReadLine.T04 clc rts *-------------------------------------- @@ -362,12 +368,66 @@ SRC.ReadLine.YA >PUSHYA >SYSCALL SYS.MLIRead rts *--------------------------------------- -SYM.ADD +SRC.ParseLine stz SRC.BufPtr + jsr SRC.GetNextChar + beq .8 + cmp #'*' Comment? + beq .8 + cmp #' ' + beq SRC.ParseLine.OpCode + +SRC.ParseLine.Sym cmp #'.' Local Label? + bne SRC.ParseLine.SymG + + jsr SRC.GetNextToken + bcs + jsr SRC.IsNumber + bcs SRC.ParseLine.Err1 + +SRC.ParseLine.SymG + jsr SRC.GetToken + jsr SYM.ClearLocal + + +SRC.ParseLine.OpCode + jsr SRC.GetNextCharNB + beq .8 + +.8 clc + rts + +SRC.ParseLine.Err1 lda #ERR.INVALID.LABEL + sec + rts +*--------------------------------------- +SRC.GetToken +*--------------------------------------- +SRC.GetNextCharNB jsr SRC.GetNextChar + beq .9 + cmp #' ' + beq SRC.GetNextCharNB +.9 rts +*--------------------------------------- +SRC.GetNextChar ldx SRC.BufPtr + lda TmpBuffer256,x + inc SRC.BufPtr + and #$7f + rts +*--------------------------------------- +SYM.ClearLocal clc rts - *--------------------------------------- -SYM.LOOKUP +SYM.AddLocal + clc + rts +*--------------------------------------- +*--------------------------------------- +SYM.AddGlobal + clc + rts +*--------------------------------------- +SYM.Lookup clc rts *--------------------------------------- @@ -426,6 +486,8 @@ MSG.SRCLINE >CSTRING "%05D-%s\n" hLIBSTR .BS 1 hFileName .BS 1 SRC.LINENUM .BS 2 +SRC.BufPtr .BS 1 +SRC.Token .BS 256 READ.BUFFER .BS 256 *-------------------------------------- .DUMMY