From 56ba5ecc081e8a5c59adc0352f6cfe270ba1bd65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Wed, 28 Mar 2018 16:23:32 +0100 Subject: [PATCH] Kernel 0.9.1 : ASM rewrite....Addressing Modes --- .Floppies/A2OSX.BUILD.po | Bin 819200 -> 819200 bytes .Tools/ASM.T.xlsm | Bin 82859 -> 82792 bytes BIN/ASM.S.DIR.txt | 1049 +++++++------- BIN/ASM.S.EXP.txt | 668 ++++----- BIN/ASM.S.FIO.txt | 605 ++++---- BIN/ASM.S.MAC.txt | 142 +- BIN/ASM.S.OUT.txt | 401 +++--- BIN/ASM.S.SRC.txt | 1847 +++++++++++++------------ BIN/ASM.S.SYM.txt | 692 +++++----- BIN/ASM.S.txt | 852 ++++++------ BIN/ASM.T.6502.A.txt | 24 +- BIN/ASM.T.6502.O.txt | 787 +++++------ BIN/ASM.T.6502.S.txt | 6 - BIN/ASM.T.65816.A.txt | 46 +- BIN/ASM.T.65816.O.txt | 1306 +++++++----------- BIN/ASM.T.65816.S.txt | 6 - BIN/ASM.T.65C02.A.txt | 28 +- BIN/ASM.T.65C02.O.txt | 934 +++++-------- BIN/ASM.T.65C02.S.txt | 6 - BIN/ASM.T.65R02.A.txt | 30 +- BIN/ASM.T.65R02.O.txt | 1204 +++++++--------- BIN/ASM.T.65R02.S.txt | 6 - BIN/ASM.T.SW16.A.txt | 98 +- BIN/ASM.T.SW16.O.txt | 913 +++++------- BIN/ASM.T.SW16.S.txt | 6 - BIN/ASM.T.Z80.A.txt | 402 +++--- BIN/ASM.T.Z80.O.txt | 2842 ++++++++++++++------------------------ BIN/ASM.T.Z80.S.txt | 6 - SYS/KERNEL.S.MEM.txt | 5 + 29 files changed, 6613 insertions(+), 8298 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 09656c8169ba560af117765679638d3996858541..357f9149b390f2755fad9e4879a59851e84f25d1 100644 GIT binary patch delta 94545 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

a7vI05LVe{2Pg(YQ1t{S(DQqm9tfeyVtAGoA>L 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 delta 94991 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%0D8B+S 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�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.G ASM.DO.StackPtr - inc - cmp #SRC.DO.MAXDEPTH - bcs .98 - - jsr SRC.GetNextCharNB - bcs .99 - - jsr EXP.Eval - bcs .99 - - >INC.G ASM.DO.StackPtr -* clc ok from bcs .99 - adc #ASM.DO.Stack-1 - tay - - lda SRC.ACC - ora SRC.ACC+1 - ora SRC.ACC+2 - ora SRC.ACC+3 - beq .1 - - lda #$ff - +DIR.DO >LDA.G ASM.DO.StackPtr + inc + cmp #SRC.DO.MAXDEPTH + bcs .98 + + jsr SRC.GetNextCharNB + bcs .99 + + jsr EXP.Eval + bcs .99 + + >INC.G ASM.DO.StackPtr +* clc ok from bcs .99 + adc #ASM.DO.Stack-1 + tay + + lda SRC.ACC + ora SRC.ACC+1 + ora SRC.ACC+2 + ora SRC.ACC+3 + beq .1 + + lda #$ff + .1 sta (pData),y - lda #$FF - >STA.G ASM.DO.ON - clc - rts - -.98 lda #ERR.TOO.MANY.DO - sec -.99 rts + lda #$FF + >STA.G ASM.DO.ON + clc + rts + +.98 lda #ERR.TOO.MANY.DO + sec +.99 rts *--------------------------------------- -DIR.DU clc - rts +DIR.DU clc + rts *--------------------------------------- -DIR.ED clc - rts +DIR.ED clc + rts *--------------------------------------- -DIR.EL >LDA.G ASM.DO.StackPtr - beq .9 - - clc - adc #ASM.DO.Stack-1 - tay - lda (pData),y - eor #$ff - sta (pData),y - - clc - rts - - -.9 lda #ERR.ELSE.WITHOUT.DO - sec - rts +DIR.EL >LDA.G ASM.DO.StackPtr + beq .9 + + clc + adc #ASM.DO.Stack-1 + tay + lda (pData),y + eor #$ff + sta (pData),y + + clc + rts + + +.9 lda #ERR.ELSE.WITHOUT.DO + sec + rts *--------------------------------------- -DIR.EM lda #ERR.MACRO.INV.DEF - sec - rts +DIR.EM lda #ERR.MACRO.INV.DEF + sec + rts *--------------------------------------- -DIR.EN clc - rts +DIR.EN clc + rts *--------------------------------------- -DIR.EP ldy #ASM.PH.ON - lda (pData),y - bpl .9 - - lda #0 - sta (pData),y - - ldy #ASM.PC.PH+3 - ldx #3 - -.1 lda (pData),y - pha - dey - dex - bpl .1 - - ldy #ASM.PC - ldx #3 - -.2 pla - sta (pData),y - iny - dex - bpl .2 - clc - rts - -.9 lda #ERR.INV.DIR - sec - rts +DIR.EP ldy #ASM.PH.ON + lda (pData),y + bpl .9 + + lda #0 + sta (pData),y + + ldy #ASM.PC.PH+3 + ldx #3 + +.1 lda (pData),y + pha + dey + dex + bpl .1 + + ldy #ASM.PC + ldx #3 + +.2 pla + sta (pData),y + iny + dex + bpl .2 + clc + rts + +.9 lda #ERR.INV.DIR + sec + rts *--------------------------------------- -DIR.EQ >LDA.G SYM.bGlobal - beq .99 - - jsr SRC.GetNextCharNB - bcs .99 - - jsr EXP.Eval - bcs .9 - - jsr SYM.UpdateGlobalAcc - bcs .9 - - lda #1 - >STA.G OUT.bEquate - clc - rts - -.99 lda #ERR.SYNTAX.ERROR - sec -.9 rts +DIR.SE lda #SYMG.F.RW + sta SRC.ACC.F *--------------------------------------- -DIR.FI ldy #ASM.DO.StackPtr - lda (pData),y - beq .99 - dec - sta (pData),y - bne .1 - - lda #$0 - ldy #ASM.DO.ON - sta (pData),y - -.1 clc - rts - -.99 lda #ERR.INV.DIR - sec - rts -*--------------------------------------- -DIR.HS jsr SRC.GetNextCharNB - bcs .99 - - jsr SRC.IsDigit16 - bcs .99 - -.1 >STA.G DIR.Byte - - jsr SRC.GetNextChar - bcc .2 - - jmp OUT.EmitByte - -.2 jsr SRC.IsDigit16 - bcc .3 - - cmp #',' - beq .22 - - cmp #'.' - bne .99 +DIR.EQ lda (ZPGlobalBuf) + beq .99 + + >STA.G OUT.bEquate + + jsr SRC.GetNextCharNB + bcs .99 -.22 >LDA.G DIR.Byte - jsr OUT.EmitByte - bcc .5 - rts - -.3 pha - >LDA.G DIR.Byte - asl - asl - asl - asl - >STA.G DIR.Byte - - pla - >ORA.G DIR.Byte - - -.4 jsr OUT.EmitByte - bcs .9 - - jsr SRC.GetNextChar - bcs .8 - cmp #' ' - beq .8 - - jsr SRC.IsDigit16 - bcc .1 - - cmp #',' - beq .5 - - cmp #'.' - bne .99 - -.5 jsr SRC.GetNextChar - bcs .99 - jsr SRC.IsDigit16 - bcc .1 - -.99 lda #ERR.SYNTAX.ERROR - sec -.9 rts + jsr EXP.Eval + bcs .9 -.8 clc - rts -*--------------------------------------- -DIR.IN jsr SRC.GetNextCharNB - bcs .9 - - >LDYA ZPLinePtr - >SYSCALL RealPath.YA - - phx - - jsr FIO.OpenFile - plx - php - pha - - txa - >SYSCALL FreeMem.A - - pla - plp - rts - - -.9 lda #ERR.SYNTAX.ERROR - sec - rts -*--------------------------------------- -DIR.LI jsr SRC.GetNextChar - bcs .9 + jsr SYM.Acc2Global + bcs .9 + + jsr SYM.FlushGlobal + bcs .9 + lda #0 + sta (ZPGlobalBuf) + rts - >LDYA L.T.LI - jsr SRC.GetKeyword - bcs .9 +.99 lda #ERR.SYNTAX.ERROR + sec +.9 rts +*--------------------------------------- +DIR.FI ldy #ASM.DO.StackPtr + lda (pData),y + beq .99 + dec + sta (pData),y + bne .1 + + lda #$0 + ldy #ASM.DO.ON + sta (pData),y + +.1 clc + rts + +.99 lda #ERR.INV.DIR + sec + rts +*--------------------------------------- +DIR.HS jsr SRC.GetNextCharNB + bcs .99 + + jsr SRC.IsDigit16 + bcs .99 + +.1 >STA.G DIR.Byte + + jsr SRC.GetNextChar + bcc .2 - jsr .7 + jmp OUT.EmitByte + +.2 jsr SRC.IsDigit16 + bcc .3 + + cmp #',' + beq .22 - jsr SRC.GetChar - bcs .8 - - cmp #',' - beq DIR.LI - cmp #' ' - beq .8 - -.9 lda #ERR.SYNTAX.ERROR - sec - rts - -.7 jmp (J.LI,x) + cmp #'.' + bne .99 -.8 clc - rts - -DIR.LI.ON ldy #ASM.LI.ON - sec - bra DIR.LI.APPLY - -DIR.LI.OFF ldy #ASM.LI.ON - clc - bra DIR.LI.APPLY - -DIR.LI.CON ldy #ASM.LI.CON - sec - bra DIR.LI.APPLY - -DIR.LI.COFF ldy #ASM.LI.CON - clc - bra DIR.LI.APPLY +.22 >LDA.G DIR.Byte + jsr OUT.EmitByte + bcc .5 + rts + +.3 pha + >LDA.G DIR.Byte + asl + asl + asl + asl + >STA.G DIR.Byte + + pla + >ORA.G DIR.Byte + + +.4 jsr OUT.EmitByte + bcs .9 + + jsr SRC.GetNextChar + bcs .8 + cmp #' ' + beq .8 + + jsr SRC.IsDigit16 + bcc .1 + + cmp #',' + beq .5 -DIR.LI.MON ldy #ASM.LI.MON - sec - bra DIR.LI.APPLY - -DIR.LI.MOFF ldy #ASM.LI.MON - clc - bra DIR.LI.APPLY - -DIR.LI.XON ldy #ASM.LI.XON - sec - bra DIR.LI.APPLY - -DIR.LI.XOFF ldy #ASM.LI.XON - clc - -DIR.LI.APPLY lda #0 - ror + cmp #'.' + bne .99 + +.5 jsr SRC.GetNextChar + bcs .99 + jsr SRC.IsDigit16 + bcc .1 + +.99 lda #ERR.SYNTAX.ERROR + sec +.9 rts - sta (pData),y - rts +.8 clc + rts *--------------------------------------- -DIR.MA >LDA.G MAC.bAdd - bmi .9 +DIR.IN jsr SRC.GetNextCharNB + bcs .9 + + >LDYA ZPLinePtr + >SYSCALL RealPath.YA + + phx + + jsr FIO.OpenFile + plx + php + pha + + txa + >SYSCALL FreeMem.A + + pla + plp + rts + + +.9 lda #ERR.SYNTAX.ERROR + sec + rts +*--------------------------------------- +DIR.LI jsr SRC.GetNextChar + bcs .9 - >LDA.G ASM.PASS If Pass#2, ignore - bne .8 + >LDYA L.T.LI + jsr SRC.GetKeyword + bcs .9 + + jsr .7 - jsr SRC.GetNextCharNB - beq DIR.OP.SYNERR + jsr SRC.GetChar + bcs .8 + + cmp #',' + beq DIR.LI + cmp #' ' + beq .8 + +.9 lda #ERR.SYNTAX.ERROR + sec + rts - jsr MAC.New - -.8 lda #$ff - >STA.G MAC.bAdd - - clc - rts - -.9 lda #ERR.MACRO.INV.DEF - sec - rts -*--------------------------------------- -DIR.OP jsr SRC.GetNextCharNB - bcs DIR.OP.SYNERR - - >LDYA ZPLinePtr - jmp FIO.LOAD.ASM.T - -DIR.OP.SYNERR lda #ERR.SYNTAX.ERROR - sec - rts -*--------------------------------------- -DIR.OR jsr SRC.GetNextCharNB - bcs DIR.OP.SYNERR - - jsr EXP.Eval - bcs .9 - - ldy #ASM.PC - ldx #0 - -.1 lda SRC.ACC,x - sta (pData),y - inx - iny - cpx #4 - bne .1 - clc -.9 rts -*--------------------------------------- -DIR.PG clc - rts -*--------------------------------------- -DIR.PH ldy #ASM.PH.ON - lda (pData),y - bmi .9 - - lda #$80 - sta (pData),y - - ldy #ASM.PC+3 - ldx #3 - -.1 lda (pData),y - pha - dey - dex - bpl .1 - - ldy #ASM.PC.PH - ldx #3 - -.2 pla - sta (pData),y - iny - dex - bpl .2 +.7 jmp (J.LI,x) - jmp DIR.OR - -.9 lda #ERR.INV.DIR - sec - rts +.8 clc + rts + +DIR.LI.ON ldy #ASM.LI.ON + sec + bra DIR.LI.APPLY + +DIR.LI.OFF ldy #ASM.LI.ON + clc + bra DIR.LI.APPLY + +DIR.LI.CON ldy #ASM.LI.CON + sec + bra DIR.LI.APPLY + +DIR.LI.COFF ldy #ASM.LI.CON + clc + bra DIR.LI.APPLY + +DIR.LI.MON ldy #ASM.LI.MON + sec + bra DIR.LI.APPLY + +DIR.LI.MOFF ldy #ASM.LI.MON + clc + bra DIR.LI.APPLY + +DIR.LI.XON ldy #ASM.LI.XON + sec + bra DIR.LI.APPLY + +DIR.LI.XOFF ldy #ASM.LI.XON + clc + +DIR.LI.APPLY lda #0 + ror + + sta (pData),y + rts *--------------------------------------- -DIR.SE clc - rts +DIR.MA >LDA.G MAC.bAdd + bmi .9 + + >LDA.G ASM.PASS If Pass#2, ignore + bne .8 + + jsr SRC.GetNextCharNB + beq DIR.OP.SYNERR + + jsr MAC.New + +.8 lda #$ff + >STA.G MAC.bAdd + + clc + rts + +.9 lda #ERR.MACRO.INV.DEF + sec + rts *--------------------------------------- -DIR.TA clc - rts +DIR.OP jsr SRC.GetNextCharNB + bcs DIR.OP.SYNERR + + >LDYA ZPLinePtr + jmp FIO.LOAD.ASM.T + +DIR.OP.SYNERR lda #ERR.SYNTAX.ERROR + sec + rts *--------------------------------------- -DIR.TF clc - rts +DIR.OR jsr SRC.GetNextCharNB + bcs DIR.OP.SYNERR + + jsr EXP.Eval + bcs .9 + + ldy #ASM.PC + ldx #0 + +.1 lda SRC.ACC,x + sta (pData),y + inx + iny + cpx #4 + bne .1 + clc +.9 rts *--------------------------------------- -DIR.TI clc - rts +DIR.PG clc + rts *--------------------------------------- -DIR.US clc - rts +DIR.PH ldy #ASM.PH.ON + lda (pData),y + bmi .9 + + lda #$80 + sta (pData),y + + ldy #ASM.PC+3 + ldx #3 + +.1 lda (pData),y + pha + dey + dex + bpl .1 + + ldy #ASM.PC.PH + ldx #3 + +.2 pla + sta (pData),y + iny + dex + bpl .2 + + jmp DIR.OR + +.9 lda #ERR.INV.DIR + sec + rts +*--------------------------------------- +DIR.TA clc + rts +*--------------------------------------- +DIR.TF clc + rts +*--------------------------------------- +DIR.TI clc + rts +*--------------------------------------- +DIR.US clc + rts *--------------------------------------- MAN SAVE /A2OSX.BUILD/BIN/DEV/ASM.S.DIR diff --git a/BIN/ASM.S.EXP.txt b/BIN/ASM.S.EXP.txt index 23cde09e..0bf4b30f 100644 --- a/BIN/ASM.S.EXP.txt +++ b/BIN/ASM.S.EXP.txt @@ -15,364 +15,372 @@ AUTO 4,1 * & = octal * * = PC *--------------------------------------- -EXP.Eval.Missing lda #ERR.MISSING.EXP - sec - rts +EXP.Eval.Missing + lda #ERR.MISSING.EXP + sec + rts -EXP.Eval >STZ.G EXP.Modifier - >STZ.G EXP.Prefix - >STZ.G EXP.Operator - - jsr SRC.GetChar - bcs EXP.Eval.Missing - - jsr SRC.IsMODReserved - bcs EXP.Eval.Next - - txa - >STA.G EXP.Modifier - lda #'#' - >STA.G EXP.Prefix - -EXP.Eval.Next0 jsr SRC.GetNextChar - -EXP.Eval.Next lda #2 - sta SRC.ACC.SIZE Default To WORD (2 bytes) - - stz SRC.ACC - stz SRC.ACC+1 - stz SRC.ACC+2 - stz SRC.ACC+3 - - jsr SRC.GetChar - bcs EXP.Eval.Missing - - cmp #'.' Local Label? - bne .12 - - jsr EXP.GetLSymIDInAcc - bcs .14 - - jmp EXP.EvalOperator -.14 rts +EXP.Eval >STZ.G EXP.Modifier + >STZ.G EXP.Prefix + >STZ.G EXP.Operator -.12 cmp #'*' - bne .10 + jsr SRC.GetChar + bcs EXP.Eval.Missing + + jsr SRC.IsMODReserved + bcs EXP.Eval.Next + + txa + >STA.G EXP.Modifier + lda #'#' + >STA.G EXP.Prefix + +EXP.Eval.Next0 jsr SRC.GetNextChar + +EXP.Eval.Next lda #2 + sta SRC.ACC.SIZE Default To WORD (2 bytes) - ldy #ASM.PC+3 - ldx #3 - -.11 lda (pData),y - sta SRC.ACC,x - dey - dex - bpl .11 + stz SRC.ACC + stz SRC.ACC+1 + stz SRC.ACC+2 + stz SRC.ACC+3 + + jsr SRC.GetChar + bcs EXP.Eval.Missing + + cmp #'.' Local Label? + bne .12 - jsr SRC.GetNextChar - jmp EXP.EvalOperator - -.10 jsr SRC.IsDigit10 Decimal constant ? - bcs .1 - - jsr SRC.GetDecimal - - bcs EXP.EvalExitSYN - bra EXP.EvalOperator - -.1 cmp #'$' Hex? - bne .2 - - jsr SRC.GetHex - - bcs EXP.EvalExitSYN - bra EXP.EvalOperator - - -.2 cmp #'%' binary? - bne .3 + jsr EXP.GetLSymIDInAcc + bcs .14 + + jmp EXP.EvalOperator +.14 rts + +.12 cmp #'*' + bne .10 - jsr SRC.GetBinary - - bcs EXP.EvalExitSYN - bra EXP.EvalOperator - - -.3 cmp #'&' octal? - bne .4 - jsr SRC.GetOctal - - bcs EXP.EvalExitSYN - bra EXP.EvalOperator - -.4 cmp #''' - 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 #'"' - bne .42 - jsr SRC.GetNextChar - bcs EXP.EvalExitSYN - ora #$80 - jsr EXP.SetAccA - jsr SRC.GetNextChar - bcs EXP.EvalOperator - cmp #'"' - bne EXP.EvalExitSYN - jsr SRC.GetNextChar - bra EXP.EvalOperator - -.42 jsr SRC.IsLetter Symbol ? - bcs EXP.EvalExitSYN + ldy #ASM.PC+3 + ldx #3 + +.11 lda (pData),y + sta SRC.ACC,x + dey + dex + bpl .11 - jsr EXP.GetGSymValueInAcc - bcs EXP.EvalExitUND - bra EXP.EvalOperator - -EXP.EvalExitOK >LDA.G EXP.Modifier - beq .8 - asl - tax - jmp (J.EXP.MOD-2,x) -.8 clc -EXP.EvalExitRTS rts - -EXP.EvalExitSYN lda #ERR.SYNTAX.ERROR - sec - rts + jsr SRC.GetNextChar + jmp EXP.EvalOperator + +.10 jsr SRC.IsDigit10 Decimal constant ? + bcs .1 + + jsr SRC.GetDecimal + + bcs EXP.EvalExitRTS + bra EXP.EvalOperator + +.1 cmp #'$' Hex? + bne .2 + + jsr SRC.GetHex + + bcs EXP.EvalExitRTS + bra EXP.EvalOperator + + +.2 cmp #'%' binary? + bne .3 -EXP.EvalExitUND lda #ERR.UNDEF.SYMBOL - sec - rts - -EXP.EvalOperator >LDA.G EXP.Operator - beq .7 - - jsr EXP.Compute - bcs EXP.EvalExitRTS - -.7 jsr SRC.GetChar - bcs EXP.EvalExitOK + jsr SRC.GetBinary + + bcs EXP.EvalExitRTS + bra EXP.EvalOperator + + +.3 cmp #'&' octal? + bne .4 + jsr SRC.GetOctal + + bcs EXP.EvalExitRTS + bra EXP.EvalOperator + +.4 cmp #''' + 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 #'"' + bne .42 + jsr SRC.GetNextChar + bcs EXP.EvalExitSYN + ora #$80 + jsr EXP.SetAccA + jsr SRC.GetNextChar + bcs EXP.EvalOperator + cmp #'"' + bne EXP.EvalExitSYN + jsr SRC.GetNextChar + bra EXP.EvalOperator + +.42 jsr SRC.IsLetter Symbol ? + bcs EXP.EvalExitSYN - cmp #' ' - beq EXP.EvalExitOK + jsr EXP.GetSymG + bcs EXP.EvalExitUND + bra EXP.EvalOperator + +EXP.EvalExitOK >LDA.G EXP.Modifier + beq .8 + asl + tax + jmp (J.EXP.MOD-2,x) + +.8 clc +EXP.EvalExitRTS rts + +EXP.EvalExitSYN lda #ERR.SYNTAX.ERROR + sec + rts - jsr SRC.IsAMReserved - bcc EXP.EvalExitOK - - jsr SRC.IsEXPReserved - bcs EXP.EvalExitSYN - txa - >STA.G EXP.Operator - - ldx #4 - -.8 lda SRC.ACC.SIZE,x - sta SRC.ARG.SIZE,x - dex - bpl .8 - - jmp EXP.Eval.Next0 -*--------------------------------------- -EXP.GetLSymIDInAcc jsr SRC.GetNextChar - bcs .9 - - jsr SRC.GetDecimal - bcs EXP.EvalExitSYN - lda SRC.ACC+1 - ora SRC.ACC+2 - ora SRC.ACC+3 - bne EXP.EvalExitSYN Max .255 - lda SRC.ACC - beq EXP.EvalExitSYN .0 is not allowed - - jsr SYM.LookupLocal - bcs EXP.EvalExitUND - rts - -.9 lda #ERR.SYNTAX.ERROR - sec - rts +EXP.EvalExitUND lda #ERR.UNDEF.SYMBOL + sec + rts *--------------------------------------- -EXP.GetGSymValueInAcc - jsr SYM.LookupGlobal - bcs .2 - - ldy #SYM.Lookup+5 - ldx #3 - -.1 lda (pData),y - sta SRC.ACC,x - dey - dex - bpl .1 - - lda (pData),y - and #SYMG.F.SIZE - sta SRC.ACC.SIZE -* clc - rts - -.2 >LDA.G ASM.PASS pass#2? - bne .99 yes, undefined symbol - - lda #0 Mark ACC as pending - sta SRC.ACC.SIZE - -.3 jsr SRC.GetNextChar - bcs .8 - - jsr SRC.IsLetterOrDigit - bcc .3 - cmp #'.' - beq .3 - cmp #'_' - beq .3 - -.8 clc - rts +EXP.EvalOperator + >LDA.G EXP.Operator + beq .7 + + jsr EXP.Compute + bcs EXP.EvalExitRTS + +.7 jsr SRC.GetChar + bcs EXP.EvalExitOK -.99 lda #ERR.UNDEF.SYMBOL - sec -.9 rts -*--------------------------------------- -EXP.SetAccA sta SRC.ACC - stz SRC.ACC+1 - stz SRC.ACC+2 - stz SRC.ACC+3 - lda #1 - sta SRC.ACC.SIZE - rts -*--------------------------------------- -EXP.Compute asl - tax - jmp (J.EXP.OP-2,x) -*--------------------------------------- -EXP.MOD.8.3 lda SRC.ACC+2 - bra EXP.MOD.8 -EXP.MOD.8.2 lda SRC.ACC+1 -EXP.MOD.8 sta SRC.ACC -EXP.MOD.8.1 lda #1 - sta SRC.ACC.SIZE - clc - rts -EXP.MOD.24 lda #3 - sta SRC.ACC.SIZE - clc - rts -EXP.MOD.32 lda #4 - sta SRC.ACC.SIZE - clc - rts -*--------------------------------------- -EXP.OP.EOR ldx #3 + cmp #' ' + beq EXP.EvalExitOK -.1 lda SRC.ARG,x - eor SRC.ACC,x - sta SRC.ACC,x - dex - bpl .1 - rts -*--------------------------------------- -EXP.OP.ORA ldx #3 + jsr SRC.IsAMReserved + bcc EXP.EvalExitOK -.1 lda SRC.ARG,x - ora SRC.ACC,x - sta SRC.ACC,x - dex - bpl .1 - rts + jsr SRC.IsEXPReserved + bcs EXP.EvalExitSYN + txa + >STA.G EXP.Operator + + ldx #5 + +.8 lda SRC.ACC.F,x + sta SRC.ARG.F,x + dex + bpl .8 + + jmp EXP.Eval.Next0 *--------------------------------------- -EXP.OP.AND ldx #3 +EXP.GetLSymIDInAcc + jsr SRC.GetNextChar + bcs .9 + + jsr SRC.GetDecimal + bcs EXP.EvalExitSYN + lda SRC.ACC+1 + ora SRC.ACC+2 + ora SRC.ACC+3 + bne EXP.EvalExitSYN Max .255 + lda SRC.ACC + beq EXP.EvalExitSYN .0 is not allowed + + jsr SYM.LookupLocal + bcs EXP.EvalExitUND + rts + +.9 lda #ERR.SYNTAX.ERROR + sec + rts +*--------------------------------------- +EXP.GetSymG jsr SYM.LookupGlobal + bcs .2 + + jsr SYM.Lookup2Acc + + clc + rts + +.2 >LDA.G ASM.PASS pass#2? + bne .99 yes, undefined symbol + + lda #0 Mark ACC as pending + sta SRC.ACC.SIZE + +.3 jsr SRC.GetNextChar + bcs .8 + + jsr SRC.IsLetterOrDigit + bcc .3 + cmp #'.' + beq .3 + cmp #'_' + beq .3 + +.8 clc + rts -.1 lda SRC.ARG,x - and SRC.ACC,x - sta SRC.ACC,x - dex - bpl .1 - rts +.99 lda #ERR.UNDEF.SYMBOL + sec +.9 rts *--------------------------------------- -EXP.OP.LOW clc - rts +EXP.SetAccA sta SRC.ACC + stz SRC.ACC+1 + stz SRC.ACC+2 + stz SRC.ACC+3 + lda #1 + sta SRC.ACC.SIZE + rts *--------------------------------------- -EXP.OP.EQU ldx #0 ARG-ACC->ACC - ldy #4 - - clc il not Equals, return 0 - -.1 lda SRC.ARG,x - eor SRC.ACC,x - bne .2 - inx - dey - bne .1 +EXP.Compute lda SRC.ACC.F + and SRC.ARG.F + and #SYMG.F.RESOLVED + beq .1 + + asl + tax + jmp (J.EXP.OP-2,x) + +.1 >LDA.G ASM.PASS + beq .8 + + lda #ERR.UNDEF.SYMBOL + sec + rts + +.8 clc + rts +*--------------------------------------- +EXP.MOD.8.3 lda SRC.ACC+2 + bra EXP.MOD.8 +EXP.MOD.8.2 lda SRC.ACC+1 +EXP.MOD.8 sta SRC.ACC +EXP.MOD.8.1 lda #1 + sta SRC.ACC.SIZE + clc + rts +EXP.MOD.24 lda #3 + sta SRC.ACC.SIZE + clc + rts +EXP.MOD.32 lda #4 + sta SRC.ACC.SIZE + clc + rts +*--------------------------------------- +EXP.OP.EOR ldx #3 - sec equals, return 1 - -.2 lda #0 - rol - sta SRC.ACC +.1 lda SRC.ARG,x + eor SRC.ACC,x + sta SRC.ACC,x + dex + bpl .1 + rts +*--------------------------------------- +EXP.OP.ORA ldx #3 - lda #1 - sta SRC.ACC.SIZE - -.9 rts +.1 lda SRC.ARG,x + ora SRC.ACC,x + sta SRC.ACC,x + dex + bpl .1 + rts +*--------------------------------------- +EXP.OP.AND ldx #3 + +.1 lda SRC.ARG,x + and SRC.ACC,x + sta SRC.ACC,x + dex + bpl .1 + rts +*--------------------------------------- +EXP.OP.LOW clc + rts +*--------------------------------------- +EXP.OP.EQU ldx #0 ARG-ACC->ACC + ldy #4 + + clc il not Equals, return 0 + +.1 lda SRC.ARG,x + eor SRC.ACC,x + bne .2 + inx + dey + bne .1 + + sec equals, return 1 + +.2 lda #0 + rol + sta SRC.ACC + + lda #1 + sta SRC.ACC.SIZE + +.9 rts *--------------------------------------- EXP.OP.GRT - clc - rts + clc + rts *--------------------------------------- -EXP.OP.ADD ldx #0 ARG-ACC->ACC - ldy #4 - - clc - -.1 lda SRC.ARG,x - adc SRC.ACC,x - sta SRC.ACC,x - inx - dey - bne .1 - - bcc .8 - - lda #ERR.VAL.TOO.BIG -.8 rts +EXP.OP.ADD ldx #0 ARG-ACC->ACC + ldy #4 + + clc + +.1 lda SRC.ARG,x + adc SRC.ACC,x + sta SRC.ACC,x + inx + dey + bne .1 + + bcc .8 + + lda #ERR.VAL.TOO.BIG +.8 rts *--------------------------------------- -EXP.OP.SUB ldx #0 ARG-ACC->ACC - ldy #4 - - sec +EXP.OP.SUB ldx #0 ARG-ACC->ACC + ldy #4 + + sec -.1 lda SRC.ARG,x - sbc SRC.ACC,x - sta SRC.ACC,x - inx - dey - bne .1 - - bcs .8 - - lda #ERR.VAL.TOO.BIG - sec - rts - -.8 clc - rts +.1 lda SRC.ARG,x + sbc SRC.ACC,x + sta SRC.ACC,x + inx + dey + bne .1 + + bcs .8 + + lda #ERR.VAL.TOO.BIG + sec + rts + +.8 clc + rts *--------------------------------------- EXP.OP.MUL *--------------------------------------- EXP.OP.DIV - clc - rts + clc + rts *--------------------------------------- MAN SAVE /A2OSX.BUILD/BIN/DEV/ASM.S.EXP diff --git a/BIN/ASM.S.FIO.txt b/BIN/ASM.S.FIO.txt index 86b98704..90e9b6e3 100644 --- a/BIN/ASM.S.FIO.txt +++ b/BIN/ASM.S.FIO.txt @@ -2,336 +2,337 @@ NEW PREFIX /A2OSX.BUILD AUTO 4,1 *--------------------------------------- -FIO.Init >LDYA L.ASM.6502 -FIO.LOAD.ASM.T >STYA ZPPtr2 +FIO.Init >LDYA L.ASM.6502 +FIO.LOAD.ASM.T >STYA ZPPtr2 - ldy #S.PS.hARGS - lda (pPS),y - >SYSCALL GetMemPtr.A + ldy #S.PS.hARGS + lda (pPS),y + >SYSCALL GetMemPtr.A - >STYA ZPPtr1 - - ldy #$ff - ldx #$ff - + >STYA ZPPtr1 + + ldy #$ff + ldx #$ff + .1 iny - inx - lda (ZPPtr1),y - sta ASM.T.FILENAME,x - bne .1 - - lda #'.' - sta ASM.T.FILENAME,x + inx + lda (ZPPtr1),y + sta ASM.T.FILENAME,x + bne .1 + + lda #'.' + sta ASM.T.FILENAME,x - inx + inx - lda #'T' - sta ASM.T.FILENAME,x + lda #'T' + sta ASM.T.FILENAME,x - inx + inx - lda #'.' - sta ASM.T.FILENAME,x - - ldy #$ff + lda #'.' + sta ASM.T.FILENAME,x + + ldy #$ff -.2 iny - inx - lda (ZPPtr2),y - jsr SRC.IsLetterOrDigit - bcs .3 - sta ASM.T.FILENAME,x - bra .2 - -.3 stz ASM.T.FILENAME,x - ldy #ASM.T.hMem - lda (pData),y - beq .4 - - >SYSCALL FreeMem.A - ldy #ASM.T.hMem - lda #0 - sta (pData),y - -.4 >PUSHW L.ASM.T.FILENAME - >LDYA L.MSG.T.FILE - jsr OUT.Print - - >PUSHWI 0 Aux type - >PUSHBI 6 S.FI.T.BIN - >PUSHBI SYS.FOpen.R - >PUSHW L.ASM.T.FILENAME - >SYSCALL LoadFile - bcs .9 - - txa - ldy #ASM.T.hMem - sta (pData),y - - >SYSCALL GetMemPtr.A - >STYA ZPPtr1 +.2 iny + inx + lda (ZPPtr2),y + jsr SRC.IsLetterOrDigit + bcs .3 + sta ASM.T.FILENAME,x + bra .2 + +.3 stz ASM.T.FILENAME,x + ldy #ASM.T.hMem + lda (pData),y + beq .4 + + >SYSCALL FreeMem.A + ldy #ASM.T.hMem + lda #0 + sta (pData),y + +.4 >PUSHW L.ASM.T.FILENAME + >LDYA L.MSG.T.FILE + jsr OUT.Print + + >PUSHWI 0 Aux type + >PUSHBI 6 S.FI.T.BIN + >PUSHBI SYS.FOpen.R + >PUSHW L.ASM.T.FILENAME + >SYSCALL LoadFile + bcs .9 + + txa + ldy #ASM.T.hMem + sta (pData),y + + >SYSCALL GetMemPtr.A + >STYA ZPPtr1 - ldy #ASM.T.AM - lda (ZPPtr1),y - clc - adc ZPPtr1 - sta ZPAMPtr - iny - lda (ZPPtr1),y - adc ZPPtr1+1 - sta ZPAMPtr+1 - - iny - lda (ZPPtr1),y - clc - adc ZPPtr1 - sta ZPRPtr - iny - lda (ZPPtr1),y - adc ZPPtr1+1 - sta ZPRPtr+1 - - iny - lda (ZPPtr1),y - clc - adc ZPPtr1 - sta ZPOpsPtr - iny - lda (ZPPtr1),y - adc ZPPtr1+1 - sta ZPOpsPtr+1 - -.9 rts + ldy #ASM.T.AM + lda (ZPPtr1),y + clc + adc ZPPtr1 + sta ZPAMPtr + iny + lda (ZPPtr1),y + adc ZPPtr1+1 + sta ZPAMPtr+1 + + iny + lda (ZPPtr1),y + clc + adc ZPPtr1 + sta ZPRPtr + iny + lda (ZPPtr1),y + adc ZPPtr1+1 + sta ZPRPtr+1 + + iny + lda (ZPPtr1),y + clc + adc ZPPtr1 + sta ZPOpsPtr + iny + lda (ZPPtr1),y + adc ZPPtr1+1 + sta ZPOpsPtr+1 + +.9 rts *--------------------------------------- -FIO.OpenFile >STYA ZPPtr1 - - >PUSHW ZPPtr1 - >LDYA L.MSG.SRC.FILE - jsr OUT.Print - - ldy #SRC.COUNT - lda (pData),y - cmp #SRC.IN.MAXDEPTH - bne .1 - - lda #ERR.SRC.TOO.MANY.IN - sec - rts - -.1 >PUSHW L.FIO.Stat - >PUSHW ZPPtr1 - >SYSCALL Stat - bcs .99 - - lda FIO.Stat+S.STAT.P.TYPE - cmp #$04 TXT ? - bne .2 +FIO.OpenFile >STYA ZPPtr1 + + >PUSHW ZPPtr1 + >LDYA L.MSG.SRC.FILE + jsr OUT.Print + + ldy #SRC.COUNT + lda (pData),y + cmp #SRC.IN.MAXDEPTH + bne .1 + + lda #ERR.SRC.TOO.MANY.IN + sec + rts + +.1 >PUSHW L.FIO.Stat + >PUSHW ZPPtr1 + >SYSCALL Stat + bcs .99 + + lda FIO.Stat+S.STAT.P.TYPE + cmp #$04 TXT ? + bne .2 - >PUSHWI 0 - >PUSHBI 4 - >PUSHBI SYS.FOpen.R+SYS.FOpen.T - bra .3 - -.2 cmp #$FA S-C/BAS? - bne .98 - - >PUSHWI 0 - >PUSHBI $FA - >PUSHBI SYS.FOpen.R - -.3 >PUSHW ZPPtr1 - >SYSCALL FOpen - bcs .99 - - pha - ldy #SRC.COUNT - lda (pData),y - clc - adc #SRC.hFILES - tay - pla - sta (pData),y - - ldy #SRC.COUNT - lda (pData),y - clc - adc #SRC.hFILETYPES - tay + >PUSHWI 0 + >PUSHBI 4 + >PUSHBI SYS.FOpen.R+SYS.FOpen.T + bra .3 + +.2 cmp #$FA S-C/BAS? + bne .98 + + >PUSHWI 0 + >PUSHBI $FA + >PUSHBI SYS.FOpen.R + +.3 >PUSHW ZPPtr1 + >SYSCALL FOpen + bcs .99 + + pha + ldy #SRC.COUNT + lda (pData),y + clc + adc #SRC.hFILES + tay + pla + sta (pData),y + + ldy #SRC.COUNT + lda (pData),y + clc + adc #SRC.hFILETYPES + tay - lda FIO.Stat+S.STAT.P.TYPE - sta (pData),y + lda FIO.Stat+S.STAT.P.TYPE + sta (pData),y - ldy #SRC.COUNT - lda (pData),y - inc - sta (pData),y - - lda #0 - >STA.G SRC.LINENUM - iny - sta (pData),y - - clc - rts - -.98 lda #ERR.SRC.INV.TYPE - - sec -.99 rts + ldy #SRC.COUNT + lda (pData),y + inc + sta (pData),y + + lda #0 + >STA.G SRC.LINENUM + iny + sta (pData),y + + clc + rts + +.98 lda #ERR.SRC.INV.TYPE + + sec +.99 rts *--------------------------------------- -FIO.ReadLine >LDYA ZPLineBuf - >STYA ZPLinePtr - - ldy #SRC.COUNT - lda (pData),y - clc - adc #SRC.hFILETYPES-1 - tay - lda (pData),y - bmi .10 +FIO.ReadLine >LDYA ZPLineBuf + >STYA ZPLinePtr + + ldy #SRC.COUNT + lda (pData),y + clc + adc #SRC.hFILETYPES-1 + tay + lda (pData),y + bmi .10 - >PUSHW ZPLineBuf - >PUSHWI 256 + >PUSHW ZPLineBuf + >PUSHWI 256 - jsr FIO.ReadFromFile - bcs .19 - - tya - beq .13 + jsr FIO.ReadFromFile + bcs .19 + + tya + beq .13 - dey - - lda #0 replace ending $0D with $00 -.13 sta (ZPLineBuf),y + dey - >INC.G SRC.LINENUM - bne .19 - >INC.G SRC.LINENUM+1 -.19 rts + lda #0 replace ending $0D with $00 +.13 sta (ZPLineBuf),y + + >INC.G SRC.LINENUM + bne .19 + >INC.G SRC.LINENUM+1 +.19 rts *--------------------------------------- -.10 >PUSHW ZPTmpBuf - >PUSHWI 3 - jsr FIO.ReadFromFile - bcs .19 +.10 >PUSHW ZPTmpBuf + >PUSHWI 3 + jsr FIO.ReadFromFile + bcs .19 - ldy #1 - lda (ZPTmpBuf),y - pha - iny - lda (ZPTmpBuf),y - >STA.G SRC.LINENUM+1 - pla - >STA.G SRC.LINENUM - - lda (ZPTmpBuf) LEN - sec - sbc #3 - bcc .9 LEN should be at least 3 + ldy #1 + lda (ZPTmpBuf),y + pha + iny + lda (ZPTmpBuf),y + >STA.G SRC.LINENUM+1 + pla + >STA.G SRC.LINENUM + + lda (ZPTmpBuf) LEN + sec + sbc #3 + bcc .9 LEN should be at least 3 - tay - >PUSHW ZPTmpBuf - lda #0 - >PUSHYA - jsr FIO.ReadFromFile - bcs .9 - - >LDYA ZPTmpBuf - >STYA ZPPtr1 - - ldy #0 - -.1 lda (ZPPtr1) - inc ZPPtr1 - bne .11 - inc ZPPtr1+1 - -.11 tax - bmi .2 - - sta (ZPLineBuf),y - beq .8 Ending 00 + tay + >PUSHW ZPTmpBuf + lda #0 + >PUSHYA + jsr FIO.ReadFromFile + bcs .9 + + >LDYA ZPTmpBuf + >STYA ZPPtr1 + + ldy #0 + +.1 lda (ZPPtr1) + inc ZPPtr1 + bne .11 + inc ZPPtr1+1 + +.11 tax + bmi .2 + + sta (ZPLineBuf),y + beq .8 Ending 00 - iny - bne .1 - bra .99 - -.2 cmp #$C0 REPEAT char? - bne .5 + iny + bne .1 + bra .99 + +.2 cmp #$C0 REPEAT char? + bne .5 - lda (ZPPtr1) Get Repeat Count - inc ZPPtr1 - bne .3 - inc ZPPtr1+1 - -.3 tax + lda (ZPPtr1) Get Repeat Count + inc ZPPtr1 + bne .3 + inc ZPPtr1+1 + +.3 tax - lda (ZPPtr1) Get Repeat Char - inc ZPPtr1 - bne .4 - inc ZPPtr1+1 - -.4 sta (ZPLineBuf),y - - iny - beq .99 - dex - bne .4 + lda (ZPPtr1) Get Repeat Char + inc ZPPtr1 + bne .4 + inc ZPPtr1+1 + +.4 sta (ZPLineBuf),y + + iny + beq .99 + dex + bne .4 - bra .1 - -.5 and #$3F Compute blank count - tax - lda #$20 - -.6 sta (ZPLineBuf),y - iny - beq .99 - - dex - bne .6 - bra .1 - -.8 clc -.9 rts + bra .1 + +.5 and #$3F Compute blank count + tax + lda #$20 + +.6 sta (ZPLineBuf),y + iny + beq .99 + + dex + bne .6 + bra .1 + +.8 clc +.9 rts -.99 lda #ERR.LINE.TOO.LONG - sec - rts +.99 lda #ERR.LINE.TOO.LONG + sec + rts *-------------------------------------- -FIO.ReadFromFile ldy #SRC.COUNT - lda (pData),y - clc - adc #SRC.hFILES-1 - tay - lda (pData),y - >PUSHA - >SYSCALL FRead - bcs .9 - - tax $100 byte transfered ? - beq .9 - - lda #ERR.LINE.TOO.LONG - sec -.9 rts +FIO.ReadFromFile + ldy #SRC.COUNT + lda (pData),y + clc + adc #SRC.hFILES-1 + tay + lda (pData),y + >PUSHA + >SYSCALL FRead + bcs .9 + + tax $100 byte transfered ? + beq .9 + + lda #ERR.LINE.TOO.LONG + sec +.9 rts *--------------------------------------- -FIO.FileClose ldy #SRC.COUNT - lda (pData),y - beq .8 - - clc - adc #SRC.hFILES-1 - tay - lda (pData),y - >SYSCALL FClose.A - - ldy #SRC.COUNT - lda (pData),y - dec - sta (pData),y - -.8 clc - rts +FIO.FileClose ldy #SRC.COUNT + lda (pData),y + beq .8 + + clc + adc #SRC.hFILES-1 + tay + lda (pData),y + >SYSCALL FClose.A + + ldy #SRC.COUNT + lda (pData),y + dec + sta (pData),y + +.8 clc + rts *--------------------------------------- MAN SAVE /A2OSX.BUILD/BIN/DEV/ASM.S.FIO diff --git a/BIN/ASM.S.MAC.txt b/BIN/ASM.S.MAC.txt index b1187d7e..539be58d 100644 --- a/BIN/ASM.S.MAC.txt +++ b/BIN/ASM.S.MAC.txt @@ -2,83 +2,83 @@ NEW PREFIX /A2OSX.BUILD AUTO 4,1 *--------------------------------------- -MAC.Init >SYSCALL SListNew - bcs .9 +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 -*--------------------------------------- -MAC.New lda #0 - tay - -.1 sta (ZPMacroBuf),y - iny - bne .1 - - rts -*--------------------------------------- -MAC.AddChar >LDA.G ASM.PASS If Pass#2, ignore - bne .8 - - tax - lda (ZPMacroBuf) -* cmp #254 -* beq .9 CS if EQ - - inc - sta (ZPMacroBuf) - - tay - txa - - sta (ZPMacroBuf),y - - tax - beq .1 - -* >SYSCALL PutChar.A -.8 clc - rts - -.1 -* lda #13 -* >SYSCALL PutChar.A -* lda #10 -* >SYSCALL PutChar.A + >STA.G MAC.hMacros - - clc -.9 rts + >LDYAI 256 + >SYSCALL GetMem.YA + bcs .9 + + >STYA ZPMacroBuf + txa + >STA.G MAC.hBuf + +.9 rts *--------------------------------------- -MAC.Store >LDA.G ASM.PASS If Pass#2, ignore - bne .8 +MAC.Quit >LDA.G MAC.hBuf + beq .1 -.8 clc - rts + >SYSCALL FreeMem.A + +.1 >LDA.G MAC.hMacros + beq .8 + >SYSCALL SListFree.A + +.8 clc + rts *--------------------------------------- +MAC.New lda #0 + tay + +.1 sta (ZPMacroBuf),y + iny + bne .1 + + rts +*--------------------------------------- +MAC.AddChar >LDA.G ASM.PASS If Pass#2, ignore + bne .8 + + tax + lda (ZPMacroBuf) +* cmp #254 +* beq .9 CS if EQ + + inc + sta (ZPMacroBuf) + + tay + txa + + sta (ZPMacroBuf),y + + tax + beq .1 + +* >SYSCALL PutChar.A +.8 clc + rts + +.1 +* lda #13 +* >SYSCALL PutChar.A +* lda #10 +* >SYSCALL PutChar.A - + + clc +.9 rts +*--------------------------------------- +MAC.Store >LDA.G ASM.PASS If Pass#2, ignore + bne .8 + +.8 clc + rts +*--------------------------------------- + + MAN SAVE /A2OSX.BUILD/BIN/DEV/ASM.S.MAC LOAD /A2OSX.BUILD/BIN/DEV/ASM.S diff --git a/BIN/ASM.S.OUT.txt b/BIN/ASM.S.OUT.txt index a28e80d7..5110c20d 100644 --- a/BIN/ASM.S.OUT.txt +++ b/BIN/ASM.S.OUT.txt @@ -2,225 +2,228 @@ NEW PREFIX /A2OSX.BUILD AUTO 4,1 *--------------------------------------- -OUT.Init lda #20 - >STA.G OUT.LineCnt - rts +OUT.Init lda #20 + >STA.G OUT.LineCnt + rts *--------------------------------------- -OUT.Reset ldx #4 - - ldy #ASM.PC - -.1 lda (pData),y - pha - iny - dex - bne .1 - - ldx #4 - - ldy #OUT.PC+3 - -.2 pla - sta (pData),y - dey - dex - bne .2 +OUT.Reset ldx #4 + + ldy #ASM.PC + +.1 lda (pData),y + pha + iny + dex + bne .1 + + ldx #4 + + ldy #OUT.PC+3 + +.2 pla + sta (pData),y + dey + dex + bne .2 - >STZ.G OUT.Buf - >STA.G OUT.bEquate - - rts + >STZ.G OUT.Buf + >STA.G OUT.bEquate + + rts *--------------------------------------- -OUT.PrintLineErr >STA.G DIR.Byte Save Error code +OUT.PrintLineErr + >STA.G DIR.Byte Save Error code - jsr OUT.PrintLine.1 - bcs .9 - -.1 >PUSHB.G DIR.Byte - >LDYA L.MSG.ERROR - >SYSCALL PrintF.YA - - ldx ZPLinePtr - cpx ZPLineBuf - beq .4 - -.3 phx - lda #'-' - >SYSCALL PutChar.A - plx - bcs .9 - dex - cpx ZPLineBuf - bne .3 - -.4 lda #'^' - phy - >SYSCALL PutChar.A - ply - bcs .9 + jsr OUT.PrintLine.1 + bcs .9 + +.1 >PUSHB.G DIR.Byte + >LDYA L.MSG.ERROR + >SYSCALL PrintF.YA + + ldx ZPLinePtr + cpx ZPLineBuf + beq .4 + +.3 phx + lda #'-' + >SYSCALL PutChar.A + plx + bcs .9 + dex + cpx ZPLineBuf + bne .3 + +.4 lda #'^' + phy + >SYSCALL PutChar.A + ply + bcs .9 -.5 lda #13 - >SYSCALL PutChar.A - lda #10 - >SYSCALL PutChar.A - -.9 rts +.5 lda #13 + >SYSCALL PutChar.A + lda #10 + >SYSCALL PutChar.A + +.9 rts *--------------------------------------- -OUT.PrintLine jsr OUT.PrintLineOn - bcs OUT.PrintLine.9 - -OUT.PrintLine.1 jsr OUT.PrintLineOutBuf - bcs OUT.PrintLine.9 - - >PUSHW ZPLineBuf - >PUSHW.G SRC.LINENUM - >LDYA L.MSG.SRCLINE - jmp OUT.Print -OUT.PrintLine.9 rts +OUT.PrintLine jsr OUT.PrintLineOn + bcs OUT.PrintLine.9 + +OUT.PrintLine.1 jsr OUT.PrintLineOutBuf + bcs OUT.PrintLine.9 + + >PUSHW ZPLineBuf + >PUSHW.G SRC.LINENUM + >LDYA L.MSG.SRCLINE + jmp OUT.Print +OUT.PrintLine.9 rts *--------------------------------------- -OUT.PrintLineOn clc - rts - - >LDA.G ASM.LI.ON - bpl .9 - - >LDA.G MAC.bAdd MACRO Mode ? - bpl .1 - - >LDA.G ASM.LI.MON - bpl .9 - bmi .8 - -.1 >LDA.G ASM.DO.StackPtr within a DO/ELSE ? - beq .2 - - clc - adc #ASM.DO.Stack-1 - tay - lda (pData),y TRUE ? - bne .8 yes, print always - - >LDA.G ASM.LI.CON FALSE, check CON flag... - bpl .9 - bmi .8 - +OUT.PrintLineOn clc + rts + + >LDA.G ASM.LI.ON + bpl .9 + + >LDA.G MAC.bAdd MACRO Mode ? + bpl .1 + + >LDA.G ASM.LI.MON + bpl .9 + bmi .8 + +.1 >LDA.G ASM.DO.StackPtr within a DO/ELSE ? + beq .2 + + clc + adc #ASM.DO.Stack-1 + tay + lda (pData),y TRUE ? + bne .8 yes, print always + + >LDA.G ASM.LI.CON FALSE, check CON flag... + bpl .9 + bmi .8 + .2 - -.8 clc - rts - -.9 sec - rts + +.8 clc + rts + +.9 sec + rts *--------------------------------------- -OUT.PrintLineOutBuf >LDA.G OUT.bEquate - bne OUT.PrintLineAcc - - >LDA.G OUT.Buf - beq .2 - - tax - clc - adc #OUT.Buf - tay - -.1 >PUSHB (pData),y - dey - dex - bne .1 - -.2 ldy #OUT.PC+1 - >PUSHB (pData),y - dey - >PUSHB (pData),y - - >LDA.G OUT.Buf - asl - tax - ldy L.MSG.OUT0,x - lda L.MSG.OUT0+1,x - >SYSCALL PrintF.YA - rts +OUT.PrintLineOutBuf + >LDA.G OUT.bEquate + bne OUT.PrintLineAcc + + >LDA.G OUT.Buf + beq .2 + + tax + clc + adc #OUT.Buf + tay + +.1 >PUSHB (pData),y + dey + dex + bne .1 + +.2 ldy #OUT.PC+1 + >PUSHB (pData),y + dey + >PUSHB (pData),y + + >LDA.G OUT.Buf + asl + tax + ldy L.MSG.OUT0,x + lda L.MSG.OUT0+1,x + >SYSCALL PrintF.YA + rts -OUT.PrintLineAcc ldx SRC.ACC.SIZE - beq .2 - - ldy #0 - -.1 >PUSHB SRC.ACC,y - iny - dex - bne .1 - - lda SRC.ACC.SIZE - asl - tax - -.2 ldy L.MSG.EQU0,x - lda L.MSG.EQU0+1,x - >SYSCALL PrintF.YA - rts +OUT.PrintLineAcc + ldx SRC.ACC.SIZE + beq .2 + + ldy #0 + +.1 >PUSHB SRC.ACC,y + iny + dex + bne .1 + + lda SRC.ACC.SIZE + asl + tax + +.2 ldy L.MSG.EQU0,x + lda L.MSG.EQU0+1,x + >SYSCALL PrintF.YA + rts *--------------------------------------- -OUT.Print >SYSCALL PrintF.YA - bra OUT.Print1 - -OUT.PrintCR lda #13 - >SYSCALL PutChar.A - lda #10 - >SYSCALL PutChar.A +OUT.Print >SYSCALL PrintF.YA + bra OUT.Print1 + +OUT.PrintCR lda #13 + >SYSCALL PutChar.A + lda #10 + >SYSCALL PutChar.A -OUT.Print1 >DEC.G OUT.LineCnt - bne .8 - - lda #20 - sta (pData),y - - >DEBUG +OUT.Print1 >DEC.G OUT.LineCnt + bne .8 + + lda #20 + sta (pData),y + + >DEBUG -.8 rts +.8 rts *--------------------------------------- -OUT.EmitByte phy - phx - pha +OUT.EmitByte phy + phx + pha - >LDA.G OUT.Buf - cmp #3 - bne .2 + >LDA.G OUT.Buf + cmp #3 + bne .2 - jsr OUT.PrintLineOn - bcs .1 + 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 - >LDA.G ASM.LI.XON - bpl .1 +.2 inc + sta (pData),y + clc + adc #OUT.Buf + tay - jsr OUT.PrintLineOutBuf - jsr OUT.PrintCR + pla + sta (pData),y -.1 jsr OUT.Reset - - lda #0 - ldy #OUT.Buf +.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 -.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 plx - ply - clc - rts +.80 plx + ply + clc + rts *--------------------------------------- MAN SAVE /A2OSX.BUILD/BIN/DEV/ASM.S.OUT diff --git a/BIN/ASM.S.SRC.txt b/BIN/ASM.S.SRC.txt index e678941b..dcf710a6 100644 --- a/BIN/ASM.S.SRC.txt +++ b/BIN/ASM.S.SRC.txt @@ -2,992 +2,989 @@ NEW PREFIX /A2OSX.BUILD AUTO 4,1 *--------------------------------------- -SRC.ParseLine jsr OUT.Reset - - jsr SRC.GetChar - bcs .8 - - cmp #'*' Comment? - beq .8 - cmp #';' Comment? - beq .8 - - >LDA.G ASM.DO.StackPtr - beq .1 - - clc - adc #ASM.DO.Stack-1 - tay - lda (pData),y - beq .8 - -.1 >LDA.G MAC.bAdd - bmi SRC.ParseLine.MACRO +SRC.ParseLine jsr OUT.Reset + + jsr SRC.GetChar + bcs .8 + + cmp #'*' Comment? + beq .8 + cmp #';' Comment? + beq .8 + + >LDA.G ASM.DO.StackPtr + beq .1 + + clc + adc #ASM.DO.Stack-1 + tay + lda (pData),y + beq .8 + +.1 >LDA.G MAC.bAdd + bmi SRC.ParseLine.MACRO - jmp SRC.ParseLine.LABEL - -.8 clc - rts - -SRC.ParseLine.Macro lda (ZPLinePtr) - cmp #' ' No label, scan to DIR/OP if any - bne .1 - - jsr SRC.GetNextCharNB - bcs .8 - - lda #' ' Store ONE blank - jsr MAC.AddChar - bcs .90 - - lda (ZPLinePtr) get back non blank char - bra .2 - -.1 jsr MAC.AddChar - bcs .99 - - jsr SRC.GetNextChar - bcs .80 - cmp #' ' - bne .1 - - jsr MAC.AddChar -.90 bcs .99 - - jsr SRC.GetNextCharNB - bcs .80 - -.2 cmp #'.' Directive ? - bne .4 + jmp SRC.ParseLine.LABEL + +.8 clc + rts +*--------------------------------------- +SRC.ParseLine.Macro + lda (ZPLinePtr) + cmp #' ' No label, scan to DIR/OP if any + bne .1 + + jsr SRC.GetNextCharNB + bcs .8 + + lda #' ' Store ONE blank + jsr MAC.AddChar + bcs .90 + + lda (ZPLinePtr) get back non blank char + bra .2 + +.1 jsr MAC.AddChar + bcs .99 + + jsr SRC.GetNextChar + bcs .80 + cmp #' ' + bne .1 + + jsr MAC.AddChar +.90 bcs .99 + + jsr SRC.GetNextCharNB + bcs .80 + +.2 cmp #'.' Directive ? + bne .4 - ldy #1 - lda (ZPLinePtr),y - beq .3 - cmp #'E' - beq .21 - cmp #'e' - bne .3 - -.21 iny - lda (ZPLinePtr),y - beq .3 - cmp #'M' - beq .22 - cmp #'m' - bne .3 - -.22 jsr MAC.Store - bcs SRC.ParseLine.RTS - - >STZ.G MAC.bAdd - -.8 clc - rts + ldy #1 + lda (ZPLinePtr),y + beq .3 + cmp #'E' + beq .21 + cmp #'e' + bne .3 + +.21 iny + lda (ZPLinePtr),y + beq .3 + cmp #'M' + beq .22 + cmp #'m' + bne .3 + +.22 jsr MAC.Store + bcs SRC.ParseLine.RTS + + >STZ.G MAC.bAdd + +.8 clc + rts -.80 lda #0 - jmp MAC.AddChar - -.3 lda (ZPLinePtr) - -.4 jsr MAC.AddChar - bcs .99 - - jsr SRC.GetNextChar - bcs .80 - cmp #' ' - bne .4 - - jsr SRC.GetNextChar - bcs .8 - cmp #' ' - beq .80 Comments... - - pha - - lda #' ' - jsr MAC.AddChar - - pla - bcs .99 - -.5 jsr MAC.AddChar Store ARG.... - bcs .99 - - jsr SRC.GetNextChar - bcs .80 - cmp #' ' - bne .5 +.80 lda #0 + jmp MAC.AddChar + +.3 lda (ZPLinePtr) + +.4 jsr MAC.AddChar + bcs .99 + + jsr SRC.GetNextChar + bcs .80 + cmp #' ' + bne .4 + + jsr SRC.GetNextChar + bcs .8 + cmp #' ' + beq .80 Comments... + + pha + + lda #' ' + jsr MAC.AddChar + + pla + bcs .99 + +.5 jsr MAC.AddChar Store ARG.... + bcs .99 + + jsr SRC.GetNextChar + bcs .80 + cmp #' ' + bne .5 - lda #0 - jmp MAC.AddChar End of Line - clc - rts - -.99 lda #ERR.MACRO.TOO.BIG - sec - -SRC.ParseLine.RTS rts + lda #0 + jmp MAC.AddChar End of Line + clc + rts + +.99 lda #ERR.MACRO.TOO.BIG + sec + +SRC.ParseLine.RTS + rts *--------------------------------------- -SRC.ParseLine.LABEL jsr SRC.GetChar - cmp #' ' no label...go scan dir/opcode - beq SRC.ParseLine.DirOp - - cmp #'.' local symbol? - bne .1 +SRC.ParseLine.LABEL + jsr SRC.GetChar + cmp #' ' no label...go scan dir/opcode + beq SRC.ParseLine.DirOp + + cmp #'.' local symbol? + bne .1 - lda (ZPGlobalBuf) - beq SRC.ParseLine.InvLbl - - jsr SRC.GetNextChar - bcs SRC.ParseLine.InvLbl - jsr SRC.GetDecimal - bcs SRC.ParseLine.InvLbl - - lda SRC.ACC+1 - ora SRC.ACC+2 - ora SRC.ACC+3 - bne SRC.ParseLine.InvLbl Max .255 - lda SRC.ACC - beq SRC.ParseLine.InvLbl .0 is not allowed + lda (ZPGlobalBuf) Not relative to Global label... + beq SRC.ParseLine.InvLbl + + jsr SRC.GetNextChar + bcs SRC.ParseLine.InvLbl + jsr SRC.GetDecimal + bcs SRC.ParseLine.InvLbl + + lda SRC.ACC+1 + ora SRC.ACC+2 + ora SRC.ACC+3 + bne SRC.ParseLine.InvLbl Max .255 + lda SRC.ACC + beq SRC.ParseLine.InvLbl .0 is not allowed - jsr SYM.AddLocal - bcs SRC.ParseLine.RTS - bra SRC.ParseLine.DirOp + jsr SYM.NewOrGetLocalA + bcs SRC.ParseLine.RTS + bra SRC.ParseLine.DirOp -.1 jsr SYMG.FlushGlobal - bcs SRC.ParseLine.Err - - >LDA.G ASM.PASS - bne .2 - - jsr SYM.LookupGlobal already defined...get it - bcc SRC.ParseLine.Redef - - jsr SYM.NewGlobal Pass #1; try to add global... - bra SRC.ParseLine.DirOp - -.2 jsr SYM.GetGlobal Pass #2: should be already defined... - bcs SRC.ParseLine.Undef +.1 jsr SYM.FlushGlobal Close & store Previous Global + bcs SRC.ParseLine.RTS + + jsr SYM.NewOrGetGlobal + bcs SRC.ParseLine.RTS *--------------------------------------- -SRC.ParseLine.DirOp jsr SRC.GetNextCharNB Scan for an Opcode... - bcs SRC.ParseLine.Ok - - cmp #'.' - bne .5 - - jsr SRC.GetNextChar - bcs SRC.ParseLine.InvDir - - jsr SRC.ParseLine.Dir - bcs SRC.ParseLine.Err - bra SRC.ParseLine.Ok +SRC.ParseLine.DirOp + jsr SRC.GetNextCharNB Scan for an Opcode... + bcs SRC.ParseLine.Ok + + cmp #'.' + bne .5 + + jsr SRC.GetNextChar + bcs SRC.ParseLine.InvDir + + jsr SRC.ParseLine.Dir + bcs SRC.ParseLine.Err + bra SRC.ParseLine.Ok -.5 cmp #'>' - bne .6 - - jsr SRC.ParseLine.ExecMacro - bcs SRC.ParseLine.Err - bra SRC.ParseLine.Ok - -.6 jsr SRC.ParseLine.OpCode - bcs SRC.ParseLine.Err - -SRC.ParseLine.Ok clc -SRC.ParseLine.Err rts +.5 cmp #'>' + bne SRC.ParseLine.OpCode + + jsr SRC.ParseLine.ExecMacro + bcs SRC.ParseLine.Err + bra SRC.ParseLine.Ok + +SRC.ParseLine.Ok + clc +SRC.ParseLine.Err + rts SRC.ParseLine.InvLbl - lda #ERR.INV.LABEL - sec - rts - -SRC.ParseLine.Redef lda #ERR.SYMBOL.REDEF - sec - rts - -SRC.ParseLine.Undef lda #ERR.UNDEF.SYMBOL - sec - rts + lda #ERR.INV.LABEL + sec + rts + SRC.ParseLine.InvDir - lda #ERR.INV.DIR - sec - rts + lda #ERR.INV.DIR + sec + rts *--------------------------------------- -SRC.ParseLine.Dir >LDYA L.T.DIRECTIVES - jsr SRC.GetKeyword +SRC.ParseLine.Dir + >LDYA L.T.DIRECTIVES + jsr SRC.GetKeyword - bcs SRC.ParseLine.InvDir - - jmp (J.DIRECTIVES,x) + bcs SRC.ParseLine.InvDir + + jmp (J.DIRECTIVES,x) *--------------------------------------- SRC.ParseLine.ExecMacro - - - clc - rts + + + clc + rts *--------------------------------------- SRC.ParseLine.OpCode - stz SRC.AM.StrBuf - - >LDYA ZPOpsPtr - >STYA ZPOpDefPtr - -.1 lda (ZPOpDefPtr) End Of OpCode List - ldy #1 - ora (ZPOpDefPtr),y - beq .9 - - lda ZPOpDefPtr - clc - adc #2 - sta ZPPtr2 - lda ZPOpDefPtr+1 - adc #0 - sta ZPPtr2+1 - - lda (ZPPtr2) - tax - - ldy #0 - -.2 lda (ZPLinePtr),y - beq .7 - - cmp #'a' - bcc .3 - cmp #'z'+1 - bcs .3 - - eor #$20 - -.3 iny - cmp (ZPPtr2),y - bne .7 - - dex - bne .2 - - lda (ZPLinePtr),y - beq .8 End of Line, no AM - - cmp #' ' A space after opcode ? - bne .7 - - tya - sec skip OP + ' ' - adc ZPLinePtr - sta ZPLinePtr - bcc .5 - - inc ZPLinePtr+1 - -.5 bra SRC.ParseLine.AM - -.7 lda ZPOpDefPtr - clc - adc (ZPOpDefPtr) - tax - - lda ZPOpDefPtr+1 - ldy #1 - adc (ZPOpDefPtr),y - stx ZPOpDefPtr - sta ZPOpDefPtr+1 - bra .1 - -.8 jmp SRC.ParseLine.OPAMCheckFF - -.9 lda #ERR.INV.OPCODE - sec -.99 rts + stz SRC.AM.StrBuf + + >LDYA ZPOpsPtr + >STYA ZPOpDefPtr + +.1 lda (ZPOpDefPtr) End Of OpCode List + ldy #1 + ora (ZPOpDefPtr),y + beq .9 + + lda ZPOpDefPtr + clc + adc #2 + sta ZPPtr2 + lda ZPOpDefPtr+1 + adc #0 + sta ZPPtr2+1 + + lda (ZPPtr2) + tax + + ldy #0 + +.2 lda (ZPLinePtr),y + beq .7 + + cmp #'a' + bcc .3 + cmp #'z'+1 + bcs .3 + + eor #$20 + +.3 iny + cmp (ZPPtr2),y + bne .7 + + dex + bne .2 + + lda (ZPLinePtr),y + beq .8 End of Line, no AM + + cmp #' ' A space after opcode ? + bne .7 + + tya + sec skip OP + ' ' + adc ZPLinePtr + sta ZPLinePtr + bcc .5 + + inc ZPLinePtr+1 + +.5 bra SRC.ParseLine.AM + +.7 lda ZPOpDefPtr + clc + adc (ZPOpDefPtr) + tax + + lda ZPOpDefPtr+1 + ldy #1 + adc (ZPOpDefPtr),y + stx ZPOpDefPtr + sta ZPOpDefPtr+1 + bra .1 + +.8 jmp SRC.ParseLine.OPAMCheckFF + +.9 lda #ERR.INV.OPCODE + sec +.99 rts *--------------------------------------- SRC.ParseLine.AM -.1 jsr SRC.GetChar - bcs SRC.ParseLine.AMCheck - -.10 cmp #' ' another space ? - beq SRC.ParseLine.AMCheck ignore end of line (comment) - - jsr SRC.IsAMReserved - bcs .2 - - inc SRC.AM.StrBuf - ldx SRC.AM.StrBuf - sta SRC.AM.StrBuf,x - bra .7 - -.2 jsr SRC.IsLetter Any register? - bcs .6 no, try something else - - >LDYA ZPRPtr Check in register table - jsr SRC.GetKeyword - bcs .6 - - lda (ZPPtr1) get register len - tax - - ldy SRC.AM.StrBuf - -.4 inc ZPPtr1 - bne .5 - inc ZPPtr1+1 - -.5 lda (ZPPtr1) - iny - sta SRC.AM.StrBuf,y - dex - bne .4 - - sty SRC.AM.StrBuf - - bra .1 - -.6 jsr EXP.Eval - bcs .99 - - >LDA.G EXP.Prefix - beq .74 - inc SRC.AM.StrBuf - ldx SRC.AM.StrBuf - sta SRC.AM.StrBuf,x +.1 jsr SRC.GetChar + bcs SRC.ParseLine.AMCheck + +.10 cmp #' ' another space ? + beq SRC.ParseLine.AMCheck ignore end of line (comment) + + jsr SRC.IsAMReserved + bcs .2 + + jsr SRC.AddToBuf + bra .7 + +.2 jsr SRC.IsLetter Any register? + bcs .6 no, try something else + + >LDYA ZPRPtr Check in register table + jsr SRC.GetKeyword + bcs .6 + + lda (ZPPtr1) get register len + tax + +.4 inc ZPPtr1 + bne .5 + inc ZPPtr1+1 + +.5 lda (ZPPtr1) + jsr SRC.AddToBuf + dex + bne .4 + + bra .1 + +.6 jsr EXP.Eval + bcs .99 + + >LDA.G EXP.Prefix + beq .75 + jsr SRC.AddToBuf -.74 ldx SRC.ACC.SIZE - beq .75 Pending...assume 2 bytes... - -.73 lda SRC.ACC-1,x - bne .72 - dex - bne .73 - - inx - bra .72 - -.75 ldx #2 - -.72 lda #'a' - - ldy SRC.AM.StrBuf - -.71 iny - sta SRC.AM.StrBuf,y - dex - bne .71 +.75 ldx #2 - sty SRC.AM.StrBuf - bra .1 - -.7 jsr SRC.GetNextChar - bcc .10 +.74 lda SRC.ACC.SIZE + beq .72 Pending...assume 2 bytes... + + tax + +.73 lda SRC.ACC-1,x + bne .72 - jmp SRC.ParseLine.AMCheck - -.9 lda #ERR.INV.AM.SYN - sec -.99 rts + dex + bne .73 + + inx + +.72 lda #'a' + +.71 jsr SRC.AddToBuf + dex + bne .71 + + bra .1 + +.7 jsr SRC.GetNextChar + bcc .10 + + jmp SRC.ParseLine.AMCheck + +.9 lda #ERR.INV.AM.SYN + sec +.99 rts *--------------------------------------- SRC.ParseLine.AMCheck -* jsr OUT.PrintLine.1 -* >PUSHW L.SRC.AM.StrBuf -* >LDYA L.MSG.PSTRCRLF -* >SYSCALL PrintF.YA - - lda SRC.AM.StrBuf - beq SRC.ParseLine.OPAMCheckFF - - >LDYA ZPAMPtr - >STYA ZPPtr1 - - ldx #0 - -.1 inx +* jsr OUT.PrintLine.1 +* >PUSHW L.SRC.AM.StrBuf +* >LDYA L.MSG.PSTRCRLF +* >SYSCALL PrintF.YA + + lda SRC.AM.StrBuf + beq SRC.ParseLine.OPAMCheckFF + + >LDYA ZPAMPtr + >STYA ZPPtr1 + + ldx #0 + +.1 inx - lda (ZPPtr1) - beq .9 - - cmp SRC.AM.StrBuf - bne .7 - - tay - -.2 lda (ZPPtr1),y - cmp SRC.AM.StrBuf,y - bne .6 - dey - bne .2 - - txa - >STA.G SRC.AMID - bra SRC.ParseLine.OPAMCheck - -.6 lda (ZPPtr1) -.7 sec - adc ZPPtr1 - sta ZPPtr1 - bcc .1 - inc ZPPtr1+1 - bra .1 - -.9 lda #ERR.INV.AM - sec - rts + lda (ZPPtr1) + beq .9 + + cmp SRC.AM.StrBuf + bne .7 + + tay + +.2 lda (ZPPtr1),y + cmp SRC.AM.StrBuf,y + bne .6 + dey + bne .2 + + txa + >STA.G SRC.AMID + bra SRC.ParseLine.OPAMCheck + +.6 lda (ZPPtr1) +.7 sec + adc ZPPtr1 + sta ZPPtr1 + bcc .1 + inc ZPPtr1+1 + bra .1 + +.9 lda #ERR.INV.AM + sec + rts *--------------------------------------- SRC.ParseLine.OPAMCheckFF - lda #$ff Default to no AM - >STA.G SRC.AMID + lda #$ff Default to no AM + >STA.G SRC.AMID SRC.ParseLine.OPAMCheck - ldy #2 Skip nPtr+Len+OP - lda (ZPOpDefPtr),y LEN - sec LEN Byte - adc #2 nPtr - adc ZPOpDefPtr - sta ZPOpDefPtr - bcc .10 - inc ZPOpDefPtr+1 - -.10 lda (ZPOpDefPtr) + ldy #2 Skip nPtr+Len+OP + lda (ZPOpDefPtr),y LEN + sec LEN Byte + adc #2 nPtr + adc ZPOpDefPtr + sta ZPOpDefPtr + bcc .10 + inc ZPOpDefPtr+1 + +.10 lda (ZPOpDefPtr) -.1 >CMP.G SRC.AMID - beq .3 - - ldy #1 - lda (ZPOpDefPtr),y - inc - sec - adc ZPOpDefPtr - sta ZPOpDefPtr - bcc .2 - inc ZPOpDefPtr+1 -.2 lda (ZPOpDefPtr) - bne .1 - -.99 lda #ERR.INV.AM.4.OC - sec - rts - -.3 stz SRC.ACCTMP index in ACC +.1 >CMP.G SRC.AMID + beq .3 + + ldy #1 + lda (ZPOpDefPtr),y + inc + sec + adc ZPOpDefPtr + sta ZPOpDefPtr + bcc .2 + inc ZPOpDefPtr+1 +.2 lda (ZPOpDefPtr) + bne .1 + +.99 lda #ERR.INV.AM.4.OC + sec + rts + +.3 stz SRC.ACCTMP index in ACC - ldy #1 - lda (ZPOpDefPtr),y - sta SRC.ACCTMP+1 Char Count in AM - iny - -.4 lda (ZPOpDefPtr),y - cmp #'a - bcs .5 - jsr SRC.IsDigit16 - asl - asl - asl - asl - sta SRC.ACCTMP+2 - iny - dec SRC.ACCTMP+1 - lda (ZPOpDefPtr),y - jsr SRC.IsDigit16 - ora SRC.ACCTMP+2 + ldy #1 + lda (ZPOpDefPtr),y + sta SRC.ACCTMP+1 Char Count in AM + iny + +.4 lda (ZPOpDefPtr),y + cmp #'a + bcs .5 + jsr SRC.IsDigit16 + asl + asl + asl + asl + sta SRC.ACCTMP+2 + iny + dec SRC.ACCTMP+1 + lda (ZPOpDefPtr),y + jsr SRC.IsDigit16 + ora SRC.ACCTMP+2 -.50 jsr OUT.EmitByte +.50 jsr OUT.EmitByte - bcs .9 - iny - dec SRC.ACCTMP+1 - bne .4 - clc - rts - -.5 bne .6 - - ldx SRC.ACCTMP - inc SRC.ACCTMP - lda SRC.ACC,x - bra .50 + bcs .9 + iny + dec SRC.ACCTMP+1 + bne .4 + clc + rts + +.5 bne .6 + + ldx SRC.ACCTMP + inc SRC.ACCTMP + lda SRC.ACC,x + bra .50 -.6 cmp #'r - bne .99 +.6 cmp #'r + bne .99 - ldx SRC.ACCTMP - inc SRC.ACCTMP - lda ASM.PC,x - sec - sbc SRC.ACC,x - pha - - - - pla - bra .50 + ldx SRC.ACCTMP + inc SRC.ACCTMP + lda ASM.PC,x + sec + sbc SRC.ACC,x + pha + + + + pla + bra .50 -.8 clc -.9 rts +.8 clc +.9 rts *--------------------------------------- -SRC.GetDecimal jsr SRC.GetChar - beq .99 - - stz SRC.ACC+1 - stz SRC.ACC+2 - stz SRC.ACC+3 - - jsr SRC.IsDigit10 - bcs .99 - - and #$0F - sta SRC.ACC - -.1 jsr SRC.GetNextChar - bcs .8 - - cmp #' ' - beq .8 - - jsr SRC.IsEXPReserved - bcc .8 - - jsr SRC.IsAMReserved - bcc .8 - - jsr SRC.IsDigit10 - bcs .9 - - and #$0F - - pha - jsr SRC.ACC10 - pla - bcs .9 - - adc SRC.ACC - sta SRC.ACC - bcc .1 - - inc SRC.ACC+1 - bne .1 - inc SRC.ACC+2 - bne .1 - inc SRC.ACC+3 - bne .1 - -.9 lda #ERR.VAL.TOO.BIG - sec - rts - -.8 clc - rts - -.99 lda #ERR.SYNTAX.ERROR - sec - rts +SRC.AddToBuf inc SRC.AM.StrBuf + ldy SRC.AM.StrBuf + sta SRC.AM.StrBuf,y + rts *--------------------------------------- -SRC.GetHex jsr SRC.GetNextChar skip '$' - bcs .99 - - stz SRC.ACC+1 - stz SRC.ACC+2 - stz SRC.ACC+3 - - jsr SRC.IsDigit16 - bcs .99 +SRC.GetDecimal jsr SRC.GetChar + beq .99 + + stz SRC.ACC+1 + stz SRC.ACC+2 + stz SRC.ACC+3 + + jsr SRC.IsDigit10 + bcs .99 + + and #$0F + sta SRC.ACC + +.1 jsr SRC.GetNextChar + bcs .8 + + cmp #' ' + beq .8 + + jsr SRC.IsEXPReserved + bcc .8 + + jsr SRC.IsAMReserved + bcc .8 + + jsr SRC.IsDigit10 + bcs .9 + + and #$0F + + pha + jsr SRC.ACC10 + pla + bcs .9 - sta SRC.ACC - -.1 jsr SRC.GetNextChar - bcs .8 - - cmp #' ' - beq .8 - jsr SRC.IsEXPReserved - bcc .8 - jsr SRC.IsAMReserved - bcc .8 - jsr SRC.IsDigit16 - bcs .99 - - ldx #4 -.2 asl SRC.ACC - rol SRC.ACC+1 - rol SRC.ACC+2 - rol SRC.ACC+3 - bcs .9 - dex - bne .2 - ora SRC.ACC - sta SRC.ACC - bra .1 - -.8 clc - rts - -.9 lda #ERR.VAL.TOO.BIG - sec - rts - -.99 lda #ERR.SYNTAX.ERROR - sec - rts -*--------------------------------------- -SRC.GetOctal jsr SRC.GetNextChar skip '&' - bcs .99 - - stz SRC.ACC+1 - stz SRC.ACC+2 - stz SRC.ACC+3 - - jsr SRC.IsDigit8 - bcs .99 - - and #$0F - sta SRC.ACC - -.1 jsr SRC.GetNextChar - bcs .8 - - cmp #' ' - beq .8 - - jsr SRC.IsEXPReserved - bcc .8 - - jsr SRC.IsAMReserved - bcc .8 - - jsr SRC.IsDigit8 - bcs .9 - - asl - asl - asl - asl - asl - - ldx #3 -.2 asl - rol SRC.ACC - rol SRC.ACC+1 - rol SRC.ACC+2 - rol SRC.ACC+3 - bcs .9 - dex - bne .2 - bra .1 - -.8 clc - rts - -.9 lda #ERR.VAL.TOO.BIG - sec - rts - -.99 lda #ERR.SYNTAX.ERROR - sec - rts -*--------------------------------------- -SRC.GetBinary jsr SRC.GetNextChar skip '%' - bcs .99 - - stz SRC.ACC+1 - stz SRC.ACC+2 - stz SRC.ACC+3 - - cmp #'1' - beq .10 - - cmp #'0' - bne .99 - -.10 and #$01 - sta SRC.ACC - -.1 jsr SRC.GetNextChar - bcs .8 - - cmp #' ' - beq .8 - - jsr SRC.IsEXPReserved - bcc .8 - - jsr SRC.IsAMReserved - bcc .8 - - cmp #'1' - beq .11 - - cmp #'0' - bne .8 - -.11 lsr - - rol SRC.ACC - rol SRC.ACC+1 - rol SRC.ACC+2 - rol SRC.ACC+3 - bcs .9 - bra .1 - -.8 clc - rts - -.9 lda #ERR.VAL.TOO.BIG - sec - rts - -.99 lda #ERR.SYNTAX.ERROR - sec - rts -*--------------------------------------- -SRC.GetKeyword >STYA ZPPtr1 KeyWord table + adc SRC.ACC + sta SRC.ACC + bcc .1 + + inc SRC.ACC+1 + bne .1 + inc SRC.ACC+2 + bne .1 + inc SRC.ACC+3 + bne .1 + +.9 lda #ERR.VAL.TOO.BIG + sec + rts - ldx #0 Keyword.ID - -.1 phx - - lda (ZPPtr1) - beq .9 End Of table - - tax KW len - - ldy #0 - -.3 lda (ZPLinePtr),y - beq .6 - - jsr SRC.IsKeywordLetterUC - bcs .6 - - iny - cmp (ZPPtr1),y - bne .6 - - dex - bne .3 - - lda (ZPLinePtr),y All chars match... - beq .4 End of Line ? - - jsr SRC.IsKeywordLetterUC - bcc .6 Additional letters... - -.4 lda ZPLinePtr - clc - adc (ZPPtr1) - sta ZPLinePtr - bcc .5 - inc ZPLinePtr+1 - -.5 plx Keyword.ID - clc - rts - -.6 lda (ZPPtr1) - sec Add keyword Len+1 - adc ZPPtr1 - sta ZPPtr1 - bcc .7 - - inc ZPPtr1+1 - -.7 plx Keyword.ID - inx - inx - bra .1 - -.9 plx - sec - rts +.8 clc + rts + +.99 lda #ERR.SYNTAX.ERROR + sec + rts *--------------------------------------- -SRC.IsAMReserved ldx SRC.AM.RESERVED -.1 cmp SRC.AM.RESERVED,x - beq .8 - dex - bne .1 - sec - rts -.8 clc - rts +SRC.GetHex jsr SRC.GetNextChar skip '$' + bcs .99 + + stz SRC.ACC+1 + stz SRC.ACC+2 + stz SRC.ACC+3 + + jsr SRC.IsDigit16 + bcs .99 + + sta SRC.ACC + +.1 jsr SRC.GetNextChar + bcs .8 + + cmp #' ' + beq .8 + jsr SRC.IsEXPReserved + bcc .8 + jsr SRC.IsAMReserved + bcc .8 + jsr SRC.IsDigit16 + bcs .99 + + ldx #4 + +.2 asl SRC.ACC + rol SRC.ACC+1 + rol SRC.ACC+2 + rol SRC.ACC+3 + bcs .9 + dex + bne .2 + ora SRC.ACC + sta SRC.ACC + bra .1 + +.8 lda #SYMG.F.RESOLVED + sta SRC.ACC.F + lda #2 + sta SRC.ACC.SIZE + + clc + rts + +.9 lda #ERR.VAL.TOO.BIG + sec + rts + +.99 lda #ERR.SYNTAX.ERROR + sec + rts *--------------------------------------- -SRC.IsMODReserved ldx SRC.MOD.RESERVED -.1 cmp SRC.MOD.RESERVED,x - beq .8 - dex - bne .1 - sec - rts - -.8 clc - rts +SRC.GetOctal jsr SRC.GetNextChar skip '&' + bcs .99 + + stz SRC.ACC+1 + stz SRC.ACC+2 + stz SRC.ACC+3 + + jsr SRC.IsDigit8 + bcs .99 + + and #$0F + sta SRC.ACC + +.1 jsr SRC.GetNextChar + bcs .8 + + cmp #' ' + beq .8 + + jsr SRC.IsEXPReserved + bcc .8 + + jsr SRC.IsAMReserved + bcc .8 + + jsr SRC.IsDigit8 + bcs .9 + + asl + asl + asl + asl + asl + + ldx #3 +.2 asl + rol SRC.ACC + rol SRC.ACC+1 + rol SRC.ACC+2 + rol SRC.ACC+3 + bcs .9 + dex + bne .2 + bra .1 + +.8 clc + rts + +.9 lda #ERR.VAL.TOO.BIG + sec + rts + +.99 lda #ERR.SYNTAX.ERROR + sec + rts *--------------------------------------- -SRC.IsEXPReserved ldx SRC.EXP.RESERVED -.1 cmp SRC.EXP.RESERVED,x - beq SRC.IsEXPReserved.8 - dex - bne .1 - sec - rts - -SRC.IsEXPReserved.8 clc - rts +SRC.GetBinary jsr SRC.GetNextChar skip '%' + bcs .99 + + stz SRC.ACC+1 + stz SRC.ACC+2 + stz SRC.ACC+3 + + cmp #'1' + beq .10 + + cmp #'0' + bne .99 + +.10 and #$01 + sta SRC.ACC + +.1 jsr SRC.GetNextChar + bcs .8 + + cmp #' ' + beq .8 + + jsr SRC.IsEXPReserved + bcc .8 + + jsr SRC.IsAMReserved + bcc .8 + + cmp #'1' + beq .11 + + cmp #'0' + bne .8 + +.11 lsr + + rol SRC.ACC + rol SRC.ACC+1 + rol SRC.ACC+2 + rol SRC.ACC+3 + bcs .9 + bra .1 + +.8 clc + rts + +.9 lda #ERR.VAL.TOO.BIG + sec + rts + +.99 lda #ERR.SYNTAX.ERROR + sec + rts +*--------------------------------------- +SRC.GetKeyword >STYA ZPPtr1 KeyWord table + + ldx #0 Keyword.ID + +.1 phx + + lda (ZPPtr1) + beq .9 End Of table + + tax KW len + + ldy #0 + +.3 lda (ZPLinePtr),y + beq .6 + + jsr SRC.IsKeywordLetterUC + bcs .6 + + iny + cmp (ZPPtr1),y + bne .6 + + dex + bne .3 + + lda (ZPLinePtr),y All chars match... + beq .4 End of Line ? + + jsr SRC.IsKeywordLetterUC + bcc .6 Additional letters... + +.4 lda ZPLinePtr + clc + adc (ZPPtr1) + sta ZPLinePtr + bcc .5 + inc ZPLinePtr+1 + +.5 plx Keyword.ID + clc + rts + +.6 lda (ZPPtr1) + sec Add keyword Len+1 + adc ZPPtr1 + sta ZPPtr1 + bcc .7 + + inc ZPPtr1+1 + +.7 plx Keyword.ID + inx + inx + bra .1 + +.9 plx + sec + rts +*--------------------------------------- +SRC.IsAMReserved + ldx SRC.AM.RESERVED +.1 cmp SRC.AM.RESERVED,x + beq .8 + dex + bne .1 + sec + rts +.8 clc + rts +*--------------------------------------- +SRC.IsMODReserved + ldx SRC.MOD.RESERVED +.1 cmp SRC.MOD.RESERVED,x + beq .8 + dex + bne .1 + sec + rts + +.8 clc + rts +*--------------------------------------- +SRC.IsEXPReserved + ldx SRC.EXP.RESERVED +.1 cmp SRC.EXP.RESERVED,x + beq SRC.IsEXPReserved.8 + dex + bne .1 + sec + rts + +SRC.IsEXPReserved.8 + clc + rts *--------------------------------------- SRC.IsKeywordLetterUC - cmp #'.' - beq SRC.IsEXPReserved.8 + cmp #'.' + beq SRC.IsEXPReserved.8 - cmp #'_' - beq SRC.IsEXPReserved.8 + cmp #'_' + beq SRC.IsEXPReserved.8 - cmp #'A' - bcc .9 - cmp #'Z'+1 - bcc .99 + cmp #'A' + bcc .9 + cmp #'Z'+1 + bcc .99 - cmp #'a' - bcc .9 - cmp #'z'+1 - - eor #$20 - - rts CC if lowercase - -.9 sec -.99 rts + cmp #'a' + bcc .9 + cmp #'z'+1 + + eor #$20 + + rts CC if lowercase + +.9 sec +.99 rts *--------------------------------------- -SRC.IsLetterOrDigit jsr SRC.IsDigit10 - bcc SRC.IsLetterRTS -*--------------------------------------- -SRC.IsLetter cmp #'A' - bcc .9 - cmp #'Z'+1 - bcc SRC.IsLetterRTS - cmp #'a' - bcc .9 - cmp #'z'+1 - rts CC if lowercase - -.9 sec -SRC.IsLetterRTS rts *--------------------------------------- -SRC.IsDigit16 jsr SRC.IsDigit10 - bcc .8 - cmp #'A' - bcc .9 - cmp #'F'+1 - bcc .1 - - cmp #'a' - bcc .9 - cmp #'f'+1 - bcs .9 +SRC.IsLetterOrDigit + jsr SRC.IsDigit10 + bcc SRC.IsLetterRTS +*--------------------------------------- +SRC.IsLetter cmp #'A' + bcc .9 + cmp #'Z'+1 + bcc SRC.IsLetterRTS - eor #$20 - + cmp #'a' + bcc .9 + cmp #'z'+1 + rts CC if lowercase + +.9 sec +SRC.IsLetterRTS rts +*--------------------------------------- +SRC.IsDigit16 jsr SRC.IsDigit10 + bcc .8 + cmp #'A' + bcc .9 + cmp #'F'+1 + bcc .1 + + cmp #'a' + bcc .9 + cmp #'f'+1 + bcs .9 + + eor #$20 + .1 -* clc - sbc #'A'-11 cc so A->10 (11-CC) - clc - -.8 and #$0F - rts - -.9 sec - rts +* clc + sbc #'A'-11 cc so A->10 (11-CC) + clc + +.8 and #$0F + rts + +.9 sec + rts *--------------------------------------- -SRC.IsDigit10 cmp #'0' - bcc .9 - cmp #'9'+1 - rts cc if ok, cs if not - -.9 sec - rts +SRC.IsDigit10 cmp #'0' + bcc .9 + cmp #'9'+1 + rts cc if ok, cs if not + +.9 sec + rts *--------------------------------------- -SRC.IsDigit8 cmp #'0' - bcc .9 - cmp #'7'+1 - rts cc if ok, cs if not - -.9 sec - rts +SRC.IsDigit8 cmp #'0' + bcc .9 + cmp #'7'+1 + rts cc if ok, cs if not + +.9 sec + rts *--------------------------------------- -SRC.GetNextCharNB jsr SRC.GetNextChar - bcs .9 - cmp #' ' - beq SRC.GetNextCharNB - - clc - -.9 rts +SRC.GetNextCharNB + jsr SRC.GetNextChar + bcs .9 + cmp #' ' + beq SRC.GetNextCharNB + + clc + +.9 rts *--------------------------------------- -SRC.GetNextCharUC jsr SRC.GetNextChar - bcs .9 - cmp #'a' - bcc .8 - cmp #'z'+1 - bcs .8 - eor #$20 to Uppercase - -.8 clc -.9 rts +SRC.GetNextCharUC + jsr SRC.GetNextChar + bcs .9 + cmp #'a' + bcc .8 + cmp #'z'+1 + bcs .8 + eor #$20 to Uppercase + +.8 clc +.9 rts *--------------------------------------- -SRC.GetNextChar lda (ZPLinePtr) - beq SRC.GetChar.ERR - cmp #$0D - beq SRC.GetChar.ERR - - inc ZPLinePtr - bne SRC.GetChar - - inc ZPLinePtr+1 - -SRC.GetChar lda (ZPLinePtr) - beq SRC.GetChar.ERR - cmp #$0D - beq SRC.GetChar.ERR - - clc - rts - -SRC.GetChar.ERR sec - rts +SRC.GetNextChar lda (ZPLinePtr) + beq SRC.GetChar.ERR + cmp #$0D + beq SRC.GetChar.ERR + + inc ZPLinePtr + bne SRC.GetChar + + inc ZPLinePtr+1 + +SRC.GetChar lda (ZPLinePtr) + beq SRC.GetChar.ERR + cmp #$0D + beq SRC.GetChar.ERR + + clc + rts + +SRC.GetChar.ERR sec + rts *--------------------------------------- -SRC.ACC10 lda SRC.ACC ACC*2-> ACC & ACCTMP - asl - sta SRC.ACC - sta SRC.ACCTMP - lda SRC.ACC+1 - rol - sta SRC.ACC+1 - sta SRC.ACCTMP+1 - lda SRC.ACC+2 - rol - sta SRC.ACC+2 - sta SRC.ACCTMP+2 - lda SRC.ACC+3 - rol - sta SRC.ACC+3 - sta SRC.ACCTMP+3 - bcs .9 - - ldx #2 -.1 asl SRC.ACC ACC=ACC*4 - rol SRC.ACC+1 - rol SRC.ACC+2 - rol SRC.ACC+3 - bcs .9 - dex - bne .1 - - lda SRC.ACC CC from ROL SRC.ACC+3 - adc SRC.ACCTMP - sta SRC.ACC - lda SRC.ACC+1 - adc SRC.ACCTMP+1 - sta SRC.ACC+1 - lda SRC.ACC+2 - adc SRC.ACCTMP+2 - sta SRC.ACC+2 - lda SRC.ACC+3 - adc SRC.ACCTMP+3 - sta SRC.ACC+3 CS if overflow - -.9 rts +SRC.ACC10 lda SRC.ACC ACC*2-> ACC & ACCTMP + asl + sta SRC.ACC + sta SRC.ACCTMP + lda SRC.ACC+1 + rol + sta SRC.ACC+1 + sta SRC.ACCTMP+1 + lda SRC.ACC+2 + rol + sta SRC.ACC+2 + sta SRC.ACCTMP+2 + lda SRC.ACC+3 + rol + sta SRC.ACC+3 + sta SRC.ACCTMP+3 + bcs .9 + + ldx #2 +.1 asl SRC.ACC ACC=ACC*4 + rol SRC.ACC+1 + rol SRC.ACC+2 + rol SRC.ACC+3 + bcs .9 + dex + bne .1 + + lda SRC.ACC CC from ROL SRC.ACC+3 + adc SRC.ACCTMP + sta SRC.ACC + lda SRC.ACC+1 + adc SRC.ACCTMP+1 + sta SRC.ACC+1 + lda SRC.ACC+2 + adc SRC.ACCTMP+2 + sta SRC.ACC+2 + lda SRC.ACC+3 + adc SRC.ACCTMP+3 + sta SRC.ACC+3 CS if overflow + +.9 rts *--------------------------------------- MAN SAVE /A2OSX.BUILD/BIN/DEV/ASM.S.SRC diff --git a/BIN/ASM.S.SYM.txt b/BIN/ASM.S.SYM.txt index 9f9e4c89..620a7604 100644 --- a/BIN/ASM.S.SYM.txt +++ b/BIN/ASM.S.SYM.txt @@ -11,12 +11,387 @@ AUTO 4,1 * 2-5 : 32 bits Value * 6+ : Local Symbols..... *--------------------------------------- +SYM.Init >SYSCALL SListNew + bcs .9 + + >STA.G SYM.hGlobalList + + >LDYAI 256 + >SYSCALL GetMem.YA + bcs .9 + + >STYA ZPNameBuf + txa + >STA.G SYM.hNameBuf + + >LDYAI 256 + >SYSCALL GetMem.YA + bcs .9 + + >STYA ZPGlobalBuf + txa + >STA.G SYM.hGlobalBuf + + >LDYAI 256 + >SYSCALL GetMem.YA + bcs .9 + + >STYA ZPLookupBuf + txa + >STA.G SYM.hLookupBuf + +.9 rts +*--------------------------------------- +SYM.Reset lda #0 + sta (ZPGlobalBuf) + rts +*--------------------------------------- +SYM.Quit >LDA.G SYM.hLookupBuf + beq .1 + + >SYSCALL FreeMem.A + +.1 >LDA.G SYM.hNameBuf + beq .2 + + >SYSCALL FreeMem.A + +.2 >LDA.G SYM.hGlobalBuf + beq .3 + + >SYSCALL FreeMem.A +.3 >LDA.G SYM.hGlobalList + beq .8 + >SYSCALL SListFree.A + +.8 clc + rts +*--------------------------------------- +SYM.Dump stz ZPLinePtr + stz ZPLinePtr+1 + + >LDA.G ASM.LI.ON + bpl .1 + + >LDYA L.MSG.SYMBOLS + >SYSCALL PrintF.YA + +.1 >PUSHB.G SYM.hGlobalList + >PUSHW ZPLinePtr + >PUSHW ZPGlobalBuf + >SYSCALL SListGetByID + bcs .8 + + stx ZPLinePtr Save Next ID + sty ZPLinePtr+1 + + >LDA.G ASM.LI.ON + bpl .1 + + lda (ZPGlobalBuf) + sec + adc ZPGlobalBuf + sta ZPPtr1 + lda ZPGlobalBuf+1 + adc #0 + sta ZPPtr1+1 + + ldy #SYMG.F Get Symbol Size + lda (ZPPtr1),y + and #SYMG.F.SIZE + beq .3 + + pha + tax + + iny SYMG.V + +.2 lda (ZPPtr1),y + >PUSHA + iny + dex + bne .2 + + pla + asl + +.3 tax + ldy L.MSG.EQU0,x + lda L.MSG.EQU0+1,x + >SYSCALL PrintF.YA + + >PUSHW ZPGlobalBuf Label (PString) + + >LDYA L.MSG.PSTRCRLF + >SYSCALL PrintF.YA + bcs .9 + + + + + jmp .1 + rts + +.8 clc +.9 rts +*--------------------------------------- +SYM.NewOrGetGlobal + >LDA.G ASM.PASS + bne SYM.GetGlobal Pass #2: should be already defined... + +SYM.NewGlobal jsr SYM.LookupGlobal Pass #1; try to add global... + bcc .9 Already Defined + + jsr SYM.GetName + bcs .99 + + jsr SYM.PC2Global A=PC Size + + lda #SYMG.SIZE-1 + sta (ZPGlobalBuf) + clc + rts + +.9 lda #ERR.SYMBOL.REDEF + sec +.99 rts +*--------------------------------------- +SYM.GetGlobal >PUSHB.G SYM.hGlobalList + >PUSHW ZPLinePtr + >PUSHW ZPGlobalBuf + >SYSCALL SListLookup + + bcs .9 + + adc ZPLinePtr + sta ZPLinePtr + bcc .1 + + inc ZPLinePtr+1 + clc + +.1 tya + >STA.G SYM.GlobalID+1 + txa + >STA.G SYM.GlobalID + rts + +.9 lda #ERR.UNDEF.SYMBOL + sec + rts +*--------------------------------------- +SYM.LookupGlobal + >PUSHB.G SYM.hGlobalList + >PUSHW ZPLinePtr + >PUSHW ZPLookupBuf + >SYSCALL SListLookup + bcs .9 + + adc ZPLinePtr + sta ZPLinePtr + bcc .8 + + inc ZPLinePtr+1 + clc + +.8 +.9 rts +*--------------------------------------- +SYM.FlushGlobal lda (ZPGlobalBuf) + beq .8 + + >PUSHB.G SYM.hGlobalList + + >LDA.G ASM.PASS + bne .2 + + >PUSHW ZPNameBuf + >PUSHW ZPGlobalBuf + >SYSCALL SListAdd + rts + +.2 >PUSHW.G SYM.GlobalID + >PUSHW ZPGlobalBuf + >SYSCALL SListUpdateByID + rts + +.8 clc + rts +*--------------------------------------- +SYM.GetName jsr SRC.GetChar + bcs .9 + + ldy #0 + +.1 jsr SRC.IsLetterOrDigit + bcc .2 + cmp #'.' + beq .2 + cmp #'_' + bne .8 + +.2 sta (ZPNameBuf),y + iny + jsr SRC.GetNextChar + bcc .1 + +.8 lda #0 + sta (ZPNameBuf),y + clc + rts + +.9 lda #ERR.SYNTAX.ERROR + sec + rts +*--------------------------------------- +SYM.PC2Global ldx #4 + + ldy #ASM.PC + +.1 lda (pData),y + pha + iny + dex + bne .1 + + ldx #4 + + ldy #SYMG.V+3 + +.2 pla + sta (ZPGlobalBuf),y + dey + dex + bne .2 + + ldx #4 + ldy #ASM.PC+3 + +.3 lda (ZPGlobalBuf),y + bne .4 + dex + dey + bne .3 + +.4 txa + + ora #SYMG.F.RESOLVED + ldy #SYMG.F + sta (ZPGlobalBuf),y + + txa A=PC Size + + rts +*--------------------------------------- +SYM.Acc2Global ldx #3 + ldy #SYMG.V+3 + +.1 lda SRC.ACC,x + sta (ZPGlobalBuf),y + dey + dex + bpl .1 + + lda SRC.ACC.SIZE + + ora SRC.ACC.F + + sta (ZPGlobalBuf),y + + clc + rts +*--------------------------------------- +SYM.Lookup2Acc ldy #SYMG.V+3 + ldx #3 + +.1 lda (ZPLookupBuf),y + sta SRC.ACC,x + dey + dex + bpl .1 + + lda (ZPLookupBuf),y + and #SYMG.F.SIZE + sta SRC.ACC.SIZE + + lda (ZPLookupBuf),y + and #SYMG.F.SIZE^$ff + sta SRC.ACC.F + + clc + rts +*--------------------------------------- * Local Symbol Record: (6 bytes) * 0 : Local ID (1->255) * 1 : Flags: * b7=0=pending,1=resolved * 2-5 : 32 bits Value (PC) *--------------------------------------- +SYM.NewOrGetLocalA + tax Save ID + + >LDA.G ASM.PASS + bne SYM.GetLocal Pass #2: should be already defined... + + clc + rts +*--------------------------------------- +SYM.AddLocal lda (ZPGlobalBuf) + tay + clc + adc #SYML.SIZE + bcs .9 + + txa Get Back ID + sta (ZPGlobalBuf),y + + iny + phy + + ldx #4 + + ldy #ASM.PC+3 + +.1 lda (pData),y + pha + dey + dex + bne .1 + + ldx #4 + + ply + +.2 pla + sta (ZPGlobalBuf),y + iny + dex + bne .2 + + lda #0 + sta (ZPGlobalBuf),y + tya + sta (ZPGlobalBuf) + +* clc + rts + +.9 lda #ERR.TOO.MANY.LOCAL +* sec + rts +*--------------------------------------- +SYM.GetLocal + + +*--------------------------------------- +SYM.LookupLocal lda #2 + sta SRC.ACC.SIZE + lda #$FF + sta SRC.ACC + sta SRC.ACC+1 + clc + rts +*--------------------------------------- * Private Symbol Record: (9 bytes) * 0 : Len (8) * 1 : Flags: @@ -25,322 +400,21 @@ AUTO 4,1 * 6,7 : MCID (Macro Context ID) * 8 : Private ID (0->255) *--------------------------------------- -SYM.Init >SYSCALL SListNew - bcs .9 - - >STA.G SYM.hGlobals - - >LDYAI 256 - >SYSCALL GetMem.YA - bcs .9 - - >STYA ZPGlobalBuf - txa - >STA.G SYM.hGlobalBuf - - >LDYAI 256 - >SYSCALL GetMem.YA - bcs .9 - - >STYA ZPLookupBuf - txa - >STA.G SYM.hLookupBuf - -.9 rts -*--------------------------------------- -SYM.Reset lda #0 - sta (ZPGlobalBuf) - rts -*--------------------------------------- -SYM.Quit >LDA.G SYM.hLookpBuf - beq .1 - - >SYSCALL FreeMem.A - -.1 >LDA.G SYM.hGlobalBuf - beq .2 - - >SYSCALL FreeMem.A - -.2 >LDA.G SYM.hGlobals - beq .8 - >SYSCALL SListFree.A - -.8 clc - rts -*--------------------------------------- -SYM.Dump stz ZPLinePtr - stz ZPLinePtr+1 - - >LDA.G ASM.LI.ON - bpl .1 - - >LDYA L.MSG.SYMBOLS - >SYSCALL PrintF.YA - -.1 >PUSHB.G SYM.hGlobals - >PUSHW ZPLinePtr - >PUSHW ZPTmpBuf - >SYSCALL SListGetByID - bcs .8 - stx ZPLinePtr Save Next ID - sty ZPLinePtr+1 - - >LDA.G ASM.LI.ON - bpl .1 - - lda (ZPTmpBuf) - sec - adc ZPTmpBuf - sta ZPPtr1 - lda ZPTmpBuf+1 - adc #0 - sta ZPPtr1+1 - - ldy #SYMG.F Get Symbol Size - lda (ZPPtr1),y - and #SYMG.F.SIZE - beq .3 - - pha - tax - - iny SYMG.V - -.2 lda (ZPPtr1),y - >PUSHA - iny - dex - bne .2 - - pla - asl - -.3 tax - ldy L.MSG.EQU0,x - lda L.MSG.EQU0+1,x - >SYSCALL PrintF.YA - - >PUSHW ZPTmpBuf Label (PString) - - >LDYA L.MSG.PSTRCRLF - >SYSCALL PrintF.YA - bcc .1 - rts - -.8 clc - rts -*--------------------------------------- -SYM.NewGlobal >LDYA ZPLinePtr - >STYA SYM.GlobalPtr - - jsr SYM.PC2Global A=PC Size - ora #SYMG.F.RESOLVED PC is always known - ldy #SYMG.F - sta (ZPGlobalBuf),y - - lda #SYMG.SIZE-1 -* ldy #SYMG.LEN - sta (ZPGlobalBuf) - clc - rts -*--------------------------------------- -SYM.GetGlobal >PUSHB.G SYM.hGlobals - >PUSHW ZPLinePtr - >PUSHW ZPGlobalBuf - >SYSCALL SListLookup - bcs .9 - - adc ZPLinePtr - sta ZPLinePtr - bcc .1 - - inc ZPLinePtr+1 - clc - -.1 tya - >STA.G SYM.GlobalID+1 - txa - >STA.G SYM.GlobalID - -.9 rts -*--------------------------------------- -SYM.AddGlobal >PUSHB.G SYM.hGlobals - >PUSHW ZPLinePtr - - >PUSHW ZPGlobalBuf - - >SYSCALL SListAdd - bcs .9 - - adc ZPLinePtr - sta ZPLinePtr - bcc .1 - - inc ZPLinePtr+1 - -.1 clc - .HS B0 BCS -.9 sec - tya - >STA.G SYM.GlobalID+1 - dey - txa - sta (pData),y - rts -*--------------------------------------- -SYM.LookupGlobal >PUSHB.G SYM.hGlobals - >PUSHW ZPLinePtr - >PUSHW ZPLookupBuf - >SYSCALL SListLookup - bcs .9 - - adc ZPLinePtr - sta ZPLinePtr - bcc .8 - - inc ZPLinePtr+1 - clc - -.8 -.9 rts -*--------------------------------------- -SYM.UpdateGlobalAcc ldx #3 - - ldy #SYM.Global+SYMG.V+3 - -.1 lda SRC.ACC,x - sta (pData),y - dey - dex - bpl .1 - - lda SRC.ACC.SIZE -*--------------------------------------- -SYM.UpdateGlobal ora #SYMG.F.RESOLVED - >STA.G SYM.Global+SYMG.F - - lda #SYMG.SIZE-1 F+V+LSID - >STA.G SYM.Global+SYMG.LEN - - >PUSHB.G SYM.hGlobals - >PUSHW.G SYM.GlobalID - >PUSHEA.G SYM.Global - - >SYSCALL SListUpdateByID - rts -*--------------------------------------- -SYMG.FlushGlobal clc - rts -*--------------------------------------- -SYM.PC2Global ldx #4 - - ldy #ASM.PC - -.1 lda (pData),y - pha - iny - dex - bne .1 - - ldx #4 - - ldy #SYMG.V+3 - -.2 pla - sta (ZPGlobalBuf),y - dey - dex - bne .2 - - ldx #4 - ldy #ASM.PC+3 - -.3 lda (ZPGlobalBuf),y - bne .4 - dex - dey - bne .3 - -.4 txa - - ora #SYMG.F.RESOLVED - ldy #SYMG.F - sta (ZPGlobalBuf),y - - txa A=PC Size - - rts -*--------------------------------------- -SYM.AddLocal tax Save ID - - lda (ZPGlobalBuf) - tay - clc - adc #SYML.SIZE - bcs .9 - - txa Get Back ID - sta (ZPGlobalBuf),y - - iny - phy - - ldx #4 - - ldy #ASM.PC+3 - -.1 lda (pData),y - pha - dey - dex - bne .1 - - ldx #4 - - ply - -.2 pla - sta (ZPGlobalBuf),y - iny - dex - bne .2 - - lda #0 - sta (ZPGlobalBuf),y - tya - sta (ZPGlobalBuf) - -* clc - rts - -.9 lda #ERR.TOO.MANY.LOCAL -* sec - rts -*--------------------------------------- -SYM.LookupLocal lda #2 - sta SRC.ACC.SIZE - lda #$FF - sta SRC.ACC - sta SRC.ACC+1 - clc - rts -*--------------------------------------- SYM.AddPrivate - clc - rts + clc + rts *--------------------------------------- SYM.LookupPrivate - clc - rts + clc + rts *--------------------------------------- SYM.AddMacro - clc - rts + clc + rts *--------------------------------------- SYM.LookupMacro - clc - rts + clc + rts *--------------------------------------- MAN SAVE /A2OSX.BUILD/BIN/DEV/ASM.S.SYM diff --git a/BIN/ASM.S.txt b/BIN/ASM.S.txt index 6566dfc3..75866b2e 100644 --- a/BIN/ASM.S.txt +++ b/BIN/ASM.S.txt @@ -1,49 +1,51 @@ NEW PREFIX /A2OSX.BUILD AUTO 4,1 - .LIST OFF - .OP 65C02 - .OR $2000 - .TF /A2OSX.BUILD/BIN/DEV/ASM + .LIST OFF + .OP 65C02 + .OR $2000 + .TF /A2OSX.BUILD/BIN/DEV/ASM *--------------------------------------- - .INB /A2OSX.BUILD/INC/MACROS.I - .INB /A2OSX.BUILD/INC/A2OSX.I + .INB /A2OSX.BUILD/INC/MACROS.I + .INB /A2OSX.BUILD/INC/A2OSX.I *--------------------------------------- -ZPPtr1 .EQ ZPBIN -ZPPtr2 .EQ ZPBIN+2 -ZPPtr3 .EQ ZPBIN+4 -ZPLineBuf .EQ ZPBIN+6 -ZPLinePtr .EQ ZPBIN+8 -ZPGlobalBuf .EQ ZPBIN+10 -ZPLookupBuf .EQ ZPBIN+12 -ZPMacroBuf .EQ ZPBIN+14 -ZPTmpBuf .EQ ZPBIN+16 -ZPAMPtr .EQ ZPBIN+18 -ZPRPtr .EQ ZPBIN+20 -ZPOpsPtr .EQ ZPBIN+22 -ZPOpDefPtr .EQ ZPBIN+24 +ZPPtr1 .EQ ZPBIN +ZPPtr2 .EQ ZPBIN+2 + +ZPLineBuf .EQ ZPBIN+4 +ZPLinePtr .EQ ZPBIN+6 +ZPNameBuf .EQ ZPBIN+8 +ZPGlobalBuf .EQ ZPBIN+10 +ZPLookupBuf .EQ ZPBIN+12 +ZPMacroBuf .EQ ZPBIN+14 + +ZPTmpBuf .EQ ZPBIN+16 + +ZPAMPtr .EQ ZPBIN+18 +ZPRPtr .EQ ZPBIN+20 +ZPOpsPtr .EQ ZPBIN+22 +ZPOpDefPtr .EQ ZPBIN+24 *--------------------------------------- -SYMG.LEN .EQ 0 -SYMG.F .EQ 1 -SYMG.F.RESOLVED .EQ %10000000 -SYMG.F.RW .EQ %01000000 -SYMG.F.EQU .EQ %00100000 -SYMG.F.SIZE .EQ %00000111 -SYMG.V .EQ 2 +SYMG.LEN .EQ 0 +SYMG.F .EQ 1 +SYMG.F.RESOLVED .EQ %10000000 +SYMG.F.RW .EQ %01000000 +SYMG.F.SIZE .EQ %00000111 +SYMG.V .EQ 2 * -SYMG.SIZE .EQ 6 +SYMG.SIZE .EQ 6 *--------------------------------------- -SYML.ID .EQ 0 -SYML.V .EQ 1 +SYML.ID .EQ 0 +SYML.V .EQ 1 * -SYML.SIZE .EQ 5 +SYML.SIZE .EQ 5 *--------------------------------------- -ASM.T.AM .EQ 0 -ASM.T.R .EQ 2 -ASM.T.O .EQ 4 +ASM.T.AM .EQ 0 +ASM.T.R .EQ 2 +ASM.T.O .EQ 4 *--------------------------------------- -SRC.DO.MAXDEPTH .EQ 8 -SRC.IN.MAXDEPTH .EQ 7 +SRC.DO.MAXDEPTH .EQ 8 +SRC.IN.MAXDEPTH .EQ 7 *--------------------------------------- ERR.INV.ARGS .EQ $80 ERR.SRC.INV.TYPE .EQ $90 @@ -72,438 +74,446 @@ ERR.MACRO.TOO.BIG .EQ $E1 *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- -CS.START cld - jmp (.1,x) - .DA #$61 6502,Level 1 (65c02) - .DA #1 BIN Layout Version 1 - .DA 0 - .DA CS.END-CS.START CS - .DA DS.END-DS.START DS - .DA #0 SS - .DA #32 ZP - .DA 0 +CS.START cld + jmp (.1,x) + .DA #$61 6502,Level 1 (65c02) + .DA #1 BIN Layout Version 1 + .DA 0 + .DA CS.END-CS.START CS + .DA DS.END-DS.START DS + .DA #0 SS + .DA #32 ZP + .DA 0 *-------------------------------------- * Relocation Table *-------------------------------------- -.1 .DA CS.INIT - .DA CS.RUN - .DA CS.DOEVENT - .DA CS.QUIT -L.MSG.HELP .DA MSG.HELP -L.MSG.OUT0 .DA MSG.OUT0 - .DA MSG.OUT1 - .DA MSG.OUT2 - .DA MSG.OUT3 -L.MSG.EQU0 .DA MSG.EQU0 - .DA MSG.EQU1 - .DA MSG.EQU2 - .DA MSG.EQU3 - .DA MSG.EQU4 -L.MSG.SRCLINE .DA MSG.SRCLINE -L.MSG.ERROR .DA MSG.ERROR -L.MSG.SYMBOLS .DA MSG.SYMBOLS -L.MSG.PSTRCRLF .DA MSG.PSTRCRLF -L.MSG.SUMMARY .DA MSG.SUMMARY -L.MSG.PASS .DA MSG.PASS -L.MSG.SRC.FILE .DA MSG.SRC.FILE -L.MSG.OBJ.FILE .DA MSG.OBJ.FILE -L.MSG.T.FILE .DA MSG.T.FILE -L.SRC.AM.StrBuf .DA SRC.AM.StrBuf -L.ASM.6502 .DA ASM.6502 +.1 .DA CS.INIT + .DA CS.RUN + .DA CS.DOEVENT + .DA CS.QUIT +L.MSG.HELP .DA MSG.HELP +L.MSG.OUT0 .DA MSG.OUT0 + .DA MSG.OUT1 + .DA MSG.OUT2 + .DA MSG.OUT3 +L.MSG.EQU0 .DA MSG.EQU0 + .DA MSG.EQU1 + .DA MSG.EQU2 + .DA MSG.EQU3 + .DA MSG.EQU4 +L.MSG.SRCLINE .DA MSG.SRCLINE +L.MSG.ERROR .DA MSG.ERROR +L.MSG.SYMBOLS .DA MSG.SYMBOLS +L.MSG.PSTRCRLF .DA MSG.PSTRCRLF +L.MSG.SUMMARY .DA MSG.SUMMARY +L.MSG.PASS .DA MSG.PASS +L.MSG.SRC.FILE .DA MSG.SRC.FILE +L.MSG.OBJ.FILE .DA MSG.OBJ.FILE +L.MSG.T.FILE .DA MSG.T.FILE +L.SRC.AM.StrBuf .DA SRC.AM.StrBuf +L.ASM.6502 .DA ASM.6502 L.ASM.T.FILENAME .DA ASM.T.FILENAME -L.FIO.Stat .DA FIO.Stat -L.T.DIRECTIVES .DA T.DIRECTIVES -J.DIRECTIVES .DA DIR.AC - .DA DIR.AS - .DA DIR.AT - .DA DIR.AZ - .DA DIR.BS - .DA DIR.DA - .DA DIR.DO - .DA DIR.DU - .DA DIR.DU - .DA DIR.ED - .DA DIR.EL - .DA DIR.EM - .DA DIR.EN - .DA DIR.EP - .DA DIR.EQ - .DA DIR.FI - .DA DIR.HS - .DA DIR.IN - .DA DIR.IN - .DA DIR.IN - .DA DIR.IN - .DA DIR.IN - .DA DIR.IN - .DA DIR.IN - .DA DIR.IN - .DA DIR.IN - .DA DIR.IN - .DA DIR.IN - .DA DIR.LI - .DA DIR.LI - .DA DIR.MA - .DA DIR.OP - .DA DIR.OR - .DA DIR.PG - .DA DIR.PH - .DA DIR.SE - .DA DIR.TA - .DA DIR.TF - .DA DIR.TI - .DA DIR.US -L.T.LI .DA T.LI -J.LI .DA DIR.LI.ON - .DA DIR.LI.OFF - .DA DIR.LI.CON - .DA DIR.LI.COFF - .DA DIR.LI.MON - .DA DIR.LI.MOFF - .DA DIR.LI.XON - .DA DIR.LI.XOFF -J.EXP.MOD .DA EXP.MOD.8.1 #/^<> - .DA EXP.MOD.8.2 - .DA EXP.MOD.8.3 - .DA EXP.MOD.24 - .DA EXP.MOD.32 -J.EXP.OP .DA EXP.OP.EOR ^!|&<=>+-*/ - .DA EXP.OP.ORA - .DA EXP.OP.ORA - .DA EXP.OP.AND - .DA EXP.OP.LOW - .DA EXP.OP.EQU - .DA EXP.OP.GRT - .DA EXP.OP.ADD - .DA EXP.OP.SUB - .DA EXP.OP.MUL - .DA EXP.OP.DIV - .DA 0 +L.FIO.Stat .DA FIO.Stat +L.T.DIRECTIVES .DA T.DIRECTIVES +J.DIRECTIVES .DA DIR.AC + .DA DIR.AS + .DA DIR.AT + .DA DIR.AZ + .DA DIR.BS + .DA DIR.DA + .DA DIR.DO + .DA DIR.DU + .DA DIR.DU + .DA DIR.ED + .DA DIR.EL + .DA DIR.EM + .DA DIR.EN + .DA DIR.EP + .DA DIR.EQ + .DA DIR.FI + .DA DIR.HS + .DA DIR.IN + .DA DIR.IN + .DA DIR.IN + .DA DIR.IN + .DA DIR.IN + .DA DIR.IN + .DA DIR.IN + .DA DIR.IN + .DA DIR.IN + .DA DIR.IN + .DA DIR.IN + .DA DIR.LI + .DA DIR.LI + .DA DIR.MA + .DA DIR.OP + .DA DIR.OR + .DA DIR.PG + .DA DIR.PH + .DA DIR.SE + .DA DIR.TA + .DA DIR.TF + .DA DIR.TI + .DA DIR.US +L.T.LI .DA T.LI +J.LI .DA DIR.LI.ON + .DA DIR.LI.OFF + .DA DIR.LI.CON + .DA DIR.LI.COFF + .DA DIR.LI.MON + .DA DIR.LI.MOFF + .DA DIR.LI.XON + .DA DIR.LI.XOFF +J.EXP.MOD .DA EXP.MOD.8.1 #/^<> + .DA EXP.MOD.8.2 + .DA EXP.MOD.8.3 + .DA EXP.MOD.24 + .DA EXP.MOD.32 +J.EXP.OP .DA EXP.OP.EOR ^!|&<=>+-*/ + .DA EXP.OP.ORA + .DA EXP.OP.ORA + .DA EXP.OP.AND + .DA EXP.OP.LOW + .DA EXP.OP.EQU + .DA EXP.OP.GRT + .DA EXP.OP.ADD + .DA EXP.OP.SUB + .DA EXP.OP.MUL + .DA EXP.OP.DIV + .DA 0 *--------------------------------------- -CS.INIT ldy #S.PS.ARGC - lda (pPs),y - beq .99 - - lda #1 - >SYSCALL GetArg.A - >SYSCALL RealPath.YA - - txa - ldy #SRC.hFILENAME - sta (pData),y - - jsr FIO.Init - bcs .9 +CS.INIT ldy #S.PS.ARGC + lda (pPs),y + beq .99 + + lda #1 + >SYSCALL GetArg.A + >SYSCALL RealPath.YA + + txa + ldy #SRC.hFILENAME + sta (pData),y + + jsr FIO.Init + bcs .9 - jsr SYM.Init - bcs .9 + jsr SYM.Init + bcs .9 - jsr MAC.Init - bcs .9 - - jsr OUT.Init + jsr MAC.Init + bcs .9 + + jsr OUT.Init - >LDYAI 256 - >SYSCALL GetMem.YA - bcs .9 - >STYA ZPLineBuf - txa - >STA.G SRC.hLineBuf + >LDYAI 256 + >SYSCALL GetMem.YA + bcs .9 + >STYA ZPLineBuf + txa + >STA.G SRC.hLineBuf - >LDYAI 256 - >SYSCALL GetMem.YA - bcs .9 - >STYA ZPTmpBuf - txa - >STA.G SRC.hTmpBuf - -* lda (pPs) -* ora #S.PS.F.EVENT -* sta (pPs) - clc - rts - -.99 >LDYA L.MSG.HELP - >SYSCALL PrintF.YA - lda #ERR.INV.ARGS - sec + >LDYAI 256 + >SYSCALL GetMem.YA + bcs .9 + >STYA ZPTmpBuf + txa + >STA.G SRC.hTmpBuf + +* lda (pPs) +* ora #S.PS.F.EVENT +* sta (pPs) + clc + rts + +.99 >LDYA L.MSG.HELP + >SYSCALL PrintF.YA + lda #ERR.INV.ARGS + sec .9 rts *-------------------------------------- -CS.RUN >SYSCALL GetChar - bcs .11 no char - - cmp #$03 Ctrl-C - beq .99 Abort....beq=CS - - cmp #$13 Ctrl-S - bne .11 +CS.RUN >SYSCALL GetChar + bcs .11 no char + + cmp #$03 Ctrl-C + beq .99 Abort....beq=CS + + cmp #$13 Ctrl-S + bne .11 - ldy #bPause - lda (pData),y - eor #$ff - sta (pData),y + ldy #bPause + lda (pData),y + eor #$ff + sta (pData),y + +.11 ldy #bPause + lda (pData),y + bne .8 -.11 ldy #bPause - lda (pData),y - bne .8 - - ldy #SRC.COUNT root file is already opened? - lda (pData),y - bne .10 - - >LDA.G ASM.PASS - inc - >PUSHA - >LDYA L.MSG.PASS - jsr OUT.Print + ldy #SRC.COUNT root file is already opened? + lda (pData),y + bne .10 + + >LDA.G ASM.PASS + inc + >PUSHA + >LDYA L.MSG.PASS + jsr OUT.Print - ldy #SRC.hFILENAME - lda (pData),y - - >SYSCALL GetMemPtr.A - - jsr FIO.OpenFile - bcs .99 - - jsr DIR.Reset - jsr SYM.Reset - -.10 jsr FIO.ReadLine - bcc .2 - cmp #$4C End Of File? - bne .9 - - jsr FIO.FileClose - - ldy #SRC.COUNT end of root file ? - lda (pData),y - bne .8 no continue back to previous file - - >LDA.G ASM.PASS End of pass #2 ?? - bne .1 - inc - sta (pData),y - clc -.99 rts - -.1 jsr SYM.Dump - >PUSHW ZPLinePtr - >LDYA L.MSG.SUMMARY - jsr OUT.Print - - lda #0 End of assembly, exit with no error - sec - rts - -.2 jsr SRC.ParseLine - bcs .9 - - jsr OUT.PrintLine - -.8 clc - rts + ldy #SRC.hFILENAME + lda (pData),y + + >SYSCALL GetMemPtr.A + + jsr FIO.OpenFile + bcs .99 + + jsr DIR.Reset + jsr SYM.Reset + +.10 jsr FIO.ReadLine + bcc .2 + cmp #$4C End Of File? + bne .9 + + jsr FIO.FileClose + + ldy #SRC.COUNT end of root file ? + lda (pData),y + bne .8 no continue back to previous file + + jsr SYM.FlushGlobal Store last Symbol, if any.... + bcs .9 + + >LDA.G ASM.PASS End of pass #2 ?? + bne .1 + inc + sta (pData),y + clc +.99 rts + +.1 jsr SYM.Dump + >PUSHW ZPLinePtr + >LDYA L.MSG.SUMMARY + jsr OUT.Print + + lda #0 End of assembly, exit with no error + sec + rts + +.2 jsr SRC.ParseLine + bcs .9 + + jsr OUT.PrintLine + +.8 clc + rts -.9 pha - jsr OUT.PrintLineErr - pla - sec - rts +.9 pha + jsr OUT.PrintLineErr + jsr SYM.Dump + pla + sec + rts *-------------------------------------- -CS.DOEVENT sec - rts +CS.DOEVENT sec + rts *-------------------------------------- -CS.QUIT jsr FIO.FileClose - bne CS.QUIT +CS.QUIT jsr FIO.FileClose + bne CS.QUIT - jsr MAC.Quit - jsr SYM.Quit - - >LDA.G ASM.T.hMem - beq .1 - - >SYSCALL FreeMem.A - -.1 >LDA.G SRC.hFILENAME - beq .2 - - >SYSCALL FreeMem.A - -.2 >LDA.G SRC.hLineBuf - beq .3 - - >SYSCALL FreeMem.A - -.3 >LDA.G SRC.hTmpBuf - beq .8 - - >SYSCALL FreeMem.A - -.8 clc - rts + jsr MAC.Quit + jsr SYM.Quit + + >LDA.G ASM.T.hMem + beq .1 + + >SYSCALL FreeMem.A + +.1 >LDA.G SRC.hFILENAME + beq .2 + + >SYSCALL FreeMem.A + +.2 >LDA.G SRC.hLineBuf + beq .3 + + >SYSCALL FreeMem.A + +.3 >LDA.G SRC.hTmpBuf + beq .8 + + >SYSCALL FreeMem.A + +.8 clc + rts *--------------------------------------- - .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.OUT - .INB /A2OSX.BUILD/BIN/DEV/ASM.S.SRC - .INB /A2OSX.BUILD/BIN/DEV/ASM.S.SYM + .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.OUT + .INB /A2OSX.BUILD/BIN/DEV/ASM.S.SRC + .INB /A2OSX.BUILD/BIN/DEV/ASM.S.SYM *--------------------------------------- CS.END -T.DIRECTIVES >PSTR "AC" - >PSTR "AS" - >PSTR "AT" - >PSTR "AZ" - >PSTR "BS" - >PSTR "DA" - >PSTR "DO" - >PSTR "DU" - >PSTR "DUMMY" - >PSTR "ED" - >PSTR "ELSE" - >PSTR "EM" - >PSTR "EN" - >PSTR "EP" - >PSTR "EQ" - >PSTR "FIN" - >PSTR "HS" - >PSTR "IN" - >PSTR "INB" - >PSTR "INB1" - >PSTR "INB2" - >PSTR "INB3" - >PSTR "INB4" - >PSTR "INB5" - >PSTR "INB6" - >PSTR "INB7" - >PSTR "INB8" - >PSTR "INB9" - >PSTR "LI" - >PSTR "LIST" - >PSTR "MA" - >PSTR "OP" - >PSTR "OR" - >PSTR "PG" - >PSTR "PH" - >PSTR "SE" - >PSTR "TA" - >PSTR "TF" - >PSTR "TI" - >PSTR "US" - .HS 00 +T.DIRECTIVES >PSTR "AC" + >PSTR "AS" + >PSTR "AT" + >PSTR "AZ" + >PSTR "BS" + >PSTR "DA" + >PSTR "DO" + >PSTR "DU" + >PSTR "DUMMY" + >PSTR "ED" + >PSTR "ELSE" + >PSTR "EM" + >PSTR "EN" + >PSTR "EP" + >PSTR "EQ" + >PSTR "FIN" + >PSTR "HS" + >PSTR "IN" + >PSTR "INB" + >PSTR "INB1" + >PSTR "INB2" + >PSTR "INB3" + >PSTR "INB4" + >PSTR "INB5" + >PSTR "INB6" + >PSTR "INB7" + >PSTR "INB8" + >PSTR "INB9" + >PSTR "LI" + >PSTR "LIST" + >PSTR "MA" + >PSTR "OP" + >PSTR "OR" + >PSTR "PG" + >PSTR "PH" + >PSTR "SE" + >PSTR "TA" + >PSTR "TF" + >PSTR "TI" + >PSTR "US" + .HS 00 *--------------------------------------- -T.LI >PSTR "ON" - >PSTR "OFF" - >PSTR "CON" - >PSTR "COFF" - >PSTR "MON" - >PSTR "MOFF" - >PSTR "XON" - >PSTR "XOFF" - .HS 00 +T.LI >PSTR "ON" + >PSTR "OFF" + >PSTR "CON" + >PSTR "COFF" + >PSTR "MON" + >PSTR "MOFF" + >PSTR "XON" + >PSTR "XOFF" + .HS 00 *--------------------------------------- -ASM.6502 .AZ "6502" -MSG.HELP .AZ "A2osX-Macro Assembler (S-C MASM 3.0 Based)\r\nUsage : ASM [type TXT ($04) or S-C/BAS ($FA)]\r\n" -MSG.PASS .AZ "Pass:#%d\r\n" -MSG.SRC.FILE .AZ "Reading SRC File:%s\r\n" -MSG.OBJ.FILE .AZ "Writing OBJ File:%s, Type=%02x\r\n" -MSG.T.FILE .AZ "Loading CPU File:%s\r\n" -MSG.OUT0 .AZ "%H- " -MSG.OUT1 .AZ "%H-%h " -MSG.OUT2 .AZ "%H-%h %h " -MSG.OUT3 .AZ "%H-%h %h %h" -MSG.EQU0 .AZ " [ ?]" -MSG.EQU1 .AZ " [ %h]" -MSG.EQU2 .AZ " [ %h%h]" -MSG.EQU3 .AZ " [ %h%h%h]" -MSG.EQU4 .AZ " [%h%h%h%h]" -MSG.SRCLINE .AZ " %05D %s\r\n" -MSG.ERROR .AZ "*** Fatal Error $%h " -MSG.SYMBOLS .AZ "Symbol Table:\r\n" -MSG.PSTRCRLF .AZ " %S\r\n" -MSG.SUMMARY .AZ "\r\nSymbol Table Size : %5D Bytes.\r\nEnd Of Assembly.\r\n" +ASM..T. .AZ ".T." +ASM.6502 .AZ "6502" +MSG.HELP .AZ "A2osX-Macro Assembler (S-C MASM 3.0 Based)\r\nUsage : ASM [type TXT ($04) or S-C/BAS ($FA)]\r\n" +MSG.PASS .AZ "Pass:#%d\r\n" +MSG.SRC.FILE .AZ "*** Reading SRC File:%s\r\n" +MSG.OBJ.FILE .AZ "*** Writing OBJ File:%s, Type=%02x\r\n" +MSG.T.FILE .AZ "*** Loading CPU File:%s\r\n" +MSG.OUT0 .AZ "%H- " +MSG.OUT1 .AZ "%H-%h " +MSG.OUT2 .AZ "%H-%h %h " +MSG.OUT3 .AZ "%H-%h %h %h" +MSG.EQU0 .AZ " [ ?]" +MSG.EQU1 .AZ " [ %h]" +MSG.EQU2 .AZ " [ %h%h]" +MSG.EQU3 .AZ " [ %h%h%h]" +MSG.EQU4 .AZ " [%h%h%h%h]" +MSG.SRCLINE .AZ " %05D %s\r\n" +MSG.ERROR .AZ "*** Fatal Error $%h " +MSG.SYMBOLS .AZ "Symbol Table:\r\n" +MSG.PSTRCRLF .AZ " %S\r\n" +MSG.SUMMARY .AZ "\r\nSymbol Table Size : %5D Bytes.\r\nEnd Of Assembly.\r\n" SRC.MOD.RESERVED >PSTR "#/^<>" SRC.EXP.RESERVED >PSTR "^!|&<=>+-*/" SRC.AM.RESERVED >PSTR "[]()," *--------------------------------------- -ASM.T.FILENAME .BS 65 +ASM.T.FILENAME .BS 65 -FIO.Stat .BS S.STAT +FIO.Stat .BS S.STAT -SRC.ACC.SIZE .BS 1 -SRC.ACC .BS 4 -SRC.ARG.SIZE .BS 1 -SRC.ARG .BS 4 -SRC.ACCTMP .BS 4 -SRC.AM.StrBuf .BS 32 +SRC.ACC.F .BS 1 +SRC.ACC.SIZE .BS 1 +SRC.ACC .BS 4 + +SRC.ARG.F .BS 1 +SRC.ARG.SIZE .BS 1 +SRC.ARG .BS 4 + +SRC.ACCTMP .BS 4 +SRC.AM.StrBuf .BS 32 *-------------------------------------- - .DUMMY - .OR 0 -DS.START -bPause .BS 1 + .DUMMY + .OR 0 +DS.START +bPause .BS 1 -SRC.hFILENAME .BS 1 -SRC.hLineBuf .BS 1 -SRC.hTmpBuf .BS 1 +SRC.hFILENAME .BS 1 +SRC.hLineBuf .BS 1 +SRC.hTmpBuf .BS 1 -SRC.COUNT .BS 1 -SRC.hFILES .BS SRC.IN.MAXDEPTH -SRC.hFILETYPES .BS SRC.IN.MAXDEPTH +SRC.COUNT .BS 1 +SRC.hFILES .BS SRC.IN.MAXDEPTH +SRC.hFILETYPES .BS SRC.IN.MAXDEPTH -SRC.LINENUM .BS 2 -SRC.AMID .BS 1 +SRC.LINENUM .BS 2 +SRC.AMID .BS 1 -DST.hFILENAME .BS 1 -DST.hREFNUM .BS 1 -DST.hBUFFER .BS 1 -DST.hFILETYPE .BS 1 +DST.hFILENAME .BS 1 +DST.hREFNUM .BS 1 +DST.hBUFFER .BS 1 +DST.hFILETYPE .BS 1 -DIR.Word .BS 2 -DIR.Byte .BS 1 +DIR.Word .BS 2 +DIR.Byte .BS 1 -EXP.Modifier .BS 1 -EXP.Prefix .BS 1 -EXP.Operator .BS 1 +EXP.Modifier .BS 1 +EXP.Prefix .BS 1 +EXP.Operator .BS 1 -ASM.T.hMem .BS 1 +ASM.T.hMem .BS 1 -ASM.PASS .BS 1 -ASM.DO.StackPtr .BS 1 -ASM.DO.Stack .BS SRC.DO.MAXDEPTH -ASM.DO.ON .BS 1 -ASM.PH.ON .BS 1 -ASM.LI.ON .BS 1 -ASM.LI.CON .BS 1 -ASM.LI.MON .BS 1 -ASM.LI.XON .BS 1 -ASM.PC .BS 4 -ASM.PC.PH .BS 4 +ASM.PASS .BS 1 +ASM.DO.StackPtr .BS 1 +ASM.DO.Stack .BS SRC.DO.MAXDEPTH +ASM.DO.ON .BS 1 +ASM.PH.ON .BS 1 +ASM.LI.ON .BS 1 +ASM.LI.CON .BS 1 +ASM.LI.MON .BS 1 +ASM.LI.XON .BS 1 +ASM.PC .BS 4 +ASM.PC.PH .BS 4 -SYM.hGlobals .BS 1 +SYM.hGlobalList .BS 1 +SYM.hNameBuf .BS 1 +SYM.hGlobalBuf .BS 1 +SYM.GlobalID .BS 2 -SYM.GlobalPtr .BS 2 -SYM.hGlobalBuf .BS 1 -SYM.GlobalID .BS 2 +SYM.hLookupBuf .BS 1 -SYM.hLookupBuf .BS 1 +SYM.LocalID .BS 2 -SYM.LocalID .BS 2 +MAC.hMacros .BS 1 +MAC.hBuf .BS 1 +MAC.bAdd .BS 1 -MAC.hMacros .BS 1 -MAC.hBuf .BS 1 -MAC.bAdd .BS 1 +OUT.PC .BS 4 +OUT.Buf .BS 4 +OUT.bEquate .BS 1 +OUT.LineCnt .BS 1 -OUT.PC .BS 4 -OUT.Buf .BS 4 -OUT.bEquate .BS 1 -OUT.LineCnt .BS 1 - -DS.END .ED +DS.END .ED *--------------------------------------- - .DO DS.END-DS.START>$FF - ERROR:DS too big - .FIN + .DO DS.END-DS.START>$FF + ERROR:DS too big + .FIN *--------------------------------------- MAN SAVE /A2OSX.BUILD/BIN/DEV/ASM.S diff --git a/BIN/ASM.T.6502.A.txt b/BIN/ASM.T.6502.A.txt index b042b9e9..d0d5475e 100644 --- a/BIN/ASM.T.6502.A.txt +++ b/BIN/ASM.T.6502.A.txt @@ -3,21 +3,21 @@ PREFIX /A2OSX.BUILD AUTO 4,1 *--------------------------------------- T.ADDR.MODES .EQ * - >PSTR "#a" - >PSTR "(a),Y" - >PSTR "(a,X)" - >PSTR "a" - >PSTR "a,X" - >PSTR "aa" - >PSTR "aa,X" - >PSTR "aa,Y" - >PSTR "(aa)" - >PSTR "a,Y" + .DA #2,$$"#a" + .DA #5,$$"(a),Y" + .DA #5,$$"(a,X)" + .DA #1,$$"a" + .DA #3,$$"a,X" + .DA #2,$$"aa" + .DA #4,$$"aa,X" + .DA #4,$$"aa,Y" + .DA #4,$$"(aa)" + .DA #3,$$"a,Y" .HS 00 *--------------------------------------- T.REGISTERS .EQ * - >PSTR "Y" - >PSTR "X" + .DA #1,$$"Y" + .DA #1,$$"X" .HS 00 *--------------------------------------- MAN diff --git a/BIN/ASM.T.6502.O.txt b/BIN/ASM.T.6502.O.txt index 00b8c6e0..1323e6b4 100644 --- a/BIN/ASM.T.6502.O.txt +++ b/BIN/ASM.T.6502.O.txt @@ -3,475 +3,324 @@ PREFIX /A2OSX.BUILD AUTO 4,1 *--------------------------------------- T.OPCODES .EQ * -ADC .DA ADC.E+1-* - >PSTR "ADC" - .HS 01 - >PSTR "69a" - .HS 02 - >PSTR "71a" - .HS 03 - >PSTR "61a" - .HS 04 - >PSTR "65a" - .HS 05 - >PSTR "75a" - .HS 06 - >PSTR "6Daa" - .HS 07 - >PSTR "7Daa" - .HS 08 - >PSTR "79aa" -ADC.E .HS 00 -AND .DA AND.E+1-* - >PSTR "AND" - .HS 01 - >PSTR "29a" - .HS 02 - >PSTR "31a" - .HS 03 - >PSTR "21a" - .HS 04 - >PSTR "25a" - .HS 05 - >PSTR "35a" - .HS 06 - >PSTR "2Daa" - .HS 07 - >PSTR "3Daa" - .HS 08 - >PSTR "39aa" -AND.E .HS 00 -ASL .DA ASL.E+1-* - >PSTR "ASL" - .HS 04 - >PSTR "06a" - .HS 05 - >PSTR "16a" - .HS 06 - >PSTR "0Eaa" - .HS 07 - >PSTR "1Eaa" - .HS FF - >PSTR "0A" -ASL.E .HS 00 -BCC .DA BCC.E+1-* - >PSTR "BCC" - .HS 06 - >PSTR "90r" -BCC.E .HS 00 -BCS .DA BCS.E+1-* - >PSTR "BCS" - .HS 06 - >PSTR "B0r" -BCS.E .HS 00 -BEQ .DA BEQ.E+1-* - >PSTR "BEQ" - .HS 06 - >PSTR "F0r" -BEQ.E .HS 00 -BIT .DA BIT.E+1-* - >PSTR "BIT" - .HS 04 - >PSTR "24a" - .HS 06 - >PSTR "2Caa" -BIT.E .HS 00 -BMI .DA BMI.E+1-* - >PSTR "BMI" - .HS 06 - >PSTR "30r" -BMI.E .HS 00 -BNE .DA BNE.E+1-* - >PSTR "BNE" - .HS 06 - >PSTR "D0r" -BNE.E .HS 00 -BPL .DA BPL.E+1-* - >PSTR "BPL" - .HS 06 - >PSTR "10r" -BPL.E .HS 00 -BRK .DA BRK.E+1-* - >PSTR "BRK" - .HS FF - >PSTR "00" -BRK.E .HS 00 -BVC .DA BVC.E+1-* - >PSTR "BVC" - .HS 06 - >PSTR "50r" -BVC.E .HS 00 -BVS .DA BVS.E+1-* - >PSTR "BVS" - .HS 06 - >PSTR "70r" -BVS.E .HS 00 -CLC .DA CLC.E+1-* - >PSTR "CLC" - .HS FF - >PSTR "18" -CLC.E .HS 00 -CLD .DA CLD.E+1-* - >PSTR "CLD" - .HS FF - >PSTR "D8" -CLD.E .HS 00 -CLI .DA CLI.E+1-* - >PSTR "CLI" - .HS FF - >PSTR "58" -CLI.E .HS 00 -CLV .DA CLV.E+1-* - >PSTR "CLV" - .HS FF - >PSTR "B8" -CLV.E .HS 00 -CMP .DA CMP.E+1-* - >PSTR "CMP" - .HS 01 - >PSTR "C9a" - .HS 02 - >PSTR "D1a" - .HS 03 - >PSTR "C1a" - .HS 04 - >PSTR "C5a" - .HS 05 - >PSTR "D5a" - .HS 06 - >PSTR "CDaa" - .HS 07 - >PSTR "DDaa" - .HS 08 - >PSTR "D9aa" -CMP.E .HS 00 -CPX .DA CPX.E+1-* - >PSTR "CPX" - .HS 01 - >PSTR "E0a" - .HS 04 - >PSTR "E4a" - .HS 06 - >PSTR "Ecaa" -CPX.E .HS 00 -CPY .DA CPY.E+1-* - >PSTR "CPY" - .HS 01 - >PSTR "C0a" - .HS 04 - >PSTR "C4a" - .HS 06 - >PSTR "Ccaa" -CPY.E .HS 00 -DEC .DA DEC.E+1-* - >PSTR "DEC" - .HS 04 - >PSTR "C6a" - .HS 05 - >PSTR "D6a" - .HS 06 - >PSTR "Ceaa" - .HS 07 - >PSTR "Deaa" -DEC.E .HS 00 -DEX .DA DEX.E+1-* - >PSTR "DEX" - .HS FF - >PSTR "CA" -DEX.E .HS 00 -DEY .DA DEY.E+1-* - >PSTR "DEY" - .HS FF - >PSTR "88" -DEY.E .HS 00 -EOR .DA EOR.E+1-* - >PSTR "EOR" - .HS 01 - >PSTR "49a" - .HS 02 - >PSTR "51a" - .HS 03 - >PSTR "41a" - .HS 04 - >PSTR "45a" - .HS 05 - >PSTR "55a" - .HS 06 - >PSTR "4Daa" - .HS 07 - >PSTR "5Daa" - .HS 08 - >PSTR "59aa" -EOR.E .HS 00 -INC .DA INC.E+1-* - >PSTR "INC" - .HS 04 - >PSTR "E6a" - .HS 05 - >PSTR "F6a" - .HS 06 - >PSTR "Eeaa" - .HS 07 - >PSTR "Feaa" -INC.E .HS 00 -INX .DA INX.E+1-* - >PSTR "INX" - .HS FF - >PSTR "E8" -INX.E .HS 00 -INY .DA INY.E+1-* - >PSTR "INY" - .HS FF - >PSTR "C8" -INY.E .HS 00 -JMP .DA JMP.E+1-* - >PSTR "JMP" - .HS 09 - >PSTR "6Caa" - .HS 06 - >PSTR "4Caa" -JMP.E .HS 00 -JSR .DA JSR.E+1-* - >PSTR "JSR" - .HS 06 - >PSTR "20aa" -JSR.E .HS 00 -LDA .DA LDA.E+1-* - >PSTR "LDA" - .HS 01 - >PSTR "A9a" - .HS 02 - >PSTR "B1a" - .HS 03 - >PSTR "A1a" - .HS 04 - >PSTR "A5a" - .HS 05 - >PSTR "B5a" - .HS 06 - >PSTR "Adaa" - .HS 07 - >PSTR "Bdaa" - .HS 08 - >PSTR "B9aa" -LDA.E .HS 00 -LDX .DA LDX.E+1-* - >PSTR "LDX" - .HS 01 - >PSTR "A2a" - .HS 04 - >PSTR "A6a" - .HS 0A - >PSTR "B6a" - .HS 06 - >PSTR "Aeaa" - .HS 08 - >PSTR "Beaa" -LDX.E .HS 00 -LDY .DA LDY.E+1-* - >PSTR "LDY" - .HS 01 - >PSTR "A0a" - .HS 04 - >PSTR "A4a" - .HS 05 - >PSTR "B4a" - .HS 06 - >PSTR "Acaa" - .HS 07 - >PSTR "Bcaa" -LDY.E .HS 00 -LSR .DA LSR.E+1-* - >PSTR "LSR" - .HS 04 - >PSTR "46a" - .HS 05 - >PSTR "56a" - .HS 06 - >PSTR "4Eaa" - .HS 07 - >PSTR "5Eaa" - .HS FF - >PSTR "4A" -LSR.E .HS 00 -NOP .DA NOP.E+1-* - >PSTR "NOP" - .HS FF - >PSTR "EA" -NOP.E .HS 00 -ORA .DA ORA.E+1-* - >PSTR "ORA" - .HS 01 - >PSTR "09a" - .HS 02 - >PSTR "11a" - .HS 03 - >PSTR "01a" - .HS 04 - >PSTR "05a" - .HS 05 - >PSTR "15a" - .HS 06 - >PSTR "0Daa" - .HS 07 - >PSTR "1Daa" - .HS 08 - >PSTR "19aa" -ORA.E .HS 00 -PHA .DA PHA.E+1-* - >PSTR "PHA" - .HS FF - >PSTR "48" -PHA.E .HS 00 -PHP .DA PHP.E+1-* - >PSTR "PHP" - .HS FF - >PSTR "08" -PHP.E .HS 00 -PLA .DA PLA.E+1-* - >PSTR "PLA" - .HS FF - >PSTR "68" -PLA.E .HS 00 -PLP .DA PLP.E+1-* - >PSTR "PLP" - .HS FF - >PSTR "28" -PLP.E .HS 00 -ROL .DA ROL.E+1-* - >PSTR "ROL" - .HS 04 - >PSTR "26a" - .HS 05 - >PSTR "36a" - .HS 06 - >PSTR "2Eaa" - .HS 07 - >PSTR "3Eaa" - .HS FF - >PSTR "2A" -ROL.E .HS 00 -ROR .DA ROR.E+1-* - >PSTR "ROR" - .HS 04 - >PSTR "66a" - .HS 05 - >PSTR "76a" - .HS 06 - >PSTR "6Eaa" - .HS 07 - >PSTR "7Eaa" - .HS FF - >PSTR "6A" -ROR.E .HS 00 -RTI .DA RTI.E+1-* - >PSTR "RTI" - .HS FF - >PSTR "40" -RTI.E .HS 00 -RTS .DA RTS.E+1-* - >PSTR "RTS" - .HS FF - >PSTR "60" -RTS.E .HS 00 -SBC .DA SBC.E+1-* - >PSTR "SBC" - .HS 01 - >PSTR "E9a" - .HS 02 - >PSTR "F1a" - .HS 03 - >PSTR "E1a" - .HS 04 - >PSTR "E5a" - .HS 05 - >PSTR "F5a" - .HS 06 - >PSTR "Edaa" - .HS 07 - >PSTR "Fdaa" - .HS 08 - >PSTR "F9aa" -SBC.E .HS 00 -SEC .DA SEC.E+1-* - >PSTR "SEC" - .HS FF - >PSTR "38" -SEC.E .HS 00 -SED .DA SED.E+1-* - >PSTR "SED" - .HS FF - >PSTR "F8" -SED.E .HS 00 -SEI .DA SEI.E+1-* - >PSTR "SEI" - .HS FF - >PSTR "78" -SEI.E .HS 00 -STA .DA STA.E+1-* - >PSTR "STA" - .HS 02 - >PSTR "91a" - .HS 03 - >PSTR "81a" - .HS 04 - >PSTR "85a" - .HS 05 - >PSTR "95a" - .HS 06 - >PSTR "8Daa" - .HS 07 - >PSTR "9Daa" - .HS 08 - >PSTR "99aa" -STA.E .HS 00 -STX .DA STX.E+1-* - >PSTR "STX" - .HS 04 - >PSTR "86a" - .HS 0A - >PSTR "96a" - .HS 06 - >PSTR "8Eaa" -STX.E .HS 00 -STY .DA STY.E+1-* - >PSTR "STY" - .HS 04 - >PSTR "84a" - .HS 05 - >PSTR "94a" - .HS 06 - >PSTR "8Caa" -STY.E .HS 00 -TAX .DA TAX.E+1-* - >PSTR "TAX" - .HS FF - >PSTR "AA" -TAX.E .HS 00 -TAY .DA TAY.E+1-* - >PSTR "TAY" - .HS FF - >PSTR "A8" -TAY.E .HS 00 -TSX .DA TSX.E+1-* - >PSTR "TSX" - .HS FF - >PSTR "BA" -TSX.E .HS 00 -TXA .DA TXA.E+1-* - >PSTR "TXA" - .HS FF - >PSTR "8A" -TXA.E .HS 00 -TXS .DA TXS.E+1-* - >PSTR "TXS" - .HS FF - >PSTR "9A" -TXS.E .HS 00 -TYA .DA TYA.E+1-* - >PSTR "TYA" - .HS FF - >PSTR "98" +ADC .DA ADC.E+1-* + .DA #3,$$"ADC" + .DA #1,#3,$$"69a" + .DA #2,#3,$$"71a" + .DA #3,#3,$$"61a" + .DA #4,#3,$$"65a" + .DA #5,#3,$$"75a" + .DA #6,#4,$$"6Daa" + .DA #7,#4,$$"7Daa" + .DA #8,#4,$$"79aa" +ADC.E .HS 00 +AND .DA AND.E+1-* + .DA #3,$$"AND" + .DA #1,#3,$$"29a" + .DA #2,#3,$$"31a" + .DA #3,#3,$$"21a" + .DA #4,#3,$$"25a" + .DA #5,#3,$$"35a" + .DA #6,#4,$$"2Daa" + .DA #7,#4,$$"3Daa" + .DA #8,#4,$$"39aa" +AND.E .HS 00 +ASL .DA ASL.E+1-* + .DA #3,$$"ASL" + .DA #4,#3,$$"06a" + .DA #5,#3,$$"16a" + .DA #6,#4,$$"0Eaa" + .DA #7,#4,$$"1Eaa" + .DA #255,#2,$$"0A" +ASL.E .HS 00 +BCC .DA BCC.E+1-* + .DA #3,$$"BCC" + .DA #6,#3,$$"90r" +BCC.E .HS 00 +BCS .DA BCS.E+1-* + .DA #3,$$"BCS" + .DA #6,#3,$$"B0r" +BCS.E .HS 00 +BEQ .DA BEQ.E+1-* + .DA #3,$$"BEQ" + .DA #6,#3,$$"F0r" +BEQ.E .HS 00 +BIT .DA BIT.E+1-* + .DA #3,$$"BIT" + .DA #4,#3,$$"24a" + .DA #6,#4,$$"2Caa" +BIT.E .HS 00 +BMI .DA BMI.E+1-* + .DA #3,$$"BMI" + .DA #6,#3,$$"30r" +BMI.E .HS 00 +BNE .DA BNE.E+1-* + .DA #3,$$"BNE" + .DA #6,#3,$$"D0r" +BNE.E .HS 00 +BPL .DA BPL.E+1-* + .DA #3,$$"BPL" + .DA #6,#3,$$"10r" +BPL.E .HS 00 +BRK .DA BRK.E+1-* + .DA #3,$$"BRK" + .DA #255,#2,$$"00" +BRK.E .HS 00 +BVC .DA BVC.E+1-* + .DA #3,$$"BVC" + .DA #6,#3,$$"50r" +BVC.E .HS 00 +BVS .DA BVS.E+1-* + .DA #3,$$"BVS" + .DA #6,#3,$$"70r" +BVS.E .HS 00 +CLC .DA CLC.E+1-* + .DA #3,$$"CLC" + .DA #255,#2,$$"18" +CLC.E .HS 00 +CLD .DA CLD.E+1-* + .DA #3,$$"CLD" + .DA #255,#2,$$"D8" +CLD.E .HS 00 +CLI .DA CLI.E+1-* + .DA #3,$$"CLI" + .DA #255,#2,$$"58" +CLI.E .HS 00 +CLV .DA CLV.E+1-* + .DA #3,$$"CLV" + .DA #255,#2,$$"B8" +CLV.E .HS 00 +CMP .DA CMP.E+1-* + .DA #3,$$"CMP" + .DA #1,#3,$$"C9a" + .DA #2,#3,$$"D1a" + .DA #3,#3,$$"C1a" + .DA #4,#3,$$"C5a" + .DA #5,#3,$$"D5a" + .DA #6,#4,$$"CDaa" + .DA #7,#4,$$"DDaa" + .DA #8,#4,$$"D9aa" +CMP.E .HS 00 +CPX .DA CPX.E+1-* + .DA #3,$$"CPX" + .DA #1,#3,$$"E0a" + .DA #4,#3,$$"E4a" + .DA #6,#4,$$"Ecaa" +CPX.E .HS 00 +CPY .DA CPY.E+1-* + .DA #3,$$"CPY" + .DA #1,#3,$$"C0a" + .DA #4,#3,$$"C4a" + .DA #6,#4,$$"Ccaa" +CPY.E .HS 00 +DEC .DA DEC.E+1-* + .DA #3,$$"DEC" + .DA #4,#3,$$"C6a" + .DA #5,#3,$$"D6a" + .DA #6,#4,$$"Ceaa" + .DA #7,#4,$$"Deaa" +DEC.E .HS 00 +DEX .DA DEX.E+1-* + .DA #3,$$"DEX" + .DA #255,#2,$$"CA" +DEX.E .HS 00 +DEY .DA DEY.E+1-* + .DA #3,$$"DEY" + .DA #255,#2,$$"88" +DEY.E .HS 00 +EOR .DA EOR.E+1-* + .DA #3,$$"EOR" + .DA #1,#3,$$"49a" + .DA #2,#3,$$"51a" + .DA #3,#3,$$"41a" + .DA #4,#3,$$"45a" + .DA #5,#3,$$"55a" + .DA #6,#4,$$"4Daa" + .DA #7,#4,$$"5Daa" + .DA #8,#4,$$"59aa" +EOR.E .HS 00 +INC .DA INC.E+1-* + .DA #3,$$"INC" + .DA #4,#3,$$"E6a" + .DA #5,#3,$$"F6a" + .DA #6,#4,$$"EEaa" + .DA #7,#4,$$"FEaa" +INC.E .HS 00 +INX .DA INX.E+1-* + .DA #3,$$"INX" + .DA #255,#2,$$"E8" +INX.E .HS 00 +INY .DA INY.E+1-* + .DA #3,$$"INY" + .DA #255,#2,$$"C8" +INY.E .HS 00 +JMP .DA JMP.E+1-* + .DA #3,$$"JMP" + .DA #9,#4,$$"6Caa" + .DA #6,#4,$$"4Caa" +JMP.E .HS 00 +JSR .DA JSR.E+1-* + .DA #3,$$"JSR" + .DA #6,#4,$$"20aa" +JSR.E .HS 00 +LDA .DA LDA.E+1-* + .DA #3,$$"LDA" + .DA #1,#3,$$"A9a" + .DA #2,#3,$$"B1a" + .DA #3,#3,$$"A1a" + .DA #4,#3,$$"A5a" + .DA #5,#3,$$"B5a" + .DA #6,#4,$$"ADaa" + .DA #7,#4,$$"BDaa" + .DA #8,#4,$$"B9aa" +LDA.E .HS 00 +LDX .DA LDX.E+1-* + .DA #3,$$"LDX" + .DA #1,#3,$$"A2a" + .DA #4,#3,$$"A6a" + .DA #10,#3,$$"B6a" + .DA #6,#4,$$"AEaa" + .DA #8,#4,$$"BEaa" +LDX.E .HS 00 +LDY .DA LDY.E+1-* + .DA #3,$$"LDY" + .DA #1,#3,$$"A0a" + .DA #4,#3,$$"A4a" + .DA #5,#3,$$"B4a" + .DA #6,#4,$$"ACaa" + .DA #7,#4,$$"BCaa" +LDY.E .HS 00 +LSR .DA LSR.E+1-* + .DA #3,$$"LSR" + .DA #4,#3,$$"46a" + .DA #5,#3,$$"56a" + .DA #6,#4,$$"4Eaa" + .DA #7,#4,$$"5Eaa" + .DA #255,#2,$$"4A" +LSR.E .HS 00 +NOP .DA NOP.E+1-* + .DA #3,$$"NOP" + .DA #255,#2,$$"EA" +NOP.E .HS 00 +ORA .DA ORA.E+1-* + .DA #3,$$"ORA" + .DA #1,#3,$$"09a" + .DA #2,#3,$$"11a" + .DA #3,#3,$$"01a" + .DA #4,#3,$$"05a" + .DA #5,#3,$$"15a" + .DA #6,#4,$$"0Daa" + .DA #7,#4,$$"1Daa" + .DA #8,#4,$$"19aa" +ORA.E .HS 00 +PHA .DA PHA.E+1-* + .DA #3,$$"PHA" + .DA #255,#2,$$"48" +PHA.E .HS 00 +PHP .DA PHP.E+1-* + .DA #3,$$"PHP" + .DA #255,#2,$$"08" +PHP.E .HS 00 +PLA .DA PLA.E+1-* + .DA #3,$$"PLA" + .DA #255,#2,$$"68" +PLA.E .HS 00 +PLP .DA PLP.E+1-* + .DA #3,$$"PLP" + .DA #255,#2,$$"28" +PLP.E .HS 00 +ROL .DA ROL.E+1-* + .DA #3,$$"ROL" + .DA #4,#3,$$"26a" + .DA #5,#3,$$"36a" + .DA #6,#4,$$"2Eaa" + .DA #7,#4,$$"3Eaa" + .DA #255,#2,$$"2A" +ROL.E .HS 00 +ROR .DA ROR.E+1-* + .DA #3,$$"ROR" + .DA #4,#3,$$"66a" + .DA #5,#3,$$"76a" + .DA #6,#4,$$"6Eaa" + .DA #7,#4,$$"7Eaa" + .DA #255,#2,$$"6A" +ROR.E .HS 00 +RTI .DA RTI.E+1-* + .DA #3,$$"RTI" + .DA #255,#2,$$"40" +RTI.E .HS 00 +RTS .DA RTS.E+1-* + .DA #3,$$"RTS" + .DA #255,#2,$$"60" +RTS.E .HS 00 +SBC .DA SBC.E+1-* + .DA #3,$$"SBC" + .DA #1,#3,$$"E9a" + .DA #2,#3,$$"F1a" + .DA #3,#3,$$"E1a" + .DA #4,#3,$$"E5a" + .DA #5,#3,$$"F5a" + .DA #6,#4,$$"EDaa" + .DA #7,#4,$$"FDaa" + .DA #8,#4,$$"F9aa" +SBC.E .HS 00 +SEC .DA SEC.E+1-* + .DA #3,$$"SEC" + .DA #255,#2,$$"38" +SEC.E .HS 00 +SED .DA SED.E+1-* + .DA #3,$$"SED" + .DA #255,#2,$$"F8" +SED.E .HS 00 +SEI .DA SEI.E+1-* + .DA #3,$$"SEI" + .DA #255,#2,$$"78" +SEI.E .HS 00 +STA .DA STA.E+1-* + .DA #3,$$"STA" + .DA #2,#3,$$"91a" + .DA #3,#3,$$"81a" + .DA #4,#3,$$"85a" + .DA #5,#3,$$"95a" + .DA #6,#4,$$"8Daa" + .DA #7,#4,$$"9Daa" + .DA #8,#4,$$"99aa" +STA.E .HS 00 +STX .DA STX.E+1-* + .DA #3,$$"STX" + .DA #4,#3,$$"86a" + .DA #10,#3,$$"96a" + .DA #6,#4,$$"8Eaa" +STX.E .HS 00 +STY .DA STY.E+1-* + .DA #3,$$"STY" + .DA #4,#3,$$"84a" + .DA #5,#3,$$"94a" + .DA #6,#4,$$"8Caa" +STY.E .HS 00 +TAX .DA TAX.E+1-* + .DA #3,$$"TAX" + .DA #255,#2,$$"AA" +TAX.E .HS 00 +TAY .DA TAY.E+1-* + .DA #3,$$"TAY" + .DA #255,#2,$$"A8" +TAY.E .HS 00 +TSX .DA TSX.E+1-* + .DA #3,$$"TSX" + .DA #255,#2,$$"BA" +TSX.E .HS 00 +TXA .DA TXA.E+1-* + .DA #3,$$"TXA" + .DA #255,#2,$$"8A" +TXA.E .HS 00 +TXS .DA TXS.E+1-* + .DA #3,$$"TXS" + .DA #255,#2,$$"9A" +TXS.E .HS 00 +TYA .DA TYA.E+1-* + .DA #3,$$"TYA" + .DA #255,#2,$$"98" TYA.E .HS 00 .HS 0000 *--------------------------------------- diff --git a/BIN/ASM.T.6502.S.txt b/BIN/ASM.T.6502.S.txt index 77feb68f..64d64d93 100644 --- a/BIN/ASM.T.6502.S.txt +++ b/BIN/ASM.T.6502.S.txt @@ -4,12 +4,6 @@ AUTO 4,1 .LIST OFF .OR $0 .TF /A2OSX.BUILD/BIN/DEV/ASM.T.6502 -*--------------------------------------- - .MA PSTR - .DA #:1-*-1 - .AS "]1" -:1 .EQ * - .EM *--------------------------------------- .DA T.ADDR.MODES .DA T.REGISTERS diff --git a/BIN/ASM.T.65816.A.txt b/BIN/ASM.T.65816.A.txt index 9f55124a..f6d80467 100644 --- a/BIN/ASM.T.65816.A.txt +++ b/BIN/ASM.T.65816.A.txt @@ -3,32 +3,32 @@ PREFIX /A2OSX.BUILD AUTO 4,1 *--------------------------------------- T.ADDR.MODES .EQ * - >PSTR "#a" - >PSTR "(a)" - >PSTR "(a),Y" - >PSTR "(a,S),Y" - >PSTR "(a,X)" - >PSTR "[a]" - >PSTR "[a],Y" - >PSTR "a" - >PSTR "a,S" - >PSTR "a,X" - >PSTR "aa" - >PSTR "aa,X" - >PSTR "aa,Y" - >PSTR "aaa" - >PSTR "aaa,X" - >PSTR "(aa)" - >PSTR "(aa,X)" - >PSTR "[aa]" - >PSTR "a,Y" - >PSTR "a,b" + .DA #2,$$"#a" + .DA #3,$$"(a)" + .DA #5,$$"(a),Y" + .DA #7,$$"(a,S),Y" + .DA #5,$$"(a,X)" + .DA #3,$$"[a]" + .DA #5,$$"[a],Y" + .DA #1,$$"a" + .DA #3,$$"a,S" + .DA #3,$$"a,X" + .DA #2,$$"aa" + .DA #4,$$"aa,X" + .DA #4,$$"aa,Y" + .DA #3,$$"aaa" + .DA #5,$$"aaa,X" + .DA #4,$$"(aa)" + .DA #6,$$"(aa,X)" + .DA #4,$$"[aa]" + .DA #3,$$"a,Y" + .DA #3,$$"a,b" .HS 00 *--------------------------------------- T.REGISTERS .EQ * - >PSTR "Y" - >PSTR "S" - >PSTR "X" + .DA #1,$$"Y" + .DA #1,$$"S" + .DA #1,$$"X" .HS 00 *--------------------------------------- MAN diff --git a/BIN/ASM.T.65816.O.txt b/BIN/ASM.T.65816.O.txt index 9a63b9f5..32fc0db7 100644 --- a/BIN/ASM.T.65816.O.txt +++ b/BIN/ASM.T.65816.O.txt @@ -3,787 +3,531 @@ PREFIX /A2OSX.BUILD AUTO 4,1 *--------------------------------------- T.OPCODES .EQ * -ADC .DA ADC.E+1-* - >PSTR "ADC" - .HS 01 - >PSTR "69a" - .HS 02 - >PSTR "72a" - .HS 03 - >PSTR "71a" - .HS 04 - >PSTR "73a" - .HS 05 - >PSTR "61a" - .HS 06 - >PSTR "67a" - .HS 07 - >PSTR "77a" - .HS 08 - >PSTR "65a" - .HS 09 - >PSTR "63a" - .HS 0A - >PSTR "75a" - .HS 0B - >PSTR "6Daa" - .HS 0C - >PSTR "7Daa" - .HS 0D - >PSTR "79aa" - .HS 0E - >PSTR "6Faaa" - .HS 0F - >PSTR "7Faaa" -ADC.E .HS 00 -AND .DA AND.E+1-* - >PSTR "AND" - .HS 01 - >PSTR "29a" - .HS 02 - >PSTR "32a" - .HS 03 - >PSTR "31a" - .HS 04 - >PSTR "33a" - .HS 05 - >PSTR "21a" - .HS 06 - >PSTR "27a" - .HS 07 - >PSTR "37a" - .HS 08 - >PSTR "25a" - .HS 09 - >PSTR "23a" - .HS 0A - >PSTR "35a" - .HS 0B - >PSTR "2Daa" - .HS 0C - >PSTR "3Daa" - .HS 0D - >PSTR "39aa" - .HS 0E - >PSTR "2Faaa" - .HS 0F - >PSTR "3Faaa" -AND.E .HS 00 -ASL .DA ASL.E+1-* - >PSTR "ASL" - .HS 08 - >PSTR "06a" - .HS 0A - >PSTR "16a" - .HS 0B - >PSTR "0Eaa" - .HS 0C - >PSTR "1Eaa" - .HS FF - >PSTR "0A" -ASL.E .HS 00 -BCC .DA BCC.E+1-* - >PSTR "BCC" - .HS 0B - >PSTR "90r" -BCC.E .HS 00 -BCS .DA BCS.E+1-* - >PSTR "BCS" - .HS 0B - >PSTR "B0r" -BCS.E .HS 00 -BEQ .DA BEQ.E+1-* - >PSTR "BEQ" - .HS 0B - >PSTR "F0r" -BEQ.E .HS 00 -BIT .DA BIT.E+1-* - >PSTR "BIT" - .HS 01 - >PSTR "89a" - .HS 08 - >PSTR "24a" - .HS 0A - >PSTR "34a" - .HS 0B - >PSTR "2Caa" - .HS 0C - >PSTR "3Caa" -BIT.E .HS 00 -BMI .DA BMI.E+1-* - >PSTR "BMI" - .HS 0B - >PSTR "30r" -BMI.E .HS 00 -BNE .DA BNE.E+1-* - >PSTR "BNE" - .HS 0B - >PSTR "D0r" -BNE.E .HS 00 -BPL .DA BPL.E+1-* - >PSTR "BPL" - .HS 0B - >PSTR "10r" -BPL.E .HS 00 -BRA .DA BRA.E+1-* - >PSTR "BRA" - .HS 0B - >PSTR "80r" -BRA.E .HS 00 -BRK .DA BRK.E+1-* - >PSTR "BRK" - .HS FF - >PSTR "00" -BRK.E .HS 00 -BRL .DA BRL.E+1-* - >PSTR "BRL" - .HS 0B - >PSTR "82rr" -BRL.E .HS 00 -BVC .DA BVC.E+1-* - >PSTR "BVC" - .HS 0B - >PSTR "50r" -BVC.E .HS 00 -BVS .DA BVS.E+1-* - >PSTR "BVS" - .HS 0B - >PSTR "70r" -BVS.E .HS 00 -CLC .DA CLC.E+1-* - >PSTR "CLC" - .HS FF - >PSTR "18" -CLC.E .HS 00 -CLD .DA CLD.E+1-* - >PSTR "CLD" - .HS FF - >PSTR "D8" -CLD.E .HS 00 -CLI .DA CLI.E+1-* - >PSTR "CLI" - .HS FF - >PSTR "58" -CLI.E .HS 00 -CLV .DA CLV.E+1-* - >PSTR "CLV" - .HS FF - >PSTR "B8" -CLV.E .HS 00 -CMP .DA CMP.E+1-* - >PSTR "CMP" - .HS 01 - >PSTR "C9a" - .HS 02 - >PSTR "D2a" - .HS 03 - >PSTR "D1a" - .HS 04 - >PSTR "D3a" - .HS 05 - >PSTR "C1a" - .HS 06 - >PSTR "C7a" - .HS 07 - >PSTR "D7a" - .HS 08 - >PSTR "C5a" - .HS 09 - >PSTR "C3a" - .HS 0A - >PSTR "D5a" - .HS 0B - >PSTR "CDaa" - .HS 0C - >PSTR "DDaa" - .HS 0D - >PSTR "D9aa" - .HS 0E - >PSTR "CFaaa" - .HS 0F - >PSTR "DFaaa" -CMP.E .HS 00 -COP .DA COP.E+1-* - >PSTR "COP" - .HS 01 - >PSTR "02a" -COP.E .HS 00 -CPX .DA CPX.E+1-* - >PSTR "CPX" - .HS 01 - >PSTR "E0a" - .HS 08 - >PSTR "E4a" - .HS 0B - >PSTR "ECaa" -CPX.E .HS 00 -CPY .DA CPY.E+1-* - >PSTR "CPY" - .HS 01 - >PSTR "C0a" - .HS 08 - >PSTR "C4a" - .HS 0B - >PSTR "CCaa" -CPY.E .HS 00 -DEC .DA DEC.E+1-* - >PSTR "DEC" - .HS 08 - >PSTR "C6a" - .HS 0A - >PSTR "D6a" - .HS 0B - >PSTR "CEaa" - .HS 0C - >PSTR "DEaa" - .HS FF - >PSTR "3A" -DEC.E .HS 00 -DEX .DA DEX.E+1-* - >PSTR "DEX" - .HS FF - >PSTR "CA" -DEX.E .HS 00 -DEY .DA DEY.E+1-* - >PSTR "DEY" - .HS FF - >PSTR "88" -DEY.E .HS 00 -EOR .DA EOR.E+1-* - >PSTR "EOR" - .HS 01 - >PSTR "49a" - .HS 02 - >PSTR "52a" - .HS 03 - >PSTR "51a" - .HS 04 - >PSTR "53a" - .HS 05 - >PSTR "41a" - .HS 06 - >PSTR "47a" - .HS 07 - >PSTR "57a" - .HS 08 - >PSTR "45a" - .HS 09 - >PSTR "43a" - .HS 0A - >PSTR "55a" - .HS 0B - >PSTR "4Daa" - .HS 0C - >PSTR "5Daa" - .HS 0D - >PSTR "59aa" - .HS 0E - >PSTR "4Faaa" - .HS 0F - >PSTR "5Faaa" -EOR.E .HS 00 -INC .DA INC.E+1-* - >PSTR "INC" - .HS 08 - >PSTR "E6a" - .HS 0A - >PSTR "F6a" - .HS 0B - >PSTR "EEaa" - .HS 0C - >PSTR "FEaa" - .HS FF - >PSTR "1A" -INC.E .HS 00 -INX .DA INX.E+1-* - >PSTR "INX" - .HS FF - >PSTR "E8" -INX.E .HS 00 -INY .DA INY.E+1-* - >PSTR "INY" - .HS FF - >PSTR "C8" -INY.E .HS 00 -JMP .DA JMP.E+1-* - >PSTR "JMP" - .HS 10 - >PSTR "6Caa" - .HS 11 - >PSTR "7Caa" - .HS 12 - >PSTR "DCaa" - .HS 0B - >PSTR "4Caa" - .HS 0E - >PSTR "5Caaa" -JMP.E .HS 00 -JSR .DA JSR.E+1-* - >PSTR "JSR" - .HS 11 - >PSTR "FCaa" - .HS 0B - >PSTR "20aa" - .HS 0E - >PSTR "22aaa" -JSR.E .HS 00 -LDA .DA LDA.E+1-* - >PSTR "LDA" - .HS 01 - >PSTR "A9a" - .HS 02 - >PSTR "B2a" - .HS 03 - >PSTR "B1a" - .HS 04 - >PSTR "B3a" - .HS 05 - >PSTR "A1a" - .HS 06 - >PSTR "A7a" - .HS 07 - >PSTR "B7a" - .HS 08 - >PSTR "A5a" - .HS 09 - >PSTR "A3a" - .HS 0A - >PSTR "B5a" - .HS 0B - >PSTR "ADaa" - .HS 0C - >PSTR "BDaa" - .HS 0D - >PSTR "B9aa" - .HS 0E - >PSTR "AFaaa" - .HS 0F - >PSTR "BFaaa" -LDA.E .HS 00 -LDX .DA LDX.E+1-* - >PSTR "LDX" - .HS 01 - >PSTR "A2a" - .HS 08 - >PSTR "A6a" - .HS 13 - >PSTR "B6a" - .HS 0B - >PSTR "AEaa" - .HS 0D - >PSTR "BEaa" -LDX.E .HS 00 -LDY .DA LDY.E+1-* - >PSTR "LDY" - .HS 01 - >PSTR "A0a" - .HS 08 - >PSTR "A4a" - .HS 0A - >PSTR "B4a" - .HS 0B - >PSTR "ACaa" - .HS 0C - >PSTR "BCaa" -LDY.E .HS 00 -LSR .DA LSR.E+1-* - >PSTR "LSR" - .HS 08 - >PSTR "46a" - .HS 0A - >PSTR "56a" - .HS 0B - >PSTR "4Eaa" - .HS 0C - >PSTR "5Eaa" - .HS FF - >PSTR "4A" -LSR.E .HS 00 -MVN .DA MVN.E+1-* - >PSTR "MVN" - .HS 14 - >PSTR "54ab" -MVN.E .HS 00 -MVP .DA MVP.E+1-* - >PSTR "MVP" - .HS 14 - >PSTR "44ab" -MVP.E .HS 00 -NOP .DA NOP.E+1-* - >PSTR "NOP" - .HS FF - >PSTR "EA" -NOP.E .HS 00 -ORA .DA ORA.E+1-* - >PSTR "ORA" - .HS 01 - >PSTR "09a" - .HS 02 - >PSTR "12a" - .HS 03 - >PSTR "11a" - .HS 04 - >PSTR "13a" - .HS 05 - >PSTR "01a" - .HS 06 - >PSTR "07a" - .HS 07 - >PSTR "17a" - .HS 08 - >PSTR "05a" - .HS 09 - >PSTR "03a" - .HS 0A - >PSTR "15a" - .HS 0B - >PSTR "0Daa" - .HS 0C - >PSTR "1Daa" - .HS 0D - >PSTR "19aa" - .HS 0E - >PSTR "0Faaa" - .HS 0F - >PSTR "1Faaa" -ORA.E .HS 00 -PEA .DA PEA.E+1-* - >PSTR "PEA" - .HS 0B - >PSTR "F4aa" -PEA.E .HS 00 -PEI .DA PEI.E+1-* - >PSTR "PEI" - .HS 02 - >PSTR "D4a" -PEI.E .HS 00 -PER .DA PER.E+1-* - >PSTR "PER" - .HS 0B - >PSTR "62rr" -PER.E .HS 00 -PHA .DA PHA.E+1-* - >PSTR "PHA" - .HS FF - >PSTR "48" -PHA.E .HS 00 -PHB .DA PHB.E+1-* - >PSTR "PHB" - .HS FF - >PSTR "8B" -PHB.E .HS 00 -PHD .DA PHD.E+1-* - >PSTR "PHD" - .HS FF - >PSTR "0B" -PHD.E .HS 00 -PHK .DA PHK.E+1-* - >PSTR "PHK" - .HS FF - >PSTR "4B" -PHK.E .HS 00 -PHP .DA PHP.E+1-* - >PSTR "PHP" - .HS FF - >PSTR "08" -PHP.E .HS 00 -PHX .DA PHX.E+1-* - >PSTR "PHX" - .HS FF - >PSTR "DA" -PHX.E .HS 00 -PHY .DA PHY.E+1-* - >PSTR "PHY" - .HS FF - >PSTR "5A" -PHY.E .HS 00 -PLA .DA PLA.E+1-* - >PSTR "PLA" - .HS FF - >PSTR "68" -PLA.E .HS 00 -PLB .DA PLB.E+1-* - >PSTR "PLB" - .HS FF - >PSTR "AB" -PLB.E .HS 00 -PLD .DA PLD.E+1-* - >PSTR "PLD" - .HS FF - >PSTR "2B" -PLD.E .HS 00 -PLP .DA PLP.E+1-* - >PSTR "PLP" - .HS FF - >PSTR "28" -PLP.E .HS 00 -PLX .DA PLX.E+1-* - >PSTR "PLX" - .HS FF - >PSTR "FA" -PLX.E .HS 00 -PLY .DA PLY.E+1-* - >PSTR "PLY" - .HS FF - >PSTR "7A" -PLY.E .HS 00 -REP .DA REP.E+1-* - >PSTR "REP" - .HS 01 - >PSTR "C2a" -REP.E .HS 00 -ROL .DA ROL.E+1-* - >PSTR "ROL" - .HS 08 - >PSTR "26a" - .HS 0A - >PSTR "36a" - .HS 0B - >PSTR "2Eaa" - .HS 0C - >PSTR "3Eaa" - .HS FF - >PSTR "2A" -ROL.E .HS 00 -ROR .DA ROR.E+1-* - >PSTR "ROR" - .HS 08 - >PSTR "66a" - .HS 0A - >PSTR "76a" - .HS 0B - >PSTR "6Eaa" - .HS 0C - >PSTR "7Eaa" - .HS FF - >PSTR "6A" -ROR.E .HS 00 -RTI .DA RTI.E+1-* - >PSTR "RTI" - .HS FF - >PSTR "40" -RTI.E .HS 00 -RTL .DA RTL.E+1-* - >PSTR "RTL" - .HS FF - >PSTR "6B" -RTL.E .HS 00 -RTS .DA RTS.E+1-* - >PSTR "RTS" - .HS FF - >PSTR "60" -RTS.E .HS 00 -SBC .DA SBC.E+1-* - >PSTR "SBC" - .HS 01 - >PSTR "E9a" - .HS 02 - >PSTR "F2a" - .HS 03 - >PSTR "F1a" - .HS 04 - >PSTR "F3a" - .HS 05 - >PSTR "E1a" - .HS 06 - >PSTR "E7a" - .HS 07 - >PSTR "F7a" - .HS 08 - >PSTR "E5a" - .HS 09 - >PSTR "E3a" - .HS 0A - >PSTR "F5a" - .HS 0B - >PSTR "EDaa" - .HS 0C - >PSTR "FDaa" - .HS 0D - >PSTR "F9aa" - .HS 0E - >PSTR "EFaaa" - .HS 0F - >PSTR "FFaaa" -SBC.E .HS 00 -SEC .DA SEC.E+1-* - >PSTR "SEC" - .HS FF - >PSTR "38" -SEC.E .HS 00 -SED .DA SED.E+1-* - >PSTR "SED" - .HS FF - >PSTR "F8" -SED.E .HS 00 -SEI .DA SEI.E+1-* - >PSTR "SEI" - .HS FF - >PSTR "78" -SEI.E .HS 00 -SEP .DA SEP.E+1-* - >PSTR "SEP" - .HS FF - >PSTR "E2" -SEP.E .HS 00 -STA .DA STA.E+1-* - >PSTR "STA" - .HS 02 - >PSTR "92a" - .HS 03 - >PSTR "91a" - .HS 04 - >PSTR "93a" - .HS 05 - >PSTR "81a" - .HS 06 - >PSTR "87a" - .HS 07 - >PSTR "97a" - .HS 08 - >PSTR "85a" - .HS 09 - >PSTR "83a" - .HS 0A - >PSTR "95a" - .HS 0B - >PSTR "8Daa" - .HS 0C - >PSTR "9Daa" - .HS 0D - >PSTR "99aa" - .HS 0E - >PSTR "8Faaa" - .HS 0F - >PSTR "9Faaa" -STA.E .HS 00 -STP .DA STP.E+1-* - >PSTR "STP" - .HS FF - >PSTR "DB" -STP.E .HS 00 -STX .DA STX.E+1-* - >PSTR "STX" - .HS 08 - >PSTR "86a" - .HS 13 - >PSTR "96a" - .HS 0B - >PSTR "8Eaa" -STX.E .HS 00 -STY .DA STY.E+1-* - >PSTR "STY" - .HS 08 - >PSTR "84a" - .HS 0A - >PSTR "94a" - .HS 0B - >PSTR "8Caa" -STY.E .HS 00 -STZ .DA STZ.E+1-* - >PSTR "STZ" - .HS 08 - >PSTR "64a" - .HS 0A - >PSTR "74a" - .HS 0B - >PSTR "9Caa" - .HS 0C - >PSTR "9Eaa" -STZ.E .HS 00 -TAX .DA TAX.E+1-* - >PSTR "TAX" - .HS FF - >PSTR "AA" -TAX.E .HS 00 -TAY .DA TAY.E+1-* - >PSTR "TAY" - .HS FF - >PSTR "A8" -TAY.E .HS 00 -TCD .DA TCD.E+1-* - >PSTR "TCD" - .HS FF - >PSTR "5B" -TCD.E .HS 00 -TCS .DA TCS.E+1-* - >PSTR "TCS" - .HS FF - >PSTR "1B" -TCS.E .HS 00 -TDC .DA TDC.E+1-* - >PSTR "TDC" - .HS FF - >PSTR "7B" -TDC.E .HS 00 -TRB .DA TRB.E+1-* - >PSTR "TRB" - .HS 08 - >PSTR "14a" - .HS 0B - >PSTR "1Caa" -TRB.E .HS 00 -TSB .DA TSB.E+1-* - >PSTR "TSB" - .HS 08 - >PSTR "04a" - .HS 0B - >PSTR "0Caa" -TSB.E .HS 00 -TSC .DA TSC.E+1-* - >PSTR "TSC" - .HS FF - >PSTR "3B" -TSC.E .HS 00 -TSX .DA TSX.E+1-* - >PSTR "TSX" - .HS FF - >PSTR "BA" -TSX.E .HS 00 -TXA .DA TXA.E+1-* - >PSTR "TXA" - .HS FF - >PSTR "8A" -TXA.E .HS 00 -TXS .DA TXS.E+1-* - >PSTR "TXS" - .HS FF - >PSTR "9A" -TXS.E .HS 00 -TXY .DA TXY.E+1-* - >PSTR "TXY" - .HS FF - >PSTR "9B" -TXY.E .HS 00 -TYA .DA TYA.E+1-* - >PSTR "TYA" - .HS FF - >PSTR "98" -TYA.E .HS 00 -TYX .DA TYX.E+1-* - >PSTR "TYX" - .HS FF - >PSTR "BB" -TYX.E .HS 00 -WAI .DA WAI.E+1-* - >PSTR "WAI" - .HS FF - >PSTR "CB" -WAI.E .HS 00 -WDM .DA WDM.E+1-* - >PSTR "WDM" - .HS FF - >PSTR "42" -WDM.E .HS 00 -XBA .DA XBA.E+1-* - >PSTR "XBA" - .HS FF - >PSTR "EB" -XBA.E .HS 00 -XCE .DA XCE.E+1-* - >PSTR "XCE" - .HS FF - >PSTR "FB" +ADC .DA ADC.E+1-* + .DA #3,$$"ADC" + .DA #1,#3,$$"69a" + .DA #2,#3,$$"72a" + .DA #3,#3,$$"71a" + .DA #4,#3,$$"73a" + .DA #5,#3,$$"61a" + .DA #6,#3,$$"67a" + .DA #7,#3,$$"77a" + .DA #8,#3,$$"65a" + .DA #9,#3,$$"63a" + .DA #10,#3,$$"75a" + .DA #11,#4,$$"6Daa" + .DA #12,#4,$$"7Daa" + .DA #13,#4,$$"79aa" + .DA #14,#5,$$"6Faaa" + .DA #15,#5,$$"7Faaa" +ADC.E .HS 00 +AND .DA AND.E+1-* + .DA #3,$$"AND" + .DA #1,#3,$$"29a" + .DA #2,#3,$$"32a" + .DA #3,#3,$$"31a" + .DA #4,#3,$$"33a" + .DA #5,#3,$$"21a" + .DA #6,#3,$$"27a" + .DA #7,#3,$$"37a" + .DA #8,#3,$$"25a" + .DA #9,#3,$$"23a" + .DA #10,#3,$$"35a" + .DA #11,#4,$$"2Daa" + .DA #12,#4,$$"3Daa" + .DA #13,#4,$$"39aa" + .DA #14,#5,$$"2Faaa" + .DA #15,#5,$$"3Faaa" +AND.E .HS 00 +ASL .DA ASL.E+1-* + .DA #3,$$"ASL" + .DA #8,#3,$$"06a" + .DA #10,#3,$$"16a" + .DA #11,#4,$$"0Eaa" + .DA #12,#4,$$"1Eaa" + .DA #255,#2,$$"0A" +ASL.E .HS 00 +BCC .DA BCC.E+1-* + .DA #3,$$"BCC" + .DA #11,#3,$$"90r" +BCC.E .HS 00 +BCS .DA BCS.E+1-* + .DA #3,$$"BCS" + .DA #11,#3,$$"B0r" +BCS.E .HS 00 +BEQ .DA BEQ.E+1-* + .DA #3,$$"BEQ" + .DA #11,#3,$$"F0r" +BEQ.E .HS 00 +BIT .DA BIT.E+1-* + .DA #3,$$"BIT" + .DA #1,#3,$$"89a" + .DA #8,#3,$$"24a" + .DA #10,#3,$$"34a" + .DA #11,#4,$$"2Caa" + .DA #12,#4,$$"3Caa" +BIT.E .HS 00 +BMI .DA BMI.E+1-* + .DA #3,$$"BMI" + .DA #11,#3,$$"30r" +BMI.E .HS 00 +BNE .DA BNE.E+1-* + .DA #3,$$"BNE" + .DA #11,#3,$$"D0r" +BNE.E .HS 00 +BPL .DA BPL.E+1-* + .DA #3,$$"BPL" + .DA #11,#3,$$"10r" +BPL.E .HS 00 +BRA .DA BRA.E+1-* + .DA #3,$$"BRA" + .DA #11,#3,$$"80r" +BRA.E .HS 00 +BRK .DA BRK.E+1-* + .DA #3,$$"BRK" + .DA #255,#2,$$"00" +BRK.E .HS 00 +BRL .DA BRL.E+1-* + .DA #3,$$"BRL" + .DA #11,#4,$$"82rr" +BRL.E .HS 00 +BVC .DA BVC.E+1-* + .DA #3,$$"BVC" + .DA #11,#3,$$"50r" +BVC.E .HS 00 +BVS .DA BVS.E+1-* + .DA #3,$$"BVS" + .DA #11,#3,$$"70r" +BVS.E .HS 00 +CLC .DA CLC.E+1-* + .DA #3,$$"CLC" + .DA #255,#2,$$"18" +CLC.E .HS 00 +CLD .DA CLD.E+1-* + .DA #3,$$"CLD" + .DA #255,#2,$$"D8" +CLD.E .HS 00 +CLI .DA CLI.E+1-* + .DA #3,$$"CLI" + .DA #255,#2,$$"58" +CLI.E .HS 00 +CLV .DA CLV.E+1-* + .DA #3,$$"CLV" + .DA #255,#2,$$"B8" +CLV.E .HS 00 +CMP .DA CMP.E+1-* + .DA #3,$$"CMP" + .DA #1,#3,$$"C9a" + .DA #2,#3,$$"D2a" + .DA #3,#3,$$"D1a" + .DA #4,#3,$$"D3a" + .DA #5,#3,$$"C1a" + .DA #6,#3,$$"C7a" + .DA #7,#3,$$"D7a" + .DA #8,#3,$$"C5a" + .DA #9,#3,$$"C3a" + .DA #10,#3,$$"D5a" + .DA #11,#4,$$"CDaa" + .DA #12,#4,$$"DDaa" + .DA #13,#4,$$"D9aa" + .DA #14,#5,$$"CFaaa" + .DA #15,#5,$$"DFaaa" +CMP.E .HS 00 +COP .DA COP.E+1-* + .DA #3,$$"COP" + .DA #1,#3,$$"02a" +COP.E .HS 00 +CPX .DA CPX.E+1-* + .DA #3,$$"CPX" + .DA #1,#3,$$"E0a" + .DA #8,#3,$$"E4a" + .DA #11,#4,$$"ECaa" +CPX.E .HS 00 +CPY .DA CPY.E+1-* + .DA #3,$$"CPY" + .DA #1,#3,$$"C0a" + .DA #8,#3,$$"C4a" + .DA #11,#4,$$"CCaa" +CPY.E .HS 00 +DEC .DA DEC.E+1-* + .DA #3,$$"DEC" + .DA #8,#3,$$"C6a" + .DA #10,#3,$$"D6a" + .DA #11,#4,$$"CEaa" + .DA #12,#4,$$"DEaa" + .DA #255,#2,$$"3A" +DEC.E .HS 00 +DEX .DA DEX.E+1-* + .DA #3,$$"DEX" + .DA #255,#2,$$"CA" +DEX.E .HS 00 +DEY .DA DEY.E+1-* + .DA #3,$$"DEY" + .DA #255,#2,$$"88" +DEY.E .HS 00 +EOR .DA EOR.E+1-* + .DA #3,$$"EOR" + .DA #1,#3,$$"49a" + .DA #2,#3,$$"52a" + .DA #3,#3,$$"51a" + .DA #4,#3,$$"53a" + .DA #5,#3,$$"41a" + .DA #6,#3,$$"47a" + .DA #7,#3,$$"57a" + .DA #8,#3,$$"45a" + .DA #9,#3,$$"43a" + .DA #10,#3,$$"55a" + .DA #11,#4,$$"4Daa" + .DA #12,#4,$$"5Daa" + .DA #13,#4,$$"59aa" + .DA #14,#5,$$"4Faaa" + .DA #15,#5,$$"5Faaa" +EOR.E .HS 00 +INC .DA INC.E+1-* + .DA #3,$$"INC" + .DA #8,#3,$$"E6a" + .DA #10,#3,$$"F6a" + .DA #11,#4,$$"EEaa" + .DA #12,#4,$$"FEaa" + .DA #255,#2,$$"1A" +INC.E .HS 00 +INX .DA INX.E+1-* + .DA #3,$$"INX" + .DA #255,#2,$$"E8" +INX.E .HS 00 +INY .DA INY.E+1-* + .DA #3,$$"INY" + .DA #255,#2,$$"C8" +INY.E .HS 00 +JMP .DA JMP.E+1-* + .DA #3,$$"JMP" + .DA #16,#4,$$"6Caa" + .DA #17,#4,$$"7Caa" + .DA #18,#4,$$"DCaa" + .DA #11,#4,$$"4Caa" + .DA #14,#5,$$"5Caaa" +JMP.E .HS 00 +JSR .DA JSR.E+1-* + .DA #3,$$"JSR" + .DA #17,#4,$$"FCaa" + .DA #11,#4,$$"20aa" + .DA #14,#5,$$"22aaa" +JSR.E .HS 00 +LDA .DA LDA.E+1-* + .DA #3,$$"LDA" + .DA #1,#3,$$"A9a" + .DA #2,#3,$$"B2a" + .DA #3,#3,$$"B1a" + .DA #4,#3,$$"B3a" + .DA #5,#3,$$"A1a" + .DA #6,#3,$$"A7a" + .DA #7,#3,$$"B7a" + .DA #8,#3,$$"A5a" + .DA #9,#3,$$"A3a" + .DA #10,#3,$$"B5a" + .DA #11,#4,$$"ADaa" + .DA #12,#4,$$"BDaa" + .DA #13,#4,$$"B9aa" + .DA #14,#5,$$"AFaaa" + .DA #15,#5,$$"BFaaa" +LDA.E .HS 00 +LDX .DA LDX.E+1-* + .DA #3,$$"LDX" + .DA #1,#3,$$"A2a" + .DA #8,#3,$$"A6a" + .DA #19,#3,$$"B6a" + .DA #11,#4,$$"AEaa" + .DA #13,#4,$$"BEaa" +LDX.E .HS 00 +LDY .DA LDY.E+1-* + .DA #3,$$"LDY" + .DA #1,#3,$$"A0a" + .DA #8,#3,$$"A4a" + .DA #10,#3,$$"B4a" + .DA #11,#4,$$"ACaa" + .DA #12,#4,$$"BCaa" +LDY.E .HS 00 +LSR .DA LSR.E+1-* + .DA #3,$$"LSR" + .DA #8,#3,$$"46a" + .DA #10,#3,$$"56a" + .DA #11,#4,$$"4Eaa" + .DA #12,#4,$$"5Eaa" + .DA #255,#2,$$"4A" +LSR.E .HS 00 +MVN .DA MVN.E+1-* + .DA #3,$$"MVN" + .DA #20,#4,$$"54ab" +MVN.E .HS 00 +MVP .DA MVP.E+1-* + .DA #3,$$"MVP" + .DA #20,#4,$$"44ab" +MVP.E .HS 00 +NOP .DA NOP.E+1-* + .DA #3,$$"NOP" + .DA #255,#2,$$"EA" +NOP.E .HS 00 +ORA .DA ORA.E+1-* + .DA #3,$$"ORA" + .DA #1,#3,$$"09a" + .DA #2,#3,$$"12a" + .DA #3,#3,$$"11a" + .DA #4,#3,$$"13a" + .DA #5,#3,$$"01a" + .DA #6,#3,$$"07a" + .DA #7,#3,$$"17a" + .DA #8,#3,$$"05a" + .DA #9,#3,$$"03a" + .DA #10,#3,$$"15a" + .DA #11,#4,$$"0Daa" + .DA #12,#4,$$"1Daa" + .DA #13,#4,$$"19aa" + .DA #14,#5,$$"0Faaa" + .DA #15,#5,$$"1Faaa" +ORA.E .HS 00 +PEA .DA PEA.E+1-* + .DA #3,$$"PEA" + .DA #11,#4,$$"F4aa" +PEA.E .HS 00 +PEI .DA PEI.E+1-* + .DA #3,$$"PEI" + .DA #2,#3,$$"D4a" +PEI.E .HS 00 +PER .DA PER.E+1-* + .DA #3,$$"PER" + .DA #11,#4,$$"62rr" +PER.E .HS 00 +PHA .DA PHA.E+1-* + .DA #3,$$"PHA" + .DA #255,#2,$$"48" +PHA.E .HS 00 +PHB .DA PHB.E+1-* + .DA #3,$$"PHB" + .DA #255,#2,$$"8B" +PHB.E .HS 00 +PHD .DA PHD.E+1-* + .DA #3,$$"PHD" + .DA #255,#2,$$"0B" +PHD.E .HS 00 +PHK .DA PHK.E+1-* + .DA #3,$$"PHK" + .DA #255,#2,$$"4B" +PHK.E .HS 00 +PHP .DA PHP.E+1-* + .DA #3,$$"PHP" + .DA #255,#2,$$"08" +PHP.E .HS 00 +PHX .DA PHX.E+1-* + .DA #3,$$"PHX" + .DA #255,#2,$$"DA" +PHX.E .HS 00 +PHY .DA PHY.E+1-* + .DA #3,$$"PHY" + .DA #255,#2,$$"5A" +PHY.E .HS 00 +PLA .DA PLA.E+1-* + .DA #3,$$"PLA" + .DA #255,#2,$$"68" +PLA.E .HS 00 +PLB .DA PLB.E+1-* + .DA #3,$$"PLB" + .DA #255,#2,$$"AB" +PLB.E .HS 00 +PLD .DA PLD.E+1-* + .DA #3,$$"PLD" + .DA #255,#2,$$"2B" +PLD.E .HS 00 +PLP .DA PLP.E+1-* + .DA #3,$$"PLP" + .DA #255,#2,$$"28" +PLP.E .HS 00 +PLX .DA PLX.E+1-* + .DA #3,$$"PLX" + .DA #255,#2,$$"FA" +PLX.E .HS 00 +PLY .DA PLY.E+1-* + .DA #3,$$"PLY" + .DA #255,#2,$$"7A" +PLY.E .HS 00 +REP .DA REP.E+1-* + .DA #3,$$"REP" + .DA #1,#3,$$"C2a" +REP.E .HS 00 +ROL .DA ROL.E+1-* + .DA #3,$$"ROL" + .DA #8,#3,$$"26a" + .DA #10,#3,$$"36a" + .DA #11,#4,$$"2Eaa" + .DA #12,#4,$$"3Eaa" + .DA #255,#2,$$"2A" +ROL.E .HS 00 +ROR .DA ROR.E+1-* + .DA #3,$$"ROR" + .DA #8,#3,$$"66a" + .DA #10,#3,$$"76a" + .DA #11,#4,$$"6Eaa" + .DA #12,#4,$$"7Eaa" + .DA #255,#2,$$"6A" +ROR.E .HS 00 +RTI .DA RTI.E+1-* + .DA #3,$$"RTI" + .DA #255,#2,$$"40" +RTI.E .HS 00 +RTL .DA RTL.E+1-* + .DA #3,$$"RTL" + .DA #255,#2,$$"6B" +RTL.E .HS 00 +RTS .DA RTS.E+1-* + .DA #3,$$"RTS" + .DA #255,#2,$$"60" +RTS.E .HS 00 +SBC .DA SBC.E+1-* + .DA #3,$$"SBC" + .DA #1,#3,$$"E9a" + .DA #2,#3,$$"F2a" + .DA #3,#3,$$"F1a" + .DA #4,#3,$$"F3a" + .DA #5,#3,$$"E1a" + .DA #6,#3,$$"E7a" + .DA #7,#3,$$"F7a" + .DA #8,#3,$$"E5a" + .DA #9,#3,$$"E3a" + .DA #10,#3,$$"F5a" + .DA #11,#4,$$"EDaa" + .DA #12,#4,$$"FDaa" + .DA #13,#4,$$"F9aa" + .DA #14,#5,$$"EFaaa" + .DA #15,#5,$$"FFaaa" +SBC.E .HS 00 +SEC .DA SEC.E+1-* + .DA #3,$$"SEC" + .DA #255,#2,$$"38" +SEC.E .HS 00 +SED .DA SED.E+1-* + .DA #3,$$"SED" + .DA #255,#2,$$"F8" +SED.E .HS 00 +SEI .DA SEI.E+1-* + .DA #3,$$"SEI" + .DA #255,#2,$$"78" +SEI.E .HS 00 +SEP .DA SEP.E+1-* + .DA #3,$$"SEP" + .DA #255,#2,$$"E2" +SEP.E .HS 00 +STA .DA STA.E+1-* + .DA #3,$$"STA" + .DA #2,#3,$$"92a" + .DA #3,#3,$$"91a" + .DA #4,#3,$$"93a" + .DA #5,#3,$$"81a" + .DA #6,#3,$$"87a" + .DA #7,#3,$$"97a" + .DA #8,#3,$$"85a" + .DA #9,#3,$$"83a" + .DA #10,#3,$$"95a" + .DA #11,#4,$$"8Daa" + .DA #12,#4,$$"9Daa" + .DA #13,#4,$$"99aa" + .DA #14,#5,$$"8Faaa" + .DA #15,#5,$$"9Faaa" +STA.E .HS 00 +STP .DA STP.E+1-* + .DA #3,$$"STP" + .DA #255,#2,$$"DB" +STP.E .HS 00 +STX .DA STX.E+1-* + .DA #3,$$"STX" + .DA #8,#3,$$"86a" + .DA #19,#3,$$"96a" + .DA #11,#4,$$"8Eaa" +STX.E .HS 00 +STY .DA STY.E+1-* + .DA #3,$$"STY" + .DA #8,#3,$$"84a" + .DA #10,#3,$$"94a" + .DA #11,#4,$$"8Caa" +STY.E .HS 00 +STZ .DA STZ.E+1-* + .DA #3,$$"STZ" + .DA #8,#3,$$"64a" + .DA #10,#3,$$"74a" + .DA #11,#4,$$"9Caa" + .DA #12,#4,$$"9Eaa" +STZ.E .HS 00 +TAX .DA TAX.E+1-* + .DA #3,$$"TAX" + .DA #255,#2,$$"AA" +TAX.E .HS 00 +TAY .DA TAY.E+1-* + .DA #3,$$"TAY" + .DA #255,#2,$$"A8" +TAY.E .HS 00 +TCD .DA TCD.E+1-* + .DA #3,$$"TCD" + .DA #255,#2,$$"5B" +TCD.E .HS 00 +TCS .DA TCS.E+1-* + .DA #3,$$"TCS" + .DA #255,#2,$$"1B" +TCS.E .HS 00 +TDC .DA TDC.E+1-* + .DA #3,$$"TDC" + .DA #255,#2,$$"7B" +TDC.E .HS 00 +TRB .DA TRB.E+1-* + .DA #3,$$"TRB" + .DA #8,#3,$$"14a" + .DA #11,#4,$$"1Caa" +TRB.E .HS 00 +TSB .DA TSB.E+1-* + .DA #3,$$"TSB" + .DA #8,#3,$$"04a" + .DA #11,#4,$$"0Caa" +TSB.E .HS 00 +TSC .DA TSC.E+1-* + .DA #3,$$"TSC" + .DA #255,#2,$$"3B" +TSC.E .HS 00 +TSX .DA TSX.E+1-* + .DA #3,$$"TSX" + .DA #255,#2,$$"BA" +TSX.E .HS 00 +TXA .DA TXA.E+1-* + .DA #3,$$"TXA" + .DA #255,#2,$$"8A" +TXA.E .HS 00 +TXS .DA TXS.E+1-* + .DA #3,$$"TXS" + .DA #255,#2,$$"9A" +TXS.E .HS 00 +TXY .DA TXY.E+1-* + .DA #3,$$"TXY" + .DA #255,#2,$$"9B" +TXY.E .HS 00 +TYA .DA TYA.E+1-* + .DA #3,$$"TYA" + .DA #255,#2,$$"98" +TYA.E .HS 00 +TYX .DA TYX.E+1-* + .DA #3,$$"TYX" + .DA #255,#2,$$"BB" +TYX.E .HS 00 +WAI .DA WAI.E+1-* + .DA #3,$$"WAI" + .DA #255,#2,$$"CB" +WAI.E .HS 00 +WDM .DA WDM.E+1-* + .DA #3,$$"WDM" + .DA #255,#2,$$"42" +WDM.E .HS 00 +XBA .DA XBA.E+1-* + .DA #3,$$"XBA" + .DA #255,#2,$$"EB" +XBA.E .HS 00 +XCE .DA XCE.E+1-* + .DA #3,$$"XCE" + .DA #255,#2,$$"FB" XCE.E .HS 00 .HS 0000 *--------------------------------------- diff --git a/BIN/ASM.T.65816.S.txt b/BIN/ASM.T.65816.S.txt index 218df5f7..c9b8d080 100644 --- a/BIN/ASM.T.65816.S.txt +++ b/BIN/ASM.T.65816.S.txt @@ -4,12 +4,6 @@ AUTO 4,1 .LIST OFF .OR $0 .TF /A2OSX.BUILD/BIN/DEV/ASM.T.65816 -*--------------------------------------- - .MA PSTR - .DA #:1-*-1 - .AS "]1" -:1 .EQ * - .EM *--------------------------------------- .DA T.ADDR.MODES .DA T.REGISTERS diff --git a/BIN/ASM.T.65C02.A.txt b/BIN/ASM.T.65C02.A.txt index 86c0dc18..c3846344 100644 --- a/BIN/ASM.T.65C02.A.txt +++ b/BIN/ASM.T.65C02.A.txt @@ -3,23 +3,23 @@ PREFIX /A2OSX.BUILD AUTO 4,1 *--------------------------------------- T.ADDR.MODES .EQ * - >PSTR "#a" - >PSTR "(a)" - >PSTR "(a),Y" - >PSTR "(a,X)" - >PSTR "a" - >PSTR "a,X" - >PSTR "aa" - >PSTR "aa,X" - >PSTR "aa,Y" - >PSTR "(aa)" - >PSTR "(aa,X)" - >PSTR "a,Y" + .DA #2,$$"#a" + .DA #3,$$"(a)" + .DA #5,$$"(a),Y" + .DA #5,$$"(a,X)" + .DA #1,$$"a" + .DA #3,$$"a,X" + .DA #2,$$"aa" + .DA #4,$$"aa,X" + .DA #4,$$"aa,Y" + .DA #4,$$"(aa)" + .DA #6,$$"(aa,X)" + .DA #3,$$"a,Y" .HS 00 *--------------------------------------- T.REGISTERS .EQ * - >PSTR "Y" - >PSTR "X" + .DA #1,$$"Y" + .DA #1,$$"X" .HS 00 *--------------------------------------- MAN diff --git a/BIN/ASM.T.65C02.O.txt b/BIN/ASM.T.65C02.O.txt index cebd400f..83043aa6 100644 --- a/BIN/ASM.T.65C02.O.txt +++ b/BIN/ASM.T.65C02.O.txt @@ -3,563 +3,383 @@ PREFIX /A2OSX.BUILD AUTO 4,1 *--------------------------------------- T.OPCODES .EQ * -ADC .DA ADC.E+1-* - >PSTR "ADC" - .HS 01 - >PSTR "69a" - .HS 02 - >PSTR "72a" - .HS 03 - >PSTR "71a" - .HS 04 - >PSTR "61a" - .HS 05 - >PSTR "65a" - .HS 06 - >PSTR "75a" - .HS 07 - >PSTR "6Daa" - .HS 08 - >PSTR "7Daa" - .HS 09 - >PSTR "79aa" -ADC.E .HS 00 -AND .DA AND.E+1-* - >PSTR "AND" - .HS 01 - >PSTR "29a" - .HS 02 - >PSTR "32a" - .HS 03 - >PSTR "31a" - .HS 04 - >PSTR "21a" - .HS 05 - >PSTR "25a" - .HS 06 - >PSTR "35a" - .HS 07 - >PSTR "2Daa" - .HS 08 - >PSTR "3Daa" - .HS 09 - >PSTR "39aa" -AND.E .HS 00 -ASL .DA ASL.E+1-* - >PSTR "ASL" - .HS 05 - >PSTR "06a" - .HS 06 - >PSTR "16a" - .HS 07 - >PSTR "0Eaa" - .HS 08 - >PSTR "1Eaa" - .HS FF - >PSTR "0A" -ASL.E .HS 00 -BCC .DA BCC.E+1-* - >PSTR "BCC" - .HS 07 - >PSTR "90r" -BCC.E .HS 00 -BCS .DA BCS.E+1-* - >PSTR "BCS" - .HS 07 - >PSTR "B0r" -BCS.E .HS 00 -BEQ .DA BEQ.E+1-* - >PSTR "BEQ" - .HS 07 - >PSTR "F0r" -BEQ.E .HS 00 -BIT .DA BIT.E+1-* - >PSTR "BIT" - .HS 01 - >PSTR "89a" - .HS 05 - >PSTR "24a" - .HS 06 - >PSTR "34a" - .HS 07 - >PSTR "2Caa" - .HS 08 - >PSTR "3Caa" -BIT.E .HS 00 -BMI .DA BMI.E+1-* - >PSTR "BMI" - .HS 07 - >PSTR "30r" -BMI.E .HS 00 -BNE .DA BNE.E+1-* - >PSTR "BNE" - .HS 07 - >PSTR "D0r" -BNE.E .HS 00 -BPL .DA BPL.E+1-* - >PSTR "BPL" - .HS 07 - >PSTR "10r" -BPL.E .HS 00 -BRA .DA BRA.E+1-* - >PSTR "BRA" - .HS 07 - >PSTR "80r" -BRA.E .HS 00 -BRK .DA BRK.E+1-* - >PSTR "BRK" - .HS FF - >PSTR "00" -BRK.E .HS 00 -BVC .DA BVC.E+1-* - >PSTR "BVC" - .HS 07 - >PSTR "50r" -BVC.E .HS 00 -BVS .DA BVS.E+1-* - >PSTR "BVS" - .HS 07 - >PSTR "70r" -BVS.E .HS 00 -CLC .DA CLC.E+1-* - >PSTR "CLC" - .HS FF - >PSTR "18" -CLC.E .HS 00 -CLD .DA CLD.E+1-* - >PSTR "CLD" - .HS FF - >PSTR "D8" -CLD.E .HS 00 -CLI .DA CLI.E+1-* - >PSTR "CLI" - .HS FF - >PSTR "58" -CLI.E .HS 00 -CLV .DA CLV.E+1-* - >PSTR "CLV" - .HS FF - >PSTR "B8" -CLV.E .HS 00 -CMP .DA CMP.E+1-* - >PSTR "CMP" - .HS 01 - >PSTR "C9a" - .HS 02 - >PSTR "D2a" - .HS 03 - >PSTR "D1a" - .HS 04 - >PSTR "C1a" - .HS 05 - >PSTR "C5a" - .HS 06 - >PSTR "D5a" - .HS 07 - >PSTR "CDaa" - .HS 08 - >PSTR "DDaa" - .HS 09 - >PSTR "D9aa" -CMP.E .HS 00 -CPX .DA CPX.E+1-* - >PSTR "CPX" - .HS 01 - >PSTR "E0a" - .HS 05 - >PSTR "E4a" - .HS 07 - >PSTR "ECaa" -CPX.E .HS 00 -CPY .DA CPY.E+1-* - >PSTR "CPY" - .HS 01 - >PSTR "C0a" - .HS 05 - >PSTR "C4a" - .HS 07 - >PSTR "CCaa" -CPY.E .HS 00 -DEC .DA DEC.E+1-* - >PSTR "DEC" - .HS 05 - >PSTR "C6a" - .HS 06 - >PSTR "D6a" - .HS 07 - >PSTR "CEaa" - .HS 08 - >PSTR "DEaa" - .HS FF - >PSTR "3A" -DEC.E .HS 00 -DEX .DA DEX.E+1-* - >PSTR "DEX" - .HS FF - >PSTR "CA" -DEX.E .HS 00 -DEY .DA DEY.E+1-* - >PSTR "DEY" - .HS FF - >PSTR "88" -DEY.E .HS 00 -EOR .DA EOR.E+1-* - >PSTR "EOR" - .HS 01 - >PSTR "49a" - .HS 02 - >PSTR "52a" - .HS 03 - >PSTR "51a" - .HS 04 - >PSTR "41a" - .HS 05 - >PSTR "45a" - .HS 06 - >PSTR "55a" - .HS 07 - >PSTR "4Daa" - .HS 08 - >PSTR "5Daa" - .HS 09 - >PSTR "59aa" -EOR.E .HS 00 -INC .DA INC.E+1-* - >PSTR "INC" - .HS 05 - >PSTR "E6a" - .HS 06 - >PSTR "F6a" - .HS 07 - >PSTR "EEaa" - .HS 08 - >PSTR "FEaa" - .HS FF - >PSTR "1A" -INC.E .HS 00 -INX .DA INX.E+1-* - >PSTR "INX" - .HS FF - >PSTR "E8" -INX.E .HS 00 -INY .DA INY.E+1-* - >PSTR "INY" - .HS FF - >PSTR "C8" -INY.E .HS 00 -JMP .DA JMP.E+1-* - >PSTR "JMP" - .HS 0A - >PSTR "6Caa" - .HS 0B - >PSTR "7Caa" - .HS 07 - >PSTR "4Caa" -JMP.E .HS 00 -JSR .DA JSR.E+1-* - >PSTR "JSR" - .HS 07 - >PSTR "20aa" -JSR.E .HS 00 -LDA .DA LDA.E+1-* - >PSTR "LDA" - .HS 01 - >PSTR "A9a" - .HS 02 - >PSTR "B2a" - .HS 03 - >PSTR "B1a" - .HS 04 - >PSTR "A1a" - .HS 05 - >PSTR "A5a" - .HS 06 - >PSTR "B5a" - .HS 07 - >PSTR "ADaa" - .HS 08 - >PSTR "BDaa" - .HS 09 - >PSTR "B9aa" -LDA.E .HS 00 -LDX .DA LDX.E+1-* - >PSTR "LDX" - .HS 01 - >PSTR "A2a" - .HS 05 - >PSTR "A6a" - .HS 0C - >PSTR "B6a" - .HS 07 - >PSTR "AEaa" - .HS 09 - >PSTR "BEaa" -LDX.E .HS 00 -LDY .DA LDY.E+1-* - >PSTR "LDY" - .HS 01 - >PSTR "A0a" - .HS 05 - >PSTR "A4a" - .HS 06 - >PSTR "B4a" - .HS 07 - >PSTR "ACaa" - .HS 08 - >PSTR "BCaa" -LDY.E .HS 00 -LSR .DA LSR.E+1-* - >PSTR "LSR" - .HS 05 - >PSTR "46a" - .HS 06 - >PSTR "56a" - .HS 07 - >PSTR "4Eaa" - .HS 08 - >PSTR "5Eaa" - .HS FF - >PSTR "4A" -LSR.E .HS 00 -NOP .DA NOP.E+1-* - >PSTR "NOP" - .HS FF - >PSTR "EA" -NOP.E .HS 00 -ORA .DA ORA.E+1-* - >PSTR "ORA" - .HS 01 - >PSTR "09a" - .HS 02 - >PSTR "12a" - .HS 03 - >PSTR "11a" - .HS 04 - >PSTR "01a" - .HS 05 - >PSTR "05a" - .HS 06 - >PSTR "15a" - .HS 07 - >PSTR "0Daa" - .HS 08 - >PSTR "1Daa" - .HS 09 - >PSTR "19aa" -ORA.E .HS 00 -PHA .DA PHA.E+1-* - >PSTR "PHA" - .HS FF - >PSTR "48" -PHA.E .HS 00 -PHP .DA PHP.E+1-* - >PSTR "PHP" - .HS FF - >PSTR "08" -PHP.E .HS 00 -PHX .DA PHX.E+1-* - >PSTR "PHX" - .HS FF - >PSTR "DA" -PHX.E .HS 00 -PHY .DA PHY.E+1-* - >PSTR "PHY" - .HS FF - >PSTR "5A" -PHY.E .HS 00 -PLA .DA PLA.E+1-* - >PSTR "PLA" - .HS FF - >PSTR "68" -PLA.E .HS 00 -PLP .DA PLP.E+1-* - >PSTR "PLP" - .HS FF - >PSTR "28" -PLP.E .HS 00 -PLX .DA PLX.E+1-* - >PSTR "PLX" - .HS FF - >PSTR "FA" -PLX.E .HS 00 -PLY .DA PLY.E+1-* - >PSTR "PLY" - .HS FF - >PSTR "7A" -PLY.E .HS 00 -ROL .DA ROL.E+1-* - >PSTR "ROL" - .HS 05 - >PSTR "26a" - .HS 06 - >PSTR "36a" - .HS 07 - >PSTR "2Eaa" - .HS 08 - >PSTR "3Eaa" - .HS FF - >PSTR "2A" -ROL.E .HS 00 -ROR .DA ROR.E+1-* - >PSTR "ROR" - .HS 05 - >PSTR "66a" - .HS 06 - >PSTR "76a" - .HS 07 - >PSTR "6Eaa" - .HS 08 - >PSTR "7Eaa" - .HS FF - >PSTR "6A" -ROR.E .HS 00 -RTI .DA RTI.E+1-* - >PSTR "RTI" - .HS FF - >PSTR "40" -RTI.E .HS 00 -RTS .DA RTS.E+1-* - >PSTR "RTS" - .HS FF - >PSTR "60" -RTS.E .HS 00 -SBC .DA SBC.E+1-* - >PSTR "SBC" - .HS 01 - >PSTR "E9a" - .HS 02 - >PSTR "F2a" - .HS 03 - >PSTR "F1a" - .HS 04 - >PSTR "E1a" - .HS 05 - >PSTR "E5a" - .HS 06 - >PSTR "F5a" - .HS 07 - >PSTR "EDaa" - .HS 08 - >PSTR "FDaa" - .HS 09 - >PSTR "F9aa" -SBC.E .HS 00 -SEC .DA SEC.E+1-* - >PSTR "SEC" - .HS FF - >PSTR "38" -SEC.E .HS 00 -SED .DA SED.E+1-* - >PSTR "SED" - .HS FF - >PSTR "F8" -SED.E .HS 00 -SEI .DA SEI.E+1-* - >PSTR "SEI" - .HS FF - >PSTR "78" -SEI.E .HS 00 -STA .DA STA.E+1-* - >PSTR "STA" - .HS 02 - >PSTR "92a" - .HS 03 - >PSTR "91a" - .HS 04 - >PSTR "81a" - .HS 05 - >PSTR "85a" - .HS 06 - >PSTR "95a" - .HS 07 - >PSTR "8Daa" - .HS 08 - >PSTR "9Daa" - .HS 09 - >PSTR "99aa" -STA.E .HS 00 -STP .DA STP.E+1-* - >PSTR "STP" - .HS FF - >PSTR "DB" -STP.E .HS 00 -STX .DA STX.E+1-* - >PSTR "STX" - .HS 05 - >PSTR "86a" - .HS 0C - >PSTR "96a" - .HS 07 - >PSTR "8Eaa" -STX.E .HS 00 -STY .DA STY.E+1-* - >PSTR "STY" - .HS 05 - >PSTR "84a" - .HS 06 - >PSTR "94a" - .HS 07 - >PSTR "8Caa" -STY.E .HS 00 -STZ .DA STZ.E+1-* - >PSTR "STZ" - .HS 05 - >PSTR "64a" - .HS 06 - >PSTR "74a" - .HS 07 - >PSTR "9Caa" - .HS 08 - >PSTR "9Eaa" -STZ.E .HS 00 -TAX .DA TAX.E+1-* - >PSTR "TAX" - .HS FF - >PSTR "AA" -TAX.E .HS 00 -TAY .DA TAY.E+1-* - >PSTR "TAY" - .HS FF - >PSTR "A8" -TAY.E .HS 00 -TRB .DA TRB.E+1-* - >PSTR "TRB" - .HS 05 - >PSTR "14a" - .HS 07 - >PSTR "1Caa" -TRB.E .HS 00 -TSB .DA TSB.E+1-* - >PSTR "TSB" - .HS 05 - >PSTR "04a" - .HS 07 - >PSTR "0Caa" -TSB.E .HS 00 -TSX .DA TSX.E+1-* - >PSTR "TSX" - .HS FF - >PSTR "BA" -TSX.E .HS 00 -TXA .DA TXA.E+1-* - >PSTR "TXA" - .HS FF - >PSTR "8A" -TXA.E .HS 00 -TXS .DA TXS.E+1-* - >PSTR "TXS" - .HS FF - >PSTR "9A" -TXS.E .HS 00 -TYA .DA TYA.E+1-* - >PSTR "TYA" - .HS FF - >PSTR "98" -TYA.E .HS 00 -WAI .DA WAI.E+1-* - >PSTR "WAI" - .HS FF - >PSTR "CB" +ADC .DA ADC.E+1-* + .DA #3,$$"ADC" + .DA #1,#3,$$"69a" + .DA #2,#3,$$"72a" + .DA #3,#3,$$"71a" + .DA #4,#3,$$"61a" + .DA #5,#3,$$"65a" + .DA #6,#3,$$"75a" + .DA #7,#4,$$"6Daa" + .DA #8,#4,$$"7Daa" + .DA #9,#4,$$"79aa" +ADC.E .HS 00 +AND .DA AND.E+1-* + .DA #3,$$"AND" + .DA #1,#3,$$"29a" + .DA #2,#3,$$"32a" + .DA #3,#3,$$"31a" + .DA #4,#3,$$"21a" + .DA #5,#3,$$"25a" + .DA #6,#3,$$"35a" + .DA #7,#4,$$"2Daa" + .DA #8,#4,$$"3Daa" + .DA #9,#4,$$"39aa" +AND.E .HS 00 +ASL .DA ASL.E+1-* + .DA #3,$$"ASL" + .DA #5,#3,$$"06a" + .DA #6,#3,$$"16a" + .DA #7,#4,$$"0Eaa" + .DA #8,#4,$$"1Eaa" + .DA #255,#2,$$"0A" +ASL.E .HS 00 +BCC .DA BCC.E+1-* + .DA #3,$$"BCC" + .DA #7,#3,$$"90r" +BCC.E .HS 00 +BCS .DA BCS.E+1-* + .DA #3,$$"BCS" + .DA #7,#3,$$"B0r" +BCS.E .HS 00 +BEQ .DA BEQ.E+1-* + .DA #3,$$"BEQ" + .DA #7,#3,$$"F0r" +BEQ.E .HS 00 +BIT .DA BIT.E+1-* + .DA #3,$$"BIT" + .DA #1,#3,$$"89a" + .DA #5,#3,$$"24a" + .DA #6,#3,$$"34a" + .DA #7,#4,$$"2Caa" + .DA #8,#4,$$"3Caa" +BIT.E .HS 00 +BMI .DA BMI.E+1-* + .DA #3,$$"BMI" + .DA #7,#3,$$"30r" +BMI.E .HS 00 +BNE .DA BNE.E+1-* + .DA #3,$$"BNE" + .DA #7,#3,$$"D0r" +BNE.E .HS 00 +BPL .DA BPL.E+1-* + .DA #3,$$"BPL" + .DA #7,#3,$$"10r" +BPL.E .HS 00 +BRA .DA BRA.E+1-* + .DA #3,$$"BRA" + .DA #7,#3,$$"80r" +BRA.E .HS 00 +BRK .DA BRK.E+1-* + .DA #3,$$"BRK" + .DA #255,#2,$$"00" +BRK.E .HS 00 +BVC .DA BVC.E+1-* + .DA #3,$$"BVC" + .DA #7,#3,$$"50r" +BVC.E .HS 00 +BVS .DA BVS.E+1-* + .DA #3,$$"BVS" + .DA #7,#3,$$"70r" +BVS.E .HS 00 +CLC .DA CLC.E+1-* + .DA #3,$$"CLC" + .DA #255,#2,$$"18" +CLC.E .HS 00 +CLD .DA CLD.E+1-* + .DA #3,$$"CLD" + .DA #255,#2,$$"D8" +CLD.E .HS 00 +CLI .DA CLI.E+1-* + .DA #3,$$"CLI" + .DA #255,#2,$$"58" +CLI.E .HS 00 +CLV .DA CLV.E+1-* + .DA #3,$$"CLV" + .DA #255,#2,$$"B8" +CLV.E .HS 00 +CMP .DA CMP.E+1-* + .DA #3,$$"CMP" + .DA #1,#3,$$"C9a" + .DA #2,#3,$$"D2a" + .DA #3,#3,$$"D1a" + .DA #4,#3,$$"C1a" + .DA #5,#3,$$"C5a" + .DA #6,#3,$$"D5a" + .DA #7,#4,$$"CDaa" + .DA #8,#4,$$"DDaa" + .DA #9,#4,$$"D9aa" +CMP.E .HS 00 +CPX .DA CPX.E+1-* + .DA #3,$$"CPX" + .DA #1,#3,$$"E0a" + .DA #5,#3,$$"E4a" + .DA #7,#4,$$"ECaa" +CPX.E .HS 00 +CPY .DA CPY.E+1-* + .DA #3,$$"CPY" + .DA #1,#3,$$"C0a" + .DA #5,#3,$$"C4a" + .DA #7,#4,$$"CCaa" +CPY.E .HS 00 +DEC .DA DEC.E+1-* + .DA #3,$$"DEC" + .DA #5,#3,$$"C6a" + .DA #6,#3,$$"D6a" + .DA #7,#4,$$"CEaa" + .DA #8,#4,$$"DEaa" + .DA #255,#2,$$"3A" +DEC.E .HS 00 +DEX .DA DEX.E+1-* + .DA #3,$$"DEX" + .DA #255,#2,$$"CA" +DEX.E .HS 00 +DEY .DA DEY.E+1-* + .DA #3,$$"DEY" + .DA #255,#2,$$"88" +DEY.E .HS 00 +EOR .DA EOR.E+1-* + .DA #3,$$"EOR" + .DA #1,#3,$$"49a" + .DA #2,#3,$$"52a" + .DA #3,#3,$$"51a" + .DA #4,#3,$$"41a" + .DA #5,#3,$$"45a" + .DA #6,#3,$$"55a" + .DA #7,#4,$$"4Daa" + .DA #8,#4,$$"5Daa" + .DA #9,#4,$$"59aa" +EOR.E .HS 00 +INC .DA INC.E+1-* + .DA #3,$$"INC" + .DA #5,#3,$$"E6a" + .DA #6,#3,$$"F6a" + .DA #7,#4,$$"EEaa" + .DA #8,#4,$$"FEaa" + .DA #255,#2,$$"1A" +INC.E .HS 00 +INX .DA INX.E+1-* + .DA #3,$$"INX" + .DA #255,#2,$$"E8" +INX.E .HS 00 +INY .DA INY.E+1-* + .DA #3,$$"INY" + .DA #255,#2,$$"C8" +INY.E .HS 00 +JMP .DA JMP.E+1-* + .DA #3,$$"JMP" + .DA #10,#4,$$"6Caa" + .DA #11,#4,$$"7Caa" + .DA #7,#4,$$"4Caa" +JMP.E .HS 00 +JSR .DA JSR.E+1-* + .DA #3,$$"JSR" + .DA #7,#4,$$"20aa" +JSR.E .HS 00 +LDA .DA LDA.E+1-* + .DA #3,$$"LDA" + .DA #1,#3,$$"A9a" + .DA #2,#3,$$"B2a" + .DA #3,#3,$$"B1a" + .DA #4,#3,$$"A1a" + .DA #5,#3,$$"A5a" + .DA #6,#3,$$"B5a" + .DA #7,#4,$$"ADaa" + .DA #8,#4,$$"BDaa" + .DA #9,#4,$$"B9aa" +LDA.E .HS 00 +LDX .DA LDX.E+1-* + .DA #3,$$"LDX" + .DA #1,#3,$$"A2a" + .DA #5,#3,$$"A6a" + .DA #12,#3,$$"B6a" + .DA #7,#4,$$"AEaa" + .DA #9,#4,$$"BEaa" +LDX.E .HS 00 +LDY .DA LDY.E+1-* + .DA #3,$$"LDY" + .DA #1,#3,$$"A0a" + .DA #5,#3,$$"A4a" + .DA #6,#3,$$"B4a" + .DA #7,#4,$$"ACaa" + .DA #8,#4,$$"BCaa" +LDY.E .HS 00 +LSR .DA LSR.E+1-* + .DA #3,$$"LSR" + .DA #5,#3,$$"46a" + .DA #6,#3,$$"56a" + .DA #7,#4,$$"4Eaa" + .DA #8,#4,$$"5Eaa" + .DA #255,#2,$$"4A" +LSR.E .HS 00 +NOP .DA NOP.E+1-* + .DA #3,$$"NOP" + .DA #255,#2,$$"EA" +NOP.E .HS 00 +ORA .DA ORA.E+1-* + .DA #3,$$"ORA" + .DA #1,#3,$$"09a" + .DA #2,#3,$$"12a" + .DA #3,#3,$$"11a" + .DA #4,#3,$$"01a" + .DA #5,#3,$$"05a" + .DA #6,#3,$$"15a" + .DA #7,#4,$$"0Daa" + .DA #8,#4,$$"1Daa" + .DA #9,#4,$$"19aa" +ORA.E .HS 00 +PHA .DA PHA.E+1-* + .DA #3,$$"PHA" + .DA #255,#2,$$"48" +PHA.E .HS 00 +PHP .DA PHP.E+1-* + .DA #3,$$"PHP" + .DA #255,#2,$$"08" +PHP.E .HS 00 +PHX .DA PHX.E+1-* + .DA #3,$$"PHX" + .DA #255,#2,$$"DA" +PHX.E .HS 00 +PHY .DA PHY.E+1-* + .DA #3,$$"PHY" + .DA #255,#2,$$"5A" +PHY.E .HS 00 +PLA .DA PLA.E+1-* + .DA #3,$$"PLA" + .DA #255,#2,$$"68" +PLA.E .HS 00 +PLP .DA PLP.E+1-* + .DA #3,$$"PLP" + .DA #255,#2,$$"28" +PLP.E .HS 00 +PLX .DA PLX.E+1-* + .DA #3,$$"PLX" + .DA #255,#2,$$"FA" +PLX.E .HS 00 +PLY .DA PLY.E+1-* + .DA #3,$$"PLY" + .DA #255,#2,$$"7A" +PLY.E .HS 00 +ROL .DA ROL.E+1-* + .DA #3,$$"ROL" + .DA #5,#3,$$"26a" + .DA #6,#3,$$"36a" + .DA #7,#4,$$"2Eaa" + .DA #8,#4,$$"3Eaa" + .DA #255,#2,$$"2A" +ROL.E .HS 00 +ROR .DA ROR.E+1-* + .DA #3,$$"ROR" + .DA #5,#3,$$"66a" + .DA #6,#3,$$"76a" + .DA #7,#4,$$"6Eaa" + .DA #8,#4,$$"7Eaa" + .DA #255,#2,$$"6A" +ROR.E .HS 00 +RTI .DA RTI.E+1-* + .DA #3,$$"RTI" + .DA #255,#2,$$"40" +RTI.E .HS 00 +RTS .DA RTS.E+1-* + .DA #3,$$"RTS" + .DA #255,#2,$$"60" +RTS.E .HS 00 +SBC .DA SBC.E+1-* + .DA #3,$$"SBC" + .DA #1,#3,$$"E9a" + .DA #2,#3,$$"F2a" + .DA #3,#3,$$"F1a" + .DA #4,#3,$$"E1a" + .DA #5,#3,$$"E5a" + .DA #6,#3,$$"F5a" + .DA #7,#4,$$"EDaa" + .DA #8,#4,$$"FDaa" + .DA #9,#4,$$"F9aa" +SBC.E .HS 00 +SEC .DA SEC.E+1-* + .DA #3,$$"SEC" + .DA #255,#2,$$"38" +SEC.E .HS 00 +SED .DA SED.E+1-* + .DA #3,$$"SED" + .DA #255,#2,$$"F8" +SED.E .HS 00 +SEI .DA SEI.E+1-* + .DA #3,$$"SEI" + .DA #255,#2,$$"78" +SEI.E .HS 00 +STA .DA STA.E+1-* + .DA #3,$$"STA" + .DA #2,#3,$$"92a" + .DA #3,#3,$$"91a" + .DA #4,#3,$$"81a" + .DA #5,#3,$$"85a" + .DA #6,#3,$$"95a" + .DA #7,#4,$$"8Daa" + .DA #8,#4,$$"9Daa" + .DA #9,#4,$$"99aa" +STA.E .HS 00 +STP .DA STP.E+1-* + .DA #3,$$"STP" + .DA #255,#2,$$"DB" +STP.E .HS 00 +STX .DA STX.E+1-* + .DA #3,$$"STX" + .DA #5,#3,$$"86a" + .DA #12,#3,$$"96a" + .DA #7,#4,$$"8Eaa" +STX.E .HS 00 +STY .DA STY.E+1-* + .DA #3,$$"STY" + .DA #5,#3,$$"84a" + .DA #6,#3,$$"94a" + .DA #7,#4,$$"8Caa" +STY.E .HS 00 +STZ .DA STZ.E+1-* + .DA #3,$$"STZ" + .DA #5,#3,$$"64a" + .DA #6,#3,$$"74a" + .DA #7,#4,$$"9Caa" + .DA #8,#4,$$"9Eaa" +STZ.E .HS 00 +TAX .DA TAX.E+1-* + .DA #3,$$"TAX" + .DA #255,#2,$$"AA" +TAX.E .HS 00 +TAY .DA TAY.E+1-* + .DA #3,$$"TAY" + .DA #255,#2,$$"A8" +TAY.E .HS 00 +TRB .DA TRB.E+1-* + .DA #3,$$"TRB" + .DA #5,#3,$$"14a" + .DA #7,#4,$$"1Caa" +TRB.E .HS 00 +TSB .DA TSB.E+1-* + .DA #3,$$"TSB" + .DA #5,#3,$$"04a" + .DA #7,#4,$$"0Caa" +TSB.E .HS 00 +TSX .DA TSX.E+1-* + .DA #3,$$"TSX" + .DA #255,#2,$$"BA" +TSX.E .HS 00 +TXA .DA TXA.E+1-* + .DA #3,$$"TXA" + .DA #255,#2,$$"8A" +TXA.E .HS 00 +TXS .DA TXS.E+1-* + .DA #3,$$"TXS" + .DA #255,#2,$$"9A" +TXS.E .HS 00 +TYA .DA TYA.E+1-* + .DA #3,$$"TYA" + .DA #255,#2,$$"98" +TYA.E .HS 00 +WAI .DA WAI.E+1-* + .DA #3,$$"WAI" + .DA #255,#2,$$"CB" WAI.E .HS 00 .HS 0000 *--------------------------------------- diff --git a/BIN/ASM.T.65C02.S.txt b/BIN/ASM.T.65C02.S.txt index 5d9fc267..2f61a681 100644 --- a/BIN/ASM.T.65C02.S.txt +++ b/BIN/ASM.T.65C02.S.txt @@ -4,12 +4,6 @@ AUTO 4,1 .LIST OFF .OR $0 .TF /A2OSX.BUILD/BIN/DEV/ASM.T.65C02 -*--------------------------------------- - .MA PSTR - .DA #:1-*-1 - .AS "]1" -:1 .EQ * - .EM *--------------------------------------- .DA T.ADDR.MODES .DA T.REGISTERS diff --git a/BIN/ASM.T.65R02.A.txt b/BIN/ASM.T.65R02.A.txt index 3e4f8934..6213433d 100644 --- a/BIN/ASM.T.65R02.A.txt +++ b/BIN/ASM.T.65R02.A.txt @@ -3,24 +3,24 @@ PREFIX /A2OSX.BUILD AUTO 4,1 *--------------------------------------- T.ADDR.MODES .EQ * - >PSTR "#a" - >PSTR "(a)" - >PSTR "(a),Y" - >PSTR "(a,X)" - >PSTR "a" - >PSTR "a,X" - >PSTR "aa" - >PSTR "aa,X" - >PSTR "aa,Y" - >PSTR "a,bb" - >PSTR "(aa)" - >PSTR "(aa,x)" - >PSTR "a,Y" + .DA #2,$$"#a" + .DA #3,$$"(a)" + .DA #5,$$"(a),Y" + .DA #5,$$"(a,X)" + .DA #1,$$"a" + .DA #3,$$"a,X" + .DA #2,$$"aa" + .DA #4,$$"aa,X" + .DA #4,$$"aa,Y" + .DA #4,$$"a,bb" + .DA #4,$$"(aa)" + .DA #6,$$"(aa,x)" + .DA #3,$$"a,Y" .HS 00 *--------------------------------------- T.REGISTERS .EQ * - >PSTR "Y" - >PSTR "X" + .DA #1,$$"Y" + .DA #1,$$"X" .HS 00 *--------------------------------------- MAN diff --git a/BIN/ASM.T.65R02.O.txt b/BIN/ASM.T.65R02.O.txt index ec390c64..81e6cdbb 100644 --- a/BIN/ASM.T.65R02.O.txt +++ b/BIN/ASM.T.65R02.O.txt @@ -3,713 +3,503 @@ PREFIX /A2OSX.BUILD AUTO 4,1 *--------------------------------------- T.OPCODES .EQ * -ADC .DA ADC.E+1-* - >PSTR "ADC" - .HS 01 - >PSTR "69a" - .HS 02 - >PSTR "72a" - .HS 03 - >PSTR "71a" - .HS 04 - >PSTR "61a" - .HS 05 - >PSTR "65a" - .HS 06 - >PSTR "75a" - .HS 07 - >PSTR "6Daa" - .HS 08 - >PSTR "7Daa" - .HS 09 - >PSTR "79aa" -ADC.E .HS 00 -AND .DA AND.E+1-* - >PSTR "AND" - .HS 01 - >PSTR "29a" - .HS 02 - >PSTR "32a" - .HS 03 - >PSTR "31a" - .HS 04 - >PSTR "21a" - .HS 05 - >PSTR "25a" - .HS 06 - >PSTR "35a" - .HS 07 - >PSTR "2Daa" - .HS 08 - >PSTR "3Daa" - .HS 09 - >PSTR "39aa" -AND.E .HS 00 -ASL .DA ASL.E+1-* - >PSTR "ASL" - .HS 05 - >PSTR "06a" - .HS 06 - >PSTR "16a" - .HS 07 - >PSTR "0Eaa" - .HS 08 - >PSTR "1Eaa" - .HS FF - >PSTR "0A" -ASL.E .HS 00 -BBR0 .DA BBR0.E+1-* - >PSTR "BBR0" - .HS 0A - >PSTR "0Far" -BBR0.E .HS 00 -BBR1 .DA BBR1.E+1-* - >PSTR "BBR1" - .HS 0A - >PSTR "1Far" -BBR1.E .HS 00 -BBR2 .DA BBR2.E+1-* - >PSTR "BBR2" - .HS 0A - >PSTR "2Far" -BBR2.E .HS 00 -BBR3 .DA BBR3.E+1-* - >PSTR "BBR3" - .HS 0A - >PSTR "3Far" -BBR3.E .HS 00 -BBR4 .DA BBR4.E+1-* - >PSTR "BBR4" - .HS 0A - >PSTR "4Far" -BBR4.E .HS 00 -BBR5 .DA BBR5.E+1-* - >PSTR "BBR5" - .HS 0A - >PSTR "5Far" -BBR5.E .HS 00 -BBR6 .DA BBR6.E+1-* - >PSTR "BBR6" - .HS 0A - >PSTR "6Far" -BBR6.E .HS 00 -BBR7 .DA BBR7.E+1-* - >PSTR "BBR7" - .HS 0A - >PSTR "7Far" -BBR7.E .HS 00 -BBS0 .DA BBS0.E+1-* - >PSTR "BBS0" - .HS 0A - >PSTR "8Far" -BBS0.E .HS 00 -BBS1 .DA BBS1.E+1-* - >PSTR "BBS1" - .HS 0A - >PSTR "9Far" -BBS1.E .HS 00 -BBS2 .DA BBS2.E+1-* - >PSTR "BBS2" - .HS 0A - >PSTR "AFar" -BBS2.E .HS 00 -BBS3 .DA BBS3.E+1-* - >PSTR "BBS3" - .HS 0A - >PSTR "BFar" -BBS3.E .HS 00 -BBS4 .DA BBS4.E+1-* - >PSTR "BBS4" - .HS 0A - >PSTR "CFar" -BBS4.E .HS 00 -BBS5 .DA BBS5.E+1-* - >PSTR "BBS5" - .HS 0A - >PSTR "DFar" -BBS5.E .HS 00 -BBS6 .DA BBS6.E+1-* - >PSTR "BBS6" - .HS 0A - >PSTR "EFar" -BBS6.E .HS 00 -BBS7 .DA BBS7.E+1-* - >PSTR "BBS7" - .HS 0A - >PSTR "FFar" -BBS7.E .HS 00 -BCC .DA BCC.E+1-* - >PSTR "BCC" - .HS 07 - >PSTR "90r" -BCC.E .HS 00 -BCS .DA BCS.E+1-* - >PSTR "BCS" - .HS 07 - >PSTR "B0r" -BCS.E .HS 00 -BEQ .DA BEQ.E+1-* - >PSTR "BEQ" - .HS 07 - >PSTR "F0r" -BEQ.E .HS 00 -BIT .DA BIT.E+1-* - >PSTR "BIT" - .HS 01 - >PSTR "89a" - .HS 05 - >PSTR "24a" - .HS 06 - >PSTR "34a" - .HS 07 - >PSTR "2Caa" - .HS 08 - >PSTR "3Caa" -BIT.E .HS 00 -BMI .DA BMI.E+1-* - >PSTR "BMI" - .HS 07 - >PSTR "30r" -BMI.E .HS 00 -BNE .DA BNE.E+1-* - >PSTR "BNE" - .HS 07 - >PSTR "D0r" -BNE.E .HS 00 -BPL .DA BPL.E+1-* - >PSTR "BPL" - .HS 07 - >PSTR "10r" -BPL.E .HS 00 -BRA .DA BRA.E+1-* - >PSTR "BRA" - .HS 07 - >PSTR "80r" -BRA.E .HS 00 -BRK .DA BRK.E+1-* - >PSTR "BRK" - .HS FF - >PSTR "00" -BRK.E .HS 00 -BVC .DA BVC.E+1-* - >PSTR "BVC" - .HS 07 - >PSTR "50r" -BVC.E .HS 00 -BVS .DA BVS.E+1-* - >PSTR "BVS" - .HS 07 - >PSTR "70r" -BVS.E .HS 00 -CLC .DA CLC.E+1-* - >PSTR "CLC" - .HS FF - >PSTR "18" -CLC.E .HS 00 -CLD .DA CLD.E+1-* - >PSTR "CLD" - .HS FF - >PSTR "D8" -CLD.E .HS 00 -CLI .DA CLI.E+1-* - >PSTR "CLI" - .HS FF - >PSTR "58" -CLI.E .HS 00 -CLV .DA CLV.E+1-* - >PSTR "CLV" - .HS FF - >PSTR "B8" -CLV.E .HS 00 -CMP .DA CMP.E+1-* - >PSTR "CMP" - .HS 01 - >PSTR "C9a" - .HS 02 - >PSTR "D2a" - .HS 03 - >PSTR "D1a" - .HS 04 - >PSTR "C1a" - .HS 05 - >PSTR "C5a" - .HS 06 - >PSTR "D5a" - .HS 07 - >PSTR "CDaa" - .HS 08 - >PSTR "DDaa" - .HS 09 - >PSTR "D9aa" -CMP.E .HS 00 -CPX .DA CPX.E+1-* - >PSTR "CPX" - .HS 01 - >PSTR "E0a" - .HS 05 - >PSTR "E4a" - .HS 07 - >PSTR "Ecaa" -CPX.E .HS 00 -CPY .DA CPY.E+1-* - >PSTR "CPY" - .HS 01 - >PSTR "C0a" - .HS 05 - >PSTR "C4a" - .HS 07 - >PSTR "Ccaa" -CPY.E .HS 00 -DEC .DA DEC.E+1-* - >PSTR "DEC" - .HS 05 - >PSTR "C6a" - .HS 06 - >PSTR "D6a" - .HS 07 - >PSTR "Ceaa" - .HS 08 - >PSTR "Deaa" - .HS FF - >PSTR "3A" -DEC.E .HS 00 -DEX .DA DEX.E+1-* - >PSTR "DEX" - .HS FF - >PSTR "CA" -DEX.E .HS 00 -DEY .DA DEY.E+1-* - >PSTR "DEY" - .HS FF - >PSTR "88" -DEY.E .HS 00 -EOR .DA EOR.E+1-* - >PSTR "EOR" - .HS 01 - >PSTR "49a" - .HS 02 - >PSTR "52a" - .HS 03 - >PSTR "51a" - .HS 04 - >PSTR "41a" - .HS 05 - >PSTR "45a" - .HS 06 - >PSTR "55a" - .HS 07 - >PSTR "4Daa" - .HS 08 - >PSTR "5Daa" - .HS 09 - >PSTR "59aa" -EOR.E .HS 00 -INC .DA INC.E+1-* - >PSTR "INC" - .HS 05 - >PSTR "E6a" - .HS 06 - >PSTR "F6a" - .HS 07 - >PSTR "Eeaa" - .HS 08 - >PSTR "Feaa" - .HS FF - >PSTR "1A" -INC.E .HS 00 -INX .DA INX.E+1-* - >PSTR "INX" - .HS FF - >PSTR "E8" -INX.E .HS 00 -INY .DA INY.E+1-* - >PSTR "INY" - .HS FF - >PSTR "C8" -INY.E .HS 00 -JMP .DA JMP.E+1-* - >PSTR "JMP" - .HS 0B - >PSTR "6Caa" - .HS 0C - >PSTR "7Caa" - .HS 07 - >PSTR "4Caa" -JMP.E .HS 00 -JSR .DA JSR.E+1-* - >PSTR "JSR" - .HS 07 - >PSTR "20aa" -JSR.E .HS 00 -LDA .DA LDA.E+1-* - >PSTR "LDA" - .HS 01 - >PSTR "A9a" - .HS 02 - >PSTR "B2a" - .HS 03 - >PSTR "B1a" - .HS 04 - >PSTR "A1a" - .HS 05 - >PSTR "A5a" - .HS 06 - >PSTR "B5a" - .HS 07 - >PSTR "Adaa" - .HS 08 - >PSTR "Bdaa" - .HS 09 - >PSTR "B9aa" -LDA.E .HS 00 -LDX .DA LDX.E+1-* - >PSTR "LDX" - .HS 01 - >PSTR "A2a" - .HS 05 - >PSTR "A6a" - .HS 0D - >PSTR "B6a" - .HS 07 - >PSTR "Aeaa" - .HS 09 - >PSTR "Beaa" -LDX.E .HS 00 -LDY .DA LDY.E+1-* - >PSTR "LDY" - .HS 01 - >PSTR "A0a" - .HS 05 - >PSTR "A4a" - .HS 06 - >PSTR "B4a" - .HS 07 - >PSTR "Acaa" - .HS 08 - >PSTR "Bcaa" -LDY.E .HS 00 -LSR .DA LSR.E+1-* - >PSTR "LSR" - .HS 05 - >PSTR "46a" - .HS 06 - >PSTR "56a" - .HS 07 - >PSTR "4Eaa" - .HS 08 - >PSTR "5Eaa" - .HS FF - >PSTR "4A" -LSR.E .HS 00 -NOP .DA NOP.E+1-* - >PSTR "NOP" - .HS FF - >PSTR "EA" -NOP.E .HS 00 -ORA .DA ORA.E+1-* - >PSTR "ORA" - .HS 01 - >PSTR "09a" - .HS 02 - >PSTR "12a" - .HS 03 - >PSTR "11a" - .HS 04 - >PSTR "01a" - .HS 05 - >PSTR "05a" - .HS 06 - >PSTR "15a" - .HS 07 - >PSTR "0Daa" - .HS 08 - >PSTR "1Daa" - .HS 09 - >PSTR "19aa" -ORA.E .HS 00 -PHA .DA PHA.E+1-* - >PSTR "PHA" - .HS FF - >PSTR "48" -PHA.E .HS 00 -PHP .DA PHP.E+1-* - >PSTR "PHP" - .HS FF - >PSTR "08" -PHP.E .HS 00 -PHX .DA PHX.E+1-* - >PSTR "PHX" - .HS FF - >PSTR "DA" -PHX.E .HS 00 -PHY .DA PHY.E+1-* - >PSTR "PHY" - .HS FF - >PSTR "5A" -PHY.E .HS 00 -PLA .DA PLA.E+1-* - >PSTR "PLA" - .HS FF - >PSTR "68" -PLA.E .HS 00 -PLP .DA PLP.E+1-* - >PSTR "PLP" - .HS FF - >PSTR "28" -PLP.E .HS 00 -PLX .DA PLX.E+1-* - >PSTR "PLX" - .HS FF - >PSTR "FA" -PLX.E .HS 00 -PLY .DA PLY.E+1-* - >PSTR "PLY" - .HS FF - >PSTR "7A" -PLY.E .HS 00 -RMB0 .DA RMB0.E+1-* - >PSTR "RMB0" - .HS 05 - >PSTR "07a" -RMB0.E .HS 00 -RMB1 .DA RMB1.E+1-* - >PSTR "RMB1" - .HS 05 - >PSTR "17a" -RMB1.E .HS 00 -RMB2 .DA RMB2.E+1-* - >PSTR "RMB2" - .HS 05 - >PSTR "27a" -RMB2.E .HS 00 -RMB3 .DA RMB3.E+1-* - >PSTR "RMB3" - .HS 05 - >PSTR "37a" -RMB3.E .HS 00 -RMB4 .DA RMB4.E+1-* - >PSTR "RMB4" - .HS 05 - >PSTR "47a" -RMB4.E .HS 00 -RMB5 .DA RMB5.E+1-* - >PSTR "RMB5" - .HS 05 - >PSTR "57a" -RMB5.E .HS 00 -RMB6 .DA RMB6.E+1-* - >PSTR "RMB6" - .HS 05 - >PSTR "67a" -RMB6.E .HS 00 -RMB7 .DA RMB7.E+1-* - >PSTR "RMB7" - .HS 05 - >PSTR "77a" -RMB7.E .HS 00 -ROL .DA ROL.E+1-* - >PSTR "ROL" - .HS 05 - >PSTR "26a" - .HS 06 - >PSTR "36a" - .HS 07 - >PSTR "2Eaa" - .HS 08 - >PSTR "3Eaa" - .HS FF - >PSTR "2A" -ROL.E .HS 00 -ROR .DA ROR.E+1-* - >PSTR "ROR" - .HS 05 - >PSTR "66a" - .HS 06 - >PSTR "76a" - .HS 07 - >PSTR "6Eaa" - .HS 08 - >PSTR "7Eaa" - .HS FF - >PSTR "6A" -ROR.E .HS 00 -RTI .DA RTI.E+1-* - >PSTR "RTI" - .HS FF - >PSTR "40" -RTI.E .HS 00 -RTS .DA RTS.E+1-* - >PSTR "RTS" - .HS FF - >PSTR "60" -RTS.E .HS 00 -SBC .DA SBC.E+1-* - >PSTR "SBC" - .HS 01 - >PSTR "E9a" - .HS 02 - >PSTR "F2a" - .HS 03 - >PSTR "F1a" - .HS 04 - >PSTR "E1a" - .HS 05 - >PSTR "E5a" - .HS 06 - >PSTR "F5a" - .HS 07 - >PSTR "Edaa" - .HS 08 - >PSTR "Fdaa" - .HS 09 - >PSTR "F9aa" -SBC.E .HS 00 -SEC .DA SEC.E+1-* - >PSTR "SEC" - .HS FF - >PSTR "38" -SEC.E .HS 00 -SED .DA SED.E+1-* - >PSTR "SED" - .HS FF - >PSTR "F8" -SED.E .HS 00 -SEI .DA SEI.E+1-* - >PSTR "SEI" - .HS FF - >PSTR "78" -SEI.E .HS 00 -SMB0 .DA SMB0.E+1-* - >PSTR "SMB0" - .HS 05 - >PSTR "87a" -SMB0.E .HS 00 -SMB1 .DA SMB1.E+1-* - >PSTR "SMB1" - .HS 05 - >PSTR "97a" -SMB1.E .HS 00 -SMB2 .DA SMB2.E+1-* - >PSTR "SMB2" - .HS 05 - >PSTR "A7a" -SMB2.E .HS 00 -SMB3 .DA SMB3.E+1-* - >PSTR "SMB3" - .HS 05 - >PSTR "B7a" -SMB3.E .HS 00 -SMB4 .DA SMB4.E+1-* - >PSTR "SMB4" - .HS 05 - >PSTR "C7a" -SMB4.E .HS 00 -SMB5 .DA SMB5.E+1-* - >PSTR "SMB5" - .HS 05 - >PSTR "D7a" -SMB5.E .HS 00 -SMB6 .DA SMB6.E+1-* - >PSTR "SMB6" - .HS 05 - >PSTR "E7a" -SMB6.E .HS 00 -SMB7 .DA SMB7.E+1-* - >PSTR "SMB7" - .HS 05 - >PSTR "F7a" -SMB7.E .HS 00 -STA .DA STA.E+1-* - >PSTR "STA" - .HS 02 - >PSTR "92a" - .HS 03 - >PSTR "91a" - .HS 04 - >PSTR "81a" - .HS 05 - >PSTR "85a" - .HS 06 - >PSTR "95a" - .HS 07 - >PSTR "8Daa" - .HS 08 - >PSTR "9Daa" - .HS 09 - >PSTR "99aa" -STA.E .HS 00 -STX .DA STX.E+1-* - >PSTR "STX" - .HS 05 - >PSTR "86a" - .HS 0D - >PSTR "96a" - .HS 07 - >PSTR "8Eaa" -STX.E .HS 00 -STY .DA STY.E+1-* - >PSTR "STY" - .HS 05 - >PSTR "84a" - .HS 06 - >PSTR "94a" - .HS 07 - >PSTR "8Caa" -STY.E .HS 00 -STZ .DA STZ.E+1-* - >PSTR "STZ" - .HS 05 - >PSTR "64a" - .HS 06 - >PSTR "74a" - .HS 07 - >PSTR "9Caa" - .HS 08 - >PSTR "9Eaa" -STZ.E .HS 00 -TAX .DA TAX.E+1-* - >PSTR "TAX" - .HS FF - >PSTR "AA" -TAX.E .HS 00 -TAY .DA TAY.E+1-* - >PSTR "TAY" - .HS FF - >PSTR "A8" -TAY.E .HS 00 -TRB .DA TRB.E+1-* - >PSTR "TRB" - .HS 05 - >PSTR "14a" - .HS 07 - >PSTR "1Caa" -TRB.E .HS 00 -TSB .DA TSB.E+1-* - >PSTR "TSB" - .HS 05 - >PSTR "04a" - .HS 07 - >PSTR "0Caa" -TSB.E .HS 00 -TSX .DA TSX.E+1-* - >PSTR "TSX" - .HS FF - >PSTR "BA" -TSX.E .HS 00 -TXA .DA TXA.E+1-* - >PSTR "TXA" - .HS FF - >PSTR "8A" -TXA.E .HS 00 -TXS .DA TXS.E+1-* - >PSTR "TXS" - .HS FF - >PSTR "9A" -TXS.E .HS 00 -TYA .DA TYA.E+1-* - >PSTR "TYA" - .HS FF - >PSTR "98" +ADC .DA ADC.E+1-* + .DA #3,$$"ADC" + .DA #1,#3,$$"69a" + .DA #2,#3,$$"72a" + .DA #3,#3,$$"71a" + .DA #4,#3,$$"61a" + .DA #5,#3,$$"65a" + .DA #6,#3,$$"75a" + .DA #7,#4,$$"6Daa" + .DA #8,#4,$$"7Daa" + .DA #9,#4,$$"79aa" +ADC.E .HS 00 +AND .DA AND.E+1-* + .DA #3,$$"AND" + .DA #1,#3,$$"29a" + .DA #2,#3,$$"32a" + .DA #3,#3,$$"31a" + .DA #4,#3,$$"21a" + .DA #5,#3,$$"25a" + .DA #6,#3,$$"35a" + .DA #7,#4,$$"2Daa" + .DA #8,#4,$$"3Daa" + .DA #9,#4,$$"39aa" +AND.E .HS 00 +ASL .DA ASL.E+1-* + .DA #3,$$"ASL" + .DA #5,#3,$$"06a" + .DA #6,#3,$$"16a" + .DA #7,#4,$$"0Eaa" + .DA #8,#4,$$"1Eaa" + .DA #255,#2,$$"0A" +ASL.E .HS 00 +BBR0 .DA BBR0.E+1-* + .DA #4,$$"BBR0" + .DA #10,#4,$$"0Far" +BBR0.E .HS 00 +BBR1 .DA BBR1.E+1-* + .DA #4,$$"BBR1" + .DA #10,#4,$$"1Far" +BBR1.E .HS 00 +BBR2 .DA BBR2.E+1-* + .DA #4,$$"BBR2" + .DA #10,#4,$$"2Far" +BBR2.E .HS 00 +BBR3 .DA BBR3.E+1-* + .DA #4,$$"BBR3" + .DA #10,#4,$$"3Far" +BBR3.E .HS 00 +BBR4 .DA BBR4.E+1-* + .DA #4,$$"BBR4" + .DA #10,#4,$$"4Far" +BBR4.E .HS 00 +BBR5 .DA BBR5.E+1-* + .DA #4,$$"BBR5" + .DA #10,#4,$$"5Far" +BBR5.E .HS 00 +BBR6 .DA BBR6.E+1-* + .DA #4,$$"BBR6" + .DA #10,#4,$$"6Far" +BBR6.E .HS 00 +BBR7 .DA BBR7.E+1-* + .DA #4,$$"BBR7" + .DA #10,#4,$$"7Far" +BBR7.E .HS 00 +BBS0 .DA BBS0.E+1-* + .DA #4,$$"BBS0" + .DA #10,#4,$$"8Far" +BBS0.E .HS 00 +BBS1 .DA BBS1.E+1-* + .DA #4,$$"BBS1" + .DA #10,#4,$$"9Far" +BBS1.E .HS 00 +BBS2 .DA BBS2.E+1-* + .DA #4,$$"BBS2" + .DA #10,#4,$$"AFar" +BBS2.E .HS 00 +BBS3 .DA BBS3.E+1-* + .DA #4,$$"BBS3" + .DA #10,#4,$$"BFar" +BBS3.E .HS 00 +BBS4 .DA BBS4.E+1-* + .DA #4,$$"BBS4" + .DA #10,#4,$$"CFar" +BBS4.E .HS 00 +BBS5 .DA BBS5.E+1-* + .DA #4,$$"BBS5" + .DA #10,#4,$$"DFar" +BBS5.E .HS 00 +BBS6 .DA BBS6.E+1-* + .DA #4,$$"BBS6" + .DA #10,#4,$$"EFar" +BBS6.E .HS 00 +BBS7 .DA BBS7.E+1-* + .DA #4,$$"BBS7" + .DA #10,#4,$$"FFar" +BBS7.E .HS 00 +BCC .DA BCC.E+1-* + .DA #3,$$"BCC" + .DA #7,#3,$$"90r" +BCC.E .HS 00 +BCS .DA BCS.E+1-* + .DA #3,$$"BCS" + .DA #7,#3,$$"B0r" +BCS.E .HS 00 +BEQ .DA BEQ.E+1-* + .DA #3,$$"BEQ" + .DA #7,#3,$$"F0r" +BEQ.E .HS 00 +BIT .DA BIT.E+1-* + .DA #3,$$"BIT" + .DA #1,#3,$$"89a" + .DA #5,#3,$$"24a" + .DA #6,#3,$$"34a" + .DA #7,#4,$$"2Caa" + .DA #8,#4,$$"3Caa" +BIT.E .HS 00 +BMI .DA BMI.E+1-* + .DA #3,$$"BMI" + .DA #7,#3,$$"30r" +BMI.E .HS 00 +BNE .DA BNE.E+1-* + .DA #3,$$"BNE" + .DA #7,#3,$$"D0r" +BNE.E .HS 00 +BPL .DA BPL.E+1-* + .DA #3,$$"BPL" + .DA #7,#3,$$"10r" +BPL.E .HS 00 +BRA .DA BRA.E+1-* + .DA #3,$$"BRA" + .DA #7,#3,$$"80r" +BRA.E .HS 00 +BRK .DA BRK.E+1-* + .DA #3,$$"BRK" + .DA #255,#2,$$"00" +BRK.E .HS 00 +BVC .DA BVC.E+1-* + .DA #3,$$"BVC" + .DA #7,#3,$$"50r" +BVC.E .HS 00 +BVS .DA BVS.E+1-* + .DA #3,$$"BVS" + .DA #7,#3,$$"70r" +BVS.E .HS 00 +CLC .DA CLC.E+1-* + .DA #3,$$"CLC" + .DA #255,#2,$$"18" +CLC.E .HS 00 +CLD .DA CLD.E+1-* + .DA #3,$$"CLD" + .DA #255,#2,$$"D8" +CLD.E .HS 00 +CLI .DA CLI.E+1-* + .DA #3,$$"CLI" + .DA #255,#2,$$"58" +CLI.E .HS 00 +CLV .DA CLV.E+1-* + .DA #3,$$"CLV" + .DA #255,#2,$$"B8" +CLV.E .HS 00 +CMP .DA CMP.E+1-* + .DA #3,$$"CMP" + .DA #1,#3,$$"C9a" + .DA #2,#3,$$"D2a" + .DA #3,#3,$$"D1a" + .DA #4,#3,$$"C1a" + .DA #5,#3,$$"C5a" + .DA #6,#3,$$"D5a" + .DA #7,#4,$$"CDaa" + .DA #8,#4,$$"DDaa" + .DA #9,#4,$$"D9aa" +CMP.E .HS 00 +CPX .DA CPX.E+1-* + .DA #3,$$"CPX" + .DA #1,#3,$$"E0a" + .DA #5,#3,$$"E4a" + .DA #7,#4,$$"Ecaa" +CPX.E .HS 00 +CPY .DA CPY.E+1-* + .DA #3,$$"CPY" + .DA #1,#3,$$"C0a" + .DA #5,#3,$$"C4a" + .DA #7,#4,$$"Ccaa" +CPY.E .HS 00 +DEC .DA DEC.E+1-* + .DA #3,$$"DEC" + .DA #5,#3,$$"C6a" + .DA #6,#3,$$"D6a" + .DA #7,#4,$$"Ceaa" + .DA #8,#4,$$"Deaa" + .DA #255,#2,$$"3A" +DEC.E .HS 00 +DEX .DA DEX.E+1-* + .DA #3,$$"DEX" + .DA #255,#2,$$"CA" +DEX.E .HS 00 +DEY .DA DEY.E+1-* + .DA #3,$$"DEY" + .DA #255,#2,$$"88" +DEY.E .HS 00 +EOR .DA EOR.E+1-* + .DA #3,$$"EOR" + .DA #1,#3,$$"49a" + .DA #2,#3,$$"52a" + .DA #3,#3,$$"51a" + .DA #4,#3,$$"41a" + .DA #5,#3,$$"45a" + .DA #6,#3,$$"55a" + .DA #7,#4,$$"4Daa" + .DA #8,#4,$$"5Daa" + .DA #9,#4,$$"59aa" +EOR.E .HS 00 +INC .DA INC.E+1-* + .DA #3,$$"INC" + .DA #5,#3,$$"E6a" + .DA #6,#3,$$"F6a" + .DA #7,#4,$$"Eeaa" + .DA #8,#4,$$"Feaa" + .DA #255,#2,$$"1A" +INC.E .HS 00 +INX .DA INX.E+1-* + .DA #3,$$"INX" + .DA #255,#2,$$"E8" +INX.E .HS 00 +INY .DA INY.E+1-* + .DA #3,$$"INY" + .DA #255,#2,$$"C8" +INY.E .HS 00 +JMP .DA JMP.E+1-* + .DA #3,$$"JMP" + .DA #11,#4,$$"6Caa" + .DA #12,#4,$$"7Caa" + .DA #7,#4,$$"4Caa" +JMP.E .HS 00 +JSR .DA JSR.E+1-* + .DA #3,$$"JSR" + .DA #7,#4,$$"20aa" +JSR.E .HS 00 +LDA .DA LDA.E+1-* + .DA #3,$$"LDA" + .DA #1,#3,$$"A9a" + .DA #2,#3,$$"B2a" + .DA #3,#3,$$"B1a" + .DA #4,#3,$$"A1a" + .DA #5,#3,$$"A5a" + .DA #6,#3,$$"B5a" + .DA #7,#4,$$"Adaa" + .DA #8,#4,$$"Bdaa" + .DA #9,#4,$$"B9aa" +LDA.E .HS 00 +LDX .DA LDX.E+1-* + .DA #3,$$"LDX" + .DA #1,#3,$$"A2a" + .DA #5,#3,$$"A6a" + .DA #13,#3,$$"B6a" + .DA #7,#4,$$"Aeaa" + .DA #9,#4,$$"Beaa" +LDX.E .HS 00 +LDY .DA LDY.E+1-* + .DA #3,$$"LDY" + .DA #1,#3,$$"A0a" + .DA #5,#3,$$"A4a" + .DA #6,#3,$$"B4a" + .DA #7,#4,$$"Acaa" + .DA #8,#4,$$"Bcaa" +LDY.E .HS 00 +LSR .DA LSR.E+1-* + .DA #3,$$"LSR" + .DA #5,#3,$$"46a" + .DA #6,#3,$$"56a" + .DA #7,#4,$$"4Eaa" + .DA #8,#4,$$"5Eaa" + .DA #255,#2,$$"4A" +LSR.E .HS 00 +NOP .DA NOP.E+1-* + .DA #3,$$"NOP" + .DA #255,#2,$$"EA" +NOP.E .HS 00 +ORA .DA ORA.E+1-* + .DA #3,$$"ORA" + .DA #1,#3,$$"09a" + .DA #2,#3,$$"12a" + .DA #3,#3,$$"11a" + .DA #4,#3,$$"01a" + .DA #5,#3,$$"05a" + .DA #6,#3,$$"15a" + .DA #7,#4,$$"0Daa" + .DA #8,#4,$$"1Daa" + .DA #9,#4,$$"19aa" +ORA.E .HS 00 +PHA .DA PHA.E+1-* + .DA #3,$$"PHA" + .DA #255,#2,$$"48" +PHA.E .HS 00 +PHP .DA PHP.E+1-* + .DA #3,$$"PHP" + .DA #255,#2,$$"08" +PHP.E .HS 00 +PHX .DA PHX.E+1-* + .DA #3,$$"PHX" + .DA #255,#2,$$"DA" +PHX.E .HS 00 +PHY .DA PHY.E+1-* + .DA #3,$$"PHY" + .DA #255,#2,$$"5A" +PHY.E .HS 00 +PLA .DA PLA.E+1-* + .DA #3,$$"PLA" + .DA #255,#2,$$"68" +PLA.E .HS 00 +PLP .DA PLP.E+1-* + .DA #3,$$"PLP" + .DA #255,#2,$$"28" +PLP.E .HS 00 +PLX .DA PLX.E+1-* + .DA #3,$$"PLX" + .DA #255,#2,$$"FA" +PLX.E .HS 00 +PLY .DA PLY.E+1-* + .DA #3,$$"PLY" + .DA #255,#2,$$"7A" +PLY.E .HS 00 +RMB0 .DA RMB0.E+1-* + .DA #4,$$"RMB0" + .DA #5,#3,$$"07a" +RMB0.E .HS 00 +RMB1 .DA RMB1.E+1-* + .DA #4,$$"RMB1" + .DA #5,#3,$$"17a" +RMB1.E .HS 00 +RMB2 .DA RMB2.E+1-* + .DA #4,$$"RMB2" + .DA #5,#3,$$"27a" +RMB2.E .HS 00 +RMB3 .DA RMB3.E+1-* + .DA #4,$$"RMB3" + .DA #5,#3,$$"37a" +RMB3.E .HS 00 +RMB4 .DA RMB4.E+1-* + .DA #4,$$"RMB4" + .DA #5,#3,$$"47a" +RMB4.E .HS 00 +RMB5 .DA RMB5.E+1-* + .DA #4,$$"RMB5" + .DA #5,#3,$$"57a" +RMB5.E .HS 00 +RMB6 .DA RMB6.E+1-* + .DA #4,$$"RMB6" + .DA #5,#3,$$"67a" +RMB6.E .HS 00 +RMB7 .DA RMB7.E+1-* + .DA #4,$$"RMB7" + .DA #5,#3,$$"77a" +RMB7.E .HS 00 +ROL .DA ROL.E+1-* + .DA #3,$$"ROL" + .DA #5,#3,$$"26a" + .DA #6,#3,$$"36a" + .DA #7,#4,$$"2Eaa" + .DA #8,#4,$$"3Eaa" + .DA #255,#2,$$"2A" +ROL.E .HS 00 +ROR .DA ROR.E+1-* + .DA #3,$$"ROR" + .DA #5,#3,$$"66a" + .DA #6,#3,$$"76a" + .DA #7,#4,$$"6Eaa" + .DA #8,#4,$$"7Eaa" + .DA #255,#2,$$"6A" +ROR.E .HS 00 +RTI .DA RTI.E+1-* + .DA #3,$$"RTI" + .DA #255,#2,$$"40" +RTI.E .HS 00 +RTS .DA RTS.E+1-* + .DA #3,$$"RTS" + .DA #255,#2,$$"60" +RTS.E .HS 00 +SBC .DA SBC.E+1-* + .DA #3,$$"SBC" + .DA #1,#3,$$"E9a" + .DA #2,#3,$$"F2a" + .DA #3,#3,$$"F1a" + .DA #4,#3,$$"E1a" + .DA #5,#3,$$"E5a" + .DA #6,#3,$$"F5a" + .DA #7,#4,$$"Edaa" + .DA #8,#4,$$"Fdaa" + .DA #9,#4,$$"F9aa" +SBC.E .HS 00 +SEC .DA SEC.E+1-* + .DA #3,$$"SEC" + .DA #255,#2,$$"38" +SEC.E .HS 00 +SED .DA SED.E+1-* + .DA #3,$$"SED" + .DA #255,#2,$$"F8" +SED.E .HS 00 +SEI .DA SEI.E+1-* + .DA #3,$$"SEI" + .DA #255,#2,$$"78" +SEI.E .HS 00 +SMB0 .DA SMB0.E+1-* + .DA #4,$$"SMB0" + .DA #5,#3,$$"87a" +SMB0.E .HS 00 +SMB1 .DA SMB1.E+1-* + .DA #4,$$"SMB1" + .DA #5,#3,$$"97a" +SMB1.E .HS 00 +SMB2 .DA SMB2.E+1-* + .DA #4,$$"SMB2" + .DA #5,#3,$$"A7a" +SMB2.E .HS 00 +SMB3 .DA SMB3.E+1-* + .DA #4,$$"SMB3" + .DA #5,#3,$$"B7a" +SMB3.E .HS 00 +SMB4 .DA SMB4.E+1-* + .DA #4,$$"SMB4" + .DA #5,#3,$$"C7a" +SMB4.E .HS 00 +SMB5 .DA SMB5.E+1-* + .DA #4,$$"SMB5" + .DA #5,#3,$$"D7a" +SMB5.E .HS 00 +SMB6 .DA SMB6.E+1-* + .DA #4,$$"SMB6" + .DA #5,#3,$$"E7a" +SMB6.E .HS 00 +SMB7 .DA SMB7.E+1-* + .DA #4,$$"SMB7" + .DA #5,#3,$$"F7a" +SMB7.E .HS 00 +STA .DA STA.E+1-* + .DA #3,$$"STA" + .DA #2,#3,$$"92a" + .DA #3,#3,$$"91a" + .DA #4,#3,$$"81a" + .DA #5,#3,$$"85a" + .DA #6,#3,$$"95a" + .DA #7,#4,$$"8Daa" + .DA #8,#4,$$"9Daa" + .DA #9,#4,$$"99aa" +STA.E .HS 00 +STX .DA STX.E+1-* + .DA #3,$$"STX" + .DA #5,#3,$$"86a" + .DA #13,#3,$$"96a" + .DA #7,#4,$$"8Eaa" +STX.E .HS 00 +STY .DA STY.E+1-* + .DA #3,$$"STY" + .DA #5,#3,$$"84a" + .DA #6,#3,$$"94a" + .DA #7,#4,$$"8Caa" +STY.E .HS 00 +STZ .DA STZ.E+1-* + .DA #3,$$"STZ" + .DA #5,#3,$$"64a" + .DA #6,#3,$$"74a" + .DA #7,#4,$$"9Caa" + .DA #8,#4,$$"9Eaa" +STZ.E .HS 00 +TAX .DA TAX.E+1-* + .DA #3,$$"TAX" + .DA #255,#2,$$"AA" +TAX.E .HS 00 +TAY .DA TAY.E+1-* + .DA #3,$$"TAY" + .DA #255,#2,$$"A8" +TAY.E .HS 00 +TRB .DA TRB.E+1-* + .DA #3,$$"TRB" + .DA #5,#3,$$"14a" + .DA #7,#4,$$"1Caa" +TRB.E .HS 00 +TSB .DA TSB.E+1-* + .DA #3,$$"TSB" + .DA #5,#3,$$"04a" + .DA #7,#4,$$"0Caa" +TSB.E .HS 00 +TSX .DA TSX.E+1-* + .DA #3,$$"TSX" + .DA #255,#2,$$"BA" +TSX.E .HS 00 +TXA .DA TXA.E+1-* + .DA #3,$$"TXA" + .DA #255,#2,$$"8A" +TXA.E .HS 00 +TXS .DA TXS.E+1-* + .DA #3,$$"TXS" + .DA #255,#2,$$"9A" +TXS.E .HS 00 +TYA .DA TYA.E+1-* + .DA #3,$$"TYA" + .DA #255,#2,$$"98" TYA.E .HS 00 .HS 0000 *--------------------------------------- diff --git a/BIN/ASM.T.65R02.S.txt b/BIN/ASM.T.65R02.S.txt index 8596d39b..7e84a291 100644 --- a/BIN/ASM.T.65R02.S.txt +++ b/BIN/ASM.T.65R02.S.txt @@ -4,12 +4,6 @@ AUTO 4,1 .LIST OFF .OR $0 .TF /A2OSX.BUILD/BIN/DEV/ASM.T.65R02 -*--------------------------------------- - .MA PSTR - .DA #:1-*-1 - .AS "]1" -:1 .EQ * - .EM *--------------------------------------- .DA T.ADDR.MODES .DA T.REGISTERS diff --git a/BIN/ASM.T.SW16.A.txt b/BIN/ASM.T.SW16.A.txt index 38cd1538..06dc62bf 100644 --- a/BIN/ASM.T.SW16.A.txt +++ b/BIN/ASM.T.SW16.A.txt @@ -3,58 +3,58 @@ PREFIX /A2OSX.BUILD AUTO 4,1 *--------------------------------------- T.ADDR.MODES .EQ * - >PSTR "R0" - >PSTR "R1" - >PSTR "R2" - >PSTR "R3" - >PSTR "R4" - >PSTR "R5" - >PSTR "R6" - >PSTR "R7" - >PSTR "R8" - >PSTR "R9" - >PSTR "R10" - >PSTR "R11" - >PSTR "R12" - >PSTR "R13" - >PSTR "R14" - >PSTR "R15" - >PSTR "r" - >PSTR "@R0" - >PSTR "@R1" - >PSTR "@R2" - >PSTR "@R3" - >PSTR "@R4" - >PSTR "@R5" - >PSTR "@R6" - >PSTR "@R7" - >PSTR "@R8" - >PSTR "@R9" - >PSTR "@R10" - >PSTR "@R11" - >PSTR "@R12" - >PSTR "@R13" - >PSTR "@R14" - >PSTR "@R15" + .DA #2,$$"R0" + .DA #2,$$"R1" + .DA #2,$$"R2" + .DA #2,$$"R3" + .DA #2,$$"R4" + .DA #2,$$"R5" + .DA #2,$$"R6" + .DA #2,$$"R7" + .DA #2,$$"R8" + .DA #2,$$"R9" + .DA #3,$$"R10" + .DA #3,$$"R11" + .DA #3,$$"R12" + .DA #3,$$"R13" + .DA #3,$$"R14" + .DA #3,$$"R15" + .DA #2,$$"aa" + .DA #3,$$"@R0" + .DA #3,$$"@R1" + .DA #3,$$"@R2" + .DA #3,$$"@R3" + .DA #3,$$"@R4" + .DA #3,$$"@R5" + .DA #3,$$"@R6" + .DA #3,$$"@R7" + .DA #3,$$"@R8" + .DA #3,$$"@R9" + .DA #4,$$"@R10" + .DA #4,$$"@R11" + .DA #4,$$"@R12" + .DA #4,$$"@R13" + .DA #4,$$"@R14" + .DA #4,$$"@R15" .HS 00 *--------------------------------------- T.REGISTERS .EQ * - >PSTR "R0" - >PSTR "R1" - >PSTR "R2" - >PSTR "R3" - >PSTR "R4" - >PSTR "R5" - >PSTR "R6" - >PSTR "R7" - >PSTR "R8" - >PSTR "R9" - >PSTR "R10" - >PSTR "R11" - >PSTR "R12" - >PSTR "R13" - >PSTR "R14" - >PSTR "R15" + .DA #2,$$"R0" + .DA #2,$$"R1" + .DA #2,$$"R2" + .DA #2,$$"R3" + .DA #2,$$"R4" + .DA #2,$$"R5" + .DA #2,$$"R6" + .DA #2,$$"R7" + .DA #2,$$"R8" + .DA #2,$$"R9" + .DA #3,$$"R10" + .DA #3,$$"R11" + .DA #3,$$"R12" + .DA #3,$$"R13" + .DA #3,$$"R14" + .DA #3,$$"R15" .HS 00 *--------------------------------------- MAN diff --git a/BIN/ASM.T.SW16.O.txt b/BIN/ASM.T.SW16.O.txt index 5a38e306..9094e51e 100644 --- a/BIN/ASM.T.SW16.O.txt +++ b/BIN/ASM.T.SW16.O.txt @@ -3,589 +3,336 @@ PREFIX /A2OSX.BUILD AUTO 4,1 *--------------------------------------- T.OPCODES .EQ * -ADD .DA ADD.E+1-* - >PSTR "ADD" - .HS 01 - >PSTR "A0" - .HS 02 - >PSTR "A1" - .HS 03 - >PSTR "A2" - .HS 04 - >PSTR "A3" - .HS 05 - >PSTR "A4" - .HS 06 - >PSTR "A5" - .HS 07 - >PSTR "A6" - .HS 08 - >PSTR "A7" - .HS 09 - >PSTR "A8" - .HS 0A - >PSTR "A9" - .HS 0B - >PSTR "AA" - .HS 0C - >PSTR "AB" - .HS 0D - >PSTR "AC" - .HS 0E - >PSTR "AD" - .HS 0F - >PSTR "AE" - .HS 10 - >PSTR "AF" -ADD.E .HS 00 -BC .DA BC.E+1-* - >PSTR "BC" - .HS 11 - >PSTR "03r" -BC.E .HS 00 -BK .DA BK.E+1-* - >PSTR "BK" - .HS 00 - >PSTR "0A" -BK.E .HS 00 -BM .DA BM.E+1-* - >PSTR "BM" - .HS 11 - >PSTR "05r" -BM.E .HS 00 -BM1 .DA BM1.E+1-* - >PSTR "BM1" - .HS 11 - >PSTR "08r" -BM1.E .HS 00 -BNC .DA BNC.E+1-* - >PSTR "BNC" - .HS 11 - >PSTR "02r" -BNC.E .HS 00 -BNM1 .DA BNM1.E+1-* - >PSTR "BNM1" - .HS 11 - >PSTR "09r" -BNM1.E .HS 00 -BNZ .DA BNZ.E+1-* - >PSTR "BNZ" - .HS 11 - >PSTR "07r" -BNZ.E .HS 00 -BP .DA BP.E+1-* - >PSTR "BP" - .HS 11 - >PSTR "04r" -BP.E .HS 00 -BR .DA BR.E+1-* - >PSTR "BR" - .HS 11 - >PSTR "01r" -BR.E .HS 00 -BS .DA BS.E+1-* - >PSTR "BS" - .HS 11 - >PSTR "0Dr" -BS.E .HS 00 -BZ .DA BZ.E+1-* - >PSTR "BZ" - .HS 11 - >PSTR "06r" -BZ.E .HS 00 -CPR .DA CPR.E+1-* - >PSTR "CPR" - .HS 01 - >PSTR "D0" - .HS 02 - >PSTR "D1" - .HS 03 - >PSTR "D2" - .HS 04 - >PSTR "D3" - .HS 05 - >PSTR "D4" - .HS 06 - >PSTR "D5" - .HS 07 - >PSTR "D6" - .HS 08 - >PSTR "D7" - .HS 09 - >PSTR "D8" - .HS 0A - >PSTR "D9" - .HS 0B - >PSTR "DA" - .HS 0C - >PSTR "DB" - .HS 0D - >PSTR "DC" - .HS 0E - >PSTR "DD" - .HS 0F - >PSTR "DE" - .HS 10 - >PSTR "DF" -CPR.E .HS 00 -DCR .DA DCR.E+1-* - >PSTR "DCR" - .HS 01 - >PSTR "F0" - .HS 02 - >PSTR "F1" - .HS 03 - >PSTR "F2" - .HS 04 - >PSTR "F3" - .HS 05 - >PSTR "F4" - .HS 06 - >PSTR "F5" - .HS 07 - >PSTR "F6" - .HS 08 - >PSTR "F7" - .HS 09 - >PSTR "F8" - .HS 0A - >PSTR "F9" - .HS 0B - >PSTR "FA" - .HS 0C - >PSTR "FB" - .HS 0D - >PSTR "FC" - .HS 0E - >PSTR "FD" - .HS 0F - >PSTR "FE" - .HS 10 - >PSTR "FF" -DCR.E .HS 00 -INR .DA INR.E+1-* - >PSTR "INR" - .HS 01 - >PSTR "E0" - .HS 02 - >PSTR "E1" - .HS 03 - >PSTR "E2" - .HS 04 - >PSTR "E3" - .HS 05 - >PSTR "E4" - .HS 06 - >PSTR "E5" - .HS 07 - >PSTR "E6" - .HS 08 - >PSTR "E7" - .HS 09 - >PSTR "E8" - .HS 0A - >PSTR "E9" - .HS 0B - >PSTR "EA" - .HS 0C - >PSTR "EB" - .HS 0D - >PSTR "EC" - .HS 0E - >PSTR "ED" - .HS 0F - >PSTR "EE" - .HS 10 - >PSTR "EF" -INR.E .HS 00 -LD .DA LD.E+1-* - >PSTR "LD" - .HS 01 - >PSTR "20" - .HS 02 - >PSTR "21" - .HS 03 - >PSTR "22" - .HS 04 - >PSTR "23" - .HS 05 - >PSTR "24" - .HS 06 - >PSTR "25" - .HS 07 - >PSTR "26" - .HS 08 - >PSTR "27" - .HS 09 - >PSTR "28" - .HS 0A - >PSTR "29" - .HS 0B - >PSTR "2A" - .HS 0C - >PSTR "2B" - .HS 0D - >PSTR "2C" - .HS 0E - >PSTR "2D" - .HS 0F - >PSTR "2E" - .HS 10 - >PSTR "2F" - .HS 12 - >PSTR "40" - .HS 13 - >PSTR "41" - .HS 14 - >PSTR "42" - .HS 15 - >PSTR "43" - .HS 16 - >PSTR "44" - .HS 17 - >PSTR "45" - .HS 18 - >PSTR "46" - .HS 19 - >PSTR "47" - .HS 1A - >PSTR "48" - .HS 1B - >PSTR "49" - .HS 1C - >PSTR "4A" - .HS 1D - >PSTR "4B" - .HS 1E - >PSTR "4C" - .HS 1F - >PSTR "4D" - .HS 20 - >PSTR "4E" - .HS 21 - >PSTR "4F" -LD.E .HS 00 -LDD .DA LDD.E+1-* - >PSTR "LDD" - .HS 12 - >PSTR "60" - .HS 13 - >PSTR "61" - .HS 14 - >PSTR "62" - .HS 15 - >PSTR "63" - .HS 16 - >PSTR "64" - .HS 17 - >PSTR "65" - .HS 18 - >PSTR "66" - .HS 19 - >PSTR "67" - .HS 1A - >PSTR "68" - .HS 1B - >PSTR "69" - .HS 1C - >PSTR "6A" - .HS 1D - >PSTR "6B" - .HS 1E - >PSTR "6C" - .HS 1F - >PSTR "6D" - .HS 20 - >PSTR "6E" - .HS 21 - >PSTR "6F" -LDD.E .HS 00 -POP .DA POP.E+1-* - >PSTR "POP" - .HS 12 - >PSTR "80" - .HS 13 - >PSTR "81" - .HS 14 - >PSTR "82" - .HS 15 - >PSTR "83" - .HS 16 - >PSTR "84" - .HS 17 - >PSTR "85" - .HS 18 - >PSTR "86" - .HS 19 - >PSTR "87" - .HS 1A - >PSTR "88" - .HS 1B - >PSTR "89" - .HS 1C - >PSTR "8A" - .HS 1D - >PSTR "8B" - .HS 1E - >PSTR "8C" - .HS 1F - >PSTR "8D" - .HS 20 - >PSTR "8E" - .HS 21 - >PSTR "8F" -POP.E .HS 00 -POPD .DA POPD.E+1-* - >PSTR "POPD" - .HS 12 - >PSTR "C0" - .HS 13 - >PSTR "C1" - .HS 14 - >PSTR "C2" - .HS 15 - >PSTR "C3" - .HS 16 - >PSTR "C4" - .HS 17 - >PSTR "C5" - .HS 18 - >PSTR "C6" - .HS 19 - >PSTR "C7" - .HS 1A - >PSTR "C8" - .HS 1B - >PSTR "C9" - .HS 1C - >PSTR "CA" - .HS 1D - >PSTR "CB" - .HS 1E - >PSTR "CC" - .HS 1F - >PSTR "CD" - .HS 20 - >PSTR "CE" - .HS 21 - >PSTR "CF" -POPD.E .HS 00 -RS .DA RS.E+1-* - >PSTR "RS" - .HS 00 - >PSTR "0B" -RS.E .HS 00 -RTN .DA RTN.E+1-* - >PSTR "RTN" - .HS 00 - >PSTR "00r" -RTN.E .HS 00 -SET .DA SET.E+1-* - >PSTR "SET" - .HS 01 - >PSTR "10" - .HS 02 - >PSTR "11" - .HS 03 - >PSTR "12" - .HS 04 - >PSTR "13" - .HS 05 - >PSTR "14" - .HS 06 - >PSTR "15" - .HS 07 - >PSTR "16" - .HS 08 - >PSTR "17" - .HS 09 - >PSTR "18" - .HS 0A - >PSTR "19" - .HS 0B - >PSTR "1A" - .HS 0C - >PSTR "1B" - .HS 0D - >PSTR "1C" - .HS 0E - >PSTR "1D" - .HS 0F - >PSTR "1E" - .HS 10 - >PSTR "1D" -SET.E .HS 00 -ST .DA ST.E+1-* - >PSTR "ST" - .HS 01 - >PSTR "30" - .HS 02 - >PSTR "31" - .HS 03 - >PSTR "32" - .HS 04 - >PSTR "33" - .HS 05 - >PSTR "34" - .HS 06 - >PSTR "35" - .HS 07 - >PSTR "36" - .HS 08 - >PSTR "37" - .HS 09 - >PSTR "38" - .HS 0A - >PSTR "39" - .HS 0B - >PSTR "3A" - .HS 0C - >PSTR "3B" - .HS 0D - >PSTR "3C" - .HS 0E - >PSTR "3D" - .HS 0F - >PSTR "3E" - .HS 10 - >PSTR "3F" - .HS 12 - >PSTR "50" - .HS 13 - >PSTR "51" - .HS 14 - >PSTR "52" - .HS 15 - >PSTR "53" - .HS 16 - >PSTR "54" - .HS 17 - >PSTR "55" - .HS 18 - >PSTR "56" - .HS 19 - >PSTR "57" - .HS 1A - >PSTR "58" - .HS 1B - >PSTR "59" - .HS 1C - >PSTR "5A" - .HS 1D - >PSTR "5B" - .HS 1E - >PSTR "5C" - .HS 1F - >PSTR "5D" - .HS 20 - >PSTR "5E" - .HS 21 - >PSTR "5F" -ST.E .HS 00 -STD .DA STD.E+1-* - >PSTR "STD" - .HS 12 - >PSTR "70" - .HS 13 - >PSTR "71" - .HS 14 - >PSTR "72" - .HS 15 - >PSTR "73" - .HS 16 - >PSTR "74" - .HS 17 - >PSTR "75" - .HS 18 - >PSTR "76" - .HS 19 - >PSTR "77" - .HS 1A - >PSTR "78" - .HS 1B - >PSTR "79" - .HS 1C - >PSTR "7A" - .HS 1D - >PSTR "7B" - .HS 1E - >PSTR "7C" - .HS 1F - >PSTR "7D" - .HS 20 - >PSTR "7E" - .HS 21 - >PSTR "7F" -STD.E .HS 00 -STP .DA STP.E+1-* - >PSTR "STP" - .HS 12 - >PSTR "90" - .HS 13 - >PSTR "91" - .HS 14 - >PSTR "92" - .HS 15 - >PSTR "93" - .HS 16 - >PSTR "94" - .HS 17 - >PSTR "95" - .HS 18 - >PSTR "96" - .HS 19 - >PSTR "97" - .HS 1A - >PSTR "98" - .HS 1B - >PSTR "99" - .HS 1C - >PSTR "9A" - .HS 1D - >PSTR "9B" - .HS 1E - >PSTR "9C" - .HS 1F - >PSTR "9D" - .HS 20 - >PSTR "9E" - .HS 21 - >PSTR "9F" -STP.E .HS 00 -SUB .DA SUB.E+1-* - >PSTR "SUB" - .HS 01 - >PSTR "B0" - .HS 02 - >PSTR "B1" - .HS 03 - >PSTR "B2" - .HS 04 - >PSTR "B3" - .HS 05 - >PSTR "B4" - .HS 06 - >PSTR "B5" - .HS 07 - >PSTR "B6" - .HS 08 - >PSTR "B7" - .HS 09 - >PSTR "B8" - .HS 0A - >PSTR "B9" - .HS 0B - >PSTR "BA" - .HS 0C - >PSTR "BB" - .HS 0D - >PSTR "BC" - .HS 0E - >PSTR "BD" - .HS 0F - >PSTR "BE" - .HS 10 - >PSTR "BF" +ADD .DA ADD.E+1-* + .DA #3,$$"ADD" + .DA #1,#2,$$"A0" + .DA #2,#2,$$"A1" + .DA #3,#2,$$"A2" + .DA #4,#2,$$"A3" + .DA #5,#2,$$"A4" + .DA #6,#2,$$"A5" + .DA #7,#2,$$"A6" + .DA #8,#2,$$"A7" + .DA #9,#2,$$"A8" + .DA #10,#2,$$"A9" + .DA #11,#2,$$"AA" + .DA #12,#2,$$"AB" + .DA #13,#2,$$"AC" + .DA #14,#2,$$"AD" + .DA #15,#2,$$"AE" + .DA #16,#2,$$"AF" +ADD.E .HS 00 +BC .DA BC.E+1-* + .DA #2,$$"BC" + .DA #17,#3,$$"03r" +BC.E .HS 00 +BK .DA BK.E+1-* + .DA #2,$$"BK" + .DA #255,#2,$$"0A" +BK.E .HS 00 +BM .DA BM.E+1-* + .DA #2,$$"BM" + .DA #17,#3,$$"05r" +BM.E .HS 00 +BM1 .DA BM1.E+1-* + .DA #3,$$"BM1" + .DA #17,#3,$$"08r" +BM1.E .HS 00 +BNC .DA BNC.E+1-* + .DA #3,$$"BNC" + .DA #17,#3,$$"02r" +BNC.E .HS 00 +BNM1 .DA BNM1.E+1-* + .DA #4,$$"BNM1" + .DA #17,#3,$$"09r" +BNM1.E .HS 00 +BNZ .DA BNZ.E+1-* + .DA #3,$$"BNZ" + .DA #17,#3,$$"07r" +BNZ.E .HS 00 +BP .DA BP.E+1-* + .DA #2,$$"BP" + .DA #17,#3,$$"04r" +BP.E .HS 00 +BR .DA BR.E+1-* + .DA #2,$$"BR" + .DA #17,#3,$$"01r" +BR.E .HS 00 +BS .DA BS.E+1-* + .DA #2,$$"BS" + .DA #17,#3,$$"0Dr" +BS.E .HS 00 +BZ .DA BZ.E+1-* + .DA #2,$$"BZ" + .DA #17,#3,$$"06r" +BZ.E .HS 00 +CPR .DA CPR.E+1-* + .DA #3,$$"CPR" + .DA #1,#2,$$"D0" + .DA #2,#2,$$"D1" + .DA #3,#2,$$"D2" + .DA #4,#2,$$"D3" + .DA #5,#2,$$"D4" + .DA #6,#2,$$"D5" + .DA #7,#2,$$"D6" + .DA #8,#2,$$"D7" + .DA #9,#2,$$"D8" + .DA #10,#2,$$"D9" + .DA #11,#2,$$"DA" + .DA #12,#2,$$"DB" + .DA #13,#2,$$"DC" + .DA #14,#2,$$"DD" + .DA #15,#2,$$"DE" + .DA #16,#2,$$"DF" +CPR.E .HS 00 +DCR .DA DCR.E+1-* + .DA #3,$$"DCR" + .DA #1,#2,$$"F0" + .DA #2,#2,$$"F1" + .DA #3,#2,$$"F2" + .DA #4,#2,$$"F3" + .DA #5,#2,$$"F4" + .DA #6,#2,$$"F5" + .DA #7,#2,$$"F6" + .DA #8,#2,$$"F7" + .DA #9,#2,$$"F8" + .DA #10,#2,$$"F9" + .DA #11,#2,$$"FA" + .DA #12,#2,$$"FB" + .DA #13,#2,$$"FC" + .DA #14,#2,$$"FD" + .DA #15,#2,$$"FE" + .DA #16,#2,$$"FF" +DCR.E .HS 00 +INR .DA INR.E+1-* + .DA #3,$$"INR" + .DA #1,#2,$$"E0" + .DA #2,#2,$$"E1" + .DA #3,#2,$$"E2" + .DA #4,#2,$$"E3" + .DA #5,#2,$$"E4" + .DA #6,#2,$$"E5" + .DA #7,#2,$$"E6" + .DA #8,#2,$$"E7" + .DA #9,#2,$$"E8" + .DA #10,#2,$$"E9" + .DA #11,#2,$$"EA" + .DA #12,#2,$$"EB" + .DA #13,#2,$$"EC" + .DA #14,#2,$$"ED" + .DA #15,#2,$$"EE" + .DA #16,#2,$$"EF" +INR.E .HS 00 +LD .DA LD.E+1-* + .DA #2,$$"LD" + .DA #1,#2,$$"20" + .DA #2,#2,$$"21" + .DA #3,#2,$$"22" + .DA #4,#2,$$"23" + .DA #5,#2,$$"24" + .DA #6,#2,$$"25" + .DA #7,#2,$$"26" + .DA #8,#2,$$"27" + .DA #9,#2,$$"28" + .DA #10,#2,$$"29" + .DA #11,#2,$$"2A" + .DA #12,#2,$$"2B" + .DA #13,#2,$$"2C" + .DA #14,#2,$$"2D" + .DA #15,#2,$$"2E" + .DA #16,#2,$$"2F" + .DA #18,#2,$$"40" + .DA #19,#2,$$"41" + .DA #20,#2,$$"42" + .DA #21,#2,$$"43" + .DA #22,#2,$$"44" + .DA #23,#2,$$"45" + .DA #24,#2,$$"46" + .DA #25,#2,$$"47" + .DA #26,#2,$$"48" + .DA #27,#2,$$"49" + .DA #28,#2,$$"4A" + .DA #29,#2,$$"4B" + .DA #30,#2,$$"4C" + .DA #31,#2,$$"4D" + .DA #32,#2,$$"4E" + .DA #33,#2,$$"4F" +LD.E .HS 00 +LDD .DA LDD.E+1-* + .DA #3,$$"LDD" + .DA #18,#2,$$"60" + .DA #19,#2,$$"61" + .DA #20,#2,$$"62" + .DA #21,#2,$$"63" + .DA #22,#2,$$"64" + .DA #23,#2,$$"65" + .DA #24,#2,$$"66" + .DA #25,#2,$$"67" + .DA #26,#2,$$"68" + .DA #27,#2,$$"69" + .DA #28,#2,$$"6A" + .DA #29,#2,$$"6B" + .DA #30,#2,$$"6C" + .DA #31,#2,$$"6D" + .DA #32,#2,$$"6E" + .DA #33,#2,$$"6F" +LDD.E .HS 00 +POP .DA POP.E+1-* + .DA #3,$$"POP" + .DA #18,#2,$$"80" + .DA #19,#2,$$"81" + .DA #20,#2,$$"82" + .DA #21,#2,$$"83" + .DA #22,#2,$$"84" + .DA #23,#2,$$"85" + .DA #24,#2,$$"86" + .DA #25,#2,$$"87" + .DA #26,#2,$$"88" + .DA #27,#2,$$"89" + .DA #28,#2,$$"8A" + .DA #29,#2,$$"8B" + .DA #30,#2,$$"8C" + .DA #31,#2,$$"8D" + .DA #32,#2,$$"8E" + .DA #33,#2,$$"8F" +POP.E .HS 00 +POPD .DA POPD.E+1-* + .DA #4,$$"POPD" + .DA #18,#2,$$"C0" + .DA #19,#2,$$"C1" + .DA #20,#2,$$"C2" + .DA #21,#2,$$"C3" + .DA #22,#2,$$"C4" + .DA #23,#2,$$"C5" + .DA #24,#2,$$"C6" + .DA #25,#2,$$"C7" + .DA #26,#2,$$"C8" + .DA #27,#2,$$"C9" + .DA #28,#2,$$"CA" + .DA #29,#2,$$"CB" + .DA #30,#2,$$"CC" + .DA #31,#2,$$"CD" + .DA #32,#2,$$"CE" + .DA #33,#2,$$"CF" +POPD.E .HS 00 +RS .DA RS.E+1-* + .DA #2,$$"RS" + .DA #255,#2,$$"0B" +RS.E .HS 00 +RTN .DA RTN.E+1-* + .DA #3,$$"RTN" + .DA #255,#3,$$"00r" +RTN.E .HS 00 +SET .DA SET.E+1-* + .DA #3,$$"SET" + .DA #1,#2,$$"10" + .DA #2,#2,$$"11" + .DA #3,#2,$$"12" + .DA #4,#2,$$"13" + .DA #5,#2,$$"14" + .DA #6,#2,$$"15" + .DA #7,#2,$$"16" + .DA #8,#2,$$"17" + .DA #9,#2,$$"18" + .DA #10,#2,$$"19" + .DA #11,#2,$$"1A" + .DA #12,#2,$$"1B" + .DA #13,#2,$$"1C" + .DA #14,#2,$$"1D" + .DA #15,#2,$$"1E" + .DA #16,#2,$$"1D" +SET.E .HS 00 +ST .DA ST.E+1-* + .DA #2,$$"ST" + .DA #1,#2,$$"30" + .DA #2,#2,$$"31" + .DA #3,#2,$$"32" + .DA #4,#2,$$"33" + .DA #5,#2,$$"34" + .DA #6,#2,$$"35" + .DA #7,#2,$$"36" + .DA #8,#2,$$"37" + .DA #9,#2,$$"38" + .DA #10,#2,$$"39" + .DA #11,#2,$$"3A" + .DA #12,#2,$$"3B" + .DA #13,#2,$$"3C" + .DA #14,#2,$$"3D" + .DA #15,#2,$$"3E" + .DA #16,#2,$$"3F" + .DA #18,#2,$$"50" + .DA #19,#2,$$"51" + .DA #20,#2,$$"52" + .DA #21,#2,$$"53" + .DA #22,#2,$$"54" + .DA #23,#2,$$"55" + .DA #24,#2,$$"56" + .DA #25,#2,$$"57" + .DA #26,#2,$$"58" + .DA #27,#2,$$"59" + .DA #28,#2,$$"5A" + .DA #29,#2,$$"5B" + .DA #30,#2,$$"5C" + .DA #31,#2,$$"5D" + .DA #32,#2,$$"5E" + .DA #33,#2,$$"5F" +ST.E .HS 00 +STD .DA STD.E+1-* + .DA #3,$$"STD" + .DA #18,#2,$$"70" + .DA #19,#2,$$"71" + .DA #20,#2,$$"72" + .DA #21,#2,$$"73" + .DA #22,#2,$$"74" + .DA #23,#2,$$"75" + .DA #24,#2,$$"76" + .DA #25,#2,$$"77" + .DA #26,#2,$$"78" + .DA #27,#2,$$"79" + .DA #28,#2,$$"7A" + .DA #29,#2,$$"7B" + .DA #30,#2,$$"7C" + .DA #31,#2,$$"7D" + .DA #32,#2,$$"7E" + .DA #33,#2,$$"7F" +STD.E .HS 00 +STP .DA STP.E+1-* + .DA #3,$$"STP" + .DA #18,#2,$$"90" + .DA #19,#2,$$"91" + .DA #20,#2,$$"92" + .DA #21,#2,$$"93" + .DA #22,#2,$$"94" + .DA #23,#2,$$"95" + .DA #24,#2,$$"96" + .DA #25,#2,$$"97" + .DA #26,#2,$$"98" + .DA #27,#2,$$"99" + .DA #28,#2,$$"9A" + .DA #29,#2,$$"9B" + .DA #30,#2,$$"9C" + .DA #31,#2,$$"9D" + .DA #32,#2,$$"9E" + .DA #33,#2,$$"9F" +STP.E .HS 00 +SUB .DA SUB.E+1-* + .DA #3,$$"SUB" + .DA #1,#2,$$"B0" + .DA #2,#2,$$"B1" + .DA #3,#2,$$"B2" + .DA #4,#2,$$"B3" + .DA #5,#2,$$"B4" + .DA #6,#2,$$"B5" + .DA #7,#2,$$"B6" + .DA #8,#2,$$"B7" + .DA #9,#2,$$"B8" + .DA #10,#2,$$"B9" + .DA #11,#2,$$"BA" + .DA #12,#2,$$"BB" + .DA #13,#2,$$"BC" + .DA #14,#2,$$"BD" + .DA #15,#2,$$"BE" + .DA #16,#2,$$"BF" SUB.E .HS 00 .HS 0000 *--------------------------------------- diff --git a/BIN/ASM.T.SW16.S.txt b/BIN/ASM.T.SW16.S.txt index 577ba2dc..9f1786fc 100644 --- a/BIN/ASM.T.SW16.S.txt +++ b/BIN/ASM.T.SW16.S.txt @@ -4,12 +4,6 @@ AUTO 4,1 .LIST OFF .OR $0 .TF /A2OSX.BUILD/BIN/DEV/ASM.T.SW16 -*--------------------------------------- - .MA PSTR - .DA #:1-*-1 - .AS "]1" -:1 .EQ * - .EM *--------------------------------------- .DA T.ADDR.MODES .DA T.REGISTERS diff --git a/BIN/ASM.T.Z80.A.txt b/BIN/ASM.T.Z80.A.txt index 7bb71c7a..67d1148a 100644 --- a/BIN/ASM.T.Z80.A.txt +++ b/BIN/ASM.T.Z80.A.txt @@ -3,210 +3,210 @@ PREFIX /A2OSX.BUILD AUTO 4,1 *--------------------------------------- T.ADDR.MODES .EQ * - >PSTR "A,(HL)" - >PSTR "A,(IX+a)" - >PSTR "A,(IY+a)" - >PSTR "A,A" - >PSTR "A,a" - >PSTR "A,B" - >PSTR "A,C" - >PSTR "A,D" - >PSTR "A,E" - >PSTR "A,H" - >PSTR "A,L" - >PSTR "HL,BC" - >PSTR "HL,DE" - >PSTR "HL,HL" - >PSTR "HL,SP" - >PSTR "IX,BC" - >PSTR "IX,DE" - >PSTR "IX,IX" - >PSTR "IX,SP" - >PSTR "IY,BC" - >PSTR "IY,DE" - >PSTR "IY,IY" - >PSTR "IY,SP" - >PSTR "(HL)" - >PSTR "(IX+a)" - >PSTR "(IY+a)" - >PSTR "A" - >PSTR "a" - >PSTR "B" - >PSTR "C" - >PSTR "D" - >PSTR "E" - >PSTR "H" - >PSTR "L" - >PSTR "aa" - >PSTR "BC" - >PSTR "DE" - >PSTR "HL" - >PSTR "IX" - >PSTR "IY" - >PSTR "SP" - >PSTR "(SP),HL" - >PSTR "(SP),IX" - >PSTR "(SP),IY" - >PSTR "DE,HL" - >PSTR "A,(a)" - >PSTR "A,(C)" - >PSTR "B,(C)" - >PSTR "C,(C)" - >PSTR "D,(C)" - >PSTR "E,(C)" - >PSTR "H,(C)" - >PSTR "L,(C)" - >PSTR "(IX)" - >PSTR "(IY)" - >PSTR "(aa),A" - >PSTR "(aa),BC" - >PSTR "(aa),DE" - >PSTR "(aa),HL" - >PSTR "(aa),IX" - >PSTR "(aa),IY" - >PSTR "(aa),SP" - >PSTR "(BC),A" - >PSTR "(DE),A" - >PSTR "(HL),A" - >PSTR "(HL),a" - >PSTR "(HL),B" - >PSTR "(HL),C" - >PSTR "(HL),D" - >PSTR "(HL),E" - >PSTR "(HL),H" - >PSTR "(HL),L" - >PSTR "(IX+a),A" - >PSTR "(IX+a),a" - >PSTR "(IX+a),B" - >PSTR "(IX+a),C" - >PSTR "(IX+a),D" - >PSTR "(IX+a),E" - >PSTR "(IX+a),H" - >PSTR "(IX+a),L" - >PSTR "(IY+a),A" - >PSTR "(IY+a),a" - >PSTR "(IY+a),B" - >PSTR "(IY+a),C" - >PSTR "(IY+a),D" - >PSTR "(IY+a),E" - >PSTR "(IY+a),H" - >PSTR "(IY+a),L" - >PSTR "A,(aa)" - >PSTR "A,(BC)" - >PSTR "A,(DE)" - >PSTR "A,I" - >PSTR "A,R" - >PSTR "B,(HL)" - >PSTR "B,(IX+a)" - >PSTR "B,(IY+a)" - >PSTR "B,A" - >PSTR "B,a" - >PSTR "B,B" - >PSTR "B,C" - >PSTR "B,D" - >PSTR "B,E" - >PSTR "B,H" - >PSTR "B,L" - >PSTR "BC,(aa)" - >PSTR "BC,aa" - >PSTR "C,(HL)" - >PSTR "C,(IX+a)" - >PSTR "C,(IY+a)" - >PSTR "C,A" - >PSTR "C,a" - >PSTR "C,B" - >PSTR "C,C" - >PSTR "C,D" - >PSTR "C,E" - >PSTR "C,H" - >PSTR "C,L" - >PSTR "D,(HL)" - >PSTR "D,(IX+a)" - >PSTR "D,(IY+a)" - >PSTR "D,A" - >PSTR "D,a" - >PSTR "D,B" - >PSTR "D,C" - >PSTR "D,D" - >PSTR "D,E" - >PSTR "D,H" - >PSTR "D,L" - >PSTR "DE,(aa)" - >PSTR "DE,aa" - >PSTR "E,(HL)" - >PSTR "E,(IX+a)" - >PSTR "E,(IY+a)" - >PSTR "E,A" - >PSTR "E,a" - >PSTR "E,B" - >PSTR "E,C" - >PSTR "E,D" - >PSTR "E,E" - >PSTR "E,H" - >PSTR "E,L" - >PSTR "H,(HL)" - >PSTR "H,(IX+a)" - >PSTR "H,(IY+a)" - >PSTR "H,A" - >PSTR "H,a" - >PSTR "H,B" - >PSTR "H,C" - >PSTR "H,D" - >PSTR "H,E" - >PSTR "H,H" - >PSTR "H,L" - >PSTR "HL,(aa)" - >PSTR "HL,aa" - >PSTR "I,A" - >PSTR "IX,(aa)" - >PSTR "IX,aa" - >PSTR "IY,(aa)" - >PSTR "IY,aa" - >PSTR "L,(HL)" - >PSTR "L,(IX+a)" - >PSTR "L,(IY+a)" - >PSTR "L,A" - >PSTR "L,a" - >PSTR "L,B" - >PSTR "L,C" - >PSTR "L,D" - >PSTR "L,E" - >PSTR "L,H" - >PSTR "L,L" - >PSTR "R,A" - >PSTR "SP,(aa)" - >PSTR "SP,aa" - >PSTR "SP,HL" - >PSTR "SP,IX" - >PSTR "SP,IY" - >PSTR "(a),A" - >PSTR "(C),A" - >PSTR "(C),B" - >PSTR "(C),C" - >PSTR "(C),D" - >PSTR "(C),E" - >PSTR "(C),H" - >PSTR "(C),L" - >PSTR "AF" + .DA #6,$$"A,(HL)" + .DA #8,$$"A,(IX+a)" + .DA #8,$$"A,(IY+a)" + .DA #3,$$"A,A" + .DA #3,$$"A,a" + .DA #3,$$"A,B" + .DA #3,$$"A,C" + .DA #3,$$"A,D" + .DA #3,$$"A,E" + .DA #3,$$"A,H" + .DA #3,$$"A,L" + .DA #5,$$"HL,BC" + .DA #5,$$"HL,DE" + .DA #5,$$"HL,HL" + .DA #5,$$"HL,SP" + .DA #5,$$"IX,BC" + .DA #5,$$"IX,DE" + .DA #5,$$"IX,IX" + .DA #5,$$"IX,SP" + .DA #5,$$"IY,BC" + .DA #5,$$"IY,DE" + .DA #5,$$"IY,IY" + .DA #5,$$"IY,SP" + .DA #4,$$"(HL)" + .DA #6,$$"(IX+a)" + .DA #6,$$"(IY+a)" + .DA #1,$$"A" + .DA #1,$$"a" + .DA #1,$$"B" + .DA #1,$$"C" + .DA #1,$$"D" + .DA #1,$$"E" + .DA #1,$$"H" + .DA #1,$$"L" + .DA #2,$$"aa" + .DA #2,$$"BC" + .DA #2,$$"DE" + .DA #2,$$"HL" + .DA #2,$$"IX" + .DA #2,$$"IY" + .DA #2,$$"SP" + .DA #7,$$"(SP),HL" + .DA #7,$$"(SP),IX" + .DA #7,$$"(SP),IY" + .DA #5,$$"DE,HL" + .DA #5,$$"A,(a)" + .DA #5,$$"A,(C)" + .DA #5,$$"B,(C)" + .DA #5,$$"C,(C)" + .DA #5,$$"D,(C)" + .DA #5,$$"E,(C)" + .DA #5,$$"H,(C)" + .DA #5,$$"L,(C)" + .DA #4,$$"(IX)" + .DA #4,$$"(IY)" + .DA #6,$$"(aa),A" + .DA #7,$$"(aa),BC" + .DA #7,$$"(aa),DE" + .DA #7,$$"(aa),HL" + .DA #7,$$"(aa),IX" + .DA #7,$$"(aa),IY" + .DA #7,$$"(aa),SP" + .DA #6,$$"(BC),A" + .DA #6,$$"(DE),A" + .DA #6,$$"(HL),A" + .DA #6,$$"(HL),a" + .DA #6,$$"(HL),B" + .DA #6,$$"(HL),C" + .DA #6,$$"(HL),D" + .DA #6,$$"(HL),E" + .DA #6,$$"(HL),H" + .DA #6,$$"(HL),L" + .DA #8,$$"(IX+a),A" + .DA #8,$$"(IX+a),a" + .DA #8,$$"(IX+a),B" + .DA #8,$$"(IX+a),C" + .DA #8,$$"(IX+a),D" + .DA #8,$$"(IX+a),E" + .DA #8,$$"(IX+a),H" + .DA #8,$$"(IX+a),L" + .DA #8,$$"(IY+a),A" + .DA #8,$$"(IY+a),a" + .DA #8,$$"(IY+a),B" + .DA #8,$$"(IY+a),C" + .DA #8,$$"(IY+a),D" + .DA #8,$$"(IY+a),E" + .DA #8,$$"(IY+a),H" + .DA #8,$$"(IY+a),L" + .DA #6,$$"A,(aa)" + .DA #6,$$"A,(BC)" + .DA #6,$$"A,(DE)" + .DA #3,$$"A,I" + .DA #3,$$"A,R" + .DA #6,$$"B,(HL)" + .DA #8,$$"B,(IX+a)" + .DA #8,$$"B,(IY+a)" + .DA #3,$$"B,A" + .DA #3,$$"B,a" + .DA #3,$$"B,B" + .DA #3,$$"B,C" + .DA #3,$$"B,D" + .DA #3,$$"B,E" + .DA #3,$$"B,H" + .DA #3,$$"B,L" + .DA #7,$$"BC,(aa)" + .DA #5,$$"BC,aa" + .DA #6,$$"C,(HL)" + .DA #8,$$"C,(IX+a)" + .DA #8,$$"C,(IY+a)" + .DA #3,$$"C,A" + .DA #3,$$"C,a" + .DA #3,$$"C,B" + .DA #3,$$"C,C" + .DA #3,$$"C,D" + .DA #3,$$"C,E" + .DA #3,$$"C,H" + .DA #3,$$"C,L" + .DA #6,$$"D,(HL)" + .DA #8,$$"D,(IX+a)" + .DA #8,$$"D,(IY+a)" + .DA #3,$$"D,A" + .DA #3,$$"D,a" + .DA #3,$$"D,B" + .DA #3,$$"D,C" + .DA #3,$$"D,D" + .DA #3,$$"D,E" + .DA #3,$$"D,H" + .DA #3,$$"D,L" + .DA #7,$$"DE,(aa)" + .DA #5,$$"DE,aa" + .DA #6,$$"E,(HL)" + .DA #8,$$"E,(IX+a)" + .DA #8,$$"E,(IY+a)" + .DA #3,$$"E,A" + .DA #3,$$"E,a" + .DA #3,$$"E,B" + .DA #3,$$"E,C" + .DA #3,$$"E,D" + .DA #3,$$"E,E" + .DA #3,$$"E,H" + .DA #3,$$"E,L" + .DA #6,$$"H,(HL)" + .DA #8,$$"H,(IX+a)" + .DA #8,$$"H,(IY+a)" + .DA #3,$$"H,A" + .DA #3,$$"H,a" + .DA #3,$$"H,B" + .DA #3,$$"H,C" + .DA #3,$$"H,D" + .DA #3,$$"H,E" + .DA #3,$$"H,H" + .DA #3,$$"H,L" + .DA #7,$$"HL,(aa)" + .DA #5,$$"HL,aa" + .DA #3,$$"I,A" + .DA #7,$$"IX,(aa)" + .DA #5,$$"IX,aa" + .DA #7,$$"IY,(aa)" + .DA #5,$$"IY,aa" + .DA #6,$$"L,(HL)" + .DA #8,$$"L,(IX+a)" + .DA #8,$$"L,(IY+a)" + .DA #3,$$"L,A" + .DA #3,$$"L,a" + .DA #3,$$"L,B" + .DA #3,$$"L,C" + .DA #3,$$"L,D" + .DA #3,$$"L,E" + .DA #3,$$"L,H" + .DA #3,$$"L,L" + .DA #3,$$"R,A" + .DA #7,$$"SP,(aa)" + .DA #5,$$"SP,aa" + .DA #5,$$"SP,HL" + .DA #5,$$"SP,IX" + .DA #5,$$"SP,IY" + .DA #5,$$"(a),A" + .DA #5,$$"(C),A" + .DA #5,$$"(C),B" + .DA #5,$$"(C),C" + .DA #5,$$"(C),D" + .DA #5,$$"(C),E" + .DA #5,$$"(C),H" + .DA #5,$$"(C),L" + .DA #2,$$"AF" .HS 00 *--------------------------------------- T.REGISTERS .EQ * - >PSTR "A" - >PSTR "HL" - >PSTR "IX" - >PSTR "IY" - >PSTR "B" - >PSTR "C" - >PSTR "D" - >PSTR "E" - >PSTR "H" - >PSTR "L" - >PSTR "BC" - >PSTR "DE" - >PSTR "SP" - >PSTR "I" - >PSTR "R" - >PSTR "AF" + .DA #1,$$"A" + .DA #2,$$"HL" + .DA #2,$$"IX" + .DA #2,$$"IY" + .DA #1,$$"B" + .DA #1,$$"C" + .DA #1,$$"D" + .DA #1,$$"E" + .DA #1,$$"H" + .DA #1,$$"L" + .DA #2,$$"BC" + .DA #2,$$"DE" + .DA #2,$$"SP" + .DA #1,$$"I" + .DA #1,$$"R" + .DA #2,$$"AF" .HS 00 *--------------------------------------- MAN diff --git a/BIN/ASM.T.Z80.O.txt b/BIN/ASM.T.Z80.O.txt index 458cc368..cd991067 100644 --- a/BIN/ASM.T.Z80.O.txt +++ b/BIN/ASM.T.Z80.O.txt @@ -3,1777 +3,1077 @@ PREFIX /A2OSX.BUILD AUTO 4,1 *--------------------------------------- T.OPCODES .EQ * -ADC .DA ADC.E+1-* - >PSTR "ADC" - .HS 01 - >PSTR "8E" - .HS 02 - >PSTR "DD8Ea" - .HS 03 - >PSTR "FD8Ea" - .HS 04 - >PSTR "8F" - .HS 05 - >PSTR "CEa" - .HS 06 - >PSTR "88" - .HS 07 - >PSTR "89" - .HS 08 - >PSTR "8A" - .HS 09 - >PSTR "8B" - .HS 0A - >PSTR "8C" - .HS 0B - >PSTR "8D" - .HS 0C - >PSTR "ED4A" - .HS 0D - >PSTR "ED5A" - .HS 0E - >PSTR "ED6A" - .HS 0F - >PSTR "ED7A" -ADC.E .HS 00 -ADD .DA ADD.E+1-* - >PSTR "ADD" - .HS 01 - >PSTR "86" - .HS 02 - >PSTR "DD86a" - .HS 03 - >PSTR "FD86a" - .HS 04 - >PSTR "87" - .HS 05 - >PSTR "C6a" - .HS 06 - >PSTR "80" - .HS 07 - >PSTR "81" - .HS 08 - >PSTR "82" - .HS 09 - >PSTR "83" - .HS 0A - >PSTR "84" - .HS 0B - >PSTR "85" - .HS 0C - >PSTR "09" - .HS 0D - >PSTR "19" - .HS 0E - >PSTR "29" - .HS 0F - >PSTR "39" - .HS 10 - >PSTR "DD09" - .HS 11 - >PSTR "DD19" - .HS 12 - >PSTR "DD29" - .HS 13 - >PSTR "DD39" - .HS 14 - >PSTR "FD09" - .HS 15 - >PSTR "FD19" - .HS 16 - >PSTR "FD29" - .HS 17 - >PSTR "FD39" -ADD.E .HS 00 -AND .DA AND.E+1-* - >PSTR "AND" - .HS 18 - >PSTR "A6" - .HS 19 - >PSTR "DDA6a" - .HS 1A - >PSTR "FDA6a" - .HS 1B - >PSTR "A7" - .HS 1C - >PSTR "E6a" - .HS 1D - >PSTR "A0" - .HS 1E - >PSTR "A1" - .HS 1F - >PSTR "A2" - .HS 20 - >PSTR "A3" - .HS 21 - >PSTR "A4" - .HS 22 - >PSTR "A5" -AND.E .HS 00 -BIT0 .DA BIT0.E+1-* - >PSTR "BIT0" - .HS 18 - >PSTR "CB46" - .HS 19 - >PSTR "DDCBa46" - .HS 1A - >PSTR "FDCBa46" - .HS 1B - >PSTR "CB47" - .HS 1D - >PSTR "CB40" - .HS 1E - >PSTR "CB41" - .HS 1F - >PSTR "CB42" - .HS 20 - >PSTR "CB43" - .HS 21 - >PSTR "CB44" - .HS 22 - >PSTR "CB45" -BIT0.E .HS 00 -BIT1 .DA BIT1.E+1-* - >PSTR "BIT1" - .HS 18 - >PSTR "CB4E" - .HS 19 - >PSTR "DDCBa4E" - .HS 1A - >PSTR "FDCBa4E" - .HS 1B - >PSTR "CB4F" - .HS 1D - >PSTR "CB48" - .HS 1E - >PSTR "CB49" - .HS 1F - >PSTR "CB4A" - .HS 20 - >PSTR "CB4B" - .HS 21 - >PSTR "CB4C" - .HS 22 - >PSTR "CB4D" -BIT1.E .HS 00 -BIT2 .DA BIT2.E+1-* - >PSTR "BIT2" - .HS 18 - >PSTR "CB56" - .HS 19 - >PSTR "DDCBa56" - .HS 1A - >PSTR "FDCBa56" - .HS 1B - >PSTR "CB57" - .HS 1D - >PSTR "CB50" - .HS 1E - >PSTR "CB51" - .HS 1F - >PSTR "CB52" - .HS 20 - >PSTR "CB53" - .HS 21 - >PSTR "CB54" - .HS 22 - >PSTR "CB55" -BIT2.E .HS 00 -BIT3 .DA BIT3.E+1-* - >PSTR "BIT3" - .HS 18 - >PSTR "CB5E" - .HS 19 - >PSTR "DDCBa5E" - .HS 1A - >PSTR "FDCBa5E" - .HS 1B - >PSTR "CB5F" - .HS 1D - >PSTR "CB58" - .HS 1E - >PSTR "CB59" - .HS 1F - >PSTR "CB5A" - .HS 20 - >PSTR "CB5B" - .HS 21 - >PSTR "CB5C" - .HS 22 - >PSTR "CB5D" -BIT3.E .HS 00 -BIT4 .DA BIT4.E+1-* - >PSTR "BIT4" - .HS 18 - >PSTR "CB66" - .HS 19 - >PSTR "DDCBa66" - .HS 1A - >PSTR "FDCBa66" - .HS 1B - >PSTR "CB67" - .HS 1D - >PSTR "CB60" - .HS 1E - >PSTR "CB61" - .HS 1F - >PSTR "CB62" - .HS 20 - >PSTR "CB63" - .HS 21 - >PSTR "CB64" - .HS 22 - >PSTR "CB65" -BIT4.E .HS 00 -BIT5 .DA BIT5.E+1-* - >PSTR "BIT5" - .HS 18 - >PSTR "CB6E" - .HS 19 - >PSTR "DDCBa6E" - .HS 1A - >PSTR "FDCBa6E" - .HS 1B - >PSTR "CB6F" - .HS 1D - >PSTR "CB68" - .HS 1E - >PSTR "CB69" - .HS 1F - >PSTR "CB6A" - .HS 20 - >PSTR "CB6B" - .HS 21 - >PSTR "CB6C" - .HS 22 - >PSTR "CB6D" -BIT5.E .HS 00 -BIT6 .DA BIT6.E+1-* - >PSTR "BIT6" - .HS 18 - >PSTR "CB76" - .HS 19 - >PSTR "DDCBa76" - .HS 1A - >PSTR "FDCBa76" - .HS 1B - >PSTR "CB77" - .HS 1D - >PSTR "CB70" - .HS 1E - >PSTR "CB71" - .HS 1F - >PSTR "CB72" - .HS 20 - >PSTR "CB73" - .HS 21 - >PSTR "CB74" - .HS 22 - >PSTR "CB75" -BIT6.E .HS 00 -BIT7 .DA BIT7.E+1-* - >PSTR "BIT7" - .HS 18 - >PSTR "CB7E" - .HS 19 - >PSTR "DDCBa7E" - .HS 1A - >PSTR "FDCBa7E" - .HS 1B - >PSTR "CB7F" - .HS 1D - >PSTR "CB78" - .HS 1E - >PSTR "CB79" - .HS 1F - >PSTR "CB7A" - .HS 20 - >PSTR "CB7B" - .HS 21 - >PSTR "CB7C" - .HS 22 - >PSTR "CB7D" -BIT7.E .HS 00 -CALL .DA CALL.E+1-* - >PSTR "CALL" - .HS 23 - >PSTR "CDaa" -CALL.E .HS 00 -CALLC .DA CALLC.E+1-* - >PSTR "CALLC" - .HS 23 - >PSTR "DCaa" -CALLC.E .HS 00 -CALLM .DA CALLM.E+1-* - >PSTR "CALLM" - .HS 23 - >PSTR "FCaa" -CALLM.E .HS 00 -CALLNC .DA CALLNC.E+1-* - >PSTR "CALLNC" - .HS 23 - >PSTR "D4aa" -CALLNC.E .HS 00 -CALLNZ .DA CALLNZ.E+1-* - >PSTR "CALLNZ" - .HS 23 - >PSTR "C4aa" -CALLNZ.E .HS 00 -CALLP .DA CALLP.E+1-* - >PSTR "CALLP" - .HS 23 - >PSTR "F4aa" -CALLP.E .HS 00 -CALLPE .DA CALLPE.E+1-* - >PSTR "CALLPE" - .HS 23 - >PSTR "ECaa" -CALLPE.E .HS 00 -CALLPO .DA CALLPO.E+1-* - >PSTR "CALLPO" - .HS 23 - >PSTR "E4aa" -CALLPO.E .HS 00 -CALLZ .DA CALLZ.E+1-* - >PSTR "CALLZ" - .HS 23 - >PSTR "CCaa" -CALLZ.E .HS 00 -CCF .DA CCF.E+1-* - >PSTR "CCF" - .HS FF - >PSTR "3F" -CCF.E .HS 00 -CP .DA CP.E+1-* - >PSTR "CP" - .HS 18 - >PSTR "BE" - .HS 19 - >PSTR "DDBEa" - .HS 1A - >PSTR "FDBEa" - .HS 1B - >PSTR "BF" - .HS 1C - >PSTR "FEa" - .HS 1D - >PSTR "B8" - .HS 1E - >PSTR "B9" - .HS 1F - >PSTR "BA" - .HS 20 - >PSTR "BB" - .HS 21 - >PSTR "BC" - .HS 22 - >PSTR "BD" -CP.E .HS 00 -CPD .DA CPD.E+1-* - >PSTR "CPD" - .HS FF - >PSTR "EDA9" -CPD.E .HS 00 -CPDR .DA CPDR.E+1-* - >PSTR "CPDR" - .HS FF - >PSTR "EDB9" -CPDR.E .HS 00 -CPI .DA CPI.E+1-* - >PSTR "CPI" - .HS FF - >PSTR "EDA1" -CPI.E .HS 00 -CPIR .DA CPIR.E+1-* - >PSTR "CPIR" - .HS FF - >PSTR "EDB1" -CPIR.E .HS 00 -CPL .DA CPL.E+1-* - >PSTR "CPL" - .HS FF - >PSTR "2F" -CPL.E .HS 00 -DAA .DA DAA.E+1-* - >PSTR "DAA" - .HS FF - >PSTR "27" -DAA.E .HS 00 -DEC .DA DEC.E+1-* - >PSTR "DEC" - .HS 18 - >PSTR "35" - .HS 19 - >PSTR "DD35a" - .HS 1A - >PSTR "FD35a" - .HS 1B - >PSTR "3D" - .HS 1D - >PSTR "05" - .HS 24 - >PSTR "0B" - .HS 1E - >PSTR "0D" - .HS 1F - >PSTR "15" - .HS 25 - >PSTR "1B" - .HS 20 - >PSTR "1D" - .HS 21 - >PSTR "25" - .HS 26 - >PSTR "2B" - .HS 27 - >PSTR "DD2B" - .HS 28 - >PSTR "FD2B" - .HS 22 - >PSTR "2D" - .HS 29 - >PSTR "3B" -DEC.E .HS 00 -DI .DA DI.E+1-* - >PSTR "DI" - .HS FF - >PSTR "F3" -DI.E .HS 00 -DJNZ .DA DJNZ.E+1-* - >PSTR "DJNZ" - .HS 23 - >PSTR "10r" -DJNZ.E .HS 00 -EI .DA EI.E+1-* - >PSTR "EI" - .HS FF - >PSTR "FB" -EI.E .HS 00 -EX .DA EX.E+1-* - >PSTR "EX" - .HS 2A - >PSTR "E3" - .HS 2B - >PSTR "DDE3" - .HS 2C - >PSTR "FDE3" - .HS 2D - >PSTR "EB" - .HS FF - >PSTR "08" -EX.E .HS 00 -EXX .DA EXX.E+1-* - >PSTR "EXX" - .HS FF - >PSTR "D9" -EXX.E .HS 00 -HLT .DA HLT.E+1-* - >PSTR "HLT" - .HS FF - >PSTR "76" -HLT.E .HS 00 -IM0 .DA IM0.E+1-* - >PSTR "IM0" - .HS FF - >PSTR "ED46" -IM0.E .HS 00 -IM1 .DA IM1.E+1-* - >PSTR "IM1" - .HS FF - >PSTR "ED56" -IM1.E .HS 00 -IM2 .DA IM2.E+1-* - >PSTR "IM2" - .HS FF - >PSTR "ED5E" -IM2.E .HS 00 -IN .DA IN.E+1-* - >PSTR "IN" - .HS 2E - >PSTR "DBa" - .HS 2F - >PSTR "ED78" - .HS 30 - >PSTR "ED40" - .HS 31 - >PSTR "ED48" - .HS 32 - >PSTR "ED50" - .HS 33 - >PSTR "ED58" - .HS 34 - >PSTR "ED60" - .HS 35 - >PSTR "ED68" -IN.E .HS 00 -INC .DA INC.E+1-* - >PSTR "INC" - .HS 18 - >PSTR "34" - .HS 19 - >PSTR "DD34a" - .HS 1A - >PSTR "FD34a" - .HS 1B - >PSTR "3C" - .HS 1D - >PSTR "04" - .HS 24 - >PSTR "03" - .HS 1E - >PSTR "0C" - .HS 1F - >PSTR "14" - .HS 25 - >PSTR "13" - .HS 20 - >PSTR "1C" - .HS 21 - >PSTR "24" - .HS 26 - >PSTR "23" - .HS 27 - >PSTR "DD23" - .HS 28 - >PSTR "FD23" - .HS 22 - >PSTR "2C" - .HS 29 - >PSTR "33" -INC.E .HS 00 -IND .DA IND.E+1-* - >PSTR "IND" - .HS FF - >PSTR "EDAA" -IND.E .HS 00 -INDR .DA INDR.E+1-* - >PSTR "INDR" - .HS FF - >PSTR "EDBA" -INDR.E .HS 00 -INI .DA INI.E+1-* - >PSTR "INI" - .HS FF - >PSTR "EDA2" -INI.E .HS 00 -INIR .DA INIR.E+1-* - >PSTR "INIR" - .HS FF - >PSTR "EDB2" -INIR.E .HS 00 -JP .DA JP.E+1-* - >PSTR "JP" - .HS 18 - >PSTR "E9" - .HS 36 - >PSTR "DDE9" - .HS 37 - >PSTR "FDE9" - .HS 23 - >PSTR "C3aa" -JP.E .HS 00 -JPC .DA JPC.E+1-* - >PSTR "JPC" - .HS 23 - >PSTR "DAaa" -JPC.E .HS 00 -JPM .DA JPM.E+1-* - >PSTR "JPM" - .HS 23 - >PSTR "FAaa" -JPM.E .HS 00 -JPNC .DA JPNC.E+1-* - >PSTR "JPNC" - .HS 23 - >PSTR "D2aa" -JPNC.E .HS 00 -JPNZ .DA JPNZ.E+1-* - >PSTR "JPNZ" - .HS 23 - >PSTR "C2aa" -JPNZ.E .HS 00 -JPP .DA JPP.E+1-* - >PSTR "JPP" - .HS 23 - >PSTR "F2aa" -JPP.E .HS 00 -JPPE .DA JPPE.E+1-* - >PSTR "JPPE" - .HS 23 - >PSTR "EAaa" -JPPE.E .HS 00 -JPPO .DA JPPO.E+1-* - >PSTR "JPPO" - .HS 23 - >PSTR "E2aa" -JPPO.E .HS 00 -JPZ .DA JPZ.E+1-* - >PSTR "JPZ" - .HS 23 - >PSTR "CAaa" -JPZ.E .HS 00 -JR .DA JR.E+1-* - >PSTR "JR" - .HS 23 - >PSTR "18r" -JR.E .HS 00 -JRC .DA JRC.E+1-* - >PSTR "JRC" - .HS 23 - >PSTR "38r" -JRC.E .HS 00 -JRNC .DA JRNC.E+1-* - >PSTR "JRNC" - .HS 23 - >PSTR "30r" -JRNC.E .HS 00 -JRNZ .DA JRNZ.E+1-* - >PSTR "JRNZ" - .HS 23 - >PSTR "20r" -JRNZ.E .HS 00 -JRZ .DA JRZ.E+1-* - >PSTR "JRZ" - .HS 23 - >PSTR "28r" -JRZ.E .HS 00 -LD .DA LD.E+1-* - >PSTR "LD" - .HS 38 - >PSTR "32aa" - .HS 39 - >PSTR "ED43aa" - .HS 3A - >PSTR "ED53aa" - .HS 3B - >PSTR "22aa" - .HS 3B - >PSTR "ED6Baa" - .HS 3C - >PSTR "DD22aa" - .HS 3D - >PSTR "DD22aa" - .HS 3E - >PSTR "ED73aa" - .HS 3F - >PSTR "02" - .HS 40 - >PSTR "12" - .HS 41 - >PSTR "77" - .HS 42 - >PSTR "36a" - .HS 43 - >PSTR "70" - .HS 44 - >PSTR "71" - .HS 45 - >PSTR "72" - .HS 46 - >PSTR "73" - .HS 47 - >PSTR "74" - .HS 48 - >PSTR "75" - .HS 49 - >PSTR "DD77a" - .HS 4A - >PSTR "DD36aa" - .HS 4A - >PSTR "DD76aa" - .HS 4B - >PSTR "DD70a" - .HS 4C - >PSTR "DD71a" - .HS 4D - >PSTR "DD72a" - .HS 4E - >PSTR "DD73a" - .HS 4F - >PSTR "DD74a" - .HS 50 - >PSTR "DD75a" - .HS 51 - >PSTR "FD77a" - .HS 52 - >PSTR "FD36aa" - .HS 52 - >PSTR "FD76aa" - .HS 53 - >PSTR "FD70a" - .HS 54 - >PSTR "FD71a" - .HS 55 - >PSTR "FD72a" - .HS 56 - >PSTR "FD73a" - .HS 57 - >PSTR "FD74a" - .HS 58 - >PSTR "FD75a" - .HS 59 - >PSTR "3Aaa" - .HS 5A - >PSTR "0A" - .HS 5B - >PSTR "1A" - .HS 01 - >PSTR "7E" - .HS 02 - >PSTR "DD7Ea" - .HS 03 - >PSTR "FD7Ea" - .HS 04 - >PSTR "7F" - .HS 05 - >PSTR "3Ea" - .HS 06 - >PSTR "78" - .HS 07 - >PSTR "79" - .HS 08 - >PSTR "7A" - .HS 09 - >PSTR "7B" - .HS 0A - >PSTR "7C" - .HS 5C - >PSTR "ED57" - .HS 0B - >PSTR "7D" - .HS 5D - >PSTR "ED5F" - .HS 5E - >PSTR "46" - .HS 5F - >PSTR "DD46r" - .HS 60 - >PSTR "FD46r" - .HS 61 - >PSTR "47" - .HS 62 - >PSTR "06a" - .HS 63 - >PSTR "40" - .HS 64 - >PSTR "41" - .HS 65 - >PSTR "42" - .HS 66 - >PSTR "43" - .HS 67 - >PSTR "44" - .HS 68 - >PSTR "45" - .HS 69 - >PSTR "ED4Baa" - .HS 6A - >PSTR "01aa" - .HS 6B - >PSTR "4E" - .HS 6C - >PSTR "DD4Er" - .HS 6D - >PSTR "FD4Er" - .HS 6E - >PSTR "4F" - .HS 6F - >PSTR "0Ea" - .HS 70 - >PSTR "48" - .HS 71 - >PSTR "49" - .HS 72 - >PSTR "4A" - .HS 73 - >PSTR "4B" - .HS 74 - >PSTR "4C" - .HS 75 - >PSTR "4D" - .HS 76 - >PSTR "56" - .HS 77 - >PSTR "DD56a" - .HS 78 - >PSTR "FD56a" - .HS 79 - >PSTR "57" - .HS 7A - >PSTR "16a" - .HS 7B - >PSTR "50" - .HS 7C - >PSTR "51" - .HS 7D - >PSTR "52" - .HS 7E - >PSTR "53" - .HS 7F - >PSTR "54" - .HS 80 - >PSTR "55" - .HS 81 - >PSTR "ED5Baa" - .HS 82 - >PSTR "11aa" - .HS 83 - >PSTR "5E" - .HS 84 - >PSTR "DD5Ea" - .HS 85 - >PSTR "FD5Ea" - .HS 86 - >PSTR "5F" - .HS 87 - >PSTR "1Ea" - .HS 88 - >PSTR "58" - .HS 89 - >PSTR "59" - .HS 8A - >PSTR "5A" - .HS 8B - >PSTR "5B" - .HS 8C - >PSTR "5C" - .HS 8D - >PSTR "5D" - .HS 8E - >PSTR "66" - .HS 8F - >PSTR "DD66a" - .HS 90 - >PSTR "FD66a" - .HS 91 - >PSTR "67" - .HS 92 - >PSTR "26a" - .HS 93 - >PSTR "60" - .HS 94 - >PSTR "61" - .HS 95 - >PSTR "62" - .HS 96 - >PSTR "63" - .HS 97 - >PSTR "64" - .HS 98 - >PSTR "65" - .HS 99 - >PSTR "2Aaa" - .HS 99 - >PSTR "ED6Baa" - .HS 9A - >PSTR "21aa" - .HS 9B - >PSTR "ED47" - .HS 9C - >PSTR "DD2Aaa" - .HS 9D - >PSTR "DD21aa" - .HS 9E - >PSTR "FD2Aaa" - .HS 9F - >PSTR "FD21aa" - .HS A0 - >PSTR "6E" - .HS A1 - >PSTR "DD6Ea" - .HS A2 - >PSTR "FD6Ea" - .HS A3 - >PSTR "6F" - .HS A4 - >PSTR "2Ea" - .HS A5 - >PSTR "68" - .HS A6 - >PSTR "69" - .HS A7 - >PSTR "6A" - .HS A8 - >PSTR "6B" - .HS A9 - >PSTR "6C" - .HS AA - >PSTR "6D" - .HS AB - >PSTR "ED4F" - .HS AC - >PSTR "ED7Baa" - .HS AD - >PSTR "31aa" - .HS AE - >PSTR "F9" - .HS AF - >PSTR "DDF9" - .HS B0 - >PSTR "FDF9" -LD.E .HS 00 -LDD .DA LDD.E+1-* - >PSTR "LDD" - .HS FF - >PSTR "EDA8" -LDD.E .HS 00 -LDDR .DA LDDR.E+1-* - >PSTR "LDDR" - .HS FF - >PSTR "EDB8" -LDDR.E .HS 00 -LDI .DA LDI.E+1-* - >PSTR "LDI" - .HS FF - >PSTR "EDA0" -LDI.E .HS 00 -LDIR .DA LDIR.E+1-* - >PSTR "LDIR" - .HS FF - >PSTR "EDB0" -LDIR.E .HS 00 -NEG .DA NEG.E+1-* - >PSTR "NEG" - .HS FF - >PSTR "ED44" -NEG.E .HS 00 -NOP .DA NOP.E+1-* - >PSTR "NOP" - .HS FF - >PSTR "00" -NOP.E .HS 00 -OR .DA OR.E+1-* - >PSTR "OR" - .HS 18 - >PSTR "B6" - .HS 19 - >PSTR "DDB6a" - .HS 1A - >PSTR "FDB6a" - .HS 1B - >PSTR "B7" - .HS 1C - >PSTR "F6a" - .HS 1D - >PSTR "B0" - .HS 1E - >PSTR "B1" - .HS 1F - >PSTR "B2" - .HS 20 - >PSTR "B3" - .HS 21 - >PSTR "B4" - .HS 22 - >PSTR "B5" -OR.E .HS 00 -OTDR .DA OTDR.E+1-* - >PSTR "OTDR" - .HS FF - >PSTR "EDBB" -OTDR.E .HS 00 -OTIR .DA OTIR.E+1-* - >PSTR "OTIR" - .HS FF - >PSTR "EDB3" -OTIR.E .HS 00 -OUT .DA OUT.E+1-* - >PSTR "OUT" - .HS B1 - >PSTR "D3a" - .HS B2 - >PSTR "ED79" - .HS B3 - >PSTR "ED41" - .HS B4 - >PSTR "ED49" - .HS B5 - >PSTR "ED51" - .HS B6 - >PSTR "ED59" - .HS B7 - >PSTR "ED61" - .HS B8 - >PSTR "ED69" -OUT.E .HS 00 -OUTD .DA OUTD.E+1-* - >PSTR "OUTD" - .HS FF - >PSTR "EDAB" -OUTD.E .HS 00 -OUTI .DA OUTI.E+1-* - >PSTR "OUTI" - .HS FF - >PSTR "EDA3" -OUTI.E .HS 00 -POP .DA POP.E+1-* - >PSTR "POP" - .HS B9 - >PSTR "F1" - .HS 24 - >PSTR "C1" - .HS 25 - >PSTR "D1" - .HS 26 - >PSTR "E1" - .HS 27 - >PSTR "DDE1" - .HS 28 - >PSTR "FDE1" -POP.E .HS 00 -PUSH .DA PUSH.E+1-* - >PSTR "PUSH" - .HS B9 - >PSTR "F5" - .HS 24 - >PSTR "C5" - .HS 25 - >PSTR "D5" - .HS 26 - >PSTR "E5" - .HS 27 - >PSTR "DDE5" - .HS 28 - >PSTR "FDE5" -PUSH.E .HS 00 -RES0 .DA RES0.E+1-* - >PSTR "RES0" - .HS 18 - >PSTR "CB86" - .HS 19 - >PSTR "DDCBa86" - .HS 1A - >PSTR "FDCBa86" - .HS 1B - >PSTR "CB87" - .HS 1D - >PSTR "CB80" - .HS 1E - >PSTR "CB81" - .HS 1F - >PSTR "CB82" - .HS 20 - >PSTR "CB83" - .HS 21 - >PSTR "CB84" - .HS 22 - >PSTR "CB85" -RES0.E .HS 00 -RES1 .DA RES1.E+1-* - >PSTR "RES1" - .HS 18 - >PSTR "CB8E" - .HS 19 - >PSTR "DDCBa8E" - .HS 1A - >PSTR "FDCBa8E" - .HS 1B - >PSTR "CB8F" - .HS 1D - >PSTR "CB88" - .HS 1E - >PSTR "CB89" - .HS 1F - >PSTR "CB8A" - .HS 20 - >PSTR "CB8B" - .HS 21 - >PSTR "CB8C" - .HS 22 - >PSTR "CB8D" -RES1.E .HS 00 -RES2 .DA RES2.E+1-* - >PSTR "RES2" - .HS 18 - >PSTR "CB96" - .HS 19 - >PSTR "DDCBa96" - .HS 1A - >PSTR "FDCBa96" - .HS 1B - >PSTR "CB97" - .HS 1D - >PSTR "CB90" - .HS 1E - >PSTR "CB91" - .HS 1F - >PSTR "CB92" - .HS 20 - >PSTR "CB93" - .HS 21 - >PSTR "CB94" - .HS 22 - >PSTR "CB95" -RES2.E .HS 00 -RES3 .DA RES3.E+1-* - >PSTR "RES3" - .HS 18 - >PSTR "CB9E" - .HS 19 - >PSTR "DDCBa9E" - .HS 1A - >PSTR "FDCBa9E" - .HS 1B - >PSTR "CB9F" - .HS 1D - >PSTR "CB98" - .HS 1E - >PSTR "CB99" - .HS 1F - >PSTR "CB9A" - .HS 20 - >PSTR "CB9B" - .HS 21 - >PSTR "CB9C" - .HS 22 - >PSTR "CB9D" -RES3.E .HS 00 -RES4 .DA RES4.E+1-* - >PSTR "RES4" - .HS 18 - >PSTR "CBA6" - .HS 19 - >PSTR "DDCBaA6" - .HS 1A - >PSTR "FDCBaA6" - .HS 1B - >PSTR "CBA7" - .HS 1D - >PSTR "CBA0" - .HS 1E - >PSTR "CBA1" - .HS 1F - >PSTR "CBA2" - .HS 20 - >PSTR "CBA3" - .HS 21 - >PSTR "CBA4" - .HS 22 - >PSTR "CBA5" -RES4.E .HS 00 -RES5 .DA RES5.E+1-* - >PSTR "RES5" - .HS 18 - >PSTR "CBAE" - .HS 19 - >PSTR "DDCBaAE" - .HS 1A - >PSTR "FDCBaAE" - .HS 1B - >PSTR "CBAF" - .HS 1D - >PSTR "CBA8" - .HS 1E - >PSTR "CBA9" - .HS 1F - >PSTR "CBAA" - .HS 20 - >PSTR "CBAB" - .HS 21 - >PSTR "CBAC" - .HS 22 - >PSTR "CBAD" -RES5.E .HS 00 -RES6 .DA RES6.E+1-* - >PSTR "RES6" - .HS 18 - >PSTR "CBB6" - .HS 19 - >PSTR "DDCBaB6" - .HS 1A - >PSTR "FDCBaB6" - .HS 1B - >PSTR "CBB7" - .HS 1D - >PSTR "CBB0" - .HS 1E - >PSTR "CBB1" - .HS 1F - >PSTR "CBB2" - .HS 20 - >PSTR "CBB3" - .HS 21 - >PSTR "CBB4" - .HS 22 - >PSTR "CBB5" -RES6.E .HS 00 -RES7 .DA RES7.E+1-* - >PSTR "RES7" - .HS 18 - >PSTR "CBBE" - .HS 19 - >PSTR "DDCBaBE" - .HS 1A - >PSTR "FDCBaBE" - .HS 1B - >PSTR "CBBF" - .HS 1D - >PSTR "CBB8" - .HS 1E - >PSTR "CBB9" - .HS 1F - >PSTR "CBBA" - .HS 20 - >PSTR "CBBB" - .HS 21 - >PSTR "CBBC" - .HS 22 - >PSTR "CBBD" -RES7.E .HS 00 -RET .DA RET.E+1-* - >PSTR "RET" - .HS FF - >PSTR "C9" -RET.E .HS 00 -RETC .DA RETC.E+1-* - >PSTR "RETC" - .HS FF - >PSTR "D8" -RETC.E .HS 00 -RETI .DA RETI.E+1-* - >PSTR "RETI" - .HS FF - >PSTR "ED4D" -RETI.E .HS 00 -RETM .DA RETM.E+1-* - >PSTR "RETM" - .HS FF - >PSTR "F8" -RETM.E .HS 00 -RETN .DA RETN.E+1-* - >PSTR "RETN" - .HS FF - >PSTR "ED45" -RETN.E .HS 00 -RETNC .DA RETNC.E+1-* - >PSTR "RETNC" - .HS FF - >PSTR "D0" -RETNC.E .HS 00 -RETNZ .DA RETNZ.E+1-* - >PSTR "RETNZ" - .HS FF - >PSTR "C0" -RETNZ.E .HS 00 -RETP .DA RETP.E+1-* - >PSTR "RETP" - .HS FF - >PSTR "F0" -RETP.E .HS 00 -RETPE .DA RETPE.E+1-* - >PSTR "RETPE" - .HS FF - >PSTR "E8" -RETPE.E .HS 00 -RETPO .DA RETPO.E+1-* - >PSTR "RETPO" - .HS FF - >PSTR "E0" -RETPO.E .HS 00 -RETZ .DA RETZ.E+1-* - >PSTR "RETZ" - .HS FF - >PSTR "C8" -RETZ.E .HS 00 -RL .DA RL.E+1-* - >PSTR "RL" - .HS 18 - >PSTR "CB16" - .HS 18 - >PSTR "CB1E" - .HS 19 - >PSTR "DDCBa16" - .HS 19 - >PSTR "DDCBa1E" - .HS 1A - >PSTR "FDCBa16" - .HS 1A - >PSTR "FDCBa1E" - .HS 1B - >PSTR "CB17" - .HS 1B - >PSTR "CB1F" - .HS 1D - >PSTR "CB10" - .HS 1D - >PSTR "CB18" - .HS 1E - >PSTR "CB11" - .HS 1E - >PSTR "CB19" - .HS 1F - >PSTR "CB12" - .HS 1F - >PSTR "CB1A" - .HS 20 - >PSTR "CB13" - .HS 20 - >PSTR "CB1B" - .HS 21 - >PSTR "CB14" - .HS 21 - >PSTR "CB1C" - .HS 22 - >PSTR "CB15" - .HS 22 - >PSTR "CB1D" -RL.E .HS 00 -RLA .DA RLA.E+1-* - >PSTR "RLA" - .HS FF - >PSTR "17" -RLA.E .HS 00 -RLC .DA RLC.E+1-* - >PSTR "RLC" - .HS 18 - >PSTR "CB06" - .HS 19 - >PSTR "DDCBa06" - .HS 1A - >PSTR "FDCBa06" - .HS 1B - >PSTR "CB07" - .HS 1D - >PSTR "CB00" - .HS 1E - >PSTR "CB01" - .HS 1F - >PSTR "CB02" - .HS 20 - >PSTR "CB03" - .HS 21 - >PSTR "CB04" - .HS 22 - >PSTR "CB05" -RLC.E .HS 00 -RLCA .DA RLCA.E+1-* - >PSTR "RLCA" - .HS FF - >PSTR "07" -RLCA.E .HS 00 -RLD .DA RLD.E+1-* - >PSTR "RLD" - .HS FF - >PSTR "ED6F" -RLD.E .HS 00 -RRA .DA RRA.E+1-* - >PSTR "RRA" - .HS FF - >PSTR "1F" -RRA.E .HS 00 -RRC .DA RRC.E+1-* - >PSTR "RRC" - .HS 18 - >PSTR "CB0E" - .HS 19 - >PSTR "DDCBa0E" - .HS 1A - >PSTR "FDCBa0E" - .HS 1B - >PSTR "CB0F" - .HS 1D - >PSTR "CB08" - .HS 1E - >PSTR "CB09" - .HS 1F - >PSTR "CB0A" - .HS 20 - >PSTR "CB0B" - .HS 21 - >PSTR "CB0C" - .HS 22 - >PSTR "CB0D" -RRC.E .HS 00 -RRCA .DA RRCA.E+1-* - >PSTR "RRCA" - .HS FF - >PSTR "0F" -RRCA.E .HS 00 -RRD .DA RRD.E+1-* - >PSTR "RRD" - .HS FF - >PSTR "ED67" -RRD.E .HS 00 -RST0 .DA RST0.E+1-* - >PSTR "RST0" - .HS FF - >PSTR "C7" -RST0.E .HS 00 -RST10 .DA RST10.E+1-* - >PSTR "RST10" - .HS FF - >PSTR "D7" -RST10.E .HS 00 -RST18 .DA RST18.E+1-* - >PSTR "RST18" - .HS FF - >PSTR "DF" -RST18.E .HS 00 -RST20 .DA RST20.E+1-* - >PSTR "RST20" - .HS FF - >PSTR "E7" -RST20.E .HS 00 -RST28 .DA RST28.E+1-* - >PSTR "RST28" - .HS FF - >PSTR "EF" -RST28.E .HS 00 -RST30 .DA RST30.E+1-* - >PSTR "RST30" - .HS FF - >PSTR "F7" -RST30.E .HS 00 -RST38 .DA RST38.E+1-* - >PSTR "RST38" - .HS FF - >PSTR "FF" -RST38.E .HS 00 -RST8 .DA RST8.E+1-* - >PSTR "RST8" - .HS FF - >PSTR "CF" -RST8.E .HS 00 -SBC .DA SBC.E+1-* - >PSTR "SBC" - .HS 18 - >PSTR "9E" - .HS 19 - >PSTR "DD9Ea" - .HS 1A - >PSTR "FD9Ea" - .HS 1B - >PSTR "9F" - .HS 1C - >PSTR "DEa" - .HS 1D - >PSTR "98" - .HS 1E - >PSTR "99" - .HS 1F - >PSTR "9A" - .HS 20 - >PSTR "9B" - .HS 21 - >PSTR "9C" - .HS 0C - >PSTR "ED42" - .HS 0D - >PSTR "ED52" - .HS 0E - >PSTR "ED62" - .HS 0F - >PSTR "ED72" - .HS 22 - >PSTR "9D" -SBC.E .HS 00 -SCF .DA SCF.E+1-* - >PSTR "SCF" - .HS FF - >PSTR "37" -SCF.E .HS 00 -SET0 .DA SET0.E+1-* - >PSTR "SET0" - .HS 18 - >PSTR "CBC6" - .HS 19 - >PSTR "DDCBaC6" - .HS 1A - >PSTR "FDCBaC6" - .HS 1B - >PSTR "CBC7" - .HS 1D - >PSTR "CBC0" - .HS 1E - >PSTR "CBC1" - .HS 1F - >PSTR "CBC2" - .HS 20 - >PSTR "CBC3" - .HS 21 - >PSTR "CBC4" - .HS 22 - >PSTR "CBC5" -SET0.E .HS 00 -SET1 .DA SET1.E+1-* - >PSTR "SET1" - .HS 18 - >PSTR "CBCE" - .HS 19 - >PSTR "DDCBaCE" - .HS 1A - >PSTR "FDCBaCE" - .HS 1B - >PSTR "CBCF" - .HS 1D - >PSTR "CBC8" - .HS 1E - >PSTR "CBC9" - .HS 1F - >PSTR "CBCA" - .HS 20 - >PSTR "CBCB" - .HS 21 - >PSTR "CBCC" - .HS 22 - >PSTR "CBCD" -SET1.E .HS 00 -SET2 .DA SET2.E+1-* - >PSTR "SET2" - .HS 18 - >PSTR "CBD6" - .HS 19 - >PSTR "DDCBaD6" - .HS 1A - >PSTR "FDCBaD6" - .HS 1B - >PSTR "CBD7" - .HS 1D - >PSTR "CBD0" - .HS 1E - >PSTR "CBD1" - .HS 1F - >PSTR "CBD2" - .HS 20 - >PSTR "CBD3" - .HS 21 - >PSTR "CBD4" - .HS 22 - >PSTR "CBD5" -SET2.E .HS 00 -SET3 .DA SET3.E+1-* - >PSTR "SET3" - .HS 18 - >PSTR "CBDE" - .HS 19 - >PSTR "DDCBaDE" - .HS 1A - >PSTR "FDCBaDE" - .HS 1B - >PSTR "CBDF" - .HS 1D - >PSTR "CBD8" - .HS 1E - >PSTR "CBD9" - .HS 1F - >PSTR "CBDA" - .HS 20 - >PSTR "CBDB" - .HS 21 - >PSTR "CBDC" - .HS 22 - >PSTR "CBDD" -SET3.E .HS 00 -SET4 .DA SET4.E+1-* - >PSTR "SET4" - .HS 18 - >PSTR "CBE6" - .HS 19 - >PSTR "DDCBaE6" - .HS 1A - >PSTR "FDCBaE6" - .HS 1B - >PSTR "CBE7" - .HS 1D - >PSTR "CBE0" - .HS 1E - >PSTR "CBE1" - .HS 1F - >PSTR "CBE2" - .HS 20 - >PSTR "CBE3" - .HS 21 - >PSTR "CBE4" - .HS 22 - >PSTR "CBE5" -SET4.E .HS 00 -SET5 .DA SET5.E+1-* - >PSTR "SET5" - .HS 18 - >PSTR "CBEE" - .HS 19 - >PSTR "DDCBaEE" - .HS 1A - >PSTR "FDCBaEE" - .HS 1B - >PSTR "CBEF" - .HS 1D - >PSTR "CBE8" - .HS 1E - >PSTR "CBE9" - .HS 1F - >PSTR "CBEA" - .HS 20 - >PSTR "CBEB" - .HS 21 - >PSTR "CBEC" - .HS 22 - >PSTR "CBED" -SET5.E .HS 00 -SET6 .DA SET6.E+1-* - >PSTR "SET6" - .HS 18 - >PSTR "CBF6" - .HS 19 - >PSTR "DDCBaF6" - .HS 1A - >PSTR "FDCBaF6" - .HS 1B - >PSTR "CBF7" - .HS 1D - >PSTR "CBF0" - .HS 1E - >PSTR "CBF1" - .HS 1F - >PSTR "CBF2" - .HS 20 - >PSTR "CBF3" - .HS 21 - >PSTR "CBF4" - .HS 22 - >PSTR "CBF5" -SET6.E .HS 00 -SET7 .DA SET7.E+1-* - >PSTR "SET7" - .HS 18 - >PSTR "CBFE" - .HS 19 - >PSTR "DDCBaFE" - .HS 1A - >PSTR "FDCBaFE" - .HS 1B - >PSTR "CBFF" - .HS 1D - >PSTR "CBF8" - .HS 1E - >PSTR "CBF9" - .HS 1F - >PSTR "CBFA" - .HS 20 - >PSTR "CBFB" - .HS 21 - >PSTR "CBFC" - .HS 22 - >PSTR "CBFD" -SET7.E .HS 00 -SLA .DA SLA.E+1-* - >PSTR "SLA" - .HS 18 - >PSTR "CB26" - .HS 19 - >PSTR "DDCBa26" - .HS 1A - >PSTR "FDCBa26" - .HS 1B - >PSTR "CB27" - .HS 1D - >PSTR "CB20" - .HS 1E - >PSTR "CB21" - .HS 1F - >PSTR "CB22" - .HS 20 - >PSTR "CB23" - .HS 21 - >PSTR "CB24" - .HS 22 - >PSTR "CB25" -SLA.E .HS 00 -SRA .DA SRA.E+1-* - >PSTR "SRA" - .HS 18 - >PSTR "CB2E" - .HS 19 - >PSTR "DDCBa2E" - .HS 1A - >PSTR "FDCBa2E" - .HS 1B - >PSTR "CB2F" - .HS 1D - >PSTR "CB28" - .HS 1E - >PSTR "CB29" - .HS 1F - >PSTR "CB2A" - .HS 20 - >PSTR "CB2B" - .HS 21 - >PSTR "CB2C" - .HS 22 - >PSTR "CB2D" -SRA.E .HS 00 -SRL .DA SRL.E+1-* - >PSTR "SRL" - .HS 18 - >PSTR "CB3E" - .HS 19 - >PSTR "DDCBa3E" - .HS 1A - >PSTR "FDCBa3E" - .HS 1B - >PSTR "CB3F" - .HS 1D - >PSTR "CB38" - .HS 1E - >PSTR "CB39" - .HS 1F - >PSTR "CB3A" - .HS 20 - >PSTR "CB3B" - .HS 21 - >PSTR "CB3C" - .HS 22 - >PSTR "CB3D" -SRL.E .HS 00 -SUB .DA SUB.E+1-* - >PSTR "SUB" - .HS 18 - >PSTR "96" - .HS 19 - >PSTR "DD96a" - .HS 1A - >PSTR "FD96a" - .HS 1B - >PSTR "97" - .HS 1C - >PSTR "D6a" - .HS 1D - >PSTR "90" - .HS 1E - >PSTR "91" - .HS 1F - >PSTR "92" - .HS 20 - >PSTR "93" - .HS 21 - >PSTR "94" - .HS 22 - >PSTR "95" -SUB.E .HS 00 -XOR .DA XOR.E+1-* - >PSTR "XOR" - .HS 18 - >PSTR "AE" - .HS 19 - >PSTR "DDAEa" - .HS 1A - >PSTR "FDAEa" - .HS 1B - >PSTR "AF" - .HS 1C - >PSTR "EEa" - .HS 1D - >PSTR "A8" - .HS 1E - >PSTR "A9" - .HS 1F - >PSTR "AA" - .HS 20 - >PSTR "AB" - .HS 21 - >PSTR "AC" - .HS 22 - >PSTR "AD" +ADC .DA ADC.E+1-* + .DA #3,$$"ADC" + .DA #1,#2,$$"8E" + .DA #2,#5,$$"DD8Ea" + .DA #3,#5,$$"FD8Ea" + .DA #4,#2,$$"8F" + .DA #5,#3,$$"CEa" + .DA #6,#2,$$"88" + .DA #7,#2,$$"89" + .DA #8,#2,$$"8A" + .DA #9,#2,$$"8B" + .DA #10,#2,$$"8C" + .DA #11,#2,$$"8D" + .DA #12,#4,$$"ED4A" + .DA #13,#4,$$"ED5A" + .DA #14,#4,$$"ED6A" + .DA #15,#4,$$"ED7A" +ADC.E .HS 00 +ADD .DA ADD.E+1-* + .DA #3,$$"ADD" + .DA #1,#2,$$"86" + .DA #2,#5,$$"DD86a" + .DA #3,#5,$$"FD86a" + .DA #4,#2,$$"87" + .DA #5,#3,$$"C6a" + .DA #6,#2,$$"80" + .DA #7,#2,$$"81" + .DA #8,#2,$$"82" + .DA #9,#2,$$"83" + .DA #10,#2,$$"84" + .DA #11,#2,$$"85" + .DA #12,#2,$$"09" + .DA #13,#2,$$"19" + .DA #14,#2,$$"29" + .DA #15,#2,$$"39" + .DA #16,#4,$$"DD09" + .DA #17,#4,$$"DD19" + .DA #18,#4,$$"DD29" + .DA #19,#4,$$"DD39" + .DA #20,#4,$$"FD09" + .DA #21,#4,$$"FD19" + .DA #22,#4,$$"FD29" + .DA #23,#4,$$"FD39" +ADD.E .HS 00 +AND .DA AND.E+1-* + .DA #3,$$"AND" + .DA #24,#2,$$"A6" + .DA #25,#5,$$"DDA6a" + .DA #26,#5,$$"FDA6a" + .DA #27,#2,$$"A7" + .DA #28,#3,$$"E6a" + .DA #29,#2,$$"A0" + .DA #30,#2,$$"A1" + .DA #31,#2,$$"A2" + .DA #32,#2,$$"A3" + .DA #33,#2,$$"A4" + .DA #34,#2,$$"A5" +AND.E .HS 00 +BIT0 .DA BIT0.E+1-* + .DA #4,$$"BIT0" + .DA #24,#4,$$"CB46" + .DA #25,#7,$$"DDCBa46" + .DA #26,#7,$$"FDCBa46" + .DA #27,#4,$$"CB47" + .DA #29,#4,$$"CB40" + .DA #30,#4,$$"CB41" + .DA #31,#4,$$"CB42" + .DA #32,#4,$$"CB43" + .DA #33,#4,$$"CB44" + .DA #34,#4,$$"CB45" +BIT0.E .HS 00 +BIT1 .DA BIT1.E+1-* + .DA #4,$$"BIT1" + .DA #24,#4,$$"CB4E" + .DA #25,#7,$$"DDCBa4E" + .DA #26,#7,$$"FDCBa4E" + .DA #27,#4,$$"CB4F" + .DA #29,#4,$$"CB48" + .DA #30,#4,$$"CB49" + .DA #31,#4,$$"CB4A" + .DA #32,#4,$$"CB4B" + .DA #33,#4,$$"CB4C" + .DA #34,#4,$$"CB4D" +BIT1.E .HS 00 +BIT2 .DA BIT2.E+1-* + .DA #4,$$"BIT2" + .DA #24,#4,$$"CB56" + .DA #25,#7,$$"DDCBa56" + .DA #26,#7,$$"FDCBa56" + .DA #27,#4,$$"CB57" + .DA #29,#4,$$"CB50" + .DA #30,#4,$$"CB51" + .DA #31,#4,$$"CB52" + .DA #32,#4,$$"CB53" + .DA #33,#4,$$"CB54" + .DA #34,#4,$$"CB55" +BIT2.E .HS 00 +BIT3 .DA BIT3.E+1-* + .DA #4,$$"BIT3" + .DA #24,#4,$$"CB5E" + .DA #25,#7,$$"DDCBa5E" + .DA #26,#7,$$"FDCBa5E" + .DA #27,#4,$$"CB5F" + .DA #29,#4,$$"CB58" + .DA #30,#4,$$"CB59" + .DA #31,#4,$$"CB5A" + .DA #32,#4,$$"CB5B" + .DA #33,#4,$$"CB5C" + .DA #34,#4,$$"CB5D" +BIT3.E .HS 00 +BIT4 .DA BIT4.E+1-* + .DA #4,$$"BIT4" + .DA #24,#4,$$"CB66" + .DA #25,#7,$$"DDCBa66" + .DA #26,#7,$$"FDCBa66" + .DA #27,#4,$$"CB67" + .DA #29,#4,$$"CB60" + .DA #30,#4,$$"CB61" + .DA #31,#4,$$"CB62" + .DA #32,#4,$$"CB63" + .DA #33,#4,$$"CB64" + .DA #34,#4,$$"CB65" +BIT4.E .HS 00 +BIT5 .DA BIT5.E+1-* + .DA #4,$$"BIT5" + .DA #24,#4,$$"CB6E" + .DA #25,#7,$$"DDCBa6E" + .DA #26,#7,$$"FDCBa6E" + .DA #27,#4,$$"CB6F" + .DA #29,#4,$$"CB68" + .DA #30,#4,$$"CB69" + .DA #31,#4,$$"CB6A" + .DA #32,#4,$$"CB6B" + .DA #33,#4,$$"CB6C" + .DA #34,#4,$$"CB6D" +BIT5.E .HS 00 +BIT6 .DA BIT6.E+1-* + .DA #4,$$"BIT6" + .DA #24,#4,$$"CB76" + .DA #25,#7,$$"DDCBa76" + .DA #26,#7,$$"FDCBa76" + .DA #27,#4,$$"CB77" + .DA #29,#4,$$"CB70" + .DA #30,#4,$$"CB71" + .DA #31,#4,$$"CB72" + .DA #32,#4,$$"CB73" + .DA #33,#4,$$"CB74" + .DA #34,#4,$$"CB75" +BIT6.E .HS 00 +BIT7 .DA BIT7.E+1-* + .DA #4,$$"BIT7" + .DA #24,#4,$$"CB7E" + .DA #25,#7,$$"DDCBa7E" + .DA #26,#7,$$"FDCBa7E" + .DA #27,#4,$$"CB7F" + .DA #29,#4,$$"CB78" + .DA #30,#4,$$"CB79" + .DA #31,#4,$$"CB7A" + .DA #32,#4,$$"CB7B" + .DA #33,#4,$$"CB7C" + .DA #34,#4,$$"CB7D" +BIT7.E .HS 00 +CALL .DA CALL.E+1-* + .DA #4,$$"CALL" + .DA #35,#4,$$"CDaa" +CALL.E .HS 00 +CALLC .DA CALLC.E+1-* + .DA #5,$$"CALLC" + .DA #35,#4,$$"DCaa" +CALLC.E .HS 00 +CALLM .DA CALLM.E+1-* + .DA #5,$$"CALLM" + .DA #35,#4,$$"FCaa" +CALLM.E .HS 00 +CALLNC .DA CALLNC.E+1-* + .DA #6,$$"CALLNC" + .DA #35,#4,$$"D4aa" +CALLNC.E .HS 00 +CALLNZ .DA CALLNZ.E+1-* + .DA #6,$$"CALLNZ" + .DA #35,#4,$$"C4aa" +CALLNZ.E .HS 00 +CALLP .DA CALLP.E+1-* + .DA #5,$$"CALLP" + .DA #35,#4,$$"F4aa" +CALLP.E .HS 00 +CALLPE .DA CALLPE.E+1-* + .DA #6,$$"CALLPE" + .DA #35,#4,$$"ECaa" +CALLPE.E .HS 00 +CALLPO .DA CALLPO.E+1-* + .DA #6,$$"CALLPO" + .DA #35,#4,$$"E4aa" +CALLPO.E .HS 00 +CALLZ .DA CALLZ.E+1-* + .DA #5,$$"CALLZ" + .DA #35,#4,$$"CCaa" +CALLZ.E .HS 00 +CCF .DA CCF.E+1-* + .DA #3,$$"CCF" + .DA #255,#2,$$"3F" +CCF.E .HS 00 +CP .DA CP.E+1-* + .DA #2,$$"CP" + .DA #24,#2,$$"BE" + .DA #25,#5,$$"DDBEa" + .DA #26,#5,$$"FDBEa" + .DA #27,#2,$$"BF" + .DA #28,#3,$$"FEa" + .DA #29,#2,$$"B8" + .DA #30,#2,$$"B9" + .DA #31,#2,$$"BA" + .DA #32,#2,$$"BB" + .DA #33,#2,$$"BC" + .DA #34,#2,$$"BD" +CP.E .HS 00 +CPD .DA CPD.E+1-* + .DA #3,$$"CPD" + .DA #255,#4,$$"EDA9" +CPD.E .HS 00 +CPDR .DA CPDR.E+1-* + .DA #4,$$"CPDR" + .DA #255,#4,$$"EDB9" +CPDR.E .HS 00 +CPI .DA CPI.E+1-* + .DA #3,$$"CPI" + .DA #255,#4,$$"EDA1" +CPI.E .HS 00 +CPIR .DA CPIR.E+1-* + .DA #4,$$"CPIR" + .DA #255,#4,$$"EDB1" +CPIR.E .HS 00 +CPL .DA CPL.E+1-* + .DA #3,$$"CPL" + .DA #255,#2,$$"2F" +CPL.E .HS 00 +DAA .DA DAA.E+1-* + .DA #3,$$"DAA" + .DA #255,#2,$$"27" +DAA.E .HS 00 +DEC .DA DEC.E+1-* + .DA #3,$$"DEC" + .DA #24,#2,$$"35" + .DA #25,#5,$$"DD35a" + .DA #26,#5,$$"FD35a" + .DA #27,#2,$$"3D" + .DA #29,#2,$$"05" + .DA #36,#2,$$"0B" + .DA #30,#2,$$"0D" + .DA #31,#2,$$"15" + .DA #37,#2,$$"1B" + .DA #32,#2,$$"1D" + .DA #33,#2,$$"25" + .DA #38,#2,$$"2B" + .DA #39,#4,$$"DD2B" + .DA #40,#4,$$"FD2B" + .DA #34,#2,$$"2D" + .DA #41,#2,$$"3B" +DEC.E .HS 00 +DI .DA DI.E+1-* + .DA #2,$$"DI" + .DA #255,#2,$$"F3" +DI.E .HS 00 +DJNZ .DA DJNZ.E+1-* + .DA #4,$$"DJNZ" + .DA #35,#3,$$"10r" +DJNZ.E .HS 00 +EI .DA EI.E+1-* + .DA #2,$$"EI" + .DA #255,#2,$$"FB" +EI.E .HS 00 +EX .DA EX.E+1-* + .DA #2,$$"EX" + .DA #42,#2,$$"E3" + .DA #43,#4,$$"DDE3" + .DA #44,#4,$$"FDE3" + .DA #45,#2,$$"EB" + .DA #255,#2,$$"08" +EX.E .HS 00 +EXX .DA EXX.E+1-* + .DA #3,$$"EXX" + .DA #255,#2,$$"D9" +EXX.E .HS 00 +HLT .DA HLT.E+1-* + .DA #3,$$"HLT" + .DA #255,#2,$$"76" +HLT.E .HS 00 +IM0 .DA IM0.E+1-* + .DA #3,$$"IM0" + .DA #255,#4,$$"ED46" +IM0.E .HS 00 +IM1 .DA IM1.E+1-* + .DA #3,$$"IM1" + .DA #255,#4,$$"ED56" +IM1.E .HS 00 +IM2 .DA IM2.E+1-* + .DA #3,$$"IM2" + .DA #255,#4,$$"ED5E" +IM2.E .HS 00 +IN .DA IN.E+1-* + .DA #2,$$"IN" + .DA #46,#3,$$"DBa" + .DA #47,#4,$$"ED78" + .DA #48,#4,$$"ED40" + .DA #49,#4,$$"ED48" + .DA #50,#4,$$"ED50" + .DA #51,#4,$$"ED58" + .DA #52,#4,$$"ED60" + .DA #53,#4,$$"ED68" +IN.E .HS 00 +INC .DA INC.E+1-* + .DA #3,$$"INC" + .DA #24,#2,$$"34" + .DA #25,#5,$$"DD34a" + .DA #26,#5,$$"FD34a" + .DA #27,#2,$$"3C" + .DA #29,#2,$$"04" + .DA #36,#2,$$"03" + .DA #30,#2,$$"0C" + .DA #31,#2,$$"14" + .DA #37,#2,$$"13" + .DA #32,#2,$$"1C" + .DA #33,#2,$$"24" + .DA #38,#2,$$"23" + .DA #39,#4,$$"DD23" + .DA #40,#4,$$"FD23" + .DA #34,#2,$$"2C" + .DA #41,#2,$$"33" +INC.E .HS 00 +IND .DA IND.E+1-* + .DA #3,$$"IND" + .DA #255,#4,$$"EDAA" +IND.E .HS 00 +INDR .DA INDR.E+1-* + .DA #4,$$"INDR" + .DA #255,#4,$$"EDBA" +INDR.E .HS 00 +INI .DA INI.E+1-* + .DA #3,$$"INI" + .DA #255,#4,$$"EDA2" +INI.E .HS 00 +INIR .DA INIR.E+1-* + .DA #4,$$"INIR" + .DA #255,#4,$$"EDB2" +INIR.E .HS 00 +JP .DA JP.E+1-* + .DA #2,$$"JP" + .DA #24,#2,$$"E9" + .DA #54,#4,$$"DDE9" + .DA #55,#4,$$"FDE9" + .DA #35,#4,$$"C3aa" +JP.E .HS 00 +JPC .DA JPC.E+1-* + .DA #3,$$"JPC" + .DA #35,#4,$$"DAaa" +JPC.E .HS 00 +JPM .DA JPM.E+1-* + .DA #3,$$"JPM" + .DA #35,#4,$$"FAaa" +JPM.E .HS 00 +JPNC .DA JPNC.E+1-* + .DA #4,$$"JPNC" + .DA #35,#4,$$"D2aa" +JPNC.E .HS 00 +JPNZ .DA JPNZ.E+1-* + .DA #4,$$"JPNZ" + .DA #35,#4,$$"C2aa" +JPNZ.E .HS 00 +JPP .DA JPP.E+1-* + .DA #3,$$"JPP" + .DA #35,#4,$$"F2aa" +JPP.E .HS 00 +JPPE .DA JPPE.E+1-* + .DA #4,$$"JPPE" + .DA #35,#4,$$"EAaa" +JPPE.E .HS 00 +JPPO .DA JPPO.E+1-* + .DA #4,$$"JPPO" + .DA #35,#4,$$"E2aa" +JPPO.E .HS 00 +JPZ .DA JPZ.E+1-* + .DA #3,$$"JPZ" + .DA #35,#4,$$"CAaa" +JPZ.E .HS 00 +JR .DA JR.E+1-* + .DA #2,$$"JR" + .DA #35,#3,$$"18r" +JR.E .HS 00 +JRC .DA JRC.E+1-* + .DA #3,$$"JRC" + .DA #35,#3,$$"38r" +JRC.E .HS 00 +JRNC .DA JRNC.E+1-* + .DA #4,$$"JRNC" + .DA #35,#3,$$"30r" +JRNC.E .HS 00 +JRNZ .DA JRNZ.E+1-* + .DA #4,$$"JRNZ" + .DA #35,#3,$$"20r" +JRNZ.E .HS 00 +JRZ .DA JRZ.E+1-* + .DA #3,$$"JRZ" + .DA #35,#3,$$"28r" +JRZ.E .HS 00 +LD .DA LD.E+1-* + .DA #2,$$"LD" + .DA #56,#4,$$"32aa" + .DA #57,#6,$$"ED43aa" + .DA #58,#6,$$"ED53aa" + .DA #59,#4,$$"22aa" + .DA #59,#6,$$"ED6Baa" + .DA #60,#6,$$"DD22aa" + .DA #61,#6,$$"DD22aa" + .DA #62,#6,$$"ED73aa" + .DA #63,#2,$$"02" + .DA #64,#2,$$"12" + .DA #65,#2,$$"77" + .DA #66,#3,$$"36a" + .DA #67,#2,$$"70" + .DA #68,#2,$$"71" + .DA #69,#2,$$"72" + .DA #70,#2,$$"73" + .DA #71,#2,$$"74" + .DA #72,#2,$$"75" + .DA #73,#5,$$"DD77a" + .DA #74,#6,$$"DD36aa" + .DA #74,#6,$$"DD76aa" + .DA #75,#5,$$"DD70a" + .DA #76,#5,$$"DD71a" + .DA #77,#5,$$"DD72a" + .DA #78,#5,$$"DD73a" + .DA #79,#5,$$"DD74a" + .DA #80,#5,$$"DD75a" + .DA #81,#5,$$"FD77a" + .DA #82,#6,$$"FD36aa" + .DA #82,#6,$$"FD76aa" + .DA #83,#5,$$"FD70a" + .DA #84,#5,$$"FD71a" + .DA #85,#5,$$"FD72a" + .DA #86,#5,$$"FD73a" + .DA #87,#5,$$"FD74a" + .DA #88,#5,$$"FD75a" + .DA #89,#4,$$"3Aaa" + .DA #90,#2,$$"0A" + .DA #91,#2,$$"1A" + .DA #1,#2,$$"7E" + .DA #2,#5,$$"DD7Ea" + .DA #3,#5,$$"FD7Ea" + .DA #4,#2,$$"7F" + .DA #5,#3,$$"3Ea" + .DA #6,#2,$$"78" + .DA #7,#2,$$"79" + .DA #8,#2,$$"7A" + .DA #9,#2,$$"7B" + .DA #10,#2,$$"7C" + .DA #92,#4,$$"ED57" + .DA #11,#2,$$"7D" + .DA #93,#4,$$"ED5F" + .DA #94,#2,$$"46" + .DA #95,#5,$$"DD46r" + .DA #96,#5,$$"FD46r" + .DA #97,#2,$$"47" + .DA #98,#3,$$"06a" + .DA #99,#2,$$"40" + .DA #100,#2,$$"41" + .DA #101,#2,$$"42" + .DA #102,#2,$$"43" + .DA #103,#2,$$"44" + .DA #104,#2,$$"45" + .DA #105,#6,$$"ED4Baa" + .DA #106,#4,$$"01aa" + .DA #107,#2,$$"4E" + .DA #108,#5,$$"DD4Er" + .DA #109,#5,$$"FD4Er" + .DA #110,#2,$$"4F" + .DA #111,#3,$$"0Ea" + .DA #112,#2,$$"48" + .DA #113,#2,$$"49" + .DA #114,#2,$$"4A" + .DA #115,#2,$$"4B" + .DA #116,#2,$$"4C" + .DA #117,#2,$$"4D" + .DA #118,#2,$$"56" + .DA #119,#5,$$"DD56a" + .DA #120,#5,$$"FD56a" + .DA #121,#2,$$"57" + .DA #122,#3,$$"16a" + .DA #123,#2,$$"50" + .DA #124,#2,$$"51" + .DA #125,#2,$$"52" + .DA #126,#2,$$"53" + .DA #127,#2,$$"54" + .DA #128,#2,$$"55" + .DA #129,#6,$$"ED5Baa" + .DA #130,#4,$$"11aa" + .DA #131,#2,$$"5E" + .DA #132,#5,$$"DD5Ea" + .DA #133,#5,$$"FD5Ea" + .DA #134,#2,$$"5F" + .DA #135,#3,$$"1Ea" + .DA #136,#2,$$"58" + .DA #137,#2,$$"59" + .DA #138,#2,$$"5A" + .DA #139,#2,$$"5B" + .DA #140,#2,$$"5C" + .DA #141,#2,$$"5D" + .DA #142,#2,$$"66" + .DA #143,#5,$$"DD66a" + .DA #144,#5,$$"FD66a" + .DA #145,#2,$$"67" + .DA #146,#3,$$"26a" + .DA #147,#2,$$"60" + .DA #148,#2,$$"61" + .DA #149,#2,$$"62" + .DA #150,#2,$$"63" + .DA #151,#2,$$"64" + .DA #152,#2,$$"65" + .DA #153,#4,$$"2Aaa" + .DA #153,#6,$$"ED6Baa" + .DA #154,#4,$$"21aa" + .DA #155,#4,$$"ED47" + .DA #156,#6,$$"DD2Aaa" + .DA #157,#6,$$"DD21aa" + .DA #158,#6,$$"FD2Aaa" + .DA #159,#6,$$"FD21aa" + .DA #160,#2,$$"6E" + .DA #161,#5,$$"DD6Ea" + .DA #162,#5,$$"FD6Ea" + .DA #163,#2,$$"6F" + .DA #164,#3,$$"2Ea" + .DA #165,#2,$$"68" + .DA #166,#2,$$"69" + .DA #167,#2,$$"6A" + .DA #168,#2,$$"6B" + .DA #169,#2,$$"6C" + .DA #170,#2,$$"6D" + .DA #171,#4,$$"ED4F" + .DA #172,#6,$$"ED7Baa" + .DA #173,#4,$$"31aa" + .DA #174,#2,$$"F9" + .DA #175,#4,$$"DDF9" + .DA #176,#4,$$"FDF9" +LD.E .HS 00 +LDD .DA LDD.E+1-* + .DA #3,$$"LDD" + .DA #255,#4,$$"EDA8" +LDD.E .HS 00 +LDDR .DA LDDR.E+1-* + .DA #4,$$"LDDR" + .DA #255,#4,$$"EDB8" +LDDR.E .HS 00 +LDI .DA LDI.E+1-* + .DA #3,$$"LDI" + .DA #255,#4,$$"EDA0" +LDI.E .HS 00 +LDIR .DA LDIR.E+1-* + .DA #4,$$"LDIR" + .DA #255,#4,$$"EDB0" +LDIR.E .HS 00 +NEG .DA NEG.E+1-* + .DA #3,$$"NEG" + .DA #255,#4,$$"ED44" +NEG.E .HS 00 +NOP .DA NOP.E+1-* + .DA #3,$$"NOP" + .DA #255,#2,$$"00" +NOP.E .HS 00 +OR .DA OR.E+1-* + .DA #2,$$"OR" + .DA #24,#2,$$"B6" + .DA #25,#5,$$"DDB6a" + .DA #26,#5,$$"FDB6a" + .DA #27,#2,$$"B7" + .DA #28,#3,$$"F6a" + .DA #29,#2,$$"B0" + .DA #30,#2,$$"B1" + .DA #31,#2,$$"B2" + .DA #32,#2,$$"B3" + .DA #33,#2,$$"B4" + .DA #34,#2,$$"B5" +OR.E .HS 00 +OTDR .DA OTDR.E+1-* + .DA #4,$$"OTDR" + .DA #255,#4,$$"EDBB" +OTDR.E .HS 00 +OTIR .DA OTIR.E+1-* + .DA #4,$$"OTIR" + .DA #255,#4,$$"EDB3" +OTIR.E .HS 00 +OUT .DA OUT.E+1-* + .DA #3,$$"OUT" + .DA #177,#3,$$"D3a" + .DA #178,#4,$$"ED79" + .DA #179,#4,$$"ED41" + .DA #180,#4,$$"ED49" + .DA #181,#4,$$"ED51" + .DA #182,#4,$$"ED59" + .DA #183,#4,$$"ED61" + .DA #184,#4,$$"ED69" +OUT.E .HS 00 +OUTD .DA OUTD.E+1-* + .DA #4,$$"OUTD" + .DA #255,#4,$$"EDAB" +OUTD.E .HS 00 +OUTI .DA OUTI.E+1-* + .DA #4,$$"OUTI" + .DA #255,#4,$$"EDA3" +OUTI.E .HS 00 +POP .DA POP.E+1-* + .DA #3,$$"POP" + .DA #185,#2,$$"F1" + .DA #36,#2,$$"C1" + .DA #37,#2,$$"D1" + .DA #38,#2,$$"E1" + .DA #39,#4,$$"DDE1" + .DA #40,#4,$$"FDE1" +POP.E .HS 00 +PUSH .DA PUSH.E+1-* + .DA #4,$$"PUSH" + .DA #185,#2,$$"F5" + .DA #36,#2,$$"C5" + .DA #37,#2,$$"D5" + .DA #38,#2,$$"E5" + .DA #39,#4,$$"DDE5" + .DA #40,#4,$$"FDE5" +PUSH.E .HS 00 +RES0 .DA RES0.E+1-* + .DA #4,$$"RES0" + .DA #24,#4,$$"CB86" + .DA #25,#7,$$"DDCBa86" + .DA #26,#7,$$"FDCBa86" + .DA #27,#4,$$"CB87" + .DA #29,#4,$$"CB80" + .DA #30,#4,$$"CB81" + .DA #31,#4,$$"CB82" + .DA #32,#4,$$"CB83" + .DA #33,#4,$$"CB84" + .DA #34,#4,$$"CB85" +RES0.E .HS 00 +RES1 .DA RES1.E+1-* + .DA #4,$$"RES1" + .DA #24,#4,$$"CB8E" + .DA #25,#7,$$"DDCBa8E" + .DA #26,#7,$$"FDCBa8E" + .DA #27,#4,$$"CB8F" + .DA #29,#4,$$"CB88" + .DA #30,#4,$$"CB89" + .DA #31,#4,$$"CB8A" + .DA #32,#4,$$"CB8B" + .DA #33,#4,$$"CB8C" + .DA #34,#4,$$"CB8D" +RES1.E .HS 00 +RES2 .DA RES2.E+1-* + .DA #4,$$"RES2" + .DA #24,#4,$$"CB96" + .DA #25,#7,$$"DDCBa96" + .DA #26,#7,$$"FDCBa96" + .DA #27,#4,$$"CB97" + .DA #29,#4,$$"CB90" + .DA #30,#4,$$"CB91" + .DA #31,#4,$$"CB92" + .DA #32,#4,$$"CB93" + .DA #33,#4,$$"CB94" + .DA #34,#4,$$"CB95" +RES2.E .HS 00 +RES3 .DA RES3.E+1-* + .DA #4,$$"RES3" + .DA #24,#4,$$"CB9E" + .DA #25,#7,$$"DDCBa9E" + .DA #26,#7,$$"FDCBa9E" + .DA #27,#4,$$"CB9F" + .DA #29,#4,$$"CB98" + .DA #30,#4,$$"CB99" + .DA #31,#4,$$"CB9A" + .DA #32,#4,$$"CB9B" + .DA #33,#4,$$"CB9C" + .DA #34,#4,$$"CB9D" +RES3.E .HS 00 +RES4 .DA RES4.E+1-* + .DA #4,$$"RES4" + .DA #24,#4,$$"CBA6" + .DA #25,#7,$$"DDCBaA6" + .DA #26,#7,$$"FDCBaA6" + .DA #27,#4,$$"CBA7" + .DA #29,#4,$$"CBA0" + .DA #30,#4,$$"CBA1" + .DA #31,#4,$$"CBA2" + .DA #32,#4,$$"CBA3" + .DA #33,#4,$$"CBA4" + .DA #34,#4,$$"CBA5" +RES4.E .HS 00 +RES5 .DA RES5.E+1-* + .DA #4,$$"RES5" + .DA #24,#4,$$"CBAE" + .DA #25,#7,$$"DDCBaAE" + .DA #26,#7,$$"FDCBaAE" + .DA #27,#4,$$"CBAF" + .DA #29,#4,$$"CBA8" + .DA #30,#4,$$"CBA9" + .DA #31,#4,$$"CBAA" + .DA #32,#4,$$"CBAB" + .DA #33,#4,$$"CBAC" + .DA #34,#4,$$"CBAD" +RES5.E .HS 00 +RES6 .DA RES6.E+1-* + .DA #4,$$"RES6" + .DA #24,#4,$$"CBB6" + .DA #25,#7,$$"DDCBaB6" + .DA #26,#7,$$"FDCBaB6" + .DA #27,#4,$$"CBB7" + .DA #29,#4,$$"CBB0" + .DA #30,#4,$$"CBB1" + .DA #31,#4,$$"CBB2" + .DA #32,#4,$$"CBB3" + .DA #33,#4,$$"CBB4" + .DA #34,#4,$$"CBB5" +RES6.E .HS 00 +RES7 .DA RES7.E+1-* + .DA #4,$$"RES7" + .DA #24,#4,$$"CBBE" + .DA #25,#7,$$"DDCBaBE" + .DA #26,#7,$$"FDCBaBE" + .DA #27,#4,$$"CBBF" + .DA #29,#4,$$"CBB8" + .DA #30,#4,$$"CBB9" + .DA #31,#4,$$"CBBA" + .DA #32,#4,$$"CBBB" + .DA #33,#4,$$"CBBC" + .DA #34,#4,$$"CBBD" +RES7.E .HS 00 +RET .DA RET.E+1-* + .DA #3,$$"RET" + .DA #255,#2,$$"C9" +RET.E .HS 00 +RETC .DA RETC.E+1-* + .DA #4,$$"RETC" + .DA #255,#2,$$"D8" +RETC.E .HS 00 +RETI .DA RETI.E+1-* + .DA #4,$$"RETI" + .DA #255,#4,$$"ED4D" +RETI.E .HS 00 +RETM .DA RETM.E+1-* + .DA #4,$$"RETM" + .DA #255,#2,$$"F8" +RETM.E .HS 00 +RETN .DA RETN.E+1-* + .DA #4,$$"RETN" + .DA #255,#4,$$"ED45" +RETN.E .HS 00 +RETNC .DA RETNC.E+1-* + .DA #5,$$"RETNC" + .DA #255,#2,$$"D0" +RETNC.E .HS 00 +RETNZ .DA RETNZ.E+1-* + .DA #5,$$"RETNZ" + .DA #255,#2,$$"C0" +RETNZ.E .HS 00 +RETP .DA RETP.E+1-* + .DA #4,$$"RETP" + .DA #255,#2,$$"F0" +RETP.E .HS 00 +RETPE .DA RETPE.E+1-* + .DA #5,$$"RETPE" + .DA #255,#2,$$"E8" +RETPE.E .HS 00 +RETPO .DA RETPO.E+1-* + .DA #5,$$"RETPO" + .DA #255,#2,$$"E0" +RETPO.E .HS 00 +RETZ .DA RETZ.E+1-* + .DA #4,$$"RETZ" + .DA #255,#2,$$"C8" +RETZ.E .HS 00 +RL .DA RL.E+1-* + .DA #2,$$"RL" + .DA #24,#4,$$"CB16" + .DA #24,#4,$$"CB1E" + .DA #25,#7,$$"DDCBa16" + .DA #25,#7,$$"DDCBa1E" + .DA #26,#7,$$"FDCBa16" + .DA #26,#7,$$"FDCBa1E" + .DA #27,#4,$$"CB17" + .DA #27,#4,$$"CB1F" + .DA #29,#4,$$"CB10" + .DA #29,#4,$$"CB18" + .DA #30,#4,$$"CB11" + .DA #30,#4,$$"CB19" + .DA #31,#4,$$"CB12" + .DA #31,#4,$$"CB1A" + .DA #32,#4,$$"CB13" + .DA #32,#4,$$"CB1B" + .DA #33,#4,$$"CB14" + .DA #33,#4,$$"CB1C" + .DA #34,#4,$$"CB15" + .DA #34,#4,$$"CB1D" +RL.E .HS 00 +RLA .DA RLA.E+1-* + .DA #3,$$"RLA" + .DA #255,#2,$$"17" +RLA.E .HS 00 +RLC .DA RLC.E+1-* + .DA #3,$$"RLC" + .DA #24,#4,$$"CB06" + .DA #25,#7,$$"DDCBa06" + .DA #26,#7,$$"FDCBa06" + .DA #27,#4,$$"CB07" + .DA #29,#4,$$"CB00" + .DA #30,#4,$$"CB01" + .DA #31,#4,$$"CB02" + .DA #32,#4,$$"CB03" + .DA #33,#4,$$"CB04" + .DA #34,#4,$$"CB05" +RLC.E .HS 00 +RLCA .DA RLCA.E+1-* + .DA #4,$$"RLCA" + .DA #255,#2,$$"07" +RLCA.E .HS 00 +RLD .DA RLD.E+1-* + .DA #3,$$"RLD" + .DA #255,#4,$$"ED6F" +RLD.E .HS 00 +RRA .DA RRA.E+1-* + .DA #3,$$"RRA" + .DA #255,#2,$$"1F" +RRA.E .HS 00 +RRC .DA RRC.E+1-* + .DA #3,$$"RRC" + .DA #24,#4,$$"CB0E" + .DA #25,#7,$$"DDCBa0E" + .DA #26,#7,$$"FDCBa0E" + .DA #27,#4,$$"CB0F" + .DA #29,#4,$$"CB08" + .DA #30,#4,$$"CB09" + .DA #31,#4,$$"CB0A" + .DA #32,#4,$$"CB0B" + .DA #33,#4,$$"CB0C" + .DA #34,#4,$$"CB0D" +RRC.E .HS 00 +RRCA .DA RRCA.E+1-* + .DA #4,$$"RRCA" + .DA #255,#2,$$"0F" +RRCA.E .HS 00 +RRD .DA RRD.E+1-* + .DA #3,$$"RRD" + .DA #255,#4,$$"ED67" +RRD.E .HS 00 +RST0 .DA RST0.E+1-* + .DA #4,$$"RST0" + .DA #255,#2,$$"C7" +RST0.E .HS 00 +RST10 .DA RST10.E+1-* + .DA #5,$$"RST10" + .DA #255,#2,$$"D7" +RST10.E .HS 00 +RST18 .DA RST18.E+1-* + .DA #5,$$"RST18" + .DA #255,#2,$$"DF" +RST18.E .HS 00 +RST20 .DA RST20.E+1-* + .DA #5,$$"RST20" + .DA #255,#2,$$"E7" +RST20.E .HS 00 +RST28 .DA RST28.E+1-* + .DA #5,$$"RST28" + .DA #255,#2,$$"EF" +RST28.E .HS 00 +RST30 .DA RST30.E+1-* + .DA #5,$$"RST30" + .DA #255,#2,$$"F7" +RST30.E .HS 00 +RST38 .DA RST38.E+1-* + .DA #5,$$"RST38" + .DA #255,#2,$$"FF" +RST38.E .HS 00 +RST8 .DA RST8.E+1-* + .DA #4,$$"RST8" + .DA #255,#2,$$"CF" +RST8.E .HS 00 +SBC .DA SBC.E+1-* + .DA #3,$$"SBC" + .DA #24,#2,$$"9E" + .DA #25,#5,$$"DD9Ea" + .DA #26,#5,$$"FD9Ea" + .DA #27,#2,$$"9F" + .DA #28,#3,$$"DEa" + .DA #29,#2,$$"98" + .DA #30,#2,$$"99" + .DA #31,#2,$$"9A" + .DA #32,#2,$$"9B" + .DA #33,#2,$$"9C" + .DA #12,#4,$$"ED42" + .DA #13,#4,$$"ED52" + .DA #14,#4,$$"ED62" + .DA #15,#4,$$"ED72" + .DA #34,#2,$$"9D" +SBC.E .HS 00 +SCF .DA SCF.E+1-* + .DA #3,$$"SCF" + .DA #255,#2,$$"37" +SCF.E .HS 00 +SET0 .DA SET0.E+1-* + .DA #4,$$"SET0" + .DA #24,#4,$$"CBC6" + .DA #25,#7,$$"DDCBaC6" + .DA #26,#7,$$"FDCBaC6" + .DA #27,#4,$$"CBC7" + .DA #29,#4,$$"CBC0" + .DA #30,#4,$$"CBC1" + .DA #31,#4,$$"CBC2" + .DA #32,#4,$$"CBC3" + .DA #33,#4,$$"CBC4" + .DA #34,#4,$$"CBC5" +SET0.E .HS 00 +SET1 .DA SET1.E+1-* + .DA #4,$$"SET1" + .DA #24,#4,$$"CBCE" + .DA #25,#7,$$"DDCBaCE" + .DA #26,#7,$$"FDCBaCE" + .DA #27,#4,$$"CBCF" + .DA #29,#4,$$"CBC8" + .DA #30,#4,$$"CBC9" + .DA #31,#4,$$"CBCA" + .DA #32,#4,$$"CBCB" + .DA #33,#4,$$"CBCC" + .DA #34,#4,$$"CBCD" +SET1.E .HS 00 +SET2 .DA SET2.E+1-* + .DA #4,$$"SET2" + .DA #24,#4,$$"CBD6" + .DA #25,#7,$$"DDCBaD6" + .DA #26,#7,$$"FDCBaD6" + .DA #27,#4,$$"CBD7" + .DA #29,#4,$$"CBD0" + .DA #30,#4,$$"CBD1" + .DA #31,#4,$$"CBD2" + .DA #32,#4,$$"CBD3" + .DA #33,#4,$$"CBD4" + .DA #34,#4,$$"CBD5" +SET2.E .HS 00 +SET3 .DA SET3.E+1-* + .DA #4,$$"SET3" + .DA #24,#4,$$"CBDE" + .DA #25,#7,$$"DDCBaDE" + .DA #26,#7,$$"FDCBaDE" + .DA #27,#4,$$"CBDF" + .DA #29,#4,$$"CBD8" + .DA #30,#4,$$"CBD9" + .DA #31,#4,$$"CBDA" + .DA #32,#4,$$"CBDB" + .DA #33,#4,$$"CBDC" + .DA #34,#4,$$"CBDD" +SET3.E .HS 00 +SET4 .DA SET4.E+1-* + .DA #4,$$"SET4" + .DA #24,#4,$$"CBE6" + .DA #25,#7,$$"DDCBaE6" + .DA #26,#7,$$"FDCBaE6" + .DA #27,#4,$$"CBE7" + .DA #29,#4,$$"CBE0" + .DA #30,#4,$$"CBE1" + .DA #31,#4,$$"CBE2" + .DA #32,#4,$$"CBE3" + .DA #33,#4,$$"CBE4" + .DA #34,#4,$$"CBE5" +SET4.E .HS 00 +SET5 .DA SET5.E+1-* + .DA #4,$$"SET5" + .DA #24,#4,$$"CBEE" + .DA #25,#7,$$"DDCBaEE" + .DA #26,#7,$$"FDCBaEE" + .DA #27,#4,$$"CBEF" + .DA #29,#4,$$"CBE8" + .DA #30,#4,$$"CBE9" + .DA #31,#4,$$"CBEA" + .DA #32,#4,$$"CBEB" + .DA #33,#4,$$"CBEC" + .DA #34,#4,$$"CBED" +SET5.E .HS 00 +SET6 .DA SET6.E+1-* + .DA #4,$$"SET6" + .DA #24,#4,$$"CBF6" + .DA #25,#7,$$"DDCBaF6" + .DA #26,#7,$$"FDCBaF6" + .DA #27,#4,$$"CBF7" + .DA #29,#4,$$"CBF0" + .DA #30,#4,$$"CBF1" + .DA #31,#4,$$"CBF2" + .DA #32,#4,$$"CBF3" + .DA #33,#4,$$"CBF4" + .DA #34,#4,$$"CBF5" +SET6.E .HS 00 +SET7 .DA SET7.E+1-* + .DA #4,$$"SET7" + .DA #24,#4,$$"CBFE" + .DA #25,#7,$$"DDCBaFE" + .DA #26,#7,$$"FDCBaFE" + .DA #27,#4,$$"CBFF" + .DA #29,#4,$$"CBF8" + .DA #30,#4,$$"CBF9" + .DA #31,#4,$$"CBFA" + .DA #32,#4,$$"CBFB" + .DA #33,#4,$$"CBFC" + .DA #34,#4,$$"CBFD" +SET7.E .HS 00 +SLA .DA SLA.E+1-* + .DA #3,$$"SLA" + .DA #24,#4,$$"CB26" + .DA #25,#7,$$"DDCBa26" + .DA #26,#7,$$"FDCBa26" + .DA #27,#4,$$"CB27" + .DA #29,#4,$$"CB20" + .DA #30,#4,$$"CB21" + .DA #31,#4,$$"CB22" + .DA #32,#4,$$"CB23" + .DA #33,#4,$$"CB24" + .DA #34,#4,$$"CB25" +SLA.E .HS 00 +SRA .DA SRA.E+1-* + .DA #3,$$"SRA" + .DA #24,#4,$$"CB2E" + .DA #25,#7,$$"DDCBa2E" + .DA #26,#7,$$"FDCBa2E" + .DA #27,#4,$$"CB2F" + .DA #29,#4,$$"CB28" + .DA #30,#4,$$"CB29" + .DA #31,#4,$$"CB2A" + .DA #32,#4,$$"CB2B" + .DA #33,#4,$$"CB2C" + .DA #34,#4,$$"CB2D" +SRA.E .HS 00 +SRL .DA SRL.E+1-* + .DA #3,$$"SRL" + .DA #24,#4,$$"CB3E" + .DA #25,#7,$$"DDCBa3E" + .DA #26,#7,$$"FDCBa3E" + .DA #27,#4,$$"CB3F" + .DA #29,#4,$$"CB38" + .DA #30,#4,$$"CB39" + .DA #31,#4,$$"CB3A" + .DA #32,#4,$$"CB3B" + .DA #33,#4,$$"CB3C" + .DA #34,#4,$$"CB3D" +SRL.E .HS 00 +SUB .DA SUB.E+1-* + .DA #3,$$"SUB" + .DA #24,#2,$$"96" + .DA #25,#5,$$"DD96a" + .DA #26,#5,$$"FD96a" + .DA #27,#2,$$"97" + .DA #28,#3,$$"D6a" + .DA #29,#2,$$"90" + .DA #30,#2,$$"91" + .DA #31,#2,$$"92" + .DA #32,#2,$$"93" + .DA #33,#2,$$"94" + .DA #34,#2,$$"95" +SUB.E .HS 00 +XOR .DA XOR.E+1-* + .DA #3,$$"XOR" + .DA #24,#2,$$"AE" + .DA #25,#5,$$"DDAEa" + .DA #26,#5,$$"FDAEa" + .DA #27,#2,$$"AF" + .DA #28,#3,$$"EEa" + .DA #29,#2,$$"A8" + .DA #30,#2,$$"A9" + .DA #31,#2,$$"AA" + .DA #32,#2,$$"AB" + .DA #33,#2,$$"AC" + .DA #34,#2,$$"AD" XOR.E .HS 00 .HS 0000 *--------------------------------------- diff --git a/BIN/ASM.T.Z80.S.txt b/BIN/ASM.T.Z80.S.txt index 33499868..356d9474 100644 --- a/BIN/ASM.T.Z80.S.txt +++ b/BIN/ASM.T.Z80.S.txt @@ -4,12 +4,6 @@ AUTO 4,1 .LIST OFF .OR $0 .TF /A2OSX.BUILD/BIN/DEV/ASM.T.Z80 -*--------------------------------------- - .MA PSTR - .DA #:1-*-1 - .AS "]1" -:1 .EQ * - .EM *--------------------------------------- .DA T.ADDR.MODES .DA T.REGISTERS diff --git a/SYS/KERNEL.S.MEM.txt b/SYS/KERNEL.S.MEM.txt index 541e9a9c..031f193c 100644 --- a/SYS/KERNEL.S.MEM.txt +++ b/SYS/KERNEL.S.MEM.txt @@ -584,6 +584,11 @@ MEM.GetKeyCharY sta CLRREADAUX .9 sec rts *-------------------------------------- +MEM.SetKeyCharY sta CLRWRITEAUX + sta (ZPSListKey),y + sta SETWRITEAUX + rts +*-------------------------------------- MEM.GetDataByte sta CLRREADAUX lda (ZPSListData) sta SETREADAUX