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 0 .DA 0 .DA K.PrintF .DA K.FPrintF .DA K.SPrintF .DA K.ScanF .DA K.FScanF $50 .DA K.SScanF .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.GetErrorMessage .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.StrVShift $B0 : STRV .DA K.StrVGet .DA K.StrVAdd .DA 0 .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.JMPX sta SETREADAUX sta SETWRITEAUX jsr .1 sta CLRREADAUX sta CLRWRITEAUX rts .1 jmp (KX.SYSCALL-SYS.StrVShift,x) *-------------------------------------- MAN SAVE usr/src/sys/kernel.s.jmp LOAD usr/src/sys/kernel.s ASM