home *** CD-ROM | disk | FTP | other *** search
-
- macro loadrma m0,m1
- ;load filename m0 in rma, return address in m1
- {
- STMFD R13!,{R0-R4}
- MOV R1,m0
- filelength R1,R2
- MOVVS R2,#4 ;R2 is used internally as an error type marker
- BVS _LOADRMA1
- MOVNE R2,R0
- BNE _LOADRMA1
- STMFD R13!,{R0,R2-R3}
- ADD R3,R2,#3
- BIC R3,R3,#3
- MOV R0,#6
- SWI XOS_Module
- MOVVS R14,R0
- MOVVC R14,R2
- LDMFD R13!,{R0,R2-R3}
- MOVVS R0,R14
- MOVVC R2,R14
- MOVVS R14,R0
- BVS _LOADRMA2
- STMFD R13!,{R0-R3}
- MOV R1,R1
- MOV R2,R2
- MOV R0,#255
- MOV R3,#0
- SWI XOS_File
- MOVVS R14,R0
- LDMFD R13!,{R0-R3}
- MOVVS R0,R14
- MOV R14,R2
- BVC _LOADRMA2
- STMFD R13!,{R0}
- STMFD R13!,{R0,R2}
- ;MOV R2,R2
- MOV R0,#7
- SWI XOS_Module
- MOVVS R14,R0
- LDMFD R13!,{R0,R2}
- MOVVS R0,R14
- LDMFD R13!,{R0}
- MOV R2,#4
- ._LOADRMA1
- CMP R2,#0
- CMPNE R2,#2
- MOVEQ R0,#19
- SWIEQ XOS_File
- MOV R14,R0
- ._LOADRMA2
- LDMFD R13!,{R0-R4}
- MOVVC m1,R14
- MOVVS R0,R14
- }
-
- macro claimrma m0,m1
- {
- STMFD R13!,{R0,R2-R3}
- ADD R3,m0,#3
- BIC R3,R3,#3
- MOV R0,#6
- SWI XOS_Module
- MOVVS R14,R0
- MOVVC R14,R2
- LDMFD R13!,{R0,R2-R3}
- MOVVS R0,R14
- MOVVC m1,R14
- }
-
- macro releaserma m0
- ;VS error
- {
- STMFD R13!,{R0,R2}
- MOV R2,m0
- MOV R0,#7
- SWI XOS_Module
- MOVVS R14,R0
- LDMFD R13!,{R0,R2}
- MOVVS R0,R14
- }
-
- macro filelength m0,m1
- ;VS if error
- ;NE if not a file, type in R0.
- {
- STMFD R13!,{R0-R5}
- MOV R1,m0
- MOV R0,#5
- SWI XOS_File
- MOV R14,R4
- MOVVS R14,R0
- MOVVS R0,#0
- CMP R0,#1
- MOVNE R14,R0
- LDMFD R13!,{R0-R5}
- MOVVC m1,R14
- MOVNE R0,R14
- MOVVS R0,R14
- }
-
- macro getfiletype m0,m1
- ;VS if error
- ;m1=0 if unable to find
- {
- STMFD R13!,{R0-R6}
- MOV R0,#20
- MOV R1,m0
- SWI XOS_File
- MOV R14,R6
- CMP R0,#0
- MOVEQ R14,#0
- MOVVS R14,R0
- LDMFD R13!,{R0-R6}
- MOVVC m1,R14
- MOVVS R0,R14
- }
-
-
- macro loadfile m0,m1
- ;filename in m0, load adress in m1
- {
- STMFD R13!,{R0-R3}
- MOV R1,m0
- MOV R2,m1
- MOV R0,#255
- MOV R3,#0
- SWI XOS_File
- MOVVS R14,R0
- LDMFD R13!,{R0-R3}
- MOVVS R0,R14
- }
-
- macro MYDIV m0,m1,m2,t0
- {
- TST R13,#3
- MOVNE PC,#0
- CMP m1,#0
- RSBLT m1,m1,#0
- EORLT R13,R13,#1
- CMP m2,#0
- RSBLT m2,m2,#0
- EORLT R13,R13,#2
- BNE _MYDIV4
- CMP m1,#0
- MOVEQ m0,#0
- MOVNE m0,#&7f000000
- B _MYDIV1
- ._MYDIV4
- MOV t0,#1
- ._MYDIV2
- CMP m2,#&80000000
- CMPCC m2,m1
- MOVCC m2,m2,LSL #1
- MOVCC t0,t0,LSL #1
- BCC _MYDIV2
- MOV m0,#0
- ._MYDIV3
- CMP m1,m2
- SUBCS m1,m1,m2
- ADDCS m0,m0,t0
- MOVS t0,t0,LSR #1
- MOVNE m2,m2,LSR #1
- BNE _MYDIV3
- ._MYDIV1
- TST R13,#2
- RSBNE m2,m2,#0
- TST R13,#1
- RSBNE m1,m1,#0
- EORNE R13,R13,#2
- TST R13,#2
- RSBNE m0,m0,#0
- BIC R13,R13,#3
- }
-