home *** CD-ROM | disk | FTP | other *** search
- ;-> ourSystemCall
- R0 RN 0
- R1 RN 1
- R2 RN 2
- R3 RN 3
- R4 RN 4
- R5 RN 5
- R6 RN 6
- R7 RN 7
- R8 RN 8
- R9 RN 9
- R10 RN 10
- R11 RN 11
- R12 RN 12
- R13 RN 13
- R14 RN 14
- pc RN 15
-
- AREA |C$$data|
-
- |v$datasegment|
-
- IMPORT |__main|
- EXPORT oursystemcall
-
- AREA |C$$code|, CODE
- |V$codesegment|
-
- B |__main|
-
- oursystemcall
- STMDB R13!, {R0-R12,R14}
- MOV R9, R0
-
- ; find and save current env & control values
- MOV R0, #0
- MOV R1, #0
- MOV R2, #0
- MOV R3, #2
- MOV R4, #0
- MOV R5, #0
- MOV R6, #0
- MOV R7, #0
-
- SWI &12 ; OS_SetEnv
-
- STMDB R13!, {R0-R7}
-
- MOV R0, #0
- MOV R1, #0
- MOV R2, #0
- MOV R3, #0
-
- SWI &0F ; OS_Control
-
- STMDB R13!, {R0-R3}
-
- ; now set up env & control for called prog
- ADR R0, exitCode
- ; MOV R1, #&80000 ; 512Kb
- MOV R1, #&40000 ; 256Kb
- MOV R2, #0
- MOV R3, #2
- MOV R4, #0
- MOV R5, #0
- MOV R6, #0
- MOV R7, #0
-
- SWI &12 ; OS_SetEnv
-
- STR R13, stackSave
-
- MOV R0, R9
-
- SWI &05 ; OS_CLI
-
- exitCode
- LDR R13, stackSave
-
- LDMIA R13!, {R0-R3}
-
- SWI &0F ; OS_Control
-
- LDMIA R13!, {R0-R7}
-
- SWI &12 ; OS_SetEnv
-
- LDMIA R13!, {R0-R12, pc}^
- stackSave DCD 0
-
- END
-