From 5b2ed7e4ff76df875a9b8278634712a9fca6499a Mon Sep 17 00:00:00 2001 From: alyosha-tas Date: Sun, 7 Jul 2019 17:32:14 -0400 Subject: [PATCH] MC6800: disassembler and cleanup --- .../CPUs/MC6800/Disassembler.cs | 140 +++++++++--------- .../CPUs/MC6800/Execute.cs | 4 +- .../CPUs/MC6800/Indexed_Modes.cs | 7 +- .../CPUs/MC6800/Interrupts.cs | 9 +- BizHawk.Emulation.Cores/CPUs/MC6800/MC6800.cs | 130 +++++----------- .../CPUs/MC6800/OP_Tables.cs | 61 ++++---- 6 files changed, 149 insertions(+), 202 deletions(-) diff --git a/BizHawk.Emulation.Cores/CPUs/MC6800/Disassembler.cs b/BizHawk.Emulation.Cores/CPUs/MC6800/Disassembler.cs index 5bb59e461d..a1112084ab 100644 --- a/BizHawk.Emulation.Cores/CPUs/MC6800/Disassembler.cs +++ b/BizHawk.Emulation.Cores/CPUs/MC6800/Disassembler.cs @@ -8,40 +8,40 @@ namespace BizHawk.Emulation.Common.Components.MC6800 { static string[] table = { - "NEG DP+i8", // 00 - "???", // 01 + "???", // 00 + "NOP", // 01 "???", // 02 - "COM DP+i8", // 03 - "LSR DP+i8", // 04 + "???", // 03 + "???", // 04 "???", // 05 - "ROR DP+i8", // 06 - "ASR DP+i8", // 07 - "ASL DP+i8", // 08 - "ROL DP+i8", // 09 - "DEC DP+i8", // 0a - "???", // 0b - "INC DP+i8", // 0c - "TST DP+i8", // 0d - "JMP DP+i8", // 0e - "CLR DP+i8", // 0f - "PAGE 2", // 10 - "PAGE 3", // 11 - "NOP", // 12 - "SYNC", // 13 + "TAP", // 06 + "TPA", // 07 + "INX", // 08 + "DEX", // 09 + "CLV", // 0a + "SEV", // 0b + "CLC", // 0c + "SEC", // 0d + "CLI", // 0e + "SEI", // 0f + "SBA", // 10 + "CBA", // 11 + "???", // 12 + "???", // 13 "???", // 14 "???", // 15 - "LBRA i16", // 16 - "LBSR i16", // 17 + "TAB", // 16 + "TBA", // 17 "???", // 18 "DAA", // 19 - "ORCC i8", // 1a - "???", // 1b - "ANDCC i8", // 1c - "SEX", // 1d - "EXG i8", // 1e - "TFR i8", // 1f + "???", // 1a + "ABA", // 1b + "???", // 1c + "???", // 1d + "???", // 1e + "???", // 1f "BRA i8", // 20 - "BRN i8", // 21 + "???", // 21 "BHI i8", // 22 "BLS i8", // 23 "BHS i8", // 24 @@ -56,22 +56,22 @@ namespace BizHawk.Emulation.Common.Components.MC6800 "BLT i8", // 2d "BGT i8", // 2e "BLE i8", // 2f - "LEAX ix16", // 30 - "LEAY ix16", // 31 - "LEAS ix16", // 32 - "LEAU ix16", // 33 - "PSHS i8", // 34 - "PULS i8", // 35 - "PSHU i8", // 36 - "PULU i8", // 37 + "TSX", // 30 + "INS", // 31 + "PULA", // 32 + "PULB", // 33 + "DES", // 34 + "TXS", // 35 + "PSHA", // 36 + "PSHB", // 37 "???", // 38 "RTS", // 39 - "ABX", // 3a + "???", // 3a "RTI", // 3b - "CWAI i8", // 3c - "MUL", // 3d - "???", // 3e - "SWI1", // 3f + "???", // 3c + "???", // 3d + "WAI", // 3e + "SWI", // 3f "NEG A", // 40 "???", // 41 "???", // 42 @@ -139,7 +139,7 @@ namespace BizHawk.Emulation.Common.Components.MC6800 "SUB A,i8", // 80 "CMP A,i8", // 81 "SBC A,i8", // 82 - "SUB D,i16", // 83 + "???", // 83 "AND A,i8", // 84 "BIT A,i8", // 85 "LD A,i8", // 86 @@ -150,12 +150,12 @@ namespace BizHawk.Emulation.Common.Components.MC6800 "ADD A,i8", // 8b "CMP X,i16", // 8c "BSR i8", // 8d - "LD X,i16", // 8e + "LD SP,i16", // 8e "???", // 8f "SUB A,DP+i8", // 90 "CMP A,DP+i8", // 91 "SBC A,DP+i8", // 92 - "SUB D,DP+i8", // 93 + "???", // 93 "AND A,DP+i8", // 94 "BIT A,DP+i8", // 95 "LD A,DP+i8", // 96 @@ -165,13 +165,13 @@ namespace BizHawk.Emulation.Common.Components.MC6800 "OR A,DP+i8", // 9a "ADD A,DP+i8", // 9b "CMP X,DP+i8", // 9c - "JSR DP+i8", // 9d - "LD X,DP+i8", // 9e - "ST X,DP+i8", // 9f + "???", // 9d + "LD SP,DP+i8", // 9e + "ST SP,DP+i8", // 9f "SUB A,ix16", // a0 "CMP A,ix16", // a1 "SBC A,ix16", // a2 - "SUB D,ix16", // a3 + "???", // a3 "AND A,ix16", // a4 "BIT A,ix16", // a5 "LD A,ix16", // a6 @@ -182,12 +182,12 @@ namespace BizHawk.Emulation.Common.Components.MC6800 "ADD A,ix16", // ab "CMP X,ix16", // ac "JSR ix16", // ad - "LD X,ix16", // ae - "ST X,ix16", // af + "LD SP,ix16", // ae + "ST SP,ix16", // af "SUB A,ex16", // b0 "CMP A,ex16", // b1 "SBC A,ex16", // b2 - "SUB D,ex16", // b3 + "???", // b3 "AND A,ex16", // b4 "BIT A,ex16", // b5 "LD A,ex16", // b6 @@ -198,12 +198,12 @@ namespace BizHawk.Emulation.Common.Components.MC6800 "ADD A,ex16", // bb "CMP X,ex16", // bc "JSR ex16", // bd - "LD X,ex16", // be - "ST X,ex16", // bf + "LD SP,ex16", // be + "ST SP,ex16", // bf "SUB B,i8", // c0 "CMP B,i8", // c1 "SBC B,i8", // c2 - "ADD D,i16", // c3 + "???", // c3 "AND B,i8", // c4 "BIT B,i8", // c5 "LD B,i8", // c6 @@ -212,14 +212,14 @@ namespace BizHawk.Emulation.Common.Components.MC6800 "ADC B,i8", // c9 "OR B,i8", // ca "ADD B,i8", // cb - "LD D,i16", // cc + "???", // cc "???", // cd - "LD U,i16", // ce + "LD X,i16", // ce "???", // cf "SUB B,DP+i8", // d0 "CMP B,DP+i8", // d1 "SBC B,DP+i8", // d2 - "ADD D,DP+i8", // d3 + "???", // d3 "AND B,DP+i8", // d4 "BIT B,DP+i8", // d5 "LD B,DP+i8", // d6 @@ -228,14 +228,14 @@ namespace BizHawk.Emulation.Common.Components.MC6800 "ADC B,DP+i8", // d9 "OR B,DP+i8", // da "ADD B,DP+i8", // db - "LD D,DP+i8", // dc - "ST D,DP+i8", // dd - "LD U,DP+i8", // de - "ST U,DP+i8", // df + "???", // dc + "???", // dd + "LD X,DP+i8", // de + "ST X,DP+i8", // df "SUB B,ix16", // e0 "CMP B,ix16", // e1 "SBC B,ix16", // e2 - "ADD D,ix16", // e3 + "???", // e3 "AND B,ix16", // e4 "BIT B,ix16", // e5 "LD B,ix16", // e6 @@ -244,14 +244,14 @@ namespace BizHawk.Emulation.Common.Components.MC6800 "ADC B,ix16", // e9 "OR B,ix16", // ea "ADD B,ix16", // eb - "LD D,ix16", // ec - "ST D,ix16", // ed - "LD U,ix16", // ee - "ST U,ix16", // ef + "???", // ec + "???", // ed + "LD X,ix16", // ee + "ST X,ix16", // ef "SUB B,ex16", // f0 "CMP B,ex16", // f1 "SBC B,ex16", // f2 - "ADD D,ex16", // f3 + "???", // f3 "AND B,ex16", // f4 "BIT B,ex16", // f5 "LD B,ex16", // f6 @@ -260,10 +260,10 @@ namespace BizHawk.Emulation.Common.Components.MC6800 "ADC B,ex16", // f9 "OR B,ex16", // fa "ADD B,ex16", // fb - "LD D,ex16", // fc - "ST D,ex16", // fd - "LD U,ex16", // fe - "ST U,ex16", // ff + "???", // fc + "???", // fd + "LD X,ex16", // fe + "ST X,ex16", // ff }; public static string Disassemble(ushort addr, Func reader, out ushort size) diff --git a/BizHawk.Emulation.Cores/CPUs/MC6800/Execute.cs b/BizHawk.Emulation.Cores/CPUs/MC6800/Execute.cs index 634acf8fac..7964b91667 100644 --- a/BizHawk.Emulation.Cores/CPUs/MC6800/Execute.cs +++ b/BizHawk.Emulation.Cores/CPUs/MC6800/Execute.cs @@ -45,8 +45,8 @@ namespace BizHawk.Emulation.Common.Components.MC6800 case 0x13: ILLEGAL(); break; // ILLEGAL case 0x14: ILLEGAL(); break; // ILLEGAL case 0x15: ILLEGAL(); break; // ILLEGAL - case 0x16: REG_OP(TAB, A); break; // LBRA (Relative) - case 0x17: REG_OP(TBA, A); break; // LBSR (Relative) + case 0x16: REG_OP(TAB, A); break; // TAB (Inherent) + case 0x17: REG_OP(TBA, A); break; // TBA (Inherent) case 0x18: ILLEGAL(); break; // ILLEGAL case 0x19: REG_OP(DA, A); break; // DAA (Inherent) case 0x1A: ILLEGAL(); break; // ILLEGAL diff --git a/BizHawk.Emulation.Cores/CPUs/MC6800/Indexed_Modes.cs b/BizHawk.Emulation.Cores/CPUs/MC6800/Indexed_Modes.cs index bdda0a93d5..7ec028b24c 100644 --- a/BizHawk.Emulation.Cores/CPUs/MC6800/Indexed_Modes.cs +++ b/BizHawk.Emulation.Cores/CPUs/MC6800/Indexed_Modes.cs @@ -65,12 +65,13 @@ namespace BizHawk.Emulation.Common.Components.MC6800 private void INDEX_OP_JSR() { PopulateCURINSTR(TR, ADDR, PC, - DEC16, SP, + IDLE, + IDLE, TR, PC, IDX_EA, WR_DEC_LO, SP, ADDR, - WR_HI, SP, ADDR); + WR_DEC_HI, SP, ADDR); - IRQS = 5; + IRQS = 6; } private void INDEX_OP_LD() diff --git a/BizHawk.Emulation.Cores/CPUs/MC6800/Interrupts.cs b/BizHawk.Emulation.Cores/CPUs/MC6800/Interrupts.cs index d3ca892346..ccb407410a 100644 --- a/BizHawk.Emulation.Cores/CPUs/MC6800/Interrupts.cs +++ b/BizHawk.Emulation.Cores/CPUs/MC6800/Interrupts.cs @@ -8,7 +8,7 @@ namespace BizHawk.Emulation.Common.Components.MC6800 { Regs[ADDR] = 0xFFF8; PopulateCURINSTR(IDLE, - SET_E, + IDLE, DEC16, SP, WR_DEC_LO, SP, PC, WR_DEC_HI, SP, PC, @@ -29,7 +29,7 @@ namespace BizHawk.Emulation.Common.Components.MC6800 { Regs[ADDR] = 0xFFFC; PopulateCURINSTR(IDLE, - SET_E, + IDLE, DEC16, SP, WR_DEC_LO, SP, PC, WR_DEC_HI, SP, PC, @@ -38,7 +38,7 @@ namespace BizHawk.Emulation.Common.Components.MC6800 WR_DEC_LO, SP, B, WR_DEC_LO, SP, A, WR, SP, CC, - SET_F_I, + SET_I, RD_INC, ALU, ADDR, RD_INC, ALU2, ADDR, SET_ADDR, PC, ALU, ALU2); @@ -48,14 +48,13 @@ namespace BizHawk.Emulation.Common.Components.MC6800 public bool NMIPending; public bool IRQPending; - public bool IN_SYNC; public Action IRQCallback = delegate () { }; public Action NMICallback = delegate () { }; private void ResetInterrupts() { - IN_SYNC = false; + } } } \ No newline at end of file diff --git a/BizHawk.Emulation.Cores/CPUs/MC6800/MC6800.cs b/BizHawk.Emulation.Cores/CPUs/MC6800/MC6800.cs index 14a5b9eeae..eb8963c6dd 100644 --- a/BizHawk.Emulation.Cores/CPUs/MC6800/MC6800.cs +++ b/BizHawk.Emulation.Cores/CPUs/MC6800/MC6800.cs @@ -13,6 +13,7 @@ namespace BizHawk.Emulation.Common.Components.MC6800 public const ushort RD = 2; public const ushort WR = 3; public const ushort TR = 4; + public const ushort SET_ADDR = 5; public const ushort ADD8 = 6; public const ushort SUB8 = 7; public const ushort ADC8 = 8; @@ -33,53 +34,45 @@ namespace BizHawk.Emulation.Common.Components.MC6800 public const ushort LSR = 23; public const ushort BIT = 24; public const ushort WAI = 25; - public const ushort SYNC = 26; - public const ushort RD_INC = 27; - public const ushort RD_INC_OP = 28; - public const ushort WR_DEC_LO = 29; - public const ushort WR_DEC_HI = 30; - public const ushort WR_HI = 31; - public const ushort SET_ADDR = 32; - public const ushort NEG = 33; - public const ushort TST = 34; - public const ushort CLR = 35; - public const ushort ADD8BR = 41; - public const ushort JPE = 44; - public const ushort IDX_DCDE = 45; - public const ushort IDX_OP_BLD = 46; - public const ushort EA_8 = 47; - public const ushort EA_16 = 48; - public const ushort WR_DEC_LO_OP = 51; - public const ushort WR_DEC_HI_OP = 52; - public const ushort WR_HI_INC = 53; - public const ushort SET_F_I = 55; - public const ushort SET_I = 56; - public const ushort SET_E = 57; - public const ushort ANDCC = 58; - public const ushort CMP8 = 59; - public const ushort CMP16 = 62; - public const ushort LD_8 = 64; - public const ushort LD_16 = 65; - public const ushort CLR_E = 67; - public const ushort TAP = 68; - public const ushort TPA = 69; - public const ushort INX = 70; - public const ushort DEX = 71; - public const ushort CLV = 72; - public const ushort SEV = 73; - public const ushort CLC = 74; - public const ushort SEC = 75; - public const ushort CLI = 76; - public const ushort SEI = 77; - public const ushort SBA = 78; - public const ushort CBA = 79; - public const ushort TAB = 80; - public const ushort TBA = 81; - public const ushort ABA = 82; - public const ushort TSX = 83; - public const ushort INS = 84; - public const ushort DES = 85; - public const ushort TXS = 86; + public const ushort RD_INC = 26; + public const ushort RD_INC_OP = 27; + public const ushort WR_DEC_LO = 28; + public const ushort WR_DEC_HI = 29; + public const ushort WR_HI = 31; + public const ushort NEG = 32; + public const ushort TST = 33; + public const ushort CLR = 34; + public const ushort ADD8BR = 35; + public const ushort JPE = 36; + public const ushort IDX_DCDE = 37; + public const ushort IDX_OP_BLD = 38; + public const ushort EA_8 = 39; + public const ushort EA_16 = 40; + public const ushort WR_HI_INC = 41; + public const ushort SET_I = 42; + public const ushort CMP8 = 43; + public const ushort CMP16 = 44; + public const ushort LD_8 = 45; + public const ushort LD_16 = 46; + public const ushort TAP = 47; + public const ushort TPA = 48; + public const ushort INX = 49; + public const ushort DEX = 50; + public const ushort CLV = 51; + public const ushort SEV = 52; + public const ushort CLC = 53; + public const ushort SEC = 54; + public const ushort CLI = 55; + public const ushort SEI = 56; + public const ushort SBA = 57; + public const ushort CBA = 58; + public const ushort TAB = 59; + public const ushort TBA = 60; + public const ushort ABA = 61; + public const ushort TSX = 62; + public const ushort INS = 63; + public const ushort DES = 64; + public const ushort TXS = 65; public MC6800() { @@ -242,9 +235,6 @@ namespace BizHawk.Emulation.Common.Components.MC6800 case LD_16: LD_16_Func(cur_instr[instr_pntr++], cur_instr[instr_pntr++], cur_instr[instr_pntr++]); break; - case ANDCC: - Regs[CC] &= Regs[instr_pntr++]; - break; } break; case WR: @@ -256,14 +246,6 @@ namespace BizHawk.Emulation.Common.Components.MC6800 case WR_DEC_HI: Write_Dec_HI_Func(cur_instr[instr_pntr++], cur_instr[instr_pntr++]); break; - case WR_DEC_LO_OP: - Write_Dec_Lo_Func(cur_instr[instr_pntr++], cur_instr[instr_pntr++]); - instr_pntr++; - break; - case WR_DEC_HI_OP: - Write_Dec_HI_Func(cur_instr[instr_pntr++], cur_instr[instr_pntr++]); - instr_pntr++; - break; case WR_HI: Write_Hi_Func(cur_instr[instr_pntr++], cur_instr[instr_pntr++]); break; @@ -305,21 +287,9 @@ namespace BizHawk.Emulation.Common.Components.MC6800 case CLR: CLR_Func(cur_instr[instr_pntr++]); break; - case SET_F_I: - FlagI = true; - break; case SET_I: FlagI = true; break; - case SET_E: - FlagE = true; - break; - case CLR_E: - FlagE = false; - break; - case ANDCC: - Regs[CC] &= Regs[instr_pntr++]; - break; case ADD8BR: ADD8BR_Func(cur_instr[instr_pntr++], cur_instr[instr_pntr++]); break; @@ -499,12 +469,6 @@ namespace BizHawk.Emulation.Common.Components.MC6800 } instr_pntr = 0; break; - case SYNC: - IN_SYNC = true; - IRQS = 1; - instr_pntr = irq_pntr = 0; - PopulateCURINSTR(SYNC); - break; } if (++irq_pntr == IRQS) @@ -516,7 +480,6 @@ namespace BizHawk.Emulation.Common.Components.MC6800 if (TraceCallback != null) { TraceCallback(new TraceInfo { Disassembly = "====NMI====", RegisterInfo = "" }); } - IN_SYNC = false; NMI_(); NMICallback(); instr_pntr = irq_pntr = 0; @@ -530,22 +493,10 @@ namespace BizHawk.Emulation.Common.Components.MC6800 if (TraceCallback != null) { TraceCallback(new TraceInfo { Disassembly = "====IRQ====", RegisterInfo = "" }); } - IN_SYNC = false; IRQ_(); IRQCallback(); instr_pntr = irq_pntr = 0; } - else if (IN_SYNC) - { - IRQPending = false; - - if (TraceCallback != null) { TraceCallback(new TraceInfo { Disassembly = "====SYNC====", RegisterInfo = "" }); } - - IN_SYNC = false; - IRQS = 1; - instr_pntr = irq_pntr = 0; - PopulateCURINSTR(IDLE); - } } // otherwise start the next instruction else @@ -631,7 +582,6 @@ namespace BizHawk.Emulation.Common.Components.MC6800 { ser.BeginSection("MC6809"); - ser.Sync(nameof(IN_SYNC), ref IN_SYNC); ser.Sync(nameof(NMIPending), ref NMIPending); ser.Sync(nameof(IRQPending), ref IRQPending); diff --git a/BizHawk.Emulation.Cores/CPUs/MC6800/OP_Tables.cs b/BizHawk.Emulation.Cores/CPUs/MC6800/OP_Tables.cs index 33748a820f..3d70879871 100644 --- a/BizHawk.Emulation.Cores/CPUs/MC6800/OP_Tables.cs +++ b/BizHawk.Emulation.Cores/CPUs/MC6800/OP_Tables.cs @@ -159,18 +159,17 @@ namespace BizHawk.Emulation.Common.Components.MC6800 { PopulateCURINSTR(RD_INC, ALU, PC, RD_INC_OP, ALU2, PC, SET_ADDR, ADDR, ALU, ALU2, - IDLE, RD_INC, ALU, ADDR, RD_INC_OP, ALU2, ADDR, LD_16, dest, ALU, ALU2); - IRQS = 5; + IRQS = 4; } private void EXT_OP_ST_16(ushort src) { PopulateCURINSTR(RD_INC, ALU, PC, - RD_INC_OP, ALU2, PC, SET_ADDR, ADDR, ALU, ALU2, - IDLE, + RD_INC, ALU2, PC, + SET_ADDR, ADDR, ALU, ALU2, WR_HI_INC, ADDR, src, WR_DEC_LO, ADDR, src); @@ -201,14 +200,15 @@ namespace BizHawk.Emulation.Common.Components.MC6800 private void JSR_EXT() { PopulateCURINSTR(RD_INC, ALU, PC, - RD_INC_OP, ALU2, PC, SET_ADDR, ADDR, ALU, ALU2, + RD_INC, ALU2, PC, + SET_ADDR, ADDR, ALU, ALU2, TR, ALU, PC, - DEC16, SP, + IDLE, TR, PC, ADDR, WR_DEC_LO, SP, ALU, - WR_HI, SP, ALU); + WR_DEC_HI, SP, ALU); - IRQS = 7; + IRQS = 8; } private void BR_(bool cond) @@ -234,18 +234,19 @@ namespace BizHawk.Emulation.Common.Components.MC6800 PopulateCURINSTR(RD_INC, ALU, PC, TR, ADDR, PC, ADD8BR, PC, ALU, - DEC16, SP, + IDLE, + IDLE, WR_DEC_LO, SP, ADDR, - WR_HI, SP, ADDR); + WR_DEC_HI, SP, ADDR); - IRQS = 6; + IRQS = 7; } private void RTS() { - PopulateCURINSTR(IDLE, + PopulateCURINSTR(INC16, SP, RD_INC, ALU, SP, - RD_INC, ALU2, SP, + RD, ALU2, SP, SET_ADDR, PC, ALU, ALU2); IRQS = 4; @@ -253,16 +254,17 @@ namespace BizHawk.Emulation.Common.Components.MC6800 private void RTI() { - PopulateCURINSTR(IDLE, + PopulateCURINSTR(INC16, SP, RD_INC_OP, CC, SP, JPE, - RD_INC, A, SP, RD_INC, B, SP, + RD_INC, A, SP, RD_INC, ALU, SP, RD_INC_OP, ALU2, SP, SET_ADDR, X, ALU, ALU2, RD_INC, ALU, SP, - RD_INC_OP, ALU2, SP, SET_ADDR, PC, ALU, ALU2); + RD, ALU2, SP, + SET_ADDR, PC, ALU, ALU2); - IRQS = 14; + IRQS = 9; } private void PSH_(ushort src) @@ -286,38 +288,33 @@ namespace BizHawk.Emulation.Common.Components.MC6800 private void SWI1() { Regs[ADDR] = 0xFFFA; - PopulateCURINSTR(SET_E, - DEC16, SP, + PopulateCURINSTR(IDLE, WR_DEC_LO, SP, PC, WR_DEC_HI, SP, PC, WR_DEC_LO, SP, X, WR_DEC_HI, SP, X, - WR_DEC_LO, SP, B, WR_DEC_LO, SP, A, - WR, SP, CC, - SET_F_I, + WR_DEC_LO, SP, B, + WR_DEC_LO, SP, CC, + SET_I, RD_INC, ALU, ADDR, - RD_INC, ALU2, ADDR, - SET_ADDR, PC, ALU, ALU2); + RD_INC_OP, ALU2, ADDR, SET_ADDR, PC, ALU, ALU2); - IRQS = 18; + IRQS = 11; } private void WAI_() { - PopulateCURINSTR(RD_INC_OP, ALU, PC, ANDCC, ALU, - SET_E, - DEC16, SP, - WR_DEC_LO, SP, PC, + PopulateCURINSTR(WR_DEC_LO, SP, PC, WR_DEC_HI, SP, PC, WR_DEC_LO, SP, X, WR_DEC_HI, SP, X, - WR_DEC_LO, SP, B, WR_DEC_LO, SP, A, - WR, SP, CC, + WR_DEC_LO, SP, B, + WR_DEC_LO, SP, CC, WAI); - IRQS = 16; + IRQS = 8; } } }