From 25071e2798cd92cc10aa36e7082f6ce47cb7b03a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Fri, 26 Jan 2018 16:19:17 +0000 Subject: [PATCH] Kernel 0.9.1 : ASM rewrite....Addressing Modes --- .Floppies/A2OSX.BUILD.po | Bin 819200 -> 819200 bytes BIN/ASM.S.EXP.txt | 14 ++- BIN/ASM.S.SRC.txt | 186 +++++++++++++++++---------------------- BIN/ASM.S.SYM.txt | 115 +++++++++++++++++++++++- BIN/ASM.S.txt | 20 +++-- 5 files changed, 216 insertions(+), 119 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 7092d05819a8659d91669075d7f88df1f5451b50..50b8a74ba91dd3ac3c22f592bc35ced4714ebf5d 100644 GIT binary patch delta 20045 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 G)Bgb=rfh2f delta 18842 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 diff --git a/BIN/ASM.S.EXP.txt b/BIN/ASM.S.EXP.txt index 9bf13256..58518fc1 100644 --- a/BIN/ASM.S.EXP.txt +++ b/BIN/ASM.S.EXP.txt @@ -27,12 +27,12 @@ EXP.Eval.Missing lda #ERR.MISSING.EXP sec rts -EXP.Eval.Next jsr SRC.GetNextCharUC +EXP.Eval.Next jsr SRC.GetNextChar bcs EXP.Eval.Missing EXP.Eval.Next1 cmp #'.' Local Label? bne .12 - + jsr EXP.GetLocal bcs .14 @@ -156,7 +156,10 @@ EXP.EvalOperator lda EXP.Operator jmp EXP.Eval.Next *--------------------------------------- -EXP.GetLocal jsr SRC.GetDecimal +EXP.GetLocal jsr SRC.GetNextChar + bcs .9 + + jsr SRC.GetDecimal bcs EXP.EvalExitSYN lda SRC.ACC+1 ora SRC.ACC+2 @@ -164,9 +167,14 @@ EXP.GetLocal jsr SRC.GetDecimal bne EXP.EvalExitSYN Max .255 lda SRC.ACC beq EXP.EvalExitSYN .0 is not allowed + jsr SYM.GetLocal bcs EXP.EvalExitUND rts + +.9 lda #ERR.SYNTAX.ERROR + sec + rts *--------------------------------------- EXP.SetAccA sta SRC.ACC stz SRC.ACC+1 diff --git a/BIN/ASM.S.SRC.txt b/BIN/ASM.S.SRC.txt index 355b9ad7..62286d2e 100644 --- a/BIN/ASM.S.SRC.txt +++ b/BIN/ASM.S.SRC.txt @@ -56,6 +56,7 @@ SRC.PrintLineErr >PUSHW ZPLineBuf .9 rts *--------------------------------------- SRC.ParseLine lda #0 + sta (ZPLocalBuf) >STA.G SYM.bGlobal jsr SRC.GetChar @@ -84,7 +85,7 @@ SRC.ParseLine lda #0 lda SRC.ACC beq SRC.ParseLine.InvLbl .0 is not allowed - jsr SYM.AddLocal + jsr SYM.AddLocalPC bra .7 @@ -165,6 +166,8 @@ SRC.ParseLine.Add.Macro rts *--------------------------------------- SRC.ParseLine.OpCode + stz SRC.AM.ID + >LDYA ZPOPtr >STYA ZPPtr1 @@ -187,6 +190,7 @@ SRC.ParseLine.OpCode ldy #0 .2 lda (ZPLinePtr),y + beq .7 cmp #'a' bcc .3 @@ -197,37 +201,28 @@ SRC.ParseLine.OpCode .3 iny cmp (ZPPtr2),y - bne .4 + bne .7 dex bne .2 - iny lda (ZPLinePtr),y beq .8 End of Line, no AM - jsr SRC.IsLetterOrDigit - bcc .4 + cmp #' ' A space after opcode ? + bne .7 tya - clc + sec skip OP + ' ' adc ZPLinePtr sta ZPLinePtr bcc .5 inc ZPLinePtr+1 -.5 +.5 bra SRC.ParseLine.AM - jsr SRC.ParseLine.AM - rts - - - -.8 clc - rts - -.4 lda ZPPtr1 +.7 lda ZPPtr1 clc adc (ZPPtr1) tax @@ -238,17 +233,19 @@ SRC.ParseLine.OpCode sta ZPPtr1+1 bra .1 +.8 clc + rts + .9 lda #ERR.INV.OPCODE sec .99 rts *--------------------------------------- -SRC.ParseLine.AM stz SRC.AM.ID - stz SRC.AM.StrBuf +SRC.ParseLine.AM stz SRC.AM.StrBuf -.1 jsr SRC.GetNextCharUC any arg immediately after ' '? - bcs .8 no, AM.ID=0 (implied) - - cmp #' ' another space ? +.1 jsr SRC.GetChar + bcs .8 + +.10 cmp #' ' another space ? beq .8 ignore end of line (comment) jsr SRC.IsAMReserved @@ -257,89 +254,44 @@ SRC.ParseLine.AM stz SRC.AM.ID inc SRC.AM.StrBuf ldx SRC.AM.StrBuf sta SRC.AM.StrBuf,x - bra .1 - -.8 clc - rts + bra .7 .2 jsr SRC.IsMODReserved - bcs .21 + bcs .3 + lda #'#' inc SRC.AM.StrBuf ldx SRC.AM.StrBuf sta SRC.AM.StrBuf,x + bra .7 + +.3 jsr SRC.IsLetter Any register? + bcs .6 no, try something else + + >LDYA ZPRPtr + jsr SRC.GetKeyword + bcs .6 + + lda (ZPPtr1) get register len + tax + + ldy SRC.AM.StrBuf + +.4 inc ZPPtr1 + bne .5 + inc ZPPtr1+1 + +.5 lda (ZPPtr1) + iny + sta SRC.AM.StrBuf,y + dex + bne .4 + + sty SRC.AM.StrBuf + bra .1 -.21 jsr SRC.IsLetter Any register? - bcs .70 no, try something else - - ldx ZPLinePtr - stx SRC.LinePtrSave - ldx ZPLinePtr+1 - stx SRC.LinePtrSave+1 - - stz SRC.AM.tmpBuf - sta SRC.AM.tmpBuf+1 - inc SRC.AM.tmpBuf - -.3 jsr SRC.GetNextCharUC - bcs .4 - - jsr SRC.IsLetterOrDigit - bcs .4 - - inc SRC.AM.tmpBuf - ldx SRC.AM.tmpBuf - sta SRC.AM.tmpBuf,x - bra .3 - -.4 ldy #0 - -.5 lda (ZPPtr3),y - beq .71 last register ? - - phy - ldx #$ff - -.6 lda (ZPPtr3),y - iny - inx - cmp SRC.AM.tmpBuf,x - bne .7 - - cpx SRC.AM.tmpBuf - bne .6 - - ply - - ldy #0 register match, add to AM string - ldx SRC.AM.StrBuf - -.61 iny - lda SRC.AM.tmpBuf,y - inx - sta SRC.AM.StrBuf,x - cpy SRC.AM.tmpBuf - bne .61 - - stx SRC.AM.StrBuf - jmp .1 - -.7 ply - tya - sec - adc (ZPPtr3),y - tay - bra .5 - -.71 ldx SRC.LinePtrSave Does not match a register,restore Ptr - stx ZPLinePtr - stx SRC.LinePtrSave+1 - stx ZPLinePtr+1 - - -.70 jsr EXP.Eval - +.6 jsr EXP.Eval bcs .99 ldx #3 @@ -349,18 +301,24 @@ SRC.ParseLine.AM stz SRC.AM.ID bne .73 .72 inx - txa - ora #$30 - inc SRC.AM.StrBuf - ldx SRC.AM.StrBuf - sta SRC.AM.StrBuf,x + lda #'a' - jmp .1 - clc - rts + ldy SRC.AM.StrBuf + +.71 iny + sta SRC.AM.StrBuf,y + dex + bne .71 + sty SRC.AM.StrBuf + bra .1 +.7 jsr SRC.GetNextChar + bcc .10 +.8 clc + rts + .9 lda #ERR.INV.AM.SYN sec .99 rts @@ -593,7 +551,7 @@ SRC.GetKeyword >STYA ZPPtr1 KeyWord table .3 lda (ZPLinePtr),y beq .5 - jsr SRC.IsLetter + jsr SRC.IsLetterUC bcs .5 iny @@ -666,6 +624,22 @@ SRC.IsEXPReserved ldx SRC.EXP.RESERVED .8 clc rts *--------------------------------------- +SRC.IsLetterUC cmp #'A' + bcc .9 + cmp #'Z'+1 + bcc .99 + + cmp #'a' + bcc .9 + cmp #'z'+1 + + eor #$20 + + rts CC if lowercase + +.9 sec +.99 rts +*--------------------------------------- SRC.IsLetterOrDigit jsr SRC.IsDigit10 bcc SRC.IsLetterRTS *--------------------------------------- diff --git a/BIN/ASM.S.SYM.txt b/BIN/ASM.S.SYM.txt index e69087a8..ba16a4ad 100644 --- a/BIN/ASM.S.SYM.txt +++ b/BIN/ASM.S.SYM.txt @@ -30,11 +30,43 @@ SYM.Init >SYSCALL SListNew bcs .9 >STA.G SYM.hGlobals + + >LDYAI 256 + >SYSCALL GetMem.YA + bcs .9 + + >STYA ZPLocalBuf + txa + >STA.G SYM.hLocalBuf + + >LDYAI 256 + >SYSCALL GetMem.YA + bcs .9 + + >STYA ZPMacroBuf + txa + >STA.G MAC.hBuf + + .9 rts *--------------------------------------- -SYM.Quit >LDA.G SYM.hGlobals +SYM.Quit >LDA.G MAC.hBuf + beq .1 + + >SYSCALL FreeMem.A + +.1 >LDA.G SYM.hLocalBuf + beq .2 + + >SYSCALL FreeMem.A + +.2 >LDA.G SYM.hGlobals + beq .8 >SYSCALL SListFree.A - rts + + +.8 clc + rts *--------------------------------------- SYM.Dump >LDYA L.MSG.SYMBOLS >SYSCALL PrintF.YA @@ -171,8 +203,85 @@ SYM.UpdateGlobal lda #SYM.F.RESOLVED >SYSCALL SListUpdateByID rts *--------------------------------------- -SYM.AddLocal +SYM.AddLocalPC tax Save ID + + >LDA.G SYM.LocalIndex + tay clc + adc #6 + bcs .9 + + txa Get Back ID + sta (ZPLocalBuf),y + + iny + lda #SYM.F.RESOLVED + sta (ZPLocalBuf),y + + iny + phy + + ldx #4 + + ldy #ASM.PC+3 + +.1 lda (pData),y + pha + dey + dex + bne .1 + + ldx #4 + + ply + +.2 pla + sta (ZPLocalBuf),y + iny + dex + bne .2 + + lda #0 + sta (ZPLocalBuf),y + tya + >STA.G SYM.LocalIndex + +* clc + rts + +.9 lda #ERR.TOO.MANY.LOCAL +* sec + rts +*--------------------------------------- +SYM.AddLocalPending tax Save ID + + >LDA.G SYM.LocalIndex + tay + clc + adc #6 + bcs .9 + + txa Get Back ID + sta (ZPLocalBuf),y + + ldx #6 F+DWORD+Ending 0 + + lda #0 + +.1 iny + sta (ZPLocalBuf),y + + iny + dex + bne .1 + + >STA.G SYM.LocalIndex + +* clc + rts + +.9 lda #ERR.TOO.MANY.LOCAL +* sec rts *--------------------------------------- SYM.GetLocal diff --git a/BIN/ASM.S.txt b/BIN/ASM.S.txt index 10c1867d..73fa369c 100644 --- a/BIN/ASM.S.txt +++ b/BIN/ASM.S.txt @@ -14,8 +14,8 @@ ZPPtr2 .EQ ZPBIN+2 ZPPtr3 .EQ ZPBIN+4 ZPLineBuf .EQ ZPBIN+6 ZPLinePtr .EQ ZPBIN+8 -ZPBlockPtr .EQ ZPBIN+10 -ZPSymbolPtr .EQ ZPBIN+12 +ZPLocalBuf .EQ ZPBIN+10 +ZPMacroBuf .EQ ZPBIN+12 ZPTmpBuf .EQ ZPBIN+14 ZPAMPtr .EQ ZPBIN+16 ZPRPtr .EQ ZPBIN+18 @@ -23,8 +23,8 @@ ZPOPtr .EQ ZPBIN+20 *--------------------------------------- SYM.LEN .EQ 0 SYM.F .EQ 1 -SYM.F.RESOLVED .EQ %1000000 -SYM.F.RW .EQ %0100000 +SYM.F.RESOLVED .EQ %10000000 +SYM.F.RW .EQ %01000000 SYM.V .EQ 2 *--------------------------------------- ASM.T.AM .EQ 0 @@ -51,6 +51,7 @@ ERR.RANGE .EQ $A9 ERR.UNDEF.SYMBOL .EQ $AA ERR.SYMBOL.REDEF .EQ $AB ERR.TOO.MANY.DO .EQ $AC +ERR.TOO.MANY.LOCAL .EQ $AD ERR.MISSING.EXP .EQ $B0 ERR.EXP.SYN.ERROR .EQ $B1 ERR.INV.MACRO.DEF .EQ $E0 @@ -389,14 +390,12 @@ EXP.Operator .BS 1 EXP.Modifier .BS 1 SRC.LINENUM .BS 2 -SRC.LinePtrSave .BS 2 SRC.Keyword.ID .BS 1 SRC.ACC .BS 4 SRC.ACCTMP .BS 4 SRC.ARG .BS 4 SRC.AM.ID .BS 1 SRC.AM.StrBuf .BS 32 -SRC.AM.tmpBuf .BS 32 *-------------------------------------- .DUMMY .OR 0 @@ -439,8 +438,15 @@ ASM.LOCAL.INVALID .BS 1 SYM.hGlobals .BS 1 SYM.bGlobal .BS 1 SYM.Global .BS 6 -SYM.Lookup .BS 6 SYM.ID .BS 2 + +SYM.hLocalBuf .BS 1 +SYM.LocalIndex .BS 1 + +SYM.Lookup .BS 6 + +MAC.hBuf .BS 1 + DS.END .ED *--------------------------------------- .DO DS.END-DS.START>$FF