Set SVC
Adds or replaces a system call
OS9 F$SSvc 103F 32
Entry Conditions
Y address of the system call initialization table
Exit Conditions
None
Error Output
CC carry set on error
B error code, if any
Additional Information
- Set SVC adds or replaces a system call, which you have written, to NitrOS-9’s user and system mode system call tables.
- Register Y passes the address of a table, which contains the function codes and offsets, to the corresponding system call handler routines. This table has the following format:
Relative
Address
Use
$00
Function Code
$02
Offset From Byte 3
To Function Handler
$03
Function Code
$05
Offset From Byte 6
To Function Handler
More Entries
$80
End-of-table mark
- If the most significant bit of the function code is set, NitrOS-9 updates the system table. If the most significant bit of the function code is not set, NitrOS-9 updates the system and user tables.
- The function request codes are in the range $29-$34. I/O calls are in the range $80-$90.
- To use a privileged system call, you must be executing a program that resides in the system map and that executes in the system state.
- The system call handler routine must process the system call and return from the subroutine with an RTS instruction.
- The handler routing might alter all CPU registers (except Register SP).
- Register U passes the address of the register stack to the system call hander as shown in the following diagram:
Relative
Address
Name
U -->
CC
$00
R$CC
A
$01
R$A (R$D)
B
$02
R$B
DP
$03
R$DP
X
$04
R$X
Y
$06
R$Y
U
$08
R$U
PC
$0A
R$PC
krn