A2osX/SYS/KERNEL.S.JMP.txt
2020-05-17 19:34:32 +02:00

536 lines
9.8 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 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 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 0
*--------------------------------------
* Bank 2
*--------------------------------------
.DA K.Mount $60
.DA K.UMount
.DA 0
.DA K.GetErrorMessage
.DA K.Shift $68 : ARG
.DA K.ArgV
.DA K.ArgVDup
.DA 0
.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 (.2-SYS.StrVShift,x)
.2 .DA STRVX.StrVShift
.DA STRVX.StrVGet
.DA STRVX.StrVAdd
.DA 0
.DA ENVX.PutEnv
.DA ENVX.SetEnv
.DA ENVX.GetEnv
.DA ENVX.UnsetEnv
.DA 0 Time
.DA TIMEX.StrFTime
.DA TIMEX.PTime2Time
.DA TIMEX.CTime2Time
.DA MD5X.MD5
.DA MD5X.Init
.DA MD5X.Update
.DA MD5X.Finalize
.DA PWDX.GetPWUID
.DA PWDX.GetPWName
.DA PWDX.PutPW
.DA PWDX.GetGRGID
.DA PWDX.GetGRName
.DA PWDX.PutGR
.DA PWDX.OpenSession
.DA PWDX.CloseSession
.DA SLISTX.SListGetData
.DA SLISTX.SListAddData
.DA SLISTX.SListSetData
.DA SLISTX.SListGetByID
.DA SLISTX.SListNewKey
.DA SLISTX.SListLookup
.DA SLISTX.SListFree
.DA SLISTX.SListNew
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.JMP
LOAD USR/SRC/SYS/KERNEL.S
ASM