
 1000  *SAVE S.DIV.16/16
 1010  *--------------------------------
 1020  *      DIVIDE 16 BY 16
 1030  *--------------------------------
 1040  ACL    .EQ $50
 1050  ACH    .EQ $51
 1060  XTNDL  .EQ $52
 1070  XTNDH  .EQ $53
 1080  AUXL   .EQ $54
 1090  AUXH   .EQ $55
 1100  *--------------------------------
 1110  DIVMON LDY #16      INDEX FOR 16 BITS
 1120  .1     ASL ACL      DIVIDEND/2, CLEAR QUOTIENT BIT
 1130         ROL ACH
 1140         ROL XTNDL
 1150         ROL XTNDH
 1160         SEC
 1170         LDA XTNDL    TRY SUBTRACTING DIVISOR
 1180         SBC AUXL
 1190         TAX
 1200         LDA XTNDH
 1210         SBC AUXH
 1220         BCC .2       TOO SMALL, QBIT=0
 1230         STX XTNDL    OKAY, STORE REMAINDER
 1240         STA XTNDH
 1250         INC ACL      SET QUOTIENT BIT = 1
 1260  .2     DEY          NEXT STEP
 1270         BNE .1
 1280         RTS
 1290  *--------------------------------
 1300  *      SIGNED DIVISION 32/16
 1310  *--------------------------------
 1320  SIGN   .EQ $2F
 1330  *--------------------------------
 1340  SIGNED.DIV.MON
 1350         LDY #0
 1360         STY XTNDL    CLEAR ACC EXTENSION
 1370         STY XTNDH
 1380         STY SIGN
 1390         LDX #ACL
 1400         JSR ABS
 1410         LDX #AUXL
 1420         JSR ABS
 1430         JSR DIVMON
 1440         LDA SIGN
 1450         BPL .1       RESULT POSITIVE
 1455         LDX #ACL
 1460         JSR COMPLEMENT
 1470  .1     RTS
 1480  *--------------------------------
 1490  ABS    LDA 1,X      LOOK AT SIGN
 1500         BPL ABSRET   POSITIVE
 1510         EOR SIGN     COMPLEMENT RESULT SIGN
 1520         STA SIGN
 1530  COMPLEMENT
 1540         SEC
 1550         TYA          =0
 1560         SBC 0,X
 1570         STA 0,X
 1580         TYA          =0
 1590         SBC 1,X
 1600         STA 1,X
 1610  ABSRET RTS

