; division routine
; 1. calculate flag if result is negate and convert operands to positiv
; 2. second "divide" with unsigned suczessive Approximation
; 3. fix the sign of result
.MACRO INTdivide LDR R2,%2 LDR R3,%3
MOV R0,#0 CMP R2,#0 RSBLT R2,R2,#0 SUBLT R0,R0,#1 CMP R3,#0 RSBLT R3,R3,#0 MVNLT R0,R0
MOV R1,#0
ADDS R2,R2,R2 ADCS R1,R1,R1 CMP R1,R3 SUBGE R1,R1,R3 ADDGE R2,R2,#1\l2
ADDS R2,R2,R2 ADCS R1,R1,R1 CMP R1,R3 SUBGE R1,R1,R3 ADDGE R2,R2,#1\l3
ADDS R2,R2,R2 ADCS R1,R1,R1 CMP R1,R3 SUBGE R1,R1,R3 ADDGE R2,R2,#1\l4
ADDS R2,R2,R2 ADCS R1,R1,R1 CMP R1,R3 SUBGE R1,R1,R3 ADDGE R2,R2,#1\l5
ADDS R2,R2,R2 ADCS R1,R1,R1 CMP R1,R3 SUBGE R1,R1,R3 ADDGE R2,R2,#1\l6
ADDS R2,R2,R2 ADCS R1,R1,R1 CMP R1,R3 SUBGE R1,R1,R3 ADDGE R2,R2,#1\l7
ADDS R2,R2,R2 ADCS R1,R1,R1 CMP R1,R3 SUBGE R1,R1,R3 ADDGE R2,R2,#1\l8
ADDS R2,R2,R2 ADCS R1,R1,R1 CMP R1,R3 SUBGE R1,R1,R3 ADDGE R2,R2,#1\l9
ADDS R2,R2,R2 ADCS R1,R1,R1 CMP R1,R3 SUBGE R1,R1,R3 ADDGE R2,R2,#1\l10
ADDS R2,R2,R2 ADCS R1,R1,R1 CMP R1,R3 SUBGE R1,R1,R3 ADDGE R2,R2,#1\l11
ADDS R2,R2,R2 ADCS R1,R1,R1 CMP R1,R3 SUBGE R1,R1,R3 ADDGE R2,R2,#1\l12
ADDS R2,R2,R2 ADCS R1,R1,R1 CMP R1,R3 SUBGE R1,R1,R3 ADDGE R2,R2,#1\l13
ADDS R2,R2,R2 ADCS R1,R1,R1 CMP R1,R3 SUBGE R1,R1,R3 ADDGE R2,R2,#1\l14
ADDS R2,R2,R2 ADCS R1,R1,R1 CMP R1,R3 SUBGE R1,R1,R3 ADDGE R2,R2,#1\l15
ADDS R2,R2,R2 ADCS R1,R1,R1 CMP R1,R3 SUBGE R1,R1,R3 ADDGE R2,R2,#1\l16
ADDS R2,R2,R2 ADCS R1,R1,R1 CMP R1,R3 SUBGE R1,R1,R3 ADDGE R2,R2,#1\l17
ADDS R2,R2,R2 ADCS R1,R1,R1 CMP R1,R3 SUBGE R1,R1,R3 ADDGE R2,R2,#1\l18
ADDS R2,R2,R2 ADCS R1,R1,R1 CMP R1,R3 SUBGE R1,R1,R3 ADDGE R2,R2,#1\l19
ADDS R2,R2,R2 ADCS R1,R1,R1 CMP R1,R3 SUBGE R1,R1,R3 ADDGE R2,R2,#1\l20
ADDS R2,R2,R2 ADCS R1,R1,R1 CMP R1,R3 SUBGE R1,R1,R3 ADDGE R2,R2,#1\l21
ADDS R2,R2,R2 ADCS R1,R1,R1 CMP R1,R3 SUBGE R1,R1,R3 ADDGE R2,R2,#1\l22
ADDS R2,R2,R2 ADCS R1,R1,R1 CMP R1,R3 SUBGE R1,R1,R3 ADDGE R2,R2,#1\l23
ADDS R2,R2,R2 ADCS R1,R1,R1 CMP R1,R3 SUBGE R1,R1,R3 ADDGE R2,R2,#1\l24
ADDS R2,R2,R2 ADCS R1,R1,R1 CMP R1,R3 SUBGE R1,R1,R3 ADDGE R2,R2,#1\l25
ADDS R2,R2,R2 ADCS R1,R1,R1 CMP R1,R3 SUBGE R1,R1,R3 ADDGE R2,R2,#1\l26
ADDS R2,R2,R2 ADCS R1,R1,R1 CMP R1,R3 SUBGE R1,R1,R3 ADDGE R2,R2,#1\l27
ADDS R2,R2,R2 ADCS R1,R1,R1 CMP R1,R3 SUBGE R1,R1,R3 ADDGE R2,R2,#1\l28
ADDS R2,R2,R2 ADCS R1,R1,R1 CMP R1,R3 SUBGE R1,R1,R3 ADDGE R2,R2,#1\l29
ADDS R2,R2,R2 ADCS R1,R1,R1 CMP R1,R3 SUBGE R1,R1,R3 ADDGE R2,R2,#1\l30
ADDS R2,R2,R2 ADCS R1,R1,R1 CMP R1,R3 SUBGE R1,R1,R3 ADDGE R2,R2,#1\l31
ADDS R2,R2,R2 ADCS R1,R1,R1 CMP R1,R3 SUBGE R1,R1,R3 ADDGE R2,R2,#1\l32
ADDS R2,R2,R2 ADCS R1,R1,R1 CMP R1,R3 SUBGE R1,R1,R3 ADDGE R2,R2,#1 CMP R0,#0 RSBNE R2,R2,#0 STR R2,%1 .ENDM