; in : IX=divisor (8000H <= IX < 10000H), H=Table addr.H MAKE_DIVTBL16: LD A,H EX AF,AF' PUSH IX POP BC INC BC SRL B RR C LD A,B OR C JR NZ,MKDIVT16_L1 SET 7,B MKDIVT16_L1: PUSH BC XOR A LD H,A LD L,A EXX POP BC LD D,A LD E,A LD L,A MKDIVT16_L2: EX AF,AF' LD H,A EX AF,AF' LD (HL),E INC H LD (HL),D INC H LD (HL),A INC L EXX SET 7,H JR MKDIVT16_L4 MKDIVT16_L3: INC A RET Z EXX EX DE,HL ADD HL,BC EX DE,HL EXX MKDIVT16_L4: OR A SBC HL,BC JR NC,MKDIVT16_L3 ADD HL,BC EXX JR MKDIVT16_L2 ; [DE] = [HL] / IX (8000H <= IX < 10000H, use DIVTBL2) MPDIV16T2: CALL CHECK_WORK RET C EXX PUSH IX POP BC LD HL,0 EXX MPDIV16T2_L1: LD A,(HL) INC HL EXX LD D,L LD E,A PUSH DE LD L,H SRL H RR D RRA 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) EX DE,HL POP DE EX AF,AF' XOR A SRL E ADC HL,HL ADC A,A BIT 0,C JR Z,MPDIV16T2_L3 EX AF,AF' LD D,A ADD A,L LD L,A LD A,D JR NC,MPDIV16T2_L2 INC H JR NZ,MPDIV16T2_L2 EX AF,AF' INC A EX AF,AF' MPDIV16T2_L2: EX AF,AF' MPDIV16T2_L3: OR A JR Z,MPDIV16T2_L5 MPDIV16T2_L4: SBC HL,BC SBC A,0 EX AF,AF' INC A EX AF,AF' JP NZ,MPDIV16T2_L4 MPDIV16T2_L5: EX AF,AF' OR A MPDIV16T2_L6: INC A SBC HL,BC JR NC,MPDIV16T2_L6 ADD HL,BC DEC A EXX LD (DE),A INC DE DJNZ MPDIV16T2_L1 DEC C JP NZ,MPDIV16T2_L1 OR A RET