Mercurial > hg > Members > kono > nitros9-code
view 3rdparty/packages/cc/sources/process.a @ 867:0198655f2552
Added sources
author | boisy |
---|---|
date | Thu, 16 Jan 2003 19:54:21 +0000 |
parents | |
children |
line wrap: on
line source
* * Process system calls * use ..../defs/os9defs.a psect process_a,0,0,2,0,0 * kill(pid,signal) kill: lda 3,s get process id ldb 5,s get signal number os9 F$SEND lbra _sysret * wait(status) wait: clra clear these so clrb signal can be detected os9 F$WAIT lbcs _os9err ldx 2,s beq wait10 stb 1,x clr ,x wait10 tfr a,b clra rts * setpr(pid,priority) setpr: lda 3,s get process id ldb 5,s get priority os9 F$SPRIOR call os9 lbra _sysret * chain(modname,paramsize,paramp,type,language,datasize) * * This call can never return to the caller. The stack pointer * must be adjusted to point into the direct page which, in general, * contains global variables belonging to the program. OS-9 will * therefore overwrite these values making the state of the program * undefined after the call. * In addition, we cannot report the error here because the module * name string could easily be in the direct page. chain: leau 0,s save the sp leas $ff,y set the stack into the direct page ldx 2,u get the module name pointer ldy 4,u get the parameter area size lda 9,u get the type lsla lsla lsla lsla ora 11,u and the language ldb 13,u get the data size ldu 6,u get the parameter area beginning address os9 F$CHAIN go do it * return here indicates an error os9 F$EXIT error code already in b reg. * os9fork(modname,paramsize,paramp,language,type,datasize) os9fork: pshs y,u save environment ldx 6,s get module name ldy 8,s get parameter area size ldu 10,s get parameter area pointer lda 13,s get language ora 15,s and type ldb 17,s get data size os9 F$FORK call os9 * return here indicates either error or parent puls y,u restore environment lbcs _os9err tfr a,b make an integer out of it clra * NOTE: the x register return value (points past name) is ignored rts endsect