2016-08-28 20:48:01 +00:00
|
|
|
|
PR#3
|
|
|
|
|
PREFIX /A2OSX.SRC
|
|
|
|
|
NEW
|
|
|
|
|
INC 1
|
|
|
|
|
AUTO 6
|
|
|
|
|
.LIST OFF
|
|
|
|
|
*--------------------------------------
|
2016-09-29 15:30:15 +00:00
|
|
|
|
Kernel.Init3 jsr K.DevMgrInit
|
|
|
|
|
bcs *
|
2016-10-12 06:28:57 +00:00
|
|
|
|
|
2016-09-29 15:30:15 +00:00
|
|
|
|
lda #1 SYS device
|
|
|
|
|
>SYSCALL SYS.GetDevByIDA
|
|
|
|
|
>STYA pDev
|
|
|
|
|
ldx #DEVMGR.OPEN
|
|
|
|
|
jsr pDevJmp
|
|
|
|
|
|
2016-09-29 06:26:54 +00:00
|
|
|
|
ldx #DEVMGR.SELECT
|
2016-08-28 20:48:01 +00:00
|
|
|
|
jsr pDevJmp
|
2016-10-04 16:01:07 +00:00
|
|
|
|
|
|
|
|
|
lda #2
|
|
|
|
|
sta A2osX.ASCREEN
|
2016-08-28 20:48:01 +00:00
|
|
|
|
|
|
|
|
|
>LDYAI MSG.Init3
|
2016-09-21 15:20:37 +00:00
|
|
|
|
>SYSCALL SYS.PStrOutYA
|
2016-08-28 20:48:01 +00:00
|
|
|
|
|
2016-09-29 15:30:15 +00:00
|
|
|
|
>LDYAI MSG.IRQ
|
|
|
|
|
>SYSCALL SYS.PStrOutYA
|
|
|
|
|
jsr K.IrqMgrInit
|
|
|
|
|
bcs *
|
|
|
|
|
|
|
|
|
|
>LDYAI MSG.MEM
|
|
|
|
|
>SYSCALL SYS.PStrOutYA
|
|
|
|
|
jsr K.MemMgrInit
|
|
|
|
|
bcs *
|
|
|
|
|
|
|
|
|
|
>LDYAI MSG.EVT
|
|
|
|
|
>SYSCALL SYS.PStrOutYA
|
|
|
|
|
jsr K.EvtMgrInit
|
|
|
|
|
bcs *
|
|
|
|
|
|
|
|
|
|
>LDYAI MSG.FLT
|
|
|
|
|
>SYSCALL SYS.PStrOutYA
|
|
|
|
|
jsr K.FltMgrInit
|
|
|
|
|
bcs *
|
|
|
|
|
|
|
|
|
|
>LDYAI MSG.TSK
|
|
|
|
|
>SYSCALL SYS.PStrOutYA
|
|
|
|
|
jsr K.TskMgrInit
|
|
|
|
|
bcs *
|
|
|
|
|
|
2016-08-28 20:48:01 +00:00
|
|
|
|
ldy #S.PS.hPREFIX
|
|
|
|
|
lda (pPs),y
|
|
|
|
|
>SYSCALL SYS.GetMemPtrA
|
|
|
|
|
|
|
|
|
|
>PUSHYA
|
|
|
|
|
>LDYAI MSG.Prefix
|
2016-09-21 15:20:37 +00:00
|
|
|
|
>SYSCALL SYS.PStrOutYA
|
2016-08-28 20:48:01 +00:00
|
|
|
|
|
|
|
|
|
>PUSHWI STARTUP.CMDLINE
|
|
|
|
|
>LDYAI MSG.Startup
|
2016-09-21 15:20:37 +00:00
|
|
|
|
>SYSCALL SYS.PStrOutYA
|
2016-08-28 20:48:01 +00:00
|
|
|
|
|
|
|
|
|
>LDYAI STARTUP.CMDLINE
|
|
|
|
|
>SYSCALL SYS.CreateProcessYA
|
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
>LDYAI MSG.Init3.OK
|
2016-09-21 15:20:37 +00:00
|
|
|
|
>SYSCALL SYS.PStrOutYA
|
2016-08-28 20:48:01 +00:00
|
|
|
|
|
|
|
|
|
>LDYAI TskMgr.Table
|
|
|
|
|
>STYA pPs
|
|
|
|
|
|
2016-09-29 06:26:54 +00:00
|
|
|
|
>DEBUGOA
|
2016-10-07 15:28:17 +00:00
|
|
|
|
bit RRAMWRAMBNK2
|
|
|
|
|
bit RRAMWRAMBNK2
|
2016-09-29 06:26:54 +00:00
|
|
|
|
jmp K.KernelRun
|
2016-08-29 15:12:04 +00:00
|
|
|
|
|
2016-08-28 20:48:01 +00:00
|
|
|
|
.9 >PUSHA
|
|
|
|
|
>LDYAI MSG.StartupErr
|
2016-09-21 15:20:37 +00:00
|
|
|
|
>SYSCALL SYS.PStrOutYA
|
2016-08-28 20:48:01 +00:00
|
|
|
|
bra *
|
|
|
|
|
*--------------------------------------
|
2016-09-29 15:30:15 +00:00
|
|
|
|
* K.DevMgrInit
|
|
|
|
|
*--------------------------------------
|
2016-10-03 15:59:36 +00:00
|
|
|
|
K.DevMgrInit ldx #S.DEV*DevMgr.Count
|
2016-09-29 15:30:15 +00:00
|
|
|
|
.1 lda DevMgr.NUL-1,x
|
|
|
|
|
sta DevMgr.Table-1,x
|
|
|
|
|
dex
|
|
|
|
|
bne .1
|
|
|
|
|
|
2016-10-05 15:57:43 +00:00
|
|
|
|
stz DevMgr.Table+S.DEV*DevMgr.Count
|
2016-09-29 15:30:15 +00:00
|
|
|
|
|
2016-10-07 15:28:17 +00:00
|
|
|
|
* >LDYAI DevMgr.LoMem Hard Coded
|
|
|
|
|
* >STYA DevMgr.Free
|
|
|
|
|
* lda #DevMgr.Count-1
|
|
|
|
|
* sta DevMgr.LastDevID
|
2016-09-29 15:30:15 +00:00
|
|
|
|
|
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
DevMgr.NUL cld
|
|
|
|
|
jmp (DevMgr.NUL.Code,x)
|
|
|
|
|
.DA #0 DevID=0
|
|
|
|
|
.DA #S.DEV.F.INUSE+S.DEV.F.SHARE+S.DEV.F.COUT+S.DEV.F.CHAR
|
|
|
|
|
>PSTRING "NUL" NAME
|
|
|
|
|
.HS 00 NAME must Be 5 bytes long
|
|
|
|
|
.HS 00
|
|
|
|
|
.HS 00.00.00.00
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
DevMgr.SYS cld
|
|
|
|
|
jmp (DevMgr.SYS.Code,x)
|
|
|
|
|
.DA #1 DevID=1
|
|
|
|
|
.DA #S.DEV.F.INUSE+S.DEV.F.EVENT+S.DEV.F.SHARE+S.DEV.F.COUT+S.DEV.F.CHAR
|
|
|
|
|
>PSTRING "SYS" NAME
|
|
|
|
|
.HS 00 NAME must Be 5 bytes long
|
|
|
|
|
.HS 00
|
|
|
|
|
.HS 00.00.00.00
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
* Setup MainLC ($3FE)
|
|
|
|
|
*
|
|
|
|
|
*
|
|
|
|
|
* Setup AuxLC $FFFE->Kernel IRQ Handler
|
|
|
|
|
* if irq not handled, jmp (S.IrqMgrOldFFFE)
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
K.IrqMgrInit php
|
|
|
|
|
sei
|
|
|
|
|
>LDYA $FFFE
|
|
|
|
|
cpy #K.IrqHandlerAuxLC
|
|
|
|
|
bne .1
|
|
|
|
|
cmp /K.IrqHandlerAuxLC
|
|
|
|
|
beq .2
|
|
|
|
|
|
|
|
|
|
.1 >STYA K.IrqMgrOldFFFE
|
|
|
|
|
>LDYAI K.IrqHandlerAuxLC
|
|
|
|
|
>STYA $FFFE
|
|
|
|
|
|
|
|
|
|
.2
|
|
|
|
|
|
|
|
|
|
* >LDYAI $BE0C
|
|
|
|
|
* >STYA $3F0
|
|
|
|
|
|
|
|
|
|
plp
|
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
K.MemMgrInit >LDYAI MemMgr.MHiMem
|
|
|
|
|
>STYA MemMgr.HiMem
|
|
|
|
|
>STYA MemMgr.Free
|
|
|
|
|
>LDYAI MemMgr.MLoMem
|
|
|
|
|
>STYA MemMgr.LoMem
|
|
|
|
|
stz MemMgr.LastSlot Reserve Slot #0
|
|
|
|
|
|
|
|
|
|
sta SETWRITEAUX
|
|
|
|
|
|
|
|
|
|
>LDYAI MemMgr.XHiMem
|
|
|
|
|
>STYA MemMgr.HiMem
|
|
|
|
|
>STYA MemMgr.Free
|
|
|
|
|
>LDYAI MemMgr.XLoMem
|
|
|
|
|
>STYA MemMgr.LoMem
|
|
|
|
|
stz MemMgr.LastSlot Reserve Slot #0
|
|
|
|
|
|
|
|
|
|
sta CLRWRITEAUX
|
|
|
|
|
|
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
* K.EvtMgrInit
|
|
|
|
|
*--------------------------------------
|
2016-10-12 15:46:38 +00:00
|
|
|
|
K.EvtMgrInit
|
|
|
|
|
* lda #10
|
|
|
|
|
* sta EVTMGR.10TH.CNT WARNING!!!! WRONG BANK!!!
|
2016-09-29 15:30:15 +00:00
|
|
|
|
|
2016-10-12 15:46:38 +00:00
|
|
|
|
* lda A2osX.HZ
|
|
|
|
|
* sta EVTMGR.HZ.CNT
|
2016-09-29 15:30:15 +00:00
|
|
|
|
|
|
|
|
|
lda MACHID
|
|
|
|
|
and #MACHID.TYPE
|
|
|
|
|
cmp #MACHID.TYPE.IIc
|
|
|
|
|
bne .8
|
|
|
|
|
|
|
|
|
|
* sta CLRIOUDIS
|
|
|
|
|
* sta ENBVBLIIC
|
|
|
|
|
|
|
|
|
|
.8 lda /EvtMgr.Table
|
|
|
|
|
sta pEvent+1
|
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
* K.FltMgrInit
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
K.FltMgrInit stz FltMgr.Table
|
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
* K.TskMgrInit
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
K.TskMgrInit stz TSKMGR.LASTID
|
|
|
|
|
lda #1
|
|
|
|
|
sta TSKMGR.SIZE One Slot Busy (Kernel PS=0)
|
|
|
|
|
|
|
|
|
|
>LDYAI TskMgr.Table Clear whole process table
|
|
|
|
|
>STYA pPs
|
|
|
|
|
|
|
|
|
|
ldx #K.PS.MAX
|
|
|
|
|
|
|
|
|
|
.1 lda #0
|
2016-10-03 15:59:36 +00:00
|
|
|
|
ldy #S.PS-1
|
2016-09-29 15:30:15 +00:00
|
|
|
|
|
|
|
|
|
.2 sta (pPs),y
|
|
|
|
|
dey
|
|
|
|
|
bpl .2
|
|
|
|
|
|
|
|
|
|
lda pPs
|
|
|
|
|
clc
|
2016-10-03 15:59:36 +00:00
|
|
|
|
adc #S.PS
|
2016-09-29 15:30:15 +00:00
|
|
|
|
sta pPs
|
|
|
|
|
bcc .3
|
|
|
|
|
|
|
|
|
|
inc pPs+1
|
|
|
|
|
.3 dex
|
|
|
|
|
bne .1
|
|
|
|
|
|
|
|
|
|
>LDYAI TskMgr.Table Select Process 0 (Kernel)
|
|
|
|
|
>STYA pPs
|
|
|
|
|
|
|
|
|
|
lda #1
|
|
|
|
|
ldy #S.PS.hINDEV
|
|
|
|
|
sta (pPs),y Make In DEV = SYS
|
|
|
|
|
ldy #S.PS.hOUTDEV
|
|
|
|
|
sta (pPs),y Make OUT DEV = SYS
|
|
|
|
|
ldy #S.PS.hERRDEV
|
|
|
|
|
sta (pPs),y Make ERR DEV = SYS
|
|
|
|
|
|
|
|
|
|
>PUSHWI K.ENV.SIZE get a buffer for ENV
|
|
|
|
|
>PUSHBI S.MEM.F.INIT0 make sure blank
|
|
|
|
|
>SYSCALL SYS.GetMem create it...
|
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
txa
|
|
|
|
|
ldy #S.PS.hENV
|
|
|
|
|
sta (pPs),y
|
|
|
|
|
|
|
|
|
|
>LDYAI UsrBuf256
|
|
|
|
|
>STYA MLICALL.PARAMS+1
|
|
|
|
|
>MLICALL MLIGETPREFIX
|
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
>LDYAI UsrBuf256
|
|
|
|
|
>SYSCALL SYS.NewPStrYA
|
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
txa
|
|
|
|
|
ldy #S.PS.hPREFIX
|
|
|
|
|
sta (pPs),y
|
|
|
|
|
|
|
|
|
|
>PUSHWI UsrBuf256 push ENV value
|
|
|
|
|
>PUSHWI I.ENV.A2osX push ENV name
|
|
|
|
|
>SYSCALL SYS.SetEnv
|
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
>LDYAI I.ENV.PATH
|
|
|
|
|
>SYSCALL SYS.PutEnvYA
|
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
>LDYAI I.ENV.LIB
|
|
|
|
|
>SYSCALL SYS.PutEnvYA
|
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
>LDYAI I.ENV.DRV
|
|
|
|
|
>SYSCALL SYS.PutEnvYA
|
|
|
|
|
.9 rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
I.ENV.A2osX >PSTRING "A2OSX"
|
|
|
|
|
I.ENV.PATH >PSTRING "PATH=${A2OSX}SBIN/;${A2OSX}BIN/"
|
|
|
|
|
I.ENV.LIB >PSTRING "LIB=${A2OSX}LIB/"
|
|
|
|
|
I.ENV.DRV >PSTRING "DRV=${A2OSX}DRV/"
|
|
|
|
|
*--------------------------------------
|
2016-08-28 20:48:01 +00:00
|
|
|
|
MSG.Init3 >PSTRING "A2osX[Stage3]:Init\n"
|
2016-09-29 15:30:15 +00:00
|
|
|
|
MSG.IRQ >PSTRING " - Interrupt Manager...\n"
|
|
|
|
|
MSG.MEM >PSTRING " - Memory Manager...\n"
|
|
|
|
|
MSG.EVT >PSTRING " - Event Manager...\n"
|
|
|
|
|
MSG.FLT >PSTRING " - Path Filter...\n"
|
|
|
|
|
MSG.TSK >PSTRING " - Task Manager...\n"
|
2016-08-28 20:48:01 +00:00
|
|
|
|
MSG.Prefix >PSTRING "Prefix:%S\n"
|
|
|
|
|
MSG.Startup >PSTRING "Executing Kernel Startup Script...\nCmd:%S\n"
|
|
|
|
|
MSG.StartupErr >PSTRING "Failed : [$%h]\n"
|
|
|
|
|
MSG.Init3.OK >PSTRING "A2osX[Stage3]:Complete.\n"
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
STARTUP.CMDLINE >PSTRING "${A2OSX}SBIN/SHELL ${A2OSX}A2osX.STARTUP"
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
MAN
|
|
|
|
|
SAVE SYS/KERNEL.S.INIT3
|
|
|
|
|
LOAD SYS/KERNEL.S
|
|
|
|
|
ASM
|