Commit 7cfb437

Nick committed on
Implement remaining unimplemented opcodes
commit 7cfb43735cedfbaf5b0b91cffd66315a9a2fd6ce parent cb84f4a
3 changed files +547−521
ModifiedCpu/z80cpu.pas +544−518
@@ -7,7 +7,7 @@
7 7
8 unit Z80CPU; 8 unit Z80CPU;
9 9
10 {$MODE Delphi} 10 {$MODE objfpc}{$H+}
11 11
12 interface 12 interface
13 13
@@ -99,8 +99,9 @@ end;
99 99
100 function ld_xxxx_sp: byte; 100 function ld_xxxx_sp: byte;
101 begin 101 begin
102 {TODO} 102 sp_.W:=wordpeek(wordpeek(pc.W));
103 Result := 20; 103 inc(pc.W,2);
104 Result := 20;
104 end; 105 end;
105 106
106 function add_hl_bc: byte; 107 function add_hl_bc: byte;
@@ -1617,7 +1618,7 @@ begin
1617 b := speekb(pc.W - 1); 1618 b := speekb(pc.W - 1);
1618 addr := hl.w; 1619 addr := hl.w;
1619 1620
1620 Result := Z80[b or 256]; 1621 Result := Z80[b or 256]();
1621 end; 1622 end;
1622 1623
1623 function call_z_XXXX: byte; 1624 function call_z_XXXX: byte;
@@ -1899,8 +1900,20 @@ begin
1899 end; 1900 end;
1900 1901
1901 function add_sp_dd: byte; 1902 function add_sp_dd: byte;
1903 var
1904 Offset: ShortInt;
1902 begin 1905 begin
1903 {TODO} 1906 Offset := speekb(pc.w);
1907 Inc(sp_.w, Offset);
1908 Inc(pc.w);
1909 af.l := 0;
1910
1911 if ((sp_.w and $FF) + (offset and $F) > $F) then
1912 af.l := af.l or %00010000;
1913
1914 if ((sp_.w and $FF) + (offset and $FF) > $FF) then
1915 af.l := af.l or %00000001;
1916
1904 Result := 16; 1917 Result := 16;
1905 end; 1918 end;
1906 1919
@@ -2033,8 +2046,21 @@ begin
2033 end; 2046 end;
2034 2047
2035 function ld_hl_sp_plus_dd: byte; 2048 function ld_hl_sp_plus_dd: byte;
2049 var
2050 offset: ShortInt;
2036 begin 2051 begin
2037 {TODO} 2052 offset := speekb(pc.w);
2053 Inc(pc.w);
2054 af.l := 0;
2055
2056 hl.w := sp_.w + offset;
2057
2058 if ((sp_.w and $F) + (offset and $F) > $F) then
2059 af.l := af.l or %00010000;
2060
2061 if ((sp_.w and $FF) + (offset and $FF) > $FF) then
2062 af.l := af.l or %00000001;
2063
2038 Result := 12; 2064 Result := 12;
2039 end; 2065 end;
2040 2066
@@ -4105,518 +4131,518 @@ end;
4105 {$pop} 4131 {$pop}
4106 4132
4107 begin 4133 begin
4108 Z80[0] := nop; 4134 Z80[0] := @nop;
4109 Z80[1] := ld_bc_XXXX; 4135 Z80[1] := @ld_bc_XXXX;
4110 Z80[2] := ld_mbc_a; 4136 Z80[2] := @ld_mbc_a;
4111 Z80[3] := inc_bc; 4137 Z80[3] := @inc_bc;
4112 Z80[4] := inc_b; 4138 Z80[4] := @inc_b;
4113 Z80[5] := dec_b; 4139 Z80[5] := @dec_b;
4114 Z80[6] := ld_b_XX; 4140 Z80[6] := @ld_b_XX;
4115 Z80[7] := rlca; 4141 Z80[7] := @rlca;
4116 Z80[8] := ld_XXXX_sp; 4142 Z80[8] := @ld_XXXX_sp;
4117 Z80[9] := add_hl_bc; 4143 Z80[9] := @add_hl_bc;
4118 Z80[10] := ld_a_mbc; 4144 Z80[10] := @ld_a_mbc;
4119 Z80[11] := dec_bc; 4145 Z80[11] := @dec_bc;
4120 Z80[12] := inc_c; 4146 Z80[12] := @inc_c;
4121 Z80[13] := dec_c; 4147 Z80[13] := @dec_c;
4122 Z80[14] := ld_c_XX; 4148 Z80[14] := @ld_c_XX;
4123 Z80[15] := rrca; 4149 Z80[15] := @rrca;
4124 Z80[16] := stop; 4150 Z80[16] := @stop;
4125 Z80[17] := ld_de_XXXX; 4151 Z80[17] := @ld_de_XXXX;
4126 Z80[18] := ld_mde_a; 4152 Z80[18] := @ld_mde_a;
4127 Z80[19] := inc_de; 4153 Z80[19] := @inc_de;
4128 Z80[20] := inc_d; 4154 Z80[20] := @inc_d;
4129 Z80[21] := dec_d; 4155 Z80[21] := @dec_d;
4130 Z80[22] := ld_d_XX; 4156 Z80[22] := @ld_d_XX;
4131 Z80[23] := rla; 4157 Z80[23] := @rla;
4132 Z80[24] := jr_DIS; 4158 Z80[24] := @jr_DIS;
4133 Z80[25] := add_hl_de; 4159 Z80[25] := @add_hl_de;
4134 Z80[26] := ld_a_mde; 4160 Z80[26] := @ld_a_mde;
4135 Z80[27] := dec_de; 4161 Z80[27] := @dec_de;
4136 Z80[28] := inc_e; 4162 Z80[28] := @inc_e;
4137 Z80[29] := dec_e; 4163 Z80[29] := @dec_e;
4138 Z80[30] := ld_e_XX; 4164 Z80[30] := @ld_e_XX;
4139 Z80[31] := rra; 4165 Z80[31] := @rra;
4140 Z80[32] := jr_nz_DIS; 4166 Z80[32] := @jr_nz_DIS;
4141 Z80[33] := ld_hl_XXXX; 4167 Z80[33] := @ld_hl_XXXX;
4142 Z80[34] := ldi_hl_a; 4168 Z80[34] := @ldi_hl_a;
4143 Z80[35] := inc_hl; 4169 Z80[35] := @inc_hl;
4144 Z80[36] := inc_h; 4170 Z80[36] := @inc_h;
4145 Z80[37] := dec_h; 4171 Z80[37] := @dec_h;
4146 Z80[38] := ld_h_XX; 4172 Z80[38] := @ld_h_XX;
4147 Z80[39] := daa; 4173 Z80[39] := @daa;
4148 Z80[40] := jr_z_DIS; 4174 Z80[40] := @jr_z_DIS;
4149 Z80[41] := add_hl_hl; 4175 Z80[41] := @add_hl_hl;
4150 Z80[42] := ldi_a_hl; 4176 Z80[42] := @ldi_a_hl;
4151 Z80[43] := dec_hl; 4177 Z80[43] := @dec_hl;
4152 Z80[44] := inc_l; 4178 Z80[44] := @inc_l;
4153 Z80[45] := dec_l; 4179 Z80[45] := @dec_l;
4154 Z80[46] := ld_l_XX; 4180 Z80[46] := @ld_l_XX;
4155 Z80[47] := cpl; 4181 Z80[47] := @cpl;
4156 Z80[48] := jr_nc_DIS; 4182 Z80[48] := @jr_nc_DIS;
4157 Z80[49] := ld_sp_XXXX; 4183 Z80[49] := @ld_sp_XXXX;
4158 Z80[50] := ldd_hl_a; 4184 Z80[50] := @ldd_hl_a;
4159 Z80[51] := inc_sp; 4185 Z80[51] := @inc_sp;
4160 Z80[52] := inc_mhl; 4186 Z80[52] := @inc_mhl;
4161 Z80[53] := dec_mhl; 4187 Z80[53] := @dec_mhl;
4162 Z80[54] := ld_mhl_XX; 4188 Z80[54] := @ld_mhl_XX;
4163 Z80[55] := scf; 4189 Z80[55] := @scf;
4164 Z80[56] := jr_c_DIS; 4190 Z80[56] := @jr_c_DIS;
4165 Z80[57] := add_hl_sp; 4191 Z80[57] := @add_hl_sp;
4166 Z80[58] := ldd_a_hl; 4192 Z80[58] := @ldd_a_hl;
4167 Z80[59] := dec_sp; 4193 Z80[59] := @dec_sp;
4168 Z80[60] := Z80inc_a; 4194 Z80[60] := @Z80inc_a;
4169 Z80[61] := Z80dec_a; 4195 Z80[61] := @Z80dec_a;
4170 Z80[62] := ld_a_XX; 4196 Z80[62] := @ld_a_XX;
4171 Z80[63] := ccf; 4197 Z80[63] := @ccf;
4172 Z80[64] := ld_b_b; 4198 Z80[64] := @ld_b_b;
4173 Z80[65] := ld_b_c; 4199 Z80[65] := @ld_b_c;
4174 Z80[66] := ld_b_d; 4200 Z80[66] := @ld_b_d;
4175 Z80[67] := ld_b_e; 4201 Z80[67] := @ld_b_e;
4176 Z80[68] := ld_b_h; 4202 Z80[68] := @ld_b_h;
4177 Z80[69] := ld_b_l; 4203 Z80[69] := @ld_b_l;
4178 Z80[70] := ld_b_hl; 4204 Z80[70] := @ld_b_hl;
4179 Z80[71] := ld_b_a; 4205 Z80[71] := @ld_b_a;
4180 Z80[72] := ld_c_b; 4206 Z80[72] := @ld_c_b;
4181 Z80[73] := ld_c_c; 4207 Z80[73] := @ld_c_c;
4182 Z80[74] := ld_c_d; 4208 Z80[74] := @ld_c_d;
4183 Z80[75] := ld_c_e; 4209 Z80[75] := @ld_c_e;
4184 Z80[76] := ld_c_h; 4210 Z80[76] := @ld_c_h;
4185 Z80[77] := ld_c_l; 4211 Z80[77] := @ld_c_l;
4186 Z80[78] := ld_c_hl; 4212 Z80[78] := @ld_c_hl;
4187 Z80[79] := ld_c_a; 4213 Z80[79] := @ld_c_a;
4188 Z80[80] := ld_d_b; 4214 Z80[80] := @ld_d_b;
4189 Z80[81] := ld_d_c; 4215 Z80[81] := @ld_d_c;
4190 Z80[82] := ld_d_d; 4216 Z80[82] := @ld_d_d;
4191 Z80[83] := ld_d_e; 4217 Z80[83] := @ld_d_e;
4192 Z80[84] := ld_d_h; 4218 Z80[84] := @ld_d_h;
4193 Z80[85] := ld_d_l; 4219 Z80[85] := @ld_d_l;
4194 Z80[86] := ld_d_hl; 4220 Z80[86] := @ld_d_hl;
4195 Z80[87] := ld_d_a; 4221 Z80[87] := @ld_d_a;
4196 Z80[88] := ld_e_b; 4222 Z80[88] := @ld_e_b;
4197 Z80[89] := ld_e_c; 4223 Z80[89] := @ld_e_c;
4198 Z80[90] := ld_e_d; 4224 Z80[90] := @ld_e_d;
4199 Z80[91] := ld_e_e; 4225 Z80[91] := @ld_e_e;
4200 Z80[92] := ld_e_h; 4226 Z80[92] := @ld_e_h;
4201 Z80[93] := ld_e_l; 4227 Z80[93] := @ld_e_l;
4202 Z80[94] := ld_e_hl; 4228 Z80[94] := @ld_e_hl;
4203 Z80[95] := ld_e_a; 4229 Z80[95] := @ld_e_a;
4204 Z80[96] := ld_h_b; 4230 Z80[96] := @ld_h_b;
4205 Z80[97] := ld_h_c; 4231 Z80[97] := @ld_h_c;
4206 Z80[98] := ld_h_d; 4232 Z80[98] := @ld_h_d;
4207 Z80[99] := ld_h_e; 4233 Z80[99] := @ld_h_e;
4208 Z80[100] := ld_h_h; 4234 Z80[100] := @ld_h_h;
4209 Z80[101] := ld_h_l; 4235 Z80[101] := @ld_h_l;
4210 Z80[102] := ld_h_hl; 4236 Z80[102] := @ld_h_hl;
4211 Z80[103] := ld_h_a; 4237 Z80[103] := @ld_h_a;
4212 Z80[104] := ld_l_b; 4238 Z80[104] := @ld_l_b;
4213 Z80[105] := ld_l_c; 4239 Z80[105] := @ld_l_c;
4214 Z80[106] := ld_l_d; 4240 Z80[106] := @ld_l_d;
4215 Z80[107] := ld_l_e; 4241 Z80[107] := @ld_l_e;
4216 Z80[108] := ld_l_h; 4242 Z80[108] := @ld_l_h;
4217 Z80[109] := ld_l_l; 4243 Z80[109] := @ld_l_l;
4218 Z80[110] := ld_l_hl; 4244 Z80[110] := @ld_l_hl;
4219 Z80[111] := ld_l_a; 4245 Z80[111] := @ld_l_a;
4220 Z80[112] := ld_hl_b; 4246 Z80[112] := @ld_hl_b;
4221 Z80[113] := ld_hl_c; 4247 Z80[113] := @ld_hl_c;
4222 Z80[114] := ld_hl_d; 4248 Z80[114] := @ld_hl_d;
4223 Z80[115] := ld_hl_e; 4249 Z80[115] := @ld_hl_e;
4224 Z80[116] := ld_hl_h; 4250 Z80[116] := @ld_hl_h;
4225 Z80[117] := ld_hl_l; 4251 Z80[117] := @ld_hl_l;
4226 Z80[118] := Z80halt; 4252 Z80[118] := @Z80halt;
4227 Z80[119] := ld_hl_a; 4253 Z80[119] := @ld_hl_a;
4228 Z80[120] := ld_a_b; 4254 Z80[120] := @ld_a_b;
4229 Z80[121] := ld_a_c; 4255 Z80[121] := @ld_a_c;
4230 Z80[122] := ld_a_d; 4256 Z80[122] := @ld_a_d;
4231 Z80[123] := ld_a_e; 4257 Z80[123] := @ld_a_e;
4232 Z80[124] := ld_a_h; 4258 Z80[124] := @ld_a_h;
4233 Z80[125] := ld_a_l; 4259 Z80[125] := @ld_a_l;
4234 Z80[126] := ld_a_hl; 4260 Z80[126] := @ld_a_hl;
4235 Z80[127] := ld_a_a; 4261 Z80[127] := @ld_a_a;
4236 Z80[128] := add_a_b; 4262 Z80[128] := @add_a_b;
4237 Z80[129] := add_a_c; 4263 Z80[129] := @add_a_c;
4238 Z80[130] := add_a_d; 4264 Z80[130] := @add_a_d;
4239 Z80[131] := add_a_e; 4265 Z80[131] := @add_a_e;
4240 Z80[132] := add_a_h; 4266 Z80[132] := @add_a_h;
4241 Z80[133] := add_a_l; 4267 Z80[133] := @add_a_l;
4242 Z80[134] := add_a_hl; 4268 Z80[134] := @add_a_hl;
4243 Z80[135] := add_a_a; 4269 Z80[135] := @add_a_a;
4244 Z80[136] := adc_a_b; 4270 Z80[136] := @adc_a_b;
4245 Z80[137] := adc_a_c; 4271 Z80[137] := @adc_a_c;
4246 Z80[138] := adc_a_d; 4272 Z80[138] := @adc_a_d;
4247 Z80[139] := adc_a_e; 4273 Z80[139] := @adc_a_e;
4248 Z80[140] := adc_a_h; 4274 Z80[140] := @adc_a_h;
4249 Z80[141] := adc_a_l; 4275 Z80[141] := @adc_a_l;
4250 Z80[142] := adc_a_hl; 4276 Z80[142] := @adc_a_hl;
4251 Z80[143] := adc_a_a; 4277 Z80[143] := @adc_a_a;
4252 Z80[144] := sub_b; 4278 Z80[144] := @sub_b;
4253 Z80[145] := sub_c; 4279 Z80[145] := @sub_c;
4254 Z80[146] := sub_d; 4280 Z80[146] := @sub_d;
4255 Z80[147] := sub_e; 4281 Z80[147] := @sub_e;
4256 Z80[148] := sub_h; 4282 Z80[148] := @sub_h;
4257 Z80[149] := sub_l; 4283 Z80[149] := @sub_l;
4258 Z80[150] := sub_hl; 4284 Z80[150] := @sub_hl;
4259 Z80[151] := sub_a; 4285 Z80[151] := @sub_a;
4260 Z80[152] := sbc_a_b; 4286 Z80[152] := @sbc_a_b;
4261 Z80[153] := sbc_a_c; 4287 Z80[153] := @sbc_a_c;
4262 Z80[154] := sbc_a_d; 4288 Z80[154] := @sbc_a_d;
4263 Z80[155] := sbc_a_e; 4289 Z80[155] := @sbc_a_e;
4264 Z80[156] := sbc_a_h; 4290 Z80[156] := @sbc_a_h;
4265 Z80[157] := sbc_a_l; 4291 Z80[157] := @sbc_a_l;
4266 Z80[158] := sbc_a_hl; 4292 Z80[158] := @sbc_a_hl;
4267 Z80[159] := sbc_a_a; 4293 Z80[159] := @sbc_a_a;
4268 Z80[160] := and_b; 4294 Z80[160] := @and_b;
4269 Z80[161] := and_c; 4295 Z80[161] := @and_c;
4270 Z80[162] := and_d; 4296 Z80[162] := @and_d;
4271 Z80[163] := and_e; 4297 Z80[163] := @and_e;
4272 Z80[164] := and_h; 4298 Z80[164] := @and_h;
4273 Z80[165] := and_l; 4299 Z80[165] := @and_l;
4274 Z80[166] := and_hl; 4300 Z80[166] := @and_hl;
4275 Z80[167] := and_a; 4301 Z80[167] := @and_a;
4276 Z80[168] := xor_b; 4302 Z80[168] := @xor_b;
4277 Z80[169] := xor_c; 4303 Z80[169] := @xor_c;
4278 Z80[170] := xor_d; 4304 Z80[170] := @xor_d;
4279 Z80[171] := xor_e; 4305 Z80[171] := @xor_e;
4280 Z80[172] := xor_h; 4306 Z80[172] := @xor_h;
4281 Z80[173] := xor_l; 4307 Z80[173] := @xor_l;
4282 Z80[174] := xor_hl; 4308 Z80[174] := @xor_hl;
4283 Z80[175] := xor_a; 4309 Z80[175] := @xor_a;
4284 Z80[176] := or_b; 4310 Z80[176] := @or_b;
4285 Z80[177] := or_c; 4311 Z80[177] := @or_c;
4286 Z80[178] := or_d; 4312 Z80[178] := @or_d;
4287 Z80[179] := or_e; 4313 Z80[179] := @or_e;
4288 Z80[180] := or_h; 4314 Z80[180] := @or_h;
4289 Z80[181] := or_l; 4315 Z80[181] := @or_l;
4290 Z80[182] := or_hl; 4316 Z80[182] := @or_hl;
4291 Z80[183] := or_a; 4317 Z80[183] := @or_a;
4292 Z80[184] := cp_b; 4318 Z80[184] := @cp_b;
4293 Z80[185] := cp_c; 4319 Z80[185] := @cp_c;
4294 Z80[186] := cp_d; 4320 Z80[186] := @cp_d;
4295 Z80[187] := cp_e; 4321 Z80[187] := @cp_e;
4296 Z80[188] := cp_h; 4322 Z80[188] := @cp_h;
4297 Z80[189] := cp_l; 4323 Z80[189] := @cp_l;
4298 Z80[190] := cp_hl; 4324 Z80[190] := @cp_hl;
4299 Z80[191] := cp_a; 4325 Z80[191] := @cp_a;
4300 Z80[192] := ret_nz; 4326 Z80[192] := @ret_nz;
4301 Z80[193] := pop_bc; 4327 Z80[193] := @pop_bc;
4302 Z80[194] := jp_nz_XXXX; 4328 Z80[194] := @jp_nz_XXXX;
4303 Z80[195] := jp_XXXX; 4329 Z80[195] := @jp_XXXX;
4304 Z80[196] := call_nz_XXXX; 4330 Z80[196] := @call_nz_XXXX;
4305 Z80[197] := push_bc; 4331 Z80[197] := @push_bc;
4306 Z80[198] := add_a_XX; 4332 Z80[198] := @add_a_XX;
4307 Z80[199] := rst_0; 4333 Z80[199] := @rst_0;
4308 Z80[200] := ret_z; 4334 Z80[200] := @ret_z;
4309 Z80[201] := ret; 4335 Z80[201] := @ret;
4310 Z80[202] := jp_z_XXXX; 4336 Z80[202] := @jp_z_XXXX;
4311 Z80[203] := PFX_CB; 4337 Z80[203] := @PFX_CB;
4312 Z80[204] := call_z_XXXX; 4338 Z80[204] := @call_z_XXXX;
4313 Z80[205] := call_XXXX; 4339 Z80[205] := @call_XXXX;
4314 Z80[206] := adc_a_XX; 4340 Z80[206] := @adc_a_XX;
4315 Z80[207] := rst_8; 4341 Z80[207] := @rst_8;
4316 Z80[208] := ret_nc; 4342 Z80[208] := @ret_nc;
4317 Z80[209] := pop_de; 4343 Z80[209] := @pop_de;
4318 Z80[210] := jp_nc_XXXX; 4344 Z80[210] := @jp_nc_XXXX;
4319 Z80[211] := unimplemented; 4345 Z80[211] := @unimplemented;
4320 Z80[212] := call_nc_XXXX; 4346 Z80[212] := @call_nc_XXXX;
4321 Z80[213] := push_de; 4347 Z80[213] := @push_de;
4322 Z80[214] := sub_XX; 4348 Z80[214] := @sub_XX;
4323 Z80[215] := rst_16; 4349 Z80[215] := @rst_16;
4324 Z80[216] := ret_c; 4350 Z80[216] := @ret_c;
4325 Z80[217] := reti; 4351 Z80[217] := @reti;
4326 Z80[218] := jp_c_XXXX; 4352 Z80[218] := @jp_c_XXXX;
4327 Z80[219] := unimplemented; 4353 Z80[219] := @unimplemented;
4328 Z80[220] := call_c_XXXX; 4354 Z80[220] := @call_c_XXXX;
4329 Z80[221] := dd_debug; 4355 Z80[221] := @dd_debug;
4330 Z80[222] := sbc_a_XX; 4356 Z80[222] := @sbc_a_XX;
4331 Z80[223] := rst_24; 4357 Z80[223] := @rst_24;
4332 Z80[224] := LDFF00plusN_A; 4358 Z80[224] := @LDFF00plusN_A;
4333 Z80[225] := pop_hl; 4359 Z80[225] := @pop_hl;
4334 Z80[226] := ld_ff00plusC_a; 4360 Z80[226] := @ld_ff00plusC_a;
4335 Z80[227] := unimplemented; 4361 Z80[227] := @unimplemented;
4336 Z80[228] := unimplemented; 4362 Z80[228] := @unimplemented;
4337 Z80[229] := push_hl; 4363 Z80[229] := @push_hl;
4338 Z80[230] := and_XX; 4364 Z80[230] := @and_XX;
4339 Z80[231] := rst_32; 4365 Z80[231] := @rst_32;
4340 Z80[232] := add_sp_dd; 4366 Z80[232] := @add_sp_dd;
4341 Z80[233] := jp_hl; 4367 Z80[233] := @jp_hl;
4342 Z80[234] := ld_nn_a; 4368 Z80[234] := @ld_nn_a;
4343 Z80[235] := unimplemented; 4369 Z80[235] := @unimplemented;
4344 Z80[236] := unimplemented; 4370 Z80[236] := @unimplemented;
4345 Z80[237] := unimplemented; 4371 Z80[237] := @unimplemented;
4346 Z80[238] := xor_XX; 4372 Z80[238] := @xor_XX;
4347 Z80[239] := rst_40; 4373 Z80[239] := @rst_40;
4348 Z80[240] := ld_a_ff00plusn; 4374 Z80[240] := @ld_a_ff00plusn;
4349 Z80[241] := pop_af; 4375 Z80[241] := @pop_af;
4350 Z80[242] := ld_a_ff00plusc; 4376 Z80[242] := @ld_a_ff00plusc;
4351 Z80[243] := di; 4377 Z80[243] := @di;
4352 Z80[244] := unimplemented; 4378 Z80[244] := @unimplemented;
4353 Z80[245] := push_af; 4379 Z80[245] := @push_af;
4354 Z80[246] := or_XX; 4380 Z80[246] := @or_XX;
4355 Z80[247] := rst_48; 4381 Z80[247] := @rst_48;
4356 Z80[248] := ld_hl_sp_plus_dd; 4382 Z80[248] := @ld_hl_sp_plus_dd;
4357 Z80[249] := ld_sp_hl; 4383 Z80[249] := @ld_sp_hl;
4358 Z80[250] := ld_a_nn; 4384 Z80[250] := @ld_a_nn;
4359 Z80[251] := ei; 4385 Z80[251] := @ei;
4360 Z80[252] := unimplemented; 4386 Z80[252] := @unimplemented;
4361 Z80[253] := PFX_FD; 4387 Z80[253] := @PFX_FD;
4362 Z80[254] := cp_XX; 4388 Z80[254] := @cp_XX;
4363 Z80[255] := rst_56; 4389 Z80[255] := @rst_56;
4364 4390
4365 // CB 4391 // CB
4366 Z80[256] := rlc_b; 4392 Z80[256] := @rlc_b;
4367 Z80[257] := rlc_c; 4393 Z80[257] := @rlc_c;
4368 Z80[258] := rlc_d; 4394 Z80[258] := @rlc_d;
4369 Z80[259] := rlc_e; 4395 Z80[259] := @rlc_e;
4370 Z80[260] := rlc_h; 4396 Z80[260] := @rlc_h;
4371 Z80[261] := rlc_l; 4397 Z80[261] := @rlc_l;
4372 Z80[262] := rlc; 4398 Z80[262] := @rlc;
4373 Z80[263] := rlc_a; 4399 Z80[263] := @rlc_a;
4374 Z80[264] := rrc_b; 4400 Z80[264] := @rrc_b;
4375 Z80[265] := rrc_c; 4401 Z80[265] := @rrc_c;
4376 Z80[266] := rrc_d; 4402 Z80[266] := @rrc_d;
4377 Z80[267] := rrc_e; 4403 Z80[267] := @rrc_e;
4378 Z80[268] := rrc_h; 4404 Z80[268] := @rrc_h;
4379 Z80[269] := rrc_l; 4405 Z80[269] := @rrc_l;
4380 Z80[270] := rrc; 4406 Z80[270] := @rrc;
4381 Z80[271] := rrc_a; 4407 Z80[271] := @rrc_a;
4382 Z80[272] := rl_b; 4408 Z80[272] := @rl_b;
4383 Z80[273] := rl_c; 4409 Z80[273] := @rl_c;
4384 Z80[274] := rl_d; 4410 Z80[274] := @rl_d;
4385 Z80[275] := rl_e; 4411 Z80[275] := @rl_e;
4386 Z80[276] := rl_h; 4412 Z80[276] := @rl_h;
4387 Z80[277] := rl_l; 4413 Z80[277] := @rl_l;
4388 Z80[278] := rl; 4414 Z80[278] := @rl;
4389 Z80[279] := rl_a; 4415 Z80[279] := @rl_a;
4390 Z80[280] := rr_b; 4416 Z80[280] := @rr_b;
4391 Z80[281] := rr_c; 4417 Z80[281] := @rr_c;
4392 Z80[282] := rr_d; 4418 Z80[282] := @rr_d;
4393 Z80[283] := rr_e; 4419 Z80[283] := @rr_e;
4394 Z80[284] := rr_h; 4420 Z80[284] := @rr_h;
4395 Z80[285] := rr_l; 4421 Z80[285] := @rr_l;
4396 Z80[286] := rr; 4422 Z80[286] := @rr;
4397 Z80[287] := rr_a; 4423 Z80[287] := @rr_a;
4398 Z80[288] := sla_b; 4424 Z80[288] := @sla_b;
4399 Z80[289] := sla_c; 4425 Z80[289] := @sla_c;
4400 Z80[290] := sla_d; 4426 Z80[290] := @sla_d;
4401 Z80[291] := sla_e; 4427 Z80[291] := @sla_e;
4402 Z80[292] := sla_h; 4428 Z80[292] := @sla_h;
4403 Z80[293] := sla_l; 4429 Z80[293] := @sla_l;
4404 Z80[294] := sla; 4430 Z80[294] := @sla;
4405 Z80[295] := CBsla_a; 4431 Z80[295] := @CBsla_a;
4406 Z80[296] := sra_b; 4432 Z80[296] := @sra_b;
4407 Z80[297] := sra_c; 4433 Z80[297] := @sra_c;
4408 Z80[298] := sra_d; 4434 Z80[298] := @sra_d;
4409 Z80[299] := sra_e; 4435 Z80[299] := @sra_e;
4410 Z80[300] := sra_h; 4436 Z80[300] := @sra_h;
4411 Z80[301] := sra_l; 4437 Z80[301] := @sra_l;
4412 Z80[302] := sra; 4438 Z80[302] := @sra;
4413 Z80[303] := CBsra_a; 4439 Z80[303] := @CBsra_a;
4414 Z80[304] := sll_b; 4440 Z80[304] := @sll_b;
4415 Z80[305] := sll_c; 4441 Z80[305] := @sll_c;
4416 Z80[306] := sll_d; 4442 Z80[306] := @sll_d;
4417 Z80[307] := sll_e; 4443 Z80[307] := @sll_e;
4418 Z80[308] := sll_h; 4444 Z80[308] := @sll_h;
4419 Z80[309] := sll_l; 4445 Z80[309] := @sll_l;
4420 Z80[310] := sll; 4446 Z80[310] := @sll;
4421 Z80[311] := CBsll_a; 4447 Z80[311] := @CBsll_a;
4422 Z80[312] := srl_b; 4448 Z80[312] := @srl_b;
4423 Z80[313] := srl_c; 4449 Z80[313] := @srl_c;
4424 Z80[314] := srl_d; 4450 Z80[314] := @srl_d;
4425 Z80[315] := srl_e; 4451 Z80[315] := @srl_e;
4426 Z80[316] := srl_h; 4452 Z80[316] := @srl_h;
4427 Z80[317] := srl_l; 4453 Z80[317] := @srl_l;
4428 Z80[318] := srl; 4454 Z80[318] := @srl;
4429 Z80[319] := CBsrl_a; 4455 Z80[319] := @CBsrl_a;
4430 Z80[320] := bit0_b; 4456 Z80[320] := @bit0_b;
4431 Z80[321] := bit0_c; 4457 Z80[321] := @bit0_c;
4432 Z80[322] := bit0_d; 4458 Z80[322] := @bit0_d;
4433 Z80[323] := bit0_e; 4459 Z80[323] := @bit0_e;
4434 Z80[324] := bit0_h; 4460 Z80[324] := @bit0_h;
4435 Z80[325] := bit0_l; 4461 Z80[325] := @bit0_l;
4436 Z80[326] := bit0; 4462 Z80[326] := @bit0;
4437 Z80[327] := bit0_a; 4463 Z80[327] := @bit0_a;
4438 Z80[328] := bit1_b; 4464 Z80[328] := @bit1_b;
4439 Z80[329] := bit1_c; 4465 Z80[329] := @bit1_c;
4440 Z80[330] := bit1_d; 4466 Z80[330] := @bit1_d;
4441 Z80[331] := bit1_e; 4467 Z80[331] := @bit1_e;
4442 Z80[332] := bit1_h; 4468 Z80[332] := @bit1_h;
4443 Z80[333] := bit1_l; 4469 Z80[333] := @bit1_l;
4444 Z80[334] := bit1; 4470 Z80[334] := @bit1;
4445 Z80[335] := bit1_a; 4471 Z80[335] := @bit1_a;
4446 Z80[336] := bit2_b; 4472 Z80[336] := @bit2_b;
4447 Z80[337] := bit2_c; 4473 Z80[337] := @bit2_c;
4448 Z80[338] := bit2_d; 4474 Z80[338] := @bit2_d;
4449 Z80[339] := bit2_e; 4475 Z80[339] := @bit2_e;
4450 Z80[340] := bit2_h; 4476 Z80[340] := @bit2_h;
4451 Z80[341] := bit2_l; 4477 Z80[341] := @bit2_l;
4452 Z80[342] := bit2; 4478 Z80[342] := @bit2;
4453 Z80[343] := bit2_a; 4479 Z80[343] := @bit2_a;
4454 Z80[344] := bit3_b; 4480 Z80[344] := @bit3_b;
4455 Z80[345] := bit3_c; 4481 Z80[345] := @bit3_c;
4456 Z80[346] := bit3_d; 4482 Z80[346] := @bit3_d;
4457 Z80[347] := bit3_e; 4483 Z80[347] := @bit3_e;
4458 Z80[348] := bit3_h; 4484 Z80[348] := @bit3_h;
4459 Z80[349] := bit3_l; 4485 Z80[349] := @bit3_l;
4460 Z80[350] := bit3; 4486 Z80[350] := @bit3;
4461 Z80[351] := bit3_a; 4487 Z80[351] := @bit3_a;
4462 Z80[352] := bit4_b; 4488 Z80[352] := @bit4_b;
4463 Z80[353] := bit4_c; 4489 Z80[353] := @bit4_c;
4464 Z80[354] := bit4_d; 4490 Z80[354] := @bit4_d;
4465 Z80[355] := bit4_e; 4491 Z80[355] := @bit4_e;
4466 Z80[356] := bit4_h; 4492 Z80[356] := @bit4_h;
4467 Z80[357] := bit4_l; 4493 Z80[357] := @bit4_l;
4468 Z80[358] := bit4; 4494 Z80[358] := @bit4;
4469 Z80[359] := bit4_a; 4495 Z80[359] := @bit4_a;
4470 Z80[360] := bit5_b; 4496 Z80[360] := @bit5_b;
4471 Z80[361] := bit5_c; 4497 Z80[361] := @bit5_c;
4472 Z80[362] := bit5_d; 4498 Z80[362] := @bit5_d;
4473 Z80[363] := bit5_e; 4499 Z80[363] := @bit5_e;
4474 Z80[364] := bit5_h; 4500 Z80[364] := @bit5_h;
4475 Z80[365] := bit5_l; 4501 Z80[365] := @bit5_l;
4476 Z80[366] := bit5; 4502 Z80[366] := @bit5;
4477 Z80[367] := bit5_a; 4503 Z80[367] := @bit5_a;
4478 Z80[368] := bit6_b; 4504 Z80[368] := @bit6_b;
4479 Z80[369] := bit6_c; 4505 Z80[369] := @bit6_c;
4480 Z80[370] := bit6_d; 4506 Z80[370] := @bit6_d;
4481 Z80[371] := bit6_e; 4507 Z80[371] := @bit6_e;
4482 Z80[372] := bit6_h; 4508 Z80[372] := @bit6_h;
4483 Z80[373] := bit6_l; 4509 Z80[373] := @bit6_l;
4484 Z80[374] := bit6; 4510 Z80[374] := @bit6;
4485 Z80[375] := bit6_a; 4511 Z80[375] := @bit6_a;
4486 Z80[376] := bit7_b; 4512 Z80[376] := @bit7_b;
4487 Z80[377] := bit7_c; 4513 Z80[377] := @bit7_c;
4488 Z80[378] := bit7_d; 4514 Z80[378] := @bit7_d;
4489 Z80[379] := bit7_e; 4515 Z80[379] := @bit7_e;
4490 Z80[380] := bit7_h; 4516 Z80[380] := @bit7_h;
4491 Z80[381] := bit7_l; 4517 Z80[381] := @bit7_l;
4492 Z80[382] := bit7; 4518 Z80[382] := @bit7;
4493 Z80[383] := bit7_a; 4519 Z80[383] := @bit7_a;
4494 Z80[384] := res0_b; 4520 Z80[384] := @res0_b;
4495 Z80[385] := res0_c; 4521 Z80[385] := @res0_c;
4496 Z80[386] := res0_d; 4522 Z80[386] := @res0_d;
4497 Z80[387] := res0_e; 4523 Z80[387] := @res0_e;
4498 Z80[388] := res0_h; 4524 Z80[388] := @res0_h;
4499 Z80[389] := res0_l; 4525 Z80[389] := @res0_l;
4500 Z80[390] := res0; 4526 Z80[390] := @res0;
4501 Z80[391] := res0_a; 4527 Z80[391] := @res0_a;
4502 Z80[392] := res1_b; 4528 Z80[392] := @res1_b;
4503 Z80[393] := res1_c; 4529 Z80[393] := @res1_c;
4504 Z80[394] := res1_d; 4530 Z80[394] := @res1_d;
4505 Z80[395] := res1_e; 4531 Z80[395] := @res1_e;
4506 Z80[396] := res1_h; 4532 Z80[396] := @res1_h;
4507 Z80[397] := res1_l; 4533 Z80[397] := @res1_l;
4508 Z80[398] := res1; 4534 Z80[398] := @res1;
4509 Z80[399] := res1_a; 4535 Z80[399] := @res1_a;
4510 Z80[400] := res2_b; 4536 Z80[400] := @res2_b;
4511 Z80[401] := res2_c; 4537 Z80[401] := @res2_c;
4512 Z80[402] := res2_d; 4538 Z80[402] := @res2_d;
4513 Z80[403] := res2_e; 4539 Z80[403] := @res2_e;
4514 Z80[404] := res2_h; 4540 Z80[404] := @res2_h;
4515 Z80[405] := res2_l; 4541 Z80[405] := @res2_l;
4516 Z80[406] := res2; 4542 Z80[406] := @res2;
4517 Z80[407] := res2_a; 4543 Z80[407] := @res2_a;
4518 Z80[408] := res3_b; 4544 Z80[408] := @res3_b;
4519 Z80[409] := res3_c; 4545 Z80[409] := @res3_c;
4520 Z80[410] := res3_d; 4546 Z80[410] := @res3_d;
4521 Z80[411] := res3_e; 4547 Z80[411] := @res3_e;
4522 Z80[412] := res3_h; 4548 Z80[412] := @res3_h;
4523 Z80[413] := res3_l; 4549 Z80[413] := @res3_l;
4524 Z80[414] := res3; 4550 Z80[414] := @res3;
4525 Z80[415] := res3_a; 4551 Z80[415] := @res3_a;
4526 Z80[416] := res4_b; 4552 Z80[416] := @res4_b;
4527 Z80[417] := res4_c; 4553 Z80[417] := @res4_c;
4528 Z80[418] := res4_d; 4554 Z80[418] := @res4_d;
4529 Z80[419] := res4_e; 4555 Z80[419] := @res4_e;
4530 Z80[420] := res4_h; 4556 Z80[420] := @res4_h;
4531 Z80[421] := res4_l; 4557 Z80[421] := @res4_l;
4532 Z80[422] := res4; 4558 Z80[422] := @res4;
4533 Z80[423] := res4_a; 4559 Z80[423] := @res4_a;
4534 Z80[424] := res5_b; 4560 Z80[424] := @res5_b;
4535 Z80[425] := res5_c; 4561 Z80[425] := @res5_c;
4536 Z80[426] := res5_d; 4562 Z80[426] := @res5_d;
4537 Z80[427] := res5_e; 4563 Z80[427] := @res5_e;
4538 Z80[428] := res5_h; 4564 Z80[428] := @res5_h;
4539 Z80[429] := res5_l; 4565 Z80[429] := @res5_l;
4540 Z80[430] := res5; 4566 Z80[430] := @res5;
4541 Z80[431] := res5_a; 4567 Z80[431] := @res5_a;
4542 Z80[432] := res6_b; 4568 Z80[432] := @res6_b;
4543 Z80[433] := res6_c; 4569 Z80[433] := @res6_c;
4544 Z80[434] := res6_d; 4570 Z80[434] := @res6_d;
4545 Z80[435] := res6_e; 4571 Z80[435] := @res6_e;
4546 Z80[436] := res6_h; 4572 Z80[436] := @res6_h;
4547 Z80[437] := res6_l; 4573 Z80[437] := @res6_l;
4548 Z80[438] := res6; 4574 Z80[438] := @res6;
4549 Z80[439] := res6_a; 4575 Z80[439] := @res6_a;
4550 Z80[440] := res7_b; 4576 Z80[440] := @res7_b;
4551 Z80[441] := res7_c; 4577 Z80[441] := @res7_c;
4552 Z80[442] := res7_d; 4578 Z80[442] := @res7_d;
4553 Z80[443] := res7_e; 4579 Z80[443] := @res7_e;
4554 Z80[444] := res7_h; 4580 Z80[444] := @res7_h;
4555 Z80[445] := res7_l; 4581 Z80[445] := @res7_l;
4556 Z80[446] := res7; 4582 Z80[446] := @res7;
4557 Z80[447] := res7_a; 4583 Z80[447] := @res7_a;
4558 Z80[448] := set0_b; 4584 Z80[448] := @set0_b;
4559 Z80[449] := set0_c; 4585 Z80[449] := @set0_c;
4560 Z80[450] := set0_d; 4586 Z80[450] := @set0_d;
4561 Z80[451] := set0_e; 4587 Z80[451] := @set0_e;
4562 Z80[452] := set0_h; 4588 Z80[452] := @set0_h;
4563 Z80[453] := set0_l; 4589 Z80[453] := @set0_l;
4564 Z80[454] := set0; 4590 Z80[454] := @set0;
4565 Z80[455] := set0_a; 4591 Z80[455] := @set0_a;
4566 Z80[456] := set1_b; 4592 Z80[456] := @set1_b;
4567 Z80[457] := set1_c; 4593 Z80[457] := @set1_c;
4568 Z80[458] := set1_d; 4594 Z80[458] := @set1_d;
4569 Z80[459] := set1_e; 4595 Z80[459] := @set1_e;
4570 Z80[460] := set1_h; 4596 Z80[460] := @set1_h;
4571 Z80[461] := set1_l; 4597 Z80[461] := @set1_l;
4572 Z80[462] := set1; 4598 Z80[462] := @set1;
4573 Z80[463] := set1_a; 4599 Z80[463] := @set1_a;
4574 Z80[464] := set2_b; 4600 Z80[464] := @set2_b;
4575 Z80[465] := set2_c; 4601 Z80[465] := @set2_c;
4576 Z80[466] := set2_d; 4602 Z80[466] := @set2_d;
4577 Z80[467] := set2_e; 4603 Z80[467] := @set2_e;
4578 Z80[468] := set2_h; 4604 Z80[468] := @set2_h;
4579 Z80[469] := set2_l; 4605 Z80[469] := @set2_l;
4580 Z80[470] := set2; 4606 Z80[470] := @set2;
4581 Z80[471] := set2_a; 4607 Z80[471] := @set2_a;
4582 Z80[472] := set3_b; 4608 Z80[472] := @set3_b;
4583 Z80[473] := set3_c; 4609 Z80[473] := @set3_c;
4584 Z80[474] := set3_d; 4610 Z80[474] := @set3_d;
4585 Z80[475] := set3_e; 4611 Z80[475] := @set3_e;
4586 Z80[476] := set3_h; 4612 Z80[476] := @set3_h;
4587 Z80[477] := set3_l; 4613 Z80[477] := @set3_l;
4588 Z80[478] := set3; 4614 Z80[478] := @set3;
4589 Z80[479] := set3_a; 4615 Z80[479] := @set3_a;
4590 Z80[480] := set4_b; 4616 Z80[480] := @set4_b;
4591 Z80[481] := set4_c; 4617 Z80[481] := @set4_c;
4592 Z80[482] := set4_d; 4618 Z80[482] := @set4_d;
4593 Z80[483] := set4_e; 4619 Z80[483] := @set4_e;
4594 Z80[484] := set4_h; 4620 Z80[484] := @set4_h;
4595 Z80[485] := set4_l; 4621 Z80[485] := @set4_l;
4596 Z80[486] := set4; 4622 Z80[486] := @set4;
4597 Z80[487] := set4_a; 4623 Z80[487] := @set4_a;
4598 Z80[488] := set5_b; 4624 Z80[488] := @set5_b;
4599 Z80[489] := set5_c; 4625 Z80[489] := @set5_c;
4600 Z80[490] := set5_d; 4626 Z80[490] := @set5_d;
4601 Z80[491] := set5_e; 4627 Z80[491] := @set5_e;
4602 Z80[492] := set5_h; 4628 Z80[492] := @set5_h;
4603 Z80[493] := set5_l; 4629 Z80[493] := @set5_l;
4604 Z80[494] := set5; 4630 Z80[494] := @set5;
4605 Z80[495] := set5_a; 4631 Z80[495] := @set5_a;
4606 Z80[496] := set6_b; 4632 Z80[496] := @set6_b;
4607 Z80[497] := set6_c; 4633 Z80[497] := @set6_c;
4608 Z80[498] := set6_d; 4634 Z80[498] := @set6_d;
4609 Z80[499] := set6_e; 4635 Z80[499] := @set6_e;
4610 Z80[500] := set6_h; 4636 Z80[500] := @set6_h;
4611 Z80[501] := set6_l; 4637 Z80[501] := @set6_l;
4612 Z80[502] := set6; 4638 Z80[502] := @set6;
4613 Z80[503] := set6_a; 4639 Z80[503] := @set6_a;
4614 Z80[504] := set7_b; 4640 Z80[504] := @set7_b;
4615 Z80[505] := set7_c; 4641 Z80[505] := @set7_c;
4616 Z80[506] := set7_d; 4642 Z80[506] := @set7_d;
4617 Z80[507] := set7_e; 4643 Z80[507] := @set7_e;
4618 Z80[508] := set7_h; 4644 Z80[508] := @set7_h;
4619 Z80[509] := set7_l; 4645 Z80[509] := @set7_l;
4620 Z80[510] := set7; 4646 Z80[510] := @set7;
4621 Z80[511] := set7_a; 4647 Z80[511] := @set7_a;
4622 end. 4648 end.
ModifiedhUGEDriver +1−1
@@ -1 +1 @@
1 Subproject commit b39b8712f8e588369611ee0196ce07c6fbb30ae5 1 Subproject commit 03c9a345c48a369652975769cffa5dae25d844b4
Modifiedtracker.pas +2−2
@@ -496,8 +496,8 @@ begin
496 LoadInstrument(itSquare, 1); 496 LoadInstrument(itSquare, 1);
497 LoadWave(0); 497 LoadWave(0);
498 498
499 RoutineSynedit.Text := Song.Routines[0]; 499 RoutineSynedit.Text := Song.Routines[1];
500 RoutineNumberSpinner.Value := 0; 500 RoutineNumberSpinner.Value := 1;
501 501
502 SongEdit.Text := Song.Name; 502 SongEdit.Text := Song.Name;
503 ArtistEdit.Text := Song.Artist; 503 ArtistEdit.Text := Song.Artist;