diff level2/modules/kernel/fssvc.asm @ 1145:ca83286ded5b

Start of new OS-9 L2 Kernel
author boisy
date Tue, 22 Apr 2003 19:35:48 +0000
parents
children 90bad6d8388c
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/level2/modules/kernel/fssvc.asm	Tue Apr 22 19:35:48 2003 +0000
@@ -0,0 +1,28 @@
+**************************************************
+* System Call: F$SSVC
+*
+* Function: Allocate a 64 byte memory block
+*
+* Input:  Y = Address of service request init table
+*
+* Output: None
+*
+* Error:  CC = C bit set; B = error code
+*
+FSSvc    ldy    R$Y,u       get pointer to table
+         bra    L037F       start moving
+* Main move loop
+L036D    clra               clear MSB of table offset
+         lslb               multiply function # by 2 to get offset into table
+         tfr    d,u         copy it to U
+         ldd    ,y++        get vector to function handler
+         leax   d,y         offset X from current Y
+         ldd    <D.SysDis   get system dispatch table pointer
+         stx    d,u         save vector into place
+         bcs    L037F       it was a privliged call, skip ahead
+         ldd    <D.UsrDis   get user displat table pointer
+         stx    d,u         save vector into place
+L037F    ldb    ,y+         get callcode
+         cmpb   #$80        done?
+         bne    L036D       no, keep going
+         rts                return