00 XX NEG (soff,SP) ; Negate (Logical 2's complement) M(soff+SP) <= -M(soff+SP) 72 00 MS LS XX BTJT lmem, #0, ssoff ; BitTest and Jump if True PC<=PC+ssoff if M(lmem).#0==1 СС.C<=M(lmem).#0 01 RRWA X ; Rotate Word Right through A A -> XH -> XL - > A 72 01 MS LS XX BTJF lmem, #0, ssoff ; BitTest and Jump if False PC<=PC+ssoff if M(lmem).#0==0 СС.C<=M(lmem).#0 90 01 RRWA Y ; Rotate Word Right through A A -> YH -> YL - > A 02 RLWA X ; Rotate Word Left through A A <- XH <- XL <- A 72 02 MS LS XX BTJT lmem, #1, ssoff ; BitTest and Jump if True PC<=PC+ssoff if M(lmem).#1==1 СС.C<=M(lmem).#1 90 02 RLWA Y ; Rotate Word Left through A A <- YH <- YL <- A 03 XX CPL (soff,SP) ; Logical 1's complement M(soff+SP) <= /M(soff+SP) 72 03 MS LS XX BTJF lmem, #1, ssoff ; BitTest and Jump if False PC<=PC+ssoff if M(lmem).#1==0 СС.C<=M(lmem).#1 04 XX SRL (soff,SP) ; Shift Right Logical M(soff+SP).{0->#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 72 04 MS LS XX BTJT lmem, #2, ssoff ; BitTest and Jump if True PC<=PC+ssoff if M(lmem).#2==1 СС.C<=M(lmem).#2 05 ; illegal opcode 72 05 MS LS XX BTJF lmem, #2, ssoff ; BitTest and Jump if False PC<=PC+ssoff if M(lmem).#2==0 СС.C<=M(lmem).#2 06 XX RRC (soff,SP) ; Rotate Right Logical through Carry M(soff+SP).{CC.C->#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 72 06 MS LS XX BTJT lmem, #3, ssoff ; BitTest and Jump if True PC<=PC+ssoff if M(lmem).#3==1 СС.C<=M(lmem).#3 07 XX SRA (soff,SP) ; Shift Right Arithmetic M(soff+SP).{#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 72 07 MS LS XX BTJF lmem, #3, ssoff ; BitTest and Jump if False PC<=PC+ssoff if M(lmem).#3==0 СС.C<=M(lmem).#3 08 XX SLA (soff,SP) ; Shift Left Arithmetic M(soff+SP).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-0} 08 XX SLL (soff,SP) ; Shift Left Logical M(soff+SP).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-0} 72 08 MS LS XX BTJT lmem, #4, ssoff ; BitTest and Jump if True PC<=PC+ssoff if M(lmem).#4==1 СС.C<=M(lmem).#4 09 XX RLC (soff,SP) ; Rotate Left Logical through Carry M(soff+SP).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-CC.C} 72 09 MS LS XX BTJF lmem, #4, ssoff ; BitTest and Jump if False PC<=PC+ssoff if M(lmem).#4==0 СС.C<=M(lmem).#4 0A XX DEC (soff,SP) ; Decrement M(soff+SP) <= M(soff+SP) - 1 72 0A MS LS XX BTJT lmem, #5, ssoff ; BitTest and Jump if True PC<=PC+ssoff if M(lmem).#5==1 СС.C<=M(lmem).#5 0B ; illegal opcode 72 0B MS LS XX BTJF lmem, #5, ssoff ; BitTest and Jump if False PC<=PC+ssoff if M(lmem).#5==0 СС.C<=M(lmem).#5 0C XX INC (soff,SP) ; Increment M(soff+SP) <= M(soff+SP) + 1 72 0C MS LS XX BTJT lmem, #6, ssoff ; BitTest and Jump if True PC<=PC+ssoff if M(lmem).#6==1 СС.C<=M(lmem).#6 0D XX TNZ (soff,SP) ; Test for Negative or Zero {CC.N, CC.Z} <= Test{ M(soff+SP } 72 0D MS LS XX BTJF lmem, #6, ssoff ; BitTest and Jump if False PC<=PC+ssoff if M(lmem).#6==0 СС.C<=M(lmem).#6 0E ; ??????? 72 0E MS LS XX BTJT lmem, #7, ssoff ; BitTest and Jump if True PC<=PC+ssoff if M(lmem).#7==1 СС.C<=M(lmem).#7 0E XX SWAP (soff,SP) ; Swap Nibbles M(soff+SP).low <-> M(soff+SP).high 0F XX CLR (soff,SP) ; Clear M(soff+SP) <= 0 72 0F MS LS XX BTJF lmem, #7, ssoff ; BitTest and Jump if False PC<=PC+ssoff if M(lmem).#7==0 СС.C<=M(lmem).#7 10 XX SUB A, (soff,SP) ; Subtraction A <= A - M(soff+SP) 72 10 MS LS BSET lmem, #0 ; Bit Set M(lmem).#0 <= 1 90 10 MS LS BCPL lmem, #0 ; Bit Complement M(lmem).#0 <= /M(lmem).#0 11 XX CP A, (soff,SP) ; Compare {CC.N, CC.Z, CC.C} <= Test{ A - M(soff+SP) } 72 11 MS LS BRES lmem, #0 ; Bit Reset M(lmem).#0 <= 0 90 11 MS LS BCCM lmem, #0 ; Copy Carry Bit M(lmem).#0 <= CC.C 12 XX SBC A, (soff,SP) ; Subtraction A <= A - M(soff+SP) 72 12 MS LS BSET lmem, #1 ; Bit Set M(lmem).#1 <= 1 90 12 MS LS BCPL lmem, #1 ; Bit Complement M(lmem).#1 <= /M(lmem).#1 13 XX CPW X, (soff,SP) ; Compare Word {CC.N, CC.Z, CC.C} <= Test{ X - M(soff+SP).w } 72 13 MS LS BRES lmem, #1 ; Bit Reset M(lmem).#1 <= 0 90 13 MS LS BCCM lmem, #1 ; Copy Carry Bit M(lmem).#1 <= CC.C 14 XX AND A, (soff,SP) ; Logical AND A <= A AND M(soff+SP) 72 14 MS LS BSET lmem, #2 ; Bit Set M(lmem).#2 <= 1 90 14 MS LS BCPL lmem, #2 ; Bit Complement M(lmem).#2 <= /M(lmem).#2 15 XX BCP A, (soff,SP) ; Logical Bit Compare {CC.N, CC.Z} <= Test{ A AND M(soff,SP) } 72 15 MS LS BRES lmem, #2 ; Bit Reset M(lmem).#2 <= 0 90 15 MS LS BCCM lmem, #2 ; Copy Carry Bit M(lmem).#2 <= CC.C 16 ; ??????? 72 16 MS LS BSET lmem, #3 ; Bit Set M(lmem).#3 <= 1 90 16 MS LS BCPL lmem, #3 ; Bit Complement M(lmem).#3 <= /M(lmem).#3 17 XX LDW (soff,SP), Y ; Load Word M(soff+SP) <= Y 72 17 MS LS BRES lmem, #3 ; Bit Reset M(lmem).#3 <= 0 90 17 MS LS BCCM lmem, #3 ; Copy Carry Bit M(lmem).#3 <= CC.C 18 XX XOR A, (soff,SP) ; Logical Exclusive OR A <= A XOR M(soff+SP) 72 18 MS LS BSET lmem, #4 ; Bit Set M(lmem).#4 <= 1 90 18 MS LS BCPL lmem, #4 ; Bit Complement M(lmem).#4 <= /M(lmem).#4 19 XX ADC A, (soff,SP) ; Addition with Carry A <= A + M(soff+SP) + CC.C 72 19 MS LS BRES lmem, #4 ; Bit Reset M(lmem).#4 <= 0 90 19 MS LS BCCM lmem, #4 ; Copy Carry Bit M(lmem).#4 <= CC.C 1A XX OR A, (soff,SP) ; Logical OR A <= A OR M(soff+SP) 72 1A MS LS BSET lmem, #5 ; Bit Set M(lmem).#5 <= 1 90 1A MS LS BCPL lmem, #5 ; Bit Complement M(lmem).#5 <= /M(lmem).#5 1B XX ADD A, (soff,SP) ; Addition A <= A + M(soff+SP) 72 1B MS LS BRES lmem, #5 ; Bit Reset M(lmem).#5 <= 0 90 1B MS LS BCCM lmem, #5 ; Copy Carry Bit M(lmem).#5 <= CC.C 1C MS LS ADDW X, #word ; Addition Word X <= X + #word 72 1C MS LS BSET lmem, #6 ; Bit Set M(lmem).#6 <= 1 90 1C MS LS BCPL lmem, #6 ; Bit Complement M(lmem).#6 <= /M(lmem).#6 1D MS LS SUBW X, #word ; Subtraction Word X <= X - #word 72 1D MS LS BRES lmem, #6 ; Bit Reset M(lmem).#6 <= 0 90 1D MS LS BCCM lmem, #6 ; Copy Carry Bit M(lmem).#6 <= CC.C 1E XX LDW X, (soff,SP) ; Load Word X <= M(soff+SP) 72 1E MS LS BSET lmem, #7 ; Bit Set M(lmem).#7 <= 1 90 1E MS LS BCPL lmem, #7 ; Bit Complement M(lmem).#7 <= /M(lmem).#7 1F ; ??????? 72 1F MS LS BRES lmem, #7 ; Bit Reset M(lmem).#7 <= 0 90 1F MS LS BCCM lmem, #7 ; Copy Carry Bit M(lmem).#7 <= CC.C 20 XX JRA ssoff ; Jump Relative Always PC <= PC + ssoff 20 XX JRT ssoff ; Relative jump if True PC <= PC + ssoff 21 XX JRF ssoff ; Relative jump if False always skip (PC <= PC + 2) 22 XX JRUGT ssoff ; Relative jump if Unsigned Greater Than PC<=PC+ssoff if CC.C==0 AND CC.Z==0 23 XX JRULE ssoff ; Relative jump if Unsigned Lower or Equal PC<=PC+ssoff if CC.C==1 AND CC.Z==1 24 XX JRNC ssoff ; Relative jump if Not Carry PC<=PC+ssoff if CC.C==0 24 XX JRUGE ssoff ; Relative jump if Unsigned Greater or Equal PC<=PC+ssoff if CC.C==0 25 XX JRC ssoff ; Relative jump if Carry PC<=PC+ssoff if CC.C==1 25 XX JRULT ssoff ; Relative jump if Unsigned Lower Than PC<=PC+ssoff if CC.C==1 26 XX JRNE ssoff ; Relative jump if Not equal PC<=PC+ssoff if CC.Z==0 27 XX JREQ ssoff ; Relative jump if Equal PC<=PC+ssoff if CC.Z==1 28 XX JRNV ssoff ; Relative jump if Not overflow PC<=PC+ssoff if CC.V==0 90 28 XX JRNH ssoff ; Relative jump if Not Half-Carry PC<=PC+ssoff if CC.H==0 29 XX JRV ssoff ; Relative jump if Overflow PC<=PC+ssoff if CC.V==1 90 29 XX JRH ssoff ; Relative jump if Half-Carry PC<=PC+ssoff if CC.H==1 2A XX JRPL ssoff ; Relative jump if Plus PC<=PC+ssoff if CC.N==0 2B XX JRMI ssoff ; Relative jump if Minus PC<=PC+ssoff if CC.N==1 2C XX JRSGT ssoff ; Relative jump if Signed Greater Than PC<=PC+ssoff if {CC.Z OR {CC.N XOR CC.V}}==0 90 2C XX JRNM ssoff ; Relative jump if Not Interrupt Mask PC<=PC+ssoff if {CC.I0 AND CC.I1}==0 2D XX JRSLE ssoff ; Relative jump if Signed Lower or Equal PC<=PC+ssoff if {CC.Z OR {CC.N XOR CC.V}}==1 90 2D XX JRM ssoff ; Relative jump if Interrupt Mask PC<=PC+ssoff if {CC.I0 AND CC.I1}==1 2E XX JRSGE ssoff ; Relative jump if Signed Greater or Equal PC<=PC+ssoff if {CC.N XOR CC.V} ==0 90 2E XX JRIL ssoff ; Relative jump if Interrupt Line is Low PC<=PC+ssoff if Port INT pin==0 2F XX JRSLT ssoff ; Relative jump if Signed Lower Than PC<=PC+ssoff if {CC.N XOR CC.V} ==1 90 2F XX JRIH ssoff ; Relative jump if Interrupt Line is High PC<=PC+ssoff f Port INT pin==1 30 XX NEG smem ; Negate (Logical 2's complement) M(smem) <= -M(smem) 72 30 XX NEG [lptr.w] ; Negate (Logical 2's complement) M(M(lptr).w) <= -M(M(lptr).w) 92 30 XX NEG [sptr.w] ; Negate (Logical 2's complement) M(M(sptr).w) <= -M(M(sptr).w) 31 MS LS EXG A, lmem ; Exchange A <-> M(lmem) 32 MS LS POP lmem ; Pop from stack SP++ M(lmem) <= M(SP) 33 XX CPL smem ; Logical 1's complement M(smem) <= /M(smem) 72 33 MS LS CPL [lptr.w] ; Logical 1's complement M(M(lptr).w) <= /M(M(lptr).w) 92 33 XX CPL [sptr.w] ; Logical 1's complement M(M(sptr).w) <= /M(M(sptr).w) 34 XX SRL smem ; Shift Right Logical M(smem).{0->#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 72 34 MS LS SRL [lptr.w] ; Shift Right Logical M(M(lptr).w).{0->#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 92 34 XX SRL [sptr.w] ; Shift Right Logical M(M(sptr).w).{0->#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 35 XX MS LS MOV lmem, #byte ; Move M(lmem) <= #byte 36 XX RRC smem ; Rotate Right Logical through Carry M(smem).{CC.C->#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 72 36 MS LS RRC [lptr.w] ; Rotate Right Logical through Carry M(M(lptr).w).{CC.C->#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 92 36 XX RRC [sptr.w] ; Rotate Right Logical through Carry M(M(sptr).w).{CC.C->#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 37 XX SRA smem ; Shift Right Arithmetic M(smem).{#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 72 37 MS LS SRA [lptr.w] ; Shift Right Arithmetic M(M(lptr).w).{#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 92 37 XX SRA [sptr.w] ; Shift Right Arithmetic M(M(sptr).w).{#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 38 XX SLA smem ; Shift Left Arithmetic M(smem).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-0} 38 XX SLL smem ; Shift Left Logical M(smem).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-0} 72 38 MS LS SLA [lptr.w] ; Shift Left Arithmetic M(M(lptr).w).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-0} 72 38 MS LS SLL [lptr.w] ; Shift Left Logical M(M(lptr).w).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-0} 92 38 XX SLA [sptr.w] ; Shift Left Arithmetic M(M(sptr).w).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-0} 92 38 XX SLL [sptr.w] ; Shift Left Logical M(M(sptr).w).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-0} 39 XX RLC smem ; Rotate Left Logical through Carry M(smem).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-CC.C} 72 39 MS LS RLC [lptr.w] ; Rotate Left Logical through Carry M(M(lptr).w).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-CC.C} 92 39 XX RLC [sptr.w] ; Rotate Left Logical through Carry M(M(sptr).w).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-CC.C} 3A XX DEC smem ; Decrement M(smem) <= M(smem) - 1 72 3A XX DEC [lptr.w] ; Decrement M(M(lptr).w) <= M(M(lptr).w) - 1 92 3A XX DEC [sptr.w] ; Decrement M(M(sptr).w) <= M(M(sptr).w) - 1 3B MS LS PUSH lmem ; Push onto the Stack M(SP--) <= M(lmem) postincrement 3C XX INC smem ; Increment M(smem) <= M(smem) + 1 72 3C MS LS INC [lptr.w] ; Increment M(M(lptr).w) <= M(M(lptr).w) + 1 92 3C XX INC [sptr.w] ; Increment M(M(sptr).w) <= M(M(sptr).w) + 1 3D XX TNZ smem ; Test for Negative or Zero {N, Z} <= Test{ M(smem) } 72 3D MS LS TNZ [lptr.w] ; Test for Negative or Zero {N, Z} <= Test{ M(M(lptr).w) } 92 3D XX TNZ [sptr.w] ; Test for Negative or Zero {N, Z} <= Test{ M(M(sptr).w) } 3E XX SWAP smem ; Swap Nibbles M(smem).low <-> M(smem).high 72 3E XX SWAP [lptr.w] ; Swap Nibbles M(M(lptr).w).low <-> M(M(lptr).w).high 92 3E XX SWAP [sptr.w] ; Swap Nibbles M(M(sptr).w).low <-> M(M(sptr).w).high 3F XX CLR smem ; Clear M(smem) <= 0 72 3F MS LS CLR [lptr.w] ; Clear M(M(lptr).w) <= 0 92 3F XX CLR [sptr.w] ; Clear M(M(sptr).w) <= 0 40 NEG A ; Negate (Logical 2's complement) A <= -A 72 40 MS LS NEG (loff,X) ; Negate (Logical 2's complement) M(loff+X) <= -M(loff+X) 90 40 MS LS NEG (loff,Y) ; Negate (Logical 2's complement) M(loff+Y) <= -M(loff+Y) 41 EXG A, XL ; Exchange A <-> XL 42 MUL X, A ; Multiply(unsigned) X <= XL * A 90 42 MUL Y, A ; Multiply(unsigned) Y <= YL * A 43 CPL A ; Logical 1's complement A <= /A 72 43 MS LS CPL (loff,X) ; Logical 1's complement M(loff+X) <= /M(loff+X) 90 43 MS LS CPL (loff,Y) ; Logical 1's complement M(loff+Y) <= /M(loff+Y) 44 SRL A ; Shift Right Logical A.{0->#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 72 44 MS LS SRL (loff,X) ; Shift Right Logical M(loff+X).{0->#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 90 44 MS LS SRL (loff,Y) ; Shift Right Logical M(loff+Y).{0->#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 45 XX2 XX1 MOV smem1, smem2 ; Move M(smem1) <= M(smem2) 46 RRC A ; Rotate Right Logical through Carry A.{CC.C->#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 72 46 MS LS RRC (loff,X) ; Rotate Right Logical through Carry M(loff+X).{CC.C->#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 90 46 MS LS RRC (loff,Y) ; Rotate Right Logical through Carry M(loff+Y).{CC.C->#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 47 SRA A ; Shift Right Arithmetic A.{#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 72 47 MS LS SRA (loff,X) ; Shift Right Arithmetic M(loff+X).{#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 90 47 MS LS SRA (loff,Y) ; Shift Right Arithmetic M(loff+Y).{#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 48 SLA A ; Shift Left Arithmetic A.{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-0} 48 SLL A ; Shift Left Logical A.{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-0} 72 48 MS LS SLA (loff,X) ; Shift Left Arithmetic M(loff+X).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-0} 72 48 MS LS SLL (loff,X) ; Shift Left Logical M(loff+X).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-0} 90 48 MS LS SLA (loff,Y) ; Shift Left Arithmetic M(loff+Y).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-0} 90 48 MS LS SLL (loff,Y) ; Shift Left Logical M(loff+Y).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-0} 49 RLC A ; Rotate Left Logical through Carry A.{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-CC.C} 72 49 MS LS RLC (loff,X) ; Rotate Left Logical through Carry M(loff+X).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-CC.C} 90 49 MS LS RLC (loff,Y) ; Rotate Left Logical through Carry M(loff+Y).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-CC.C} 4A DEC A ; Decrement A <= A - 1 72 4A MS LS DEC (loff,X) ; Decrement M(loff+X) <= M(loff+X) - 1 90 4A MS LS DEC (loff,Y) ; Decrement M(loff+Y) <= M(loff+Y) - 1 4B XX PUSH #byte ; Push onto the Stack M(SP--) <= #byte 4C INC A ; Increment A <= A + 1 72 4C MS LS INC (loff,X) ; Increment M(loff+X) <= M(loff+X) + 1 90 4C MS LS INC (loff,Y) ; Increment M(loff+Y) <= M(loff+Y) + 1 4D TNZ A ; Test for Negative or Zero {CC.N, CC.Z} <= Test{ A } 72 4D MS LS TNZ (loff,X) ; Test for Negative or Zero {CC.N, CC.Z} <= Test{ M(loff+X) } 90 4D MS LS TNZ (loff,Y) ; Test for Negative or Zero {CC.N, CC.Z} <= Test{ M(loff+Y) } 4E SWAP A ; Swap Nibbles A.{#7,#6,#5,#4} <-> A.{#3,#2,#1,#0} 72 4E MS LS SWAP (loff,X) ; Swap Nibbles M(loff+X).low <-> M(loff+X).high 90 4E MS LS SWAP (loff,Y) ; Swap Nibbles M(loff+Y).low <-> M(loff+Y).high 4F CLR A ; Clear A <= 0 72 4F MS LS CLR (loff,X) ; Clear M(loff+X) <= 0 90 4F MS LS CLR (loff,Y) ; Clear M(loff+Y) <= 0 50 NEGW X ; Negate Word (Logical 2s Complement) X <= -X 72 50 MS LS NEG lmem ; Negate (Logical 2's complement) M(lmem) <= -M(lmem) 90 50 NEGW Y ; Negate Word (Logical 2s Complement) Y <= -Y 51 EXGW X, Y ; Exchange Word X <-> Y 52 XX SUBW SP, #byte ; Subtraction SP <= SP - #byte 53 CPLW X ; Logical 1's complement X <= /X 72 53 MS LS CPL lmem ; Logical 1's complement M(lmem) <= /M(lmem) 90 53 CPLW Y ; Logical 1's complement Y <= /Y 54 SRLW X ; Shift Right Logical Word X.{0->#15->#14->#13->...->#2->#1->#0->CC.C} 72 54 MS LS SRL lmem ; Shift Right Logical M(lmem).{0->#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 90 54 SRLW Y ; Shift Right Logical Word Y.{0->#15->#14->#13->...->#2->#1->#0->CC.C} 55 MS2 LS2 MS1 LS1 MOV lmem1, lmem2 ; Move M(lmem1) <= M(lmem2) 56 RRCW X ; Rotate Word Right Logical through Carry X.{CC.C->#15->#14->#13->...->#2->#1->#0->CC.C} 72 56 MS LS RRC lmem ; Rotate Right Logical through Carry M(lmem).{CC.C->#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 90 56 RRCW Y ; Rotate Word Right Logical through Carry Y.{CC.C->#15->#14->#13->...->#2->#1->#0->CC.C} 57 SRAW X ; Shift Right Arithmetic Word X.{#15->#14->#13->...->#2->#1->#0->CC.C} 72 57 MS LS SRA lmem ; Shift Right Arithmetic M(lmem).{#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 90 57 SRAW Y ; Shift Right Arithmetic Word Y.{#15->#14->#13->...->#2->#1->#0->CC.C} 58 SLAW X ; Shift Left Arithmetic Word X.{CC.C<-#15<-#14<-#13<-...<-#2<-#1<-#0<-0} 58 SLLW X ; Shift Left Logical Word X.{CC.C<-#15<-#14<-#13<-...<-#2<-#1<-#0<-0} 72 58 MS LS SLA lmem ; Shift Left Arithmetic M(lmem).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-0} 72 58 MS LS SLL lmem ; Shift Left Logical M(lmem).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-0} 90 58 SLAW Y ; Shift Left Arithmetic Word Y.{CC.C<-#15<-#14<-#13<-...<-#2<-#1<-#0<-0} 90 58 SLLW Y ; Shift Left Logical Word Y.{CC.C<-#15<-#14<-#13<-...<-#2<-#1<-#0<-0} 59 RLCW X ; Rotate Word Left Logical through Carry X.{CC.C<-#15<-#14<-#13<-...<-#2<-#1<-#0<-CC.C} 72 59 MS LS RLC lmem ; Rotate Left Logical through Carry M(lmem).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-CC.C} 90 59 RLCW Y ; Rotate Word Left Logical through Carry Y.{CC.C<-#15<-#14<-#13<-...<-#2<-#1<-#0<-CC.C} 5A DECW X ; Decrement X <= X - 1 72 5A MS LS DEC lmem ; Decrement M(lmem) <= M(lmem) - 1 90 5A DECW Y ; Decrement Y <= Y - 1 5B XX ADDW SP, #byte ; Addition SP <= SP + #byte 5C INCW X ; Increment X <= X + 1 72 5C MS LS INC lmem ; Increment M(lmem) <= M(lmem) + 1 90 5C INCW Y ; Increment Y <= Y + 1 5D TNZW X ; Test Word for Negative or Zero {CC.N, CC.Z} <= Test{ X } 72 5D MS LS TNZ lmem ; Test for Negative or Zero {CC.N, CC.Z} <= Test{ M(lmem) } 90 5D TNZW Y ; Test Word for Negative or Zero {CC.N, CC.Z} <= Test{ Y } 5E SWAPW X ; Swap Bytes of Word XH <-> XL 72 5E MS LS SWAP lmem ; Swap Nibbles M(lmem).low <-> (lmem).high 90 5E SWAPW Y ; Swap Bytes of Word YH <-> YL 5F CLRW X ; Clear X <= 0 72 5F MS LS CLR lmem ; Clear M(lmem) <= 0 90 5F CLRW Y ; Clear Y <= 0 60 XX NEG (soff,X) ; Negate (Logical 2's complement) M(soff+X) <= -M(soff+X) 72 60 MS LS NEG ([lptr.w],X) ; Negate (Logical 2's complement) M(M(lptr).w+X) <= -M(M(lptr).w+X) 90 60 XX NEG (soff,Y) ; Negate (Logical 2's complement) M(soff+Y) <= -M(soff+Y) 91 60 XX NEG ([sptr.w],Y) ; Negate (Logical 2's complement) M(M(sptr).w+Y) <= -M(M(sptr).w+Y) 92 60 XX NEG ([sptr.w],X) ; Negate (Logical 2's complement) M(M(sptr).w+X) <= -M(M(sptr).w+X) 61 EXG A, YL ; Exchange A <-> YL 62 DIV X, A ; Divide (unsigned) X <= X % A, remainder in A 90 62 DIV Y, A ; Divide (unsigned) Y <= Y % A, remainder in A 63 XX CPL (soff,X) ; Logical 1's complement M(soff+X) <= /M(soff+X) 72 63 MS LS CPL ([lptr.w],X) ; Logical 1's complement M(M(lptr).w+X) <= /M(M(lptr).w+X) 90 63 XX CPL (soff,Y) ; Logical 1's complement M(soff+Y) <= /M(soff+Y) 91 63 XX CPL ([sptr.w],Y) ; Logical 1's complement M(M(sptr).w+Y) <= /M(M(sptr).w+Y) 92 63 XX CPL ([sptr.w],X) ; Logical 1's complement M(M(sptr).w+X) <= /M(M(sptr).w+X) 64 XX SRL (soff,X) ; Shift Right Logical M(soff+X).{0->#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 72 64 MS LS SRL ([lptr.w],X) ; Shift Right Logical M(M(lptr).w+X).{0->#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 90 64 XX SRL (soff,Y) ; Shift Right Logical M(soff+Y).{0->#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 91 64 XX SRL ([sptr.w],Y) ; Shift Right Logical M(M(sptr).w+Y).{0->#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 92 64 XX SRL ([sptr.w],X) ; Shift Right Logical M(M(sptr).w+X).{0->#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 65 DIV X, Y ; Divide word (unsigned) X <= X % Y, remainder in Y 66 XX RRC (soff,X) ; Rotate Right Logical through Carry M(soff+X).{CC.C->#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 72 66 MS LS RRC ([lptr.w],X) ; Rotate Right Logical through Carry M(M(lptr).w+X).{CC.C->#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 90 66 XX RRC (soff,Y) ; Rotate Right Logical through Carry M(soff+Y).{CC.C->#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 91 66 XX RRC ([sptr.w],Y) ; Rotate Right Logical through Carry M(M(sptr).w+Y).{CC.C->#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 92 66 XX RRC ([sptr.w],X) ; Rotate Right Logical through Carry M(M(sptr).w+X).{CC.C->#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 67 XX SRA (soff,X) ; Shift Right Arithmetic M(soff+X).{#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 72 67 MS LS SRA ([lptr.w],X) ; Shift Right Arithmetic M(M(lptr).w+X).{#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 90 67 XX SRA (soff,Y) ; Shift Right Arithmetic M(soff+Y).{#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 91 67 XX SRA ([sptr.w],Y) ; Shift Right Arithmetic M(M(sptr).w+Y).{#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 92 67 XX SRA ([sptr.w],X) ; Shift Right Arithmetic M(M(sptr).w+X).{#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 68 XX SLA (soff,X) ; Shift Left Arithmetic M(soff+X).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-0} 68 XX SLL (soff,X) ; Shift Left Logical M(soff+X).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-0} 72 68 MS LS SLA ([lptr.w],X) ; Shift Left Arithmetic M(M(lptr).w+X).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-0} 72 68 MS LS SLL ([lptr.w],X) ; Shift Left Logical M(M(lptr).w+X).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-0} 90 68 XX SLA (soff,Y) ; Shift Left Arithmetic M(soff+Y).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-0} 90 68 XX SLL (soff,Y) ; Shift Left Logical M(soff+Y).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-0} 91 68 XX SLA ([sptr.w],Y) ; Shift Left Arithmetic M(M(sptr).w+Y).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-0} 91 68 XX SLL ([sptr.w],Y) ; Shift Left Logical M(M(sptr).w+Y).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-0} 92 68 XX SLA ([sptr.w],X) ; Shift Left Arithmetic M(M(sptr).w+X).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-0} 92 68 XX SLL ([sptr.w],X) ; Shift Left Logical M(M(sptr).w+X).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-0} 69 XX RLC (soff,X) ; Rotate Left Logical through Carry M(soff+X).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-CC.C} 72 69 MS LS RLC ([lptr.w],X) ; Rotate Left Logical through Carry M(M(lptr).w+X).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-CC.C} 90 69 XX RLC (soff,Y) ; Rotate Left Logical through Carry M(soff+Y).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-CC.C} 91 69 XX RLC ([sptr.w],Y) ; Rotate Left Logical through Carry M(M(sptr).w+Y).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-CC.C} 92 69 XX RLC ([sptr.w],X) ; Rotate Left Logical through Carry M(M(sptr).w+X).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-CC.C} 6A XX DEC (soff,X) ; Decrement M(soff+X) <= M(soff+X) - 1 72 6A MS LS DEC ([lptr.w],X) ; Decrement M(M(lptr).w+X) <= M(M(lptr).w+X) - 1 90 6A XX DEC (soff,Y) ; Decrement M(soff+Y) <= M(soff+Y) - 1 91 6A XX DEC ([sptr.w],Y) ; Decrement M(M(sptr).w+Y) <= M(M(sptr).w+Y) - 1 92 6A XX DEC ([sptr.w],X) ; Decrement M(M(sptr).w+X) <= M(M(sptr).w+X) - 1 6B XX LD (soff,SP), A ; Load A <= M(soff+SP) 6C XX INC (soff,X) ; Increment M(soff+X) <= M(soff+X) + 1 72 6C MS LS INC ([lptr.w],X) ; Increment M(M(lptr).w+X) <= M(M(lptr).w+X) + 1 90 6C XX INC (soff,Y) ; Increment M(soff+Y) <= M(soff+Y) + 1 91 6C XX INC ([sptr.w],Y) ; Increment M(M(sptr).w+Y) <= M(M(sptr).w+Y) + 1 92 6C XX INC ([sptr.w],X) ; Increment M(M(sptr).w+X) <= M(M(sptr).w+X) + 1 6D XX TNZ (soff,X) ; Test for Negative or Zero {CC.N, CC.Z} <= Test {M(soff+X)} 72 6D MS LS TNZ ([lptr.w],X) ; Test for Negative or Zero {CC.N, CC.Z} <= Test {M(M(lptr).w+X)} 90 6D XX TNZ (soff,Y) ; Test for Negative or Zero {CC.N, CC.Z} <= Test {M(soff+Y)} 91 6D XX TNZ ([sptr.w],Y) ; Test for Negative or Zero {CC.N, CC.Z} <= Test {M(M(sptr).w+Y)} 92 6D XX TNZ ([sptr.w],X) ; Test for Negative or Zero {CC.N, CC.Z} <= Test {M(M(sptr).w+X)} 6E XX SWAP (soff,X) ; Swap Nibbles M(soff+X).low <=> M(soff+X).high 72 6E MS LS SWAP ([lptr.w],X) ; Swap Nibbles M(M(lptr).w+X).low <=> M(M(lptr).w+X).high 90 6E XX SWAP (soff,Y) ; Swap Nibbles M(soff+Y).low <=> M(soff+Y).high 91 6E XX SWAP ([sptr.w],Y) ; Swap Nibbles M(M(sptr).w+Y).low <=> M(M(sptr).w+Y).high 92 6E XX SWAP ([sptr.w],X) ; Swap Nibbles M(M(sptr).w+X).low <=> M(M(sptr).w+X).high 6F XX CLR (soff,X) ; Clear M(soff+X) <= 0 72 6F MS LS CLR ([lptr.w],X) ; Clear M(M(lptr).w+X) <= 0 90 6F XX CLR (soff,Y) ; Clear M(soff+Y) <= 0 91 6F XX CLR ([sptr.w],Y) ; Clear M(M(sptr).w+Y) <= 0 92 6F XX CLR ([sptr.w],X) ; Clear M(M(sptr).w+X) <= 0 70 NEG (X) ; Negate (Logical 2's complement) M(X) <= -M(X) 90 70 NEG (Y) ; Negate (Logical 2's complement) M(Y) <= -M(Y) 71 ; illegal opcode 72 ; prefix PWSP 73 CPL (X) ; Logical 1's complement M(X) <= /M(X) 90 73 CPL (Y) ; Logical 1's complement M(Y) <= /M(Y) 74 SRL (X) ; Shift Right Logical M(X).{0->#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 90 74 SRL (Y) ; Shift Right Logical M(Y).{0->#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 75 ; illegal opcode 76 RRC (X) ; Rotate Right Logical through Carry M(X).{CC.C->#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 90 76 RRC (Y) ; Rotate Right Logical through Carry M(Y).{CC.C->#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 77 SRA (X) ; Shift Right Arithmetic M(X).{#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 90 77 SRA (Y) ; Shift Right Arithmetic M(Y).{#7->#6->#5->#4->#3->#2->#1->#0->CC.C} 78 SLA (X) ; Shift Left Arithmetic M(X).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-0} 78 SLL (X) ; Shift Left Logical M(X).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-0} 90 78 SLA (Y) ; Shift Left Arithmetic M(Y).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-0} 90 78 SLL (Y) ; Shift Left Logical M(Y).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-0} 79 RLC (X) ; Rotate Left Logical through Carry M(X).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-CC.C} 90 79 RLC (Y) ; Rotate Left Logical through Carry M(Y).{CC.C<-#7<-#6<-#5<-#4<-#3<-#2<-#1<-#0<-CC.C} 7A DEC (X) ; Decrement M(X) <= M(X) - 1 90 7A DEC (Y) ; Decrement M(Y) <= M(Y) - 1 7B XX LD A, (soff,SP) ; Load A <= M(soff+SP) 7C INC (X) ; Increment M(X) <= M(X) - 1 90 7C INC (Y) ; Increment M(Y) <= M(Y) - 1 7D TNZ (X) ; Test for Negative or Zero {CC.N, CC.Z}<= Test{M(X)} 90 7D TNZ (Y) ; Test for Negative or Zero {CC.N, CC.Z}<= Test{M(Y)} 7E SWAP (X) ; Swap Nibbles M(X).low <-> M(X).high 90 7E SWAP (Y) ; Swap Nibbles M(Y).low <-> M(Y).high 7F CLR (X) ; Clear M(X) <= 0 90 7F CLR (Y) ; Clear M(Y) <= 0 80 IRET ; Interrupt Return CC<=M(++SP) A<=M(++SP) XH<=M(++SP) ; XL<=M(++SP) YH<=M(++SP) YL<=M(++SP) ; PCE<=M(++SP) PCH<=M(++SP) PCL<=M(++SP) 81 RET ; Return from subroutine PCE unch. PCH <= M(++SP) PCL <= M(++SP) 82 ExtB MS LS INT emem ; Interrupt PC <= emem 83 TRAP ; Software Interrupt 84 POP A ; Pop from stack A <= M(++SP) preincremrnt 85 POPW X ; Pop Word from stack XH <= M(++SP) XL <= M(++SP) 90 85 POPW Y ; Pop Word from stack YH <= M(++SP) YL <= M(++SP) 86 POP CC ; Pop from stack CC <= M(++SP) preincremrnt 87 RETF ; Far Return from subroutine PCE<=M(++SP) PCH<=M(++SP) PCL<=M(++SP) 88 PUSH A ; Push into the Stack M(SP--) <= A postdecremrnt 89 PUSHW X ; Push Word onto the Stack M(SP--) <= XL M(SP--) <= XH 90 89 PUSHW Y ; Push Word onto the Stack M(SP--) <= YL M(SP--) <= YH 8A PUSH CC ; Push into the Stack M(SP--) <= CC postdecremrnt 8B BREAK ; Software break 8C CCF ; Complement Carry Flag CC.C <= /CC.C 8D ExtB MS LS CALLF emem ; Call Far Subroutine M(SP--)<=PCL M(SP--)<-PCH M(SP--)<-PCE PC<=emem 92 8D MS LS CALLF [lptr.e] ; Call Far Subroutine M(SP--)<=PCL M(SP--)<-PCH M(SP--)<-PCE PC<=M(lptr).e 8E HALT ; Halt Oscillator (CPU + Peripherals) CC.I1 <= 1 CC.I0 <= 0 8F WFI ; Wait For Interrupt (CPU stopped, low power mode) CC.I1 <= 1 CC.I0 <= 0 72 8F WFE ; Wait For Event (CPU stopped, low power mode) 90 ; prefix PDY Replases an X based instruction by a Y one. 91 ; prefix PIY indirect X by a Y one 92 ; prefix PIX direct to indirect addressing mode . 93 LDW X, Y ; Load Word X <= Y 90 93 LDW Y, X ; Load Word Y <= X 94 LDW SP, X ; Load Word SP <= X 90 94 LDW SP, Y ; Load Word SP <= Y 95 LD XH, A ; Load XH <= A 90 95 LD YH, A ; Load YH <= A 96 LDW X, SP ; Load Word X <= SP 90 96 LDW Y, SP ; Load Word Y <= SP 97 LD XL, A ; Load XL <= A 90 97 LD YL, A ; Load YL <= A 98 RCF ; Reset Carry Flag CC.C <= 0 99 SCF ; Set Carry Flag CC.C <= 1 9A RIM ; Reset Interrupt Mask / Enable Interrupt CC.I1 <= 1 CC.I0 <= 0 9B SIM ; Set Interrupt Mask / Disable Interrupt CC.I1 <= 1 CC.I0 <= 1 9C RVF ; Reset Overflow Flag CC.V <= 0 9D NOP ; No operation 9E LD A, XH ; Load A <= XH 90 9E LD A, YH ; Load A <= YH 9F LD A, XL ; Load A <= XL 90 9F LD A, YL ; Load A <= YL A0 XX SUB A, #byte ; Subtraction A <= A - #byte A1 XX CP A, #byte ; Compare {CC.N, CC.Z, CC.C}<= Test{A - #byte} A2 XX SBC A, #byte ; Subtraction with Carry/Borrow A <= A - #byte - CC.C 72 A2 MS LS SUBW Y, #word ; Subtraction Word Y <= Y - #word A3 MS LS CPW X, #word ; Compare Word {CC.N, CC.Z, CC.C}<= Test{X - #word} 90 A3 MS LS CPW Y, #word ; Compare Word {CC.N, CC.Z, CC.C}<= Test{Y - #word} A4 XX AND A, #byte ; Logical AND A <= A AND #byte A5 XX BCP A, #byte ; Logical Bit Compare {CC.N, CC.Z}<= Test{A AND #byte} A6 XX LD A, #byte ; Load A <= #byte A7 ExtB MS LS LDF (eoff,X), A ; Load Far M(eoff+X) <= A 90 A7 ExtB MS LS LDF (eoff,Y), A ; Load Far M(eoff+Y) <= A 91 A7 MS LS LDF ([lptr.e],Y), A ; Load Far M(M(lptr).e+Y) <= A 92 A7 MS LS LDF ([lptr.e],X), A ; Load Far M(M(lptr).e+X) <= A A8 XX XOR A, #byte ; Logical Exclusive OR A <= A XOR #byte A9 XX ADC A, #byte ; Addition with Carry A <= A + #byte + CC.C 72 A9 MS LS ADDW Y, #word ; Addition Word Y <= Y + #word AA XX OR A, #byte ; Logical OR A <= A OR #byte AB XX ADD A, #byte ; Addition A <= A + #byte AC ExtB MS LS JPF emem ; Jump Far PC <- #emem 92 AC MS LS JPF [lptr.e] ; Jump Far PC <- M(lptr).e AD XX CALLR ssoff ; CALL Subroutine Relative M(SP--)<=PCL M(SP--)<-PCH PC<=PC+ssoff AE MS LS LDW X, #word ; Load Word X <= #word 90 AE MS LS LDW Y, #word ; Load Word Y <= #word AF ExtB MS LS LDF A, (eoff,X) ; Load A <= M(eoff,X) 90 AF ExtB MS LS LDF A, (eoff,Y) ; Load A <= M(eoff,Y) 91 AF MS LS LDF A, ([lptr.e],Y) ; Load A <= M(M(lptr).e+Y) 92 AF MS LS LDF A, ([lptr.e],X) ; Load A <= M(M(lptr).e+M) B0 XX SUB A, smem ; Subtraction A <= A - M(smem) 72 B0 MS LS SUBW X, lmem.w ; Subtraction Word X <= X - M(lmem).w B1 XX CP A, smem ; Compare {CC.N, CC.Z, CC.C}<= Test{ A - M(smem) } B2 XX SBC A, smem ; Subtraction with Carry/Borrow A <= A - M(smem) - CC.C 72 B2 MS LS SUBW Y, lmem.w ; Subtraction word Y <= Y - M(lmem).w B3 XX CPW X, smem.w ; Compare Word {CC.N, CC.Z, CC.C}<= Test{ X - M(smem).w } 90 B3 XX CPW Y, smem.w ; Compare Word {CC.N, CC.Z, CC.C}<= Test{ Y - M(smem).w } B4 XX AND A, smem ; Logical AND A <= A AND M(smem) B5 XX BCP A, smem ; Logical Bit Compare {CC.N, CC.Z}<= Test{A AND M(smem)} B6 XX LD A, smem ; Load A <= M(smem) B7 XX LD smem, A ; Load M(smem) <= A B8 XX XOR A, smem ; Logical Exclusive OR A <= A XOR M(smem) B9 XX ADC A, smem ; Addition with Carry A <= A + M(smem) + CC.C 72 B9 MS LS ADDW Y, lmem.w ; Addition Word Y <= Y + M(lmem).w BA XX OR A, smem ; Logical OR A <= A OR M(smem) BB XX ADD A, smem ; Addition A <= A + M(smem) 72 BB MS LS ADDW X, lmem.w ; Addition Word X <= X + M(lmem).w BC ExtB MS LS LDF A, emem ; Load Far A <= M(emem) 92 BC MS LS LDF A, [lptr.e] ; Load Far A <= M(M(lptr).e) BD ExtB MS LS LDF emem, A ; Load Far M(emem) <= A 92 BD MS LS LDF [lptr.e], A ; Load Far M(M(lptr).e) <= A BE XX LDW X, smem.w ; Load X <= M(smem).w 90 BE XX LDW Y, smem.w ; Load Y <= M(smem).w BF XX LDW smem.w, X ; Load M(smem).w <= X 90 BF XX LDW smem.w, Y ; Load M(smem).w <= Y C0 MS LS SUB A, lmem ; Subtraction A <= A - M(Lmem) 72 C0 XX SUB A, [lptr.w] ; Subtraction A <= A - M(M(lptr).w) 92 C0 XX SUB A, [sptr.w] ; Subtraction A <= A - M(M(sptr).w) C1 MS LS CP A, lmem ; Compare {CC.N, CC.Z, CC.C} <= Test{ A - M(lmem) } 72 C1 MS LS CP A, [lptr.w] ; Compare {CC.N, CC.Z, CC.C} <= Test{ A - M(M(lptr).w) } 92 C1 XX CP A, [sptr.w] ; Compare {CC.N, CC.Z, CC.C} <= Test{ A - M(M(sptr).w) } C2 MS LS SBC A, lmem ; Subtraction with Carry/Borrow A <= A - M(lmem) - CC.C 72 C2 MS LS SBC A, [lptr.w] ; Subtraction with Carry/Borrow A <= A - M(M(lptr).w) - CC.C 92 C2 XX SBC A, [sptr.w] ; Subtraction with Carry/Borrow A <= A - M(M(sptr).w) - CC.C C3 MS LS CPW X, lmem.w ; Compare Word {CC.N, CC.Z, CC.C} <= Test{ X - M(lmem).w } 72 C3 MS LS CPW X, [lptr.w] ; Compare Word {CC.N, CC.Z, CC.C} <= Test{ X - M(M(lptr).w).w } 90 C3 MS LS CPW Y, lmem.w ; Compare Word {CC.N, CC.Z, CC.C} <= Test{ Y - M(lmem).w } 91 C3 XX CPW Y, [lptr.w] ; Compare Word {CC.N, CC.Z, CC.C} <= Test{ Y - M(M(lptr).w).w } 92 C3 XX CPW X, [sptr.w] ; Compare Word {CC.N, CC.Z, CC.C} <= Test{ X - M(M(sptr).w).w } C4 MS LS AND A, lmem ; Logical AND A <= A AND M(lmem) 72 C4 MS LS AND A, [lptr.w] ; Logical AND A <= A AND M(M(lptr).w) 92 C4 XX AND A, [sptr.w] ; Logical AND A <= A AND M(M(sptr).w) C5 MS LS BCP A, lmem ; Logical Bit Compare {CC.N, CC.Z} <= Test{ A AND M(lmem) } 72 C5 MS LS BCP A, [lptr.w] ; Logical Bit Compare {CC.N, CC.Z} <= Test{ A AND M(M(lptr).w) } 92 C5 XX BCP A, [sptr.w] ; Logical Bit Compare {CC.N, CC.Z} <= Test{ A AND M(M(sptr).w) } C6 MS LS LD A, lmem ; Load A <= M(lmem) 72 C6 MS LS LD A, [lptr.w] ; Load A <= M(M(lptr).w) 92 C6 XX LD A, [sptr.w] ; Load A <= M(M(sptr).w) C7 MS LS LD lmem, A ; Load M(lmem) <= A 72 C7 MS LS LD [lptr.w], A ; Load M(M(lptr).w) <= A 92 C7 XX LD [sptr.w], A ; Load M(M(sptr).w) <= A C8 MS LS XOR A, lmem ; Logical Exclusive OR A <= A XOR M(lmem) 72 C8 MS LS XOR A, [lptr.w] ; Logical Exclusive OR A <= A XOR M(M(lptr).w) 92 C8 XX XOR A, [sptr.w] ; Logical Exclusive OR A <= A XOR M(M(sptr).w) C9 MS LS ADC A, lmem ; Addition with Carry A <= A + M(lmem) + CC.C 72 C9 MS LS ADC A, [lptr.w] ; Addition with Carry A <= A + M(M(lptr).w) + CC.C 92 C9 XX ADC A, [sptr.w] ; Addition with Carry A <= A + M(M(sptr).w) + CC.C CA MS LS OR A, lmem ; Logical OR A <= A OR M(lmem) 72 CA MS LS OR A, [lptr.w] ; Logical OR A <= A OR M(M(lptr).w) 92 CA XX OR A, [sptr.w] ; Logical OR A <= A OR M(M(sptr).w) CB MS LS ADD A, lmem ; Addition A <= A + M(lmem) 72 CB MS LS ADD A, [lptr.w] ; Addition A <= A + M(M(lptr).w) 92 CB XX ADD A, [sptr.w] ; Addition A <= A + M(M(sptr).w) CC MS LS JP lmem ; Jump (Absolute) PCE unch. PCH:PCL <= #lmem 72 CC MS LS JP [lptr.w] ; Jump (Absolute) PCE unch. PCH:PCL <= M(lptr).w 92 CC XX JP [sptr.w] ; Jump (Absolute) PCE unch. PCH:PCL <= M(sptr).w CD MS LS CALL lmem ; Call Subroutine (Absolute) M(SP--)<=PCL M(SP--)<-PCH PCE unch. PCH:PCL <= #lmem 72 CD MS LS CALL [lptr.w] ; CALL Subroutine (Absolute) M(SP--)<=PCL M(SP--)<-PCH PCE unch. PCH:PCL <= M(lptr).w 92 CD XX CALL [sptr.w] ; CALL Subroutine (Absolute) M(SP--)<=PCL M(SP--)<-PCH PCE unch. PCH:PCL <= M(sptr).w CE MS LS LDW X, lmem.w ; Load Word X <= M(lmem).w 72 CE MS LS LDW X, [lptr.w] ; Load Word X <= M(M(lptr).w).w 90 CE MS LS LDW Y, lmem.w ; Load Word Y <= M(lmem).w 91 CE XX LDW Y, [sptr.w] ; Load Word Y <= M(M(sptr).w).w 92 CE XX LDW X, [sptr.w] ; Load Word X <= M(M(sptr).w).w CF MS LS LDW lmem.w, X ; Load Word M(lmem).w <= X 72 CF MS LS LDW [lptr.w], X ; Load Word M(M(lptr).w) <= X 90 CF MS LS LDW lmem.w, Y ; Load Word M(lmem).w <= Y 91 CF XX LDW [sptr.w].w, Y ; Load Word M(M(sptr).w).w <= Y 92 CF XX LDW [sptr.w].w, X ; Load Word M(M(lptr).w).w <= X D0 MS LS SUB A, (loff,X) ; Subtraction A <= A - M(loff+X) 72 D0 MS LS SUB A, ([lptr.w],X) ; Subtraction A <= A - M(M(lptr).w+X) 90 D0 MS LS SUB A, (loff,Y) ; Subtraction A <= A - M(loff+Y) 91 D0 XX SUB A, ([sptr.w],Y) ; Subtraction A <= A - M(M(sptr).w+Y) 92 D0 XX SUB A, ([sptr.w],X) ; Subtraction A <= A - M(M(sptr).w+X) D1 MS LS CP A, (loff,X) ; Compare {CC.N, CC.Z, CC.C} <= Test{ A - M(loff+X) } 72 D1 MS LS CP A, ([lptr.w],X) ; Compare {CC.N, CC.Z, CC.C} <= Test{ A - M(M(lptr).w+X) } 90 D1 MS LS CP A, (loff,Y) ; Compare {CC.N, CC.Z, CC.C} <= Test{ A - M(loff+Y) } 91 D1 XX CP A, ([sptr.w],Y) ; Compare {CC.N, CC.Z, CC.C} <= Test{ A - M(M(sptr).w+Y) } 92 D1 XX CP A, ([sptr.w],X) ; Compare {CC.N, CC.Z, CC.C} <= Test{ A - M(M(sptr).w+X) } D2 MS LS SBC A, (loff,X) ; Subtraction with Carry/Borrow A <= A - M(loff+X) 72 D2 MS LS SBC A, ([lptr.w],X) ; Subtraction with Carry/Borrow A <= A - M(M(lptr).w+X) with Carry/Borrow from A 90 D2 MS LS SBC A, (loff,Y) ; Subtraction with Carry/Borrow A <= A - M(loff+Y) 91 D2 XX SBC A, ([sptr.w],Y) ; Subtraction with Carry/Borrow A <= A - M(M(srptr).w+Y) 92 D2 XX SBC A, ([sptr.w],X) ; Subtraction with Carry/Borrow A <= A - M(M(srptr).w+X) D3 MS LS CPW Y, (loff,X).w ; Compare Word {CC.N, CC.Z, CC.C} <= Test{ Y - M(loff+X).w } 72 D3 MS LS CPW X, ([lptr.w],X).w ; Compare Word {CC.N, CC.Z, CC.C} <= Test{ X - M(M(lptr).w+X).w } 90 D3 MS LS CPW X, (loff,Y).w ; Compare Word {CC.N, CC.Z, CC.C} <= Test{ X - M(loff+Y).w } 91 D3 XX CPW X, ([sptr.w],Y).w ; Compare Word {CC.N, CC.Z, CC.C} <= Test{ X - M(M(sptr).w+Y).w } 92 D3 XX CPW X, ([sptr.w],X).w ; Compare Word {CC.N, CC.Z, CC.C} <= Test{ X - M(M(sptr).w+X).w } D4 MS LS AND A, (loff,X) ; Logical AND A <= A AND M(loff+X) 72 D4 MS LS AND A, ([lptr.w],X) ; Logical AND A <= A AND M(M(lptr).w+X) 90 D4 MS LS AND A, (loff,Y) ; Logical AND A <= A AND M(loff+Y) 91 D4 XX AND A, ([sptr.w],Y) ; Logical AND A <= A AND M(M(sptr).w+Y) 92 D4 XX AND A, ([sptr.w],X) ; Logical AND A <= A AND M(M(sptr).w+X) D5 MS LS BCP A, (loff,X) ; Logical Bit Compare {CC.N, CC.Z} <= Test{ A AND M(loff+Y) } 72 D5 MS LS BCP A, ([lptr.w],X) ; Logical Bit Compare {CC.N, CC.Z} <= Test{ A AND M(M(lptr).w+X) } 90 D5 MS LS BCP A, (loff,Y) ; Logical Bit Compare {CC.N, CC.Z} <= Test{ A AND M(loff+Y) } 91 D5 XX BCP A, ([sptr.w],Y) ; Logical Bit Compare {CC.N, CC.Z} <= Test{ A AND M(M(sptr).w+Y) } 92 D5 XX BCP A, ([sptr.w],X) ; Logical Bit Compare {CC.N, CC.Z} <= Test{ A AND M(M(sptr).w+X) } D6 MS LS LD A, (loff,X) ; Load A <= M(loff+X) 72 D6 MS LS LD A, ([lptr.w],X) ; Load A <= M(M(lptr).w+X) 90 D6 MS LS LD A, (loff,Y) ; Load A <= M(loff+Y) 91 D6 XX LD A, ([sptr.w],Y) ; Load A <= M(M(sptr).w+Y) 92 D6 XX LD A, ([sptr.w],X) ; Load A <= M(M(sptr).w+X) D7 MS LS LD (loff,X), A ; Load M(loff+X) <= A 72 D7 MS LS LD ([lptr.w],X), A ; Load M(M(lptr).w+X) <= A 90 D7 MS LS LD (loff,Y), A ; Load M(loff+Y) <= A 91 D7 XX LD ([sptr.w],Y), A ; Load M(M(sptr).w+Y) <= A 92 D7 XX LD ([sptr.w],X), A ; Load M(M(sptr).w+X) <= A D8 MS LS XOR A, (loff,X) ; Logical Exclusive OR A <= A XOR M(loff+X) 72 D8 MS LS XOR A, ([lptr.w],X) ; Logical Exclusive OR A <= A XOR M(M(lptr).w+X) 90 D8 MS LS XOR A, (loff,Y) ; Logical Exclusive OR A <= A XOR M(loff+Y) 91 D8 XX XOR A, ([sptr.w],Y) ; Logical Exclusive OR A <= A XOR M(M(sptr).w+Y) 92 D8 XX XOR A, ([sptr.w],X) ; Logical Exclusive OR A <= A XOR M(M(sptr).w+X) D9 MS LS ADC A, (loff,X) ; Addition with Carry A <= A + M(loff+X) + CC.C 72 D9 MS LS ADC A, ([lptr.w],X) ; Addition with Carry A <= A + M(M(lptr).w+X) + CC.C 90 D9 MS LS ADC A, (loff,Y) ; Addition with Carry A <= A + M(loff+Y) + CC.C 91 D9 XX ADC A, ([sptr.w],Y) ; Addition with Carry A <= A + M(M(sptr).w+Y) + CC.C 92 D9 XX ADC A, ([sptr.w],X) ; Addition with Carry A <= A + M(M(sptr).w+X) + CC.C DA MS LS OR A, (loff,X) ; Logical OR A <= A OR M(loff+X) 72 DA MS LS OR A, ([lptr.w],X) ; Logical OR A <= A OR M(M(lptr).w+X) 90 DA MS LS OR A, (loff,Y) ; Logical OR A <= A OR M(loff+Y) 91 DA XX OR A, ([sptr.w],Y) ; Logical OR A <= A OR M(M(sptr).w+Y) 92 DA XX OR A, ([sptr.w],X) ; Logical OR A <= A OR M(M(sptr).w+X) DB MS LS ADD A, (loff,X) ; Addition A <= A + M(loff+X) 72 DB MS LS ADD A, ([lptr.w],X) ; Addition A <= A + M(M(lptr).w+X) 90 DB MS LS ADD A, (loff,Y) ; Addition A <= A + M(loff+Y) 91 DB XX ADD A, ([sptr.w],Y) ; Addition A <= A + M(M(sptr).w+Y) 92 DB XX ADD A, ([sptr.w],X) ; Addition A <= A + M(M(sptr).w+X) DC MS LS JP (loff,X) ; Jump (Absolute) PCE unch. PCH:PCL <= M(loff+X).w 72 DC MS LS JP ([lptr.w],X) ; Jump (Absolute) PCE unch. PCH:PCL <= M(M(lptr).w+X).w 90 DC MS LS JP (loff,Y) ; Jump (Absolute) PCE unch. PCH:PCL <= M(loff+Y).w 91 DC XX JP ([sptr.w],Y) ; Jump (Absolute) PCE unch. PCH:PCL <= M(M(sptr).w+Y).w 92 DC XX JP ([sptr.w],X) ; Jump (Absolute) PCE unch. PCH:PCL <= M(M(sptr).w+X).w DD MS LS CALL (loff,X) ; CALL Subroutine (Absolute) M(SP--)<=PCL M(SP--)<-PCH PCE unch. PCH:PCL<=M(loff+X).w 72 DD MS LS CALL ([lptr.w],X) ; CALL Subroutine (Absolute) M(SP--)<=PCL M(SP--)<-PCH PCE unch. PCH:PCL<=M(M(lptr).w+X).w 90 DD MS LS CALL (loff,Y) ; CALL Subroutine (Absolute) M(SP--)<=PCL M(SP--)<-PCH PCE unch. PCH:PCL<=M(loff+Y).w 91 DD XX CALL ([sptr.w],Y) ; CALL Subroutine (Absolute) M(SP--)<=PCL M(SP--)<-PCH PCE unch. PCH:PCL<=M(M(sptr).w+Y).w 92 DD XX CALL ([sptr.w],X) ; CALL Subroutine (Absolute) M(SP--)<=PCL M(SP--)<-PCH PCE unch. PCH:PCL<=M(M(sptr).w+X).w DE MS LS LDW X, (loff,X).w ; Load Word X <= M(loff+X).w 72 DE MS LS LDW X, ([lptr.w],X).w ; Load Word X <= M(M(lptr).w+X).w 90 DE MS LS LDW Y, (loff,Y).w ; Load Word Y <= M(loff+Y).w 91 DE XX LDW Y, ([sptr.w],Y).w ; Load Word Y <= M(M(sptr).w+Y).w 92 DE XX LDW X, ([sptr.w],X).w ; Load Word X <= M(M(sptr).w+X).w DF MS LS LDW (loff,X).w, Y ; Load Word M(loff+X).w <= Y 72 DF MS LS LDW ([lptr.w],X).w, Y ; Load Word M(M(lptr).w+X).w <= Y 90 DF MS LS LDW (loff,Y).w, X ; Load Word M(loff+Y).w <= X 91 DF XX LDW ([sptr.w],Y).w, X ; Load Word M(M(sptr).w+Y).w <= X 92 DF XX LDW ([sptr.w],X).w, Y ; Load Word M(M(sptr).w+X).w <= Y E0 XX SUB A, (soff,X) ; Subtraction A <= A - M(soff+X) 90 E0 XX SUB A, (soff,Y) ; Subtraction A <= A - M(soff+Y) E1 XX CP A, (soff,X) ; Compare {CC.N, CC.Z, CC.C} = Test{A - M(soff+X)} 90 E1 XX CP A, (soff,Y) ; Compare {CC.N, CC.Z, CC.C} = Test{A - M(soff+Y)} E2 XX SBC A, (soff,X) ; Subtraction A <= A - M(soff+X) - CC.C 72 F2 XX SUBW Y, (soff.w,SP).w ; Subtraction Y <= Y - M(soff.w+SP).w 90 E2 XX SBC A, (soff,Y) ; Subtraction A <= A - M(soff+Y) - CC.C E3 XX CPW Y, (soff,X).w ; Compare {CC.N, CC.Z, CC.C} <= Test{Y - M(soff+X).w} 90 E3 XX CPW X, (soff,Y).w ; Compare {CC.N, CC.Z, CC.C} <= Test{X - M(soff+Y).w} E4 XX AND A, (soff,X) ; Logical AND A <= A AND M(soff+X) 90 E4 XX AND A, (soff,Y) ; Logical AND A <= A AND M(soff+Y) E5 XX BCP A, (soff,X) ; Logical Bit Compare {CC.N, CC.Z} <= Test{A AND M(soff+X)} 90 E5 XX BCP A, (soff,Y) ; Logical Bit Compare {CC.N, CC.Z} <= Test{A AND M(soff+Y)} E6 XX LD A, (soff,X) ; Load A <= M(soff+X) 90 E6 XX LD A, (soff,Y) ; Load A <= M(soff+Y) E7 XX LD (soff,X), A ; Load M(soff+X) <= A 90 E7 XX LD (soff,Y), A ; Load M(soff+Y) <= A E8 XX XOR (soff,X) ; Logical Exclusive OR A <= A XOR M(soff+X) 90 E8 XX XOR (soff,Y) ; Logical Exclusive OR A <= A XOR M(soff+Y) E9 XX ADC A, (soff,X) ; Addition with Carry A <= A + M(soff+X) + CC.C 90 E9 XX ADC A, (soff,Y) ; Addition with Carry A <= A + M(soff+Y) + CC.C EA XX OR A, (soff,X) ; Logical OR A <= A OR M(soff+X) 90 FA XX OR A, (soff,Y) ; Logical OR A <= A OR M(soff+Y) EB XX ADD A, (soff,X) ; Addition A <= A + M(soff+X) 90 EB XX ADD A, (soff,Y) ; Addition A <= A + M(soff+Y) EC XX JP (soff,X) ; Jump (Absolute) PCE unch. PCH:PCL <= M(soff+X).w 90 EC XX JP (soff,Y) ; Jump (Absolute) PCE unch. PCH:PCL <= M(soff+Y).w ED XX CALL (soff,X) ; CALL Subroutine (Absolute) M(SP--)<=PCL M(SP--)<-PCH PCE unch. PCH:PCL<=M(soff+X).w 90 ED XX CALL (soff,Y) ; CALL Subroutine (Absolute) M(SP--)<=PCL M(SP--)<-PCH PCE unch. PCH:PCL<=M(soff+Y).w EE XX LDW X, (soff,X).w ; Load Word X <= M(soff+X).w 90 EE XX LDW Y, (soff,Y).w ; Load Word Y <= M(soff+Y).w EF XX LDW (soff,X), Y ; Load Word M(soff+X).w <= Y 90 EF XX LDW (soff,Y), X ; Load Word M(soff+Y).w <= X F0 SUB A, (X) ; Subtraction A <= A - M(X) 72 F0 XX SUBW X, (soff,SP) ; Subtraction Word X <= X - M(soff+SP).w 90 F0 SUB A, (Y) ; Subtraction A <= A - M(Y) F1 CP A, (X) ; Compare {CC.N, CC.Z, CC.C} = Test{A - M(X)} 90 F1 CP A, (Y) ; Compare {CC.N, CC.Z, CC.C} = Test{A - M(Y)} F2 SBC A, (X) ; Subtraction A <= A - M(X) - CC.C 90 F2 SBC A, (Y) ; Subtraction A <= A - M(Y) - CC.C F3 CPW Y, (X) ; Compare {CC.N, CC.Z, CC.C} = Test{Y - M(X)} word ? 90 F3 CPW X, (Y) ; Compare {CC.N, CC.Z, CC.C} = Test{Y - M(X)} word ? F4 AND A, (X) ; Logical AND A <= A AND M(X) 90 F4 AND A, (Y) ; Logical AND A <= A AND M(Y) F5 BCP A, (X) ; Logical Bit Compare {CC.N, CC.Z} <= Test{A AND M(X) 90 F5 BCP A, (Y) ; Logical Bit Compare {CC.N, CC.Z} <= Test{A AND M(Y) F6 LD A, (X) ; Load A <= M(X) 90 F6 LD A, (Y) ; Load A <= M(Y) F7 LD (X), A ; Load M(X) <= A 90 F7 LD (Y), A ; Load M(Y) <= A F8 XOR A, (X) ; Logical Exclusive OR A <= A XOR M(X) 90 F8 XOR A, (Y) ; Logical Exclusive OR A <= A XOR M(Y) F9 ADC A, (X) ; Addition with Carry A <= A + M(X) + CC.C 72 F9 XX ADDW Y, (soff,SP) ; Addition Word Y <= Y + M(soff+SP) 90 F9 ADC A, (Y) ; Addition with Carry A <= A + M(Y) + CC.C FA OR A, (X) ; Logical OR A <= A OR M(X) 90 FA OR A, (Y) ; Logical OR A <= A OR M(Y) FB ADD A, (X) ; Addition A <= A + M(X) 72 FB XX ADDW X, (soff,SP) ; Addition Word X <= X + M(soff+SP) 90 FB ADD A, (Y) ; Addition A <= A + M(Y) FC JP (X) ; Jump (Absolute) PCE unch. PCH:PCL <= M(X).w 90 FC JP (Y) ; Jump (Absolute) PCE unch. PCH:PCL <= M(Y).w FD CALL (X) ; CALL Subroutine (Absolute) M(SP--)<=PCL M(SP--)<-PCH PCE unch. PCH:PCL<=M(X).w 90 FD CALL (Y) ; CALL Subroutine (Absolute) M(SP--)<=PCL M(SP--)<-PCH PCE unch. PCH:PCL<=M(Y).w FE LDW X, (X) ; Load Word X <= M(X).w 90 FE LDW Y, (Y) ; Load Word Y <= M(Y).w FF LDW (X), Y ; Load Word M(Y).w <= Y 90 FF LDW (Y), X ; Load Word M(Y).w <= X
Файл можно выгрузить по ссылке [STM8_comand.inc]