; in : IX=divisor (8000H <= IX < 10000H) MAKE_DIVTBL16: PUSH IX POP BC LD HL,0FFFFH LD A,L EX AF,AF' XOR A LD E,A MKDIVT16_L1: ADD HL,BC JR NC,MKDIVT16_L4 PUSH AF OR A SBC HL,BC INC HL EX DE,HL LD H,DIVTBL_H LD (HL),E INC H LD (HL),D INC H LD A,D OR E JR NZ,MKDIVT16_L2 EX AF,AF' INC A LD (HL),A JR MKDIVT16_L3 MKDIVT16_L2: EX AF,AF' LD (HL),A INC A MKDIVT16_L3: EX AF,AF' INC H POP AF LD (HL),A INC L EX DE,HL DEC HL ADD HL,BC MKDIVT16_L4: INC A JR NZ,MKDIVT16_L1 RET ; [DE] = [HL] / IX (8000H <= IX < 10000H, use DIVTBL) MPDIV16T: CALL CHECK_WORK RET C EXX PUSH IX POP BC LD HL,0 EXX MPDIV16T_L1: LD A,(HL) INC HL EXX LD D,L LD L,H LD H,DIVTBL_H SUB (HL) LD E,A INC H LD A,D SBC A,(HL) LD D,A INC H LD A,L SBC A,(HL) INC H LD H,(HL) EX DE,HL SBC HL,BC SBC A,0 JR C,MPDIV16T_L2 INC D SBC HL,BC SBC A,0 INC D JR NC,MPDIV16T_L3 DEC D MPDIV16T_L2: ADD HL,BC MPDIV16T_L3: LD A,D EXX LD (DE),A INC DE DJNZ MPDIV16T_L1 DEC C JP NZ,MPDIV16T_L1 OR A RET