diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 9c309b5e..2d8fad73 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/BIN/ASM.S.DIR.txt b/BIN/ASM.S.DIR.txt index 78409aab..3f84e3ac 100644 --- a/BIN/ASM.S.DIR.txt +++ b/BIN/ASM.S.DIR.txt @@ -73,6 +73,8 @@ DIR.AZ jsr DIR.AS DIR.BS jsr SRC.GetNextCharNB bcs .98 + jsr EXP.ResetAcc + jsr EXP.Eval bcs .9 @@ -98,8 +100,11 @@ DIR.BS jsr SRC.GetNextCharNB cmp #',' bne .98 + jsr EXP.ResetAcc + jsr EXP.Eval bcs .9 + lda SRC.ACC+3 ora SRC.ACC+2 ora SRC.ACC+1 @@ -132,11 +137,14 @@ DIR.BS jsr SRC.GetNextCharNB DIR.DA jsr SRC.GetNextCharNB bcs .98 -.1 jsr EXP.Eval +.1 jsr EXP.ResetAcc + + jsr EXP.Eval bcs .9 ldy #0 - + ldx SRC.ACC.SIZE + .2 lda SRC.ACC,y jsr OUT.EmitByte bcs .9 @@ -172,6 +180,8 @@ DIR.DO >LDA.G ASM.DO.StackPtr jsr SRC.GetNextCharNB bcs .99 + jsr EXP.ResetAcc + jsr EXP.Eval bcs .99 @@ -267,32 +277,31 @@ DIR.SE sec DIR.EQ clc >LDA.G SYM.BufPtr - beq .99 + beq .9 eor #SYMG beq .1 - bcs .99 .SE not allowed in local/private + bcs .9 .SE not allowed in local/private bcc .10 in local, skip F update .1 ror A = 0 : SYMG.F.RW ora #SYMG.F.EQU - tsb SRC.ACC.F + sta SRC.ACC.F .10 jsr SRC.GetNextCharNB - bcs .99 + bcs .9 lda #$ff >STA.G OUT.bEquate + jsr EXP.ResetAcc + jsr EXP.Eval bcs .9 - >LDA.G ASM.PASS - bne .2 -*--------------------------------------- - >LDA.G SYM.BufPtr PASS#1 + >LDA.G SYM.BufPtr cmp #SYMG beq .12 @@ -310,30 +319,13 @@ DIR.EQ clc rts .12 jsr SYM.Acc2Global global, update and close + >LDA.G ASM.PASS + bne .2 + jmp SYM.StoreGlobal -*--------------------------------------- -.2 >LDA.G SYM.BufPtr PASS#2 - - cmp #SYMG - beq .22 - tay - ldx #3 we are in local/private - -.21 lda SRC.ACC,x update value - dey - sta (ZPSymbolBuf),y - dex - bpl .21 +.2 jmp SYM.UpdateGlobal - clc - rts - -.22 jsr SYM.Acc2Global global, update and close - jmp SYM.UpdateGlobal - -.99 lda #E.SYNTAX.ERROR - sec .9 rts *--------------------------------------- DIR.FI >LDA.G ASM.DO.StackPtr @@ -525,6 +517,8 @@ DIR.OP.SYNERR lda #E.SYNTAX.ERROR DIR.OR jsr SRC.GetNextCharNB bcs DIR.OP.SYNERR + jsr EXP.ResetAcc + jsr EXP.Eval bcs .9 diff --git a/BIN/ASM.S.EXP.txt b/BIN/ASM.S.EXP.txt index 3e3f0052..4e0b3005 100644 --- a/BIN/ASM.S.EXP.txt +++ b/BIN/ASM.S.EXP.txt @@ -23,8 +23,6 @@ EXP.Eval >STZ.G EXP.Modifier >STZ.G EXP.Prefix >STZ.G EXP.Operator - stz SRC.ACC.SIZE - jsr SRC.GetChar bcs EXP.Eval.Missing @@ -39,9 +37,7 @@ EXP.Eval >STZ.G EXP.Modifier EXP.Eval.Next0 jsr SRC.GetNextChar -EXP.Eval.Next stz SRC.ACC.F - - stz SRC.ACC +EXP.Eval.Next stz SRC.ACC stz SRC.ACC+1 stz SRC.ACC+2 stz SRC.ACC+3 @@ -92,14 +88,14 @@ EXP.Eval.Next stz SRC.ACC.F jsr SRC.GetHex bcs EXP.EvalExitRTS - bra EXP.EvalOperator + jmp EXP.EvalOperator .2 cmp #'%' binary? bne .3 jsr SRC.GetBinary bcs EXP.EvalExitRTS - bra EXP.EvalOperator + jmp EXP.EvalOperator .3 cmp #'&' octal? bne .4 @@ -133,10 +129,12 @@ EXP.Eval.Next stz SRC.ACC.F jsr SRC.GetNextChar bcs EXP.EvalExitSYN + ora #$80 jsr EXP.SetAccA jsr SRC.GetNextChar bcs EXP.EvalOperator + cmp #'"' beq .45 @@ -152,17 +150,21 @@ EXP.Eval.Next stz SRC.ACC.F jsr SYM.LookupGlobal bcc EXP.EvalOperator - rts +EXP.EvalExitRTS rts EXP.EvalExitOK >LDA.G EXP.Modifier - beq .8 + beq .1 asl tax + + lda #SYMG.F.FWREF + trb SRC.ACC.F + jmp (J.EXP.MOD-2,x) -.8 clc -EXP.EvalExitRTS rts +.1 clc + rts EXP.EvalExitSYN lda #E.SYNTAX.ERROR sec @@ -173,7 +175,7 @@ EXP.EvalExitUND lda #E.UNDEF.SYMBOL rts *--------------------------------------- EXP.EvalOperator - jsr EXP.SetACCSize +* jsr EXP.SetACCSize >LDA.G EXP.Operator beq .7 @@ -228,18 +230,17 @@ EXP.GetLocal jsr SRC.GetNextChar lda #SYMG.F.FWREF tsb SRC.ACC.F + + lda #2 + sta SYMG.SIZE + clc rts .9 lda #E.SYNTAX.ERROR sec - rts -.8 lda #SYMG.F.FWREF - trb SRC.ACC.F - - clc - rts +.8 rts *--------------------------------------- EXP.MOD.8.3 lda SRC.ACC+2 bra EXP.MOD.8 @@ -317,11 +318,7 @@ EXP.OP.EQU ldx #0 ARG-ACC->ACC .2 lda #0 rol - sta SRC.ACC - - lda #1 - sta SRC.ACC.SIZE -.9 rts + jmp EXP.SetAccA *--------------------------------------- EXP.OP.GRT jsr EXP.OP.SUB @@ -382,6 +379,17 @@ EXP.OP.DIV >PUSHL SRC.ARG clc rts *--------------------------------------- +EXP.ResetAcc stz SRC.ACC.F + + lda #2 + sta SRC.ACC.SIZE + + stz SRC.ACC + stz SRC.ACC+1 + stz SRC.ACC+2 + stz SRC.ACC+3 + rts +*--------------------------------------- EXP.SetAccA sta SRC.ACC stz SRC.ACC+1 stz SRC.ACC+2 @@ -394,17 +402,27 @@ EXP.SetAccA sta SRC.ACC EXP.SetACCSize lda SRC.ACC.SIZE bne .8 - ldx #4 + >LDA.G ASM.PASS + bne .1 + + lda SRC.ACC.F + and #SYMG.F.FWREF + beq .1 + + ldx #2 + bra .7 + +.1 ldx #4 -.1 lda SRC.ACC-1,x - bne .2 +.2 lda SRC.ACC-1,x + bne .7 dex - bne .1 + bne .2 inx -.2 stx SRC.ACC.SIZE +.7 stx SRC.ACC.SIZE .8 rts *--------------------------------------- MAN diff --git a/BIN/ASM.S.SRC.txt b/BIN/ASM.S.SRC.txt index e4a5efd7..5e36f054 100644 --- a/BIN/ASM.S.SRC.txt +++ b/BIN/ASM.S.SRC.txt @@ -231,7 +231,9 @@ SRC.ParseLine.AM bra .74 -.6 jsr EXP.Eval +.6 jsr EXP.ResetAcc + + jsr EXP.Eval bcs .99 >LDA.G EXP.Prefix @@ -239,13 +241,10 @@ SRC.ParseLine.AM jsr SRC.AddToBuf -.75 ldx #2 FWREF ...assume 2 bytes... - lda SRC.ACC.F - and #SYMG.F.FWREF - bne .72 - - ldx SRC.ACC.SIZE - beq * SHOULD NEVER APPEND +.75 ldx SRC.ACC.SIZE + beq * SHOULD NEVER APPEND + + jsr SRC.GetACCSize .72 lda #'a' @@ -449,7 +448,7 @@ SRC.ParseLine.Emit .8 clc .9 rts -.90 lda #E.INV.T.FILE +.90 lda #E.INV.CPU.FILE sec rts @@ -1018,6 +1017,26 @@ SRC.ACC10 lda SRC.ACC ACC*2-> ACC & ACCTMP sta SRC.ACC+3 CS if overflow .9 rts *--------------------------------------- +SRC.GetACCSize lda SRC.ACC.F + + and #SYMG.F.FWREF + beq .1 + + ldx #2 + rts + +.1 ldx SRC.ACC.SIZE + +.2 lda SRC.ACC-1,x + bne .8 + + dex + bne .2 + + inx + +.8 rts +*--------------------------------------- SRC.DoCheck sec >LDA.G ASM.DO.StackPtr beq .8 diff --git a/BIN/ASM.S.SYM.txt b/BIN/ASM.S.SYM.txt index 671ff644..8934d15c 100644 --- a/BIN/ASM.S.SYM.txt +++ b/BIN/ASM.S.SYM.txt @@ -80,12 +80,14 @@ SYM.NewGlobal >LDA.G ASM.PASS .9 lda #E.SYMBOL.REDEF sec -.99 rts +.99 +SYM.NewGlobal.RTS + rts *--------------------------------------- SYM.NewGlobal2 >PUSHB.G SYM.hList Pass #2: should be already defined... >PUSHW ZPLinePtr >SYSCALL SListLookup - bcs .9 + bcs SYM.NewGlobal.RTS >STYA.G SYM.ID @@ -104,13 +106,31 @@ SYM.NewGlobal2 >PUSHB.G SYM.hList Pass #2: should be already defined... >SYSCALL SListGetData bcs .99 - lda #SYMG +* lda (ZPSymbolBuf) +* and #SYMG.F.EQU +* bne .8 + +* >LDA.G ASM.PC +* ldy #SYMG.V +* cmp (ZPSymbolBuf),y +* bne .7 + +* >LDA.G ASM.PC+1 +* ldy #SYMG.V+1 +* cmp (ZPSymbolBuf),y +* beq .8 + +*.7 lda #E.OUT.OF.SYNC +* sec +* rts + +.8 lda #SYMG >STA.G SYM.BufPtr >STZ.G MAC.CtxID >STA.G MAC.CtxNextID -* clc + clc rts .9 lda #E.UNDEF.SYMBOL @@ -147,9 +167,6 @@ SYM.LookupGlobal dey bpl .2 - lda #SYMG.F.FWREF - trb SRC.ACC.F - clc rts @@ -166,11 +183,9 @@ SYM.LookupGlobal lda #SYMG.F.FWREF tsb SRC.ACC.F - - lda #$ff - - sta SRC.ACC - sta SRC.ACC+1 setup ACC=$FFFF to reserve 2 bytes in AM + + lda #2 + sta SYMG.SIZE .5 jsr SRC.GetNextChar bcs .8 @@ -276,8 +291,9 @@ SYM.NewLocalA tax Save Local ID bcc .9 Already Defined >LDA.G SYM.BufPtr - cmp #252 6*42 - beq .90 +* sec + adc #SYML + bcs .90 ldy #ASM.PC+4 diff --git a/BIN/ASM.S.txt b/BIN/ASM.S.txt index 007b9433..fa68a26c 100644 --- a/BIN/ASM.S.txt +++ b/BIN/ASM.S.txt @@ -87,9 +87,10 @@ E.MACRO.TOO.BIG .EQ $B4 E.MACRO.INV .EQ $B5 E.MACRO.TOO.MANY .EQ $B6 * +E.OUT.OF.SYNC .EQ $B8 E.INV.SYM .EQ $B9 E.INV.ARGS .EQ $BA -E.INV.T.FILE .EQ $BC +E.INV.CPU.FILE .EQ $BC E.SRC.INV.TYPE .EQ $BD E.SRC.TOO.MANY.IN .EQ $BE E.SRC.UNEXP.EOF .EQ $BF diff --git a/BIN/MEMDUMP.S.txt b/BIN/MEMDUMP.S.txt index a785eb4b..efe52004 100644 --- a/BIN/MEMDUMP.S.txt +++ b/BIN/MEMDUMP.S.txt @@ -341,7 +341,7 @@ CS.RUN.PRINTMEMX lda #'-' bcc .30 - lda MSG.FLAGS,x + lda MSG.FLAGSX,x .30 sta (pData),y pla @@ -377,11 +377,11 @@ CS.RUN.PRINTMEMX ldy #S.MEM.F jsr ZPReadAux Get flags bpl .12 - + txa jsr CS.RUN.CHECKPS bcc .12 - + >PUSHW L.MSG1.INV >PUSHBI 0 >SYSCALL PrintF @@ -396,7 +396,7 @@ CS.RUN.CHECKPS ldx #0 beq .8 inx - cpx K.PS.MAX + cpx #K.PS.MAX bne .1 rts CS @@ -430,6 +430,7 @@ MSG3 .AS "High Memory: $%H\r\n" .AS "Low Memory: $%H\r\n" .AZ "\r\nFree Memory: %D Bytes.\r\n\r\n" MSG.FLAGS .AS "UZXAfcds" +MSG.FLAGSX .AS "UZXAidep" *-------------------------------------- .DUMMY .OR 0 diff --git a/SYS/KERNEL.S.MEM.txt b/SYS/KERNEL.S.MEM.txt index 4103338f..4449d8f4 100644 --- a/SYS/KERNEL.S.MEM.txt +++ b/SYS/KERNEL.S.MEM.txt @@ -366,8 +366,9 @@ K.FreeMem tay bne .8 no, must be a code segment loaded several times lda (ZPMemMgrSPtr) - and #S.MEM.F.CODE CS: Any BINPATH to discard ? + and #$7f keep flags for memdump sta (ZPMemMgrSPtr) Mark as FREE + and #S.MEM.F.CODE CS: Any BINPATH to discard ? beq .1 ldy #S.MEM.BIN diff --git a/SYS/KERNEL.S.SLISTX.txt b/SYS/KERNEL.S.SLISTX.txt index 4d630e2b..875fa947 100644 --- a/SYS/KERNEL.S.SLISTX.txt +++ b/SYS/KERNEL.S.SLISTX.txt @@ -118,8 +118,6 @@ SLISTX.SListAddData jsr SLIST.Select jsr SLIST.SkipKey -* >LDYA SLIST.KeyID Save DataLen location -* >STYA SLIST.KeyID.Save to update later ldy SLIST.BytePtr lda (ZPSListDBlkPtr),y @@ -149,13 +147,21 @@ SLISTX.SListAddData eor #$ff sta ZPSListDataLen+1 + sec + .1 inc ZPSListDataLen bne .2 inc ZPSListDataLen+1 beq .8 .2 jsr SHARED.FORPNT.GetNext - jsr SLIST.AddDataByte + bcc .3 + + jsr SLIST.SetBlockByte override ending 0, already allocated + clc + bra .1 + +.3 jsr SLIST.AddDataByte bcc .1 rts @@ -180,10 +186,13 @@ SLISTX.SListSetData txa eor #$ff sta SLIST.nDataCnt+1 + .1 inc SLIST.nDataCnt bne .2 + inc SLIST.nDataCnt+1 beq .8 + .2 jsr SHARED.FORPNT.GetNext jsr SLIST.SetBlockByte bra .1 @@ -234,8 +243,7 @@ SLISTX.SListNewKey >STYA SLIST.KeyID.Save End of list lda SLIST.KeyLen - jsr SLIST.AddDataByte - bcs .9 + jsr SLIST.SetBlockByte override ending 0, already allocated ldy #0 @@ -247,15 +255,15 @@ SLISTX.SListNewKey cpy SLIST.KeyLen bne .1 - lda #0 Data Len = 0 + lda #0 Data Len lo = 0 jsr SLIST.AddDataByte bcs .9 - lda #0 + lda #0 Data Len hi = 0 jsr SLIST.AddDataByte bcs .9 - lda #0 Next Len = 0 + lda #0 Ending Len = 0 jsr SLIST.AddDataByte bcs .9 @@ -460,10 +468,6 @@ SLIST.AddDataByte txa inc SLIST.BlockPtr ldy SLIST.BlockPtr - cpy #$4A - bcc .55 - >DEBUG -.55 sta (ZPSListIBlkPtr),y * stz SLIST.BytePtr