diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 5d1c07ae..caf5adc7 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/BIN/CC.S.CORE.txt b/BIN/CC.S.CORE.txt index 70014555..33a3aa78 100644 --- a/BIN/CC.S.CORE.txt +++ b/BIN/CC.S.CORE.txt @@ -101,14 +101,7 @@ CORE.CompileFile bcs .9 jsr CORE.CompileLine - bcs .9 - - >LDA.G bDebug - bpl CORE.CompileFile - - jsr PrintDebugMsg - - bra CORE.CompileFile + bcc CORE.CompileFile .9 rts *-------------------------------------- @@ -132,9 +125,12 @@ CORE.CompileLine .2 cmp #'}' End of CPStmt ? bne .3 - jsr CORE.GetNCharNB Skip '}' + jsr CORE.GetNCharNBNL Skip '}' jsr STMT.CPStmt.END + bcs .9 + + jsr CORE.GetCharNBNL bcc CORE.CompileLine rts @@ -142,7 +138,7 @@ CORE.CompileLine .3 cmp #';' End of Stmt ? bne .4 - jsr CORE.GetNCharNB Skip ';' + jsr CORE.GetNCharNBNL Skip ';' jsr STMT.Stmt.END bcs .9 @@ -410,7 +406,9 @@ CORE.GetCharNBNL bne CORE.GetNCharNB.RTS jsr FIO.FGetS - bcs CORE.GetNCharNB.RTS + bcc CORE.GetCharNBNL + + rts *-------------------------------------- CORE.GetNCharNBNL jsr CORE.GetNCharNB diff --git a/BIN/CC.S.DECL.txt b/BIN/CC.S.DECL.txt index df343067..8839342e 100644 --- a/BIN/CC.S.DECL.txt +++ b/BIN/CC.S.DECL.txt @@ -39,9 +39,7 @@ DECL.TYPEDEF jsr CORE.GetNCharNB .98 lda #E.CSYN sec -.99 -DECL.TYPEDEF.RTS - rts +.99 rts *-------------------------------------- * X = type qual *-------------------------------------- @@ -86,51 +84,43 @@ DECL.X jsr TYPE.GetTQInYA .98 lda #E.CSYN sec .99 rts -*-------------------------------------- + .7 sec Reset Buffer - +*-------------------------------------- DECL.YAC ldx #SYM.SC.STATIC Y,A = Type/Qual - bit bLocalScope - bpl .25 - bit #SYM.Q.FUNC someone wants to add a local f() ? - bne .98 + bit bLocalScope + bpl .22 ldx #SYM.SC.AUTO -.25 jsr SYM.New Y,A=T/Q, X=SC, C=clear/reuse +.22 jsr SYM.New Y,A=T/Q, X=SC, C=clear/reuse bcs .98 OOM or DUP -.22 jsr CC.GetCharNB + jsr SYM.GetTQInYA Y,A = T/Q + bit #SYM.Q.FUNC + bne .8 + + jsr CC.GetCharNB bcs .98 - cmp #';' - bne .26 + cmp #';' no initializer...store SYM + beq .28 - ldy #SYM.Q - lda (ZPSymBufPtr),y - and #SYM.Q.FUNC - beq .28 no initializer...store SYM - - clc function are already stored - rts -*-------------------------------------- -* Initializer -*-------------------------------------- -.26 cmp #'=' type var = value ? + cmp #'=' type var = value ? bne .98 jsr CORE.GetNCharNB skip '=' bcs .98 - jsr SYM.GetTypeInYA expected T/Q + jsr SYM.GetTQInYA expected T/Q jsr EXP.Eval bcs .99 jsr SYM.GetAddr1 bcs .99 - jsr SYM.GetTypeInYA Y,A = T/Q + jsr SYM.GetTQInYA Y,A = T/Q jsr SYM.PopValue Set value to this var .29 bcs .99 diff --git a/BIN/CC.S.F.txt b/BIN/CC.S.F.txt index e8e40fed..5b66235d 100644 --- a/BIN/CC.S.F.txt +++ b/BIN/CC.S.F.txt @@ -1,34 +1,26 @@ NEW AUTO 3,1 *-------------------------------------- -F.Decl ldy #SYM.Q - lda (ZPSymBufPtr),y - ora #SYM.Q.FUNC - sta (ZPSymBufPtr),y - - and #$FC - sta ZPPtr2+1 - - lda (ZPSymBufPtr) #SYM.T - sta ZPPtr2 T/Q for _RETURN_ - - stz LocalPtr - - jsr SYM.Store Store this f() with no prototype... - bcs .99 +F.Decl stz LocalPtr jsr SCOPE.New bcs .99 - lda ZPPtr2+1 #SYM.Q - and #$F0 + lda (ZPSymBufPtr) #SYM.T + pha + + ldy #SYM.Q + lda (ZPSymBufPtr),y + and #SYM.Q.PPPOINTER+SYM.Q.AAARRAY + + ply + cpy #SYM.T.VOID bne .10 - lda ZPPtr2 #SYM.T - cmp #SYM.T.VOID - beq .11 + tax + beq .11 function is void -.10 jsr F.AddReturnVar +.10 jsr F.AddReturnVar Y,A = T/Q bcs .99 .11 jsr CORE.GetNCharNBNL Skip ( @@ -85,20 +77,22 @@ F.Decl ldy #SYM.Q .6 jsr SYM.Add0000 definition End bcs .99 - ldy #SYM.ArgSize - lda LocalPtr - sta (ZPSymBufPtr),y - jsr CORE.GetNCharNBNL Skip ')' bcs .9 cmp #';' bne .7 - + jsr SCOPE.Close discard local scope bcs .99 - jmp SYM.Update Store this declaration & exit + jsr SYM.Update Store this declaration & exit + bcs .99 + + jsr CORE.GetNCharNBNL Skip ';' + + clc no error even if EOF + rts *-------------------------------------- .7 cmp #'{' bne .9 @@ -115,7 +109,7 @@ F.Def >LDA.G CC.bInitCode .1 jsr SYM.SetAddrCCode f() Code starts HERE - jsr SYM.Update + jsr SYM.Update Store f() Declaration bcs .99 lda LocalPtr @@ -123,7 +117,18 @@ F.Def >LDA.G CC.bInitCode bcs .99 >LDYA L.PCC.ENTER - jmp CODE.EmitPCC Store f() Declaration / Start Definition + jsr CODE.EmitPCC Start Definition + bcs .99 + + lda #$ff + >STA.G CC.CmdSave + + jsr STMT.New00 + bcs .99 + + jsr STMT.SetTypeCP + bcs .99 + .99 rts *-------------------------------------- @@ -131,14 +136,15 @@ F.Def.END lda #'X' define EXIT Label jsr SYM.NewLabelA bcs .9 + jsr STMT.Close + bcs .9 + >LDYA L.PCC.LEAVE jsr CODE.EmitPCC bcs .9 - jsr STMT.Close + jsr SCOPE.Close bcs .9 - - jmp SCOPE.Close .9 rts *-------------------------------------- @@ -193,6 +199,8 @@ F.AddReturnVar ldx ZPLineBufPtr ldx ZPLineBufPtr+1 phx + >STYA ZPPtr2 Y,A = T/Q + >LDYA L.CC._RETURN_ >STYA ZPLineBufPtr diff --git a/BIN/CC.S.FIO.txt b/BIN/CC.S.FIO.txt index 77ba4047..c836492c 100644 --- a/BIN/CC.S.FIO.txt +++ b/BIN/CC.S.FIO.txt @@ -102,6 +102,9 @@ FIO.FOpen phy FIO.FGetS >LDYA.G LineBufPtr >STYA ZPLineBufPtr + lda #0 + sta (ZPLineBufPtr) set to Empty line + >LDA.G LineCntPtr tay lda (pData),y diff --git a/BIN/CC.S.KW.txt b/BIN/CC.S.KW.txt index e074650f..0d94a825 100644 --- a/BIN/CC.S.KW.txt +++ b/BIN/CC.S.KW.txt @@ -3,7 +3,7 @@ NEW *-------------------------------------- * Built in Keywords *-------------------------------------- -KW.IF jsr STMT.NewCPS00 +KW.IF jsr SCOPE.New bcs .99 jsr CC.GetCharNB @@ -34,29 +34,27 @@ KW.IF jsr STMT.NewCPS00 cmp #')' bne .9 - jmp STMT.SetCPSType + jsr STMT.New00 + bcs .99 + + jmp STMT.SetType .9 lda #E.CSYN sec .99 rts *-------------------------------------- -KW.IF.END jsr CORE.GetCharNBNL - bcs .1 - - cmp #';' - beq .1 +KW.IF.END jsr STMT.Close + bcs .99 >LDYA L.CC.KW2.IF Check allowed KW for IF.... jsr CC.LookupID bcc .2 -.1 lda #'E' define ELSE Label + lda #'E' define ELSE Label jsr SYM.NewLabelA bcs .99 - jmp STMT.Close - - rts + jmp SCOPE.Close *-------------------------------------- .2 lda #'X' jsr SYM.LookupLabelA @@ -70,11 +68,13 @@ KW.IF.END jsr CORE.GetCharNBNL jsr SYM.NewLabelA bcs .99 - lda #KW.ELSE.ID replace IF by ELSE keyword - ldy CStackPtr - sta (ZPCCStack),y + lda #KW.ELSE.ID + >STA.G CC.CmdSave - jmp STMT.SetCPSType reuse IF STMT + jsr STMT.New00 + bcs .99 + + jmp STMT.SetType .9 lda #E.CSYN sec @@ -84,15 +84,21 @@ KW.ELSE lda #E.CSYN illegal sec rts *-------------------------------------- -KW.ELSE.END lda #'X' define EXIT Label +KW.ELSE.END jsr STMT.Close + bcs .99 + + lda #'X' define EXIT Label jsr SYM.NewLabelA bcs .99 - jmp STMT.Close + jmp SCOPE.Close .99 rts *-------------------------------------- -KW.WHILE lda #'C' define CONT Label +KW.WHILE jsr SCOPE.New + bcs .99 + + lda #'C' define CONT Label jsr SYM.NewLabelA bcs .99 @@ -123,17 +129,20 @@ KW.WHILE lda #'C' define CONT Label cmp #')' bne .9 - - jsr STMT.NewCPS00 + + jsr STMT.New00 bcs .99 - - jmp STMT.SetCPSType + + jmp STMT.SetType .9 lda #E.CSYN sec .99 rts *-------------------------------------- -KW.WHILE.END >LDYA L.PCC.SLEEP +KW.WHILE.END jsr STMT.Close + bcs .99 + + >LDYA L.PCC.SLEEP jsr CODE.EmitPCC bcs .99 @@ -147,13 +156,9 @@ KW.WHILE.END >LDYA L.PCC.SLEEP lda #'B' define BREAK Label jsr SYM.NewLabelA - bcs .99 - jsr SCOPE.Close - bcs .99 + jmp SCOPE.Close - jmp STMT.Close - .99 rts *-------------------------------------- KW.DO jsr SCOPE.New @@ -163,14 +168,17 @@ KW.DO jsr SCOPE.New jsr SYM.NewLabelA bcs .99 - jsr STMT.NewCPS00 + jsr STMT.New00 bcs .99 - jmp STMT.SetCPSType + jmp STMT.SetType .99 rts *-------------------------------------- -KW.DO.END >LDYA L.CC.KW2.DO Check allowed KW for DO.... +KW.DO.END jsr STMT.Close + bcs .99 + + >LDYA L.CC.KW2.DO Check allowed KW for DO.... jsr CC.LookupID bcs .9 @@ -196,23 +204,20 @@ KW.DO.END >LDYA L.CC.KW2.DO Check allowed KW for DO.... jsr CODE.TOABSYX bcs .99 - lda #'B' define BREAK Label - jsr SYM.NewLabelA - bcs .99 - jsr CC.GetCharNB bcs .99 cmp #')' bne .9 - jsr CORE.GetNCharNB + jsr CORE.GetNCharNB skip ')' bcs .9 - - jsr SCOPE.Close + + lda #'B' define BREAK Label + jsr SYM.NewLabelA bcs .99 - - jmp STMT.Close + + jmp SCOPE.Close .9 lda #E.CSYN sec @@ -245,7 +250,7 @@ KW.FOR jsr CC.GetCharNB jsr SCOPE.New bcs .19 - + >LDYA L.CC.TYPEQUAL jsr CC.LookupID bcs .1 @@ -328,10 +333,10 @@ KW.FOR jsr CC.GetCharNB jsr SYM.NewLabelA bcs .99 - jsr STMT.NewCPS00 + jsr STMT.New00 bcs .9 - jmp STMT.SetCPSType + jmp STMT.SetType .9 lda #E.CSYN sec @@ -342,15 +347,15 @@ KW.FOR.END lda #$60 jsr CODE.EmitByte set RTS for JSR code; bcs .99 + jsr STMT.Close + bcs .99 + lda #'B' define BREAK Label jsr SYM.NewLabelA bcs .99 - jsr STMT.Close - bcs .99 + jmp SCOPE.Close FOR () - jmp SCOPE.Close - .99 rts *-------------------------------------- KW.SWITCH jsr CC.GetCharNB @@ -384,6 +389,7 @@ KW.SWITCH jsr CC.GetCharNB .1 >LDYAI 256 >SYSCALL GetMem bcs .99 + txa jsr CC.Push push CPS.hMEM @@ -391,7 +397,7 @@ KW.SWITCH jsr CC.GetCharNB jsr CC.Push push CPS.MemPtr bcs .99 - jsr STMT.NewCPS + jsr STMT.New bcs .99 jsr CC.GetCharNB @@ -400,15 +406,15 @@ KW.SWITCH jsr CC.GetCharNB cmp #')' bne .98 + jsr STMT.SetType { + bcs .99 + lda #'J' jsr SYM.LookupLabelA bcs .99 lda #$4C emit JMP JmpTable - jsr CODE.TOABSYX - bcs .99 - - jmp STMT.SetCPSType + jmp CODE.TOABSYX .97 lda #E.TMISMATCH sec @@ -479,7 +485,7 @@ KW.SWITCH.END lda #'J' define JMP Label .2 >LDYA L.PCC.Pop16 jsr CODE.EmitPCC bcs .99 - + lda #'D' jsr SYM.LookupLabelA bcs .3 @@ -500,7 +506,7 @@ KW.SWITCH.END lda #'J' define JMP Label lda (ZPCCStack),y >SYSCALL FreeMem - jmp STMT.Close + jmp STMT.Close SWITCH () .99 rts *-------------------------------------- @@ -627,22 +633,22 @@ KW.RETURN ldx ZPLineBufPtr >LDYA L.CC._RETURN_ >STYA ZPLineBufPtr - + jsr SYM.Lookup - + plx stx ZPLineBufPtr+1 plx stx ZPLineBufPtr bcs .99 - + ldy #SYM.Q lda (ZPLookupSymPtr),y pha lda (ZPLookupSymPtr) SYM.T tay - pla + pla jsr EXP.Eval bcs .99 @@ -665,7 +671,7 @@ KW.RETURN ldx ZPLineBufPtr .9 lda #E.CSYN sec -.99 rts +.99 rts *-------------------------------------- KW.SIZEOF lda #E.CSYN diff --git a/BIN/CC.S.LINK.txt b/BIN/CC.S.LINK.txt index 9a1023d4..349ddb98 100644 --- a/BIN/CC.S.LINK.txt +++ b/BIN/CC.S.LINK.txt @@ -21,7 +21,7 @@ CC.Link >LDYA L.MSG.LINKING >PUSHB.G CC.hSyms >PUSHW ZPPtr1 SymID >PUSHW ZPSymBufPtr - >PUSHWI $ffff All + >PUSHWI 65535 All >PUSHWZ from Start >SYSCALL SListGetData bcs .99 diff --git a/BIN/CC.S.SCOPE.txt b/BIN/CC.S.SCOPE.txt index 56f7c6dd..017d6e51 100644 --- a/BIN/CC.S.SCOPE.txt +++ b/BIN/CC.S.SCOPE.txt @@ -29,10 +29,18 @@ SCOPE.New ldy ScopeIdx .DO _DBG_SCOPE=1 >PUSHW L.MSG.DEBUG.SCIN jsr SCOPE.Push + + lda ScopeIdx + sec + sbc #CC.ScopeIDs + lsr + >PUSHA + >PUSHB LocalPtr >PUSHB LocalFrame - >PUSHBI 4 + >PUSHBI 5 >SYSCALL PrintF +* >DEBUG .FIN clc @@ -59,12 +67,18 @@ SCOPE.Close .DO _DBG_SCOPE=1 .DO _DBG_SCOPE=1 + lda ScopeIdx + sec + sbc #CC.ScopeIDs + lsr + >PUSHA + >PUSHB LocalPtr >PUSHB LocalFrame jsr SCOPE.Push - >PUSHBI 6 + >PUSHBI 7 >SYSCALL PrintF - >DEBUG + .FIN clc diff --git a/BIN/CC.S.STMT.txt b/BIN/CC.S.STMT.txt index ef2bfcbc..ee8f70de 100644 --- a/BIN/CC.S.STMT.txt +++ b/BIN/CC.S.STMT.txt @@ -127,7 +127,7 @@ STMT.Stmt.END ldy CStackPtr lda (ZPCCStack),y bmi STMT.POP.8 local F context -* in an istruction ... +* in an instruction ... iny CPS.TERM lda (ZPCCStack),y cmp #'}' @@ -162,14 +162,14 @@ STMT.End ldy CStackPtr CPS.KW tax jmp (J.CC.KW.END,x) *-------------------------------------- -STMT.NewCPS00 lda #0 +STMT.New00 lda #0 jsr CC.Push CPS.hMEM - bcs STMT.NewCPS.RTS + bcs STMT.New.RTS jsr CC.Push CPS.MemPtr - bcs STMT.NewCPS.RTS + bcs STMT.New.RTS -STMT.NewCPS lda LocalFrame +STMT.New lda LocalFrame jsr CC.Push bcs .99 @@ -185,44 +185,44 @@ STMT.NewCPS lda LocalFrame jmp CC.Push .99 -STMT.NewCPS.RTS rts +STMT.New.RTS rts *-------------------------------------- -STMT.SetCPSType jsr CORE.GetNCharNBNL - bcs .9 +STMT.SetType jsr CORE.GetNCharNBNL + bcs STMT.SetType.9 ldx #';' cmp #'{' - bne .1 + bne STMT.SetType.1 - jsr CORE.GetNCharNB skip '{' - bcs .99 +STMT.SetTypeCP jsr CORE.GetNCharNB skip '{' + bcs STMT.SetType.9 jsr SCOPE.New - bcs .99 + bcs STMT.New.RTS lda #'F' jsr SYM.LookupLabelA - bcs .99 + bcs STMT.New.RTS txa jsr CODE.nAddLocal - bcs .99 + bcs STMT.New.RTS ldx #'}' -.1 txa +STMT.SetType.1 txa ldy CStackPtr iny CPS.TERM sta (ZPCCStack),y -.8 clc + clc rts -.9 lda #E.CSYN +STMT.SetType.9 lda #E.CSYN sec -.99 rts + rts *-------------------------------------- STMT.Close ldy CStackPtr CPS.KW iny CPS.TERM @@ -234,6 +234,10 @@ STMT.Close ldy CStackPtr CPS.KW jsr SYM.NewLabelA bcs .99 + lda LocalFrame + jsr CODE.AddLocal + bcs .99 + lda CStackPtr clc adc #CPS.LocalPtr diff --git a/BIN/CC.S.SYM.txt b/BIN/CC.S.SYM.txt index e0516084..a02a28da 100644 --- a/BIN/CC.S.SYM.txt +++ b/BIN/CC.S.SYM.txt @@ -10,9 +10,29 @@ SYM.New >STYA ZPPtr2 T/Q stx ZPPtr3 SC bit bPass2 - bpl SYM.New.1 -* PASS 2 + bmi SYM.New.Pass2 +*-------------------------------------- +SYM.New.Pass1 jsr SYM.BufInitYAXC set buf according C + >PUSHB.G CC.hSyms + >PUSHW ZPLineBufPtr + jsr SCOPE.Push + >SYSCALL SListNewKey + bcs SYM.New.9 + + >STYA.G CC.SymID Y,A = KeyID + + jsr CC.SkipX X = KeyLen + + .DO _DBG_SYM=1 + jsr SYM.DEBUGN + .FIN + + bra SYM.New.2 + +SYM.New.9 rts +*-------------------------------------- +SYM.New.Pass2 >PUSHB.G CC.hSyms >PUSHW ZPLineBufPtr jsr SCOPE.Push >SYSCALL SListLookup @@ -28,23 +48,10 @@ SYM.New >STYA ZPPtr2 T/Q >PUSHWI 65535 all >PUSHWZ From Start >SYSCALL SListGetData - bcc SYM.New.2 + bcs SYM.New.9 -SYM.New.9 rts -*-------------------------------------- -SYM.New.1 jsr SYM.BufInitYAXC set buf according C - - >PUSHB.G CC.hSyms - >PUSHW ZPLineBufPtr - jsr SCOPE.Push - >SYSCALL SListNewKey - bcs SYM.New.9 - - >STYA.G CC.SymID Y,A = KeyID - - jsr CC.SkipX X = KeyLen .DO _DBG_SYM=1 - jsr SYM.DEBUG0 + jsr SYM.DEBUGG .FIN *-------------------------------------- SYM.New.2 jsr CC.GetCharNB @@ -63,6 +70,17 @@ SYM.New.2 jsr CC.GetCharNB .1 cmp #'(' bne SYM.NewV + jsr SYM.GetSymSizeOfInAX + jsr SYM.SetSizeOf + + ldy #SYM.Q + lda (ZPSymBufPtr),y + ora #SYM.Q.FUNC + sta (ZPSymBufPtr),y + + jsr SYM.Store Store this f() with no prototype... + bcs .99 + jmp F.Decl .98 lda #E.CSYN @@ -141,12 +159,7 @@ SYM.SetAddr ldy #SYM.SizeOf jsr SYM.GetSymSizeOfInAX jsr SYM.SetSizeOf -.1 ldy #SYM.Q - lda (ZPSymBufPtr),y - and #SYM.Q.FUNC - bne .9 - - ldy #SYM.SC +.1 ldy #SYM.SC lda (ZPSymBufPtr),y beq SYM.SetAddrG SYM.SC.STATIC @@ -186,17 +199,13 @@ SYM.SetAddrL ldy #SYM.SizeOf+1 bne .9 lda LocalPtr - tax - clc - dey SYM.SizeOf adc (ZPSymBufPtr),y bcs .9 sta LocalPtr - txa ldy #SYM.Addr sta (ZPSymBufPtr),y @@ -466,17 +475,16 @@ SYM.Store clc bit bPass2 bmi .8 - php .DO _DBG_SYM=1 bcc .10 - jsr SYM.DEBUG1 + jsr SYM.DEBUGU bra .11 .10 - jsr SYM.DEBUG2 + jsr SYM.DEBUGS .11 .FIN >PUSHB.G CC.hSyms @@ -506,8 +514,20 @@ SYM.Store clc .3 >SYSCALL SListSetData rts -.8 clc - rts +.8 bcc .9 + + >PUSHB.G CC.hSyms + >PUSHW.G CC.SymID + >PUSHW ZPSymBufPtr + >PUSHWI 65535 all + >PUSHWZ From Start + >SYSCALL SListGetData + + .DO _DBG_SYM=1 + bcs .9 + jsr SYM.DEBUGG + .FIN +.9 rts *-------------------------------------- SYM.Lookup >LDA.G CC.LookupIdx @@ -573,15 +593,15 @@ SYM.Lookup >LDA.G CC.LookupIdx * clc rts *-------------------------------------- -* "B"reak -* "C"ontinue -* "D"efault -* "E"lse -* "F"rameSize -* "J"umptable -* "L"oop -* "S"statement -* e"X"it +* "_B"reak +* "_C"ontinue +* "_D"efault +* "_E"lse +* "_F"rameSize +* "_J"umpTable +* "_L"oop +* "_S"statement +* e"_X"it *-------------------------------------- SYM.NewLabelA bit bPass2 bpl .10 @@ -621,7 +641,7 @@ SYM.NewLabelA bit bPass2 .1 jsr SYM.SetAddrCCode .2 .DO _DBG_SYM=1 - jsr SYM.DEBUG0 + jsr SYM.DEBUGN .FIN >PUSHB.G CC.hSyms @@ -636,7 +656,7 @@ SYM.NewLabelA bit bPass2 .DO _DBG_SYM=1 bcs .99 - jsr SYM.DEBUG2 + jsr SYM.DEBUGS .FIN .99 rts *-------------------------------------- @@ -684,20 +704,34 @@ SYM.LookupLabelA tya >PUSHA KeyID.LO - >PUSHW ZPSymBufPtr + >PUSHWZ allocate >PUSHWI 65535 all >PUSHWZ From Start >SYSCALL SListGetData bcs .99 - ldy #SYM.Addr - lda (ZPSymBufPtr),y + phx + + txa + >SYSCALL GetMemPtr + >STYA ZPLookupPtr - tax + plx + + ldy #SYM.Addr + lda (ZPLookupPtr),y + + pha iny - lda (ZPSymBufPtr),y - tay + lda (ZPLookupPtr),y + pha + + txa + >SYSCALL FreeMem + + ply + plx * clc @@ -804,7 +838,7 @@ SYM.PopValue jsr SYM.GetYASizeOfInAX *-------------------------------------- * out : Y,A = T/Q *-------------------------------------- -SYM.GetTypeInYA ldy #SYM.Q +SYM.GetTQInYA ldy #SYM.Q lda (ZPSymBufPtr),y pha lda (ZPSymBufPtr) @@ -874,7 +908,7 @@ SYM.GetYASizeOfInAX clc rts *-------------------------------------- -* in/out : A,X,C = size +* in/out : A,X = size *-------------------------------------- SYM.SetSizeOf ldy #SYM.SizeOf sta (ZPSymBufPtr),y @@ -903,7 +937,7 @@ SYM.SetAddrYA phy rts *-------------------------------------- .DO _DBG_SYM=1 -SYM.DEBUG0 >PUSHW L.MSG.DEBUG.SYMN +SYM.DEBUGN >PUSHW L.MSG.DEBUG.SYMN >PUSHW.G CC.SymID jsr SCOPE.Push lda (ZPSymBufPtr) @@ -911,30 +945,53 @@ SYM.DEBUG0 >PUSHW L.MSG.DEBUG.SYMN ldy #1 lda (ZPSymBufPtr),y >PUSHA - >PUSHBI 6 + iny + lda (ZPSymBufPtr),y + >PUSHA + >PUSHBI 7 >SYSCALL Printf - >DEBUG +* >DEBUG rts -SYM.DEBUG1 >PUSHW L.MSG.DEBUG.SYMU +SYM.DEBUGU >PUSHW L.MSG.DEBUG.SYMU >PUSHW.G CC.SymID lda (ZPSymBufPtr) >PUSHA ldy #1 lda (ZPSymBufPtr),y >PUSHA - >PUSHBI 4 + iny + lda (ZPSymBufPtr),y + >PUSHA + >PUSHBI 5 >SYSCALL Printf rts -SYM.DEBUG2 >PUSHW L.MSG.DEBUG.SYMS +SYM.DEBUGS >PUSHW L.MSG.DEBUG.SYMS >PUSHW.G CC.SymID lda (ZPSymBufPtr) >PUSHA ldy #1 lda (ZPSymBufPtr),y >PUSHA - >PUSHBI 4 + iny + lda (ZPSymBufPtr),y + >PUSHA + >PUSHBI 5 + >SYSCALL Printf + rts + +SYM.DEBUGG >PUSHW L.MSG.DEBUG.SYMG + >PUSHW.G CC.SymID + lda (ZPSymBufPtr) + >PUSHA + ldy #1 + lda (ZPSymBufPtr),y + >PUSHA + iny + lda (ZPSymBufPtr),y + >PUSHA + >PUSHBI 5 >SYSCALL Printf rts .FIN diff --git a/BIN/CC.S.txt b/BIN/CC.S.txt index 3598cfb9..d6b71b5d 100644 --- a/BIN/CC.S.txt +++ b/BIN/CC.S.txt @@ -55,7 +55,7 @@ SYM.SizeOf .EQ 4 SYM.Addr .EQ 6 SYM.BitO .EQ 8 SYM.BitW .EQ 9 -SYM.ArgSize .EQ 10 +SYM.ScopeID .EQ 10 * * SYM.Def .EQ 14 Funtions : fTQ,a1TQ,a2TQ.... @@ -144,11 +144,11 @@ L.MSG.READING .DA MSG.READING L.MSG.LINKING .DA MSG.LINKING L.MSG.LINKING2 .DA MSG.LINKING2 L.MSG.GENERATING .DA MSG.GENERATING -L.MSG.DEBUG .DA MSG.DEBUG .DO _DBG_SYM=1 L.MSG.DEBUG.SYMN .DA MSG.DEBUG.SYMN L.MSG.DEBUG.SYMU .DA MSG.DEBUG.SYMU L.MSG.DEBUG.SYMS .DA MSG.DEBUG.SYMS +L.MSG.DEBUG.SYMG .DA MSG.DEBUG.SYMG .FIN .DO _DBG_SCOPE=1 L.MSG.DEBUG.SCIN .DA MSG.DEBUG.SCIN @@ -389,7 +389,7 @@ CS.RUN.CLOOP jsr CORE.CompileFile *-------------------------------------- .1 jsr PrintSummary bcs .99 - + >DEBUG jsr CC.Link bcs .99 >DEBUG @@ -456,7 +456,7 @@ CS.RUN.ARGS inc ArgIndex bra .90 -.2 cpx #4 +.2 cpx #2 LIB bcc .3 inc ArgIndex @@ -537,9 +537,16 @@ PrintVerboseMsg .DO _DBG_SCOPE=1 >PUSHW L.MSG.DEBUG.SC jsr SCOPE.Push + + lda ScopeIdx + sec + sbc #CC.ScopeIDs + lsr + >PUSHA + >PUSHB LocalPtr >PUSHB LocalFrame - >PUSHBI 4 + >PUSHBI 5 >SYSCALL PrintF * >DEBUG .FIN @@ -565,49 +572,6 @@ PrintVerboseMsg rts *-------------------------------------- -PrintDebugMsg >PUSHW L.MSG.DEBUG - - >PUSHW ZPCCCode - >PUSHW ZPCCConst - >PUSHW ZPCCData - - lda pStack - clc - adc #8 - pha - lda pStack+1 - adc #0 - >PUSHA - pla - >PUSHA - - >PUSHB LocalPtr - - >PUSHW ZPCCStack - - >PUSHB CStackPtr - tay - beq .1 - - lda (ZPCCStack),y - pha - iny - lda (ZPCCStack),y - ply - -.1 >PUSHYA - - lda ScopeIdx - sec - sbc #CC.ScopeIDs - lsr - >PUSHA - - >PUSHBI 15 - >SYSCALL PrintF - >DEBUG - rts -*-------------------------------------- PrintErrorMsg >LDA.G CC.hDefineBuf beq .10 @@ -685,24 +649,22 @@ CS.END *-------------------------------------- MSG.GREETINGS .CZ "\r\nA2osX C Compiler %d.%d\r\n\r\n" MSG.USAGE .CS "Usage : CC