diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 9cbfbae2..272ca6b3 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/.Floppies/A2OSX.TEST.po b/.Floppies/A2OSX.TEST.po index 43088190..94637169 100644 Binary files a/.Floppies/A2OSX.TEST.po and b/.Floppies/A2OSX.TEST.po differ diff --git a/.Floppies/ProDOSFX.BOOT.po b/.Floppies/ProDOSFX.BOOT.po index a50297b0..8eadcff7 100644 Binary files a/.Floppies/ProDOSFX.BOOT.po and b/.Floppies/ProDOSFX.BOOT.po differ diff --git a/.Floppies/ProDOSFX.BOOTHD.woz b/.Floppies/ProDOSFX.BOOTHD.woz index 41a43917..f9b474e0 100644 Binary files a/.Floppies/ProDOSFX.BOOTHD.woz and b/.Floppies/ProDOSFX.BOOTHD.woz differ diff --git a/BASIC.FX/BASIC.S.XF.txt b/BASIC.FX/BASIC.S.XF.txt index ea583e6a..ac0b9766 100644 --- a/BASIC.FX/BASIC.S.XF.txt +++ b/BASIC.FX/BASIC.S.XF.txt @@ -16,14 +16,14 @@ BSX.HeadSelect asl A = 0/2 lda IO.D2.Ph0Off+4,x rts *-------------------------------------- -BSX.Recalibrate lda #168 - - ldy BSX.Slotn0 +BSX.Recalibrate ldy BSX.Slotn0 lda IO.D2.Ph0On,y lda #IO.D2.SeekTimeR jsr BSX.Wait100usecA + lda #168 + .1 dec dec diff --git a/BIN/CC.S.CODE.txt b/BIN/CC.S.CODE.txt index b9933550..8fb6b1f9 100644 --- a/BIN/CC.S.CODE.txt +++ b/BIN/CC.S.CODE.txt @@ -216,8 +216,7 @@ CODE.PushFromPtr rts *-------------------------------------- -CODE.PushConstP - lda #$A9 LDA #imm +CODE.PushConstP lda #$A9 LDA #imm jsr CODE.EmitByte bcs .9 @@ -406,8 +405,6 @@ CODE.DSSelect clc >PUSHB.G CC.hOutFile >PUSHWI 0 -* >PUSHWI 0 -* >PUSHBI SEEK.END lda ZPCCConst clc @@ -417,6 +414,7 @@ CODE.DSSelect clc adc PCC.FH+PCC.FH.IDATA+1 sec sbc #$20 + >PUSHYA >PUSHBI SEEK.SET diff --git a/BIN/CC.S.CORE.txt b/BIN/CC.S.CORE.txt index ea79dea8..e7c5871b 100644 --- a/BIN/CC.S.CORE.txt +++ b/BIN/CC.S.CORE.txt @@ -1,7 +1,7 @@ NEW AUTO 3,1 *-------------------------------------- -CC.Init >SYSCALL SListNew +CC.CORE.Init >SYSCALL SListNew bcs .9 >STA.G CC.hDefines @@ -14,8 +14,16 @@ CC.Init >SYSCALL SListNew >SYSCALL SListNew bcs .9 - >STA.G CC.hSymbols - sty ScopePtr + >STA.G CC.hScopes + sty ScopeIdx + + >LDYAI 256 + >SYSCALL GetMem + bcs .9 + + >STYA ZPSymBufPtr + txa + >STA.G CC.hSymBuf >LDYAI 256 >SYSCALL GetMem @@ -25,21 +33,28 @@ CC.Init >SYSCALL SListNew txa >STA.G CC.hStack + lda #CC.LookupIdx + tay + sta (pData),y + * clc .9 rts *-------------------------------------- -CC.Quit ldy ScopePtr +CC.CORE.Quit jsr CS.RUN.FClose + bne CC.CORE.Quit + + ldy ScopeIdx beq .1 .10 lda (pData),y >SYSCALL SListFree - ldy ScopePtr - cpy #CC.hSymbols + ldy ScopeIdx + cpy #CC.hScopes beq .1 - dec ScopePtr + dec ScopeIdx dey bra .10 @@ -55,16 +70,12 @@ CC.Quit ldy ScopePtr .4 >LDA.G CC.hDefineBuf jsr .7 - - >LDA.G CC.hLookupSymBuf - jsr .7 - -.5 jsr CS.RUN.FClose - bne .5 >LDA.G CC.hSymBuf jsr .7 + jsr CC.SYM.LookupFreeAll + >LDA.G CC.hStack .7 beq CC.Quit.RTS @@ -144,7 +155,7 @@ CC.CompileLine.1 bcs .59 ldx #SYM.SC.STATIC Y,A = Type/Qual - bit ScopenCnt + bit bLocalScope bpl .25 bit #SYM.Q.FUNC someone wants to add a local f() ? @@ -168,10 +179,7 @@ CC.CompileLine.1 jsr CC.GetNextCharNB skip '{' bcs .69 - jsr CC.SYM.Store - bcs .29 - - jmp CC.SYM.Free + jmp CC.SYM.StoreF *-------------------------------------- * TODO: AOPS @@ -194,7 +202,7 @@ CC.CompileLine.1 .28 jsr CC.SYM.Store bcs .9 - jsr CC.SYM.Free + bra .68 *-------------------------------------- @@ -210,7 +218,7 @@ CC.CompileLine.1 jsr CC.GetNextCharNB skip '{' bcs .99 - jmp CC.CompileLine.1 + jmp CC.CompileLine.1 *-------------------------------------- .50 >LDYA L.CC.KW jsr CC.LookupID @@ -352,36 +360,20 @@ CC.SListLookup >PUSHA hSList >SYSCALL SListLookup bcs .99 -* pha save KeyID -* phy - >PUSHA KeyID.HI tya >PUSHA KeyID.LO jsr CC.SkipX -.1 >PUSHWZ allocate + >PUSHWZ allocate >PUSHWI 65535 all >PUSHWZ From Start >SYSCALL SListGetData - bcs .9 - >STYA.G CC.LookupSymSize - - txa - >STA.G CC.hLookupSymBuf - >SYSCALL GetMemPtr - -* clc Y,A = SymPtr, X = hSymBuf +.9 rts Y,A = SymSize, X = hSymBuf - rts - -.9 plx - plx - rts - -.99 inc pStack +.99 inc pStack discard extra hSList rts *-------------------------------------- CC.ZPLookupPtrAddAp1 @@ -393,23 +385,26 @@ CC.ZPLookupPtrAddAp1 inc ZPLookupPtr+1 .1 rts *-------------------------------------- -CC.GetDefine >LDYA ZPLineBufPtr - >STYA.G CC.SaveDefine - - >LDA.G CC.hDefines +CC.GetDefine >LDA.G CC.hDefines jsr CC.SListLookup bcs .9 - - >STYA ZPLineBufPtr + + >LDYA ZPLineBufPtr + >STYA.G CC.SaveDefine + txa >STA.G CC.hDefineBuf + >SYSCALL GetMemPtr + >STYA ZPLineBufPtr + .9 rts *-------------------------------------- * CT Stack *-------------------------------------- CC.PushTQ ldy #SYM.Q lda (ZPSymBufPtr),y + and #$FC ignore SYM.Q.FUNC+SYM.Q.FASTCALL jsr CC.Push bcs CC.Push.RTS @@ -449,16 +444,16 @@ CC.PopYA ldy CStackPtr iny sty CStackPtr - + ply - + clc rts .90 pla .9 lda #E.STACKERROR sec - rts + rts *-------------------------------------- CC.Pop ldy CStackPtr beq .9 diff --git a/BIN/CC.S.DECL.txt b/BIN/CC.S.DECL.txt index b661684e..8629d30e 100644 --- a/BIN/CC.S.DECL.txt +++ b/BIN/CC.S.DECL.txt @@ -20,7 +20,7 @@ CC.DECL jsr CC.IsLetter bcs .99 ldx #SYM.SC.STATIC Y,A = Type/Qual - bit ScopenCnt + bit bLocalScope bpl .21 bit #SYM.Q.FUNC someone wants to add a local f() ? @@ -50,7 +50,7 @@ CC.DECL jsr CC.IsLetter .29 bcs .99 - jsr CC.SYM.Free + clv clc diff --git a/BIN/CC.S.EXP.txt b/BIN/CC.S.EXP.txt index 455ed560..585abebd 100644 --- a/BIN/CC.S.EXP.txt +++ b/BIN/CC.S.EXP.txt @@ -204,8 +204,21 @@ CC.EXP.CheckGetSymType clc rts -.1 >LDYA ZPPtr2 - jmp CC.SYM.CheckTypeYA +.1 lda ZPPtr2 + cmp (ZPLookupSymPtr) #SYM.T + bne .9 + + lda ZPPtr2+1 + ldy #SYM.Q + cmp (ZPLookupSymPtr),y + bne .9 + + clc + rts + +.9 lda #E.TMISMATCH + sec + rts *-------------------------------------- CC.EXP.Cast jsr CC.TYPE.Decl bcs .99 @@ -410,7 +423,7 @@ CC.EXP.Get >LDYA L.CC.AOPS lda ZPPtr2 target T beq .3 - lda (ZPLookupSymPtr) SYM.T + lda (ZPLookupSymPtr) SYM.T cmp #SYM.T.VOID beq .2 @@ -423,7 +436,7 @@ CC.EXP.Get >LDYA L.CC.AOPS cmp (ZPLookupSymPtr),y bne .9 -.3 lda (ZPLookupSymPtr) SYM.T +.3 lda (ZPLookupSymPtr) SYM.T sta ZPPtr2 T pha ldy #SYM.Q @@ -545,7 +558,7 @@ CC.EXP.PushDeref lda #$85 STA zp jsr CODE.EmitByte - lda #ZPPtr1+1 + lda #ZS.RT.Ptr1+1 jsr CODE.EmitByte ldy #SYM.Addr @@ -554,7 +567,7 @@ CC.EXP.PushDeref lda #$85 STA zp jsr CODE.EmitByte - lda #ZPPtr1+1 + lda #ZS.RT.Ptr1+1 jsr CODE.EmitByte jsr CODE.Deref diff --git a/BIN/CC.S.F.txt b/BIN/CC.S.F.txt index e01bca51..ac1afcd6 100644 --- a/BIN/CC.S.F.txt +++ b/BIN/CC.S.F.txt @@ -6,11 +6,6 @@ CC.F.Decl stz LocalPtr jsr CC.PushTQ push T/Q for RETURN bcs .99 - ldy #SYM.Q - lda #SYM.Q.FUNC - ora (ZPSymBufPtr),y - sta (ZPSymBufPtr),y - ldx #$80 CPStmt.fDef state jsr CC.STMT.CPStmt bcs .99 @@ -37,15 +32,7 @@ CC.F.Decl stz LocalPtr jsr CC.IsLetter bcs .2 - >LDYA ZPPtr2 - ldx #SYM.SC.AUTO - jsr CC.SYM.New - bcs .99 - - jsr CC.SYM.Store Store f() Args in Local scope - bcs .99 - - jsr CC.SYM.Free + jsr CC.F.NewArg bcs .99 jsr CC.GetCharNB @@ -141,6 +128,29 @@ CC.F.DeclGetTQ lda (ZPLineBufPtr) .8 rts *-------------------------------------- +CC.F.NewArg >LDYA.G CC.SymID + >STYA.G CC.SymIDSave + + >LEA.G CC.ArgBuf + >STYA ZPSymBufPtr + + >LDYA ZPPtr2 + ldx #SYM.SC.AUTO + jsr CC.SYM.New + bcs .9 + + jsr CC.SYM.StoreL Store f() Args in Local scope + bcs .9 + + >LDA.G CC.hSymBuf + >SYSCALL GetMemPtr + >STYA ZPSymBufPtr + + >LDYA.G CC.SymIDSave + >STYA.G CC.SymID + +.9 rts +*-------------------------------------- CC.F.Def.END jsr CODE.Leave jsr CC.Pop T @@ -154,14 +164,24 @@ CC.F.Def.END jsr CODE.Leave rts *-------------------------------------- CC.F.AddTQ pha - tya - ldy ZPSymSize + phy + + ldy #SYM.DefSize + lda (ZPSymBufPtr),y + pha + + inc + inc + sta (ZPSymBufPtr),y + + ply + + pla sta (ZPSymBufPtr),y iny pla sta (ZPSymBufPtr),y - iny - sty ZPSymSize + rts *-------------------------------------- * in : ZPSymPtr @@ -182,7 +202,7 @@ CC.F.CallRetV sec phx >STYA ZPPtr2 - >DEBUG + ror ZPPtr1+1 bRetV bpl .20 no return value on stack @@ -204,13 +224,13 @@ CC.F.CallRetV sec beq .1 no check required cpy ZPPtr2 - bne .91 + bne .24 tax save full Q and #$fC ignore SYM.Q.FUNC,SYM.Q.FASTCALL cmp ZPPtr2+1 - bne .91 +.24 bne .91 txa @@ -401,7 +421,12 @@ CC.F.Call3 ldy #SYM.Addr+1 clc rts -.2 lda #$20 JSR abs +.2 lda #$EA + jsr CODE.EmitByte + lda #$EA + jsr CODE.EmitByte + + lda #$20 JSR abs jsr CODE.TOABSYX Y=HI,X=LO clc rts @@ -411,12 +436,12 @@ CC.F.Call3 ldy #SYM.Addr+1 lda #5 leave room for LDX #imm, JSR abs clc - adc ZPCCConst - sta ZPCCConst + adc ZPCCCode + sta ZPCCCode bcc .90 - inc ZPCCConst+1 + inc ZPCCCode+1 .90 clc rts diff --git a/BIN/CC.S.KW.txt b/BIN/CC.S.KW.txt index c5e9049e..562647cb 100644 --- a/BIN/CC.S.KW.txt +++ b/BIN/CC.S.KW.txt @@ -75,11 +75,11 @@ CC.KW.WHILE.END jsr CC.PopYA Get JMP false location jsr CC.PopYA Get cont: address bcs .9 - + phy tay HI byte plx - + lda #$4C JMP cont: jsr CODE.TOABSYX @@ -130,7 +130,7 @@ CC.KW.FOR jsr CC.GetCharNB bcs .9 jsr CC.KW.StackDiscard - + jsr CC.GetCharNB bcs .9 @@ -248,7 +248,7 @@ CC.KW.RETURN ldy CStackPtr .1 iny skip ; or } beq .9 - + lda (ZPCCStack),y bmi .7 f() @@ -264,15 +264,15 @@ CC.KW.RETURN ldy CStackPtr .7 iny skip bState iny skip Locals - + iny get SYM.T lda (ZPCCStack),y - + pha iny get SYM.Q lda (ZPCCStack),y - + ply jsr CC.EXP.Eval @@ -281,9 +281,9 @@ CC.KW.RETURN ldy CStackPtr jsr CC.SYM.GetYASizeOfInAXC Y,A=T/Q tax X = sizeof jsr CODE.SetRetValue - + jsr CODE.Leave - + clc rts *-------------------------------------- @@ -306,7 +306,7 @@ CC.KW.STRUCT >ENTER 4 tya ldy #1 sta (pStack),y - + jsr CC.SkipX jsr CC.GetNextCharNB @@ -340,13 +340,13 @@ CC.KW.BEGIN jsr CC.GetNextCharNB .7 >LDA.G CC.CmdSave jsr CC.Push bcs .99 - + lda #';' jmp CC.Push - + .9 lda #E.CSYN sec -.99 rts +.99 rts *-------------------------------------- * Input : Value on Stack, Y,A = Type/Qual * Output : CC = true, CS = false diff --git a/BIN/CC.S.LINK.txt b/BIN/CC.S.LINK.txt index 7ec6aed9..171f350b 100644 --- a/BIN/CC.S.LINK.txt +++ b/BIN/CC.S.LINK.txt @@ -1,42 +1,30 @@ NEW AUTO 3,1 *-------------------------------------- -CC.Link.RTS rts - CC.Link >LDYA L.MSG.LINKING >SYSCALL Puts - >LDYAI 256 - >SYSCALL GetMem - bcs CC.Link.RTS - - >STYA ZPSymBufPtr - txa - >STA.G CC.hSymBuf - ldy #0 lda #0 .1 >STYA ZPPtr1 SymID - >PUSHB.G CC.hSymbols + >PUSHB.G CC.hScopes >PUSHW ZPPtr1 SymID >PUSHW pData >SYSCALL SListGetByID bcs .8 - + >STYA ZPPtr2 NextID - >PUSHB.G CC.hSymbols + >PUSHB.G CC.hScopes >PUSHW ZPPtr1 SymID >PUSHW ZPSymBufPtr >PUSHWI $ffff All >PUSHWZ from Start >SYSCALL SListGetData bcs .9 - - >STYA ZPSymSize ldy #SYM.Addr+1 lda (ZPSymBufPtr),y @@ -46,7 +34,7 @@ CC.Link >LDYA L.MSG.LINKING jsr CC.Link.LIBC bcc .6 - + jsr CC.Link.Dump lda #E.FUNDEF sec @@ -54,7 +42,7 @@ CC.Link >LDYA L.MSG.LINKING .6 >LDA.G bTrace bpl .7 - + jsr CC.Link.Dump bcs .9 @@ -63,13 +51,7 @@ CC.Link >LDYA L.MSG.LINKING .8 clc -.9 php - pha - jsr CC.SYM.Free - pla - plp - - rts +.9 rts *-------------------------------------- * Input : pData = Symbol *-------------------------------------- @@ -77,7 +59,7 @@ CC.Link.LIBC >LDYA L.CC.LIBC >STYA ZPLookupPtr ldy #$ff - + .10 iny lda (pData),y bne .10 @@ -119,10 +101,13 @@ CC.Link.LIBC >LDYA L.CC.LIBC plx - >PUSHB.G CC.hSymbols + >PUSHB.G CC.hScopes >PUSHW ZPPtr1 SymID >PUSHW ZPSymBufPtr - >PUSHW ZPSymSize + >PUSHBI 0 + ldy #SYM.DefSize + lda (ZPSymBufPtr),y + >PUSHA >SYSCALL SListSetData rts @@ -141,8 +126,11 @@ CC.Link.LIBC >LDYA L.CC.LIBC rts *-------------------------------------- CC.Link.Dump >PUSHW L.MSG.LINKING2 - >PUSHW pData + >PUSHW ZPPtr1 ID + + >PUSHW pData Name + >PUSHB (ZPSymBufPtr) SYM.T ldy #1 @@ -150,18 +138,21 @@ CC.Link.Dump >PUSHW L.MSG.LINKING2 iny >PUSHB (ZPSymBufPtr),y SYM.SC - + + iny + >PUSHB (ZPSymBufPtr),y SYM.DefSize + ldy #SYM.SizeOf+1 >PUSHB (ZPSymBufPtr),y dey >PUSHB (ZPSymBufPtr),y - + ldy #SYM.Addr+1 >PUSHB (ZPSymBufPtr),y dey >PUSHB (ZPSymBufPtr),y - - >PUSHBI 9 + + >PUSHBI 12 >SYSCALL PrintF rts *-------------------------------------- diff --git a/BIN/CC.S.SYM.txt b/BIN/CC.S.SYM.txt index ea611934..7628e4b0 100644 --- a/BIN/CC.S.SYM.txt +++ b/BIN/CC.S.SYM.txt @@ -7,21 +7,47 @@ NEW CC.SYM.New >STYA ZPPtr2 T/Q stx ZPPtr3 SC - ldy ScopePtr + bit bPass2 + bpl CC.SYM.New1 + + bit bLocalScope + bmi CC.SYM.New1 + + >PUSHB.G CC.hScopes Global Scope + >PUSHW ZPLineBufPtr + + >SYSCALL SListLookup + bcs .9 + + >STYA.G CC.SymID Y,A = KeyID + + jsr CC.SkipX X = KeyLen + + >PUSHB.G CC.hScopes + >PUSHW.G CC.SymID + >PUSHW ZPSymBufPtr + >PUSHWI 65535 all + >PUSHWZ From Start + >SYSCALL SListGetData + bcs .9 + + jsr CC.GetCharNB + cmp #'(' + bne .8 + + jmp CC.F.Decl + +.8 clc +.9 rts Y,A = SymSize +*-------------------------------------- +CC.SYM.New1 ldy ScopeIdx lda (pData),y jsr CC.SYM.NewKey bcs .9 >STYA.G CC.SymID Y,A = KeyID - stx ZPPtr3+1 X = KeyLen - >LDYAI 256 - >SYSCALL GetMem - bcs .9 - - >STYA ZPSymBufPtr - txa - >STA.G CC.hSymBuf + jsr CC.SkipX X = KeyLen lda ZPPtr2 sta (ZPSymBufPtr) #SYM.T @@ -41,12 +67,10 @@ CC.SYM.New >STYA ZPPtr2 T/Q iny cpy #SYM.Def bne .1 - - sty ZPSymSize - stz ZPSymSize+1 - ldx ZPPtr3+1 Key Len - jsr CC.SkipX + tya + ldy #SYM.DefSize + sta (ZPSymBufPtr),y jsr CC.GetCharNB bcs CC.SYM.SetAddr @@ -54,6 +78,11 @@ CC.SYM.New >STYA ZPPtr2 T/Q cmp #'(' bne CC.SYM.NewV + ldy #SYM.Q + lda #SYM.Q.FUNC + ora (ZPSymBufPtr),y + sta (ZPSymBufPtr),y + jmp CC.F.Decl .9 rts @@ -187,68 +216,57 @@ CC.SYM.SetAddrL jsr CC.SYM.GetSymSizeOfInAXC *-------------------------------------- CC.SYM.NewKey >PUSHA >PUSHW ZPLineBufPtr + >SYSCALL SListNewKey + bcs .9 + + + +.9 rts Y,A = KeyID, X = KeyLen +*-------------------------------------- +CC.SYM.StoreF >LDA.G CC.hScopes bit bPass2 - bpl .1 + bpl CC.SYM.Store.1 + + clc + rts +*-------------------------------------- +CC.SYM.Store bit bPass2 + bpl CC.SYM.StoreL Store Global & Local at Pass 1 - txa - bne .1 - - >SYSCALL SListLookup - -* clc + bit bLocalScope Store Local at Pass 2 + bmi CC.SYM.StoreL + clc rts -.1 >SYSCALL SListNewKey - - rts Y,A = KeyID, X = KeyLen -*-------------------------------------- -CC.SYM.Store ldy ScopePtr +CC.SYM.StoreL ldy ScopeIdx lda (pData),y - >PUSHA + +CC.SYM.Store.1 >PUSHA >PUSHW.G CC.SymID >PUSHW ZPSymBufPtr - >PUSHW ZPSymSize + >PUSHBI 0 + ldy #SYM.DefSize + lda (ZPSymBufPtr),y + >PUSHA - bit bPass2 - bpl .1 - - bit ScopenCnt - bmi .1 - - >SYSCALL SListSetData - rts - -.1 >SYSCALL SListAddData + >SYSCALL SListAddData rts *-------------------------------------- -CC.SYM.Free >LDA.G CC.hSymBuf - beq .8 - - >SYSCALL FreeMem - bcs .99 - - >STZ.G CC.hSymBuf - -.99 rts - -.8 clc - rts -*-------------------------------------- -CC.SYM.NewScope ldy ScopePtr - cpy #CC.hSymbols+SCOPE.MAX +CC.SYM.NewScope ldy ScopeIdx + cpy #CC.hScopes+SCOPE.MAX bcs .9 >SYSCALL SListNew bcs .99 - inc ScopePtr - ldy ScopePtr + inc ScopeIdx + ldy ScopeIdx sta (pData),y - dec ScopenCnt + dec bLocalScope clc rts @@ -257,19 +275,23 @@ CC.SYM.NewScope ldy ScopePtr .99 rts *-------------------------------------- CC.SYM.FreeScope - ldy ScopePtr - cpy #CC.hSymbols + ldy ScopeIdx + cpy #CC.hScopes beq * lda (pData),y >SYSCALL SListFree - dec ScopePtr - inc ScopenCnt + dec ScopeIdx + inc bLocalScope - rts + rts *-------------------------------------- -CC.SYM.Lookup >PUSHB ScopePtr +CC.SYM.Lookup >LDA.G CC.LookupIdx + cmp #CC.LookupIdx+LOOKUP.MAX + beq .99 + + >PUSHB ScopeIdx .1 tay lda (pData),y @@ -277,7 +299,7 @@ CC.SYM.Lookup >PUSHB ScopePtr bcc .8 lda (pstack) - cmp #CC.hSymbols + cmp #CC.hScopes beq .9 dec @@ -291,22 +313,59 @@ CC.SYM.Lookup >PUSHB ScopePtr rts .8 inc pStack - + + >STYA.G CC.LookupSymSize + + >INC.G CC.LookupIdx + tay + + txa + sta (pdata),y + + >SYSCALL GetMemPtr >STYA ZPLookupSymPtr +* clc + rts + +.99 lda #E.OOH +* sec + rts +*-------------------------------------- +CC.SYM.LookupFree + >LDA.G CC.LookupIdx + cmp #CC.LookupIdx + beq .9 + + tay + lda (pdata),y + >SYSCALL FreeMem + bcs .99 + + >DEC.G CC.LookupIdx + cmp #CC.LookupIdx + beq .8 + + tay + lda (pdata),y + >SYSCALL GetMemPtr + >STYA ZPLookupSymPtr + +.8 clc + rts + +.9 lda E.INVH +* sec + .99 rts *-------------------------------------- -CC.SYM.LookupFree - >LDA.G CC.hLookupSymBuf - >SYSCALL FreeMem - bcs .99 - - >STZ.G CC.hLookupSymBuf +CC.SYM.LookupFreeAll + +.1 jsr CC.SYM.LookupFree + bcc .1 + + clc rts - - -.99 >DEBUG - rts *-------------------------------------- * Y,A = value T/Q *-------------------------------------- diff --git a/BIN/CC.S.txt b/BIN/CC.S.txt index cf3d1851..0f87fbac 100644 --- a/BIN/CC.S.txt +++ b/BIN/CC.S.txt @@ -12,6 +12,7 @@ NEW *-------------------------------------- FILES.MAX .EQ 4 SCOPE.MAX .EQ 16 +LOOKUP.MAX .EQ 16 *-------------------------------------- SYM.T .EQ 0 SYM.T.VOID .EQ 1 @@ -42,10 +43,10 @@ SYM.SC.EXTERN .EQ 6 SYM.SC.TYPEDEF .EQ 8 SYM.SC.DEFINE .EQ 10 SYM.SC.TAG .EQ 12 -* +SYM.DefSize .EQ 3 SYM.SizeOf .EQ 4 SYM.Addr .EQ 6 -SYM.Def .EQ 8 +SYM.Def .EQ 8 Funtions : fTQ,a1TQ,a2TQ.... * SYM .EQ 10 *-------------------------------------- @@ -79,13 +80,13 @@ ZPLookupPtr .BS 2 CStackPtr .BS 1 LocalPtr .BS 1 -ScopePtr .BS 1 -ScopenCnt .BS 1 +ScopeIdx .BS 1 +bLocalScope .BS 1 + +ZPSymBufPtr .BS 2 * .BS 1 * .BS 1 -ZPSymSize .BS 2 -ZPSymBufPtr .BS 2 ZPLookupSymPtr .BS 2 @@ -114,7 +115,7 @@ CS.START cld *-------------------------------------- L.MSG.GREETINGS .DA MSG.GREETINGS L.MSG.USAGE .DA MSG.USAGE -L.MSG.COMPILING .DA MSG.COMPILING +L.MSG.READING .DA MSG.READING L.MSG.LINKING .DA MSG.LINKING L.MSG.LINKING2 .DA MSG.LINKING2 L.MSG.GENERATING .DA MSG.GENERATING @@ -257,7 +258,7 @@ CS.RUN >PUSHW L.MSG.GREETINGS jsr CS.RUN.ARGS bcs CS.INIT.RTS - jsr CC.Init + jsr CC.CORE.Init bcs CS.INIT.RTS jsr CODE.Init @@ -377,7 +378,7 @@ CS.RUN.FOpen1st >LDA.G CC.InFileArg CS.RUN.FOpen phy pha - >PUSHW L.MSG.COMPILING + >PUSHW L.MSG.READING pla pha >PUSHYA @@ -499,7 +500,7 @@ CS.DOEVENT sec rts *-------------------------------------- CS.QUIT jsr CODE.Quit - jsr CC.Quit + jsr CC.CORE.Quit >LDA.G hLineBuf beq .8 @@ -561,10 +562,10 @@ PrintDebugMsg >PUSHW L.MSG.DEBUG .1 >PUSHYA - lda ScopePtr + lda ScopeIdx sec - sbc #CC.hSymbols - >PUSHA + sbc #CC.hScopes + >PUSHA >PUSHBI 15 >SYSCALL PrintF @@ -642,7 +643,7 @@ PrintSummary lda ZPCCCode+1 >SYSCALL PrintF rts *-------------------------------------- -CheckMain >PUSHB.G CC.hSymbols +CheckMain >PUSHB.G CC.hScopes >PUSHW L.CC.MAIN >SYSCALL SListLookup @@ -650,42 +651,35 @@ CheckMain >PUSHB.G CC.hSymbols >STYA ZPPtr1 SymID - >PUSHB.G CC.hSymbols - + >PUSHB.G CC.hScopes >PUSHW ZPPtr1 SymID - >PUSHWZ allocate + >PUSHW ZPSymBufPtr >PUSHWI 65535 all >PUSHWZ From Start >SYSCALL SListGetData -.9 bcs .99 - - >STYA ZPPtr2 + bcs .99 ldy #SYM.Addr - lda (ZPPtr2),y + lda (ZPSymBufPtr),y iny - ora (ZPPtr2),y - beq .90 + ora (ZPSymBufPtr),y + beq .9 - lda (ZPPtr2),y + lda (ZPSymBufPtr),y sta PCC.FH+PCC.FH.MAIN+1 dey - lda (ZPPtr2),y + lda (ZPSymBufPtr),y sta PCC.FH+PCC.FH.MAIN - txa - >SYSCALL FreeMem +* clc rts -.90 txa - >SYSCALL FreeMem - -.99 >LDYA L.MSG.NOMAIN +.9 >LDYA L.MSG.NOMAIN >SYSCALL puts lda #E.CSYN sec - rts +.99 rts *-------------------------------------- .INB usr/src/bin/cc.s.code .INB usr/src/bin/cc.s.core @@ -709,12 +703,12 @@ MSG.USAGE .AS "Usage : CC