; [DE..DE+(PBIN_SIZE)-1] += [HL..HL+(PBIN_SIZE)-1] MPADD: LD IX,MPADD_JTBL CALL MPADDSUB_SETUP RET C JP (IX) MPADD_L1: MPADD_J8: LD A,(DE) ADC A,(HL) LD (DE),A DEC HL DEC DE MPADD_J7: LD A,(DE) ADC A,(HL) LD (DE),A DEC HL DEC DE MPADD_J6: LD A,(DE) ADC A,(HL) LD (DE),A DEC HL DEC DE MPADD_J5: LD A,(DE) ADC A,(HL) LD (DE),A DEC HL DEC DE MPADD_J4: LD A,(DE) ADC A,(HL) LD (DE),A DEC HL DEC DE MPADD_J3: LD A,(DE) ADC A,(HL) LD (DE),A DEC HL DEC DE MPADD_J2: LD A,(DE) ADC A,(HL) LD (DE),A DEC HL DEC DE MPADD_J1: LD A,(DE) ADC A,(HL) LD (DE),A DEC HL DEC DE DJNZ MPADD_L1 DEC C JR NZ,MPADD_L1 RET NC EX DE,HL MPADD_L2: INC (HL) DEC HL JR Z,MPADD_L2 RET MPADD_JTBL: DW MPADD_J8,MPADD_J1,MPADD_J2,MPADD_J3 DW MPADD_J4,MPADD_J5,MPADD_J6,MPADD_J7 ; [DE..DE+(PBIN_SIZE)-1] -= [HL..HL+(PBIN_SIZE)-1] MPSUB: LD IX,MPSUB_JTBL CALL MPADDSUB_SETUP RET C JP (IX) MPSUB_L1: MPSUB_J8: LD A,(DE) SBC A,(HL) LD (DE),A DEC HL DEC DE MPSUB_J7: LD A,(DE) SBC A,(HL) LD (DE),A DEC HL DEC DE MPSUB_J6: LD A,(DE) SBC A,(HL) LD (DE),A DEC HL DEC DE MPSUB_J5: LD A,(DE) SBC A,(HL) LD (DE),A DEC HL DEC DE MPSUB_J4: LD A,(DE) SBC A,(HL) LD (DE),A DEC HL DEC DE MPSUB_J3: LD A,(DE) SBC A,(HL) LD (DE),A DEC HL DEC DE MPSUB_J2: LD A,(DE) SBC A,(HL) LD (DE),A DEC HL DEC DE MPSUB_J1: LD A,(DE) SBC A,(HL) LD (DE),A DEC HL DEC DE DJNZ MPSUB_L1 DEC C JR NZ,MPSUB_L1 RET NC MPSUB_L2: LD A,(DE) DEC A LD (DE),A DEC DE INC A JR Z,MPSUB_L2 RET MPSUB_JTBL: DW MPSUB_J8,MPSUB_J1,MPSUB_J2,MPSUB_J3 DW MPSUB_J4,MPSUB_J5,MPSUB_J6,MPSUB_J7 ; MPADDSUB_SETUP: LD BC,(PBIN_SIZE) DEC BC ADD HL,BC EX DE,HL ADD HL,BC EX DE,HL PUSH DE PUSH HL LD HL,(PBIN_SIZE) LD BC,(PWORK2_SKIP) SBC HL,BC JR Z,MPADDSUB_SETUP_RET EX DE,HL LD A,E AND 7 ADD A,A PUSH IX POP HL LD C,A LD B,0 ADD HL,BC LD C,(HL) INC HL LD B,(HL) PUSH BC POP IX LD BC,7 EX DE,HL ADD HL,BC LD A,L SRL H RRA SRL H RRA SRL H RRA LD C,H OR A JR Z,MPADDSUB_SETUP_L1 INC C MPADDSUB_SETUP_L1: LD B,A POP HL POP DE RET MPADDSUB_SETUP_RET: POP HL POP DE SCF RET