diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 2d8fad73..b453550c 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 3f84e3ac..ed81bafc 100644 --- a/BIN/ASM.S.DIR.txt +++ b/BIN/ASM.S.DIR.txt @@ -205,33 +205,6 @@ DIR.DO >LDA.G ASM.DO.StackPtr sec .99 rts *--------------------------------------- -DIR.DU >LDA.G ASM.DU.ON - bmi DIR.DU.ERR - - lda #$80 - sta (pData),y - - ldy #ASM.PC.DU - jsr DIR.SavePC - clc - rts - -DIR.DU.ERR lda #E.ILLEGAL.DIR - sec - rts -*--------------------------------------- -DIR.ED >LDA.G ASM.DU.ON - bpl DIR.DU.ERR - - lda #0 - sta (pData),y - - ldy #ASM.PC.DU - jsr DIR.RestorePC - - clc - rts -*--------------------------------------- DIR.EL >LDA.G ASM.DO.StackPtr beq .9 @@ -253,21 +226,43 @@ DIR.EM lda #E.MACRO.INV.DEF sec rts *--------------------------------------- -DIR.EN clc - rts +DIR.DU >LDA.G ASM.DU.ON + bmi DIR.EP.ILLEGAL + + lda #$80 + sta (pData),y + + ldy #ASM.PC.DU + jmp DIR.SavePC +*--------------------------------------- +DIR.PH >LDA.G ASM.PH.ON + bmi DIR.EP.ILLEGAL + + lda #$80 + sta (pData),y + ldy #ASM.PC.PH + jsr DIR.SavePC + + jmp DIR.OR +*--------------------------------------- +DIR.ED >LDA.G ASM.DU.ON + bpl DIR.EP.ILLEGAL + + lda #0 + sta (pData),y + + ldy #ASM.PC.DU + jmp DIR.RestorePC *--------------------------------------- DIR.EP >LDA.G ASM.PH.ON bpl .9 - + lda #0 sta (pData),y ldy #ASM.PC.PH - - jsr DIR.RestorePC - clc - rts - -.9 lda #E.ILLEGAL.DIR + jmp DIR.RestorePC +.9 +DIR.EP.ILLEGAL lda #E.ILLEGAL.DIR sec rts *--------------------------------------- @@ -547,22 +542,13 @@ DIR.OR jsr SRC.GetNextCharNB .8 clc .9 rts *--------------------------------------- -DIR.PG clc - rts +DIR.EN *--------------------------------------- -DIR.PH >LDA.G ASM.PH.ON - bmi .9 - - lda #$80 - sta (pData),y - ldy #ASM.PC.PH - jsr DIR.SavePC - - jmp DIR.OR - -.9 lda #E.ILLEGAL.DIR - sec - rts +DIR.PG +*--------------------------------------- +DIR.TI +*--------------------------------------- +DIR.US *--------------------------------------- DIR.TA @@ -651,12 +637,6 @@ DIR.TF >LDA.G ASM.PASS If Pass#1, ignore rts *--------------------------------------- -DIR.TI clc - rts -*--------------------------------------- -DIR.US clc - rts -*--------------------------------------- DIR.SavePC phy plx ldy #ASM.PC+3 @@ -677,6 +657,7 @@ DIR.SavePC phy dex bpl .2 + clc rts *--------------------------------------- DIR.RestorePC ldx #3 @@ -696,6 +677,7 @@ DIR.RestorePC ldx #3 dex bpl .2 + clc because of JMP to it rts *--------------------------------------- MAN diff --git a/BIN/ASM.S.EXP.txt b/BIN/ASM.S.EXP.txt index 4e0b3005..f95a8ebd 100644 --- a/BIN/ASM.S.EXP.txt +++ b/BIN/ASM.S.EXP.txt @@ -20,8 +20,8 @@ EXP.Eval.Missing rts EXP.Eval >STZ.G EXP.Modifier - >STZ.G EXP.Prefix - >STZ.G EXP.Operator + >STA.G EXP.Prefix + >STA.G EXP.Operator jsr SRC.GetChar bcs EXP.Eval.Missing @@ -175,8 +175,6 @@ EXP.EvalExitUND lda #E.UNDEF.SYMBOL rts *--------------------------------------- EXP.EvalOperator -* jsr EXP.SetACCSize - >LDA.G EXP.Operator beq .7 @@ -399,32 +397,6 @@ EXP.SetAccA sta SRC.ACC clc rts *--------------------------------------- -EXP.SetACCSize lda SRC.ACC.SIZE - bne .8 - - >LDA.G ASM.PASS - bne .1 - - lda SRC.ACC.F - and #SYMG.F.FWREF - beq .1 - - ldx #2 - bra .7 - -.1 ldx #4 - -.2 lda SRC.ACC-1,x - bne .7 - - dex - bne .2 - - inx - -.7 stx SRC.ACC.SIZE -.8 rts -*--------------------------------------- MAN SAVE USR/SRC/BIN/ASM.S.EXP LOAD USR/SRC/BIN/ASM.S diff --git a/BIN/ASM.S.MAC.txt b/BIN/ASM.S.MAC.txt index 8ff9720b..b44ebd6e 100644 --- a/BIN/ASM.S.MAC.txt +++ b/BIN/ASM.S.MAC.txt @@ -255,7 +255,9 @@ MAC.ReadLine >LDA.G MAC.hBuf sta ZPPtr2+1 ldy #0 - + + stz DIR.Byte + .1 lda (ZPMacroBuf) beq .8 @@ -266,9 +268,19 @@ MAC.ReadLine >LDA.G MAC.hBuf bne .2 inc ZPMacroBuf+1 -.2 cmp #']' +.2 cmp #'"' + bne .20 + + lda DIR.Byte + eor #$ff + sta DIR.Byte + +.20 cmp #']' bne .7 + bit DIR.Byte + bmi .7 + lda (ZPMacroBuf) beq .9 @@ -281,16 +293,13 @@ MAC.ReadLine >LDA.G MAC.hBuf lda ZPMacroArgCnt ora #$30 - sta (ZPLineBuf),y - iny - - bra .1 + bra .7 .22 cmp #'1' - bcc .9 + bcc .6 cmp #'9'+1 - bcs .9 + bcs .6 and #$0f tax @@ -301,16 +310,16 @@ MAC.ReadLine >LDA.G MAC.hBuf jsr MAC.GetArgX bcs .1 no arg ]n, append nothing - lda (ZPPtr1) - cmp #'"' - bne .3 +* lda (ZPPtr1) +* cmp #'"' +* bne .3 - inc ZPPtr1 - bne .23 - inc ZPPtr1+1 +* inc ZPPtr1 +* bne .23 +* inc ZPPtr1+1 -.23 dex - dex +*.23 dex +* dex .3 lda (ZPPtr1) sta (ZPLineBuf),y @@ -324,6 +333,12 @@ MAC.ReadLine >LDA.G MAC.hBuf bne .3 bra .1 + +.6 pha + lda #']' + sta (ZPLineBuf),y + iny + pla .7 sta (ZPLineBuf),y iny @@ -356,7 +371,7 @@ MAC.Push >LDA.G MAC.StkPtr >STA.G MAC.CtxID >LDYA ZPLinePtr - >SYSCALL strdup Args + >SYSCALL StrDup Args bcs .99 >STYA ZPPtr2 diff --git a/BIN/ASM.S.OUT.txt b/BIN/ASM.S.OUT.txt index df74851d..99f593ce 100644 --- a/BIN/ASM.S.OUT.txt +++ b/BIN/ASM.S.OUT.txt @@ -5,23 +5,205 @@ OUT.Init lda #PAGE.LEN >STA.G OUT.LineCnt rts *--------------------------------------- -OUT.Reset ldx #4 +OUT.EmitByte phy + phx + tax + + >LDA.G ASM.PASS + beq .1 + + >LDA.G ASM.DU.ON + bmi .1 + + txa + pha + >PUSHA + >LDA.G DST.hREFNUM + >SYSCALL FPutC + plx + bcs .99 + +.1 >INC.G ASM.PC + bne .2 + >INC.G ASM.PC+1 + bne .2 + >INC.G ASM.PC+2 + bne .2 + >INC.G ASM.PC+3 + +.2 >LDA.G ASM.PH.ON + beq .3 + + >INC.G ASM.PC.PH + bne .3 + >INC.G ASM.PC.PH+1 + bne .3 + >INC.G ASM.PC.PH+2 + bne .3 + >INC.G ASM.PC.PH+3 + +.3 >LDA.G OUT.Buf + cmp #3 + bne .4 + + phx + jsr OUT.PrintBuf + plx + bcs .99 + + ldy #OUT.Buf + lda #0 + +.4 inc + sta (pData),y + clc + adc #OUT.Buf + tay + txa + sta (pData),y + +.8 clc + +.99 plx + ply + rts +*--------------------------------------- +OUT.PrintBuf jsr OUT.PrintLineOn + bcs OUT.PrintBufReset + + >LDA.G ASM.LI.XON + bpl OUT.PrintBufReset + + jsr OUT.PrintLineOutBuf + bcs OUT.PrintBuf.RTS + jsr OUT.PrintCR + bcs OUT.PrintBuf.RTS + +OUT.PrintBufReset + >STZ.G OUT.Buf + + ldx #4 ldy #ASM.PC -.1 lda (pData),y + +.2 lda (pData),y pha iny dex - bne .1 + bne .2 + ldx #4 ldy #OUT.PC+3 -.2 pla + +.3 pla sta (pData),y dey dex - bne .2 + bne .3 + +.8 clc + +OUT.PrintBuf.RTS + rts +*--------------------------------------- +OUT.PrintLine jsr OUT.PrintLineOn + bcs OUT.PrintBuf.RTS + +OUT.PrintLine.1 jsr OUT.PrintLineOutBuf + bcs OUT.PrintBuf.RTS + + >LDA.G SRC.Depth - >STZ.G OUT.Buf - >STA.G OUT.bEquate +.1 dec + beq .2 + + pha + lda #'>' + >SYSCALL PutChar + pla + bra .1 + +.2 >PUSHW L.MSG.LINENUM + >PUSHW.G SRC.LINENUM + >PUSHBI 2 + >SYSCALL PrintF + + >LDA.G MAC.CtxStackPtr + +.3 dec + bmi .4 + + pha + lda #'>' + >SYSCALL PutChar + pla + bra .3 + +.4 >LDYA ZPLineBuf + >SYSCALL PutS + + jmp OUT.PrintCR1 +*--------------------------------------- +OUT.PrintLineOutBuf + >LDA.G OUT.bEquate + bne OUT.PrintLineEQU + + >LDA.G OUT.Buf + pha + asl + tax + >PUSHB L.MSG.OUT0+1,x + >PUSHB L.MSG.OUT0,x + + ldy #OUT.PC+1 + >PUSHB (pData),y + dey + >PUSHB (pData),y + + pla + beq .2 + + tax + + ldy #OUT.Buf + + pha + +.1 iny + >PUSHB (pData),y + dex + bne .1 + + pla + +.2 inc + inc + >PUSHA Byte Count+2 for PC + >SYSCALL PrintF + + rts +*--------------------------------------- +OUT.PrintLineEQU + lda SRC.ACC.SIZE + asl + tax + + >PUSHB L.MSG.EQU0+1,x + >PUSHB L.MSG.EQU0,x + + lda SRC.ACC.SIZE + beq .2 + + tay + +.1 dey + >PUSHB SRC.ACC,y + tya + bne .1 + + lda SRC.ACC.SIZE + +.2 >PUSHA Byte Count + >SYSCALL PrintF rts *--------------------------------------- OUT.PrintLineOn @@ -117,170 +299,8 @@ OUT.PrintLineErrDashA .8 clc .9 rts *--------------------------------------- -OUT.PrintLine jsr OUT.PrintLineOn - bcs OUT.Print.RTS - -OUT.PrintLine.1 jsr OUT.PrintLineOutBuf - bcs OUT.Print.RTS - - >LDA.G SRC.Depth - -.1 dec - beq .2 - - pha - lda #'>' - >SYSCALL putchar - pla - bra .1 - -.2 >PUSHW L.MSG.LINENUM - >PUSHW.G SRC.LINENUM - >PUSHBI 2 - >SYSCALL PrintF - - >LDA.G MAC.CtxStackPtr - -.3 dec - bmi .4 - - pha - lda #'>' - >SYSCALL putchar - pla - bra .3 - -.4 >LDYA ZPLineBuf - >SYSCALL PutS - - jmp OUT.PrintCR1 -*--------------------------------------- OUT.Print >SYSCALL PrintF bcs OUT.Print.RTS - jmp OUT.PrintCR - -OUT.Print.RTS rts -*--------------------------------------- -OUT.PrintLineOutBuf - >LDA.G OUT.bEquate - bne OUT.PrintLineEQU - - >LDA.G OUT.Buf - pha - asl - tax - >PUSHB L.MSG.OUT0+1,x - >PUSHB L.MSG.OUT0,x - - ldy #OUT.PC+1 - >PUSHB (pData),y - dey - >PUSHB (pData),y - - pla - beq .2 - - tax - - ldy #OUT.Buf - - pha - -.1 iny - >PUSHB (pData),y - dex - bne .1 - - pla - -.2 inc - inc - >PUSHA Byte Count+2 for PC - >SYSCALL PrintF - - rts -*--------------------------------------- -OUT.PrintLineEQU - lda SRC.ACC.SIZE - asl - tax - - >PUSHB L.MSG.EQU0+1,x - >PUSHB L.MSG.EQU0,x - - lda SRC.ACC.SIZE - beq .2 - - tay - -.1 dey - >PUSHB SRC.ACC,y - tya - bne .1 - - lda SRC.ACC.SIZE - -.2 >PUSHA Byte Count - >SYSCALL PrintF - rts -*--------------------------------------- -OUT.EmitByte phy - phx - pha - - >LDA.G ASM.PASS - beq .10 - - >LDA.G ASM.DU.ON - bmi .10 - - pla - pha - >PUSHA - >LDA.G DST.hREFNUM - >SYSCALL fputc - plx - bcs .99 - phx - -.10 >LDA.G OUT.Buf - cmp #3 - bne .2 - - jsr OUT.PrintLineOn - bcs .1 - - >LDA.G ASM.LI.XON - bpl .1 - - jsr OUT.PrintLineOutBuf - jsr OUT.PrintCR - -.1 jsr OUT.Reset - - lda #0 - ldy #OUT.Buf - -.2 inc - sta (pData),y - clc - adc #OUT.Buf - tay - pla - sta (pData),y - -.8 >INC.G ASM.PC - bne .80 - >INC.G ASM.PC+1 - bne .80 - >INC.G ASM.PC+2 - bne .80 - >INC.G ASM.PC+3 - -.80 clc -.99 plx - ply - rts *--------------------------------------- OUT.PrintCR >PUSHW L.MSG.CRLF >PUSHBI 0 @@ -293,11 +313,13 @@ OUT.PrintCR1 >DEC.G OUT.LineCnt sta (pData),y * lda #$80 * >STA.G bPause -.8 rts +.8 + +OUT.Print.RTS rts *--------------------------------------- OUT.DEBUG phy phx - >SYSCALL putchar + >SYSCALL PutChar >PUSHW L.MSG.DEBUG ldy #ASM.PC+4 diff --git a/BIN/ASM.S.SRC.txt b/BIN/ASM.S.SRC.txt index 5e36f054..8aa457e0 100644 --- a/BIN/ASM.S.SRC.txt +++ b/BIN/ASM.S.SRC.txt @@ -1,7 +1,10 @@ NEW AUTO 3,1 *--------------------------------------- -SRC.ParseLine jsr OUT.Reset +SRC.ParseLine jsr OUT.PrintBufReset + + >STZ.G OUT.bEquate + jsr SRC.GetChar bcs .8 diff --git a/BIN/ASM.S.SYM.txt b/BIN/ASM.S.SYM.txt index 8934d15c..5871a468 100644 --- a/BIN/ASM.S.SYM.txt +++ b/BIN/ASM.S.SYM.txt @@ -451,13 +451,6 @@ SYM.Dump.1 >LDYA L.MSG.SYMBOLS .9 rts *--------------------------------------- -SYM.Dump.DBG >PUSHW L.MSG.WORD - - >PUSHW ZPPtr2 - >PUSHBI 2 - >SYSCALL printf - rts -*--------------------------------------- SYM.Dump.GLP jsr SYM.Dump.G bcs .9 diff --git a/BIN/ASM.S.txt b/BIN/ASM.S.txt index fa68a26c..088b65fd 100644 --- a/BIN/ASM.S.txt +++ b/BIN/ASM.S.txt @@ -135,7 +135,6 @@ L.MSG.PSYMBOL .DA MSG.PSYMBOL L.MSG.SUMMARY .DA MSG.SUMMARY L.MSG.END .DA MSG.END L.MSG.DEBUG .DA MSG.DEBUG -L.MSG.WORD .DA MSG.WORD L.MSG.SRC.FILE .DA MSG.SRC.FILE L.MSG.OBJ.FILE .DA MSG.OBJ.FILE L.MSG.T.FILE .DA MSG.T.FILE @@ -536,7 +535,6 @@ MSG.PSYMBOL .AZ " :%d(%d)=%h%h%h%h" MSG.SUMMARY .AZ "\r\n**** Symbol Table Size : %5D Bytes.\r\n" MSG.END .AZ "**** End Of Assembly." MSG.DEBUG .AZ "PC=%h%h%h%h, ACC=%h%h%h%h [%h] F:%b ARG=%h%h%h%h [%h]\r\n" -MSG.WORD .AZ "ID:%H " *--------------------------------------- ASM.CPU.FILE .BS 65