diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 50b8a74b..55095007 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index 3eda8987..e51c2365 100644 Binary files a/.Floppies/A2OSX.SRC.po and b/.Floppies/A2OSX.SRC.po differ diff --git a/BIN/ASM.S.DIR.txt b/BIN/ASM.S.DIR.txt index ed6fb47f..b6c2ffa6 100644 --- a/BIN/ASM.S.DIR.txt +++ b/BIN/ASM.S.DIR.txt @@ -322,8 +322,7 @@ DIR.MA jsr SRC.GetNextCharNB clc rts -.8 ldy #ASM.PASS If Pass#2, ignore - lda (pData),y +.8 >LDA.G ASM.PASS If Pass#2, ignore bne .1 diff --git a/BIN/ASM.S.EXP.txt b/BIN/ASM.S.EXP.txt index 58518fc1..8480bf8f 100644 --- a/BIN/ASM.S.EXP.txt +++ b/BIN/ASM.S.EXP.txt @@ -90,11 +90,13 @@ EXP.Eval.Next1 cmp #'.' Local Label? bne .43 jsr SRC.GetNextChar bcs EXP.EvalExitSYN + jsr EXP.SetAccA jsr SRC.GetNextChar bcs EXP.EvalOperator cmp #''' bne EXP.EvalExitSYN + jsr SRC.GetNextChar bra EXP.EvalOperator .43 cmp '"' @@ -107,13 +109,14 @@ EXP.Eval.Next1 cmp #'.' Local Label? bcs EXP.EvalOperator cmp #'"' bne EXP.EvalExitSYN + jsr SRC.GetNextChar bra EXP.EvalOperator .42 jsr SRC.IsLetter Symbol ? bcs EXP.EvalExitSYN jsr EXP.GetSymbol - bcs EXP.EvalExitRTS + bcs EXP.EvalExitUND bra EXP.EvalOperator EXP.EvalExitOK clc @@ -182,45 +185,14 @@ EXP.SetAccA sta SRC.ACC stz SRC.ACC+3 rts *--------------------------------------- -EXP.GetSymbol >PUSHB.G SYM.hGlobals - >PUSHW ZPLinePtr - >PUSHEA.G SYM.Global +EXP.GetSymbol jsr SYM.LookupGlobal + bcc .9 - >SYSCALL SListLookup - bcs .2 - - adc ZPLinePtr - sta ZPLinePtr - bcc .1 - - inc ZPLinePtr+1 - -.1 clc - rts - -.2 ldy #ASM.PASS - lda (pData),y pass#2? +.2 >LDA.G ASM.PASS pass#2? bne .99 yes, undefined symbol - >PUSHB.G SYM.hGlobals - >PUSHW ZPLinePtr - >PUSHEA.G SYM.Global - - lda #6 - >STA.G SYM.Global+SYM.LEN - - lda #0 - >STA.G SYM.Global+SYM.F - - >SYSCALL SListAdd - bcs .9 - - adc ZPLinePtr - sta ZPLinePtr - bcc .3 - - inc ZPLinePtr+1 - + lda #0 Add Pending.... + jsr SYM.AddGlobal .3 clc rts @@ -231,8 +203,7 @@ EXP.GetSymbol >PUSHB.G SYM.hGlobals EXP.Compute dec asl tax -* ldy #ASM.PASS -* lda (pData),y pass#2? +* >LDA.G ASM.PASS pass#2? * beq .8 jmp (J.EXP.OP,x) .8 clc diff --git a/BIN/ASM.S.MAC.txt b/BIN/ASM.S.MAC.txt new file mode 100644 index 00000000..3401baab --- /dev/null +++ b/BIN/ASM.S.MAC.txt @@ -0,0 +1,35 @@ +NEW +PREFIX /A2OSX.BUILD +AUTO 4,1 +*--------------------------------------- +MAC.Init >SYSCALL SListNew + bcs .9 + + >STA.G MAC.hMacros + + >LDYAI 256 + >SYSCALL GetMem.YA + bcs .9 + + >STYA ZPMacroBuf + txa + >STA.G MAC.hBuf + +.9 rts +*--------------------------------------- +MAC.Quit >LDA.G MAC.hBuf + beq .1 + + >SYSCALL FreeMem.A + +.1 >LDA.G MAC.hMacros + beq .8 + >SYSCALL SListFree.A + +.8 clc + rts +*--------------------------------------- +MAN +SAVE /A2OSX.BUILD/BIN/DEV/ASM.S.MAC +LOAD /A2OSX.BUILD/BIN/DEV/ASM.S +ASM diff --git a/BIN/ASM.S.SRC.txt b/BIN/ASM.S.SRC.txt index 62286d2e..a4ddc7cd 100644 --- a/BIN/ASM.S.SRC.txt +++ b/BIN/ASM.S.SRC.txt @@ -2,9 +2,7 @@ NEW PREFIX /A2OSX.BUILD AUTO 4,1 *--------------------------------------- -SRC.PrintLine bra .8 - - >LDA.G ASM.MACRO.ON +SRC.PrintLine >LDA.G ASM.MACRO.ON bpl .1 >LDA.G ASM.LI.CON @@ -71,7 +69,7 @@ SRC.ParseLine lda #0 beq SRC.ParseLine.DirOp cmp #'.' local symbol? - bne .2 + bne .1 jsr SRC.GetNextChar bcs SRC.ParseLine.InvLbl @@ -86,27 +84,39 @@ SRC.ParseLine lda #0 beq SRC.ParseLine.InvLbl .0 is not allowed jsr SYM.AddLocalPC - - bra .7 + bcs .9 + bra SRC.ParseLine.DirOp .8 clc - rts +.9 rts -.2 lda #$ff +.1 lda #$ff >STA.G SYM.bGlobal >LDA.G ASM.PASS - beq .6 - - jsr SYM.LookupGlobal - bcs SRC.ParseLine.Undef -* jsr SYM.UpdateGlobal + bne .3 + + 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 + + >LDA.G SYM.Lookup+SYM.F + bit #SYM.F.RW + bne .2 R/W, always update... + + bit #SYM.F.RESOLVED + bne SRC.ParseLine.Redef + +.2 jsr SYM.UpdateGlobal bra SRC.ParseLine.DirOp -.6 jsr SYM.AddGlobalPC +.3 jsr SYM.LookupGlobal Pass #2: shoould be already defined... + bcs SRC.ParseLine.Undef -.7 bcs SRC.ParseLine.Redef - + jsr SYM.UpdateGlobal + +*--------------------------------------- SRC.ParseLine.DirOp jsr SRC.GetNextCharNB Scan for an Opcode... bcs SRC.ParseLine.Ok @@ -123,7 +133,7 @@ SRC.ParseLine.DirOp jsr SRC.GetNextCharNB Scan for an Opcode... .5 cmp #'>' bne .6 - jsr SRC.ParseLine.Exec.Macro + jsr SRC.ParseLine.Macro bcs SRC.ParseLine.Err bra SRC.ParseLine.Ok @@ -157,11 +167,13 @@ SRC.ParseLine.Dir >LDYA L.T.DIRECTIVES jmp (J.DIRECTIVES,x) *--------------------------------------- -SRC.ParseLine.Exec.Macro - clc - rts -*--------------------------------------- -SRC.ParseLine.Add.Macro +SRC.ParseLine.Macro >LDA.G ASM.PASS + bne .1 + + + + +.1 clc rts *--------------------------------------- diff --git a/BIN/ASM.S.SYM.txt b/BIN/ASM.S.SYM.txt index ba16a4ad..52cd545c 100644 --- a/BIN/ASM.S.SYM.txt +++ b/BIN/ASM.S.SYM.txt @@ -38,24 +38,10 @@ SYM.Init >SYSCALL SListNew >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 MAC.hBuf - beq .1 - - >SYSCALL FreeMem.A - -.1 >LDA.G SYM.hLocalBuf +SYM.Quit >LDA.G SYM.hLocalBuf beq .2 >SYSCALL FreeMem.A @@ -64,7 +50,6 @@ SYM.Quit >LDA.G MAC.hBuf beq .8 >SYSCALL SListFree.A - .8 clc rts *--------------------------------------- @@ -128,9 +113,10 @@ SYM.AddGlobalPC ldx #4 dey dex bne .2 + + lda #SYM.F.RESOLVED *--------------------------------------- -SYM.AddGlobal lda #SYM.F.RESOLVED - >STA.G SYM.Global+SYM.F +SYM.AddGlobal >STA.G SYM.Global+SYM.F lda #5 F+DWORD >STA.G SYM.Global+SYM.LEN @@ -159,9 +145,7 @@ SYM.AddGlobal lda #SYM.F.RESOLVED *--------------------------------------- SYM.LookupGlobal >PUSHB.G SYM.hGlobals >PUSHW ZPLinePtr - >PUSHEA.G SYM.Lookup - >SYSCALL SListLookup bcs .9 @@ -176,8 +160,7 @@ SYM.LookupGlobal >PUSHB.G SYM.hGlobals >STA.G SYM.ID+1 txa >STA.G SYM.ID - - + .9 rts *--------------------------------------- SYM.UpdateGlobalAcc ldx #3 diff --git a/BIN/ASM.S.txt b/BIN/ASM.S.txt index 73fa369c..2650ad06 100644 --- a/BIN/ASM.S.txt +++ b/BIN/ASM.S.txt @@ -169,6 +169,9 @@ CS.INIT ldy #S.PS.ARGC jsr SYM.Init bcs .9 + jsr MAC.Init + bcs .9 + jsr DIR.Init >LDYAI 256 @@ -284,6 +287,7 @@ CS.DOEVENT sec CS.QUIT jsr FIO.FileClose bne CS.QUIT + jsr MAC.Quit jsr SYM.Quit >LDA.G ASM.T.hMem @@ -312,6 +316,7 @@ CS.QUIT jsr FIO.FileClose .INB /A2OSX.BUILD/BIN/DEV/ASM.S.DIR .INB /A2OSX.BUILD/BIN/DEV/ASM.S.EXP .INB /A2OSX.BUILD/BIN/DEV/ASM.S.FIO + .INB /A2OSX.BUILD/BIN/DEV/ASM.S.MAC .INB /A2OSX.BUILD/BIN/DEV/ASM.S.SRC .INB /A2OSX.BUILD/BIN/DEV/ASM.S.SYM *--------------------------------------- @@ -431,9 +436,6 @@ ASM.LI.CON .BS 1 ASM.LI.XON .BS 1 ASM.PC .BS 4 ASM.PC.PH .BS 4 -ASM.PC.GLABEL .BS 4 -ASM.LOCAL.OFFSET .BS 1 -ASM.LOCAL.INVALID .BS 1 SYM.hGlobals .BS 1 SYM.bGlobal .BS 1 @@ -445,6 +447,7 @@ SYM.LocalIndex .BS 1 SYM.Lookup .BS 6 +MAC.hMacros .BS 1 MAC.hBuf .BS 1 DS.END .ED diff --git a/INC/GUI.I.txt b/INC/GUI.I.txt index e2e9258e..4bbc7448 100644 --- a/INC/GUI.I.txt +++ b/INC/GUI.I.txt @@ -2,7 +2,6 @@ NEW PREFIX /A2OSX.BUILD AUTO 4,1 .LIST OFF - .OP 65C02 *-------------------------------------- S.CB.CMD .EQ 0 S.CB.CMD.SETPIXEL .EQ 0 diff --git a/SYS/KERNEL.S.MEM.txt b/SYS/KERNEL.S.MEM.txt index a2aeca2e..34c7f816 100644 --- a/SYS/KERNEL.S.MEM.txt +++ b/SYS/KERNEL.S.MEM.txt @@ -496,6 +496,7 @@ K.NewStr.YA >STYA .1+1 * PUSHW = Data Ptr * ## Out: * A = Key Length +* X,Y = KeyID *\-------------------------------------- K.SListAdd */-------------------------------------- diff --git a/SYS/KERNEL.S.SLIST.txt b/SYS/KERNEL.S.SLIST.txt index 9ceb86ac..c6317ab8 100644 --- a/SYS/KERNEL.S.SLIST.txt +++ b/SYS/KERNEL.S.SLIST.txt @@ -59,7 +59,9 @@ SLIST.Add jsr SLIST.Search clc .9 rts -.99 sec +.99 ldx SLIST.ID + ldy SLIST.ID+1 + sec rts *-------------------------------------- SLIST.Lookup jsr SLIST.Search