NEW
  AUTO 3,1
*--------------------------------------
* $E000-E1FF  	System calls Jump Table
*--------------------------------------
*   Bank 1
*--------------------------------------
K.SYSCALL		.DA K.GetMemStat		$00
				.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
				.DA K.ReadDir
				.DA K.FClose
				.DA K.Open
				.DA K.Close
				.DA K.Read
				.DA K.Write
				.DA K.IOCTL

				.DA K.FPutC				$20
				.DA K.PutChar
				.DA K.GetC
				.DA K.GetChar
				.DA K.FPutS
				.DA K.PutS
				.DA K.FGetS
				.DA 0
				
				.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 0
				.DA 0
				.DA 0
				.DA K.GetDevByName
				.DA K.GetDevStatus
				.DA K.MKDev
				
				.DA 0					$50
				.DA K.SScanF
				.DA 0
				.DA 0
				.DA K.PrintF
				.DA K.SPrintF
				.DA K.FPrintF
				.DA 0
				
				.DA 0			 		$60
				.DA K.ChTyp
				.DA K.LoadFile
				.DA K.LoadTxtFile
				.DA 0
				.DA 0
				.DA K.ChOwn
				.DA K.ChGrp

				.DA K.AToF				$70
				.DA K.AToI
				.DA K.AToL
				.DA K.StrToF
				.DA K.StrToL
				.DA 0
				.DA K.RealPath
				.DA 0
*--------------------------------------
*   Bank 2
*--------------------------------------
				.DA K.StrLen			$80
				.DA K.StrCpy
				.DA K.StrCat
				.DA K.StrDup
				.DA K.StrUpr
				.DA K.StrLwr
				.DA K.StrCmp
				.DA K.StrCaseCmp

				.DA K.Time				$90
				.DA K.CTime2Time
				.DA K.PTime2Time
				.DA K.StrFTime
				.DA K.LoadLib
				.DA K.UnloadLib
				.DA K.LoadDrv
				.DA K.InsDrv

				.DA K.ExecL				$A0
				.DA K.ExecV
				.DA 0
				.DA K.Kill
				.DA K.GetPWUID
				.DA K.GetPWName
				.DA K.PutPW
				.DA 0

				.DA K.Args2ArgV			$B0
				.DA K.ArgV
				.DA K.ExpandStr
				.DA K.FileSearch
				.DA K.PutEnv
				.DA K.SetEnv	
				.DA K.GetEnv
				.DA K.UnsetEnv	
				
				.DA K.FAdd				$C0
				.DA K.FSub
				.DA K.FMult
				.DA K.FDiv
				.DA K.FPwr
				.DA 0
				.DA K.LRIntF
				.DA K.Float

				.DA K.Log				$D0
				.DA K.Sqr
				.DA K.Exp
				.DA K.Cos
				.DA K.Sin
				.DA K.Tan
				.DA K.ATan
				.DA 0
*--------------------------------------
*  $E000
*--------------------------------------
				.DA K.GetMem			$E0
				.DA K.GetMem0
				.DA K.GetMemPtr
				.DA K.FreeMem

				.DA K.GetMem			K.NewStkObj
				.DA K.LoadStkObj
				.DA K.GetMemPtr			K.GetStkObjPtr
				.DA K.FreeMem			K.FreeStkObj
*--------------------------------------
				.DA K.SListGetData		$F0
				.DA K.SListAddData
				.DA K.SListSetData
				.DA K.SListGetByID

				.DA K.SListNewKey
				.DA K.SListLookup
				.DA K.SListNew
				.DA K.SListFree
*--------------------------------------
* LO Byte :
*   #RRAMWRAMBNK1,#RRAMWRAMBNK2
* HI Byte :
*   Flags (ROOT....)
*--------------------------------------
K.SYSCALL.BANK	.DA #RRAMWRAMBNK1		$00
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1				
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80

				.DA #RRAMWRAMBNK1		$10
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80		

				.DA #RRAMWRAMBNK1		$20
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1			
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80

				.DA #RRAMWRAMBNK1		$30
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1			
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80

				.DA #RRAMWRAMBNK1		$40
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1			
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				
				.DA #RRAMWRAMBNK1		$50
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1			
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80

				.DA #RRAMWRAMBNK1		$60
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80

				.DA #RRAMWRAMBNK1		$70
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
				.DA #RRAMWRAMBNK1
				.DA #$80
*--------------------------------------
				.DA #RRAMWRAMBNK2		$80
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80
				
				.DA #RRAMWRAMBNK2		$90
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80
				
				.DA #RRAMWRAMBNK2		$A0
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80

				.DA #RRAMWRAMBNK2		$B0
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80

				.DA #RRAMWRAMBNK2		$C0
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80

				.DA #RRAMWRAMBNK2		$D0
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80
				.DA #RRAMWRAMBNK2
				.DA #$80
*--------------------------------------
				.DA #0					$E0 : MemMgr at $E000
				.DA #$80
				.DA #0
				.DA #$80
				.DA #0
				.DA #$80
				.DA #0
				.DA #$80
				.DA #$C0				NewStkObj
				.DA #$80
				.DA #0
				.DA #$80
				.DA #$C0				GetStkObjPtr
				.DA #$80
				.DA #$C0				FreeStkObj
				.DA #$80
*--------------------------------------
				.DA #0					$F0 : SLIST
				.DA #$80
				.DA #0
				.DA #$80
				.DA #0
				.DA #$80
				.DA #0
				.DA #$80
				.DA #0
				.DA #$80
				.DA #0
				.DA #$80
				.DA #0
				.DA #$80
				.DA #0
				.DA #$80
*--------------------------------------
K.SYSCALL2		bit K.SYSCALL.BANK,x	Get Target BNK
				bpl K.SYSCALL.JMP		0, E000, no BNK change
				bvc K.SYSCALL2.BANK

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

K.SYSCALL2.BANK	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.GUIOSD.JMP	sta SETREADAUX
				sta SETWRITEAUX
				jsr X.GUIOSD
				sta CLRREADAUX
				sta CLRWRITEAUX
				rts
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.JMP
LOAD USR/SRC/SYS/KERNEL.S
ASM
