Add signal() and raise()
git-svn-id: svn://svn.cc65.org/cc65/trunk@2017 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
44
libsrc/common/raise.s
Normal file
44
libsrc/common/raise.s
Normal file
@@ -0,0 +1,44 @@
|
||||
;
|
||||
; Ullrich von Bassewitz, 2003-03-14
|
||||
;
|
||||
; int __fastcall__ raise (int sig);
|
||||
;
|
||||
|
||||
.import jmpvec
|
||||
|
||||
.include "signal.inc"
|
||||
|
||||
|
||||
;----------------------------------------------------------------------------
|
||||
; int __fastcall__ raise (int sig);
|
||||
|
||||
|
||||
_raise:
|
||||
cpx #0
|
||||
bne invalidsig
|
||||
cmp #SIGCOUNT
|
||||
bcs invalidsig
|
||||
|
||||
; Save the signal number low byte, then setup the function vector
|
||||
|
||||
pha
|
||||
asl a
|
||||
tax
|
||||
lda sigtable,x
|
||||
sta jmpvec+1
|
||||
lda sigtable+1,x
|
||||
sta jmpvec+2
|
||||
|
||||
; Restore the signal number and call the function
|
||||
|
||||
pla ; Low byte
|
||||
ldx #0 ; High byte
|
||||
jsr jmpvec ; Call signal function
|
||||
|
||||
; raise() returns zero on success and any other value on failure
|
||||
|
||||
lda #0
|
||||
tax
|
||||
invalidsig:
|
||||
rts
|
||||
|
||||
Reference in New Issue
Block a user