( 16 BIT INTEGER DIVIDE ROUTINE: M N UN/ Q R ) DECIMAL          FORWARD .ZERO FORWARD i5 FORWARD i6                             FORWARD i1 FORWARD i2 FORWARD i3 FORWARD i4                     SUBR unsdiv <ASSEMBLE L C MOV, H B MOV, D A MOV, 0 H LXI,       E ORA, .ZERO JRZ, B A MOV, 16 B MVI,                            LABEL i1 C RALR, RAL, H DADC, D DSBC,                           LABEL i2 CMC, i5 JRNC,                                          LABEL i3 i1 DJNZ, i6 JMPR,                                      LABEL i4 C RALR, RAL, H DADC, A ANA, D DADC,                    i3 JRC, i2 JRZ,                                                 LABEL i5 i4 DJNZ, D DAD, A ANA, ( MAKE IT POS )                 LABEL i6 C RALR, RAL, A D MOV, C E MOV,                         LABEL .ZERO RET, ASSEMBLE>                                      SUBR UNSDIV H PUSH, D DSBC, CY, IF, 0 D LXI, H POP, ELSE,       H POP, unsdiv CALL, THEN, RET, CODE UN/ EXX, D POP, H POP,      UNSDIV CALL, H PUSH, D PUSH, EXX, NEXT DECIMAL -->              ( COMPUTE DELTA FOR 1 COORDINATE - CLEAR VECTOR )               ( FIRST A NEGATION SUBROUTINE )                                 SUBR CMPHL H A MOV, CMA, A H MOV, L A MOV, CMA, A L MOV, H INX, RET,                                                            ( IN: HL=TARGET, DE=TIME, BC=START )                            SUBR CDELTA B PUSH, A ANA, B DSBC, CY~, IF, UNSDIV CALL,        ELSE, CMPHL CALL, UNSDIV CALL, CMPHL CALL, XCHG, CMPHL CALL,    XCHG, THEN, B POP, B DAD, RET,                                  ( NEW SQUARE ROOT ROUTINE )                                     F= sqrtl                                                        SUBR sqrt <ASSEMBLE                                             1 A MVI, 1 B LXI, 1 D LXI,                                      LABEL sqrtl A ANA, D DSBC, RZ, RC, D DAD, B INX, B INX,         XCHG, B DAD, A INR, XCHG, sqrtl JMPR, ASSEMBLE>                 DECIMAL -->                                                                                                                     ( ROUTINE TO VECTOR BETWEEN CURRENT POSITION AND DEST           IN TIME GIVEN IN VECTOR )                                       CODE A->DEST/TIME B PUSH, Y PUSHX,                              vaddr LIYD,                                                     VXH Y B LDX, VX Y C LDX, VDESTXH Y H LDX, VDESTX Y L LDX,       TTIMERH Y D LDX, TTIMER Y E LDX, D PUSH, CDELTA CALL,           H VXH Y STX, L VX Y STX, D VDXH Y STX, E VDX Y STX,             VYH Y B LDX, VY Y C LDX, VDESTYH Y H LDX, VDESTY Y L LDX,       D POP, CDELTA CALL,                                             H VYH Y STX, L VY Y STX, D VDYH Y STX, E VDY Y STX,             Y POPX, B POP, NEXT                                             DECIMAL -->                                                                                                                                                                                                                                                                                                                     