home *** CD-ROM | disk | FTP | other *** search
-
- ;
- ; Macros file
- ; Wow.
- ;
-
- macro exg
- {
- #if p_num>2
- #error Too many arguments
- #endif
- #if p_num<2
- #error Too few arguments
- #endif
- eor p0,p0,p1
- eor p1,p0,p1
- eor p0,p0,p1
- }
-
- macro div
- {
- #if p_num>3
- #error Too many arguments
- #endif
- #if p_num<3
- #error Too few arguments
- #endif
-
- #if p0==p1
- #error Registers must be different
- #endif
- #if p0==p2
- #error Registers must be different
- #endif
- #if p1==p2
- #error Registers must be different
- #endif
-
- ; Division code by Hugo Fiennes
- mov temp_reg,#0
- cmp p1,#0
- rsblt p1,p1,#0
- sublt temp_reg,temp_reg,#1
- cmp p2,#0
- rsblt p2,p2,#0
- mvnlt temp_reg,temp_reg
- str temp_reg,_minusflag
-
- mov temp_reg,#32
- mov p0,#0
- ._loop
- adds p1,p1,p1
- adcs p0,p0,p0
- cmp p0,p2
- subge p0,p0,p2
- addge p1,p1,#1
- sub temp_reg,temp_reg,#1
- cmp temp_reg,#0
- bne _loop
-
- ldr temp_reg,_minusflag
- cmp temp_reg,#0
- rsbne p1,p1,#0
-
- mov p0,p1
- b _end
- ._minusflag dcd 0
- ._end
- }
-
- macro fstdiv
- {
- ; Division code by Hugo Fiennes
- mov temp_reg,#0
- cmp p1,#0
- rsblt p1,p1,#0
- sublt temp_reg,temp_reg,#1
- cmp p2,#0
- rsblt p2,p2,#0
- mvnlt temp_reg,temp_reg
-
- mov p0,#0
-
- ._loop
- #rept 32
- adds p1,p1,p1
- adcs p0,p0,p0
- cmp p0,p2
- subge p0,p0,p2
- addge p1,p1,#1
- #endr
-
- cmp temp_reg,#0
- rsbne p1,p1,#0
-
- mov p0,p1
-
- ._end
- }
-