BBC Basic in Z80 emulation on the mbed, USB serial terminal output only. LOAD and SAVE work on the local file system but there is no error signalling.
z80/z80ops.h@0:806c2f2a7d47, 2011-06-29 (annotated)
- Committer:
- gertk
- Date:
- Wed Jun 29 14:25:56 2011 +0000
- Revision:
- 0:806c2f2a7d47
preliminary version
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
gertk | 0:806c2f2a7d47 | 1 | /* Emulations of the Z80 CPU instruction set - part of xz80. |
gertk | 0:806c2f2a7d47 | 2 | * Copyright (C) 1994 Ian Collier. |
gertk | 0:806c2f2a7d47 | 3 | * |
gertk | 0:806c2f2a7d47 | 4 | * This program is free software; you can redistribute it and/or modify |
gertk | 0:806c2f2a7d47 | 5 | * it under the terms of the GNU General Public License as published by |
gertk | 0:806c2f2a7d47 | 6 | * the Free Software Foundation; either version 2 of the License, or |
gertk | 0:806c2f2a7d47 | 7 | * (at your option) any later version. |
gertk | 0:806c2f2a7d47 | 8 | * |
gertk | 0:806c2f2a7d47 | 9 | * This program is distributed in the hope that it will be useful, |
gertk | 0:806c2f2a7d47 | 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
gertk | 0:806c2f2a7d47 | 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
gertk | 0:806c2f2a7d47 | 12 | * GNU General Public License for more details. |
gertk | 0:806c2f2a7d47 | 13 | * |
gertk | 0:806c2f2a7d47 | 14 | * You should have received a copy of the GNU General Public License |
gertk | 0:806c2f2a7d47 | 15 | * along with this program; if not, write to the Free Software |
gertk | 0:806c2f2a7d47 | 16 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
gertk | 0:806c2f2a7d47 | 17 | */ |
gertk | 0:806c2f2a7d47 | 18 | |
gertk | 0:806c2f2a7d47 | 19 | |
gertk | 0:806c2f2a7d47 | 20 | /* nop */ |
gertk | 0:806c2f2a7d47 | 21 | case 0: |
gertk | 0:806c2f2a7d47 | 22 | break; |
gertk | 0:806c2f2a7d47 | 23 | // ld BC,nn |
gertk | 0:806c2f2a7d47 | 24 | instr(0x01,10); |
gertk | 0:806c2f2a7d47 | 25 | c=fetch(pc),pc++; |
gertk | 0:806c2f2a7d47 | 26 | b=fetch(pc),pc++; |
gertk | 0:806c2f2a7d47 | 27 | endinstr; |
gertk | 0:806c2f2a7d47 | 28 | // ld (BC),A |
gertk | 0:806c2f2a7d47 | 29 | instr(0x02,7); |
gertk | 0:806c2f2a7d47 | 30 | store(bc,a); |
gertk | 0:806c2f2a7d47 | 31 | endinstr; |
gertk | 0:806c2f2a7d47 | 32 | // inc BC |
gertk | 0:806c2f2a7d47 | 33 | instr(0x03,6); |
gertk | 0:806c2f2a7d47 | 34 | if (!++c)b++; |
gertk | 0:806c2f2a7d47 | 35 | endinstr; |
gertk | 0:806c2f2a7d47 | 36 | // inc B |
gertk | 0:806c2f2a7d47 | 37 | instr(0x04,4); |
gertk | 0:806c2f2a7d47 | 38 | inc(b); |
gertk | 0:806c2f2a7d47 | 39 | endinstr; |
gertk | 0:806c2f2a7d47 | 40 | // dec B |
gertk | 0:806c2f2a7d47 | 41 | instr(0x05,4); |
gertk | 0:806c2f2a7d47 | 42 | dec(b); |
gertk | 0:806c2f2a7d47 | 43 | endinstr; |
gertk | 0:806c2f2a7d47 | 44 | // ld B,n |
gertk | 0:806c2f2a7d47 | 45 | instr(0x06,7); |
gertk | 0:806c2f2a7d47 | 46 | b=fetch(pc),pc++; |
gertk | 0:806c2f2a7d47 | 47 | endinstr; |
gertk | 0:806c2f2a7d47 | 48 | // rlca |
gertk | 0:806c2f2a7d47 | 49 | instr(0x07,4); |
gertk | 0:806c2f2a7d47 | 50 | a=(a<<1)|(a>>7); |
gertk | 0:806c2f2a7d47 | 51 | f=(f&0xc4)|(a&0x29); |
gertk | 0:806c2f2a7d47 | 52 | endinstr; |
gertk | 0:806c2f2a7d47 | 53 | // ex AF,AF' |
gertk | 0:806c2f2a7d47 | 54 | instr(0x08,4); |
gertk | 0:806c2f2a7d47 | 55 | swap(a,a1); |
gertk | 0:806c2f2a7d47 | 56 | swap(f,f1); |
gertk | 0:806c2f2a7d47 | 57 | endinstr; |
gertk | 0:806c2f2a7d47 | 58 | // add HL,BC |
gertk | 0:806c2f2a7d47 | 59 | instr(0x09,11); |
gertk | 0:806c2f2a7d47 | 60 | addhl(b,c); |
gertk | 0:806c2f2a7d47 | 61 | endinstr; |
gertk | 0:806c2f2a7d47 | 62 | // ld A,(BC) |
gertk | 0:806c2f2a7d47 | 63 | instr(0x0a,7); |
gertk | 0:806c2f2a7d47 | 64 | a=fetch(bc); |
gertk | 0:806c2f2a7d47 | 65 | endinstr; |
gertk | 0:806c2f2a7d47 | 66 | // dec BC |
gertk | 0:806c2f2a7d47 | 67 | instr(0x0b,6); |
gertk | 0:806c2f2a7d47 | 68 | if (!c--)b--; |
gertk | 0:806c2f2a7d47 | 69 | endinstr; |
gertk | 0:806c2f2a7d47 | 70 | // inc C |
gertk | 0:806c2f2a7d47 | 71 | instr(0x0c,4); |
gertk | 0:806c2f2a7d47 | 72 | inc(c); |
gertk | 0:806c2f2a7d47 | 73 | endinstr; |
gertk | 0:806c2f2a7d47 | 74 | // dec C |
gertk | 0:806c2f2a7d47 | 75 | instr(0x0d,4); |
gertk | 0:806c2f2a7d47 | 76 | dec(c); |
gertk | 0:806c2f2a7d47 | 77 | endinstr; |
gertk | 0:806c2f2a7d47 | 78 | // ld C,n |
gertk | 0:806c2f2a7d47 | 79 | instr(0x0e,4); |
gertk | 0:806c2f2a7d47 | 80 | c=fetch(pc),pc++; |
gertk | 0:806c2f2a7d47 | 81 | endinstr; |
gertk | 0:806c2f2a7d47 | 82 | // rrca |
gertk | 0:806c2f2a7d47 | 83 | instr(0x0f,4); |
gertk | 0:806c2f2a7d47 | 84 | f=(f&0xc4)|(a&1); |
gertk | 0:806c2f2a7d47 | 85 | a=(a>>1)|(a<<7); |
gertk | 0:806c2f2a7d47 | 86 | f|=a&0x28; |
gertk | 0:806c2f2a7d47 | 87 | endinstr; |
gertk | 0:806c2f2a7d47 | 88 | // djnz |
gertk | 0:806c2f2a7d47 | 89 | instr(0x10,8); |
gertk | 0:806c2f2a7d47 | 90 | if (!--b)pc++; |
gertk | 0:806c2f2a7d47 | 91 | else jr; |
gertk | 0:806c2f2a7d47 | 92 | endinstr; |
gertk | 0:806c2f2a7d47 | 93 | // ld DE,nn |
gertk | 0:806c2f2a7d47 | 94 | instr(0x11,10); |
gertk | 0:806c2f2a7d47 | 95 | e=fetch(pc),pc++; |
gertk | 0:806c2f2a7d47 | 96 | d=fetch(pc),pc++; |
gertk | 0:806c2f2a7d47 | 97 | endinstr; |
gertk | 0:806c2f2a7d47 | 98 | // ld (DE),A |
gertk | 0:806c2f2a7d47 | 99 | instr(0x12,7); |
gertk | 0:806c2f2a7d47 | 100 | store(de,a); |
gertk | 0:806c2f2a7d47 | 101 | endinstr; |
gertk | 0:806c2f2a7d47 | 102 | // inc DE |
gertk | 0:806c2f2a7d47 | 103 | instr(0x13,6); |
gertk | 0:806c2f2a7d47 | 104 | if (!++e)d++; |
gertk | 0:806c2f2a7d47 | 105 | endinstr; |
gertk | 0:806c2f2a7d47 | 106 | // inc D |
gertk | 0:806c2f2a7d47 | 107 | instr(0x14,4); |
gertk | 0:806c2f2a7d47 | 108 | inc(d); |
gertk | 0:806c2f2a7d47 | 109 | endinstr; |
gertk | 0:806c2f2a7d47 | 110 | // dec D |
gertk | 0:806c2f2a7d47 | 111 | instr(0x15,4); |
gertk | 0:806c2f2a7d47 | 112 | dec(d); |
gertk | 0:806c2f2a7d47 | 113 | endinstr; |
gertk | 0:806c2f2a7d47 | 114 | // ld D,n |
gertk | 0:806c2f2a7d47 | 115 | instr(0x16,7); |
gertk | 0:806c2f2a7d47 | 116 | d=fetch(pc),pc++; |
gertk | 0:806c2f2a7d47 | 117 | endinstr; |
gertk | 0:806c2f2a7d47 | 118 | // rla |
gertk | 0:806c2f2a7d47 | 119 | instr(0x17,4); |
gertk | 0:806c2f2a7d47 | 120 | { |
gertk | 0:806c2f2a7d47 | 121 | int t=a>>7; |
gertk | 0:806c2f2a7d47 | 122 | a=(a<<1)|(f&1); |
gertk | 0:806c2f2a7d47 | 123 | f=(f&0xc4)|(a&0x28)|t; |
gertk | 0:806c2f2a7d47 | 124 | } |
gertk | 0:806c2f2a7d47 | 125 | endinstr; |
gertk | 0:806c2f2a7d47 | 126 | // JR |
gertk | 0:806c2f2a7d47 | 127 | instr(0x18,7); |
gertk | 0:806c2f2a7d47 | 128 | jr; |
gertk | 0:806c2f2a7d47 | 129 | endinstr; |
gertk | 0:806c2f2a7d47 | 130 | // add HL,DE |
gertk | 0:806c2f2a7d47 | 131 | instr(0x19,11); |
gertk | 0:806c2f2a7d47 | 132 | addhl(d,e); |
gertk | 0:806c2f2a7d47 | 133 | endinstr; |
gertk | 0:806c2f2a7d47 | 134 | // ld A,(DE) |
gertk | 0:806c2f2a7d47 | 135 | instr(0x1a,7); |
gertk | 0:806c2f2a7d47 | 136 | a=fetch(de); |
gertk | 0:806c2f2a7d47 | 137 | endinstr; |
gertk | 0:806c2f2a7d47 | 138 | // dec DE |
gertk | 0:806c2f2a7d47 | 139 | instr(0x1b,6); |
gertk | 0:806c2f2a7d47 | 140 | if (!e--)d--; |
gertk | 0:806c2f2a7d47 | 141 | endinstr; |
gertk | 0:806c2f2a7d47 | 142 | // inc E |
gertk | 0:806c2f2a7d47 | 143 | instr(0x1c,4); |
gertk | 0:806c2f2a7d47 | 144 | inc(e); |
gertk | 0:806c2f2a7d47 | 145 | endinstr; |
gertk | 0:806c2f2a7d47 | 146 | // dec E |
gertk | 0:806c2f2a7d47 | 147 | instr(0x1d,4); |
gertk | 0:806c2f2a7d47 | 148 | dec(e); |
gertk | 0:806c2f2a7d47 | 149 | endinstr; |
gertk | 0:806c2f2a7d47 | 150 | // ld E,n |
gertk | 0:806c2f2a7d47 | 151 | instr(0x1e,4); |
gertk | 0:806c2f2a7d47 | 152 | e=fetch(pc),pc++; |
gertk | 0:806c2f2a7d47 | 153 | endinstr; |
gertk | 0:806c2f2a7d47 | 154 | // rra |
gertk | 0:806c2f2a7d47 | 155 | instr(0x1f,4); |
gertk | 0:806c2f2a7d47 | 156 | { |
gertk | 0:806c2f2a7d47 | 157 | int t=a&1; |
gertk | 0:806c2f2a7d47 | 158 | a=(a>>1)|(f<<7); |
gertk | 0:806c2f2a7d47 | 159 | f=(f&0xc4)|(a&0x28)|t; |
gertk | 0:806c2f2a7d47 | 160 | } |
gertk | 0:806c2f2a7d47 | 161 | endinstr; |
gertk | 0:806c2f2a7d47 | 162 | // jr NZ |
gertk | 0:806c2f2a7d47 | 163 | instr(0x20,7); |
gertk | 0:806c2f2a7d47 | 164 | if (f&0x40)pc++; |
gertk | 0:806c2f2a7d47 | 165 | else jr; |
gertk | 0:806c2f2a7d47 | 166 | endinstr; |
gertk | 0:806c2f2a7d47 | 167 | // ld HL,nn |
gertk | 0:806c2f2a7d47 | 168 | instr(0x21,10); |
gertk | 0:806c2f2a7d47 | 169 | if (!ixoriy) { |
gertk | 0:806c2f2a7d47 | 170 | l=fetch(pc),pc++; |
gertk | 0:806c2f2a7d47 | 171 | h=fetch(pc),pc++; |
gertk | 0:806c2f2a7d47 | 172 | } else { |
gertk | 0:806c2f2a7d47 | 173 | if (ixoriy==1) |
gertk | 0:806c2f2a7d47 | 174 | ix=fetch2(pc); |
gertk | 0:806c2f2a7d47 | 175 | else iy=fetch2(pc); |
gertk | 0:806c2f2a7d47 | 176 | pc+=2; |
gertk | 0:806c2f2a7d47 | 177 | } |
gertk | 0:806c2f2a7d47 | 178 | endinstr; |
gertk | 0:806c2f2a7d47 | 179 | // ld (nn),HL |
gertk | 0:806c2f2a7d47 | 180 | instr(0x22,16); |
gertk | 0:806c2f2a7d47 | 181 | { |
gertk | 0:806c2f2a7d47 | 182 | unsigned short addr=fetch2(pc); |
gertk | 0:806c2f2a7d47 | 183 | pc+=2; |
gertk | 0:806c2f2a7d47 | 184 | if (!ixoriy) store2b(addr,h,l); |
gertk | 0:806c2f2a7d47 | 185 | else if (ixoriy==1)store2(addr,ix); |
gertk | 0:806c2f2a7d47 | 186 | else store2(addr,iy); |
gertk | 0:806c2f2a7d47 | 187 | } |
gertk | 0:806c2f2a7d47 | 188 | endinstr; |
gertk | 0:806c2f2a7d47 | 189 | // inc HL |
gertk | 0:806c2f2a7d47 | 190 | instr(0x23,6); |
gertk | 0:806c2f2a7d47 | 191 | if (!ixoriy) { |
gertk | 0:806c2f2a7d47 | 192 | if (!++l)h++; |
gertk | 0:806c2f2a7d47 | 193 | } else if (ixoriy==1)ix++; |
gertk | 0:806c2f2a7d47 | 194 | else iy++; |
gertk | 0:806c2f2a7d47 | 195 | endinstr; |
gertk | 0:806c2f2a7d47 | 196 | // inc H |
gertk | 0:806c2f2a7d47 | 197 | instr(0x24,4); |
gertk | 0:806c2f2a7d47 | 198 | if (ixoriy==0)inc(h); |
gertk | 0:806c2f2a7d47 | 199 | else { |
gertk | 0:806c2f2a7d47 | 200 | unsigned char t; |
gertk | 0:806c2f2a7d47 | 201 | t=(ixoriy==1?ix:iy)>>8; |
gertk | 0:806c2f2a7d47 | 202 | inc(t); |
gertk | 0:806c2f2a7d47 | 203 | if (ixoriy==1)ix=(ix&0xff)|(t<<8); |
gertk | 0:806c2f2a7d47 | 204 | else iy=(iy&0xff)|(t<<8); |
gertk | 0:806c2f2a7d47 | 205 | } |
gertk | 0:806c2f2a7d47 | 206 | endinstr; |
gertk | 0:806c2f2a7d47 | 207 | // dec H |
gertk | 0:806c2f2a7d47 | 208 | instr(0x25,4); |
gertk | 0:806c2f2a7d47 | 209 | if (ixoriy==0)dec(h); |
gertk | 0:806c2f2a7d47 | 210 | else { |
gertk | 0:806c2f2a7d47 | 211 | unsigned char t; |
gertk | 0:806c2f2a7d47 | 212 | t=(ixoriy==1?ix:iy)>>8; |
gertk | 0:806c2f2a7d47 | 213 | dec(t); |
gertk | 0:806c2f2a7d47 | 214 | if (ixoriy==1)ix=(ix&0xff)|(t<<8); |
gertk | 0:806c2f2a7d47 | 215 | else iy=(iy&0xff)|(t<<8); |
gertk | 0:806c2f2a7d47 | 216 | } |
gertk | 0:806c2f2a7d47 | 217 | endinstr; |
gertk | 0:806c2f2a7d47 | 218 | // ld H,n |
gertk | 0:806c2f2a7d47 | 219 | instr(0x26,7); |
gertk | 0:806c2f2a7d47 | 220 | setxh(fetch(pc)); |
gertk | 0:806c2f2a7d47 | 221 | pc++; |
gertk | 0:806c2f2a7d47 | 222 | endinstr; |
gertk | 0:806c2f2a7d47 | 223 | // daa |
gertk | 0:806c2f2a7d47 | 224 | instr(0x27,4); |
gertk | 0:806c2f2a7d47 | 225 | { |
gertk | 0:806c2f2a7d47 | 226 | unsigned char incr=0, carry=cy; |
gertk | 0:806c2f2a7d47 | 227 | if ((f&0x10) || (a&0x0f)>9) incr=6; |
gertk | 0:806c2f2a7d47 | 228 | if ((f&1) || (a>>4)>9) incr|=0x60; |
gertk | 0:806c2f2a7d47 | 229 | if (f&2) suba(incr,0); |
gertk | 0:806c2f2a7d47 | 230 | |
gertk | 0:806c2f2a7d47 | 231 | else { |
gertk | 0:806c2f2a7d47 | 232 | if (a>0x90 && (a&15)>9)incr|=0x60; |
gertk | 0:806c2f2a7d47 | 233 | adda(incr,0); |
gertk | 0:806c2f2a7d47 | 234 | } |
gertk | 0:806c2f2a7d47 | 235 | f=((f|carry)&0xfb)|parity(a); |
gertk | 0:806c2f2a7d47 | 236 | } |
gertk | 0:806c2f2a7d47 | 237 | endinstr; |
gertk | 0:806c2f2a7d47 | 238 | // jr Z |
gertk | 0:806c2f2a7d47 | 239 | instr(0x28,7); |
gertk | 0:806c2f2a7d47 | 240 | if (f&0x40)jr; |
gertk | 0:806c2f2a7d47 | 241 | else pc++; |
gertk | 0:806c2f2a7d47 | 242 | endinstr; |
gertk | 0:806c2f2a7d47 | 243 | // add HL,HL |
gertk | 0:806c2f2a7d47 | 244 | instr(0x29,11); |
gertk | 0:806c2f2a7d47 | 245 | if (!ixoriy)addhl(h,l); |
gertk | 0:806c2f2a7d47 | 246 | else if (ixoriy==1)addhl((ix>>8),(ix&0xff)); |
gertk | 0:806c2f2a7d47 | 247 | else addhl((iy>>8),(iy&0xff)); |
gertk | 0:806c2f2a7d47 | 248 | endinstr; |
gertk | 0:806c2f2a7d47 | 249 | // ld HL,(nn) |
gertk | 0:806c2f2a7d47 | 250 | instr(0x2a,16); |
gertk | 0:806c2f2a7d47 | 251 | { |
gertk | 0:806c2f2a7d47 | 252 | unsigned short addr=fetch2(pc); |
gertk | 0:806c2f2a7d47 | 253 | pc+=2; |
gertk | 0:806c2f2a7d47 | 254 | if (!ixoriy) { |
gertk | 0:806c2f2a7d47 | 255 | l=fetch(addr); |
gertk | 0:806c2f2a7d47 | 256 | h=fetch(addr+1); |
gertk | 0:806c2f2a7d47 | 257 | } else if (ixoriy==1)ix=fetch2(addr); |
gertk | 0:806c2f2a7d47 | 258 | else iy=fetch2(addr); |
gertk | 0:806c2f2a7d47 | 259 | } |
gertk | 0:806c2f2a7d47 | 260 | endinstr; |
gertk | 0:806c2f2a7d47 | 261 | // dec HL |
gertk | 0:806c2f2a7d47 | 262 | instr(0x2b,6); |
gertk | 0:806c2f2a7d47 | 263 | if (!ixoriy) { |
gertk | 0:806c2f2a7d47 | 264 | if (!l--)h--; |
gertk | 0:806c2f2a7d47 | 265 | } else if (ixoriy==1)ix--; |
gertk | 0:806c2f2a7d47 | 266 | else iy--; |
gertk | 0:806c2f2a7d47 | 267 | endinstr; |
gertk | 0:806c2f2a7d47 | 268 | // inc L |
gertk | 0:806c2f2a7d47 | 269 | instr(0x2c,4); |
gertk | 0:806c2f2a7d47 | 270 | if (!ixoriy)inc(l); |
gertk | 0:806c2f2a7d47 | 271 | else { |
gertk | 0:806c2f2a7d47 | 272 | unsigned char t; |
gertk | 0:806c2f2a7d47 | 273 | t=(ixoriy==1?ix:iy); |
gertk | 0:806c2f2a7d47 | 274 | inc(t); |
gertk | 0:806c2f2a7d47 | 275 | if (ixoriy==1)ix=(ix&0xff00)|t; |
gertk | 0:806c2f2a7d47 | 276 | else iy=(iy&0xff00)|t; |
gertk | 0:806c2f2a7d47 | 277 | } |
gertk | 0:806c2f2a7d47 | 278 | endinstr; |
gertk | 0:806c2f2a7d47 | 279 | // dec L |
gertk | 0:806c2f2a7d47 | 280 | instr(0x2d,4); |
gertk | 0:806c2f2a7d47 | 281 | if (!ixoriy)dec(l); |
gertk | 0:806c2f2a7d47 | 282 | else { |
gertk | 0:806c2f2a7d47 | 283 | unsigned char t; |
gertk | 0:806c2f2a7d47 | 284 | t=(ixoriy==1?ix:iy); |
gertk | 0:806c2f2a7d47 | 285 | dec(t); |
gertk | 0:806c2f2a7d47 | 286 | if (ixoriy==1)ix=(ix&0xff00)|t; |
gertk | 0:806c2f2a7d47 | 287 | else iy=(iy&0xff00)|t; |
gertk | 0:806c2f2a7d47 | 288 | } |
gertk | 0:806c2f2a7d47 | 289 | endinstr; |
gertk | 0:806c2f2a7d47 | 290 | // ld L,n |
gertk | 0:806c2f2a7d47 | 291 | instr(0x2e,4); |
gertk | 0:806c2f2a7d47 | 292 | setxl(fetch(pc)); |
gertk | 0:806c2f2a7d47 | 293 | pc++; |
gertk | 0:806c2f2a7d47 | 294 | endinstr; |
gertk | 0:806c2f2a7d47 | 295 | // cpl |
gertk | 0:806c2f2a7d47 | 296 | instr(0x2f,4); |
gertk | 0:806c2f2a7d47 | 297 | a=~a; |
gertk | 0:806c2f2a7d47 | 298 | f=(f&0xc5)|(a&0x28)|0x12; |
gertk | 0:806c2f2a7d47 | 299 | endinstr; |
gertk | 0:806c2f2a7d47 | 300 | // jr NC |
gertk | 0:806c2f2a7d47 | 301 | instr(0x30,7); |
gertk | 0:806c2f2a7d47 | 302 | if (f&1)pc++; |
gertk | 0:806c2f2a7d47 | 303 | else jr; |
gertk | 0:806c2f2a7d47 | 304 | endinstr; |
gertk | 0:806c2f2a7d47 | 305 | // ld SP,nn |
gertk | 0:806c2f2a7d47 | 306 | instr(0x31,10); |
gertk | 0:806c2f2a7d47 | 307 | sp=fetch2(pc); |
gertk | 0:806c2f2a7d47 | 308 | pc+=2; |
gertk | 0:806c2f2a7d47 | 309 | endinstr; |
gertk | 0:806c2f2a7d47 | 310 | // ld (nn),A |
gertk | 0:806c2f2a7d47 | 311 | instr(0x32,13); |
gertk | 0:806c2f2a7d47 | 312 | { |
gertk | 0:806c2f2a7d47 | 313 | unsigned short addr=fetch2(pc); |
gertk | 0:806c2f2a7d47 | 314 | pc+=2; |
gertk | 0:806c2f2a7d47 | 315 | store(addr,a); |
gertk | 0:806c2f2a7d47 | 316 | } |
gertk | 0:806c2f2a7d47 | 317 | endinstr; |
gertk | 0:806c2f2a7d47 | 318 | // inc SP |
gertk | 0:806c2f2a7d47 | 319 | instr(0x33,6); |
gertk | 0:806c2f2a7d47 | 320 | sp++; |
gertk | 0:806c2f2a7d47 | 321 | endinstr; |
gertk | 0:806c2f2a7d47 | 322 | // inc (HL) |
gertk | 0:806c2f2a7d47 | 323 | HLinstr(0x34); |
gertk | 0:806c2f2a7d47 | 324 | { |
gertk | 0:806c2f2a7d47 | 325 | unsigned char t=fetch(addr); |
gertk | 0:806c2f2a7d47 | 326 | inc(t); |
gertk | 0:806c2f2a7d47 | 327 | store(addr,t); |
gertk | 0:806c2f2a7d47 | 328 | } |
gertk | 0:806c2f2a7d47 | 329 | endinstr; |
gertk | 0:806c2f2a7d47 | 330 | // dec (HL) |
gertk | 0:806c2f2a7d47 | 331 | HLinstr(0x35); |
gertk | 0:806c2f2a7d47 | 332 | { |
gertk | 0:806c2f2a7d47 | 333 | unsigned char t=fetch(addr); |
gertk | 0:806c2f2a7d47 | 334 | dec(t); |
gertk | 0:806c2f2a7d47 | 335 | store(addr,t); |
gertk | 0:806c2f2a7d47 | 336 | } |
gertk | 0:806c2f2a7d47 | 337 | endinstr; |
gertk | 0:806c2f2a7d47 | 338 | // ld (HL),n |
gertk | 0:806c2f2a7d47 | 339 | HLinstr(0x36); |
gertk | 0:806c2f2a7d47 | 340 | store(addr,fetch(pc)); |
gertk | 0:806c2f2a7d47 | 341 | pc++; |
gertk | 0:806c2f2a7d47 | 342 | endinstr; |
gertk | 0:806c2f2a7d47 | 343 | // scf |
gertk | 0:806c2f2a7d47 | 344 | instr(0x37,4); |
gertk | 0:806c2f2a7d47 | 345 | f=(f&0xc4)|1|(a&0x28); |
gertk | 0:806c2f2a7d47 | 346 | endinstr; |
gertk | 0:806c2f2a7d47 | 347 | // jr C |
gertk | 0:806c2f2a7d47 | 348 | instr(0x38,7); |
gertk | 0:806c2f2a7d47 | 349 | if (f&1)jr; |
gertk | 0:806c2f2a7d47 | 350 | else pc++; |
gertk | 0:806c2f2a7d47 | 351 | endinstr; |
gertk | 0:806c2f2a7d47 | 352 | // add HL,SP |
gertk | 0:806c2f2a7d47 | 353 | instr(0x39,11); |
gertk | 0:806c2f2a7d47 | 354 | addhl((sp>>8),(sp&0xff)); |
gertk | 0:806c2f2a7d47 | 355 | endinstr; |
gertk | 0:806c2f2a7d47 | 356 | // ld A,(nn) |
gertk | 0:806c2f2a7d47 | 357 | instr(0x3a,13); |
gertk | 0:806c2f2a7d47 | 358 | { |
gertk | 0:806c2f2a7d47 | 359 | unsigned short addr=fetch2(pc); |
gertk | 0:806c2f2a7d47 | 360 | pc+=2; |
gertk | 0:806c2f2a7d47 | 361 | a=fetch(addr); |
gertk | 0:806c2f2a7d47 | 362 | } |
gertk | 0:806c2f2a7d47 | 363 | endinstr; |
gertk | 0:806c2f2a7d47 | 364 | // dec SP |
gertk | 0:806c2f2a7d47 | 365 | instr(0x3b,6); |
gertk | 0:806c2f2a7d47 | 366 | sp--; |
gertk | 0:806c2f2a7d47 | 367 | endinstr; |
gertk | 0:806c2f2a7d47 | 368 | // inc A |
gertk | 0:806c2f2a7d47 | 369 | instr(0x3c,4); |
gertk | 0:806c2f2a7d47 | 370 | inc(a); |
gertk | 0:806c2f2a7d47 | 371 | endinstr; |
gertk | 0:806c2f2a7d47 | 372 | // dec A |
gertk | 0:806c2f2a7d47 | 373 | instr(0x3d,4); |
gertk | 0:806c2f2a7d47 | 374 | dec(a); |
gertk | 0:806c2f2a7d47 | 375 | endinstr; |
gertk | 0:806c2f2a7d47 | 376 | // ld A,n |
gertk | 0:806c2f2a7d47 | 377 | instr(0x3e,4); |
gertk | 0:806c2f2a7d47 | 378 | a=fetch(pc),pc++; |
gertk | 0:806c2f2a7d47 | 379 | endinstr; |
gertk | 0:806c2f2a7d47 | 380 | // ccf |
gertk | 0:806c2f2a7d47 | 381 | instr(0x3f,4); |
gertk | 0:806c2f2a7d47 | 382 | f=(f&0xc4)|(cy^1)|(cy<<4)|(a&0x28); |
gertk | 0:806c2f2a7d47 | 383 | endinstr; |
gertk | 0:806c2f2a7d47 | 384 | // ld B,B |
gertk | 0:806c2f2a7d47 | 385 | instr(0x40,4); |
gertk | 0:806c2f2a7d47 | 386 | /* ld b,b */ |
gertk | 0:806c2f2a7d47 | 387 | endinstr; |
gertk | 0:806c2f2a7d47 | 388 | |
gertk | 0:806c2f2a7d47 | 389 | instr(0x41,4); |
gertk | 0:806c2f2a7d47 | 390 | b=c; |
gertk | 0:806c2f2a7d47 | 391 | endinstr; |
gertk | 0:806c2f2a7d47 | 392 | |
gertk | 0:806c2f2a7d47 | 393 | instr(0x42,4); |
gertk | 0:806c2f2a7d47 | 394 | b=d; |
gertk | 0:806c2f2a7d47 | 395 | endinstr; |
gertk | 0:806c2f2a7d47 | 396 | |
gertk | 0:806c2f2a7d47 | 397 | instr(0x43,4); |
gertk | 0:806c2f2a7d47 | 398 | b=e; |
gertk | 0:806c2f2a7d47 | 399 | endinstr; |
gertk | 0:806c2f2a7d47 | 400 | |
gertk | 0:806c2f2a7d47 | 401 | instr(0x44,4); |
gertk | 0:806c2f2a7d47 | 402 | b=xh; |
gertk | 0:806c2f2a7d47 | 403 | endinstr; |
gertk | 0:806c2f2a7d47 | 404 | |
gertk | 0:806c2f2a7d47 | 405 | instr(0x45,4); |
gertk | 0:806c2f2a7d47 | 406 | b=xl; |
gertk | 0:806c2f2a7d47 | 407 | endinstr; |
gertk | 0:806c2f2a7d47 | 408 | |
gertk | 0:806c2f2a7d47 | 409 | HLinstr(0x46); |
gertk | 0:806c2f2a7d47 | 410 | b=fetch(addr); |
gertk | 0:806c2f2a7d47 | 411 | endinstr; |
gertk | 0:806c2f2a7d47 | 412 | |
gertk | 0:806c2f2a7d47 | 413 | instr(0x47,4); |
gertk | 0:806c2f2a7d47 | 414 | b=a; |
gertk | 0:806c2f2a7d47 | 415 | endinstr; |
gertk | 0:806c2f2a7d47 | 416 | |
gertk | 0:806c2f2a7d47 | 417 | instr(0x48,4); |
gertk | 0:806c2f2a7d47 | 418 | c=b; |
gertk | 0:806c2f2a7d47 | 419 | endinstr; |
gertk | 0:806c2f2a7d47 | 420 | |
gertk | 0:806c2f2a7d47 | 421 | instr(0x49,4); |
gertk | 0:806c2f2a7d47 | 422 | /* ld c,c */ |
gertk | 0:806c2f2a7d47 | 423 | endinstr; |
gertk | 0:806c2f2a7d47 | 424 | |
gertk | 0:806c2f2a7d47 | 425 | instr(0x4a,4); |
gertk | 0:806c2f2a7d47 | 426 | c=d; |
gertk | 0:806c2f2a7d47 | 427 | endinstr; |
gertk | 0:806c2f2a7d47 | 428 | |
gertk | 0:806c2f2a7d47 | 429 | instr(0x4b,4); |
gertk | 0:806c2f2a7d47 | 430 | c=e; |
gertk | 0:806c2f2a7d47 | 431 | endinstr; |
gertk | 0:806c2f2a7d47 | 432 | |
gertk | 0:806c2f2a7d47 | 433 | instr(0x4c,4); |
gertk | 0:806c2f2a7d47 | 434 | c=xh; |
gertk | 0:806c2f2a7d47 | 435 | endinstr; |
gertk | 0:806c2f2a7d47 | 436 | |
gertk | 0:806c2f2a7d47 | 437 | instr(0x4d,4); |
gertk | 0:806c2f2a7d47 | 438 | c=xl; |
gertk | 0:806c2f2a7d47 | 439 | endinstr; |
gertk | 0:806c2f2a7d47 | 440 | |
gertk | 0:806c2f2a7d47 | 441 | HLinstr(0x4e); |
gertk | 0:806c2f2a7d47 | 442 | c=fetch(addr); |
gertk | 0:806c2f2a7d47 | 443 | endinstr; |
gertk | 0:806c2f2a7d47 | 444 | |
gertk | 0:806c2f2a7d47 | 445 | instr(0x4f,4); |
gertk | 0:806c2f2a7d47 | 446 | c=a; |
gertk | 0:806c2f2a7d47 | 447 | endinstr; |
gertk | 0:806c2f2a7d47 | 448 | |
gertk | 0:806c2f2a7d47 | 449 | instr(0x50,4); |
gertk | 0:806c2f2a7d47 | 450 | d=b; |
gertk | 0:806c2f2a7d47 | 451 | endinstr; |
gertk | 0:806c2f2a7d47 | 452 | |
gertk | 0:806c2f2a7d47 | 453 | instr(0x51,4); |
gertk | 0:806c2f2a7d47 | 454 | d=c; |
gertk | 0:806c2f2a7d47 | 455 | endinstr; |
gertk | 0:806c2f2a7d47 | 456 | |
gertk | 0:806c2f2a7d47 | 457 | instr(0x52,4); |
gertk | 0:806c2f2a7d47 | 458 | /* ld d,d */ |
gertk | 0:806c2f2a7d47 | 459 | endinstr; |
gertk | 0:806c2f2a7d47 | 460 | |
gertk | 0:806c2f2a7d47 | 461 | instr(0x53,4); |
gertk | 0:806c2f2a7d47 | 462 | d=e; |
gertk | 0:806c2f2a7d47 | 463 | endinstr; |
gertk | 0:806c2f2a7d47 | 464 | |
gertk | 0:806c2f2a7d47 | 465 | instr(0x54,4); |
gertk | 0:806c2f2a7d47 | 466 | d=xh; |
gertk | 0:806c2f2a7d47 | 467 | endinstr; |
gertk | 0:806c2f2a7d47 | 468 | |
gertk | 0:806c2f2a7d47 | 469 | instr(0x55,4); |
gertk | 0:806c2f2a7d47 | 470 | d=xl; |
gertk | 0:806c2f2a7d47 | 471 | endinstr; |
gertk | 0:806c2f2a7d47 | 472 | |
gertk | 0:806c2f2a7d47 | 473 | HLinstr(0x56); |
gertk | 0:806c2f2a7d47 | 474 | d=fetch(addr); |
gertk | 0:806c2f2a7d47 | 475 | endinstr; |
gertk | 0:806c2f2a7d47 | 476 | |
gertk | 0:806c2f2a7d47 | 477 | instr(0x57,4); |
gertk | 0:806c2f2a7d47 | 478 | d=a; |
gertk | 0:806c2f2a7d47 | 479 | endinstr; |
gertk | 0:806c2f2a7d47 | 480 | |
gertk | 0:806c2f2a7d47 | 481 | instr(0x58,4); |
gertk | 0:806c2f2a7d47 | 482 | e=b; |
gertk | 0:806c2f2a7d47 | 483 | endinstr; |
gertk | 0:806c2f2a7d47 | 484 | |
gertk | 0:806c2f2a7d47 | 485 | instr(0x59,4); |
gertk | 0:806c2f2a7d47 | 486 | e=c; |
gertk | 0:806c2f2a7d47 | 487 | endinstr; |
gertk | 0:806c2f2a7d47 | 488 | |
gertk | 0:806c2f2a7d47 | 489 | instr(0x5a,4); |
gertk | 0:806c2f2a7d47 | 490 | e=d; |
gertk | 0:806c2f2a7d47 | 491 | endinstr; |
gertk | 0:806c2f2a7d47 | 492 | |
gertk | 0:806c2f2a7d47 | 493 | instr(0x5b,4); |
gertk | 0:806c2f2a7d47 | 494 | /* ld e,e */ |
gertk | 0:806c2f2a7d47 | 495 | endinstr; |
gertk | 0:806c2f2a7d47 | 496 | |
gertk | 0:806c2f2a7d47 | 497 | instr(0x5c,4); |
gertk | 0:806c2f2a7d47 | 498 | e=xh; |
gertk | 0:806c2f2a7d47 | 499 | endinstr; |
gertk | 0:806c2f2a7d47 | 500 | |
gertk | 0:806c2f2a7d47 | 501 | instr(0x5d,4); |
gertk | 0:806c2f2a7d47 | 502 | e=xl; |
gertk | 0:806c2f2a7d47 | 503 | endinstr; |
gertk | 0:806c2f2a7d47 | 504 | |
gertk | 0:806c2f2a7d47 | 505 | HLinstr(0x5e); |
gertk | 0:806c2f2a7d47 | 506 | e=fetch(addr); |
gertk | 0:806c2f2a7d47 | 507 | endinstr; |
gertk | 0:806c2f2a7d47 | 508 | |
gertk | 0:806c2f2a7d47 | 509 | instr(0x5f,4); |
gertk | 0:806c2f2a7d47 | 510 | e=a; |
gertk | 0:806c2f2a7d47 | 511 | endinstr; |
gertk | 0:806c2f2a7d47 | 512 | |
gertk | 0:806c2f2a7d47 | 513 | instr(0x60,4); |
gertk | 0:806c2f2a7d47 | 514 | setxh(b); |
gertk | 0:806c2f2a7d47 | 515 | endinstr; |
gertk | 0:806c2f2a7d47 | 516 | |
gertk | 0:806c2f2a7d47 | 517 | instr(0x61,4); |
gertk | 0:806c2f2a7d47 | 518 | setxh(c); |
gertk | 0:806c2f2a7d47 | 519 | endinstr; |
gertk | 0:806c2f2a7d47 | 520 | |
gertk | 0:806c2f2a7d47 | 521 | instr(0x62,4); |
gertk | 0:806c2f2a7d47 | 522 | setxh(d); |
gertk | 0:806c2f2a7d47 | 523 | endinstr; |
gertk | 0:806c2f2a7d47 | 524 | |
gertk | 0:806c2f2a7d47 | 525 | instr(0x63,4); |
gertk | 0:806c2f2a7d47 | 526 | setxh(e); |
gertk | 0:806c2f2a7d47 | 527 | endinstr; |
gertk | 0:806c2f2a7d47 | 528 | |
gertk | 0:806c2f2a7d47 | 529 | instr(0x64,4); |
gertk | 0:806c2f2a7d47 | 530 | /* ld h,h */ |
gertk | 0:806c2f2a7d47 | 531 | endinstr; |
gertk | 0:806c2f2a7d47 | 532 | |
gertk | 0:806c2f2a7d47 | 533 | instr(0x65,4); |
gertk | 0:806c2f2a7d47 | 534 | setxh(xl); |
gertk | 0:806c2f2a7d47 | 535 | endinstr; |
gertk | 0:806c2f2a7d47 | 536 | |
gertk | 0:806c2f2a7d47 | 537 | HLinstr(0x66); |
gertk | 0:806c2f2a7d47 | 538 | h=fetch(addr); |
gertk | 0:806c2f2a7d47 | 539 | endinstr; |
gertk | 0:806c2f2a7d47 | 540 | |
gertk | 0:806c2f2a7d47 | 541 | instr(0x67,4); |
gertk | 0:806c2f2a7d47 | 542 | setxh(a); |
gertk | 0:806c2f2a7d47 | 543 | endinstr; |
gertk | 0:806c2f2a7d47 | 544 | |
gertk | 0:806c2f2a7d47 | 545 | instr(0x68,4); |
gertk | 0:806c2f2a7d47 | 546 | setxl(b); |
gertk | 0:806c2f2a7d47 | 547 | endinstr; |
gertk | 0:806c2f2a7d47 | 548 | |
gertk | 0:806c2f2a7d47 | 549 | instr(0x69,4); |
gertk | 0:806c2f2a7d47 | 550 | setxl(c); |
gertk | 0:806c2f2a7d47 | 551 | endinstr; |
gertk | 0:806c2f2a7d47 | 552 | |
gertk | 0:806c2f2a7d47 | 553 | instr(0x6a,4); |
gertk | 0:806c2f2a7d47 | 554 | setxl(d); |
gertk | 0:806c2f2a7d47 | 555 | endinstr; |
gertk | 0:806c2f2a7d47 | 556 | |
gertk | 0:806c2f2a7d47 | 557 | instr(0x6b,4); |
gertk | 0:806c2f2a7d47 | 558 | setxl(e); |
gertk | 0:806c2f2a7d47 | 559 | endinstr; |
gertk | 0:806c2f2a7d47 | 560 | |
gertk | 0:806c2f2a7d47 | 561 | instr(0x6c,4); |
gertk | 0:806c2f2a7d47 | 562 | setxl(xh); |
gertk | 0:806c2f2a7d47 | 563 | endinstr; |
gertk | 0:806c2f2a7d47 | 564 | |
gertk | 0:806c2f2a7d47 | 565 | instr(0x6d,4); |
gertk | 0:806c2f2a7d47 | 566 | /* ld l,l */ |
gertk | 0:806c2f2a7d47 | 567 | endinstr; |
gertk | 0:806c2f2a7d47 | 568 | |
gertk | 0:806c2f2a7d47 | 569 | HLinstr(0x6e); |
gertk | 0:806c2f2a7d47 | 570 | l=fetch(addr); |
gertk | 0:806c2f2a7d47 | 571 | endinstr; |
gertk | 0:806c2f2a7d47 | 572 | |
gertk | 0:806c2f2a7d47 | 573 | instr(0x6f,4); |
gertk | 0:806c2f2a7d47 | 574 | setxl(a); |
gertk | 0:806c2f2a7d47 | 575 | endinstr; |
gertk | 0:806c2f2a7d47 | 576 | |
gertk | 0:806c2f2a7d47 | 577 | HLinstr(0x70); |
gertk | 0:806c2f2a7d47 | 578 | store(addr,b); |
gertk | 0:806c2f2a7d47 | 579 | endinstr; |
gertk | 0:806c2f2a7d47 | 580 | |
gertk | 0:806c2f2a7d47 | 581 | HLinstr(0x71); |
gertk | 0:806c2f2a7d47 | 582 | store(addr,c); |
gertk | 0:806c2f2a7d47 | 583 | endinstr; |
gertk | 0:806c2f2a7d47 | 584 | |
gertk | 0:806c2f2a7d47 | 585 | HLinstr(0x72); |
gertk | 0:806c2f2a7d47 | 586 | store(addr,d); |
gertk | 0:806c2f2a7d47 | 587 | endinstr; |
gertk | 0:806c2f2a7d47 | 588 | |
gertk | 0:806c2f2a7d47 | 589 | HLinstr(0x73); |
gertk | 0:806c2f2a7d47 | 590 | store(addr,e); |
gertk | 0:806c2f2a7d47 | 591 | endinstr; |
gertk | 0:806c2f2a7d47 | 592 | |
gertk | 0:806c2f2a7d47 | 593 | HLinstr(0x74); |
gertk | 0:806c2f2a7d47 | 594 | store(addr,h); |
gertk | 0:806c2f2a7d47 | 595 | endinstr; |
gertk | 0:806c2f2a7d47 | 596 | |
gertk | 0:806c2f2a7d47 | 597 | HLinstr(0x75); |
gertk | 0:806c2f2a7d47 | 598 | store(addr,l); |
gertk | 0:806c2f2a7d47 | 599 | endinstr; |
gertk | 0:806c2f2a7d47 | 600 | |
gertk | 0:806c2f2a7d47 | 601 | // HALT |
gertk | 0:806c2f2a7d47 | 602 | instr(0x76,4); |
gertk | 0:806c2f2a7d47 | 603 | pc--; /* keep nopping until int */ |
gertk | 0:806c2f2a7d47 | 604 | endinstr; |
gertk | 0:806c2f2a7d47 | 605 | |
gertk | 0:806c2f2a7d47 | 606 | HLinstr(0x77); |
gertk | 0:806c2f2a7d47 | 607 | store(addr,a); |
gertk | 0:806c2f2a7d47 | 608 | endinstr; |
gertk | 0:806c2f2a7d47 | 609 | |
gertk | 0:806c2f2a7d47 | 610 | instr(0x78,4); |
gertk | 0:806c2f2a7d47 | 611 | a=b; |
gertk | 0:806c2f2a7d47 | 612 | endinstr; |
gertk | 0:806c2f2a7d47 | 613 | |
gertk | 0:806c2f2a7d47 | 614 | instr(0x79,4); |
gertk | 0:806c2f2a7d47 | 615 | a=c; |
gertk | 0:806c2f2a7d47 | 616 | endinstr; |
gertk | 0:806c2f2a7d47 | 617 | |
gertk | 0:806c2f2a7d47 | 618 | instr(0x7a,4); |
gertk | 0:806c2f2a7d47 | 619 | a=d; |
gertk | 0:806c2f2a7d47 | 620 | endinstr; |
gertk | 0:806c2f2a7d47 | 621 | |
gertk | 0:806c2f2a7d47 | 622 | instr(0x7b,4); |
gertk | 0:806c2f2a7d47 | 623 | a=e; |
gertk | 0:806c2f2a7d47 | 624 | endinstr; |
gertk | 0:806c2f2a7d47 | 625 | |
gertk | 0:806c2f2a7d47 | 626 | instr(0x7c,4); |
gertk | 0:806c2f2a7d47 | 627 | a=xh; |
gertk | 0:806c2f2a7d47 | 628 | endinstr; |
gertk | 0:806c2f2a7d47 | 629 | |
gertk | 0:806c2f2a7d47 | 630 | instr(0x7d,4); |
gertk | 0:806c2f2a7d47 | 631 | a=xl; |
gertk | 0:806c2f2a7d47 | 632 | endinstr; |
gertk | 0:806c2f2a7d47 | 633 | |
gertk | 0:806c2f2a7d47 | 634 | HLinstr(0x7e); |
gertk | 0:806c2f2a7d47 | 635 | a=fetch(addr); |
gertk | 0:806c2f2a7d47 | 636 | endinstr; |
gertk | 0:806c2f2a7d47 | 637 | |
gertk | 0:806c2f2a7d47 | 638 | instr(0x7f,4); |
gertk | 0:806c2f2a7d47 | 639 | /* ld a,a */ |
gertk | 0:806c2f2a7d47 | 640 | endinstr; |
gertk | 0:806c2f2a7d47 | 641 | |
gertk | 0:806c2f2a7d47 | 642 | instr(0x80,4); |
gertk | 0:806c2f2a7d47 | 643 | adda(b,0); |
gertk | 0:806c2f2a7d47 | 644 | endinstr; |
gertk | 0:806c2f2a7d47 | 645 | |
gertk | 0:806c2f2a7d47 | 646 | instr(0x81,4); |
gertk | 0:806c2f2a7d47 | 647 | adda(c,0); |
gertk | 0:806c2f2a7d47 | 648 | endinstr; |
gertk | 0:806c2f2a7d47 | 649 | |
gertk | 0:806c2f2a7d47 | 650 | instr(0x82,4); |
gertk | 0:806c2f2a7d47 | 651 | adda(d,0); |
gertk | 0:806c2f2a7d47 | 652 | endinstr; |
gertk | 0:806c2f2a7d47 | 653 | |
gertk | 0:806c2f2a7d47 | 654 | instr(0x83,4); |
gertk | 0:806c2f2a7d47 | 655 | adda(e,0); |
gertk | 0:806c2f2a7d47 | 656 | endinstr; |
gertk | 0:806c2f2a7d47 | 657 | |
gertk | 0:806c2f2a7d47 | 658 | instr(0x84,4); |
gertk | 0:806c2f2a7d47 | 659 | adda(xh,0); |
gertk | 0:806c2f2a7d47 | 660 | endinstr; |
gertk | 0:806c2f2a7d47 | 661 | |
gertk | 0:806c2f2a7d47 | 662 | instr(0x85,4); |
gertk | 0:806c2f2a7d47 | 663 | adda(xl,0); |
gertk | 0:806c2f2a7d47 | 664 | endinstr; |
gertk | 0:806c2f2a7d47 | 665 | |
gertk | 0:806c2f2a7d47 | 666 | HLinstr(0x86); |
gertk | 0:806c2f2a7d47 | 667 | adda(fetch(addr),0); |
gertk | 0:806c2f2a7d47 | 668 | endinstr; |
gertk | 0:806c2f2a7d47 | 669 | |
gertk | 0:806c2f2a7d47 | 670 | instr(0x87,4); |
gertk | 0:806c2f2a7d47 | 671 | adda(a,0); |
gertk | 0:806c2f2a7d47 | 672 | endinstr; |
gertk | 0:806c2f2a7d47 | 673 | |
gertk | 0:806c2f2a7d47 | 674 | instr(0x88,4); |
gertk | 0:806c2f2a7d47 | 675 | adda(b,cy); |
gertk | 0:806c2f2a7d47 | 676 | endinstr; |
gertk | 0:806c2f2a7d47 | 677 | |
gertk | 0:806c2f2a7d47 | 678 | instr(0x89,4); |
gertk | 0:806c2f2a7d47 | 679 | adda(c,cy); |
gertk | 0:806c2f2a7d47 | 680 | endinstr; |
gertk | 0:806c2f2a7d47 | 681 | |
gertk | 0:806c2f2a7d47 | 682 | instr(0x8a,4); |
gertk | 0:806c2f2a7d47 | 683 | adda(d,cy); |
gertk | 0:806c2f2a7d47 | 684 | endinstr; |
gertk | 0:806c2f2a7d47 | 685 | |
gertk | 0:806c2f2a7d47 | 686 | instr(0x8b,4); |
gertk | 0:806c2f2a7d47 | 687 | adda(e,cy); |
gertk | 0:806c2f2a7d47 | 688 | endinstr; |
gertk | 0:806c2f2a7d47 | 689 | |
gertk | 0:806c2f2a7d47 | 690 | instr(0x8c,4); |
gertk | 0:806c2f2a7d47 | 691 | adda(xh,cy); |
gertk | 0:806c2f2a7d47 | 692 | endinstr; |
gertk | 0:806c2f2a7d47 | 693 | |
gertk | 0:806c2f2a7d47 | 694 | instr(0x8d,4); |
gertk | 0:806c2f2a7d47 | 695 | adda(xl,cy); |
gertk | 0:806c2f2a7d47 | 696 | endinstr; |
gertk | 0:806c2f2a7d47 | 697 | |
gertk | 0:806c2f2a7d47 | 698 | HLinstr(0x8e); |
gertk | 0:806c2f2a7d47 | 699 | adda(fetch(addr),cy); |
gertk | 0:806c2f2a7d47 | 700 | endinstr; |
gertk | 0:806c2f2a7d47 | 701 | |
gertk | 0:806c2f2a7d47 | 702 | instr(0x8f,4); |
gertk | 0:806c2f2a7d47 | 703 | adda(a,cy); |
gertk | 0:806c2f2a7d47 | 704 | endinstr; |
gertk | 0:806c2f2a7d47 | 705 | |
gertk | 0:806c2f2a7d47 | 706 | instr(0x90,4); |
gertk | 0:806c2f2a7d47 | 707 | suba(b,0); |
gertk | 0:806c2f2a7d47 | 708 | endinstr; |
gertk | 0:806c2f2a7d47 | 709 | |
gertk | 0:806c2f2a7d47 | 710 | instr(0x91,4); |
gertk | 0:806c2f2a7d47 | 711 | suba(c,0); |
gertk | 0:806c2f2a7d47 | 712 | endinstr; |
gertk | 0:806c2f2a7d47 | 713 | |
gertk | 0:806c2f2a7d47 | 714 | instr(0x92,4); |
gertk | 0:806c2f2a7d47 | 715 | suba(d,0); |
gertk | 0:806c2f2a7d47 | 716 | endinstr; |
gertk | 0:806c2f2a7d47 | 717 | |
gertk | 0:806c2f2a7d47 | 718 | instr(0x93,4); |
gertk | 0:806c2f2a7d47 | 719 | suba(e,0); |
gertk | 0:806c2f2a7d47 | 720 | endinstr; |
gertk | 0:806c2f2a7d47 | 721 | |
gertk | 0:806c2f2a7d47 | 722 | instr(0x94,4); |
gertk | 0:806c2f2a7d47 | 723 | suba(xh,0); |
gertk | 0:806c2f2a7d47 | 724 | endinstr; |
gertk | 0:806c2f2a7d47 | 725 | |
gertk | 0:806c2f2a7d47 | 726 | instr(0x95,4); |
gertk | 0:806c2f2a7d47 | 727 | suba(xl,0); |
gertk | 0:806c2f2a7d47 | 728 | endinstr; |
gertk | 0:806c2f2a7d47 | 729 | |
gertk | 0:806c2f2a7d47 | 730 | HLinstr(0x96); |
gertk | 0:806c2f2a7d47 | 731 | suba(fetch(addr),0); |
gertk | 0:806c2f2a7d47 | 732 | endinstr; |
gertk | 0:806c2f2a7d47 | 733 | |
gertk | 0:806c2f2a7d47 | 734 | instr(0x97,4); |
gertk | 0:806c2f2a7d47 | 735 | suba(a,0); |
gertk | 0:806c2f2a7d47 | 736 | endinstr; |
gertk | 0:806c2f2a7d47 | 737 | |
gertk | 0:806c2f2a7d47 | 738 | instr(0x98,4); |
gertk | 0:806c2f2a7d47 | 739 | suba(b,cy); |
gertk | 0:806c2f2a7d47 | 740 | endinstr; |
gertk | 0:806c2f2a7d47 | 741 | |
gertk | 0:806c2f2a7d47 | 742 | instr(0x99,4); |
gertk | 0:806c2f2a7d47 | 743 | suba(c,cy); |
gertk | 0:806c2f2a7d47 | 744 | endinstr; |
gertk | 0:806c2f2a7d47 | 745 | |
gertk | 0:806c2f2a7d47 | 746 | instr(0x9a,4); |
gertk | 0:806c2f2a7d47 | 747 | suba(d,cy); |
gertk | 0:806c2f2a7d47 | 748 | endinstr; |
gertk | 0:806c2f2a7d47 | 749 | |
gertk | 0:806c2f2a7d47 | 750 | instr(0x9b,4); |
gertk | 0:806c2f2a7d47 | 751 | suba(e,cy); |
gertk | 0:806c2f2a7d47 | 752 | endinstr; |
gertk | 0:806c2f2a7d47 | 753 | |
gertk | 0:806c2f2a7d47 | 754 | instr(0x9c,4); |
gertk | 0:806c2f2a7d47 | 755 | suba(xh,cy); |
gertk | 0:806c2f2a7d47 | 756 | endinstr; |
gertk | 0:806c2f2a7d47 | 757 | |
gertk | 0:806c2f2a7d47 | 758 | instr(0x9d,4); |
gertk | 0:806c2f2a7d47 | 759 | suba(xl,cy); |
gertk | 0:806c2f2a7d47 | 760 | endinstr; |
gertk | 0:806c2f2a7d47 | 761 | |
gertk | 0:806c2f2a7d47 | 762 | HLinstr(0x9e); |
gertk | 0:806c2f2a7d47 | 763 | suba(fetch(addr),cy); |
gertk | 0:806c2f2a7d47 | 764 | endinstr; |
gertk | 0:806c2f2a7d47 | 765 | |
gertk | 0:806c2f2a7d47 | 766 | instr(0x9f,4); |
gertk | 0:806c2f2a7d47 | 767 | suba(a,cy); |
gertk | 0:806c2f2a7d47 | 768 | endinstr; |
gertk | 0:806c2f2a7d47 | 769 | |
gertk | 0:806c2f2a7d47 | 770 | instr(0xa0,4); |
gertk | 0:806c2f2a7d47 | 771 | anda(b); |
gertk | 0:806c2f2a7d47 | 772 | endinstr; |
gertk | 0:806c2f2a7d47 | 773 | |
gertk | 0:806c2f2a7d47 | 774 | instr(0xa1,4); |
gertk | 0:806c2f2a7d47 | 775 | anda(c); |
gertk | 0:806c2f2a7d47 | 776 | endinstr; |
gertk | 0:806c2f2a7d47 | 777 | |
gertk | 0:806c2f2a7d47 | 778 | instr(0xa2,4); |
gertk | 0:806c2f2a7d47 | 779 | anda(d); |
gertk | 0:806c2f2a7d47 | 780 | endinstr; |
gertk | 0:806c2f2a7d47 | 781 | |
gertk | 0:806c2f2a7d47 | 782 | instr(0xa3,4); |
gertk | 0:806c2f2a7d47 | 783 | anda(e); |
gertk | 0:806c2f2a7d47 | 784 | endinstr; |
gertk | 0:806c2f2a7d47 | 785 | |
gertk | 0:806c2f2a7d47 | 786 | instr(0xa4,4); |
gertk | 0:806c2f2a7d47 | 787 | anda(xh); |
gertk | 0:806c2f2a7d47 | 788 | endinstr; |
gertk | 0:806c2f2a7d47 | 789 | |
gertk | 0:806c2f2a7d47 | 790 | instr(0xa5,4); |
gertk | 0:806c2f2a7d47 | 791 | anda(xl); |
gertk | 0:806c2f2a7d47 | 792 | endinstr; |
gertk | 0:806c2f2a7d47 | 793 | |
gertk | 0:806c2f2a7d47 | 794 | HLinstr(0xa6); |
gertk | 0:806c2f2a7d47 | 795 | anda(fetch(addr)); |
gertk | 0:806c2f2a7d47 | 796 | endinstr; |
gertk | 0:806c2f2a7d47 | 797 | |
gertk | 0:806c2f2a7d47 | 798 | instr(0xa7,4); |
gertk | 0:806c2f2a7d47 | 799 | anda(a); |
gertk | 0:806c2f2a7d47 | 800 | endinstr; |
gertk | 0:806c2f2a7d47 | 801 | |
gertk | 0:806c2f2a7d47 | 802 | instr(0xa8,4); |
gertk | 0:806c2f2a7d47 | 803 | xora(b); |
gertk | 0:806c2f2a7d47 | 804 | endinstr; |
gertk | 0:806c2f2a7d47 | 805 | |
gertk | 0:806c2f2a7d47 | 806 | instr(0xa9,4); |
gertk | 0:806c2f2a7d47 | 807 | xora(c); |
gertk | 0:806c2f2a7d47 | 808 | endinstr; |
gertk | 0:806c2f2a7d47 | 809 | |
gertk | 0:806c2f2a7d47 | 810 | instr(0xaa,4); |
gertk | 0:806c2f2a7d47 | 811 | xora(d); |
gertk | 0:806c2f2a7d47 | 812 | endinstr; |
gertk | 0:806c2f2a7d47 | 813 | |
gertk | 0:806c2f2a7d47 | 814 | instr(0xab,4); |
gertk | 0:806c2f2a7d47 | 815 | xora(e); |
gertk | 0:806c2f2a7d47 | 816 | endinstr; |
gertk | 0:806c2f2a7d47 | 817 | |
gertk | 0:806c2f2a7d47 | 818 | instr(0xac,4); |
gertk | 0:806c2f2a7d47 | 819 | xora(xh); |
gertk | 0:806c2f2a7d47 | 820 | endinstr; |
gertk | 0:806c2f2a7d47 | 821 | |
gertk | 0:806c2f2a7d47 | 822 | instr(0xad,4); |
gertk | 0:806c2f2a7d47 | 823 | xora(xl); |
gertk | 0:806c2f2a7d47 | 824 | endinstr; |
gertk | 0:806c2f2a7d47 | 825 | |
gertk | 0:806c2f2a7d47 | 826 | HLinstr(0xae); |
gertk | 0:806c2f2a7d47 | 827 | xora(fetch(addr)); |
gertk | 0:806c2f2a7d47 | 828 | endinstr; |
gertk | 0:806c2f2a7d47 | 829 | |
gertk | 0:806c2f2a7d47 | 830 | instr(0xaf,4); |
gertk | 0:806c2f2a7d47 | 831 | xora(a); |
gertk | 0:806c2f2a7d47 | 832 | endinstr; |
gertk | 0:806c2f2a7d47 | 833 | |
gertk | 0:806c2f2a7d47 | 834 | instr(0xb0,4); |
gertk | 0:806c2f2a7d47 | 835 | ora(b); |
gertk | 0:806c2f2a7d47 | 836 | endinstr; |
gertk | 0:806c2f2a7d47 | 837 | |
gertk | 0:806c2f2a7d47 | 838 | instr(0xb1,4); |
gertk | 0:806c2f2a7d47 | 839 | ora(c); |
gertk | 0:806c2f2a7d47 | 840 | endinstr; |
gertk | 0:806c2f2a7d47 | 841 | |
gertk | 0:806c2f2a7d47 | 842 | instr(0xb2,4); |
gertk | 0:806c2f2a7d47 | 843 | ora(d); |
gertk | 0:806c2f2a7d47 | 844 | endinstr; |
gertk | 0:806c2f2a7d47 | 845 | |
gertk | 0:806c2f2a7d47 | 846 | instr(0xb3,4); |
gertk | 0:806c2f2a7d47 | 847 | ora(e); |
gertk | 0:806c2f2a7d47 | 848 | endinstr; |
gertk | 0:806c2f2a7d47 | 849 | |
gertk | 0:806c2f2a7d47 | 850 | instr(0xb4,4); |
gertk | 0:806c2f2a7d47 | 851 | ora(xh); |
gertk | 0:806c2f2a7d47 | 852 | endinstr; |
gertk | 0:806c2f2a7d47 | 853 | |
gertk | 0:806c2f2a7d47 | 854 | instr(0xb5,4); |
gertk | 0:806c2f2a7d47 | 855 | ora(xl); |
gertk | 0:806c2f2a7d47 | 856 | endinstr; |
gertk | 0:806c2f2a7d47 | 857 | |
gertk | 0:806c2f2a7d47 | 858 | HLinstr(0xb6); |
gertk | 0:806c2f2a7d47 | 859 | ora(fetch(addr)); |
gertk | 0:806c2f2a7d47 | 860 | endinstr; |
gertk | 0:806c2f2a7d47 | 861 | |
gertk | 0:806c2f2a7d47 | 862 | instr(0xb7,4); |
gertk | 0:806c2f2a7d47 | 863 | ora(a); |
gertk | 0:806c2f2a7d47 | 864 | endinstr; |
gertk | 0:806c2f2a7d47 | 865 | |
gertk | 0:806c2f2a7d47 | 866 | instr(0xb8,4); |
gertk | 0:806c2f2a7d47 | 867 | cpa(b); |
gertk | 0:806c2f2a7d47 | 868 | endinstr; |
gertk | 0:806c2f2a7d47 | 869 | |
gertk | 0:806c2f2a7d47 | 870 | instr(0xb9,4); |
gertk | 0:806c2f2a7d47 | 871 | cpa(c); |
gertk | 0:806c2f2a7d47 | 872 | endinstr; |
gertk | 0:806c2f2a7d47 | 873 | |
gertk | 0:806c2f2a7d47 | 874 | instr(0xba,4); |
gertk | 0:806c2f2a7d47 | 875 | cpa(d); |
gertk | 0:806c2f2a7d47 | 876 | endinstr; |
gertk | 0:806c2f2a7d47 | 877 | |
gertk | 0:806c2f2a7d47 | 878 | instr(0xbb,4); |
gertk | 0:806c2f2a7d47 | 879 | cpa(e); |
gertk | 0:806c2f2a7d47 | 880 | endinstr; |
gertk | 0:806c2f2a7d47 | 881 | |
gertk | 0:806c2f2a7d47 | 882 | instr(0xbc,4); |
gertk | 0:806c2f2a7d47 | 883 | cpa(xh); |
gertk | 0:806c2f2a7d47 | 884 | endinstr; |
gertk | 0:806c2f2a7d47 | 885 | |
gertk | 0:806c2f2a7d47 | 886 | instr(0xbd,4); |
gertk | 0:806c2f2a7d47 | 887 | cpa(xl); |
gertk | 0:806c2f2a7d47 | 888 | endinstr; |
gertk | 0:806c2f2a7d47 | 889 | |
gertk | 0:806c2f2a7d47 | 890 | HLinstr(0xbe); |
gertk | 0:806c2f2a7d47 | 891 | cpa(fetch(addr)); |
gertk | 0:806c2f2a7d47 | 892 | endinstr; |
gertk | 0:806c2f2a7d47 | 893 | |
gertk | 0:806c2f2a7d47 | 894 | instr(0xbf,4); |
gertk | 0:806c2f2a7d47 | 895 | cpa(a); |
gertk | 0:806c2f2a7d47 | 896 | endinstr; |
gertk | 0:806c2f2a7d47 | 897 | |
gertk | 0:806c2f2a7d47 | 898 | instr(0xc0,5); |
gertk | 0:806c2f2a7d47 | 899 | if (!(f&0x40))ret; |
gertk | 0:806c2f2a7d47 | 900 | endinstr; |
gertk | 0:806c2f2a7d47 | 901 | |
gertk | 0:806c2f2a7d47 | 902 | instr(0xc1,10); |
gertk | 0:806c2f2a7d47 | 903 | pop1(b,c); |
gertk | 0:806c2f2a7d47 | 904 | endinstr; |
gertk | 0:806c2f2a7d47 | 905 | |
gertk | 0:806c2f2a7d47 | 906 | instr(0xc2,10); |
gertk | 0:806c2f2a7d47 | 907 | if (!(f&0x40))jp; |
gertk | 0:806c2f2a7d47 | 908 | else pc+=2; |
gertk | 0:806c2f2a7d47 | 909 | endinstr; |
gertk | 0:806c2f2a7d47 | 910 | |
gertk | 0:806c2f2a7d47 | 911 | instr(0xc3,10); |
gertk | 0:806c2f2a7d47 | 912 | jp; |
gertk | 0:806c2f2a7d47 | 913 | endinstr; |
gertk | 0:806c2f2a7d47 | 914 | |
gertk | 0:806c2f2a7d47 | 915 | instr(0xc4,10); |
gertk | 0:806c2f2a7d47 | 916 | if (!(f&0x40))call; |
gertk | 0:806c2f2a7d47 | 917 | else pc+=2; |
gertk | 0:806c2f2a7d47 | 918 | endinstr; |
gertk | 0:806c2f2a7d47 | 919 | |
gertk | 0:806c2f2a7d47 | 920 | instr(0xc5,11); |
gertk | 0:806c2f2a7d47 | 921 | push1(b,c); |
gertk | 0:806c2f2a7d47 | 922 | endinstr; |
gertk | 0:806c2f2a7d47 | 923 | |
gertk | 0:806c2f2a7d47 | 924 | instr(0xc6,7); |
gertk | 0:806c2f2a7d47 | 925 | adda(fetch(pc),0); |
gertk | 0:806c2f2a7d47 | 926 | pc++; |
gertk | 0:806c2f2a7d47 | 927 | endinstr; |
gertk | 0:806c2f2a7d47 | 928 | |
gertk | 0:806c2f2a7d47 | 929 | instr(0xc7,11); |
gertk | 0:806c2f2a7d47 | 930 | push2(pc); |
gertk | 0:806c2f2a7d47 | 931 | pc=0; |
gertk | 0:806c2f2a7d47 | 932 | endinstr; |
gertk | 0:806c2f2a7d47 | 933 | |
gertk | 0:806c2f2a7d47 | 934 | instr(0xc8,5); |
gertk | 0:806c2f2a7d47 | 935 | if (f&0x40)ret; |
gertk | 0:806c2f2a7d47 | 936 | endinstr; |
gertk | 0:806c2f2a7d47 | 937 | |
gertk | 0:806c2f2a7d47 | 938 | instr(0xc9,4); |
gertk | 0:806c2f2a7d47 | 939 | ret; |
gertk | 0:806c2f2a7d47 | 940 | endinstr; |
gertk | 0:806c2f2a7d47 | 941 | |
gertk | 0:806c2f2a7d47 | 942 | instr(0xca,10); |
gertk | 0:806c2f2a7d47 | 943 | if (f&0x40)jp; |
gertk | 0:806c2f2a7d47 | 944 | else pc+=2; |
gertk | 0:806c2f2a7d47 | 945 | endinstr; |
gertk | 0:806c2f2a7d47 | 946 | |
gertk | 0:806c2f2a7d47 | 947 | instr(0xcb,4); |
gertk | 0:806c2f2a7d47 | 948 | #include "cbops.h" |
gertk | 0:806c2f2a7d47 | 949 | endinstr; |
gertk | 0:806c2f2a7d47 | 950 | |
gertk | 0:806c2f2a7d47 | 951 | instr(0xcc,10); |
gertk | 0:806c2f2a7d47 | 952 | if (f&0x40)call; |
gertk | 0:806c2f2a7d47 | 953 | else pc+=2; |
gertk | 0:806c2f2a7d47 | 954 | endinstr; |
gertk | 0:806c2f2a7d47 | 955 | |
gertk | 0:806c2f2a7d47 | 956 | instr(0xcd,10); |
gertk | 0:806c2f2a7d47 | 957 | call; |
gertk | 0:806c2f2a7d47 | 958 | endinstr; |
gertk | 0:806c2f2a7d47 | 959 | |
gertk | 0:806c2f2a7d47 | 960 | instr(0xce,7); |
gertk | 0:806c2f2a7d47 | 961 | adda(fetch(pc),cy); |
gertk | 0:806c2f2a7d47 | 962 | pc++; |
gertk | 0:806c2f2a7d47 | 963 | endinstr; |
gertk | 0:806c2f2a7d47 | 964 | |
gertk | 0:806c2f2a7d47 | 965 | instr(0xcf,11); |
gertk | 0:806c2f2a7d47 | 966 | push2(pc); |
gertk | 0:806c2f2a7d47 | 967 | pc=8; |
gertk | 0:806c2f2a7d47 | 968 | endinstr; |
gertk | 0:806c2f2a7d47 | 969 | |
gertk | 0:806c2f2a7d47 | 970 | instr(0xd0,5); |
gertk | 0:806c2f2a7d47 | 971 | if (!cy)ret; |
gertk | 0:806c2f2a7d47 | 972 | endinstr; |
gertk | 0:806c2f2a7d47 | 973 | |
gertk | 0:806c2f2a7d47 | 974 | instr(0xd1,10); |
gertk | 0:806c2f2a7d47 | 975 | pop1(d,e); |
gertk | 0:806c2f2a7d47 | 976 | endinstr; |
gertk | 0:806c2f2a7d47 | 977 | |
gertk | 0:806c2f2a7d47 | 978 | instr(0xd2,10); |
gertk | 0:806c2f2a7d47 | 979 | if (!cy)jp; |
gertk | 0:806c2f2a7d47 | 980 | else pc+=2; |
gertk | 0:806c2f2a7d47 | 981 | endinstr; |
gertk | 0:806c2f2a7d47 | 982 | |
gertk | 0:806c2f2a7d47 | 983 | // OUT |
gertk | 0:806c2f2a7d47 | 984 | instr(0xd3,11); |
gertk | 0:806c2f2a7d47 | 985 | out(fetch(pc),a); |
gertk | 0:806c2f2a7d47 | 986 | pc++; |
gertk | 0:806c2f2a7d47 | 987 | endinstr; |
gertk | 0:806c2f2a7d47 | 988 | |
gertk | 0:806c2f2a7d47 | 989 | instr(0xd4,10); |
gertk | 0:806c2f2a7d47 | 990 | if (!cy)call; |
gertk | 0:806c2f2a7d47 | 991 | else pc+=2; |
gertk | 0:806c2f2a7d47 | 992 | endinstr; |
gertk | 0:806c2f2a7d47 | 993 | |
gertk | 0:806c2f2a7d47 | 994 | instr(0xd5,11); |
gertk | 0:806c2f2a7d47 | 995 | push1(d,e); |
gertk | 0:806c2f2a7d47 | 996 | endinstr; |
gertk | 0:806c2f2a7d47 | 997 | |
gertk | 0:806c2f2a7d47 | 998 | instr(0xd6,7); |
gertk | 0:806c2f2a7d47 | 999 | suba(fetch(pc),0); |
gertk | 0:806c2f2a7d47 | 1000 | pc++; |
gertk | 0:806c2f2a7d47 | 1001 | endinstr; |
gertk | 0:806c2f2a7d47 | 1002 | |
gertk | 0:806c2f2a7d47 | 1003 | instr(0xd7,11); |
gertk | 0:806c2f2a7d47 | 1004 | push2(pc); |
gertk | 0:806c2f2a7d47 | 1005 | pc=16; |
gertk | 0:806c2f2a7d47 | 1006 | endinstr; |
gertk | 0:806c2f2a7d47 | 1007 | |
gertk | 0:806c2f2a7d47 | 1008 | instr(0xd8,5); |
gertk | 0:806c2f2a7d47 | 1009 | if (cy)ret; |
gertk | 0:806c2f2a7d47 | 1010 | endinstr; |
gertk | 0:806c2f2a7d47 | 1011 | |
gertk | 0:806c2f2a7d47 | 1012 | instr(0xd9,4); |
gertk | 0:806c2f2a7d47 | 1013 | swap(b,b1); |
gertk | 0:806c2f2a7d47 | 1014 | swap(c,c1); |
gertk | 0:806c2f2a7d47 | 1015 | swap(d,d1); |
gertk | 0:806c2f2a7d47 | 1016 | swap(e,e1); |
gertk | 0:806c2f2a7d47 | 1017 | swap(h,h1); |
gertk | 0:806c2f2a7d47 | 1018 | swap(l,l1); |
gertk | 0:806c2f2a7d47 | 1019 | endinstr; |
gertk | 0:806c2f2a7d47 | 1020 | |
gertk | 0:806c2f2a7d47 | 1021 | instr(0xda,10); |
gertk | 0:806c2f2a7d47 | 1022 | if (cy)jp; |
gertk | 0:806c2f2a7d47 | 1023 | else pc+=2; |
gertk | 0:806c2f2a7d47 | 1024 | endinstr; |
gertk | 0:806c2f2a7d47 | 1025 | |
gertk | 0:806c2f2a7d47 | 1026 | // IN |
gertk | 0:806c2f2a7d47 | 1027 | instr(0xdb,11); |
gertk | 0:806c2f2a7d47 | 1028 | { |
gertk | 0:806c2f2a7d47 | 1029 | a=in(fetch(pc)); |
gertk | 0:806c2f2a7d47 | 1030 | pc++; |
gertk | 0:806c2f2a7d47 | 1031 | } |
gertk | 0:806c2f2a7d47 | 1032 | endinstr; |
gertk | 0:806c2f2a7d47 | 1033 | |
gertk | 0:806c2f2a7d47 | 1034 | instr(0xdc,10); |
gertk | 0:806c2f2a7d47 | 1035 | if (cy)call; |
gertk | 0:806c2f2a7d47 | 1036 | else pc+=2; |
gertk | 0:806c2f2a7d47 | 1037 | endinstr; |
gertk | 0:806c2f2a7d47 | 1038 | |
gertk | 0:806c2f2a7d47 | 1039 | instr(0xdd,4); |
gertk | 0:806c2f2a7d47 | 1040 | new_ixoriy=1; |
gertk | 0:806c2f2a7d47 | 1041 | endinstr; |
gertk | 0:806c2f2a7d47 | 1042 | |
gertk | 0:806c2f2a7d47 | 1043 | instr(0xde,7); |
gertk | 0:806c2f2a7d47 | 1044 | suba(fetch(pc),cy); |
gertk | 0:806c2f2a7d47 | 1045 | pc++; |
gertk | 0:806c2f2a7d47 | 1046 | endinstr; |
gertk | 0:806c2f2a7d47 | 1047 | |
gertk | 0:806c2f2a7d47 | 1048 | // RST 18 |
gertk | 0:806c2f2a7d47 | 1049 | instr(0xdf,11); |
gertk | 0:806c2f2a7d47 | 1050 | push2(pc); |
gertk | 0:806c2f2a7d47 | 1051 | pc=0x0018; |
gertk | 0:806c2f2a7d47 | 1052 | endinstr; |
gertk | 0:806c2f2a7d47 | 1053 | |
gertk | 0:806c2f2a7d47 | 1054 | instr(0xe0,5); |
gertk | 0:806c2f2a7d47 | 1055 | if (!(f&4))ret; |
gertk | 0:806c2f2a7d47 | 1056 | endinstr; |
gertk | 0:806c2f2a7d47 | 1057 | |
gertk | 0:806c2f2a7d47 | 1058 | instr(0xe1,10); |
gertk | 0:806c2f2a7d47 | 1059 | if (!ixoriy)pop1(h,l); |
gertk | 0:806c2f2a7d47 | 1060 | else if (ixoriy==1)pop2(ix); |
gertk | 0:806c2f2a7d47 | 1061 | else pop2(iy); |
gertk | 0:806c2f2a7d47 | 1062 | endinstr; |
gertk | 0:806c2f2a7d47 | 1063 | |
gertk | 0:806c2f2a7d47 | 1064 | instr(0xe2,10); |
gertk | 0:806c2f2a7d47 | 1065 | if (!(f&4))jp; |
gertk | 0:806c2f2a7d47 | 1066 | else pc+=2; |
gertk | 0:806c2f2a7d47 | 1067 | endinstr; |
gertk | 0:806c2f2a7d47 | 1068 | |
gertk | 0:806c2f2a7d47 | 1069 | instr(0xe3,19); |
gertk | 0:806c2f2a7d47 | 1070 | if (!ixoriy) { |
gertk | 0:806c2f2a7d47 | 1071 | unsigned short t=fetch2(sp); |
gertk | 0:806c2f2a7d47 | 1072 | store2b(sp,h,l); |
gertk | 0:806c2f2a7d47 | 1073 | l=t; |
gertk | 0:806c2f2a7d47 | 1074 | h=t>>8; |
gertk | 0:806c2f2a7d47 | 1075 | } else if (ixoriy==1) { |
gertk | 0:806c2f2a7d47 | 1076 | unsigned short t=fetch2(sp); |
gertk | 0:806c2f2a7d47 | 1077 | store2(sp,ix); |
gertk | 0:806c2f2a7d47 | 1078 | ix=t; |
gertk | 0:806c2f2a7d47 | 1079 | } else { |
gertk | 0:806c2f2a7d47 | 1080 | unsigned short t=fetch2(sp); |
gertk | 0:806c2f2a7d47 | 1081 | store2(sp,iy); |
gertk | 0:806c2f2a7d47 | 1082 | iy=t; |
gertk | 0:806c2f2a7d47 | 1083 | } |
gertk | 0:806c2f2a7d47 | 1084 | endinstr; |
gertk | 0:806c2f2a7d47 | 1085 | |
gertk | 0:806c2f2a7d47 | 1086 | instr(0xe4,10); |
gertk | 0:806c2f2a7d47 | 1087 | if (!(f&4))call; |
gertk | 0:806c2f2a7d47 | 1088 | else pc+=2; |
gertk | 0:806c2f2a7d47 | 1089 | endinstr; |
gertk | 0:806c2f2a7d47 | 1090 | |
gertk | 0:806c2f2a7d47 | 1091 | instr(0xe5,11); |
gertk | 0:806c2f2a7d47 | 1092 | if (!ixoriy)push1(h,l); |
gertk | 0:806c2f2a7d47 | 1093 | else if (ixoriy==1)push2(ix); |
gertk | 0:806c2f2a7d47 | 1094 | else push2(iy); |
gertk | 0:806c2f2a7d47 | 1095 | endinstr; |
gertk | 0:806c2f2a7d47 | 1096 | |
gertk | 0:806c2f2a7d47 | 1097 | instr(0xe6,7); |
gertk | 0:806c2f2a7d47 | 1098 | anda(fetch(pc)); |
gertk | 0:806c2f2a7d47 | 1099 | pc++; |
gertk | 0:806c2f2a7d47 | 1100 | endinstr; |
gertk | 0:806c2f2a7d47 | 1101 | |
gertk | 0:806c2f2a7d47 | 1102 | instr(0xe7,11); |
gertk | 0:806c2f2a7d47 | 1103 | push2(pc); |
gertk | 0:806c2f2a7d47 | 1104 | pc=32; |
gertk | 0:806c2f2a7d47 | 1105 | endinstr; |
gertk | 0:806c2f2a7d47 | 1106 | |
gertk | 0:806c2f2a7d47 | 1107 | instr(0xe8,5); |
gertk | 0:806c2f2a7d47 | 1108 | if (f&4)ret; |
gertk | 0:806c2f2a7d47 | 1109 | endinstr; |
gertk | 0:806c2f2a7d47 | 1110 | |
gertk | 0:806c2f2a7d47 | 1111 | instr(0xe9,4); |
gertk | 0:806c2f2a7d47 | 1112 | pc=!ixoriy?hl:ixoriy==1?ix:iy; |
gertk | 0:806c2f2a7d47 | 1113 | endinstr; |
gertk | 0:806c2f2a7d47 | 1114 | |
gertk | 0:806c2f2a7d47 | 1115 | instr(0xea,10); |
gertk | 0:806c2f2a7d47 | 1116 | if (f&4)jp; |
gertk | 0:806c2f2a7d47 | 1117 | else pc+=2; |
gertk | 0:806c2f2a7d47 | 1118 | endinstr; |
gertk | 0:806c2f2a7d47 | 1119 | |
gertk | 0:806c2f2a7d47 | 1120 | instr(0xeb,4); |
gertk | 0:806c2f2a7d47 | 1121 | swap(h,d); |
gertk | 0:806c2f2a7d47 | 1122 | swap(e,l); |
gertk | 0:806c2f2a7d47 | 1123 | endinstr; |
gertk | 0:806c2f2a7d47 | 1124 | |
gertk | 0:806c2f2a7d47 | 1125 | instr(0xec,10); |
gertk | 0:806c2f2a7d47 | 1126 | if (f&4)call; |
gertk | 0:806c2f2a7d47 | 1127 | else pc+=2; |
gertk | 0:806c2f2a7d47 | 1128 | endinstr; |
gertk | 0:806c2f2a7d47 | 1129 | |
gertk | 0:806c2f2a7d47 | 1130 | instr(0xed,4); |
gertk | 0:806c2f2a7d47 | 1131 | #include"edops.h" |
gertk | 0:806c2f2a7d47 | 1132 | endinstr; |
gertk | 0:806c2f2a7d47 | 1133 | |
gertk | 0:806c2f2a7d47 | 1134 | instr(0xee,7); |
gertk | 0:806c2f2a7d47 | 1135 | xora(fetch(pc)); |
gertk | 0:806c2f2a7d47 | 1136 | pc++; |
gertk | 0:806c2f2a7d47 | 1137 | endinstr; |
gertk | 0:806c2f2a7d47 | 1138 | |
gertk | 0:806c2f2a7d47 | 1139 | instr(0xef,11); |
gertk | 0:806c2f2a7d47 | 1140 | push2(pc); |
gertk | 0:806c2f2a7d47 | 1141 | pc=40; |
gertk | 0:806c2f2a7d47 | 1142 | endinstr; |
gertk | 0:806c2f2a7d47 | 1143 | |
gertk | 0:806c2f2a7d47 | 1144 | instr(0xf0,5); |
gertk | 0:806c2f2a7d47 | 1145 | if (!(f&0x80))ret; |
gertk | 0:806c2f2a7d47 | 1146 | endinstr; |
gertk | 0:806c2f2a7d47 | 1147 | |
gertk | 0:806c2f2a7d47 | 1148 | instr(0xf1,10); |
gertk | 0:806c2f2a7d47 | 1149 | pop1(a,f); |
gertk | 0:806c2f2a7d47 | 1150 | endinstr; |
gertk | 0:806c2f2a7d47 | 1151 | |
gertk | 0:806c2f2a7d47 | 1152 | instr(0xf2,10); |
gertk | 0:806c2f2a7d47 | 1153 | if (!(f&0x80))jp; |
gertk | 0:806c2f2a7d47 | 1154 | else pc+=2; |
gertk | 0:806c2f2a7d47 | 1155 | endinstr; |
gertk | 0:806c2f2a7d47 | 1156 | |
gertk | 0:806c2f2a7d47 | 1157 | instr(0xf3,4); |
gertk | 0:806c2f2a7d47 | 1158 | iff1=iff2=0; |
gertk | 0:806c2f2a7d47 | 1159 | // __disable_irq(); |
gertk | 0:806c2f2a7d47 | 1160 | endinstr; |
gertk | 0:806c2f2a7d47 | 1161 | |
gertk | 0:806c2f2a7d47 | 1162 | instr(0xf4,10); |
gertk | 0:806c2f2a7d47 | 1163 | if (!(f&0x80))call; |
gertk | 0:806c2f2a7d47 | 1164 | else pc+=2; |
gertk | 0:806c2f2a7d47 | 1165 | endinstr; |
gertk | 0:806c2f2a7d47 | 1166 | |
gertk | 0:806c2f2a7d47 | 1167 | instr(0xf5,11); |
gertk | 0:806c2f2a7d47 | 1168 | push1(a,f); |
gertk | 0:806c2f2a7d47 | 1169 | endinstr; |
gertk | 0:806c2f2a7d47 | 1170 | |
gertk | 0:806c2f2a7d47 | 1171 | instr(0xf6,7); |
gertk | 0:806c2f2a7d47 | 1172 | ora(fetch(pc)); |
gertk | 0:806c2f2a7d47 | 1173 | pc++; |
gertk | 0:806c2f2a7d47 | 1174 | endinstr; |
gertk | 0:806c2f2a7d47 | 1175 | |
gertk | 0:806c2f2a7d47 | 1176 | // rst 30 |
gertk | 0:806c2f2a7d47 | 1177 | instr(0xf7,11); |
gertk | 0:806c2f2a7d47 | 1178 | push2(pc); |
gertk | 0:806c2f2a7d47 | 1179 | pc=0x30; |
gertk | 0:806c2f2a7d47 | 1180 | // printf("RST30\n\r"); |
gertk | 0:806c2f2a7d47 | 1181 | endinstr; |
gertk | 0:806c2f2a7d47 | 1182 | |
gertk | 0:806c2f2a7d47 | 1183 | instr(0xf8,5); |
gertk | 0:806c2f2a7d47 | 1184 | if (f&0x80)ret; |
gertk | 0:806c2f2a7d47 | 1185 | endinstr; |
gertk | 0:806c2f2a7d47 | 1186 | |
gertk | 0:806c2f2a7d47 | 1187 | instr(0xf9,6); |
gertk | 0:806c2f2a7d47 | 1188 | sp=!ixoriy?hl:ixoriy==1?ix:iy; |
gertk | 0:806c2f2a7d47 | 1189 | endinstr; |
gertk | 0:806c2f2a7d47 | 1190 | |
gertk | 0:806c2f2a7d47 | 1191 | instr(0xfa,10); |
gertk | 0:806c2f2a7d47 | 1192 | if (f&0x80)jp; |
gertk | 0:806c2f2a7d47 | 1193 | else pc+=2; |
gertk | 0:806c2f2a7d47 | 1194 | endinstr; |
gertk | 0:806c2f2a7d47 | 1195 | |
gertk | 0:806c2f2a7d47 | 1196 | instr(0xfb,4); |
gertk | 0:806c2f2a7d47 | 1197 | iff1=iff2=1; |
gertk | 0:806c2f2a7d47 | 1198 | endinstr; |
gertk | 0:806c2f2a7d47 | 1199 | |
gertk | 0:806c2f2a7d47 | 1200 | instr(0xfc,10); |
gertk | 0:806c2f2a7d47 | 1201 | if (f&0x80)call; |
gertk | 0:806c2f2a7d47 | 1202 | else pc+=2; |
gertk | 0:806c2f2a7d47 | 1203 | endinstr; |
gertk | 0:806c2f2a7d47 | 1204 | |
gertk | 0:806c2f2a7d47 | 1205 | instr(0xfd,4); |
gertk | 0:806c2f2a7d47 | 1206 | new_ixoriy=2; |
gertk | 0:806c2f2a7d47 | 1207 | endinstr; |
gertk | 0:806c2f2a7d47 | 1208 | |
gertk | 0:806c2f2a7d47 | 1209 | instr(0xfe,7); |
gertk | 0:806c2f2a7d47 | 1210 | cpa(fetch(pc)); |
gertk | 0:806c2f2a7d47 | 1211 | pc++; |
gertk | 0:806c2f2a7d47 | 1212 | endinstr; |
gertk | 0:806c2f2a7d47 | 1213 | |
gertk | 0:806c2f2a7d47 | 1214 | instr(0xff,11); |
gertk | 0:806c2f2a7d47 | 1215 | push2(pc); |
gertk | 0:806c2f2a7d47 | 1216 | pc=56; |
gertk | 0:806c2f2a7d47 | 1217 | endinstr; |
gertk | 0:806c2f2a7d47 | 1218 |