// ** REPLACE PROCESS MAIN** //ON:DE<= TEXT ADR public void REP2() { ushort stDE = Z80.DE; // -- ヘンカンスルモノト ヘンカンサレルモノノ モジスウノ サ -- Z80.HL = EDBUF + 1; Z80.C = 1; //REP21: do { Z80.DE--; Z80.A = Mem.LD_8(Z80.HL); //Z80.A |= Z80.A; if (Z80.A == 0) { break; } Z80.HL++; Z80.C++; } while (true); //REP22: //Mem.LD_16(HENTOP, Z80.DE); HENTOP = Z80.DE; Z80.HL = EDBUF + 32; Z80.B = 0; //REP23: do { Z80.A = Mem.LD_8(Z80.HL); //Z80.A |= Z80.A; if (Z80.A == 0) { break; } Z80.B++; Z80.HL++; } while (true); //REP24: Z80.A = Z80.B; //Z80.A |= Z80.A; if (Z80.A != 0) { goto REP25; } Mem.LD_8(EDBUF + 33, Z80.A); Z80.A = 0x20; Mem.LD_8(EDBUF + 32, Z80.A); Z80.A = 1; REP25: //Mem.LD_8(HENCO, Z80.A); HENCO = Z80.A; Z80.Carry = (Z80.A < Z80.C); Z80.A -= Z80.C; if (!Z80.Carry) { goto REPB1; //ヘンカンサレルガワガ オオキイトキハ REPB1ヘ } //REPS1: Z80.DE = stDE; stDE = Z80.DE; ushort dmy = Z80.DE; Z80.DE = Z80.HL; Z80.HL = dmy; Z80.E = Z80.A; Z80.D = 0x0FF; Z80.HL += Z80.DE; ushort stHL = Z80.HL; //Z80.HL = Mem.LD_16(LINKPT); Z80.HL = LINKPT; Z80.HL += Z80.DE; //Mem.LD_16(LINKPT, Z80.HL); LINKPT = Z80.HL; Z80.HL = stHL; dmy = Z80.DE; Z80.DE = Z80.HL; Z80.HL = dmy; Z80.HL = stDE; stHL = Z80.HL; Z80.EXX(); Z80.HL = Mem.LD_16(TXTEND); Z80.DE = stHL; //Z80.A &= Z80.A; Z80.HL -= Z80.DE; Z80.C = Z80.L; Z80.B = Z80.H; ushort stBC = Z80.BC; Z80.EXX(); Z80.BC = stBC; stDE = Z80.DE; // DI msub.RAM(); Z80.LDIR(); //Z80.DE = Mem.LD_16(HENTOP); Z80.DE = HENTOP; Z80.HL = EDBUF + 32; //Z80.A = Mem.LD_8(HENCO); Z80.A = HENCO; Z80.C = Z80.A; Z80.B = 0; Z80.LDIR(); REPS2: msub.ROM(); // EI PC88.CALL(LNKSET); Z80.HL++; PC88.CALL(CHGWA); Mem.LD_16(TXTEND, Z80.HL); Z80.DE = stDE; return; REPB1: //Z80.A |= Z80.A; if (Z80.A == 0) { goto REPB3; } //Z80.HL = Mem.LD_16(LINKPT); Z80.HL = LINKPT; Z80.E = Z80.A; Z80.D = 0; Z80.HL += Z80.DE; //Mem.LD_16(LINKPT, Z80.HL); LINKPT = Z80.HL; Z80.HL = Mem.LD_16(TXTEND); Z80.DE = stDE; stDE = Z80.DE; stHL = Z80.HL; //Z80.A &= Z80.A; Z80.HL -= Z80.DE; Z80.HL++; Z80.C = Z80.L; Z80.B = Z80.H; Z80.HL = stHL; stHL = Z80.HL; Z80.E = Z80.A; Z80.D = 0; Z80.HL += Z80.DE; dmy = Z80.DE; Z80.DE = Z80.HL; Z80.HL = dmy; Z80.HL = stHL; // DI msub.RAM(); do// LDDR { Mem.LD_8(Z80.DE, Mem.LD_8(Z80.HL)); Z80.DE--; Z80.HL--; Z80.BC--; } while (Z80.BC != 0); REPB3: // DI msub.RAM(); Z80.DE = stDE; //Z80.DE = Mem.LD_16(HENTOP); Z80.DE = HENTOP; Z80.HL = EDBUF + 32; //Z80.A = Mem.LD_8(HENCO); Z80.A = HENCO; Z80.C = Z80.A; Z80.B = 0; Z80.LDIR(); stDE = Z80.DE; goto REPS2; }