NEW
  AUTO 3,1
*--------------------------------------
* $E000-E1FF  	System calls Jump Table
*--------------------------------------
*   Bank 1
*--------------------------------------
K.SYSCALL		.DA K.ChTyp				$00 : STAT
				.DA K.ChMod
				.DA K.FStat
				.DA K.Stat
				.DA K.MKDir
				.DA K.MKNod
				.DA K.MKFIFO
				.DA K.Pipe

				.DA K.OpenDir			$10 : DIRENT
				.DA K.ReadDir
				.DA K.FClose
				.DA K.Open				UNISTD
				.DA K.Close
				.DA K.Read
				.DA K.Write
				.DA K.ChOwn

				.DA K.FPutC				$20 : STDIO
				.DA K.PutChar
				.DA K.GetC
				.DA K.GetChar
				.DA K.FPutS
				.DA K.PutS
				.DA K.FGetS
				.DA K.UngetC

				.DA K.FOpen				$30
				.DA K.FClose
				.DA K.FRead
				.DA K.FWrite
				.DA K.FFlush
				.DA K.FSeek
				.DA K.FTell
				.DA K.FEOF

				.DA K.Remove			$40
				.DA K.Rename
				.DA K.PrintF
				.DA K.FPrintF
				.DA K.SPrintF
				.DA K.ScanF	
				.DA K.FScanF
				.DA K.SScanF

				.DA 0 					$50
				.DA 0
				.DA 0
				.DA 0
				.DA 0
				.DA 0
				.DA 0
				.DA K.SetAttr
*--------------------------------------
*   Bank 2
*--------------------------------------
				.DA K.Mount		 		$60
				.DA K.UMount
				.DA K.Online
				.DA K.GetStkObj
				.DA K.Shift				$68	: ARG
				.DA K.ArgV
				.DA K.ArgVDup
				.DA K.GetErrMsg

				.DA K.AToF				$70 : STDLIB
				.DA K.AToI
				.DA K.AToL
				.DA K.StrToF
				.DA K.StrToL
				.DA K.StrToUL
				.DA K.RealPath
				.DA K.Expand

				.DA K.StrLen			$80 : STRING
				.DA K.StrCpy
				.DA K.StrCat
				.DA K.StrDup
				.DA K.StrUpr
				.DA K.StrLwr
				.DA K.StrCmp
				.DA K.StrCaseCmp

				.DA K.GetDevByName		$90 : DEV
				.DA K.GetDevStatus
				.DA K.MKDev
				.DA K.IOCTL
				.DA K.LoadLib			BIN
				.DA K.UnloadLib
				.DA K.LoadDrv
				.DA K.InsDrv

				.DA K.ExecL				$A0 : PS
				.DA K.ExecV
				.DA K.Fork
				.DA K.Kill
				.DA K.LoadFile
				.DA K.LoadTxtFile
				.DA K.FileSearch
				.DA K.GetMemStat
*--------------------------------------
*   AUX
*--------------------------------------
				.DA K.StrVNew			$B0 : STRV
				.DA K.StrVSet
				.DA K.StrVGet
				.DA K.StrVFree
				.DA K.PutEnv			$B8 : ENV
				.DA K.SetEnv	
				.DA K.GetEnv
				.DA K.UnsetEnv	

				.DA K.Time				$C0 : TIME
				.DA K.StrFTime
				.DA K.PTime2Time
				.DA K.CTime2Time
				.DA K.MD5				$C8 : MD5
				.DA K.MD5Init
				.DA K.MD5Update
				.DA K.MD5Finalize

				.DA K.GetPWUID			$D0 : PWD
				.DA K.GetPWName
				.DA K.PutPW
				.DA K.GetGRGID
				.DA K.GetGRName
				.DA K.PutGR
				.DA K.OpenSession
				.DA K.CloseSession

				.DA K.SListGetData		$E0 : SLIST
				.DA K.SListAddData
				.DA K.SListSetData
				.DA K.SListGetByID

				.DA K.SListNewKey
				.DA K.SListLookup
				.DA K.SListFree
				.DA K.SListNew
*--------------------------------------
*  $E000
*--------------------------------------
				.DA K.GetMem			$F0
				.DA K.Realloc
				.DA K.GetMemPtr
				.DA K.FreeMem

				.DA K.GetMem			K.NewStkObj
				.DA K.LoadStkObj
				.DA K.GetMemPtr			K.GetStkObjPtr
				.DA K.FreeMem			K.FreeStkObj
*--------------------------------------
* LO Byte :
*   #RRAMWRAMBNK1,#RRAMWRAMBNK2
* HI Byte :
*   Flags (ROOT....)
*--------------------------------------
K.SYSCALL.BANK	.DA #RRAMWRAMBNK1		$00
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0

				.DA #RRAMWRAMBNK1		$10
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0		

				.DA #RRAMWRAMBNK1		$20
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0
				.DA #RRAMWRAMBNK1			
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0

				.DA #RRAMWRAMBNK1		$30
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0
				.DA #RRAMWRAMBNK1			
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0

				.DA #RRAMWRAMBNK1		$40
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0
				.DA #RRAMWRAMBNK1			
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0

				.DA #RRAMWRAMBNK1		$50
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0
				.DA #RRAMWRAMBNK1			
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0
*--------------------------------------
				.DA #RRAMWRAMBNK2		$60 : MOUNT
				.DA #0
				.DA #RRAMWRAMBNK2
				.DA #0
				.DA #RRAMWRAMBNK2
				.DA #0
				.DA #RRAMWRAMBNK2		
				.DA #0
				.DA #RRAMWRAMBNK2		$68 : ARG
				.DA #0
				.DA #RRAMWRAMBNK2
				.DA #0
				.DA #RRAMWRAMBNK2
				.DA #0
				.DA #RRAMWRAMBNK2
				.DA #0

				.DA #RRAMWRAMBNK2		$70 : STDLIB
				.DA #0
				.DA #RRAMWRAMBNK2
				.DA #0
				.DA #RRAMWRAMBNK2
				.DA #0
				.DA #RRAMWRAMBNK2
				.DA #0
				.DA #RRAMWRAMBNK2
				.DA #0
				.DA #RRAMWRAMBNK2
				.DA #0
				.DA #RRAMWRAMBNK2
				.DA #0
				.DA #RRAMWRAMBNK2
				.DA #0

				.DA #RRAMWRAMBNK2		$80 : STRING
				.DA #0
				.DA #RRAMWRAMBNK2
				.DA #0
				.DA #RRAMWRAMBNK2
				.DA #0
				.DA #RRAMWRAMBNK2
				.DA #0
				.DA #RRAMWRAMBNK2
				.DA #0
				.DA #RRAMWRAMBNK2
				.DA #0
				.DA #RRAMWRAMBNK2
				.DA #0
				.DA #RRAMWRAMBNK2
				.DA #0

				.DA #RRAMWRAMBNK1		$90 : DEV
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0
				.DA #RRAMWRAMBNK1
				.DA #0
				.DA #RRAMWRAMBNK2		$98 : BIN
				.DA #0
				.DA #RRAMWRAMBNK2
				.DA #0
				.DA #RRAMWRAMBNK2
				.DA #0
				.DA #RRAMWRAMBNK2
				.DA #0

				.DA #RRAMWRAMBNK2		$A0 : PS
				.DA #0
				.DA #RRAMWRAMBNK2
				.DA #0
				.DA #RRAMWRAMBNK2
				.DA #0
				.DA #RRAMWRAMBNK2
				.DA #0
				.DA #RRAMWRAMBNK2
				.DA #0
				.DA #RRAMWRAMBNK2
				.DA #0
				.DA #RRAMWRAMBNK2
				.DA #0
				.DA #RRAMWRAMBNK2
				.DA #0

				.DA #0					$B0 : STRV
				.DA #0
				.DA #0
				.DA #0
				.DA #0
				.DA #0
				.DA #0
				.DA #0
				.DA #0					$B8 : ENV
				.DA #0
				.DA #0
				.DA #0
				.DA #0
				.DA #0
				.DA #0
				.DA #0

				.DA #0					$C0 : TIME
				.DA #0
				.DA #0
				.DA #0
				.DA #0
				.DA #0
				.DA #0
				.DA #0
				.DA #0					$C8 : MD5
				.DA #0
				.DA #0
				.DA #0
				.DA #0
				.DA #0
				.DA #0
				.DA #0

				.DA #0					$D0 : PWD
				.DA #0
				.DA #0
				.DA #0
				.DA #0
				.DA #0
				.DA #0
				.DA #0

				.DA #0
				.DA #0
				.DA #0
				.DA #0
				.DA #0
				.DA #0
				.DA #0
				.DA #0

				.DA #0					$E0 : SLIST
				.DA #0
				.DA #0
				.DA #0
				.DA #0
				.DA #0
				.DA #0
				.DA #0
				.DA #0
				.DA #0
				.DA #0
				.DA #0
				.DA #0
				.DA #0
				.DA #0
				.DA #0
*--------------------------------------
				.DA #0					$E0 : MemMgr at $E000
				.DA #0
				.DA #0
				.DA #0
				.DA #0
				.DA #0
				.DA #0
				.DA #0
				.DA #$C0				NewStkObj
				.DA #0
				.DA #0					LoadStkObj
				.DA #0
				.DA #$C0				GetStkObjPtr
				.DA #0
				.DA #$C0				FreeStkObj
				.DA #0
*--------------------------------------
* K.SYSCALL2 : From KERNEL (MAIN,AUX), LIB
*--------------------------------------
K.SYSCALL2		bit K.SYSCALL.BANK,x	Get Target BNK
				bvc K.SYSCALL2.BANK

K.SYSCALL2.AUX	sta SETREADAUX			MAIN to AUX Mem API
				sta SETWRITEAUX
				jsr K.SYSCALL.JMP
				sta CLRREADAUX
				sta CLRWRITEAUX
				rts

K.SYSCALL2.MAIN	sta CLRREADAUX			Coming from KERNEL in AUX...
				sta CLRWRITEAUX
				jsr .1

				sta SETREADAUX
				sta SETWRITEAUX
				rts

.1				bit K.SYSCALL.BANK,x	Get Target LC BNK

K.SYSCALL2.BANK	bpl K.SYSCALL.JMP		0, E000, no BNK change
				sta .7+1
				lda $D000				#RRAMWRAMBNK1 or #RRAMWRAMBNK2
				cmp K.SYSCALL.BANK,x
				beq .7

				pha						remember source BNK
				stx .6+1
				lda K.SYSCALL.BANK,x
				tax						get Target BNK in x
				bit $C000,x				switch to Target BNK
				bit $C000,x

				jsr .6

				stx .5+1				Save X
				plx						get back Source BNK
				bit $C000,x				switch to Target BNK
				bit $C000,x

.5				ldx #$ff				SELF MODIFIED
				rts

.6				ldx #$ff				SELF MODIFIED
.7				lda #$ff				SELF MODIFIED

K.SYSCALL.JMP	jmp (K.SYSCALL,x)
*--------------------------------------
K.SYSCALL.JMPX2A
				sec
				.HS 90					BCC
K.SYSCALL.JMPX2	clc
				>PULLW FORPNT
				>PULLW TXTPTR
				bcc K.SYSCALL.JMPX

				>PULLA
				
K.SYSCALL.JMPX	sta SETREADAUX
				sta SETWRITEAUX
				jsr JMPX
				sta CLRREADAUX
				sta CLRWRITEAUX
				rts
*--------------------------------------
MAN
SAVE usr/src/sys/kernel.s.jmp
LOAD usr/src/sys/kernel.s
ASM
