NEW AUTO 3,1 *-------------------------------------- * $E000-E1FF System calls Jump Table *-------------------------------------- * Bank 1 *-------------------------------------- K.SYSCALL .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 .DA K.UMount .DA 0 .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.MKFD .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 #RRAMWRAMBNK2 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