NEW
  AUTO 3,1
*--------------------------------------
* $E000-E1FF  	System calls Jump Table
*--------------------------------------
*   Bank 1
*--------------------------------------
JMP.TABL		.DA 0					$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 K.Online			$58 : PRODOS
				.DA K.ChTyp
				.DA K.ChAux
				.DA K.SetAttr
*--------------------------------------
*   Bank 2
*--------------------------------------
				.DA K.Mount		 		$60 : MOUNT
				.DA K.UMount
				.DA K.LoadStkObj		$64 : STKOBJ
				.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 0
				.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.Free

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

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

				.DA #IO.RRAMWRAMBNK1		$20 : STDIO
				.DA #0
				.DA #IO.RRAMWRAMBNK1
				.DA #0
				.DA #IO.RRAMWRAMBNK1
				.DA #0
				.DA #IO.RRAMWRAMBNK1
				.DA #0
				.DA #IO.RRAMWRAMBNK1
				.DA #0
				.DA #IO.RRAMWRAMBNK1
				.DA #0
				.DA #IO.RRAMWRAMBNK1
				.DA #0
				.DA #IO.RRAMWRAMBNK1
				.DA #0

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

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

				.DA #IO.RRAMWRAMBNK1		$50
				.DA #0
				.DA #IO.RRAMWRAMBNK1
				.DA #0
				.DA #IO.RRAMWRAMBNK1
				.DA #0
				.DA #IO.RRAMWRAMBNK1
				.DA #0
				.DA #IO.RRAMWRAMBNK1		$58 : PRODOS
				.DA #0
				.DA #IO.RRAMWRAMBNK1
				.DA #0
				.DA #IO.RRAMWRAMBNK1
				.DA #0
				.DA #IO.RRAMWRAMBNK1
				.DA #0
*--------------------------------------
				.DA #IO.RRAMWRAMBNK2		$60 : MOUNT
				.DA #0
				.DA #IO.RRAMWRAMBNK2
				.DA #0
				.DA #IO.RRAMWRAMBNK2		$64 : STKOBJ
				.DA #0
				.DA #IO.RRAMWRAMBNK2
				.DA #0
				.DA #IO.RRAMWRAMBNK2		$68 : ARG
				.DA #0
				.DA #IO.RRAMWRAMBNK2
				.DA #0
				.DA #IO.RRAMWRAMBNK2
				.DA #0
				.DA #IO.RRAMWRAMBNK2
				.DA #0

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

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

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

				.DA #IO.RRAMWRAMBNK2		$A0 : PS
				.DA #0
				.DA #IO.RRAMWRAMBNK2
				.DA #0
				.DA #IO.RRAMWRAMBNK2
				.DA #0
				.DA #IO.RRAMWRAMBNK2
				.DA #0
				.DA #IO.RRAMWRAMBNK2
				.DA #0
				.DA #IO.RRAMWRAMBNK2
				.DA #0
				.DA #IO.RRAMWRAMBNK2
				.DA #0
				.DA #IO.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 #0
				.DA #0
				.DA #$C0				NewStkObj
				.DA #0
				.DA #$C0				GetStkObjPtr
				.DA #0
				.DA #$C0				FreeStkObj
				.DA #0
*--------------------------------------
* From KERNEL (MAIN,AUX), LIB
*--------------------------------------
JMP.2			bit JMP.BANK,x			Get Target BNK
				bvc JMP.B

				sta IO.SETREADAUX		MAIN to AUX Mem API
				sta IO.SETWRITEAUX
				jsr JMP.JMPX
				sta IO.CLRREADAUX
				sta IO.CLRWRITEAUX
				rts

JMP.M			sta IO.CLRREADAUX		Coming from KERNEL in AUX...
				sta IO.CLRWRITEAUX
				jsr .1
				sta IO.SETREADAUX
				sta IO.SETWRITEAUX
				rts

.1				bit JMP.BANK,x			Get Target LC BNK

JMP.B			bpl JMP.JMPX			0, E000, no BNK change

				sta .7+1
				lda $D000				#IO.RRAMWRAMBNK1 or #IO.RRAMWRAMBNK2
				cmp JMP.BANK,x
				beq .7

				pha						remember source BNK
				stx .6+1
				lda JMP.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

JMP.JMPX		jmp (JMP.TABL,x)
*--------------------------------------
JMP.X1A			>PULLW FORPNT
				bra JMP.XA

JMP.X2A			sec
				.HS 90					BCC
JMP.X2			clc
				>PULLW FORPNT
				>PULLW TXTPTR
				bcc JMP.X

JMP.XA			>PULLA

JMP.X			sta IO.SETREADAUX
				sta IO.SETWRITEAUX
				jsr JMPX
				sta IO.CLRREADAUX
				sta IO.CLRWRITEAUX
				rts
*--------------------------------------
MAN
SAVE usr/src/sys/kernel.s.jmp
LOAD usr/src/sys/kernel.s
ASM
