From 1ae15321099c23a43f5620bde06978c9639b2abc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Thu, 22 Mar 2018 16:45:23 +0000 Subject: [PATCH] Kernel 0.9.1 : ASM rewrite....Local Symbols --- .Floppies/A2OSX.BUILD.po | Bin 819200 -> 819200 bytes BIN/ASM.S.DIR.txt | 2 +- BIN/ASM.S.EXP.txt | 24 +++++----- BIN/ASM.S.FIO.txt | 4 +- BIN/ASM.S.SRC.txt | 53 +++++++++++---------- BIN/ASM.S.SYM.txt | 97 ++++++++++++++++++++++++--------------- BIN/ASM.S.txt | 41 +++++++++++------ 7 files changed, 130 insertions(+), 91 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 7f6a44282831725192b704c82ddf4d23e798cb5e..6316b27b30bcb2a02fce834949df8557b7c339cb 100644 GIT binary patch delta 24162 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 delta 24553 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 F{}1BT3poG) diff --git a/BIN/ASM.S.DIR.txt b/BIN/ASM.S.DIR.txt index ffdfc734..aecd4b70 100644 --- a/BIN/ASM.S.DIR.txt +++ b/BIN/ASM.S.DIR.txt @@ -2,7 +2,7 @@ NEW PREFIX /A2OSX.BUILD AUTO 4,1 *--------------------------------------- -DIR.Init lda #$80 +DIR.Reset lda #$80 ldy #ASM.LI.ON sta (pData),y diff --git a/BIN/ASM.S.EXP.txt b/BIN/ASM.S.EXP.txt index 2817b13d..1f01cae5 100644 --- a/BIN/ASM.S.EXP.txt +++ b/BIN/ASM.S.EXP.txt @@ -15,15 +15,7 @@ AUTO 4,1 * & = octal * * = PC *--------------------------------------- -EXP.Eval lda #2 - sta SRC.ACC.SIZE Default To WORD (2 bytes) - - stz SRC.ACC - stz SRC.ACC+1 - stz SRC.ACC+2 - stz SRC.ACC+3 - - >STZ.G EXP.Modifier +EXP.Eval >STZ.G EXP.Modifier >STZ.G EXP.Prefix >STZ.G EXP.Operator @@ -44,7 +36,15 @@ EXP.Eval.Missing lda #ERR.MISSING.EXP sec rts -EXP.Eval.Next jsr SRC.GetNextChar +EXP.Eval.Next lda #2 + sta SRC.ACC.SIZE Default To WORD (2 bytes) + + stz SRC.ACC + stz SRC.ACC+1 + stz SRC.ACC+2 + stz SRC.ACC+3 + + jsr SRC.GetNextChar bcs EXP.Eval.Missing EXP.Eval.Next1 cmp #'.' Local Label? @@ -194,7 +194,7 @@ EXP.GetLocal jsr SRC.GetNextChar lda SRC.ACC beq EXP.EvalExitSYN .0 is not allowed - jsr SYM.GetLocal + jsr SYM.LookupLocal bcs EXP.EvalExitUND rts @@ -223,7 +223,7 @@ EXP.GetSymbolValue jsr SYM.LookupGlobal bpl .1 lda (pData),y - and #SYM.F.SIZE + and #SYMG.F.SIZE sta SRC.ACC.SIZE * clc rts diff --git a/BIN/ASM.S.FIO.txt b/BIN/ASM.S.FIO.txt index 9f953d6e..abf4df58 100644 --- a/BIN/ASM.S.FIO.txt +++ b/BIN/ASM.S.FIO.txt @@ -95,11 +95,11 @@ FIO.LOAD.ASM.T >STYA ZPPtr2 lda (ZPPtr1),y clc adc ZPPtr1 - sta ZPOPtr + sta ZPOpsPtr iny lda (ZPPtr1),y adc ZPPtr1+1 - sta ZPOPtr+1 + sta ZPOpsPtr+1 .9 rts *--------------------------------------- diff --git a/BIN/ASM.S.SRC.txt b/BIN/ASM.S.SRC.txt index 96f8d340..6cfedcc9 100644 --- a/BIN/ASM.S.SRC.txt +++ b/BIN/ASM.S.SRC.txt @@ -132,16 +132,16 @@ SRC.ParseLine.Macro >LDA.G ASM.PASS If Pass#2, ignore SRC.ParseLine.RTS rts *--------------------------------------- -SRC.ParseLine.LABEL lda #0 - >STA.G SYM.bGlobal - - jsr SRC.GetChar +SRC.ParseLine.LABEL jsr SRC.GetChar cmp #' ' no label...go scan dir/opcode beq SRC.ParseLine.DirOp cmp #'.' local symbol? bne .1 + >LDA.G SYM.bGlobal + beq SRC.ParseLine.InvLbl + jsr SRC.GetNextChar bcs SRC.ParseLine.InvLbl jsr SRC.GetDecimal @@ -158,10 +158,11 @@ SRC.ParseLine.LABEL lda #0 bcs SRC.ParseLine.RTS bra SRC.ParseLine.DirOp -.1 lda #$ff +.1 jsr SYMG.FlushGlobal + bcs SRC.ParseLine.Err + + lda #$ff >STA.G SYM.bGlobal - inc - sta (ZPLocalBuf) Reset Local Labels >LDA.G ASM.PASS bne .3 @@ -171,11 +172,11 @@ SRC.ParseLine.LABEL lda #0 jsr SYM.LookupGlobal already defined...get it - >LDA.G SYM.Lookup+SYM.F - bit #SYM.F.RW + >LDA.G SYM.Lookup+SYMG.F + bit #SYMG.F.RW bne .2 R/W, always update... - bit #SYM.F.RESOLVED + bit #SYMG.F.RESOLVED bne SRC.ParseLine.Redef .2 jsr SYM.UpdateGlobalPC @@ -210,11 +211,11 @@ SRC.ParseLine.DirOp jsr SRC.GetNextCharNB Scan for an Opcode... bcs SRC.ParseLine.Err SRC.ParseLine.Ok clc - rts +SRC.ParseLine.Err rts SRC.ParseLine.InvLbl lda #ERR.INV.LABEL -SRC.ParseLine.Err sec + sec rts SRC.ParseLine.Redef lda #ERR.SYMBOL.REDEF @@ -245,7 +246,7 @@ SRC.ParseLine.ExecMacro SRC.ParseLine.OpCode stz SRC.AM.StrBuf - >LDYA ZPOPtr + >LDYA ZPOpsPtr >STYA ZPOpDefPtr .1 lda (ZPOpDefPtr) End Of OpCode List @@ -297,19 +298,13 @@ SRC.ParseLine.OpCode inc ZPLinePtr+1 -.5 tya Skip nPtr+Len+OP - clc - adc #3 - adc ZPOpDefPtr - sta ZPOpDefPtr - bcc .6 - inc ZPOpDefPtr+1 -.6 bra SRC.ParseLine.AM +.5 bra SRC.ParseLine.AM .7 lda ZPOpDefPtr clc adc (ZPOpDefPtr) tax + lda ZPOpDefPtr+1 ldy #1 adc (ZPOpDefPtr),y @@ -317,7 +312,7 @@ SRC.ParseLine.OpCode sta ZPOpDefPtr+1 bra .1 -.8 jmp SRC.ParseLine.AMCheck +.8 jmp SRC.ParseLine.OPAMCheckFF .9 lda #ERR.INV.OPCODE sec @@ -458,7 +453,17 @@ SRC.ParseLine.OPAMCheckFF >STA.G SRC.AMID SRC.ParseLine.OPAMCheck - lda (ZPOpDefPtr) + ldy #2 Skip nPtr+Len+OP + lda (ZPOpDefPtr),y LEN + sec LEN Byte + adc #2 nPtr + adc ZPOpDefPtr + sta ZPOpDefPtr + bcc .10 + inc ZPOpDefPtr+1 + +.10 lda (ZPOpDefPtr) + .1 >CMP.G SRC.AMID beq .3 @@ -516,7 +521,7 @@ SRC.ParseLine.OPAMCheck bra .50 .6 cmp #'r - bne * + >DEBUG diff --git a/BIN/ASM.S.SYM.txt b/BIN/ASM.S.SYM.txt index 40edfa22..4972a14e 100644 --- a/BIN/ASM.S.SYM.txt +++ b/BIN/ASM.S.SYM.txt @@ -2,35 +2,41 @@ NEW PREFIX /A2OSX.BUILD AUTO 4,1 *--------------------------------------- -* Global Symbol Record: (8+ bytes) -* 0 : Len (6) +* Global Symbol Record: (8 bytes) +* 0 : Len (8) * 1 : Flags: * b7=0=pending,1=resolved * b6=R/W (.SE) +* b2,b1,b0 : Size (in bytes) * 2-5 : 32 bits Value -* -* Local Symbol Record: (2 bytes) -* 2 : Local ID (1->255) -* 3 : offset from Global Symbol -* ...... -* Ending 0 +* 6-7 : LSID (Local Symbols ID) *--------------------------------------- -* Global Symbol Index (Sorted) -* 0 : hGblock -* 1 : Offset in block +* Local Symbol Record: (7 bytes) +* 0 : Len (8) +* 1 : Flags: +* b7=0=pending,1=resolved +* 2-5 : 32 bits Value (PC) +* 6 : Local ID (1->255) *--------------------------------------- -* Private Symbol Record: (7 bytes) -* 0,1 : MacroID -* 2 : Private ID (0->255) -* 3-6 : Value -*--------------------------------------- -* Macro Record: ( bytes) +* Private Symbol Record: (9 bytes) +* 0 : Len (8) +* 1 : Flags: +* b7=0=pending,1=resolved +* 2-5 : 32 bits Value (PC) +* 6,7 : MCID (Macro Context ID) +* 8 : Private ID (0->255) *--------------------------------------- SYM.Init >SYSCALL SListNew bcs .9 >STA.G SYM.hGlobals + + >SYSCALL SListNew + bcs .9 + + >STA.G SYM.hLocals + >LDYAI 256 >SYSCALL GetMem.YA bcs .9 @@ -41,15 +47,23 @@ SYM.Init >SYSCALL SListNew .9 rts *--------------------------------------- +SYM.Reset >STZ.G SYM.bGlobal + >STA.G SYM.LocalIndex + rts +*--------------------------------------- SYM.Quit >LDA.G SYM.hLocalBuf beq .2 >SYSCALL FreeMem.A -.2 >LDA.G SYM.hGlobals - beq .8 +.2 >LDA.G SYM.hLocals + beq .3 >SYSCALL SListFree.A +.3 >LDA.G SYM.hGlobals + beq .8 + >SYSCALL SListFree.A + .8 clc rts *--------------------------------------- @@ -81,15 +95,15 @@ SYM.Dump stz ZPLinePtr adc #0 sta ZPPtr1+1 - ldy #SYM.F Get Symbol Size + ldy #SYMG.F Get Symbol Size lda (ZPPtr1),y - and #SYM.F.SIZE + and #SYMG.F.SIZE beq .3 pha tax - iny SYM.V + iny SYMG.V .2 lda (ZPPtr1),y >PUSHA @@ -116,12 +130,12 @@ SYM.Dump stz ZPLinePtr rts *--------------------------------------- SYM.AddGlobalPC jsr SYM.PC2Global A=PC Size - ora #SYM.F.RESOLVED PC is always known + ora #SYMG.F.RESOLVED PC is always known *--------------------------------------- -SYM.AddGlobal >STA.G SYM.Global+SYM.F +SYM.AddGlobal >STA.G SYM.Global+SYMG.F - lda #5 F+DWORD - >STA.G SYM.Global+SYM.LEN + lda #SYMG.SIZE-1 F+V+LSID + >STA.G SYM.Global+SYMG.LEN >PUSHB.G SYM.hGlobals >PUSHW ZPLinePtr @@ -141,7 +155,7 @@ SYM.AddGlobal >STA.G SYM.Global+SYM.F .HS B0 BCS .9 sec tya - >STA.G SYM.ID+1 + >STA.G SYM.GlobalID+1 dey txa sta (pData),y @@ -161,9 +175,9 @@ SYM.LookupGlobal >PUSHB.G SYM.hGlobals clc .1 tya - >STA.G SYM.ID+1 + >STA.G SYM.GlobalID+1 txa - >STA.G SYM.ID + >STA.G SYM.GlobalID .9 rts *--------------------------------------- @@ -172,7 +186,7 @@ SYM.UpdateGlobalPC jsr SYM.PC2Global *--------------------------------------- SYM.UpdateGlobalAcc ldx #3 - ldy #SYM.Global+SYM.V+3 + ldy #SYM.Global+SYMG.V+3 .1 lda SRC.ACC,x sta (pData),y @@ -182,19 +196,22 @@ SYM.UpdateGlobalAcc ldx #3 lda SRC.ACC.SIZE *--------------------------------------- -SYM.UpdateGlobal ora #SYM.F.RESOLVED - >STA.G SYM.Global+SYM.F +SYM.UpdateGlobal ora #SYMG.F.RESOLVED + >STA.G SYM.Global+SYMG.F - lda #5 F+DWORD - >STA.G SYM.Global+SYM.LEN + lda #SYMG.SIZE-1 F+V+LSID + >STA.G SYM.Global+SYMG.LEN >PUSHB.G SYM.hGlobals - >PUSHW.G SYM.ID + >PUSHW.G SYM.GlobalID >PUSHEA.G SYM.Global >SYSCALL SListUpdateByID rts *--------------------------------------- +SYMG.FlushGlobal clc + rts +*--------------------------------------- SYM.PC2Global ldx #4 ldy #ASM.PC @@ -207,7 +224,7 @@ SYM.PC2Global ldx #4 ldx #4 - ldy #SYM.Global+SYM.V+3 + ldy #SYM.Global+SYMG.V+3 .2 pla sta (pData),y @@ -240,7 +257,7 @@ SYM.AddLocalPC tax Save ID sta (ZPLocalBuf),y iny - lda #SYM.F.RESOLVED + lda #SYMG.F.RESOLVED sta (ZPLocalBuf),y iny @@ -309,7 +326,11 @@ SYM.AddLocalPending tax Save ID * sec rts *--------------------------------------- -SYM.GetLocal +SYM.LookupLocal lda #2 + sta SRC.ACC.SIZE + lda #$FF + sta SRC.ACC + sta SRC.ACC+1 clc rts *--------------------------------------- diff --git a/BIN/ASM.S.txt b/BIN/ASM.S.txt index 0278b020..ce5c96fa 100644 --- a/BIN/ASM.S.txt +++ b/BIN/ASM.S.txt @@ -19,15 +19,24 @@ ZPMacroBuf .EQ ZPBIN+12 ZPTmpBuf .EQ ZPBIN+14 ZPAMPtr .EQ ZPBIN+16 ZPRPtr .EQ ZPBIN+18 -ZPOPtr .EQ ZPBIN+20 +ZPOpsPtr .EQ ZPBIN+20 ZPOpDefPtr .EQ ZPBIN+22 *--------------------------------------- -SYM.LEN .EQ 0 -SYM.F .EQ 1 -SYM.F.RESOLVED .EQ %10000000 -SYM.F.RW .EQ %01000000 -SYM.F.SIZE .EQ %00000111 -SYM.V .EQ 2 +SYMG.LEN .EQ 0 +SYMG.F .EQ 1 +SYMG.F.RESOLVED .EQ %10000000 +SYMG.F.RW .EQ %01000000 +SYMG.F.SIZE .EQ %00000111 +SYMG.V .EQ 2 +SYMG.LSID .EQ 6 +SYMG.SIZE .EQ 8 +*--------------------------------------- +SYML.LEN .EQ 0 +SYML.F .EQ 1 +SYML.F.RESOLVED .EQ %10000000 +SYML.V .EQ 2 +SYML.ID .EQ 6 +SYML.SIZE .EQ 7 *--------------------------------------- ASM.T.AM .EQ 0 ASM.T.R .EQ 2 @@ -192,8 +201,6 @@ CS.INIT ldy #S.PS.ARGC jsr MAC.Init bcs .9 - jsr DIR.Init - >LDYAI 256 >SYSCALL GetMem.YA bcs .9 @@ -256,6 +263,9 @@ CS.RUN >SYSCALL GetChar jsr FIO.OpenFile bcs .99 + jsr DIR.Reset + jsr SYM.Reset + .10 jsr FIO.ReadLine bcc .2 cmp #$4C End Of File? @@ -271,8 +281,6 @@ CS.RUN >SYSCALL GetChar bne .1 inc sta (pData),y - jsr DIR.Init Reset - >DEBUG clc rts @@ -469,13 +477,18 @@ ASM.PC.PH .BS 4 SYM.hGlobals .BS 1 SYM.bGlobal .BS 1 -SYM.Global .BS 6 -SYM.ID .BS 2 + +SYM.GlobalID .BS 2 +SYM.Global .BS SYMG.SIZE + +SYM.hLocals .BS 1 SYM.hLocalBuf .BS 1 SYM.LocalIndex .BS 1 +SYM.LocalID .BS 2 +SYM.Local .BS SYML.SIZE -SYM.Lookup .BS 6 +SYM.Lookup .BS SYMG.SIZE MAC.hMacros .BS 1 MAC.hBuf .BS 1