Retrocomputing

SysGo module

The SysGo module starts the first process and restarts it if it dies.

         nam SysGo
         ttl SysGo - system bootstrap startup module

* Copyright 1980 by Motorola, Inc., and Microware Systems Corp.,
* Reproduced Under License

*
* This source code is the proprietary confidential property of
* Microware Systems Corporation, and is provided to licensee
* solely  for documentation and educational purposes. Reproduction,
* publication, or distribution in any form to any party other than
* the licensee is strictly prohibited!
*

         use  defsfile

*****
*
*  Coldstart Module
*
* Starts Cmd Module On Path "/Term"
*
Type     set  SYSTM+OBJCT
Revs     set  REENT+1
         mod  CldEnd,CldNam,Type,Revs,CldEnt,CldMem
CldNam   fcs  /SysGo/

         fcb  5          Edition number

         rmb  256        stack space
CldMem   equ  .

DirStr   fcc  "Cmds"
         fcb  $D
         fcc  ",,,,,,,,,," room for patch
CMDSTR   fcc  "Shell"
         fcb  $D
         fcc  ",,,,,,,,,," room for patch
SHLFUN   fcc  "STARTUP -p"
         fcb  $D
FUNSIZ   equ  *-SHLFUN
         fcc  ",,,,,,,,,," room for patch


CldEnt   leax CLICPT,PCR Set up signal intercept
         OS9  F$ICPT
         leax DirStr,PCR Get directory name ptr
         lda  #EXEC.     Get execution mode
         OS9  I$ChgDir   Change execution directory
* NOTE: do not test for error, at least system will boot
         leax CMDSTR,PCR Get ptr to "shell"
         leau SHLFUN,PCR Get ptr to startup file name
         ldd  #OBJCT*256 Get type
         ldy  #FUNSIZ    Size of parameters
         OS9  F$FORK     Execute startup file
         bcs  CLDERR     Branch if error
         OS9  F$WAIT     Wait for it
CLDM10   leax CMDSTR,PCR Get command name ptr
         ldd  #OBJCT*256
         ldy  #0         No parameters
         OS9  F$FORK     Start new process
         bcs  CLDERR
         OS9  F$WAIT     Wait for it to die
         bcc  CLDM10

CLDERR   jmp  [$FFFE]

CLICPT   rti             COLDSTART Intercept routine

         emod            Module Crc

CldEnd   equ  *


         end