home *** CD-ROM | disk | FTP | other *** search
/ Really Useful CD 1 / ReallyUsefulCD1.iso / extras / languages / smalltalk / _smalltalk / sources / a / systemcall < prev   
Encoding:
Text File  |  1989-11-18  |  1.3 KB  |  92 lines

  1. ;-> ourSystemCall
  2. R0 RN 0
  3. R1 RN 1
  4. R2 RN 2
  5. R3 RN 3
  6. R4 RN 4
  7. R5 RN 5
  8. R6 RN 6
  9. R7 RN 7
  10. R8 RN 8
  11. R9 RN 9
  12. R10 RN 10
  13. R11 RN 11
  14. R12 RN 12
  15. R13 RN 13
  16. R14 RN 14
  17. pc RN 15
  18.  
  19.          AREA  |C$$data|
  20.  
  21. |v$datasegment|
  22.  
  23.         IMPORT |__main|
  24.         EXPORT oursystemcall
  25.  
  26.         AREA  |C$$code|, CODE
  27. |V$codesegment|
  28.  
  29.         B |__main|
  30.  
  31. oursystemcall
  32.         STMDB R13!, {R0-R12,R14}
  33.         MOV R9, R0
  34.  
  35.         ; find and save current env & control values
  36.         MOV R0, #0
  37.         MOV R1, #0
  38.         MOV R2, #0
  39.         MOV R3, #2
  40.         MOV R4, #0
  41.         MOV R5, #0
  42.         MOV R6, #0
  43.         MOV R7, #0
  44.  
  45.         SWI &12 ; OS_SetEnv
  46.  
  47.         STMDB R13!, {R0-R7}
  48.  
  49.         MOV R0, #0
  50.         MOV R1, #0
  51.         MOV R2, #0
  52.         MOV R3, #0
  53.  
  54.         SWI &0F ; OS_Control
  55.  
  56.         STMDB R13!, {R0-R3}
  57.  
  58.         ; now set up env & control for called prog
  59.         ADR R0, exitCode
  60. ;        MOV R1, #&80000 ; 512Kb
  61.         MOV R1, #&40000 ; 256Kb
  62.         MOV R2, #0
  63.         MOV R3, #2
  64.         MOV R4, #0
  65.         MOV R5, #0
  66.         MOV R6, #0
  67.         MOV R7, #0
  68.  
  69.         SWI &12 ; OS_SetEnv
  70.  
  71.         STR R13, stackSave
  72.  
  73.         MOV R0, R9
  74.  
  75.         SWI &05 ; OS_CLI
  76.  
  77. exitCode
  78.         LDR R13, stackSave
  79.  
  80.         LDMIA R13!, {R0-R3}
  81.  
  82.         SWI &0F ; OS_Control
  83.  
  84.         LDMIA R13!, {R0-R7}
  85.  
  86.         SWI &12 ; OS_SetEnv
  87.  
  88.         LDMIA R13!, {R0-R12, pc}^
  89. stackSave DCD 0
  90.  
  91.         END
  92.