A2osX/SYS/KERNEL.S.JMP.txt

512 lines
9.5 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 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....)
*--------------------------------------
K.SYSCALL.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
*--------------------------------------
* 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 IO.SETREADAUX MAIN to AUX Mem API
sta IO.SETWRITEAUX
jsr K.SYSCALL.JMP
sta IO.CLRREADAUX
sta IO.CLRWRITEAUX
rts
K.SYSCALL2.MAIN sta IO.CLRREADAUX Coming from KERNEL in AUX...
sta IO.CLRWRITEAUX
jsr .1
sta IO.SETREADAUX
sta IO.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 #IO.RRAMWRAMBNK1 or #IO.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.JMPX1A
>PULLW FORPNT
bra JMPXA
K.SYSCALL.JMPX2A
sec
.HS 90 BCC
K.SYSCALL.JMPX2 clc
>PULLW FORPNT
>PULLW TXTPTR
bcc K.SYSCALL.JMPX
JMPXA >PULLA
K.SYSCALL.JMPX 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