; [DE..DE+(PBIN_SIZE)-1] = [HL..HL+(PBIN_SIZE)-1] / IX (0100H <= IX < 8000H) MPDIV9_15: LD BC,(PWORK2_SKIP) ADD HL,BC EX DE,HL ADD HL,BC EX DE,HL PUSH HL LD HL,(PBIN_SIZE) SBC HL,BC DEC HL INC L INC H LD C,H LD B,L PUSH DE PUSH BC PUSH IX POP BC LD A,B CP 40H JP NC,MPDIV9_15_7 CP 20H JP NC,MPDIV9_15_6 CP 10H JP NC,MPDIV9_15_5 CP 08H JP NC,MPDIV9_15_4 CP 04H JP NC,MPDIV9_15_3 CP 02H JP NC,MPDIV9_15_2 JP MPDIV9_15_1 MPDIV9_15_1: LD L,B LD A,C SRL L RRA RR L RRA RR L LD H,A CALL MPDIV9_15_MAKETBL POP BC POP DE POP HL MPDIV9_15_1_L1: LD A,(HL) INC HL EXX LD D,L SRA H RR L LD H,DIVTBL2_H SUB (HL) LD E,A INC H LD A,D SBC A,(HL) LD D,A INC H LD A,(HL) LD H,D LD L,E ADD HL,BC JR NC,MPDIV9_15_1_L2 INC A LD D,H LD E,L ADD HL,BC JR C,MPDIV9_15_1_L5 MPDIV9_15_1_L2: EX DE,HL MPDIV9_15_1_L3: EXX LD (DE),A INC DE DJNZ MPDIV9_15_1_L1 MPDIV9_15_1_L4: DEC C JR NZ,MPDIV9_15_1_L1 OR A RET MPDIV9_15_1_L5: INC A EXX LD (DE),A INC DE DJNZ MPDIV9_15_1_L1 JR MPDIV9_15_1_L4 MPDIV9_15_2: LD L,B LD A,C SRL L RRA RR L RRA RR L RRA RR L LD H,A CALL MPDIV9_15_MAKETBL POP BC POP DE POP HL MPDIV9_15_2_L1: LD A,(HL) INC HL EXX LD D,L SRL H RR L SRL H RR L LD H,DIVTBL2_H SUB (HL) LD E,A INC H LD A,D SBC A,(HL) LD D,A INC H LD A,(HL) LD H,D LD L,E ADD HL,BC JR NC,MPDIV9_15_2_L2 INC A LD D,H LD E,L ADD HL,BC JR C,MPDIV9_15_2_L5 MPDIV9_15_2_L2: EX DE,HL MPDIV9_15_2_L3: EXX LD (DE),A INC DE DJNZ MPDIV9_15_2_L1 MPDIV9_15_2_L4: DEC C JR NZ,MPDIV9_15_2_L1 OR A RET MPDIV9_15_2_L5: INC A EXX LD (DE),A INC DE DJNZ MPDIV9_15_2_L1 JR MPDIV9_15_2_L4 MPDIV9_15_3: LD L,B LD A,C SRL L RRA RR L RRA RR L RRA RR L RRA RR L LD H,A CALL MPDIV9_15_MAKETBL POP BC POP DE POP HL MPDIV9_15_3_L1: LD A,(HL) INC HL EXX LD D,L LD E,A LD A,H RRA RR L RRA RR L RRA RR L LD H,DIVTBL2_H LD A,E SUB (HL) LD E,A INC H LD A,D SBC A,(HL) LD D,A INC H LD A,(HL) LD H,D LD L,E ADD HL,BC JR NC,MPDIV9_15_3_L2 INC A LD D,H LD E,L ADD HL,BC JR C,MPDIV9_15_3_L5 MPDIV9_15_3_L2: EX DE,HL MPDIV9_15_3_L3: EXX LD (DE),A INC DE DJNZ MPDIV9_15_3_L1 MPDIV9_15_3_L4: DEC C JR NZ,MPDIV9_15_3_L1 OR A RET MPDIV9_15_3_L5: INC A EXX LD (DE),A INC DE DJNZ MPDIV9_15_3_L1 JR MPDIV9_15_3_L4 MPDIV9_15_4: LD H,B LD L,C ADD HL,HL ADD HL,HL ADD HL,HL CALL MPDIV9_15_MAKETBL POP BC POP DE POP HL MPDIV9_15_4_L1: LD A,(HL) INC HL EXX LD D,L ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL LD L,H LD H,DIVTBL2_H SUB (HL) LD E,A INC H LD A,D SBC A,(HL) LD D,A INC H LD A,(HL) LD H,D LD L,E ADD HL,BC JR NC,MPDIV9_15_4_L2 INC A LD D,H LD E,L ADD HL,BC JR C,MPDIV9_15_4_L5 MPDIV9_15_4_L2: EX DE,HL MPDIV9_15_4_L3: EXX LD (DE),A INC DE DJNZ MPDIV9_15_4_L1 MPDIV9_15_4_L4: DEC C JR NZ,MPDIV9_15_4_L1 OR A RET MPDIV9_15_4_L5: INC A EXX LD (DE),A INC DE DJNZ MPDIV9_15_4_L1 JR MPDIV9_15_4_L4 MPDIV9_15_5: LD H,B LD L,C ADD HL,HL ADD HL,HL CALL MPDIV9_15_MAKETBL POP BC POP DE POP HL MPDIV9_15_5_L1: LD A,(HL) INC HL EXX LD D,L ADD HL,HL ADD HL,HL ADD HL,HL LD L,H LD H,DIVTBL2_H SUB (HL) LD E,A INC H LD A,D SBC A,(HL) LD D,A INC H LD A,(HL) LD H,D LD L,E ADD HL,BC JR NC,MPDIV9_15_5_L2 INC A LD D,H LD E,L ADD HL,BC JR C,MPDIV9_15_5_L5 MPDIV9_15_5_L2: EX DE,HL MPDIV9_15_5_L3: EXX LD (DE),A INC DE DJNZ MPDIV9_15_5_L1 MPDIV9_15_5_L4: DEC C JR NZ,MPDIV9_15_5_L1 OR A RET MPDIV9_15_5_L5: INC A EXX LD (DE),A INC DE DJNZ MPDIV9_15_5_L1 JR MPDIV9_15_5_L4 MPDIV9_15_6: LD H,B LD L,C ADD HL,HL CALL MPDIV9_15_MAKETBL POP BC POP DE POP HL MPDIV9_15_6_L1: ; 160..200 clk LD A,(HL) INC HL EXX LD D,L ADD HL,HL ADD HL,HL LD L,H LD H,DIVTBL2_H SUB (HL) LD E,A INC H LD A,D SBC A,(HL) LD D,A INC H LD A,(HL) LD H,D LD L,E ADD HL,BC JR NC,MPDIV9_15_6_L2 INC A LD D,H LD E,L ADD HL,BC JR C,MPDIV9_15_6_L5 MPDIV9_15_6_L2: EX DE,HL MPDIV9_15_6_L3: EXX LD (DE),A INC DE DJNZ MPDIV9_15_6_L1 MPDIV9_15_6_L4: DEC C JR NZ,MPDIV9_15_6_L1 OR A RET MPDIV9_15_6_L5: INC A EXX LD (DE),A INC DE DJNZ MPDIV9_15_6_L1 JR MPDIV9_15_6_L4 MPDIV9_15_7: LD H,B LD L,C CALL MPDIV9_15_MAKETBL POP BC POP DE POP HL MPDIV9_15_7_L1: LD A,(HL) INC HL EXX LD D,L ADD HL,HL LD L,H LD H,DIVTBL2_H SUB (HL) LD E,A INC H LD A,D SBC A,(HL) LD D,A INC H LD A,(HL) LD H,D LD L,E ADD HL,BC JR NC,MPDIV9_15_7_L2 INC A LD D,H LD E,L ADD HL,BC JR C,MPDIV9_15_7_L5 MPDIV9_15_7_L2: EX DE,HL MPDIV9_15_7_L3: EXX LD (DE),A INC DE DJNZ MPDIV9_15_7_L1 MPDIV9_15_7_L4: DEC C JR NZ,MPDIV9_15_7_L1 OR A RET MPDIV9_15_7_L5: INC A EXX LD (DE),A INC DE DJNZ MPDIV9_15_7_L1 JR MPDIV9_15_7_L4 ; in : HL=normalized divisor(4000H..7FFFH) BC=divisor ; out : BC'=-divisor HL'=0 MPDIV9_15_MAKETBL: EX DE,HL XOR A LD H,A LD L,A PUSH BC EXX POP BC LD D,A LD E,A LD L,A MPDIV9_15_MT_L1: LD H,DIVTBL2_H LD (HL),E INC H LD (HL),D INC H LD (HL),A INC L EXX SET 7,H JR MPDIV9_15_MT_L3 MPDIV9_15_MT_L2: INC A JR Z,MPDIV9_15_MT_L4 EXX EX DE,HL ADD HL,BC EX DE,HL EXX MPDIV9_15_MT_L3: OR A SBC HL,DE JR NC,MPDIV9_15_MT_L2 ADD HL,DE EXX JR MPDIV9_15_MT_L1 MPDIV9_15_MT_L4: EXX LD H,A LD L,A LD A,B CPL LD B,A LD A,C CPL LD C,A INC BC EXX RET