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

  1. ;-> a.SystemCall
  2.  
  3. pc    RN 15
  4.  
  5.         EXTERN __main, Image$$RO$$Base
  6.  
  7. ;       ========== ADR macro
  8.  
  9. ;       ==========
  10.  
  11.         AREA  A$$code READONLY,CODE
  12.  
  13.         B __main
  14.  
  15. oursystemcall:
  16.  
  17.         STMDB R13!, {R0-R12,R14}
  18.         MOV R9, R0
  19.  
  20.         ; find and save current env & control values
  21.         MOV R0, #0
  22.         MOV R1, #0
  23.         MOV R2, #0
  24.         MOV R3, #2
  25.         MOV R4, #0
  26.         MOV R5, #0
  27.         MOV R6, #0
  28.         MOV R7, #0
  29.  
  30.         SWI &12 ; OS_SetEnv
  31.  
  32.         STMDB R13!, {R0-R7}
  33.  
  34.         MOV R0, #0
  35.         MOV R1, #0
  36.         MOV R2, #0
  37.         MOV R3, #0
  38.  
  39.         SWI &0F ; OS_Control
  40.  
  41.         STMDB R13!, {R0-R3}
  42.  
  43.         ; now set up env & control for called prog
  44.         ADR R0, exitCode
  45.         LDR R1, =Image$$RO$$Base
  46.         MOV R2, #0
  47.         MOV R3, #2
  48.         MOV R4, #0
  49.         MOV R5, #0
  50.         MOV R6, #0
  51.         MOV R7, #0
  52.  
  53.         SWI &12 ; OS_SetEnv
  54.  
  55.         STR R13, stackSave
  56.  
  57.         MOV R0, R9
  58.  
  59.         SWI &05 ; OS_CLI
  60.  
  61. exitCode:
  62.         LDR R13, stackSave
  63.  
  64.         LDMIA R13!, {R0-R3}
  65.  
  66.         SWI &0F ; OS_Control
  67.  
  68.         LDMIA R13!, {R0-R7}
  69.  
  70.         SWI &12 ; OS_SetEnv
  71.  
  72.         LDMIA R13!, {R0-R12, pc}^
  73.  
  74. stackSave:
  75.         DCD 0