view 3rdparty/packages/cc/sources/syscall.a @ 1942:b41df77588b0

printer is now scbbp sio is now scbbt All references changed in various files
author boisy
date Sat, 26 Nov 2005 22:51:50 +0000
parents 0198655f2552
children
line wrap: on
line source

*
*  Universal OS-9 system call
*
*
*  calling syntax:  os9(code,registers)
*                   char code;
*                   struct registers *reg;
*
*       regs structure:
*
*       struct registers {
*               char rg_cc, rg_a, rg_b, rg_dp;
*               unsigned rg_x, rg_y, rg_u;
*               };

m$rts equ $39 rts instruction
m$os9 equ $103f os9 call instruction
carry equ %00000001 carry bit

 csect
R$CC rmb 1
R$D rmb 0
R$A rmb 1
R$B rmb 1
R$DP rmb 1
R$X rmb 2
R$Y rmb 2
R$U rmb 2
R$PC rmb 2
R$Size rmb 0
 endsect

 psect syscall_a,0,0,1,0,0
_os9: pshs u,y save register variable & data ptr
 lda 7,s get function code
 ldb #m$rts and rts instruction
 pshs d
 ldd #m$os9 os9 call code
 pshs d
 ldu 12,s get user register ptr
 ldd R$D,u init regs for system call
 ldx R$X,u
 ldy R$Y,u
 ldu R$U,u
 jsr 0,s execute system call
 pshs cc,u save regs
 ldu 15,s get user register ptr
 leau R$U,u copy regs to user struct
 pshu a,b,dp,x,y
 puls a,x
 sta ,-u
 stx R$U,u
 leas 4,s junk the system call code
 puls u,y restore regs
 bita #carry carry on?
 beq os9.a bra if not
 ldd #-1 return error
 rts
os9.a clra return no error
 clrb
 rts
 endsect