A2osX/SYS/KERNEL.S.JMP.txt

511 lines
9.4 KiB
Plaintext
Raw Permalink 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
*--------------------------------------
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