A2osX/SYS/KERNEL.S.INIT.txt

1124 lines
21 KiB
Plaintext
Raw Normal View History

2017-12-22 21:24:30 +00:00
NEW
PREFIX /A2OSX.BUILD
2017-12-22 21:24:30 +00:00
AUTO 4,1
*--------------------------------------
2018-07-10 15:33:13 +00:00
Kernel.Init2 sei
ldx #$FF
txs
sta SETALTZP
stx A2osX.SaveSM
stx A2osX.SaveSX
2018-07-11 15:13:29 +00:00
ldx #Kernel.ZP.S-1
.1 lda Kernel.ZP,x
sta CHARGET,x
dex
bpl .1
sta CLRALTZP
2018-07-12 15:20:39 +00:00
>LDYAI MSG.Init2
jsr PrintFYA
2017-12-22 21:24:30 +00:00
>LDYAI A2osX.MAIN
>STYA ZPPtr1
>LDYAI CORE.Run
>STYA ZPPtr2
2017-12-22 21:24:30 +00:00
>LDYAI A2osX.MAIN.S^$FFFF
2018-07-10 15:33:13 +00:00
jsr Kernel.Move
2017-12-22 21:24:30 +00:00
>LDYAI A2osX.AUX
>STYA A1L Src Start Address (MAIN)
>LDYAI A2osX.GP
>STYA A2L Src End Address (MAIN)
>LDYAI X.GUIOSD
>STYA A4L Dst Address (AUX)
sec Main To Aux
jsr AuxMove
>LDYAI A2osX.GP
>STYA ZPPtr1
>LDYAI A2osX.SYSCALL
>STYA ZPPtr2
>LDYAI A2osX.GP.S^$FFFF
2018-07-10 15:33:13 +00:00
jsr Kernel.Move
sta SETALTZP
bit RRAMWRAMBNK2
bit RRAMWRAMBNK2
>LDYAI A2osX.D2
>STYA ZPPtr1
>LDYAI $D000
>STYA ZPPtr2
>LDYAI A2osX.D2.S^$FFFF
2018-07-10 15:33:13 +00:00
jsr Kernel.Move
bit RRAMWRAMBNK1
bit RRAMWRAMBNK1
>LDYAI A2osX.D1
>STYA ZPPtr1
>LDYAI $D000
>STYA ZPPtr2
>LDYAI A2osX.D1.S^$FFFF
2018-07-10 15:33:13 +00:00
jsr Kernel.Move
>LDYAI A2osX.E0
>STYA ZPPtr1
>LDYAI $E000
>STYA ZPPtr2
>LDYAI A2osX.E0.S^$FFFF
2018-07-10 15:33:13 +00:00
jsr Kernel.Move
2018-07-12 15:20:39 +00:00
bit RROMBNK1
sta CLRALTZP
cli
2018-07-12 15:20:39 +00:00
jsr KConfigLoad
lda A2osX.HZ
2018-07-12 15:20:39 +00:00
pha
>LDYAI MSG.HZ
jsr PrintFYA
2018-07-12 15:20:39 +00:00
>LDYAI MSG.Init2.OK
jsr PrintFYA
*--------------------------------------
>DEBUGOA
*--------------------------------------
Kernel.Init3 sta SETALTZP
bit RRAMWRAMBNK1
bit RRAMWRAMBNK1
lda #$ff Make sure we are in Kernel Mode during setup
sta IRQ.InKernel
2018-07-12 15:20:39 +00:00
jsr SysScrInit
jsr MemMgrInit
2018-07-09 15:25:38 +00:00
2018-07-12 15:20:39 +00:00
>LDYAI FD.NULL
2018-07-17 15:45:59 +00:00
>SYSCALL MKDev
2018-07-12 15:20:39 +00:00
>LDYAI FD.SYS
2018-07-17 15:45:59 +00:00
>SYSCALL MKDev
2018-07-12 15:20:39 +00:00
jsr PS0.Init
>LDYAI MSG.Init3
2018-10-15 06:25:40 +00:00
>SYSCALL puts
2018-10-05 06:25:15 +00:00
2018-07-13 14:38:24 +00:00
jsr CPU.Init.6502
jsr CPU.Init.Z80
jsr DevMgrInit
jsr IrqMgrInit
bcs *
jsr EvtMgrInit
jsr FltMgrInit
jsr TskMgrInit
bcs *
ldy #S.PS.hPREFIX
lda (pPs),y
2018-10-04 15:30:14 +00:00
jsr K.GetMemPtr
>PUSHYA
2018-08-22 15:23:27 +00:00
>PUSHBI 2
>LDYAI MSG.Prefix
2018-07-12 15:20:39 +00:00
>SYSCALL printf
2018-10-25 15:31:41 +00:00
lda KBD
bpl .1
sta KBDSTROBE
cmp #$84 CTRL-D for Maintenace mode
bne .1
2018-07-17 15:45:59 +00:00
2018-10-17 15:31:29 +00:00
>PUSHBI 0
2018-07-17 15:45:59 +00:00
>LDYAI MSG.MMode
2018-10-17 15:31:29 +00:00
>SYSCALL printf
2018-10-15 06:25:40 +00:00
2018-10-25 15:31:41 +00:00
>PUSHBI 0 PS Flags
2018-07-17 15:45:59 +00:00
>LDYAI STARTUP.SHELL
bra .8
2018-10-15 15:39:21 +00:00
.1 >PUSHWI STARTUP.CMDLINE
2018-08-22 15:23:27 +00:00
>PUSHBI 2
>LDYAI MSG.Startup
2018-07-12 15:20:39 +00:00
>SYSCALL printf
2018-07-17 15:45:59 +00:00
2018-10-25 15:31:41 +00:00
>PUSHBI 0 PS Flags
>LDYAI STARTUP.CMDLINE
2018-07-17 15:45:59 +00:00
2018-10-25 15:31:41 +00:00
.8 >SYSCALL ExecL
bcs .9
2018-10-25 15:31:41 +00:00
>PUSHBI 0
>LDYAI MSG.Init3.OK
2018-10-05 14:58:38 +00:00
>SYSCALL printf
>DEBUGOA
jmp CORE.Run
.9 >PUSHA
2018-08-22 15:23:27 +00:00
>PUSHBI 1
>LDYAI MSG.StartupErr
2018-07-12 15:20:39 +00:00
>SYSCALL printf
bra * No need to discard Expanded CMDLINE
*--------------------------------------
2018-07-12 15:20:39 +00:00
* INIT2 Subs
*--------------------------------------
2018-07-10 15:33:13 +00:00
Kernel.Move >STYA ZPPtr3
ldy #0
.1 inc ZPPtr3
bne .2
inc ZPPtr3+1
beq .9
.2 lda (ZPPtr1),y
sta (ZPPtr2),y
iny
bne .1
inc ZPPtr1+1
inc ZPPtr2+1
bne .1
2018-07-10 15:33:13 +00:00
.9 rts
*--------------------------------------
2018-07-12 15:20:39 +00:00
KConfigLoad >LDYAI MSG.KCREAD
jsr PrintFYA
2018-07-10 15:33:13 +00:00
jsr MLI
.DA #MLIOPEN
.DA MLIOPEN00
bcs .9
lda MLIOPEN00+5
sta MLIREAD00+1
sta MLICLOSE00+1
jsr MLI
.DA #MLIREAD
.DA MLIREAD00
php
pha
jsr MLI
.DA #MLICLOSE
.DA MLICLOSE00
pla
plp
bcs .9
2018-07-12 15:20:39 +00:00
>LDYAI MSG.KCREAD.OK
jsr PrintFYA
2018-07-10 15:33:13 +00:00
rts
2018-07-12 15:20:39 +00:00
.9 >LDYAI MSG.KCREAD.KO
jsr PrintFYA
2018-07-10 15:33:13 +00:00
rts
*--------------------------------------
2018-07-12 15:20:39 +00:00
* INIT3 Subs
*--------------------------------------
SysScrInit ldx #0
ldy #0
.2 lda SYSSCREEN.TOP,y
beq .3
cmp #$40
bcc .10
cmp #$5F
bcs .10
and #$3F
.10 sta SETWRITEAUX
sta SYS.BASL0,x
sta CLRWRITEAUX
iny
lda SYSSCREEN.TOP,y
beq .5
cmp #$40
bcc .11
cmp #$5F
bcs .11
and #$3F
.11 sta SYS.BASL0,x
iny
inx
bra .2
.3 lda #$20
.4 sta SETWRITEAUX
sta SYS.BASL0,x
sta CLRWRITEAUX
.5 lda #$20
sta SYS.BASL0,x
inx
cpx #40
bne .4
rts
*--------------------------------------
PS0.Init >LDYAI CORE.S.PS0 Select Process 0 (Kernel)
>STYA pPs
>LDYAI K.STACKTOP
>STYA pStack
2018-10-05 06:25:15 +00:00
>PUSHWI 0
2018-07-12 15:20:39 +00:00
>PUSHBI 0
>LDYAI DEV.SYS
2018-10-04 06:13:44 +00:00
>SYSCALL fopen
2018-07-12 15:20:39 +00:00
bcs .9
2018-10-05 06:25:15 +00:00
2018-07-12 15:20:39 +00:00
ldy #S.PS.hStdIn
sta (pPs),y
sta CORE.S.PS0+S.PS.hStdIn
iny #S.PS.hStdOut
sta (pPs),y
sta CORE.S.PS0+S.PS.hStdOut
iny #S.PS.hStdErr
sta (pPs),y
sta CORE.S.PS0+S.PS.hStdErr
clc
.9 rts
*--------------------------------------
2018-10-02 15:52:30 +00:00
CPU.Init.6502 >PUSHBI 0
>LDYAI MSG.CPU
>SYSCALL printf
jsr Detect6502 A = CPU type
sta A2osX.CPUTYPE
2018-07-12 15:20:39 +00:00
2018-07-13 14:38:24 +00:00
and #$F
asl
tax
ldy MSG.CPUTYPE,x
lda MSG.CPUTYPE+1,x
2018-07-12 15:20:39 +00:00
2018-08-22 15:23:27 +00:00
>SYSCALL puts
lda MACHID
2017-10-27 14:56:46 +00:00
and #MACHID.T
cmp #MACHID.T.IIc
2018-10-02 15:52:30 +00:00
bne .10
jmp CPU.Init.Z80
2018-10-02 15:52:30 +00:00
.10 >PUSHBI 0
2018-07-12 15:20:39 +00:00
>LDYAI MSG.CPU.SPEED
2018-10-02 15:52:30 +00:00
>SYSCALL printf
stz A2osX.RANDOM16
stz A2osX.RANDOM16+1
php
sei
.1 bit VBL
bpl .2
.2 bit VBL
bmi .2
ldx #0 Count LO
lda #0 Count HI
.3 ldy #3 (2)
.4 nop (2)
dey (2)
bne .4 (2*)
inc A2osX.RANDOM16 (6)
bne .5 (2*)
inc A2osX.RANDOM16+1 (6)
bit VBL (4)
bpl .3 (2*)
bmi .6
.5 nop (2)
nop (2)
nop (2)
bit VBL (4)
bpl .3 (2*)
.6 plp
stz A2osX.CPUSPEED
.7 sec
lda A2osX.RANDOM16
sbc #100
tax
lda A2osX.RANDOM16+1
sbc /100
bcc .8
stx A2osX.RANDOM16
sta A2osX.RANDOM16+1
inc A2osX.CPUSPEED
bra .7
.8 lda A2osX.RANDOM16
sta A2osX.CPUSPEED+1
2018-07-13 14:38:24 +00:00
>PUSHA push CPU speed LO
lda A2osX.CPUSPEED
2018-07-13 14:38:24 +00:00
>PUSHA push CPU speed HI
2018-08-22 15:23:27 +00:00
>PUSHBI 2
2018-07-12 15:20:39 +00:00
>LDYAI MSG.CPU.SPEEDOK
>SYSCALL printf
2018-07-13 14:38:24 +00:00
rts
*--------------------------------------
2018-10-02 15:52:30 +00:00
CPU.Init.Z80 >PUSHBI 0
>LDYAI MSG.Z80
>SYSCALL printf
2018-07-12 15:20:39 +00:00
jsr DetectZ80
bcs .9
sta A2osX.Z80SLOT
2018-07-13 14:38:24 +00:00
>PUSHA
tax
lda #A2osX.S.Z80
sta A2osX.S,x
2018-08-22 15:23:27 +00:00
>PUSHBI 1
2018-07-12 15:20:39 +00:00
>LDYAI MSG.Z80.OK
>SYSCALL printf
rts
2018-07-12 15:20:39 +00:00
.9 >LDYAI MSG.Z80.KO
2018-08-22 15:23:27 +00:00
>SYSCALL puts
rts
*--------------------------------------
* Out:
* A = $60, 6502
* A = $61, 65C02
* A = $62, 65R02
* A = $63, 65816
*--------------------------------------
Detect6502 ldy #0 Test 6502 BCD bug
sed
lda #$99
clc
adc #$01
cld
bmi .9 BUG!, we have 6502
ldy #3 test 65C816 TYX Instruction
ldx #0
.OP 65816
tyx TYX: if 65C816, x becomes non-zero
.OP 65C02
bne .9 worked! 65C816
dey y=2 -> R65C02
ldx $EA save zp $EA
stz $EA store 0 in $EA
* .OP 65R02
.HS F7EA For compatibility with A2osX.ASM
* smb 7,$EA if not Rockwell, assemble as nop nop
* .OP 65C02
asl $EA cs if Rockwell
stx $EA restore zp $EA
bcs .9
dey y=1 -> 65C02
.9 tya
ora #$60
rts
*--------------------------------------
* Out:
* A = Z80 Slot
*--------------------------------------
DetectZ80 ldx #Z80Code.Size
.1 lda Z80Code.Start-1,x
2018-07-04 14:59:12 +00:00
sta Z80CODE-1,x 00000H for Z80
dex
bne .1
stz ZPPtr1
lda #$C1
sta ZPPtr1+1
.2 sta (ZPPtr1)
lda $100D
bmi .8
inc ZPPtr1+1
lda ZPPtr1+1
cmp #$C8
beq .9 CS
clc
adc #$20
sta $100A
bra .2
.8 lda ZPPtr1+1
and #$0F
clc
.9 rts
*--------------------------------------
MemMgrInit >LDYAI Mem.MHiMem
>STYA Mem.HiMem
>STYA Mem.Free
>LDYAI Mem.MLoMem
>STYA Mem.LoMem
stz Mem.LastSlot Reserve Slot #0
sta SETWRITEAUX
>LDYAI Mem.XHiMem
>STYA Mem.HiMem
>STYA Mem.Free
>LDYAI Mem.XLoMem
>STYA Mem.LoMem
stz Mem.LastSlot Reserve Slot #0
sta CLRWRITEAUX
2018-10-15 15:39:21 +00:00
ldx #K.DEV.MAX*2-1
2018-10-05 06:25:15 +00:00
2018-10-15 15:39:21 +00:00
.1 stz Dev.Table.hPath,x
2018-10-05 06:25:15 +00:00
dex
bpl .1
ldx #K.NOD.MAX*2-1
.2 stz Nod.Table.hPath,x
dex
bpl .2
2018-10-15 15:39:21 +00:00
ldx #K.PS.MAX*4-1
2018-10-17 15:31:29 +00:00
.3 stz PS.Table.PID,x
2018-10-15 15:39:21 +00:00
dex
bpl .3
rts
*--------------------------------------
* Setup AuxLC $FFFE->Kernel IRQ Handler
* if irq not handled, jmp (S.IrqMgrOldFFFE)
*--------------------------------------
IrqMgrInit >LDYAI MSG.IRQ
2018-08-22 15:23:27 +00:00
>SYSCALL puts
php
sei
>LDYA $FFFE
>STYA K.IrqHAuxLC.JMP+1
>LDYAI K.IrqHAuxLC
>STYA $FFFE
>LDYAI GP.IrqH
>STYA K.MLI.PARAMS+2
>MLICALL MLIALLOCIRQ
bcs .90
lda K.MLI.PARAMS+1
sta IRQ.INTNUM
plp
jsr IrqMgrInit.TClock
bcs .1
lda #"C"
sta SYS.BASL0+38
>LDYAI K.IrqH.TCLOCK
>STYA K.IrqHAuxLC.JSR+1
>STYA GP.IrqH.JSR+1
>LDYAI MSG.IRQ.CLOCK
2018-08-22 15:23:27 +00:00
>SYSCALL puts
clc
rts
.1 jsr IrqMgrInit.Mouse
bcs .8
lda #"V"
sta SYS.BASL0+38
>LDYAI K.IrqH.VBL
>STYA K.IrqHAuxLC.JSR+1
>STYA GP.IrqH.JSR+1
>LDYAI MSG.IRQ.VBL
2018-08-22 15:23:27 +00:00
>SYSCALL puts
clc
rts
.8 jsr IrqMgrInit.HZ2Tick
lda #"P"
sta SYS.BASL0+38
>LDYAI MSG.IRQ.POLL
2018-08-22 15:23:27 +00:00
>SYSCALL puts
clc
rts
.90 plp
.9 sec
rts
*--------------------------------------
IrqMgrInit.TClock
stz ZPPtr1 Try finding a Mouse Card...
lda #$C1
sta ZPPtr1+1
2018-10-15 06:25:40 +00:00
.1 ldy #TClock.SIG.Cnt-1
.2 lda (ZPPtr1),y
cmp TClock.SIG,y
bne .3
dey
bpl .2
bra .4
.3 inc ZPPtr1+1 no match, try next slot....
lda ZPPtr1+1
cmp #$C8
bne .1
sec
rts
.4 lda ZPPtr1+1 get $Cn
and #$f
tax get $0n
asl
asl
asl
asl
tay get $n0
sty IRQ.VBL.n0
php
sei
lda #$40 Enable interrupt
sta $c080,y
sta $478,x
sta $7f8,x
lda #64
sta CORE.TickPerSec
sta CORE.TickSec
lda #11
sta CORE.TickPer10t
sta CORE.Tick10t
dec CORE.IRQMode
plp
clc
rts
*--------------------------------------
IrqMgrInit.Mouse
stz ZPPtr1 Try finding a Mouse Card...
lda #$C1
sta ZPPtr1+1
.1 ldx #Mouse.SIG-Mouse.OFS-1
.2 ldy Mouse.OFS,x
lda (ZPPtr1),y
cmp Mouse.SIG,x
bne .3
dex
bpl .2
bra .4
.3 inc ZPPtr1+1 no match, try next slot....
lda ZPPtr1+1
cmp #$C8
bne .1
sec
rts
.4 lda ZPPtr1+1
sta .11+2
sta K.IrqH.VBL.MSM+2
sta K.IrqH.VBL.MRM+2
and #$0f
2017-10-27 14:56:46 +00:00
sta IRQ.VBL.0n
asl
asl
asl
asl
2017-10-27 14:56:46 +00:00
sta IRQ.VBL.n0
php
sei
bit RROMBNK2 Renable ROM to allow MOUSE II firmware works properly
ldy #INITMOUSE
jsr .10
ldy #SETMOUSE
lda #MOUSEMODx.INTVBL+MOUSEMODx.ACTIVE
jsr .10
bit RRAMWRAMBNK1 Back To LC Ram
bit RRAMWRAMBNK1
ldy #SERVEMOUSE
lda (ZPPtr1),y
sta K.IrqH.VBL.MSM+1
ldy #READMOUSE
lda (ZPPtr1),y
sta K.IrqH.VBL.MRM+1
jsr IrqMgrInit.HZ2Tick
dec CORE.IRQMode
plp
clc
rts
.9 plp
sec
rts
.10 pha
lda (ZPPtr1),y
sta .11+1
pla
ldx .11+2 Cn
ldy IRQ.VBL.n0
.11 jmp $ffff SELF MODIFIED
*--------------------------------------
IrqMgrInit.HZ2Tick
ldx #50
lda A2osX.HZ
sta CORE.TickPer10t
sta CORE.Tick10t
cmp #5
beq .1
ldx #60
.1 stx CORE.TickPerSec
stx CORE.TickSec
rts
*--------------------------------------
DevMgrInit >LDYAI MSG.DEV
2018-08-22 15:23:27 +00:00
>SYSCALL puts
2018-07-11 15:13:29 +00:00
lda DEVCNT
sta DevMgrInit.DEVCNT
.1 ldx DevMgrInit.DEVCNT
lda DEVLST,x
and #$F0
asl
php Save Drive 1/2 in C
ror DSSS0000
lsr
lsr
lsr
tax 000DSSS0
lsr 0000DSSS
and #$7
2018-07-10 15:33:13 +00:00
sta FD.BDEV+S.FD.DEV.BUSID
lda DEVPTRS,x
2018-07-10 15:33:13 +00:00
sta FD.BDEV+S.FD.DEV.BUSPTR
2018-06-22 06:24:35 +00:00
lda DEVPTRS+1,x
2018-07-10 15:33:13 +00:00
sta FD.BDEV+S.FD.DEV.BUSPTR+1
sta ZPPtr1+1
stz ZPPtr1
plp
lda #0
adc #1 Make DevID 1 or 2
2018-07-10 15:33:13 +00:00
sta FD.BDEV+S.FD.DEV.DEVID
lda ZPPtr1+1
cmp #$D0 Disk II Driver is $D000
bne .2
jsr DevMgrInit.DII
lda #A2osX.S.DII
bra .7 Go mark slot as USED
.2 cmp #$FF /RAM is always $FF00
bne .3
jsr DevMgrInit.RAM
bra .8
.3 and #$F0
cmp #$C0
beq .4
2018-06-22 06:24:35 +00:00
jsr DevMgrInit.USR Outside ROM space, User loaded BLK dev
bra .8
.4 ldx #SmartPort.SIG-SmartPort.OFS-1
2018-06-22 06:24:35 +00:00
.5 ldy SmartPort.OFS,x Check if there is a smartport firmware
lda (ZPPtr1),y
cmp SmartPort.SIG,x
2018-06-22 06:24:35 +00:00
bne .8 not a Disk Controller...
dex
bpl .5
ldy #7
lda (ZPPtr1),y
2018-06-22 06:24:35 +00:00
bne .6 $Cn07=00 : SmartPort
2018-06-22 06:24:35 +00:00
lda ZPPtr1 get $Cn
and #$f get $0n
2018-07-10 15:33:13 +00:00
cmp FD.BDEV+S.FD.DEV.DEVID same as SSS ?
beq .51
2018-07-10 15:33:13 +00:00
inc FD.BDEV+S.FD.DEV.DEVID Remapped SP devices....
inc FD.BDEV+S.FD.DEV.DEVID Add 2 to DEVID (2 & 3)
.51 jsr DevMgrInit.SP
lda #A2osX.S.SP
bra .7
.6 jsr DevMgrInit.BLK
lda #A2osX.S.BLK
2018-07-23 15:28:42 +00:00
.7 ldx FD.BDEV+S.FD.DEV.BUSID
sta A2osX.S,x
.8 dec DevMgrInit.DEVCNT
bmi .80
jmp .1
.80 clc
rts
DevMgrInit.DEVCNT
.BS 1
*--------------------------------------
2018-06-22 06:24:35 +00:00
DevMgrInit.DII >LDYAI DRV.DiskII
2018-07-09 15:25:38 +00:00
jmp DevMgrInit.AddBDev
*--------------------------------------
2018-06-22 06:24:35 +00:00
DevMgrInit.RAM >LDYAI DRV.RamDrive
2018-07-09 15:25:38 +00:00
jmp DevMgrInit.AddBDev
*--------------------------------------
2018-06-22 06:24:35 +00:00
DevMgrInit.USR >LDYAI DRV.BlkDevice
2018-07-09 15:25:38 +00:00
jmp DevMgrInit.AddBDev
*--------------------------------------
DevMgrInit.BLK ldy #$ff
lda (ZPPtr1),y
2018-07-10 15:33:13 +00:00
sta FD.BDEV+S.FD.DEV.BUSPTR
2018-06-22 06:24:35 +00:00
>LDYAI DRV.BlkDevice
2018-07-09 15:25:38 +00:00
jmp DevMgrInit.AddBDev
*--------------------------------------
DevMgrInit.SP ldy #$ff
lda (ZPPtr1),y
clc
adc #3 Compute smartport entry point
sta .1+1
2018-07-10 15:33:13 +00:00
sta FD.BDEV+S.FD.DEV.BUSPTR
lda ZPPtr1+1
sta .1+2
2018-07-10 15:33:13 +00:00
lda FD.BDEV+S.FD.DEV.DEVID
sta SP.DEV.STATUS.DEVID
.1 jsr $ffff Self Modified
.DA #0 Status
.DA SP.DEV.STATUS
bcs .9
2018-07-19 15:33:55 +00:00
ldx SP.DEV.STATUS.DATA+S.DIB.S
2018-07-10 15:33:13 +00:00
2018-06-22 06:24:35 +00:00
>LDYAI DRV.SmartPort
2018-07-09 15:25:38 +00:00
jsr DevMgrInit.AddBDev
.9 rts
*--------------------------------------
2018-07-09 15:25:38 +00:00
DevMgrInit.AddBDev
2018-07-10 15:33:13 +00:00
>STYA FD.BDEV+S.FD.DEV.DRVPTR
2018-07-10 15:33:13 +00:00
lda FD.BDEV+S.FD.DEV.BUSID
ora #$30
2018-07-10 15:33:13 +00:00
sta FD.BDEV+S.FD.DEV.NAME+1 SnDy
2018-07-10 15:33:13 +00:00
lda FD.BDEV+S.FD.DEV.DEVID
ora #$30
2018-07-10 15:33:13 +00:00
sta FD.BDEV+S.FD.DEV.NAME+3 SxDn
2018-07-13 14:38:24 +00:00
>PUSHWI FD.BDEV+S.FD.DEV.NAME
2018-08-22 15:23:27 +00:00
>PUSHBI 2
2018-07-13 14:38:24 +00:00
>LDYAI MSG.BLKDEV
>SYSCALL printf
2018-07-10 15:33:13 +00:00
>LDYAI FD.BDEV
2018-06-22 14:59:24 +00:00
2018-07-17 15:45:59 +00:00
>SYSCALL MKDev
rts
*--------------------------------------
EvtMgrInit >LDYAI MSG.EVT
2018-08-22 15:23:27 +00:00
>SYSCALL puts
2018-07-12 15:20:39 +00:00
lda #$A5
sta A2osX.TIMER16
lda #$9B
sta A2osX.TIMER16+1
lda /Evt.Table
sta pEvent+1
clc
rts
*--------------------------------------
FltMgrInit >LDYAI MSG.FLT
2018-08-22 15:23:27 +00:00
>SYSCALL puts
2018-07-12 15:20:39 +00:00
stz Flt.Table
clc
rts
*--------------------------------------
TskMgrInit >LDYAI MSG.TSK
2018-08-22 15:23:27 +00:00
>SYSCALL puts
>LDYAI K.ENV.SIZE get a buffer for ENV
2018-10-04 15:30:14 +00:00
jsr K.GetMem0 make sure blank!!
bcs .9
txa
ldy #S.PS.hENV
sta (pPs),y
>LDYAI K.Buf256
>STYA K.MLI.PARAMS+1
>MLICALL MLIGETPREFIX
bcs .9
ldy K.Buf256
iny
lda #0
2018-06-22 06:24:35 +00:00
jsr K.GetMem
>STYA ZPPtr1
txa
ldy #S.PS.hPREFIX
sta (pPs),y
ldy K.Buf256
lda #0
sta (ZPPtr1),y
.4 lda K.Buf256,y
dey
sta (ZPPtr1),y
bne .4
>PUSHW ZPPtr1 push ENV value = PREFIX
2018-09-06 15:36:44 +00:00
>LDYAI I.ENV.A2osX push ENV name = A2OSX
>SYSCALL SetEnv
bcs .9
>LDYAI I.ENV.PATH
2018-06-22 06:24:35 +00:00
>SYSCALL PutEnv
bcs .9
>LDYAI I.ENV.LIB
2018-06-22 06:24:35 +00:00
>SYSCALL PutEnv
bcs .9
>LDYAI I.ENV.DRV
2018-06-22 06:24:35 +00:00
>SYSCALL PutEnv
.9 rts
*--------------------------------------
2018-07-11 15:13:29 +00:00
* Modified CHARGET/CHARGOT for ROM CALL
* CHRGET .EQ $B1 - C8
*--------------------------------------
Kernel.ZP .PH $B1
CHARGET inc TXTPTR
bne CHARGOT
inc TXTPTR+1
CHARGOT lda $ffff
beq IsDigit.9
IsDigit cmp #'0'
bcc IsDigit.9
cmp #'9'+1
rts
IsDigit.9 sec
rts
.EP
Kernel.ZP.S .EQ *-Kernel.ZP
*--------------------------------------
Z80Code.Start .HS 31FF00 START: LD SP,000FFH Init Stack
.HS 3EFF LD A,0FFH Set Flag
.HS 320D00 LD (FLAG),A
.HS 3200E1 LD (0E100H),A Back to 6502
.HS 18F3 JR START Loop
.HS 00 FLAG: .DB 0
Z80Code.Size .EQ *-Z80Code.Start
*--------------------------------------
Mouse.OFS .HS 05070B0CFB
Mouse.SIG .HS 38180120D6
*--------------------------------------
TClock.SIG .HS 0878282c58ff700538b00118b8087848
.HS 8a489848adffcf201ac86868ba8df807
2018-10-15 06:25:40 +00:00
TClock.SIG.Cnt .EQ *-TClock.SIG
2018-07-11 15:13:29 +00:00
*--------------------------------------
2018-07-12 15:20:39 +00:00
MSG.Init2 .AZ "A2osX[Stage2]:Init\nRelocating Kernel...\n"
MSG.HZ .AZ "Kernel SYS Timer Set For %d0 hz Machine.\n"
2018-07-13 14:38:24 +00:00
MSG.KCREAD .AZ "Reading Kernel Config File..."
MSG.KCREAD.OK .AZ "OK\n"
MSG.KCREAD.KO .AZ "\nError While Reading Kernel Config File, Using Default.\n"
MSG.Init2.OK .AZ "A2osX[Stage2]:Complete.\n"
*--------------------------------------
2018-10-15 06:25:40 +00:00
SYSSCREEN.TOP .AZ "A2osX 0.92 Console"
2018-10-03 15:25:03 +00:00
MSG.Init3 .AS "A2osX[Stage3]:Init "
2018-10-15 06:25:40 +00:00
.AZ "*** Press Ctrl-D for Mantenance Mode ***"
2018-08-22 15:23:27 +00:00
MSG.DEV .AZ "Device Manager..."
2018-07-20 11:51:08 +00:00
MSG.BLKDEV .AZ " Adding : /DEV/%s\r\n"
2018-08-22 15:23:27 +00:00
MSG.IRQ .AZ "Interrupt Manager..."
MSG.IRQ.VBL .AZ " Mouse VBL IRQ Activated."
MSG.IRQ.CLOCK .AZ " Clock Card IRQ Activated."
MSG.IRQ.POLL .AZ " Polling Mode."
MSG.EVT .AZ "Event Manager..."
MSG.FLT .AZ "Path Filter..."
MSG.TSK .AZ "Task Manager..."
2018-07-20 11:51:08 +00:00
MSG.Prefix .AZ "Root:%s\r\n"
2018-08-22 15:23:27 +00:00
MSG.MMode .AZ "Ctrl-D Pressed, entering Maintenance mode..."
2018-10-05 14:58:38 +00:00
MSG.Startup .AZ "Executing Startup Script:%s "
MSG.StartupErr .AZ "Failed : [$%h]\r\n"
2018-10-05 14:58:38 +00:00
MSG.Init3.OK .AZ "OK\r\nA2osX[Stage3]:Complete.\r\n"
*--------------------------------------
MSG.CPU .AZ "Checking CPU..."
2018-07-13 14:38:24 +00:00
MSG.CPUTYPE .DA MSG.6502
.DA MSG.65C02
.DA MSG.65R02
.DA MSG.65816
2018-08-22 15:23:27 +00:00
MSG.6502 .AZ "6502."
MSG.65C02 .AZ "65C02."
MSG.65R02 .AZ "65R02."
MSG.65816 .AZ "65816."
2018-10-03 15:25:03 +00:00
MSG.CPU.SPEED .AZ "Checking CPU Speed..."
2018-07-13 14:38:24 +00:00
MSG.CPU.SPEEDOK .AZ "%d.%02d Mhz.\r\n"
2018-10-03 15:25:03 +00:00
MSG.Z80 .AZ "Checking Z80 CPU..."
2018-07-13 14:38:24 +00:00
MSG.Z80.OK .AZ "Detected In Slot %d.\r\n"
2018-08-22 15:23:27 +00:00
MSG.Z80.KO .AZ "Not Detected."
*--------------------------------------
2018-07-11 15:13:29 +00:00
DEV.SYS .AZ "/DEV/SYS"
I.ENV.A2osX .AZ "A2OSX"
I.ENV.PATH .AZ "PATH=${A2OSX}SBIN/;${A2OSX}BIN/"
I.ENV.LIB .AZ "LIB=${A2OSX}LIB/"
I.ENV.DRV .AZ "DRV=${A2OSX}DRV/"
2018-07-17 15:45:59 +00:00
STARTUP.SHELL .AZ "${A2OSX}SBIN/SHELL"
2018-10-15 15:39:21 +00:00
STARTUP.CMDLINE .AZ "${A2OSX}SBIN/SHELL ${A2OSX}A2osX.STARTUP"
*--------------------------------------
MLIOPEN00 .DA #3
.DA A2OSXCONF
.DA $B000
.BS 1
A2OSXCONF >PSTR "A2osX.KCONFIG"
*--------------------------------------
MLIREAD00 .DA #4
.BS 1
2018-10-08 05:55:28 +00:00
.DA A2osX.KCONFIG
.DA 16
.BS 2
*--------------------------------------
MLICLOSE00 .DA #1
.BS 1
*--------------------------------------
2018-07-11 15:13:29 +00:00
FD.NULL .DA #S.FD.T.CDEV
.DA #0 HANDLER
.DA #0 BUSID
.DA #DEVID.NULL
2018-07-12 15:20:39 +00:00
.DA 0 BUSPTR
2018-07-11 15:13:29 +00:00
.DA DRV.NULL
.AZ "NULL" NAME
.HS 000000
*--------------------------------------
FD.SYS .DA #S.FD.T.CDEV
.DA #0 HANDLER
.DA #0 BUSID
.DA #DEVID.SYS
2018-07-12 15:20:39 +00:00
.DA 0 BUSPTR
2018-07-11 15:13:29 +00:00
.DA DRV.SYS
.AZ "SYS" NAME
.HS 00000000
*--------------------------------------
FD.BDEV .DA #S.FD.T.BDEV
.DA #0 HANDLER
.DA #0 BUSID
.DA #0 DEVID
2018-07-12 15:20:39 +00:00
.BS 2 BUSPTR
2018-07-11 15:13:29 +00:00
.BS 2 DRVPTR
.AZ "S1D1" NAME
.HS 000000
*--------------------------------------
SmartPort.OFS .HS 010305
SmartPort.SIG .HS 200003
*--------------------------------------
SP.DEV.STATUS .DA #3
SP.DEV.STATUS.DEVID
.BS 1
.DA SP.DEV.STATUS.DATA
.DA S.IOCTL.STATCODE.GETDIB
SP.DEV.STATUS.DATA
2018-07-19 15:33:55 +00:00
.BS S.DIB
2018-07-11 15:13:29 +00:00
*--------------------------------------
MAN
SAVE /A2OSX.SRC/SYS/KERNEL.S.INIT
LOAD /A2OSX.SRC/SYS/KERNEL.S
ASM