OpenCores
URL https://opencores.org/ocsvn/hd63701/hd63701/trunk

Subversion Repositories hd63701

[/] [hd63701/] [trunk/] [HD63701_MCODE.i] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 thasega
/***************************************************************************
2
       This file is part of "HD63701V0 Compatible Processor Core".
3
      ( DON'T ADD TO PROJECT, Because this file is include file. )
4
****************************************************************************/
5
`define MC_TRAP  {`mcINT,   `vaTRP  ,`mcrn,`mcpI,`amPC,`pcI}
6
`define MC_HALT  {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpH,`amPC,`pcN}
7
 
8
`define MC_NEXTI {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN}
9
`define MC_NEXTP {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcI}
10
 
11
`define MC_LDBRO {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amPC,`pcI}    // Bxx NN
12
`define MC_LDIXO {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amPC,`pcI}    // ($NN+X)
13
`define MC_LDIXM {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amXT,`pcN}    // ($nn+X) => rE
14
 
15
`define MC_LDEXH {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amPC,`pcI}    // ($NNnn)
16
`define MC_LDEXL {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amPC,`pcI}    // ($nnNN)
17
`define MC_LDEXM {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amE0,`pcN}    // ($nnnn) => rT
18
 
19
function `mcwidth MCODE_S0;
20
input [7:0] opc;
21
begin
22
        case (opc)
23
//-----------------------------------------------------------------------------------------
24
                8'h01: MCODE_S0 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpK,`amPC,`pcI};          // NOP
25
                8'h04: MCODE_S0 = {`mcLSR,`mcrD,`mcrn,`mcrD,`mcpK,`amPC,`pcI};          // LSRD
26
                8'h05: MCODE_S0 = {`mcASL,`mcrD,`mcrn,`mcrD,`mcpK,`amPC,`pcI};          // ASLD
27
                8'h06: MCODE_S0 = {`mcLDN,`mcrA,`mcrn,`mcrC,`mcpK,`amPC,`pcI};          // TAP
28
                8'h07: MCODE_S0 = {`mcLDN,`mcrC,`mcrn,`mcrA,`mcpK,`amPC,`pcI};          // TPA
29
                8'h08: MCODE_S0 = {`mcINC,`mcrX,`mcrn,`mcrX,`mcpK,`amPC,`pcI};          // INX
30
                8'h09: MCODE_S0 = {`mcDEC,`mcrX,`mcrn,`mcrX,`mcpK,`amPC,`pcI};          // DEX
31
                8'h0A: MCODE_S0 = {`mcCCB,  ~`bfV    ,`mcrC,`mcpK,`amPC,`pcI};          // CLV
32
                8'h0B: MCODE_S0 = {`mcSCB,   `bfV    ,`mcrC,`mcpK,`amPC,`pcI};          // SEV
33
                8'h0C: MCODE_S0 = {`mcCCB,  ~`bfC    ,`mcrC,`mcpK,`amPC,`pcI};          // CLC
34
                8'h0D: MCODE_S0 = {`mcSCB,   `bfC    ,`mcrC,`mcpK,`amPC,`pcI};          // SEC
35
                8'h0E: MCODE_S0 = {`mcCCB,  ~`bfI    ,`mcrC,`mcpK,`amPC,`pcI};          // CLI
36
                8'h0F: MCODE_S0 = {`mcSCB,   `bfI    ,`mcrC,`mcpK,`amPC,`pcI};          // SEI
37
//-----------------------------------------------------------------------------------------
38
                8'h10: MCODE_S0 = {`mcSUB,`mcrA,`mcrB,`mcrA,`mcpK,`amPC,`pcI};          // SBA
39
                8'h11: MCODE_S0 = {`mcSUB,`mcrA,`mcrB,`mcrn,`mcpK,`amPC,`pcI};          // CBA
40
                8'h12: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amS1,`pcI};          // (undoc1)
41
                8'h13: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amS1,`pcI};          // (undoc2)
42
                8'h16: MCODE_S0 = {`mcLDR,`mcrA,`mcrn,`mcrB,`mcpK,`amPC,`pcI};          // TAB
43
                8'h17: MCODE_S0 = {`mcLDR,`mcrB,`mcrn,`mcrA,`mcpK,`amPC,`pcI};          // TBA
44
                8'h18: MCODE_S0 = {`mcXTD,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcI};          // XGDX
45
                8'h19: MCODE_S0 = {`mcDAA,`mcrA,`mcrn,`mcrA,`mcp0,`amPC,`pcI};          // DAA
46
                8'h1A: MCODE_S0 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpS,`amPC,`pcI};          // SLP
47
                8'h1B: MCODE_S0 = {`mcADD,`mcrA,`mcrB,`mcrA,`mcpK,`amPC,`pcI};          // ABA
48
                8'h1F: MCODE_S0 = `MC_HALT;                                                                                                     // (DBGHLT)
49
//-----------------------------------------------------------------------------------------
50
                8'h20: MCODE_S0 = `MC_NEXTP;                                                                                                    // BRA
51
                8'h21: MCODE_S0 = `MC_NEXTP;                                                                                                    // BRN
52
                8'h22: MCODE_S0 = `MC_NEXTP;                                                                                                    // BHI
53
                8'h23: MCODE_S0 = `MC_NEXTP;                                                                                                    // BLS
54
                8'h24: MCODE_S0 = `MC_NEXTP;                                                                                                    // BCC
55
                8'h25: MCODE_S0 = `MC_NEXTP;                                                                                                    // BCS
56
                8'h26: MCODE_S0 = `MC_NEXTP;                                                                                                    // BNE
57
                8'h27: MCODE_S0 = `MC_NEXTP;                                                                                                    // BEQ
58
                8'h28: MCODE_S0 = `MC_NEXTP;                                                                                                    // BVC
59
                8'h29: MCODE_S0 = `MC_NEXTP;                                                                                                    // BVS
60
                8'h2A: MCODE_S0 = `MC_NEXTP;                                                                                                    // BPL
61
                8'h2B: MCODE_S0 = `MC_NEXTP;                                                                                                    // BMI
62
                8'h2C: MCODE_S0 = `MC_NEXTP;                                                                                                    // BGE
63
                8'h2D: MCODE_S0 = `MC_NEXTP;                                                                                                    // BLT
64
                8'h2E: MCODE_S0 = `MC_NEXTP;                                                                                                    // BGT
65
                8'h2F: MCODE_S0 = `MC_NEXTP;                                                                                                    // BLE
66
//-----------------------------------------------------------------------------------------
67
                8'h30: MCODE_S0 = {`mcINC,`mcrS,`mcrn,`mcrX,`mcpK,`amPC,`pcI};          // TSX
68
                8'h31: MCODE_S0 = {`mcINC,`mcrS,`mcrn,`mcrS,`mcpK,`amPC,`pcI};          // INS
69
                8'h32: MCODE_S0 = {`mcPUL,`mcrM,`mcrn,`mcrA,`mcpN,`amS1,`pcI};          // PULA
70
                8'h33: MCODE_S0 = {`mcPUL,`mcrM,`mcrn,`mcrB,`mcpN,`amS1,`pcI};          // PULB
71
                8'h34: MCODE_S0 = {`mcDEC,`mcrS,`mcrn,`mcrS,`mcpK,`amPC,`pcI};          // DES
72
                8'h35: MCODE_S0 = {`mcDEC,`mcrX,`mcrn,`mcrS,`mcpK,`amPC,`pcI};          // TXS
73
                8'h36: MCODE_S0 = {`mcPSH,`mcrA,`mcrn,`mcrM,`mcpN,`amSP,`pcI};          // PSHA
74
                8'h37: MCODE_S0 = {`mcPSH,`mcrB,`mcrn,`mcrM,`mcpN,`amSP,`pcI};          // PSHB
75
                8'h38: MCODE_S0 = {`mcINC,`mcrS,`mcrn,`mcrS,`mcpN,`amPC,`pcI};          // PULX
76
                8'h39: MCODE_S0 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // RTS
77
                8'h3A: MCODE_S0 = {`mcADD,`mcrX,`mcrB,`mcrX,`mcpK,`amPC,`pcI};          // ABX
78
                8'h3B: MCODE_S0 = {`mcPUL,`mcrM,`mcrn,`mcrT,`mcpN,`amS1,`pcN};          // RTI
79
                8'h3C: MCODE_S0 = {`mcDEC,`mcrS,`mcrn,`mcrS,`mcpN,`amPC,`pcI};          // PSHX
80
                8'h3D: MCODE_S0 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // MUL
81
                8'h3E: MCODE_S0 = {`mcINT,   `vaWAI  ,`mcrn,`mcpI,`amPC,`pcI};          // WAI
82
                8'h3F: MCODE_S0 = {`mcINT,   `vaSWI  ,`mcrn,`mcpI,`amPC,`pcI};          // SWI
83
//-----------------------------------------------------------------------------------------
84
                8'h40: MCODE_S0 = {`mcNEG,`mcrA,`mcrn,`mcrA,`mcpK,`amPC,`pcI};          // NEGA
85
                8'h43: MCODE_S0 = {`mcNOT,`mcrA,`mcrn,`mcrA,`mcpK,`amPC,`pcI};          // COMA
86
                8'h44: MCODE_S0 = {`mcLSR,`mcrA,`mcrn,`mcrA,`mcpK,`amPC,`pcI};          // LSRA
87
                8'h46: MCODE_S0 = {`mcROR,`mcrA,`mcrn,`mcrA,`mcpK,`amPC,`pcI};          // RORA
88
                8'h47: MCODE_S0 = {`mcASR,`mcrA,`mcrn,`mcrA,`mcpK,`amPC,`pcI};          // ASRA
89
                8'h48: MCODE_S0 = {`mcASL,`mcrA,`mcrn,`mcrA,`mcpK,`amPC,`pcI};          // ASLA
90
                8'h49: MCODE_S0 = {`mcROL,`mcrA,`mcrn,`mcrA,`mcpK,`amPC,`pcI};          // ROLA
91
                8'h4A: MCODE_S0 = {`mcDEC,`mcrA,`mcrn,`mcrA,`mcpK,`amPC,`pcI};          // DECA
92
                8'h4C: MCODE_S0 = {`mcINC,`mcrA,`mcrn,`mcrA,`mcpK,`amPC,`pcI};          // INCA
93
                8'h4D: MCODE_S0 = {`mcTST,`mcrA,`mcrn,`mcrn,`mcpK,`amPC,`pcI};          // TSTA
94
                8'h4F: MCODE_S0 = {`mcLDR,`mcrn,`mcrn,`mcrA,`mcpK,`amPC,`pcI};          // CLRA
95
//-----------------------------------------------------------------------------------------
96
                8'h50: MCODE_S0 = {`mcNEG,`mcrB,`mcrn,`mcrB,`mcpK,`amPC,`pcI};          // NEGB
97
                8'h53: MCODE_S0 = {`mcNOT,`mcrB,`mcrn,`mcrB,`mcpK,`amPC,`pcI};          // COMB
98
                8'h54: MCODE_S0 = {`mcLSR,`mcrB,`mcrn,`mcrB,`mcpK,`amPC,`pcI};          // LSRB
99
                8'h56: MCODE_S0 = {`mcROR,`mcrB,`mcrn,`mcrB,`mcpK,`amPC,`pcI};          // RORB
100
                8'h57: MCODE_S0 = {`mcASR,`mcrB,`mcrn,`mcrB,`mcpK,`amPC,`pcI};          // ASRB
101
                8'h58: MCODE_S0 = {`mcASL,`mcrB,`mcrn,`mcrB,`mcpK,`amPC,`pcI};          // ASLB
102
                8'h59: MCODE_S0 = {`mcROL,`mcrB,`mcrn,`mcrB,`mcpK,`amPC,`pcI};          // ROLB
103
                8'h5A: MCODE_S0 = {`mcDEC,`mcrB,`mcrn,`mcrB,`mcpK,`amPC,`pcI};          // DECB
104
                8'h5C: MCODE_S0 = {`mcINC,`mcrB,`mcrn,`mcrB,`mcpK,`amPC,`pcI};          // INCB
105
                8'h5D: MCODE_S0 = {`mcTST,`mcrB,`mcrn,`mcrn,`mcpK,`amPC,`pcI};          // TSTB
106
                8'h5F: MCODE_S0 = {`mcLDR,`mcrn,`mcrn,`mcrB,`mcpK,`amPC,`pcI};          // CLRB
107
//-----------------------------------------------------------------------------------------
108
                8'h60: MCODE_S0 = `MC_NEXTP;                                                                                                    // NEG($nn+X)
109
                8'h61: MCODE_S0 = `MC_NEXTP;                                                                                                    // AIM#,($nn+X)
110
                8'h62: MCODE_S0 = `MC_NEXTP;                                                                                                    // OIM#,($nn+X)
111
                8'h63: MCODE_S0 = `MC_NEXTP;                                                                                                    // COM($nn+X)
112
                8'h64: MCODE_S0 = `MC_NEXTP;                                                                                                    // LSR($nn+X)
113
                8'h65: MCODE_S0 = `MC_NEXTP;                                                                                                    // EIM#,($nn+X)
114
                8'h66: MCODE_S0 = `MC_NEXTP;                                                                                                    // ROR($nn+X)
115
                8'h67: MCODE_S0 = `MC_NEXTP;                                                                                                    // ASR($nn+X)
116
                8'h68: MCODE_S0 = `MC_NEXTP;                                                                                                    // ASL($nn+X)
117
                8'h69: MCODE_S0 = `MC_NEXTP;                                                                                                    // ROL($nn+X)
118
                8'h6A: MCODE_S0 = `MC_NEXTP;                                                                                                    // DEC($nn+X)
119
                8'h6B: MCODE_S0 = `MC_NEXTP;                                                                                                    // TIM#,($nn+X)
120
                8'h6C: MCODE_S0 = `MC_NEXTP;                                                                                                    // INC($nn+X)
121
                8'h6D: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amP1,`pcI};          // TST($nn+X)
122
                8'h6E: MCODE_S0 = `MC_NEXTP;                                                                                                    // JMP.$nn+X
123
                8'h6F: MCODE_S0 = `MC_NEXTP;                                                                                                    // CLR($nn+X)
124
//-----------------------------------------------------------------------------------------
125
                8'h70: MCODE_S0 = `MC_NEXTP;                                                                                                    // NEG($nnnn)
126
                8'h71: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amP1,`pcI};          // AIM#,($nn)
127
                8'h72: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amP1,`pcI};          // OIM#,($nn)
128
                8'h73: MCODE_S0 = `MC_NEXTP;                                                                                                    // COM($nnnn)
129
                8'h74: MCODE_S0 = `MC_NEXTP;                                                                                                    // LSR($nnnn)
130
                8'h75: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amP1,`pcI};          // EIM#,($nnnn)
131
                8'h76: MCODE_S0 = `MC_NEXTP;                                                                                                    // ROR($nnnn)
132
                8'h77: MCODE_S0 = `MC_NEXTP;                                                                                                    // ASR($nnnn)
133
                8'h78: MCODE_S0 = `MC_NEXTP;                                                                                                    // ASL($nnnn)
134
                8'h79: MCODE_S0 = `MC_NEXTP;                                                                                                    // ROL($nnnn)
135
                8'h7A: MCODE_S0 = `MC_NEXTP;                                                                                                    // DEC($nnnn)
136
                8'h7B: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amP1,`pcI};          // TIM#,($nn)
137
                8'h7C: MCODE_S0 = `MC_NEXTP;                                                                                                    // INC($nnnn)
138
                8'h7D: MCODE_S0 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // TST($nnnn)
139
                8'h7E: MCODE_S0 = `MC_NEXTP;                                                                                                    // JMP.$nnnn
140
                8'h7F: MCODE_S0 = `MC_NEXTP;                                                                                                    // CLR($nnnn)
141
//-----------------------------------------------------------------------------------------
142
                8'h80: MCODE_S0 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcI};          // SUBA#
143
                8'h81: MCODE_S0 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcI};          // CMPA#
144
                8'h82: MCODE_S0 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcI};          // SBCA#
145
                8'h83: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrU,`mcpN,`amP1,`pcI};          // SUBD#
146
                8'h84: MCODE_S0 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcI};          // ANDA#
147
                8'h85: MCODE_S0 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcI};          // BITA#
148
                8'h86: MCODE_S0 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcI};          // LDA#
149
                8'h88: MCODE_S0 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcI};          // EORA#
150
                8'h89: MCODE_S0 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcI};          // ADCA#
151
                8'h8A: MCODE_S0 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcI};          // ORA#
152
                8'h8B: MCODE_S0 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcI};          // ADDA#
153
                8'h8C: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrU,`mcpN,`amP1,`pcI};          // CMPX#
154
                8'h8D: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amP1,`pcI};          // BSR
155
                8'h8E: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrU,`mcpN,`amP1,`pcI};          // LDS#
156
//-----------------------------------------------------------------------------------------
157
                8'h90: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // SUBA($nn)
158
                8'h91: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // CMPA($nn)
159
                8'h92: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // SBCA($nn)
160
                8'h93: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // SUBD($nn)
161
                8'h94: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // ANDA($nn)
162
                8'h95: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // BITA($nn)
163
                8'h96: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // LDA($nn)
164
                8'h97: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // STA($nn)
165
                8'h98: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // EORA($nn)
166
                8'h99: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // ADCA($nn)
167
                8'h9A: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // ORA($nn)
168
                8'h9B: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // ADDA($nn)
169
                8'h9C: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // CMPX($nn)
170
                8'h9D: MCODE_S0 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcI};          // JSR($nn)
171
                8'h9E: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // LDS($nn)
172
                8'h9F: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // STS($nn)
173
//-----------------------------------------------------------------------------------------
174
                8'hA0: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amP1,`pcI};          // SUBA($nn+X)
175
                8'hA1: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amP1,`pcI};          // CMPA($nn+X)
176
                8'hA2: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amP1,`pcI};          // SBCA($nn+X)
177
                8'hA3: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amP1,`pcI};          // SUBD($nn+X)
178
                8'hA4: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amP1,`pcI};          // ANDA($nn+X)
179
                8'hA5: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amP1,`pcI};          // BITA($nn+X)
180
                8'hA6: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amP1,`pcI};          // LDA($nn+X)
181
                8'hA7: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amP1,`pcI};          // STA($nn+X)
182
                8'hA8: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amP1,`pcI};          // EORA($nn+X)
183
                8'hA9: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amP1,`pcI};          // ADCA($nn+X)
184
                8'hAA: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amP1,`pcI};          // ORA($nn+X)
185
                8'hAB: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amP1,`pcI};          // ADDA($nn+X)
186
                8'hAC: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amP1,`pcI};          // CMPX($nn+X)
187
                8'hAD: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amP1,`pcI};          // JSR.$nn+X
188
                8'hAE: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amP1,`pcI};          // LDS($nn+X)
189
                8'hAF: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amP1,`pcI};          // STS($nn+X)
190
//-----------------------------------------------------------------------------------------
191
                8'hB0: MCODE_S0 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // SUBA($nnnn)
192
                8'hB1: MCODE_S0 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // CMPA($nnnn)
193
                8'hB2: MCODE_S0 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // SBCA($nnnn)
194
                8'hB3: MCODE_S0 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // SUBD($nnnn)
195
                8'hB4: MCODE_S0 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // ANDA($nnnn)
196
                8'hB5: MCODE_S0 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // BITA($nnnn)
197
                8'hB6: MCODE_S0 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // LDA($nnnn)
198
                8'hB7: MCODE_S0 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // STA($nnnn)
199
                8'hB8: MCODE_S0 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // EORA($nnnn)
200
                8'hB9: MCODE_S0 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // ADCA($nnnn)
201
                8'hBA: MCODE_S0 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // ORA($nnnn)
202
                8'hBB: MCODE_S0 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // ADDA($nnnn)
203
                8'hBC: MCODE_S0 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // CMPX($nnnn)
204
                8'hBD: MCODE_S0 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcI};          // JSR.$nnnn
205
                8'hBE: MCODE_S0 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // LDS($nnnn)
206
                8'hBF: MCODE_S0 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // STS($nnnn)
207
//-----------------------------------------------------------------------------------------
208
                8'hC0: MCODE_S0 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcI};          // SUBB#
209
                8'hC1: MCODE_S0 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcI};          // CMPB#
210
                8'hC2: MCODE_S0 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcI};          // SBCB#
211
                8'hC3: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrU,`mcpN,`amP1,`pcI};          // ADDD#
212
                8'hC4: MCODE_S0 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcI};          // ANDB#
213
                8'hC5: MCODE_S0 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcI};          // BITB#
214
                8'hC6: MCODE_S0 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcI};          // LDB#
215
                8'hC8: MCODE_S0 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcI};          // EORB#
216
                8'hC9: MCODE_S0 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcI};          // ADCB#
217
                8'hCA: MCODE_S0 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcI};          // ORB#
218
                8'hCB: MCODE_S0 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcI};          // ADDB#
219
                8'hCC: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrU,`mcpN,`amP1,`pcI};          // LDD#
220
                8'hCE: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrU,`mcpN,`amP1,`pcI};          // LDX#
221
//-----------------------------------------------------------------------------------------
222
                8'hD0: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // SUBB($nn)
223
                8'hD1: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // CMPB($nn)
224
                8'hD2: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // SBCB($nn)
225
                8'hD3: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // ADDD($nn)
226
                8'hD4: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // ANDB($nn)
227
                8'hD5: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // BITB($nn)
228
                8'hD6: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // LDB($nn)
229
                8'hD7: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // STB($nn)
230
                8'hD8: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // EORB($nn)
231
                8'hD9: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // ADCB($nn)
232
                8'hDA: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // ORB($nn)
233
                8'hDB: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // ADDB($nn)
234
                8'hDC: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // LDD($nn)
235
                8'hDD: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // STD($nn)
236
                8'hDE: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // LDX($nn)
237
                8'hDF: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // STX($nn)
238
//-----------------------------------------------------------------------------------------
239
                8'hE0: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amP1,`pcI};          // SUBB($nn+X)
240
                8'hE1: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amP1,`pcI};          // CMPB($nn+X)
241
                8'hE2: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amP1,`pcI};          // SBCB($nn+X)
242
                8'hE3: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amP1,`pcI};          // ADDD($nn+X)
243
                8'hE4: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amP1,`pcI};          // ANDB($nn+X)
244
                8'hE5: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amP1,`pcI};          // BITB($nn+X)
245
                8'hE6: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amP1,`pcI};          // LDB($nn+X)
246
                8'hE7: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amP1,`pcI};          // STB($nn+X)
247
                8'hE8: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amP1,`pcI};          // EORB($nn+X)
248
                8'hE9: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amP1,`pcI};          // ADCB($nn+X)
249
                8'hEA: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amP1,`pcI};          // ORB($nn+X)
250
                8'hEB: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amP1,`pcI};          // ADDB($nn+X)
251
                8'hEC: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amP1,`pcI};          // LDD($nn+X)
252
                8'hED: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amP1,`pcI};          // STD($nn+X)
253
                8'hEE: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amP1,`pcI};          // LDX($nn+X)
254
                8'hEF: MCODE_S0 = {`mcLDN,`mcrM,`mcrn,`mcrT,`mcpN,`amP1,`pcI};          // STX($nn+X)
255
//-----------------------------------------------------------------------------------------
256
                8'hF0: MCODE_S0 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // SUBB($nnnn)
257
                8'hF1: MCODE_S0 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // CMPB($nnnn)
258
                8'hF2: MCODE_S0 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // SBCB($nnnn)
259
                8'hF3: MCODE_S0 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // ADDD($nnnn)
260
                8'hF4: MCODE_S0 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // ANDB($nnnn)
261
                8'hF5: MCODE_S0 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // BITB($nnnn)
262
                8'hF6: MCODE_S0 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // LDB($nnnn)
263
                8'hF7: MCODE_S0 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // STB($nnnn)
264
                8'hF8: MCODE_S0 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // EORB($nnnn)
265
                8'hF9: MCODE_S0 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // ADCB($nnnn)
266
                8'hFA: MCODE_S0 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // ORB($nnnn)
267
                8'hFB: MCODE_S0 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // ADDB($nnnn)
268
                8'hFC: MCODE_S0 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // LDD($nnnn)
269
                8'hFD: MCODE_S0 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // STD($nnnn)
270
                8'hFE: MCODE_S0 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // LDX($nnnn)
271
                8'hFF: MCODE_S0 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // STX($nnnn)
272
//-----------------------------------------------------------------------------------------
273
         default: MCODE_S0 = `MC_TRAP;
274
        endcase
275
end
276
endfunction
277
 
278
 
279
function `mcwidth MCODE_S1;
280
input [7:0] opc;
281
begin
282
        case (opc)
283
//-----------------------------------------------------------------------------------------
284
                8'h12: MCODE_S1 = {`mcADD,`mcrX,`mcrT,`mcrX,`mcp0,`amPC,`pcN};          // (undoc1)
285
                8'h13: MCODE_S1 = {`mcADD,`mcrX,`mcrT,`mcrX,`mcp0,`amPC,`pcN};          // (undoc2)
286
                8'h18: MCODE_S1 = {`mcLDN,`mcrT,`mcrn,`mcrD,`mcp0,`amPC,`pcN};          // XGDX
287
//-----------------------------------------------------------------------------------------
288
                8'h20: MCODE_S1 = `MC_LDBRO;                                                                                                    // BRA
289
                8'h21: MCODE_S1 = `MC_LDBRO;                                                                                                    // BRN
290
                8'h22: MCODE_S1 = `MC_LDBRO;                                                                                                    // BHI
291
                8'h23: MCODE_S1 = `MC_LDBRO;                                                                                                    // BLS
292
                8'h24: MCODE_S1 = `MC_LDBRO;                                                                                                    // BCC
293
                8'h25: MCODE_S1 = `MC_LDBRO;                                                                                                    // BCS
294
                8'h26: MCODE_S1 = `MC_LDBRO;                                                                                                    // BNE
295
                8'h27: MCODE_S1 = `MC_LDBRO;                                                                                                    // BEQ
296
                8'h28: MCODE_S1 = `MC_LDBRO;                                                                                                    // BVC
297
                8'h29: MCODE_S1 = `MC_LDBRO;                                                                                                    // BVS
298
                8'h2A: MCODE_S1 = `MC_LDBRO;                                                                                                    // BPL
299
                8'h2B: MCODE_S1 = `MC_LDBRO;                                                                                                    // BMI
300
                8'h2C: MCODE_S1 = `MC_LDBRO;                                                                                                    // BGE
301
                8'h2D: MCODE_S1 = `MC_LDBRO;                                                                                                    // BLT
302
                8'h2E: MCODE_S1 = `MC_LDBRO;                                                                                                    // BGT
303
                8'h2F: MCODE_S1 = `MC_LDBRO;                                                                                                    // BLE
304
//-----------------------------------------------------------------------------------------
305
                8'h32: MCODE_S1 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // PULA
306
                8'h33: MCODE_S1 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // PULB
307
                8'h36: MCODE_S1 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // PSHA
308
                8'h37: MCODE_S1 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // PSHB
309
                8'h38: MCODE_S1 = {`mcLDN,`mcrN,`mcrn,`mcrX,`mcpN,`amSP,`pcN};          // PULX
310
                8'h39: MCODE_S1 = {`mcINC,`mcrS,`mcrn,`mcrS,`mcpN,`amPC,`pcN};          // RTS
311
                8'h3B: MCODE_S1 = {`mcPUL,`mcrM,`mcrn,`mcrB,`mcpN,`amS1,`pcN};          // RTI
312
                8'h3C: MCODE_S1 = {`mcLDN,`mcrX,`mcrn,`mcrM,`mcpN,`amS1,`pcN};          // PSHX
313
                8'h3D: MCODE_S1 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // MUL
314
//-----------------------------------------------------------------------------------------
315
                8'h60: MCODE_S1 = `MC_LDIXO;                                                                                                    // NEG($nn+X)
316
                8'h61: MCODE_S1 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amPC,`pcI};          // AIM#,($nn+X)
317
                8'h62: MCODE_S1 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amPC,`pcI};          // OIM#,($nn+X)
318
                8'h63: MCODE_S1 = `MC_LDIXO;                                                                                                    // COM($nn+X)
319
                8'h64: MCODE_S1 = `MC_LDIXO;                                                                                                    // LSR($nn+X)
320
                8'h65: MCODE_S1 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amPC,`pcI};          // EIM#,($nn+X)
321
                8'h66: MCODE_S1 = `MC_LDIXO;                                                                                                    // ROR($nn+X)
322
                8'h67: MCODE_S1 = `MC_LDIXO;                                                                                                    // ASR($nn+X)
323
                8'h68: MCODE_S1 = `MC_LDIXO;                                                                                                    // ASL($nn+X)
324
                8'h69: MCODE_S1 = `MC_LDIXO;                                                                                                    // ROL($nn+X)
325
                8'h6A: MCODE_S1 = `MC_LDIXO;                                                                                                    // DEC($nn+X)
326
                8'h6B: MCODE_S1 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amPC,`pcI};          // TIM#,($nn+X)
327
                8'h6C: MCODE_S1 = `MC_LDIXO;                                                                                                    // INC($nn+X)
328
                8'h6D: MCODE_S1 = {`mcTST,`mcrM,`mcrn,`mcrn,`mcpN,`amXT,`pcI};          // TST($nn+X)
329
                8'h6E: MCODE_S1 = `MC_LDIXO;                                                                                                    // JMP.$nn+X
330
                8'h6F: MCODE_S1 = `MC_LDIXO;                                                                                                    // CLR($nn+X)
331
//-----------------------------------------------------------------------------------------
332
                8'h70: MCODE_S1 = `MC_LDEXH;                                                                                                    // NEG($nnnn)
333
                8'h71: MCODE_S1 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // AIM#,($nn)
334
                8'h72: MCODE_S1 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // OIM#,($nn)
335
                8'h73: MCODE_S1 = `MC_LDEXH;                                                                                                    // COM($nnnn)
336
                8'h74: MCODE_S1 = `MC_LDEXH;                                                                                                    // LSR($nnnn)
337
                8'h75: MCODE_S1 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // EIM#,($nnnn)
338
                8'h76: MCODE_S1 = `MC_LDEXH;                                                                                                    // ROR($nnnn)
339
                8'h77: MCODE_S1 = `MC_LDEXH;                                                                                                    // ASR($nnnn)
340
                8'h78: MCODE_S1 = `MC_LDEXH;                                                                                                    // ASL($nnnn)
341
                8'h79: MCODE_S1 = `MC_LDEXH;                                                                                                    // ROL($nnnn)
342
                8'h7A: MCODE_S1 = `MC_LDEXH;                                                                                                    // DEC($nnnn)
343
                8'h7B: MCODE_S1 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amP1,`pcI};          // TIM#,($nn)
344
                8'h7C: MCODE_S1 = `MC_LDEXH;                                                                                                    // INC($nnnn)
345
                8'h7D: MCODE_S1 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amP1,`pcI};          // TST($nnnn)
346
                8'h7E: MCODE_S1 = `MC_LDEXH;                                                                                                    // JMP.$nnnn
347
                8'h7F: MCODE_S1 = `MC_LDEXH;                                                                                                    // CLR($nnnn)
348
//-----------------------------------------------------------------------------------------
349
                8'h80: MCODE_S1 = {`mcSUB,`mcrA,`mcrM,`mcrA,`mcp0,`amPC,`pcI};          // SUBA#
350
                8'h81: MCODE_S1 = {`mcSUB,`mcrA,`mcrM,`mcrn,`mcp0,`amPC,`pcI};          // CMPA#
351
                8'h82: MCODE_S1 = {`mcSBC,`mcrA,`mcrM,`mcrA,`mcp0,`amPC,`pcI};          // SBCA#
352
                8'h83: MCODE_S1 = {`mcLDN,`mcrM,`mcrn,`mcrV,`mcpN,`amP1,`pcI};          // SUBD#
353
                8'h84: MCODE_S1 = {`mcAND,`mcrA,`mcrM,`mcrA,`mcp0,`amPC,`pcI};          // ANDA#
354
                8'h85: MCODE_S1 = {`mcAND,`mcrA,`mcrM,`mcrn,`mcp0,`amPC,`pcI};          // BITA#
355
                8'h86: MCODE_S1 = {`mcLDR,`mcrM,`mcrn,`mcrA,`mcp0,`amPC,`pcI};          // LDA#
356
                8'h88: MCODE_S1 = {`mcEOR,`mcrA,`mcrM,`mcrA,`mcp0,`amPC,`pcI};          // EORA#
357
                8'h89: MCODE_S1 = {`mcADC,`mcrA,`mcrM,`mcrA,`mcp0,`amPC,`pcI};          // ADCA#
358
                8'h8A: MCODE_S1 = {`mcLOR,`mcrA,`mcrM,`mcrA,`mcp0,`amPC,`pcI};          // ORA#
359
                8'h8B: MCODE_S1 = {`mcADD,`mcrA,`mcrM,`mcrA,`mcp0,`amPC,`pcI};          // ADDA#
360
                8'h8C: MCODE_S1 = {`mcLDN,`mcrM,`mcrn,`mcrV,`mcpN,`amP1,`pcI};          // CMPX#
361
                8'h8D: MCODE_S1 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcI};          // BSR
362
                8'h8E: MCODE_S1 = {`mcLDN,`mcrM,`mcrn,`mcrV,`mcpN,`amP1,`pcI};          // LDS#
363
//-----------------------------------------------------------------------------------------
364
                8'h90: MCODE_S1 = {`mcSUB,`mcrA,`mcrM,`mcrA,`mcpN,`amE0,`pcI};          // SUBA($nn)
365
                8'h91: MCODE_S1 = {`mcSUB,`mcrA,`mcrM,`mcrn,`mcpN,`amE0,`pcI};          // CMPA($nn)
366
                8'h92: MCODE_S1 = {`mcSBC,`mcrA,`mcrM,`mcrA,`mcpN,`amE0,`pcI};          // SBCA($nn)
367
                8'h93: MCODE_S1 = {`mcLDN,`mcrM,`mcrn,`mcrU,`mcpN,`amE0,`pcI};          // SUBD($nn)
368
                8'h94: MCODE_S1 = {`mcAND,`mcrA,`mcrM,`mcrA,`mcpN,`amE0,`pcI};          // ANDA($nn)
369
                8'h95: MCODE_S1 = {`mcAND,`mcrA,`mcrM,`mcrn,`mcpN,`amE0,`pcI};          // BITA($nn)
370
                8'h96: MCODE_S1 = {`mcLDR,`mcrM,`mcrn,`mcrA,`mcpN,`amE0,`pcI};          // LDA($nn)
371
                8'h97: MCODE_S1 = {`mcLDR,`mcrA,`mcrn,`mcrM,`mcpN,`amE0,`pcI};          // STA($nn)
372
                8'h98: MCODE_S1 = {`mcEOR,`mcrA,`mcrM,`mcrA,`mcpN,`amE0,`pcI};          // EORA($nn)
373
                8'h99: MCODE_S1 = {`mcADC,`mcrA,`mcrM,`mcrA,`mcpN,`amE0,`pcI};          // ADCA($nn)
374
                8'h9A: MCODE_S1 = {`mcLOR,`mcrA,`mcrM,`mcrA,`mcpN,`amE0,`pcI};          // ORA($nn)
375
                8'h9B: MCODE_S1 = {`mcADD,`mcrA,`mcrM,`mcrA,`mcpN,`amE0,`pcI};          // ADDA($nn)
376
                8'h9C: MCODE_S1 = {`mcLDN,`mcrN,`mcrn,`mcrT,`mcpN,`amE0,`pcI};          // CMPX($nn)
377
                8'h9D: MCODE_S1 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amPC,`pcI};          // JSR($nn)
378
                8'h9E: MCODE_S1 = {`mcLDN,`mcrM,`mcrn,`mcrU,`mcpN,`amE0,`pcI};          // LDS($nn)
379
                8'h9F: MCODE_S1 = {`mcLDN,`mcrS,`mcrn,`mcrN,`mcpN,`amE0,`pcI};          // STS($nn)
380
//-----------------------------------------------------------------------------------------
381
                8'hA0: MCODE_S1 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amXT,`pcI};          // SUBA($nn+X)
382
                8'hA1: MCODE_S1 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amXT,`pcI};          // CMPA($nn+X)
383
                8'hA2: MCODE_S1 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amXT,`pcI};          // SBCA($nn+X)
384
                8'hA3: MCODE_S1 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amXT,`pcI};          // SUBD($nn+X)
385
                8'hA4: MCODE_S1 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amXT,`pcI};          // ANDA($nn+X)
386
                8'hA5: MCODE_S1 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amXT,`pcI};          // BITA($nn+X)
387
                8'hA6: MCODE_S1 = {`mcLDR,`mcrM,`mcrn,`mcrA,`mcpN,`amXT,`pcI};          // LDA($nn+X)
388
                8'hA7: MCODE_S1 = {`mcLDR,`mcrA,`mcrn,`mcrM,`mcpN,`amXT,`pcI};          // STA($nn+X)
389
                8'hA8: MCODE_S1 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amXT,`pcI};          // EORA($nn+X)
390
                8'hA9: MCODE_S1 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amXT,`pcI};          // ADCA($nn+X)
391
                8'hAA: MCODE_S1 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amXT,`pcI};          // ORA($nn+X)
392
                8'hAB: MCODE_S1 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amXT,`pcI};          // ADDA($nn+X)
393
                8'hAC: MCODE_S1 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amXT,`pcI};          // CMPX($nn+X)
394
                8'hAD: MCODE_S1 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcI};          // JSR.$nn+X
395
                8'hAE: MCODE_S1 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amXT,`pcI};          // LDS($nn+X)
396
                8'hAF: MCODE_S1 = {`mcLDN,`mcrS,`mcrn,`mcrN,`mcpN,`amXT,`pcI};          // STS($nn+X)
397
//-----------------------------------------------------------------------------------------
398
                8'hB0: MCODE_S1 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amP1,`pcI};          // SUBA($nnnn)
399
                8'hB1: MCODE_S1 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amP1,`pcI};          // CMPA($nnnn)
400
                8'hB2: MCODE_S1 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amP1,`pcI};          // SBCA($nnnn)
401
                8'hB3: MCODE_S1 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amP1,`pcI};          // SUBD($nnnn)
402
                8'hB4: MCODE_S1 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amP1,`pcI};          // ANDA($nnnn)
403
                8'hB5: MCODE_S1 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amP1,`pcI};          // BITA($nnnn)
404
                8'hB6: MCODE_S1 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amP1,`pcI};          // LDA($nnnn)
405
                8'hB7: MCODE_S1 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amP1,`pcI};          // STA($nnnn)
406
                8'hB8: MCODE_S1 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amP1,`pcI};          // EORA($nnnn)
407
                8'hB9: MCODE_S1 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amP1,`pcI};          // ADCA($nnnn)
408
                8'hBA: MCODE_S1 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amP1,`pcI};          // ORA($nnnn)
409
                8'hBB: MCODE_S1 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amP1,`pcI};          // ADDA($nnnn)
410
                8'hBC: MCODE_S1 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amP1,`pcI};          // CMPX($nnnn)
411
                8'hBD: MCODE_S1 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amPC,`pcI};          // JSR.$nnnn
412
                8'hBE: MCODE_S1 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amP1,`pcI};          // LDS($nnnn)
413
                8'hBF: MCODE_S1 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amP1,`pcI};          // STS($nnnn)
414
//-----------------------------------------------------------------------------------------
415
                8'hC0: MCODE_S1 = {`mcSUB,`mcrB,`mcrM,`mcrB,`mcp0,`amPC,`pcI};          // SUBB#
416
                8'hC1: MCODE_S1 = {`mcSUB,`mcrB,`mcrM,`mcrn,`mcp0,`amPC,`pcI};          // CMPB#
417
                8'hC2: MCODE_S1 = {`mcSBC,`mcrB,`mcrM,`mcrB,`mcp0,`amPC,`pcI};          // SBCB#
418
                8'hC3: MCODE_S1 = {`mcLDN,`mcrM,`mcrn,`mcrV,`mcpN,`amP1,`pcI};          // ADDD#
419
                8'hC4: MCODE_S1 = {`mcAND,`mcrB,`mcrM,`mcrB,`mcp0,`amPC,`pcI};          // ANDB#
420
                8'hC5: MCODE_S1 = {`mcAND,`mcrB,`mcrM,`mcrn,`mcp0,`amPC,`pcI};          // BITB#
421
                8'hC6: MCODE_S1 = {`mcLDR,`mcrM,`mcrn,`mcrB,`mcp0,`amPC,`pcI};          // LDB#
422
                8'hC8: MCODE_S1 = {`mcEOR,`mcrB,`mcrM,`mcrB,`mcp0,`amPC,`pcI};          // EORB#
423
                8'hC9: MCODE_S1 = {`mcADC,`mcrB,`mcrM,`mcrB,`mcp0,`amPC,`pcI};          // ADCB#
424
                8'hCA: MCODE_S1 = {`mcLOR,`mcrB,`mcrM,`mcrB,`mcp0,`amPC,`pcI};          // ORB#
425
                8'hCB: MCODE_S1 = {`mcADD,`mcrB,`mcrM,`mcrB,`mcp0,`amPC,`pcI};          // ADDB#
426
                8'hCC: MCODE_S1 = {`mcLDN,`mcrM,`mcrn,`mcrV,`mcpN,`amP1,`pcI};          // LDD#
427
                8'hCE: MCODE_S1 = {`mcLDN,`mcrM,`mcrn,`mcrV,`mcpN,`amP1,`pcI};          // LDX#
428
//-----------------------------------------------------------------------------------------
429
                8'hD0: MCODE_S1 = {`mcSUB,`mcrB,`mcrM,`mcrB,`mcpN,`amE0,`pcI};          // SUBB($nn)
430
                8'hD1: MCODE_S1 = {`mcSUB,`mcrB,`mcrM,`mcrn,`mcpN,`amE0,`pcI};          // CMPB($nn)
431
                8'hD2: MCODE_S1 = {`mcSBC,`mcrB,`mcrM,`mcrB,`mcpN,`amE0,`pcI};          // SBCB($nn)
432
                8'hD3: MCODE_S1 = {`mcLDN,`mcrM,`mcrn,`mcrU,`mcpN,`amE0,`pcI};          // ADDD($nn)
433
                8'hD4: MCODE_S1 = {`mcAND,`mcrB,`mcrM,`mcrB,`mcpN,`amE0,`pcI};          // ANDB($nn)
434
                8'hD5: MCODE_S1 = {`mcAND,`mcrB,`mcrM,`mcrn,`mcpN,`amE0,`pcI};          // BITB($nn)
435
                8'hD6: MCODE_S1 = {`mcLDR,`mcrM,`mcrn,`mcrB,`mcpN,`amE0,`pcI};          // LDB($nn)
436
                8'hD7: MCODE_S1 = {`mcLDR,`mcrB,`mcrn,`mcrM,`mcpN,`amE0,`pcI};          // STB($nn)
437
                8'hD8: MCODE_S1 = {`mcEOR,`mcrB,`mcrM,`mcrB,`mcpN,`amE0,`pcI};          // EORB($nn)
438
                8'hD9: MCODE_S1 = {`mcADC,`mcrB,`mcrM,`mcrB,`mcpN,`amE0,`pcI};          // ADCB($nn)
439
                8'hDA: MCODE_S1 = {`mcLOR,`mcrB,`mcrM,`mcrB,`mcpN,`amE0,`pcI};          // ORB($nn)
440
                8'hDB: MCODE_S1 = {`mcADD,`mcrB,`mcrM,`mcrB,`mcpN,`amE0,`pcI};          // ADDB($nn)
441
                8'hDC: MCODE_S1 = {`mcLDN,`mcrN,`mcrn,`mcrD,`mcpN,`amE0,`pcI};          // LDD($nn)
442
                8'hDD: MCODE_S1 = {`mcLDN,`mcrD,`mcrn,`mcrN,`mcpN,`amE0,`pcI};          // STD($nn)
443
                8'hDE: MCODE_S1 = {`mcLDN,`mcrN,`mcrn,`mcrX,`mcpN,`amE0,`pcI};          // LDX($nn)
444
                8'hDF: MCODE_S1 = {`mcLDN,`mcrX,`mcrn,`mcrN,`mcpN,`amE0,`pcI};          // STX($nn)
445
//-----------------------------------------------------------------------------------------
446
                8'hE0: MCODE_S1 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amXT,`pcI};          // SUBB($nn+X)
447
                8'hE1: MCODE_S1 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amXT,`pcI};          // CMPB($nn+X)
448
                8'hE2: MCODE_S1 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amXT,`pcI};          // SBCB($nn+X)
449
                8'hE3: MCODE_S1 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amXT,`pcI};          // ADDD($nn+X)
450
                8'hE4: MCODE_S1 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amXT,`pcI};          // ANDB($nn+X)
451
                8'hE5: MCODE_S1 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amXT,`pcI};          // BITB($nn+X)
452
                8'hE6: MCODE_S1 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amXT,`pcI};          // LDB($nn+X)
453
                8'hE7: MCODE_S1 = {`mcLDN,`mcrB,`mcrn,`mcrM,`mcpN,`amXT,`pcI};          // STB($nn+X)
454
                8'hE8: MCODE_S1 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amXT,`pcI};          // EORB($nn+X)
455
                8'hE9: MCODE_S1 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amXT,`pcI};          // ADCB($nn+X)
456
                8'hEA: MCODE_S1 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amXT,`pcI};          // ORB($nn+X)
457
                8'hEB: MCODE_S1 = {`mcLDN,`mcrM,`mcrn,`mcrE,`mcpN,`amXT,`pcI};          // ADDB($nn+X)
458
                8'hEC: MCODE_S1 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amXT,`pcI};          // LDD($nn+X)
459
                8'hED: MCODE_S1 = {`mcLDN,`mcrD,`mcrn,`mcrN,`mcpN,`amXT,`pcI};          // STD($nn+X)
460
                8'hEE: MCODE_S1 = {`mcLDN,`mcrN,`mcrn,`mcrE,`mcpN,`amXT,`pcI};          // LDX($nn+X)
461
                8'hEF: MCODE_S1 = {`mcLDN,`mcrX,`mcrn,`mcrN,`mcpN,`amXT,`pcI};          // STX($nn+X)
462
//-----------------------------------------------------------------------------------------
463
                8'hF0: MCODE_S1 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amP1,`pcI};          // SUBB($nnnn)
464
                8'hF1: MCODE_S1 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amP1,`pcI};          // CMPB($nnnn)
465
                8'hF2: MCODE_S1 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amP1,`pcI};          // SBCB($nnnn)
466
                8'hF3: MCODE_S1 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amP1,`pcI};          // ADDD($nnnn)
467
                8'hF4: MCODE_S1 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amP1,`pcI};          // ANDB($nnnn)
468
                8'hF5: MCODE_S1 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amP1,`pcI};          // BITB($nnnn)
469
                8'hF6: MCODE_S1 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amP1,`pcI};          // LDB($nnnn)
470
                8'hF7: MCODE_S1 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amP1,`pcI};          // STB($nnnn)
471
                8'hF8: MCODE_S1 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amP1,`pcI};          // EORB($nnnn)
472
                8'hF9: MCODE_S1 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amP1,`pcI};          // ADCB($nnnn)
473
                8'hFA: MCODE_S1 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amP1,`pcI};          // ORB($nnnn)
474
                8'hFB: MCODE_S1 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amP1,`pcI};          // ADDB($nnnn)
475
                8'hFC: MCODE_S1 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amP1,`pcI};          // LDD($nnnn)
476
                8'hFD: MCODE_S1 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amP1,`pcI};          // STD($nnnn)
477
                8'hFE: MCODE_S1 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amP1,`pcI};          // LDX($nnnn)
478
                8'hFF: MCODE_S1 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amP1,`pcI};          // STX($nnnn)
479
//-----------------------------------------------------------------------------------------
480
         default: MCODE_S1 = `MC_HALT;
481
        endcase
482
end
483
endfunction
484
 
485
 
486
function `mcwidth MCODE_S2;
487
input [7:0] opc;
488
begin
489
        case (opc)
490
//-----------------------------------------------------------------------------------------
491
                8'h20: MCODE_S2 = {`mcAPC,   `bfRA   ,`mcrn,`mcp0,`amPC,`pcN};          // BRA
492
                8'h21: MCODE_S2 = {`mcAPC,   `bfRN   ,`mcrn,`mcp0,`amPC,`pcN};          // BRN
493
                8'h22: MCODE_S2 = {`mcAPC,   `bfHI   ,`mcrn,`mcp0,`amPC,`pcN};          // BHI
494
                8'h23: MCODE_S2 = {`mcAPC,   `bfLS   ,`mcrn,`mcp0,`amPC,`pcN};          // BLS
495
                8'h24: MCODE_S2 = {`mcAPC,   `bfCC   ,`mcrn,`mcp0,`amPC,`pcN};          // BCC
496
                8'h25: MCODE_S2 = {`mcAPC,   `bfCS   ,`mcrn,`mcp0,`amPC,`pcN};          // BCS
497
                8'h26: MCODE_S2 = {`mcAPC,   `bfNE   ,`mcrn,`mcp0,`amPC,`pcN};          // BNE
498
                8'h27: MCODE_S2 = {`mcAPC,   `bfEQ   ,`mcrn,`mcp0,`amPC,`pcN};          // BEQ
499
                8'h28: MCODE_S2 = {`mcAPC,   `bfVC   ,`mcrn,`mcp0,`amPC,`pcN};          // BVC
500
                8'h29: MCODE_S2 = {`mcAPC,   `bfVS   ,`mcrn,`mcp0,`amPC,`pcN};          // BVS
501
                8'h2A: MCODE_S2 = {`mcAPC,   `bfPL   ,`mcrn,`mcp0,`amPC,`pcN};          // BPL
502
                8'h2B: MCODE_S2 = {`mcAPC,   `bfMI   ,`mcrn,`mcp0,`amPC,`pcN};          // BMI
503
                8'h2C: MCODE_S2 = {`mcAPC,   `bfGE   ,`mcrn,`mcp0,`amPC,`pcN};          // BGE
504
                8'h2D: MCODE_S2 = {`mcAPC,   `bfLT   ,`mcrn,`mcp0,`amPC,`pcN};          // BLT
505
                8'h2E: MCODE_S2 = {`mcAPC,   `bfGT   ,`mcrn,`mcp0,`amPC,`pcN};          // BGT
506
                8'h2F: MCODE_S2 = {`mcAPC,   `bfLE   ,`mcrn,`mcp0,`amPC,`pcN};          // BLE
507
//-----------------------------------------------------------------------------------------
508
                8'h32: MCODE_S2 = `MC_NEXTI;                                                                                                    // PULA
509
                8'h33: MCODE_S2 = `MC_NEXTI;                                                                                                    // PULB
510
                8'h36: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // PSHA
511
                8'h37: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // PSHB
512
                8'h38: MCODE_S2 = {`mcLOR,`mcrX,`mcrM,`mcrX,`mcpN,`amS1,`pcN};          // PULX
513
                8'h39: MCODE_S2 = {`mcLDN,`mcrN,`mcrn,`mcrP,`mcpN,`amSP,`pcN};          // RTS
514
                8'h3B: MCODE_S2 = {`mcPUL,`mcrM,`mcrn,`mcrA,`mcpN,`amS1,`pcN};          // RTI
515
                8'h3C: MCODE_S2 = {`mcLDN,`mcrX,`mcrn,`mcrN,`mcpN,`amSP,`pcN};          // PSHX
516
                8'h3D: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // MUL
517
//-----------------------------------------------------------------------------------------
518
                8'h60: MCODE_S2 = `MC_LDIXM;                                                                                                    // NEG($nn+X)
519
                8'h61: MCODE_S2 = `MC_LDIXO;                                                                                                    // AIM#,($nn+X)
520
                8'h62: MCODE_S2 = `MC_LDIXO;                                                                                                    // OIM#,($nn+X)
521
                8'h63: MCODE_S2 = `MC_LDIXM;                                                                                                    // COM($nn+X)
522
                8'h64: MCODE_S2 = `MC_LDIXM;                                                                                                    // LSR($nn+X)
523
                8'h65: MCODE_S2 = `MC_LDIXO;                                                                                                    // EIM#,($nn+X)
524
                8'h66: MCODE_S2 = `MC_LDIXM;                                                                                                    // ROR($nn+X)
525
                8'h67: MCODE_S2 = `MC_LDIXM;                                                                                                    // ASR($nn+X)
526
                8'h68: MCODE_S2 = `MC_LDIXM;                                                                                                    // ASL($nn+X)
527
                8'h69: MCODE_S2 = `MC_LDIXM;                                                                                                    // ROL($nn+X)
528
                8'h6A: MCODE_S2 = `MC_LDIXM;                                                                                                    // DEC($nn+X)
529
                8'h6B: MCODE_S2 = `MC_LDIXO;                                                                                                    // TIM#,($nn+X)
530
                8'h6C: MCODE_S2 = `MC_LDIXM;                                                                                                    // INC($nn+X)
531
                8'h6D: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // TST($nn+X)
532
                8'h6E: MCODE_S2 = {`mcADD,`mcrX,`mcrT,`mcrP,`mcp0,`amPC,`pcN};          // JMP.$nn+X
533
                8'h6F: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amXT,`pcN};          // CLR($nn+X)
534
//-----------------------------------------------------------------------------------------
535
                8'h70: MCODE_S2 = `MC_LDEXL;                                                                                                    // NEG($nnnn)
536
                8'h71: MCODE_S2 = {`mcAND,`mcrT,`mcrM,`mcrT,`mcpN,`amE0,`pcI};          // AIM#,($nn)
537
                8'h72: MCODE_S2 = {`mcLOR,`mcrT,`mcrM,`mcrT,`mcpN,`amE0,`pcI};          // OIM#,($nn)
538
                8'h73: MCODE_S2 = `MC_LDEXL;                                                                                                    // COM($nnnn)
539
                8'h74: MCODE_S2 = `MC_LDEXL;                                                                                                    // LSR($nnnn)
540
                8'h75: MCODE_S2 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amP1,`pcI};          // EIM#,($nnnn)
541
                8'h76: MCODE_S2 = `MC_LDEXL;                                                                                                    // ROR($nnnn)
542
                8'h77: MCODE_S2 = `MC_LDEXL;                                                                                                    // ASR($nnnn)
543
                8'h78: MCODE_S2 = `MC_LDEXL;                                                                                                    // ASL($nnnn)
544
                8'h79: MCODE_S2 = `MC_LDEXL;                                                                                                    // ROL($nnnn)
545
                8'h7A: MCODE_S2 = `MC_LDEXL;                                                                                                    // DEC($nnnn)
546
                8'h7B: MCODE_S2 = {`mcAND,`mcrT,`mcrM,`mcrn,`mcpN,`amE0,`pcI};          // TIM#,($nn)
547
                8'h7C: MCODE_S2 = `MC_LDEXL;                                                                                                    // INC($nnnn)
548
                8'h7D: MCODE_S2 = {`mcTST,`mcrM,`mcrn,`mcrn,`mcpN,`amE0,`pcI};          // TST($nnnn)
549
                8'h7E: MCODE_S2 = {`mcLOR,`mcrM,`mcrE,`mcrP,`mcp0,`amPC,`pcN};          // JMP.$nnnn
550
                8'h7F: MCODE_S2 = `MC_LDEXL;                                                                                                    // CLR($nnnn)
551
//-----------------------------------------------------------------------------------------
552
                8'h83: MCODE_S2 = {`mcSUB,`mcrD,`mcrT,`mcrD,`mcp0,`amPC,`pcI};          // SUBD#
553
                8'h8C: MCODE_S2 = {`mcSUB,`mcrX,`mcrT,`mcrn,`mcp0,`amPC,`pcI};          // CMPX#
554
                8'h8D: MCODE_S2 = {`mcPSH,`mcrP,`mcrn,`mcrM,`mcpN,`amSP,`pcN};          // BSR
555
                8'h8E: MCODE_S2 = {`mcLDR,`mcrT,`mcrn,`mcrS,`mcp0,`amPC,`pcI};          // LDS#
556
//-----------------------------------------------------------------------------------------
557
                8'h90: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // SUBA($nn)
558
                8'h91: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // CMPA($nn)
559
                8'h92: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // SBCA($nn)
560
                8'h93: MCODE_S2 = {`mcLDN,`mcrM,`mcrn,`mcrV,`mcpN,`amE1,`pcN};          // SUBD($nn)
561
                8'h94: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // ANDA($nn)
562
                8'h95: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // BITA($nn)
563
                8'h96: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // LDA($nn)
564
                8'h97: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // STA($nn)
565
                8'h98: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // EORA($nn)
566
                8'h99: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // ADCA($nn)
567
                8'h9A: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // ORA($nn)
568
                8'h9B: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // ADDA($nn)
569
                8'h9C: MCODE_S2 = {`mcLOR,`mcrM,`mcrT,`mcrT,`mcpN,`amE1,`pcN};          // CMPX($nn)
570
                8'h9D: MCODE_S2 = {`mcPSH,`mcrP,`mcrn,`mcrM,`mcpN,`amSP,`pcN};          // JSR($nn)
571
                8'h9E: MCODE_S2 = {`mcLDN,`mcrM,`mcrn,`mcrV,`mcpN,`amE1,`pcN};          // LDS($nn)
572
                8'h9F: MCODE_S2 = {`mcLDN,`mcrS,`mcrn,`mcrM,`mcpN,`amE1,`pcN};          // STS($nn)
573
//-----------------------------------------------------------------------------------------
574
                8'hA0: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // SUBA($nn+X)
575
                8'hA1: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // CMPA($nn+X)
576
                8'hA2: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // SBCA($nn+X)
577
                8'hA3: MCODE_S2 = {`mcINC,`mcrT,`mcrn,`mcrT,`mcpN,`amXT,`pcN};          // SUBD($nn+X)
578
                8'hA4: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // ANDA($nn+X)
579
                8'hA5: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // BITA($nn+X)
580
                8'hA6: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // LDA($nn+X)
581
                8'hA7: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // STA($nn+X)
582
                8'hA8: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // EORA($nn+X)
583
                8'hA9: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // ADCA($nn+X)
584
                8'hAA: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // ORA($nn+X)
585
                8'hAB: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // ADDA($nn+X)
586
                8'hAC: MCODE_S2 = {`mcINC,`mcrT,`mcrn,`mcrT,`mcpN,`amXT,`pcN};          // CMPX($nn+X)
587
                8'hAD: MCODE_S2 = {`mcPSH,`mcrP,`mcrn,`mcrM,`mcpN,`amSP,`pcN};          // JSR.$nn+X
588
                8'hAE: MCODE_S2 = {`mcINC,`mcrT,`mcrn,`mcrT,`mcpN,`amXT,`pcN};          // LDS($nn+X)
589
                8'hAF: MCODE_S2 = {`mcINC,`mcrT,`mcrn,`mcrT,`mcpN,`amXT,`pcN};          // STS($nn+X)
590
//-----------------------------------------------------------------------------------------
591
                8'hB0: MCODE_S2 = {`mcSUB,`mcrA,`mcrM,`mcrA,`mcpN,`amE0,`pcI};          // SUBA($nnnn)
592
                8'hB1: MCODE_S2 = {`mcSUB,`mcrA,`mcrM,`mcrn,`mcpN,`amE0,`pcI};          // CMPA($nnnn)
593
                8'hB2: MCODE_S2 = {`mcSBC,`mcrA,`mcrM,`mcrn,`mcpN,`amE0,`pcI};          // SBCA($nnnn)
594
                8'hB3: MCODE_S2 = {`mcLDN,`mcrN,`mcrn,`mcrT,`mcpN,`amE0,`pcI};          // SUBD($nnnn)
595
                8'hB4: MCODE_S2 = {`mcAND,`mcrA,`mcrM,`mcrA,`mcpN,`amE0,`pcI};          // ANDA($nnnn)
596
                8'hB5: MCODE_S2 = {`mcAND,`mcrA,`mcrM,`mcrn,`mcpN,`amE0,`pcI};          // BITA($nnnn)
597
                8'hB6: MCODE_S2 = {`mcLDR,`mcrM,`mcrn,`mcrA,`mcpN,`amE0,`pcI};          // LDA($nnnn)
598
                8'hB7: MCODE_S2 = {`mcLDR,`mcrA,`mcrn,`mcrM,`mcpN,`amE0,`pcI};          // STA($nnnn)
599
                8'hB8: MCODE_S2 = {`mcEOR,`mcrA,`mcrM,`mcrA,`mcpN,`amE0,`pcI};          // EORA($nnnn)
600
                8'hB9: MCODE_S2 = {`mcADC,`mcrA,`mcrM,`mcrA,`mcpN,`amE0,`pcI};          // ADCA($nnnn)
601
                8'hBA: MCODE_S2 = {`mcLOR,`mcrA,`mcrM,`mcrA,`mcpN,`amE0,`pcI};          // ORA($nnnn)
602
                8'hBB: MCODE_S2 = {`mcADD,`mcrA,`mcrM,`mcrA,`mcpN,`amE0,`pcI};          // ADDA($nnnn)
603
                8'hBC: MCODE_S2 = {`mcLDN,`mcrN,`mcrn,`mcrT,`mcpN,`amE0,`pcI};          // CMPX($nnnn)
604
                8'hBD: MCODE_S2 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amPC,`pcI};          // JSR.$nnnn
605
                8'hBE: MCODE_S2 = {`mcLDN,`mcrM,`mcrn,`mcrU,`mcpN,`amE0,`pcI};          // LDS($nnnn)
606
                8'hBF: MCODE_S2 = {`mcLDN,`mcrS,`mcrn,`mcrN,`mcpN,`amE0,`pcI};          // STS($nnnn)
607
//-----------------------------------------------------------------------------------------
608
                8'hC3: MCODE_S2 = {`mcADD,`mcrD,`mcrT,`mcrD,`mcp0,`amPC,`pcI};          // ADDD#
609
                8'hCC: MCODE_S2 = {`mcLDR,`mcrT,`mcrn,`mcrD,`mcp0,`amPC,`pcI};          // LDD#
610
                8'hCE: MCODE_S2 = {`mcLDR,`mcrT,`mcrn,`mcrX,`mcp0,`amPC,`pcI};          // LDX#
611
//-----------------------------------------------------------------------------------------
612
                8'hD0: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // SUBB($nn)
613
                8'hD1: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // CMPB($nn)
614
                8'hD2: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // SBCB($nn)
615
                8'hD3: MCODE_S2 = {`mcLDN,`mcrM,`mcrn,`mcrV,`mcpN,`amE1,`pcN};          // ADDD($nn)
616
                8'hD4: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // ANDB($nn)
617
                8'hD5: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // BITB($nn)
618
                8'hD6: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // LDB($nn)
619
                8'hD7: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // STB($nn)
620
                8'hD8: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // EORB($nn)
621
                8'hD9: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // ADCB($nn)
622
                8'hDA: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // ORB($nn)
623
                8'hDB: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // ADDB($nn)
624
                8'hDC: MCODE_S2 = {`mcLOR,`mcrM,`mcrD,`mcrD,`mcpN,`amE1,`pcN};          // LDD($nn)
625
                8'hDD: MCODE_S2 = {`mcLDN,`mcrD,`mcrn,`mcrM,`mcpN,`amE1,`pcN};          // STD($nn)
626
                8'hDE: MCODE_S2 = {`mcLOR,`mcrM,`mcrX,`mcrX,`mcpN,`amE1,`pcN};          // LDX($nn)
627
                8'hDF: MCODE_S2 = {`mcLDN,`mcrX,`mcrn,`mcrM,`mcpN,`amE1,`pcN};          // STX($nn)
628
//-----------------------------------------------------------------------------------------
629
                8'hE0: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // SUBB($nn+X)
630
                8'hE1: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // CMPB($nn+X)
631
                8'hE2: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // SBCB($nn+X)
632
                8'hE3: MCODE_S2 = {`mcINC,`mcrT,`mcrn,`mcrT,`mcpN,`amXT,`pcN};          // ADDD($nn+X)
633
                8'hE4: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // ANDB($nn+X)
634
                8'hE5: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // BITB($nn+X)
635
                8'hE6: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // LDB($nn+X)
636
                8'hE7: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // STB($nn+X)
637
                8'hE8: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // EORB($nn+X)
638
                8'hE9: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // ADCB($nn+X)
639
                8'hEA: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // ORB($nn+X)
640
                8'hEB: MCODE_S2 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // ADDB($nn+X)
641
                8'hEC: MCODE_S2 = {`mcINC,`mcrT,`mcrn,`mcrT,`mcpN,`amXT,`pcN};          // LDD($nn+X)
642
                8'hED: MCODE_S2 = {`mcINC,`mcrT,`mcrn,`mcrT,`mcpN,`amXT,`pcN};          // STD($nn+X)
643
                8'hEE: MCODE_S2 = {`mcINC,`mcrT,`mcrn,`mcrT,`mcpN,`amXT,`pcN};          // LDX($nn+X)
644
                8'hEF: MCODE_S2 = {`mcINC,`mcrT,`mcrn,`mcrT,`mcpN,`amXT,`pcN};          // STX($nn+X)
645
//-----------------------------------------------------------------------------------------
646
                8'hF0: MCODE_S2 = {`mcSUB,`mcrB,`mcrM,`mcrB,`mcpN,`amE0,`pcI};          // SUBB($nnnn)
647
                8'hF1: MCODE_S2 = {`mcSUB,`mcrB,`mcrM,`mcrn,`mcpN,`amE0,`pcI};          // CMPB($nnnn)
648
                8'hF2: MCODE_S2 = {`mcSBC,`mcrB,`mcrM,`mcrn,`mcpN,`amE0,`pcI};          // SBCB($nnnn)
649
                8'hF3: MCODE_S2 = {`mcLDN,`mcrN,`mcrn,`mcrT,`mcpN,`amE0,`pcI};          // ADDD($nnnn)
650
                8'hF4: MCODE_S2 = {`mcAND,`mcrB,`mcrM,`mcrB,`mcpN,`amE0,`pcI};          // ANDB($nnnn)
651
                8'hF5: MCODE_S2 = {`mcAND,`mcrB,`mcrM,`mcrn,`mcpN,`amE0,`pcI};          // BITB($nnnn)
652
                8'hF6: MCODE_S2 = {`mcLDR,`mcrM,`mcrn,`mcrB,`mcpN,`amE0,`pcI};          // LDB($nnnn)
653
                8'hF7: MCODE_S2 = {`mcLDR,`mcrB,`mcrn,`mcrM,`mcpN,`amE0,`pcI};          // STB($nnnn)
654
                8'hF8: MCODE_S2 = {`mcEOR,`mcrB,`mcrM,`mcrB,`mcpN,`amE0,`pcI};          // EORB($nnnn)
655
                8'hF9: MCODE_S2 = {`mcADC,`mcrB,`mcrM,`mcrB,`mcpN,`amE0,`pcI};          // ADCB($nnnn)
656
                8'hFA: MCODE_S2 = {`mcLOR,`mcrB,`mcrM,`mcrB,`mcpN,`amE0,`pcI};          // ORB($nnnn)
657
                8'hFB: MCODE_S2 = {`mcADD,`mcrB,`mcrM,`mcrB,`mcpN,`amE0,`pcI};          // ADDB($nnnn)
658
                8'hFC: MCODE_S2 = {`mcLDN,`mcrM,`mcrn,`mcrU,`mcpN,`amE0,`pcI};          // LDD($nnnn)
659
                8'hFD: MCODE_S2 = {`mcLDN,`mcrD,`mcrn,`mcrN,`mcpN,`amE0,`pcI};          // STD($nnnn)
660
                8'hFE: MCODE_S2 = {`mcLDN,`mcrM,`mcrn,`mcrU,`mcpN,`amE0,`pcI};          // LDX($nnnn)
661
                8'hFF: MCODE_S2 = {`mcLDN,`mcrX,`mcrn,`mcrN,`mcpN,`amE0,`pcI};          // STX($nnnn)
662
//-----------------------------------------------------------------------------------------
663
         default: MCODE_S2 = `MC_HALT;
664
        endcase
665
end
666
endfunction
667
 
668
 
669
function `mcwidth MCODE_S3;
670
input [7:0] opc;
671
begin
672
        case (opc)
673
//-----------------------------------------------------------------------------------------
674
                8'h36: MCODE_S3 = `MC_NEXTI;                                                                                                    // PSHA
675
                8'h37: MCODE_S3 = `MC_NEXTI;                                                                                                    // PSHB
676
                8'h38: MCODE_S3 = {`mcINC,`mcrS,`mcrn,`mcrS,`mcp0,`amPC,`pcN};          // PULX
677
                8'h39: MCODE_S3 = {`mcLOR,`mcrP,`mcrM,`mcrP,`mcpN,`amS1,`pcN};          // RTS
678
                8'h3B: MCODE_S3 = {`mcPUL,`mcrN,`mcrn,`mcrX,`mcpN,`amS1,`pcN};          // RTI
679
                8'h3C: MCODE_S3 = {`mcDEC,`mcrS,`mcrn,`mcrS,`mcpN,`amPC,`pcN};          // PSHX
680
                8'h3D: MCODE_S3 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // MUL
681
//-----------------------------------------------------------------------------------------
682
                8'h60: MCODE_S3 = {`mcNEG,`mcrE,`mcrn,`mcrM,`mcpN,`amXT,`pcN};          // NEG($nn+X)
683
                8'h61: MCODE_S3 = {`mcAND,`mcrM,`mcrE,`mcrE,`mcpN,`amXT,`pcN};          // AIM#,($nn+X)
684
                8'h62: MCODE_S3 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amXT,`pcN};          // OIM#,($nn+X)
685
                8'h63: MCODE_S3 = {`mcNOT,`mcrE,`mcrn,`mcrM,`mcpN,`amXT,`pcN};          // COM($nn+X)
686
                8'h64: MCODE_S3 = {`mcLSR,`mcrE,`mcrn,`mcrM,`mcpN,`amXT,`pcN};          // LSR($nn+X)
687
                8'h65: MCODE_S3 = {`mcEOR,`mcrM,`mcrE,`mcrE,`mcpN,`amXT,`pcN};          // EIM#,($nn+X)
688
                8'h66: MCODE_S3 = {`mcROR,`mcrE,`mcrn,`mcrM,`mcpN,`amXT,`pcN};          // ROR($nn+X)
689
                8'h67: MCODE_S3 = {`mcASR,`mcrE,`mcrn,`mcrM,`mcpN,`amXT,`pcN};          // ASR($nn+X)
690
                8'h68: MCODE_S3 = {`mcASL,`mcrE,`mcrn,`mcrM,`mcpN,`amXT,`pcN};          // ASL($nn+X)
691
                8'h69: MCODE_S3 = {`mcROL,`mcrE,`mcrn,`mcrM,`mcpN,`amXT,`pcN};          // ROL($nn+X)
692
                8'h6A: MCODE_S3 = {`mcDEC,`mcrE,`mcrn,`mcrM,`mcpN,`amXT,`pcN};          // DEC($nn+X)
693
                8'h6B: MCODE_S3 = {`mcAND,`mcrM,`mcrE,`mcrn,`mcpN,`amXT,`pcN};          // TIM#,($nn+X)
694
                8'h6C: MCODE_S3 = {`mcINC,`mcrE,`mcrn,`mcrM,`mcpN,`amXT,`pcN};          // INC($nn+X)
695
                8'h6D: MCODE_S3 = `MC_NEXTI;                                                                                                    // TST($nn+X)
696
                8'h6F: MCODE_S3 = {`mcLDN,`mcrn,`mcrn,`mcrM,`mcpN,`amXT,`pcN};          // CLR($nn+X)
697
//-----------------------------------------------------------------------------------------
698
                8'h70: MCODE_S3 = `MC_LDEXM;                                                                                                    // NEG($nnnn)
699
                8'h71: MCODE_S3 = {`mcLDN,`mcrT,`mcrn,`mcrM,`mcpN,`amE0,`pcN};          // AIM#,($nn)
700
                8'h72: MCODE_S3 = {`mcLDN,`mcrT,`mcrn,`mcrM,`mcpN,`amE0,`pcN};          // OIM#,($nn)
701
                8'h73: MCODE_S3 = `MC_LDEXM;                                                                                                    // COM($nnnn)
702
                8'h74: MCODE_S3 = `MC_LDEXM;                                                                                                    // LSR($nnnn)
703
                8'h75: MCODE_S3 = {`mcEOR,`mcrT,`mcrM,`mcrT,`mcpN,`amE0,`pcI};          // EIM#,($nnnn)
704
                8'h76: MCODE_S3 = `MC_LDEXM;                                                                                                    // ROR($nnnn)
705
                8'h77: MCODE_S3 = `MC_LDEXM;                                                                                                    // ASR($nnnn)
706
                8'h78: MCODE_S3 = `MC_LDEXM;                                                                                                    // ASL($nnnn)
707
                8'h79: MCODE_S3 = `MC_LDEXM;                                                                                                    // ROL($nnnn)
708
                8'h7A: MCODE_S3 = `MC_LDEXM;                                                                                                    // DEC($nnnn)
709
                8'h7B: MCODE_S3 = `MC_NEXTI;                                                                                                    // TIM#,($nn)
710
                8'h7C: MCODE_S3 = `MC_LDEXM;                                                                                                    // INC($nnnn)
711
                8'h7D: MCODE_S3 = `MC_NEXTI;                                                                                                    // TST($nnnn)
712
                8'h7F: MCODE_S3 = {`mcLDR,`mcrn,`mcrn,`mcrM,`mcpN,`amE0,`pcN};          // CLR($nnnn)
713
//-----------------------------------------------------------------------------------------
714
                8'h8D: MCODE_S3 = {`mcPSH,`mcrP,`mcrn,`mcrN,`mcpN,`amSP,`pcN};          // BSR
715
//-----------------------------------------------------------------------------------------
716
                8'h93: MCODE_S3 = {`mcSUB,`mcrD,`mcrT,`mcrD,`mcp0,`amPC,`pcN};          // SUBD($nn)
717
                8'h9C: MCODE_S3 = {`mcSUB,`mcrX,`mcrT,`mcrn,`mcp0,`amPC,`pcN};          // CMPX($nn)
718
                8'h9D: MCODE_S3 = {`mcPSH,`mcrP,`mcrn,`mcrN,`mcpN,`amSP,`pcN};          // JSR($nn)
719
                8'h9E: MCODE_S3 = {`mcLDR,`mcrT,`mcrn,`mcrS,`mcp0,`amPC,`pcN};          // LDS($nn)
720
                8'h9F: MCODE_S3 = {`mcLDR,`mcrS,`mcrn,`mcrS,`mcp0,`amPC,`pcN};          // STS($nn)
721
//-----------------------------------------------------------------------------------------
722
                8'hA0: MCODE_S3 = {`mcSUB,`mcrA,`mcrE,`mcrA,`mcp0,`amPC,`pcN};          // SUBA($nn+X)
723
                8'hA1: MCODE_S3 = {`mcSUB,`mcrA,`mcrE,`mcrn,`mcp0,`amPC,`pcN};          // CMPA($nn+X)
724
                8'hA2: MCODE_S3 = {`mcSBC,`mcrA,`mcrE,`mcrn,`mcp0,`amPC,`pcN};          // SBCA($nn+X)
725
                8'hA3: MCODE_S3 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amXT,`pcN};          // SUBD($nn+X)
726
                8'hA4: MCODE_S3 = {`mcAND,`mcrA,`mcrE,`mcrA,`mcp0,`amPC,`pcN};          // ANDA($nn+X)
727
                8'hA5: MCODE_S3 = {`mcAND,`mcrA,`mcrE,`mcrn,`mcp0,`amPC,`pcN};          // BITA($nn+X)
728
                8'hA6: MCODE_S3 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // LDA($nn+X)
729
                8'hA7: MCODE_S3 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // STA($nn+X)
730
                8'hA8: MCODE_S3 = {`mcEOR,`mcrA,`mcrE,`mcrA,`mcp0,`amPC,`pcN};          // EORA($nn+X)
731
                8'hA9: MCODE_S3 = {`mcADC,`mcrA,`mcrE,`mcrA,`mcp0,`amPC,`pcN};          // ADCA($nn+X)
732
                8'hAA: MCODE_S3 = {`mcLOR,`mcrA,`mcrE,`mcrA,`mcp0,`amPC,`pcN};          // ORA($nn+X)
733
                8'hAB: MCODE_S3 = {`mcADD,`mcrA,`mcrE,`mcrA,`mcp0,`amPC,`pcN};          // ADDA($nn+X)
734
                8'hAC: MCODE_S3 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amXT,`pcN};          // CMPX($nn+X)
735
                8'hAD: MCODE_S3 = {`mcPSH,`mcrP,`mcrn,`mcrN,`mcpN,`amSP,`pcN};          // JSR.$nn+X
736
                8'hAE: MCODE_S3 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amXT,`pcN};          // LDS($nn+X)
737
                8'hAF: MCODE_S3 = {`mcLDN,`mcrS,`mcrn,`mcrM,`mcpN,`amXT,`pcN};          // STS($nn+X)
738
//-----------------------------------------------------------------------------------------
739
                8'hB0: MCODE_S3 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // SUBA($nnnn)
740
                8'hB1: MCODE_S3 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // CMPA($nnnn)
741
                8'hB2: MCODE_S3 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // SBCA($nnnn)
742
                8'hB3: MCODE_S3 = {`mcLOR,`mcrM,`mcrT,`mcrT,`mcpN,`amE1,`pcN};          // SUBD($nnnn)
743
                8'hB4: MCODE_S3 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // ANDA($nnnn)
744
                8'hB5: MCODE_S3 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // BITA($nnnn)
745
                8'hB6: MCODE_S3 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // LDA($nnnn)
746
                8'hB7: MCODE_S3 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // STA($nnnn)
747
                8'hB8: MCODE_S3 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // EORA($nnnn)
748
                8'hB9: MCODE_S3 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // ADCA($nnnn)
749
                8'hBA: MCODE_S3 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // ORA($nnnn)
750
                8'hBB: MCODE_S3 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // ADDA($nnnn)
751
                8'hBC: MCODE_S3 = {`mcLOR,`mcrM,`mcrT,`mcrT,`mcpN,`amE1,`pcN};          // CMPX($nnnn)
752
                8'hBD: MCODE_S3 = {`mcPSH,`mcrP,`mcrn,`mcrM,`mcpN,`amSP,`pcN};          // JSR.$nnnn
753
                8'hBE: MCODE_S3 = {`mcLDN,`mcrM,`mcrn,`mcrV,`mcpN,`amE1,`pcN};          // LDS($nnnn)
754
                8'hBF: MCODE_S3 = {`mcLDN,`mcrS,`mcrn,`mcrM,`mcpN,`amE1,`pcN};          // STS($nnnn)
755
//-----------------------------------------------------------------------------------------
756
                8'hD3: MCODE_S3 = {`mcADD,`mcrD,`mcrT,`mcrD,`mcp0,`amPC,`pcN};          // ADDD($nn)
757
                8'hDC: MCODE_S3 = {`mcLDR,`mcrD,`mcrn,`mcrD,`mcp0,`amPC,`pcN};          // LDD($nn)
758
                8'hDD: MCODE_S3 = {`mcLDR,`mcrD,`mcrn,`mcrD,`mcp0,`amPC,`pcN};          // STD($nn)
759
                8'hDE: MCODE_S3 = {`mcLDR,`mcrX,`mcrn,`mcrX,`mcp0,`amPC,`pcN};          // LDX($nn)
760
                8'hDF: MCODE_S3 = {`mcLDR,`mcrX,`mcrn,`mcrX,`mcp0,`amPC,`pcN};          // STX($nn)
761
//-----------------------------------------------------------------------------------------
762
                8'hE0: MCODE_S3 = {`mcSUB,`mcrB,`mcrE,`mcrB,`mcp0,`amPC,`pcN};          // SUBB($nn+X)
763
                8'hE1: MCODE_S3 = {`mcSUB,`mcrB,`mcrE,`mcrn,`mcp0,`amPC,`pcN};          // CMPB($nn+X)
764
                8'hE2: MCODE_S3 = {`mcSBC,`mcrB,`mcrE,`mcrB,`mcp0,`amPC,`pcN};          // SBCB($nn+X)
765
                8'hE3: MCODE_S3 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amXT,`pcN};          // ADDD($nn+X)
766
                8'hE4: MCODE_S3 = {`mcAND,`mcrB,`mcrE,`mcrB,`mcp0,`amPC,`pcN};          // ANDB($nn+X)
767
                8'hE5: MCODE_S3 = {`mcAND,`mcrB,`mcrE,`mcrn,`mcp0,`amPC,`pcN};          // BITB($nn+X)
768
                8'hE6: MCODE_S3 = {`mcLDR,`mcrE,`mcrn,`mcrB,`mcp0,`amPC,`pcN};          // LDB($nn+X)
769
                8'hE7: MCODE_S3 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // STB($nn+X)
770
                8'hE8: MCODE_S3 = {`mcEOR,`mcrB,`mcrE,`mcrB,`mcp0,`amPC,`pcN};          // EORB($nn+X)
771
                8'hE9: MCODE_S3 = {`mcADC,`mcrB,`mcrE,`mcrB,`mcp0,`amPC,`pcN};          // ADCB($nn+X)
772
                8'hEA: MCODE_S3 = {`mcLOR,`mcrB,`mcrE,`mcrB,`mcp0,`amPC,`pcN};          // ORB($nn+X)
773
                8'hEB: MCODE_S3 = {`mcADD,`mcrB,`mcrE,`mcrB,`mcp0,`amPC,`pcN};          // ADDB($nn+X)
774
                8'hEC: MCODE_S3 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amXT,`pcN};          // LDD($nn+X)
775
                8'hED: MCODE_S3 = {`mcLDN,`mcrD,`mcrn,`mcrM,`mcpN,`amXT,`pcN};          // STD($nn+X)
776
                8'hEE: MCODE_S3 = {`mcLOR,`mcrM,`mcrE,`mcrE,`mcpN,`amXT,`pcN};          // LDX($nn+X)
777
                8'hEF: MCODE_S3 = {`mcLDN,`mcrX,`mcrn,`mcrM,`mcpN,`amXT,`pcN};          // STX($nn+X)
778
//-----------------------------------------------------------------------------------------
779
                8'hF0: MCODE_S3 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // SUBB($nnnn)
780
                8'hF1: MCODE_S3 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // CMPB($nnnn)
781
                8'hF2: MCODE_S3 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // SBCB($nnnn)
782
                8'hF3: MCODE_S3 = {`mcLOR,`mcrM,`mcrT,`mcrT,`mcpN,`amE1,`pcN};          // ADDD($nnnn)
783
                8'hF4: MCODE_S3 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // ANDB($nnnn)
784
                8'hF5: MCODE_S3 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // BITB($nnnn)
785
                8'hF6: MCODE_S3 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // LDB($nnnn)
786
                8'hF7: MCODE_S3 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // STB($nnnn)
787
                8'hF8: MCODE_S3 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // EORB($nnnn)
788
                8'hF9: MCODE_S3 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // ADCB($nnnn)
789
                8'hFA: MCODE_S3 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // ORB($nnnn)
790
                8'hFB: MCODE_S3 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // ADDB($nnnn)
791
                8'hFC: MCODE_S3 = {`mcLDN,`mcrM,`mcrn,`mcrV,`mcpN,`amE1,`pcN};          // LDD($nnnn)
792
                8'hFD: MCODE_S3 = {`mcLDN,`mcrD,`mcrn,`mcrM,`mcpN,`amE1,`pcN};          // STD($nnnn)
793
                8'hFE: MCODE_S3 = {`mcLDN,`mcrM,`mcrn,`mcrV,`mcpN,`amE1,`pcN};          // LDX($nnnn)
794
                8'hFF: MCODE_S3 = {`mcLDN,`mcrX,`mcrn,`mcrM,`mcpN,`amE1,`pcN};          // STX($nnnn)
795
//-----------------------------------------------------------------------------------------
796
         default: MCODE_S3 = `MC_HALT;
797
        endcase
798
end
799
endfunction
800
 
801
 
802
function `mcwidth MCODE_S4;
803
input [7:0] opc;
804
begin
805
        case (opc)
806
//-----------------------------------------------------------------------------------------
807
                8'h39: MCODE_S4 = {`mcINC,`mcrS,`mcrn,`mcrS,`mcp0,`amPC,`pcN};          // RTS
808
                8'h3B: MCODE_S4 = {`mcLOR,`mcrM,`mcrX,`mcrX,`mcpN,`amS1,`pcN};          // RTI
809
                8'h3C: MCODE_S4 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcp0,`amPC,`pcN};          // PSHX
810
                8'h3D: MCODE_S4 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // MUL
811
//-----------------------------------------------------------------------------------------
812
                8'h60: MCODE_S4 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // NEG($nn+X)
813
                8'h61: MCODE_S4 = {`mcLDN,`mcrE,`mcrn,`mcrM,`mcpN,`amXT,`pcN};          // AIM#,($nn+X)
814
                8'h62: MCODE_S4 = {`mcLDN,`mcrE,`mcrn,`mcrM,`mcpN,`amXT,`pcN};          // OIM#,($nn+X)
815
                8'h63: MCODE_S4 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // COM($nn+X)
816
                8'h64: MCODE_S4 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // LSR($nn+X)
817
                8'h65: MCODE_S4 = {`mcLDN,`mcrE,`mcrn,`mcrM,`mcpN,`amXT,`pcN};          // EIM#,($nn+X)
818
                8'h66: MCODE_S4 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // ROR($nn+X)
819
                8'h67: MCODE_S4 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // ASR($nn+X)
820
                8'h68: MCODE_S4 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // ASL($nn+X)
821
                8'h69: MCODE_S4 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // ROL($nn+X)
822
                8'h6A: MCODE_S4 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // DEC($nn+X)
823
                8'h6B: MCODE_S4 = `MC_NEXTI;                                                                                                    // TIM#,($nn+X)
824
                8'h6C: MCODE_S4 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // INC($nn+X)
825
                8'h6F: MCODE_S4 = `MC_NEXTI;                                                                                                    // CLR($nn+X)
826
//-----------------------------------------------------------------------------------------
827
                8'h70: MCODE_S4 = {`mcNEG,`mcrT,`mcrn,`mcrM,`mcpN,`amE0,`pcN};          // NEG($nnnn)
828
                8'h71: MCODE_S4 = `MC_NEXTI;                                                                                                    // AIM#,($nn)
829
                8'h72: MCODE_S4 = `MC_NEXTI;                                                                                                    // OIM#,($nn)
830
                8'h73: MCODE_S4 = {`mcNOT,`mcrT,`mcrn,`mcrM,`mcpN,`amE0,`pcN};          // COM($nnnn)
831
                8'h74: MCODE_S4 = {`mcLSR,`mcrT,`mcrn,`mcrM,`mcpN,`amE0,`pcN};          // LSR($nnnn)
832
                8'h75: MCODE_S4 = {`mcLDN,`mcrT,`mcrn,`mcrM,`mcpN,`amE0,`pcN};          // EIM#,($nnnn)
833
                8'h76: MCODE_S4 = {`mcROR,`mcrT,`mcrn,`mcrM,`mcpN,`amE0,`pcN};          // ROR($nnnn)
834
                8'h77: MCODE_S4 = {`mcASR,`mcrT,`mcrn,`mcrM,`mcpN,`amE0,`pcN};          // ASR($nnnn)
835
                8'h78: MCODE_S4 = {`mcASL,`mcrT,`mcrn,`mcrM,`mcpN,`amE0,`pcN};          // ASL($nnnn)
836
                8'h79: MCODE_S4 = {`mcROL,`mcrT,`mcrn,`mcrM,`mcpN,`amE0,`pcN};          // ROL($nnnn)
837
                8'h7A: MCODE_S4 = {`mcDEC,`mcrT,`mcrn,`mcrM,`mcpN,`amE0,`pcN};          // DEC($nnnn)
838
                8'h7C: MCODE_S4 = {`mcINC,`mcrT,`mcrn,`mcrM,`mcpN,`amE0,`pcN};          // INC($nnnn)
839
                8'h7F: MCODE_S4 = `MC_NEXTI;                                                                                                    // CLR($nnnn)
840
//-----------------------------------------------------------------------------------------
841
                8'h8D: MCODE_S4 = {`mcAPC,   `bfRA   ,`mcrn,`mcp0,`amPC,`pcN};          // BSR
842
//-----------------------------------------------------------------------------------------
843
                8'h9D: MCODE_S4 = {`mcLDN,`mcrE,`mcrn,`mcrP,`mcp0,`amPC,`pcN};          // JSR($nn)
844
//-----------------------------------------------------------------------------------------
845
                8'hA3: MCODE_S4 = {`mcSUB,`mcrD,`mcrE,`mcrD,`mcp0,`amPC,`pcN};          // SUBD($nn+X)
846
                8'hAC: MCODE_S4 = {`mcSUB,`mcrX,`mcrE,`mcrn,`mcp0,`amPC,`pcN};          // CMPX($nn+X)
847
                8'hAD: MCODE_S4 = {`mcADD,`mcrX,`mcrT,`mcrP,`mcp0,`amPC,`pcN};          // JSR.$nn+X
848
                8'hAE: MCODE_S4 = {`mcLDR,`mcrE,`mcrn,`mcrS,`mcp0,`amPC,`pcN};          // LDS($nn+X)
849
                8'hAF: MCODE_S4 = {`mcLDR,`mcrS,`mcrn,`mcrS,`mcp0,`amPC,`pcN};          // STS($nn+X)
850
//-----------------------------------------------------------------------------------------
851
                8'hB3: MCODE_S4 = {`mcSUB,`mcrD,`mcrT,`mcrD,`mcp0,`amPC,`pcN};          // SUBD($nnnn)
852
                8'hBC: MCODE_S4 = {`mcSUB,`mcrX,`mcrT,`mcrn,`mcp0,`amPC,`pcN};          // CMPX($nnnn)
853
                8'hBD: MCODE_S4 = {`mcPSH,`mcrP,`mcrn,`mcrN,`mcpN,`amSP,`pcN};          // JSR.$nnnn
854
                8'hBE: MCODE_S4 = {`mcLDR,`mcrT,`mcrn,`mcrS,`mcp0,`amPC,`pcN};          // LDS($nnnn)
855
                8'hBF: MCODE_S4 = {`mcLDR,`mcrS,`mcrn,`mcrS,`mcp0,`amPC,`pcN};          // STS($nnnn)
856
//-----------------------------------------------------------------------------------------
857
                8'hE3: MCODE_S4 = {`mcADD,`mcrD,`mcrE,`mcrD,`mcp0,`amPC,`pcN};          // ADDD($nn+X)
858
                8'hEC: MCODE_S4 = {`mcLDR,`mcrE,`mcrn,`mcrD,`mcp0,`amPC,`pcN};          // LDD($nn+X)
859
                8'hED: MCODE_S4 = {`mcLDR,`mcrD,`mcrn,`mcrD,`mcp0,`amPC,`pcN};          // STD($nn+X)
860
                8'hEE: MCODE_S4 = {`mcLDN,`mcrE,`mcrn,`mcrX,`mcp0,`amPC,`pcN};          // LDX($nn+X)
861
                8'hEF: MCODE_S4 = {`mcLDR,`mcrX,`mcrn,`mcrX,`mcp0,`amPC,`pcN};          // STX($nn+X)
862
//-----------------------------------------------------------------------------------------
863
                8'hF3: MCODE_S4 = {`mcADD,`mcrD,`mcrT,`mcrD,`mcp0,`amPC,`pcN};          // ADDD($nnnn)
864
                8'hFC: MCODE_S4 = {`mcLDR,`mcrT,`mcrn,`mcrD,`mcp0,`amPC,`pcN};          // LDD($nnnn)
865
                8'hFD: MCODE_S4 = {`mcLDR,`mcrD,`mcrn,`mcrD,`mcp0,`amPC,`pcN};          // STD($nnnn)
866
                8'hFE: MCODE_S4 = {`mcLDR,`mcrT,`mcrn,`mcrX,`mcp0,`amPC,`pcN};          // LDX($nnnn)
867
                8'hFF: MCODE_S4 = {`mcLDR,`mcrX,`mcrn,`mcrX,`mcp0,`amPC,`pcN};          // STX($nnnn)
868
//-----------------------------------------------------------------------------------------
869
         default: MCODE_S4 = `MC_HALT;
870
        endcase
871
end
872
endfunction
873
 
874
 
875
function `mcwidth MCODE_S5;
876
input [7:0] opc;
877
begin
878
        case (opc)
879
//-----------------------------------------------------------------------------------------
880
                8'h3B: MCODE_S5 = {`mcINC,`mcrS,`mcrn,`mcrS,`mcpN,`amS1,`pcN};          // RTI
881
                8'h3D: MCODE_S5 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // MUL
882
//-----------------------------------------------------------------------------------------
883
                8'h60: MCODE_S5 = `MC_NEXTI;                                                                                                    // NEG($nn+X)
884
                8'h61: MCODE_S5 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // AIM#,($nn+X)
885
                8'h62: MCODE_S5 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // OIM#,($nn+X)
886
                8'h63: MCODE_S5 = `MC_NEXTI;                                                                                                    // COM($nn+X)
887
                8'h64: MCODE_S5 = `MC_NEXTI;                                                                                                    // LSR($nn+X)
888
                8'h65: MCODE_S5 = {`mcNOP,`mcrn,`mcrn,`mcrn,`mcpN,`amPC,`pcN};          // EIM#,($nn+X)
889
                8'h66: MCODE_S5 = `MC_NEXTI;                                                                                                    // ROR($nn+X)
890
                8'h67: MCODE_S5 = `MC_NEXTI;                                                                                                    // ASR($nn+X)
891
                8'h68: MCODE_S5 = `MC_NEXTI;                                                                                                    // ASL($nn+X)
892
                8'h69: MCODE_S5 = `MC_NEXTI;                                                                                                    // ROL($nn+X)
893
                8'h6A: MCODE_S5 = `MC_NEXTI;                                                                                                    // DEC($nn+X)
894
                8'h6C: MCODE_S5 = `MC_NEXTI;                                                                                                    // INC($nn+X)
895
//-----------------------------------------------------------------------------------------
896
                8'h70: MCODE_S5 = `MC_NEXTI;                                                                                                    // NEG($nnnn)
897
                8'h73: MCODE_S5 = `MC_NEXTI;                                                                                                    // COM($nnnn)
898
                8'h74: MCODE_S5 = `MC_NEXTI;                                                                                                    // LSR($nnnn)
899
                8'h75: MCODE_S5 = `MC_NEXTI;                                                                                                    // EIM#,($nnnn)
900
                8'h76: MCODE_S5 = `MC_NEXTI;                                                                                                    // ROR($nnnn)
901
                8'h77: MCODE_S5 = `MC_NEXTI;                                                                                                    // ASR($nnnn)
902
                8'h78: MCODE_S5 = `MC_NEXTI;                                                                                                    // ASL($nnnn)
903
                8'h79: MCODE_S5 = `MC_NEXTI;                                                                                                    // ROL($nnnn)
904
                8'h7A: MCODE_S5 = `MC_NEXTI;                                                                                                    // DEC($nnnn)
905
                8'h7C: MCODE_S5 = `MC_NEXTI;                                                                                                    // INC($nnnn)
906
//-----------------------------------------------------------------------------------------
907
                8'hBD: MCODE_S5 = {`mcLDN,`mcrE,`mcrn,`mcrP,`mcp0,`amPC,`pcN};          // JSR.$nnnn
908
//-----------------------------------------------------------------------------------------
909
         default: MCODE_S5 = `MC_HALT;
910
        endcase
911
end
912
endfunction
913
 
914
 
915
function `mcwidth MCODE_S6;
916
input [7:0] opc;
917
begin
918
        case (opc)
919
//-----------------------------------------------------------------------------------------
920
                8'h3B: MCODE_S6 = {`mcPUL,`mcrN,`mcrn,`mcrP,`mcpN,`amS1,`pcN};          // RTI
921
                8'h3D: MCODE_S6 = {`mcMUL,`mcrA,`mcrB,`mcrD,`mcp0,`amPC,`pcI};          // MUL
922
//-----------------------------------------------------------------------------------------
923
                8'h61: MCODE_S6 = `MC_NEXTI;                                                                                                    // AIM#,($nn+X)
924
                8'h62: MCODE_S6 = `MC_NEXTI;                                                                                                    // OIM#,($nn+X)
925
                8'h65: MCODE_S6 = `MC_NEXTI;                                                                                                    // EIM#,($nn+X)
926
//-----------------------------------------------------------------------------------------
927
         default: MCODE_S6 = `MC_HALT;
928
        endcase
929
end
930
endfunction
931
 
932
 
933
function `mcwidth MCODE_S7;
934
input [7:0] opc;
935
begin
936
        case (opc)
937
//-----------------------------------------------------------------------------------------
938
                8'h3B: MCODE_S7 = {`mcLOR,`mcrM,`mcrP,`mcrP,`mcpN,`amS1,`pcN};          // RTI
939
//-----------------------------------------------------------------------------------------
940
         default: MCODE_S7 = `MC_HALT;
941
        endcase
942
end
943
endfunction
944
 
945
 
946
function `mcwidth MCODE_S8;
947
input [7:0] opc;
948
begin
949
        case (opc)
950
//-----------------------------------------------------------------------------------------
951
                8'h3B: MCODE_S8 = {`mcINC,`mcrS,`mcrn,`mcrS,`mcpN,`amPC,`pcN};          // RTI
952
//-----------------------------------------------------------------------------------------
953
         default: MCODE_S8 = `MC_HALT;
954
        endcase
955
end
956
endfunction
957
 
958
 
959
function `mcwidth MCODE_S9;
960
input [7:0] opc;
961
begin
962
        case (opc)
963
//-----------------------------------------------------------------------------------------
964
                8'h3B: MCODE_S9 = {`mcLDN,`mcrT,`mcrn,`mcrC,`mcp0,`amPC,`pcN};          // RTI
965
//-----------------------------------------------------------------------------------------
966
         default: MCODE_S9 = `MC_HALT;
967
        endcase
968
end
969
endfunction
970
 
971
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.