From 6d248041ae7630acef748f48b71cbb7bbc51b042 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Fri, 23 Mar 2018 15:57:35 +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 | 71 +++++++++-------- BIN/ASM.S.FIO.txt | 4 +- BIN/ASM.S.MAC.txt | 14 +++- BIN/ASM.S.OUT.txt | 32 ++++++-- BIN/ASM.S.SRC.txt | 54 ++++++------- BIN/ASM.S.SYM.txt | 162 +++++++++++++++++++-------------------- BIN/ASM.S.txt | 74 +++++++++--------- 9 files changed, 215 insertions(+), 198 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 6316b27b30bcb2a02fce834949df8557b7c339cb..09656c8169ba560af117765679638d3996858541 100644 GIT binary patch delta 27473 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 delta 27154 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 vGiu9;V{ahAvg*ikPPGwS5aWS}1NnxKPTkc8LDA.G MAC.bAdd jsr SRC.GetNextCharNB beq DIR.OP.SYNERR - jsr MAC.Clear + jsr MAC.New .8 lda #$ff >STA.G MAC.bAdd diff --git a/BIN/ASM.S.EXP.txt b/BIN/ASM.S.EXP.txt index 1f01cae5..23cde09e 100644 --- a/BIN/ASM.S.EXP.txt +++ b/BIN/ASM.S.EXP.txt @@ -15,6 +15,10 @@ AUTO 4,1 * & = octal * * = PC *--------------------------------------- +EXP.Eval.Missing lda #ERR.MISSING.EXP + sec + rts + EXP.Eval >STZ.G EXP.Modifier >STZ.G EXP.Prefix >STZ.G EXP.Operator @@ -23,19 +27,15 @@ EXP.Eval >STZ.G EXP.Modifier bcs EXP.Eval.Missing jsr SRC.IsMODReserved - bcs EXP.Eval.Next1 + bcs EXP.Eval.Next txa >STA.G EXP.Modifier lda #'#' >STA.G EXP.Prefix - bra EXP.Eval.Next +EXP.Eval.Next0 jsr SRC.GetNextChar -EXP.Eval.Missing lda #ERR.MISSING.EXP - sec - rts - EXP.Eval.Next lda #2 sta SRC.ACC.SIZE Default To WORD (2 bytes) @@ -44,13 +44,13 @@ EXP.Eval.Next lda #2 stz SRC.ACC+2 stz SRC.ACC+3 - jsr SRC.GetNextChar + jsr SRC.GetChar bcs EXP.Eval.Missing -EXP.Eval.Next1 cmp #'.' Local Label? + cmp #'.' Local Label? bne .12 - jsr EXP.GetLocal + jsr EXP.GetLSymIDInAcc bcs .14 jmp EXP.EvalOperator @@ -133,7 +133,7 @@ EXP.Eval.Next1 cmp #'.' Local Label? .42 jsr SRC.IsLetter Symbol ? bcs EXP.EvalExitSYN - jsr EXP.GetSymbolValue + jsr EXP.GetGSymValueInAcc bcs EXP.EvalExitUND bra EXP.EvalOperator @@ -173,16 +173,16 @@ EXP.EvalOperator >LDA.G EXP.Operator txa >STA.G EXP.Operator - ldx #3 + ldx #4 -.8 lda SRC.ACC,x - sta SRC.ARG,x +.8 lda SRC.ACC.SIZE,x + sta SRC.ARG.SIZE,x dex bpl .8 - jmp EXP.Eval.Next + jmp EXP.Eval.Next0 *--------------------------------------- -EXP.GetLocal jsr SRC.GetNextChar +EXP.GetLSymIDInAcc jsr SRC.GetNextChar bcs .9 jsr SRC.GetDecimal @@ -201,16 +201,9 @@ EXP.GetLocal jsr SRC.GetNextChar .9 lda #ERR.SYNTAX.ERROR sec rts -*--------------------------------------- -EXP.SetAccA sta SRC.ACC - stz SRC.ACC+1 - stz SRC.ACC+2 - stz SRC.ACC+3 - lda #1 - sta SRC.ACC.SIZE - rts *--------------------------------------- -EXP.GetSymbolValue jsr SYM.LookupGlobal +EXP.GetGSymValueInAcc + jsr SYM.LookupGlobal bcs .2 ldy #SYM.Lookup+5 @@ -231,23 +224,37 @@ EXP.GetSymbolValue jsr SYM.LookupGlobal .2 >LDA.G ASM.PASS pass#2? bne .99 yes, undefined symbol - lda #0 - sta SRC.ACC.SIZE Add Pending - jsr SYM.AddGlobal -.3 clc + lda #0 Mark ACC as pending + sta SRC.ACC.SIZE + +.3 jsr SRC.GetNextChar + bcs .8 + + jsr SRC.IsLetterOrDigit + bcc .3 + cmp #'.' + beq .3 + cmp #'_' + beq .3 + +.8 clc rts .99 lda #ERR.UNDEF.SYMBOL sec .9 rts *--------------------------------------- +EXP.SetAccA sta SRC.ACC + stz SRC.ACC+1 + stz SRC.ACC+2 + stz SRC.ACC+3 + lda #1 + sta SRC.ACC.SIZE + rts +*--------------------------------------- EXP.Compute asl tax - >LDA.G ASM.PASS pass#2? - beq .8 jmp (J.EXP.OP-2,x) -.8 clc - rts *--------------------------------------- EXP.MOD.8.3 lda SRC.ACC+2 bra EXP.MOD.8 diff --git a/BIN/ASM.S.FIO.txt b/BIN/ASM.S.FIO.txt index abf4df58..86b98704 100644 --- a/BIN/ASM.S.FIO.txt +++ b/BIN/ASM.S.FIO.txt @@ -55,7 +55,7 @@ FIO.LOAD.ASM.T >STYA ZPPtr2 .4 >PUSHW L.ASM.T.FILENAME >LDYA L.MSG.T.FILE - >SYSCALL PrintF.YA + jsr OUT.Print >PUSHWI 0 Aux type >PUSHBI 6 S.FI.T.BIN @@ -107,7 +107,7 @@ FIO.OpenFile >STYA ZPPtr1 >PUSHW ZPPtr1 >LDYA L.MSG.SRC.FILE - >SYSCALL PrintF.YA + jsr OUT.Print ldy #SRC.COUNT lda (pData),y diff --git a/BIN/ASM.S.MAC.txt b/BIN/ASM.S.MAC.txt index 4ddd7324..b1187d7e 100644 --- a/BIN/ASM.S.MAC.txt +++ b/BIN/ASM.S.MAC.txt @@ -29,7 +29,7 @@ MAC.Quit >LDA.G MAC.hBuf .8 clc rts *--------------------------------------- -MAC.Clear lda #0 +MAC.New lda #0 tay .1 sta (ZPMacroBuf),y @@ -38,7 +38,10 @@ MAC.Clear lda #0 rts *--------------------------------------- -MAC.AddChar tax +MAC.AddChar >LDA.G ASM.PASS If Pass#2, ignore + bne .8 + + tax lda (ZPMacroBuf) * cmp #254 * beq .9 CS if EQ @@ -55,7 +58,7 @@ MAC.AddChar tax beq .1 * >SYSCALL PutChar.A - clc +.8 clc rts .1 @@ -68,7 +71,10 @@ MAC.AddChar tax clc .9 rts *--------------------------------------- -MAC.Store clc +MAC.Store >LDA.G ASM.PASS If Pass#2, ignore + bne .8 + +.8 clc rts *--------------------------------------- diff --git a/BIN/ASM.S.OUT.txt b/BIN/ASM.S.OUT.txt index e1175406..a28e80d7 100644 --- a/BIN/ASM.S.OUT.txt +++ b/BIN/ASM.S.OUT.txt @@ -2,6 +2,10 @@ NEW PREFIX /A2OSX.BUILD AUTO 4,1 *--------------------------------------- +OUT.Init lda #20 + >STA.G OUT.LineCnt + rts +*--------------------------------------- OUT.Reset ldx #4 ldy #ASM.PC @@ -24,6 +28,7 @@ OUT.Reset ldx #4 >STZ.G OUT.Buf >STA.G OUT.bEquate + rts *--------------------------------------- OUT.PrintLineErr >STA.G DIR.Byte Save Error code @@ -70,7 +75,7 @@ OUT.PrintLine.1 jsr OUT.PrintLineOutBuf >PUSHW ZPLineBuf >PUSHW.G SRC.LINENUM >LDYA L.MSG.SRCLINE - >SYSCALL PrintF.YA + jmp OUT.Print OUT.PrintLine.9 rts *--------------------------------------- OUT.PrintLineOn clc @@ -134,7 +139,7 @@ OUT.PrintLineOutBuf >LDA.G OUT.bEquate ldy L.MSG.OUT0,x lda L.MSG.OUT0+1,x >SYSCALL PrintF.YA - rts + rts OUT.PrintLineAcc ldx SRC.ACC.SIZE beq .2 @@ -154,6 +159,24 @@ OUT.PrintLineAcc ldx SRC.ACC.SIZE lda L.MSG.EQU0+1,x >SYSCALL PrintF.YA rts +*--------------------------------------- +OUT.Print >SYSCALL PrintF.YA + bra OUT.Print1 + +OUT.PrintCR lda #13 + >SYSCALL PutChar.A + lda #10 + >SYSCALL PutChar.A + +OUT.Print1 >DEC.G OUT.LineCnt + bne .8 + + lda #20 + sta (pData),y + + >DEBUG + +.8 rts *--------------------------------------- OUT.EmitByte phy phx @@ -170,10 +193,7 @@ OUT.EmitByte phy bpl .1 jsr OUT.PrintLineOutBuf - lda #13 - >SYSCALL PutChar.A - lda #10 - >SYSCALL PutChar.A + jsr OUT.PrintCR .1 jsr OUT.Reset diff --git a/BIN/ASM.S.SRC.txt b/BIN/ASM.S.SRC.txt index 6cfedcc9..e678941b 100644 --- a/BIN/ASM.S.SRC.txt +++ b/BIN/ASM.S.SRC.txt @@ -29,10 +29,7 @@ SRC.ParseLine jsr OUT.Reset .8 clc rts -SRC.ParseLine.Macro >LDA.G ASM.PASS If Pass#2, ignore - bne .8 - - lda (ZPLinePtr) +SRC.ParseLine.Macro lda (ZPLinePtr) cmp #' ' No label, scan to DIR/OP if any bne .1 @@ -82,8 +79,7 @@ SRC.ParseLine.Macro >LDA.G ASM.PASS If Pass#2, ignore .22 jsr MAC.Store bcs SRC.ParseLine.RTS - lda #0 - >STA.G MAC.bAdd + >STZ.G MAC.bAdd .8 clc rts @@ -139,7 +135,7 @@ SRC.ParseLine.LABEL jsr SRC.GetChar cmp #'.' local symbol? bne .1 - >LDA.G SYM.bGlobal + lda (ZPGlobalBuf) beq SRC.ParseLine.InvLbl jsr SRC.GetNextChar @@ -154,38 +150,24 @@ SRC.ParseLine.LABEL jsr SRC.GetChar lda SRC.ACC beq SRC.ParseLine.InvLbl .0 is not allowed - jsr SYM.AddLocalPC + jsr SYM.AddLocal bcs SRC.ParseLine.RTS bra SRC.ParseLine.DirOp .1 jsr SYMG.FlushGlobal bcs SRC.ParseLine.Err - lda #$ff - >STA.G SYM.bGlobal - >LDA.G ASM.PASS - bne .3 + bne .2 - jsr SYM.AddGlobalPC Pass #1; try to add global... - bcc SRC.ParseLine.DirOp yes!!! go scan dir/op - jsr SYM.LookupGlobal already defined...get it + bcc SRC.ParseLine.Redef - >LDA.G SYM.Lookup+SYMG.F - bit #SYMG.F.RW - bne .2 R/W, always update... - - bit #SYMG.F.RESOLVED - bne SRC.ParseLine.Redef - -.2 jsr SYM.UpdateGlobalPC + jsr SYM.NewGlobal Pass #1; try to add global... bra SRC.ParseLine.DirOp -.3 jsr SYM.LookupGlobal Pass #2: should be already defined... - bcs SRC.ParseLine.Undef - - jsr SYM.UpdateGlobalPC +.2 jsr SYM.GetGlobal Pass #2: should be already defined... + bcs SRC.ParseLine.Undef *--------------------------------------- SRC.ParseLine.DirOp jsr SRC.GetNextCharNB Scan for an Opcode... bcs SRC.ParseLine.Ok @@ -478,7 +460,7 @@ SRC.ParseLine.OPAMCheck .2 lda (ZPOpDefPtr) bne .1 - lda #ERR.INV.AM.4.OC +.99 lda #ERR.INV.AM.4.OC sec rts @@ -516,14 +498,24 @@ SRC.ParseLine.OPAMCheck .5 bne .6 ldx SRC.ACCTMP - lda SRC.ACC,x inc SRC.ACCTMP + lda SRC.ACC,x bra .50 .6 cmp #'r - >DEBUG - + bne .99 + ldx SRC.ACCTMP + inc SRC.ACCTMP + lda ASM.PC,x + sec + sbc SRC.ACC,x + pha + + + + pla + bra .50 .8 clc .9 rts diff --git a/BIN/ASM.S.SYM.txt b/BIN/ASM.S.SYM.txt index 4972a14e..9f9e4c89 100644 --- a/BIN/ASM.S.SYM.txt +++ b/BIN/ASM.S.SYM.txt @@ -2,21 +2,20 @@ NEW PREFIX /A2OSX.BUILD AUTO 4,1 *--------------------------------------- -* Global Symbol Record: (8 bytes) -* 0 : Len (8) +* Global Symbol Record: (6+ bytes) +* 0 : Len * 1 : Flags: * b7=0=pending,1=resolved * b6=R/W (.SE) * b2,b1,b0 : Size (in bytes) * 2-5 : 32 bits Value -* 6-7 : LSID (Local Symbols ID) +* 6+ : Local Symbols..... *--------------------------------------- -* Local Symbol Record: (7 bytes) -* 0 : Len (8) +* Local Symbol Record: (6 bytes) +* 0 : Local ID (1->255) * 1 : Flags: * b7=0=pending,1=resolved * 2-5 : 32 bits Value (PC) -* 6 : Local ID (1->255) *--------------------------------------- * Private Symbol Record: (9 bytes) * 0 : Len (8) @@ -31,36 +30,39 @@ SYM.Init >SYSCALL SListNew >STA.G SYM.hGlobals - - >SYSCALL SListNew + >LDYAI 256 + >SYSCALL GetMem.YA bcs .9 - - >STA.G SYM.hLocals + + >STYA ZPGlobalBuf + txa + >STA.G SYM.hGlobalBuf >LDYAI 256 >SYSCALL GetMem.YA bcs .9 - >STYA ZPLocalBuf + >STYA ZPLookupBuf txa - >STA.G SYM.hLocalBuf + >STA.G SYM.hLookupBuf .9 rts *--------------------------------------- -SYM.Reset >STZ.G SYM.bGlobal - >STA.G SYM.LocalIndex +SYM.Reset lda #0 + sta (ZPGlobalBuf) rts *--------------------------------------- -SYM.Quit >LDA.G SYM.hLocalBuf +SYM.Quit >LDA.G SYM.hLookpBuf + beq .1 + + >SYSCALL FreeMem.A + +.1 >LDA.G SYM.hGlobalBuf beq .2 >SYSCALL FreeMem.A -.2 >LDA.G SYM.hLocals - beq .3 - >SYSCALL SListFree.A - -.3 >LDA.G SYM.hGlobals +.2 >LDA.G SYM.hGlobals beq .8 >SYSCALL SListFree.A @@ -129,18 +131,44 @@ SYM.Dump stz ZPLinePtr .8 clc rts *--------------------------------------- -SYM.AddGlobalPC jsr SYM.PC2Global A=PC Size - ora #SYMG.F.RESOLVED PC is always known -*--------------------------------------- -SYM.AddGlobal >STA.G SYM.Global+SYMG.F +SYM.NewGlobal >LDYA ZPLinePtr + >STYA SYM.GlobalPtr - lda #SYMG.SIZE-1 F+V+LSID - >STA.G SYM.Global+SYMG.LEN + jsr SYM.PC2Global A=PC Size + ora #SYMG.F.RESOLVED PC is always known + ldy #SYMG.F + sta (ZPGlobalBuf),y + + lda #SYMG.SIZE-1 +* ldy #SYMG.LEN + sta (ZPGlobalBuf) + clc + rts +*--------------------------------------- +SYM.GetGlobal >PUSHB.G SYM.hGlobals + >PUSHW ZPLinePtr + >PUSHW ZPGlobalBuf + >SYSCALL SListLookup + bcs .9 - >PUSHB.G SYM.hGlobals + adc ZPLinePtr + sta ZPLinePtr + bcc .1 + + inc ZPLinePtr+1 + clc + +.1 tya + >STA.G SYM.GlobalID+1 + txa + >STA.G SYM.GlobalID + +.9 rts +*--------------------------------------- +SYM.AddGlobal >PUSHB.G SYM.hGlobals >PUSHW ZPLinePtr - >PUSHEA.G SYM.Global + >PUSHW ZPGlobalBuf >SYSCALL SListAdd bcs .9 @@ -163,27 +191,20 @@ SYM.AddGlobal >STA.G SYM.Global+SYMG.F *--------------------------------------- SYM.LookupGlobal >PUSHB.G SYM.hGlobals >PUSHW ZPLinePtr - >PUSHEA.G SYM.Lookup + >PUSHW ZPLookupBuf >SYSCALL SListLookup bcs .9 adc ZPLinePtr sta ZPLinePtr - bcc .1 + bcc .8 inc ZPLinePtr+1 clc -.1 tya - >STA.G SYM.GlobalID+1 - txa - >STA.G SYM.GlobalID - +.8 .9 rts *--------------------------------------- -SYM.UpdateGlobalPC jsr SYM.PC2Global - bra SYM.UpdateGlobal -*--------------------------------------- SYM.UpdateGlobalAcc ldx #3 ldy #SYM.Global+SYMG.V+3 @@ -209,7 +230,7 @@ SYM.UpdateGlobal ora #SYMG.F.RESOLVED >SYSCALL SListUpdateByID rts *--------------------------------------- -SYMG.FlushGlobal clc +SYMG.FlushGlobal clc rts *--------------------------------------- SYM.PC2Global ldx #4 @@ -224,10 +245,10 @@ SYM.PC2Global ldx #4 ldx #4 - ldy #SYM.Global+SYMG.V+3 + ldy #SYMG.V+3 .2 pla - sta (pData),y + sta (ZPGlobalBuf),y dey dex bne .2 @@ -235,30 +256,32 @@ SYM.PC2Global ldx #4 ldx #4 ldy #ASM.PC+3 -.3 lda (pData),y +.3 lda (ZPGlobalBuf),y bne .4 dex dey bne .3 -.4 txa A=PC Size +.4 txa + + ora #SYMG.F.RESOLVED + ldy #SYMG.F + sta (ZPGlobalBuf),y + + txa A=PC Size rts *--------------------------------------- -SYM.AddLocalPC tax Save ID +SYM.AddLocal tax Save ID - >LDA.G SYM.LocalIndex + lda (ZPGlobalBuf) tay clc - adc #6 + adc #SYML.SIZE bcs .9 txa Get Back ID - sta (ZPLocalBuf),y - - iny - lda #SYMG.F.RESOLVED - sta (ZPLocalBuf),y + sta (ZPGlobalBuf),y iny phy @@ -278,46 +301,15 @@ SYM.AddLocalPC tax Save ID ply .2 pla - sta (ZPLocalBuf),y + sta (ZPGlobalBuf),y iny dex bne .2 lda #0 - sta (ZPLocalBuf),y + sta (ZPGlobalBuf),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 + sta (ZPGlobalBuf) * clc rts diff --git a/BIN/ASM.S.txt b/BIN/ASM.S.txt index ce5c96fa..6566dfc3 100644 --- a/BIN/ASM.S.txt +++ b/BIN/ASM.S.txt @@ -14,29 +14,29 @@ ZPPtr2 .EQ ZPBIN+2 ZPPtr3 .EQ ZPBIN+4 ZPLineBuf .EQ ZPBIN+6 ZPLinePtr .EQ ZPBIN+8 -ZPLocalBuf .EQ ZPBIN+10 -ZPMacroBuf .EQ ZPBIN+12 -ZPTmpBuf .EQ ZPBIN+14 -ZPAMPtr .EQ ZPBIN+16 -ZPRPtr .EQ ZPBIN+18 -ZPOpsPtr .EQ ZPBIN+20 -ZPOpDefPtr .EQ ZPBIN+22 +ZPGlobalBuf .EQ ZPBIN+10 +ZPLookupBuf .EQ ZPBIN+12 +ZPMacroBuf .EQ ZPBIN+14 +ZPTmpBuf .EQ ZPBIN+16 +ZPAMPtr .EQ ZPBIN+18 +ZPRPtr .EQ ZPBIN+20 +ZPOpsPtr .EQ ZPBIN+22 +ZPOpDefPtr .EQ ZPBIN+24 *--------------------------------------- SYMG.LEN .EQ 0 SYMG.F .EQ 1 -SYMG.F.RESOLVED .EQ %10000000 -SYMG.F.RW .EQ %01000000 -SYMG.F.SIZE .EQ %00000111 +SYMG.F.RESOLVED .EQ %10000000 +SYMG.F.RW .EQ %01000000 +SYMG.F.EQU .EQ %00100000 +SYMG.F.SIZE .EQ %00000111 SYMG.V .EQ 2 -SYMG.LSID .EQ 6 -SYMG.SIZE .EQ 8 +* +SYMG.SIZE .EQ 6 *--------------------------------------- -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 +SYML.ID .EQ 0 +SYML.V .EQ 1 +* +SYML.SIZE .EQ 5 *--------------------------------------- ASM.T.AM .EQ 0 ASM.T.R .EQ 2 @@ -80,7 +80,7 @@ CS.START cld .DA CS.END-CS.START CS .DA DS.END-DS.START DS .DA #0 SS - .DA #24 ZP + .DA #32 ZP .DA 0 *-------------------------------------- * Relocation Table @@ -200,6 +200,8 @@ CS.INIT ldy #S.PS.ARGC jsr MAC.Init bcs .9 + + jsr OUT.Init >LDYAI 256 >SYSCALL GetMem.YA @@ -231,7 +233,7 @@ CS.RUN >SYSCALL GetChar bcs .11 no char cmp #$03 Ctrl-C - beq .99 Abort.... + beq .99 Abort....beq=CS cmp #$13 Ctrl-S bne .11 @@ -253,7 +255,7 @@ CS.RUN >SYSCALL GetChar inc >PUSHA >LDYA L.MSG.PASS - >SYSCALL PrintF.YA + jsr OUT.Print ldy #SRC.hFILENAME lda (pData),y @@ -282,15 +284,15 @@ CS.RUN >SYSCALL GetChar inc sta (pData),y clc - rts +.99 rts .1 jsr SYM.Dump >PUSHW ZPLinePtr >LDYA L.MSG.SUMMARY - >SYSCALL PrintF.YA + jsr OUT.Print lda #0 End of assembly, exit with no error -.99 sec + sec rts .2 jsr SRC.ParseLine @@ -430,8 +432,9 @@ FIO.Stat .BS S.STAT SRC.ACC.SIZE .BS 1 SRC.ACC .BS 4 -SRC.ACCTMP .BS 4 +SRC.ARG.SIZE .BS 1 SRC.ARG .BS 4 +SRC.ACCTMP .BS 4 SRC.AM.StrBuf .BS 32 *-------------------------------------- .DUMMY @@ -447,13 +450,13 @@ SRC.COUNT .BS 1 SRC.hFILES .BS SRC.IN.MAXDEPTH SRC.hFILETYPES .BS SRC.IN.MAXDEPTH +SRC.LINENUM .BS 2 +SRC.AMID .BS 1 + DST.hFILENAME .BS 1 DST.hREFNUM .BS 1 DST.hBUFFER .BS 1 DST.hFILETYPE .BS 1 -SRC.LINENUM .BS 2 - -ASM.T.hMem .BS 1 DIR.Word .BS 2 DIR.Byte .BS 1 @@ -463,6 +466,8 @@ EXP.Prefix .BS 1 EXP.Operator .BS 1 +ASM.T.hMem .BS 1 + ASM.PASS .BS 1 ASM.DO.StackPtr .BS 1 ASM.DO.Stack .BS SRC.DO.MAXDEPTH @@ -476,19 +481,14 @@ ASM.PC .BS 4 ASM.PC.PH .BS 4 SYM.hGlobals .BS 1 -SYM.bGlobal .BS 1 +SYM.GlobalPtr .BS 2 +SYM.hGlobalBuf .BS 1 SYM.GlobalID .BS 2 -SYM.Global .BS SYMG.SIZE -SYM.hLocals .BS 1 +SYM.hLookupBuf .BS 1 -SYM.hLocalBuf .BS 1 -SYM.LocalIndex .BS 1 SYM.LocalID .BS 2 -SYM.Local .BS SYML.SIZE - -SYM.Lookup .BS SYMG.SIZE MAC.hMacros .BS 1 MAC.hBuf .BS 1 @@ -497,8 +497,8 @@ MAC.bAdd .BS 1 OUT.PC .BS 4 OUT.Buf .BS 4 OUT.bEquate .BS 1 +OUT.LineCnt .BS 1 -SRC.AMID .BS 1 DS.END .ED *--------------------------------------- .DO DS.END-DS.START>$FF