mirror of https://github.com/A2osX/A2osX.git
Kernel 0.94
This commit is contained in:
parent
d5ae40e15e
commit
eeb708419c
Binary file not shown.
Binary file not shown.
|
@ -12,8 +12,10 @@ NEW
|
|||
A2osX.QC.Start .EQ *
|
||||
A2osX.QC cld
|
||||
jmp A2osX.QC.Start1
|
||||
|
||||
A2osX.QC.BOOT .BS 32
|
||||
A2osX.QC.ROOT .BS 32
|
||||
|
||||
A2osX.QC.Start1 sei
|
||||
ldx #$FF
|
||||
txs
|
||||
|
@ -26,6 +28,7 @@ A2osX.QC.Start1 sei
|
|||
lda #$01
|
||||
sta MEMTABL+$17 protect ProDOS MLI Page
|
||||
ldx #$16
|
||||
|
||||
.1 stz MEMTABL,x Reset ProDOS memory bitmap
|
||||
dex
|
||||
bne .1
|
||||
|
@ -35,13 +38,22 @@ A2osX.QC.Start1 sei
|
|||
|
||||
lda #$8C Reset 80 col screen ($0C=FF=HOME)
|
||||
jsr $C300
|
||||
sec
|
||||
|
||||
lda $280
|
||||
beq A2osX.QC.Start2
|
||||
|
||||
jsr A2osX.QC.Load
|
||||
bcs A2osX.QC.Start2
|
||||
|
||||
jmp $2000
|
||||
|
||||
A2osX.QC.Start2 sec
|
||||
>LDYAI MSG.INIT1
|
||||
jsr A2osX.QC.PrintYA
|
||||
|
||||
.3 jsr MLI
|
||||
.DA #MLISETPREFIX
|
||||
.DA MLISETPREFIX00
|
||||
.DA MLISETPREFIX03
|
||||
bcc .4
|
||||
|
||||
>LDYAI MSG.SETPREFIXKO
|
||||
|
@ -50,7 +62,7 @@ A2osX.QC.Start1 sei
|
|||
>LDYAI A2osX.QC.BOOT
|
||||
sec
|
||||
jsr A2osX.QC.PrintYA
|
||||
|
||||
>DEBUG
|
||||
bra .3
|
||||
|
||||
.4 >LDYAI MSG.SETPREFIXOK
|
||||
|
@ -73,70 +85,77 @@ A2osX.QC.Start1 sei
|
|||
|
||||
ldx A2osX.QC.ROOT
|
||||
stz $2E0,x
|
||||
|
||||
.6 lda A2osX.QC.ROOT,x
|
||||
sta $2E0-1,x ROOT sz for KERNEL
|
||||
dex
|
||||
bpl .6
|
||||
|
||||
jsr A2osX.QC.KLoad
|
||||
ldx $280
|
||||
|
||||
ldy #0
|
||||
|
||||
.7 inx
|
||||
iny
|
||||
lda SYSKERNEL,y
|
||||
sta $280,x
|
||||
cpy SYSKERNEL
|
||||
bne .7
|
||||
|
||||
stx $280
|
||||
|
||||
jsr A2osX.QC.Load
|
||||
bcs *
|
||||
.8 >LDYAI MSG.INIT1OK
|
||||
sec
|
||||
jsr A2osX.QC.PrintYA
|
||||
|
||||
* >LDYAI GO.Reset
|
||||
* >STYA POWERUP
|
||||
* bit RROMBNK1
|
||||
* jsr SETPWRC
|
||||
>DEBUGOA
|
||||
A2osX.QC.JMP >DEBUGOA
|
||||
jmp $2000
|
||||
*--------------------------------------
|
||||
A2osX.QC.KLoad >LDYAI MSG.KLOAD
|
||||
A2osX.QC.Load >LDYAI MSG.LOAD
|
||||
clc
|
||||
jsr A2osX.QC.PrintYA
|
||||
|
||||
ldx $280
|
||||
|
||||
ldy #0
|
||||
.2 inx
|
||||
iny
|
||||
lda SYSKERNEL,y
|
||||
sta $280,x
|
||||
cpy SYSKERNEL
|
||||
bne .2
|
||||
stx $280
|
||||
|
||||
>LDYAI $280
|
||||
clc
|
||||
jsr A2osX.QC.PrintYA
|
||||
|
||||
jsr MLI
|
||||
.DA #MLIOPEN
|
||||
.DA MLIOPENK
|
||||
.DA MLIOPEN03
|
||||
bcs .9
|
||||
lda MLIOPENK+5
|
||||
sta MLIREADK+1
|
||||
sta MLICLOSEK+1
|
||||
|
||||
lda MLIOPEN03+5
|
||||
sta MLIREAD03+1
|
||||
sta MLICLOSE03+1
|
||||
|
||||
jsr MLI
|
||||
.DA #MLIREAD
|
||||
.DA MLIREADK
|
||||
.DA MLIREAD03
|
||||
|
||||
php
|
||||
pha
|
||||
jsr MLI
|
||||
.DA #MLICLOSE
|
||||
.DA MLICLOSEK
|
||||
.DA MLICLOSE03
|
||||
|
||||
pla
|
||||
plp
|
||||
bcc .8
|
||||
|
||||
.9 jsr PRBYTE
|
||||
|
||||
>LDYAI MSG.KLOAD.KO
|
||||
sec
|
||||
.9 pha
|
||||
>LDYAI MSG.LOAD.KO
|
||||
clc
|
||||
jsr A2osX.QC.PrintYA
|
||||
pla
|
||||
jsr PRBYTE
|
||||
jsr CROUT
|
||||
|
||||
sec
|
||||
rts
|
||||
|
||||
.8 >LDYAI MSG.KLOAD.OK
|
||||
.8 >LDYAI MSG.LOAD.OK
|
||||
sec
|
||||
jsr A2osX.QC.PrintYA
|
||||
clc
|
||||
|
@ -162,21 +181,21 @@ A2osX.QC.PrintYA
|
|||
jsr CROUT
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
MLISETPREFIX00 .DA #1
|
||||
MLISETPREFIX03 .DA #1
|
||||
.DA A2osX.QC.BOOT
|
||||
*--------------------------------------
|
||||
MLIOPENK .DA #3
|
||||
MLIOPEN03 .DA #3
|
||||
.DA $280
|
||||
.DA $C00
|
||||
.BS 1
|
||||
*--------------------------------------
|
||||
MLIREADK .DA #4
|
||||
MLIREAD03 .DA #4
|
||||
.BS 1
|
||||
.DA $2000
|
||||
.DA $8000
|
||||
.DA $9F00 Max .SYSTEM file len
|
||||
.BS 2
|
||||
*--------------------------------------
|
||||
MLICLOSEK .DA #1
|
||||
MLICLOSE03 .DA #1
|
||||
.BS 1
|
||||
*--------------------------------------
|
||||
SYSKERNEL >PSTR "sys/kernel"
|
||||
|
@ -184,9 +203,9 @@ SYSKERNEL >PSTR "sys/kernel"
|
|||
MSG.INIT1 >PSTR "A2osX[Stage1]:Init"
|
||||
MSG.SETPREFIXOK >PSTR "Prefix Set: "
|
||||
MSG.SETPREFIXKO >PSTR "Insert Vol:"
|
||||
MSG.KLOAD >PSTR "Loading Kernel..."
|
||||
MSG.KLOAD.KO >PSTR " Error While Loading Kernel."
|
||||
MSG.KLOAD.OK >PSTR "Done."
|
||||
MSG.LOAD >PSTR "Loading : "
|
||||
MSG.LOAD.KO >PSTR " Error $"
|
||||
MSG.LOAD.OK >PSTR " OK."
|
||||
MSG.INIT1OK >PSTR "A2osX[Stage1]:Complete."
|
||||
*--------------------------------------
|
||||
.LIST ON
|
||||
|
|
|
@ -73,6 +73,8 @@ CS.RUN lda #DEFAULT.TIMEOUT
|
|||
|
||||
>LDYA ZPPtr1
|
||||
>STYA ArgPtr
|
||||
lda #3
|
||||
sta TimeOut
|
||||
bra .1
|
||||
|
||||
.2 ldy #2
|
||||
|
@ -276,10 +278,10 @@ CS.RUN.SYS stz $280
|
|||
>SYSCALL RealPath
|
||||
bcs .9
|
||||
|
||||
ldx #0
|
||||
ldx #$ff
|
||||
|
||||
.1 inx
|
||||
lda $280,x
|
||||
lda $281,x
|
||||
bne .1
|
||||
|
||||
stx $280
|
||||
|
|
|
@ -18,7 +18,7 @@ BIN.R.Stop .BS 2
|
|||
* out :
|
||||
* A = hMem To loaded LIB
|
||||
*--------------------------------------
|
||||
K.LoadLib jsr ENV.Search.LIB
|
||||
K.LoadLib jsr PS.Find.LIB
|
||||
bcs .9
|
||||
jsr BIN.Load K.Buf256 = "/PATH/BIN"
|
||||
bcs .9
|
||||
|
@ -66,7 +66,7 @@ K.UnloadLib pha
|
|||
*\--------------------------------------
|
||||
K.LoadDrv >STYA .2+1 Save "BIN\0ARGS\0\0"
|
||||
|
||||
jsr ENV.Search.DRV
|
||||
jsr PS.Find.DRV
|
||||
bcs .9
|
||||
jsr BIN.Load K.Buf256 = "/PATH/BIN"
|
||||
bcs .9
|
||||
|
|
|
@ -501,7 +501,7 @@ CORE.IRQ.IIGS lda IO.IIGS.INTFLAG
|
|||
|
||||
bra CORE.IRQ.Switch
|
||||
*--------------------------------------
|
||||
CORE.IRQ.TCLOCK ldy IRQ.VBL.n0
|
||||
CORE.IRQ.TCLOCK ldy IRQ.n0
|
||||
|
||||
lda $c080,y
|
||||
and #$20
|
||||
|
@ -515,13 +515,13 @@ CORE.IRQ.TCLOCK ldy IRQ.VBL.n0
|
|||
CORE.IRQ.MOUSE jsr $FFFF SELF MODIFIED,SERVEMOUSE
|
||||
bcs CORE.IRQ.DEV Not From Mouse
|
||||
|
||||
ldx IRQ.VBL.0n
|
||||
ldx IRQ.0n
|
||||
lda MOUSESTSx,x
|
||||
and #MOUSESTSx.INTVBL IRQ was caused by VBL ?
|
||||
beq CORE.IRQ.DEV
|
||||
|
||||
ldx CORE.IRQ.MOUSE.2+2 $Cn
|
||||
ldy IRQ.VBL.n0
|
||||
ldy IRQ.n0
|
||||
|
||||
CORE.IRQ.MOUSE.2
|
||||
jsr $FFFF SELF MODIFIED,READMOUSE
|
||||
|
@ -590,10 +590,10 @@ CORE.IRQ.IIGS.Off
|
|||
|
||||
rts
|
||||
CORE.IRQ.TCLOCK.Off
|
||||
ldx IRQ.VBL.n0
|
||||
ldx IRQ.n0
|
||||
stz $c080,x
|
||||
|
||||
ldx IRQ.VBL.0n
|
||||
ldx IRQ.0n
|
||||
sta CLRPAGE2
|
||||
stz $478,x
|
||||
stz $7f8,x
|
||||
|
@ -601,7 +601,7 @@ CORE.IRQ.TCLOCK.Off
|
|||
rts
|
||||
CORE.IRQ.MOUSE.Off
|
||||
ldy CORE.IRQ.MOUSE.Off.1+2 Cn
|
||||
ldy IRQ.VBL.n0
|
||||
ldy IRQ.n0
|
||||
lda #0
|
||||
CORE.IRQ.MOUSE.Off.1
|
||||
jmp $ffff SELF MODIFIED
|
||||
|
@ -610,11 +610,11 @@ CORE.IRQ.None.Off
|
|||
*--------------------------------------
|
||||
IRQ.InKernel .BS 1
|
||||
IRQ.InLib .BS 1
|
||||
IRQ.SkipA2osX .BS 1
|
||||
IRQ.Skip .BS 1
|
||||
|
||||
IRQ.IntNum .BS 1
|
||||
IRQ.VBL.n0 .BS 1
|
||||
IRQ.VBL.0n .BS 1
|
||||
IRQ.n0 .BS 1
|
||||
IRQ.0n .BS 1
|
||||
IRQ.Mode .BS 1
|
||||
IRQ.Tick .BS 1
|
||||
*--------------------------------------
|
||||
|
|
|
@ -375,7 +375,7 @@ GO.EXIT.JMP jmp $FFFF SELF MODIFIED
|
|||
*--------------------------------------
|
||||
GP.IRQ cld
|
||||
|
||||
bit IRQ.SkipA2osX After A2osX IRQ.H ?
|
||||
bit IRQ.Skip After A2osX IRQ.H ?
|
||||
bmi GP.IRQ.Exit
|
||||
sta SETALTZP switch to aux LC
|
||||
tsx
|
||||
|
@ -391,7 +391,7 @@ GP.IRQ.JSR jsr CORE.IRQ.DEV SELF MODIFIED
|
|||
sta CLRALTZP
|
||||
rts
|
||||
|
||||
GP.IRQ.Exit stz IRQ.SkipA2osX reset flag
|
||||
GP.IRQ.Exit stz IRQ.Skip reset flag
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
|
|
@ -922,7 +922,7 @@ IrqMgrInit.TClock
|
|||
asl
|
||||
asl
|
||||
tay get $n0
|
||||
sty IRQ.VBL.n0
|
||||
sty IRQ.n0
|
||||
lda #A2osX.S.CLK
|
||||
sta A2osX.S,x
|
||||
|
||||
|
@ -976,13 +976,13 @@ IrqMgrInit.Mouse
|
|||
sta CORE.IRQ.MOUSE+2
|
||||
sta CORE.IRQ.MOUSE.2+2
|
||||
and #$0f
|
||||
sta IRQ.VBL.0n
|
||||
sta IRQ.0n
|
||||
asl
|
||||
asl
|
||||
asl
|
||||
asl
|
||||
|
||||
sta IRQ.VBL.n0
|
||||
sta IRQ.n0
|
||||
|
||||
php
|
||||
sei
|
||||
|
@ -1022,7 +1022,7 @@ IrqMgrInit.Mouse
|
|||
sta .11+1
|
||||
pla
|
||||
ldx .11+2 Cn
|
||||
ldy IRQ.VBL.n0
|
||||
ldy IRQ.n0
|
||||
|
||||
.11 jmp $ffff SELF MODIFIED
|
||||
*--------------------------------------
|
||||
|
|
|
@ -128,7 +128,7 @@ IRQ.5 ldx #$ff Self Modified
|
|||
IRQ.6 lda #$ff Self Modified
|
||||
bcc IRQ.8
|
||||
|
||||
dec IRQ.SkipA2osX Make regular ProDOS IRQ manager skip A2osX
|
||||
dec IRQ.Skip Make regular ProDOS IRQ manager skip A2osX
|
||||
IRQ.JMP jmp $FFFF SELF MODIFIED Not handled, pass to ProDOS
|
||||
|
||||
IRQ.8 rti
|
||||
|
|
|
@ -335,11 +335,11 @@ PS.Load ldy #$ff
|
|||
|
||||
.2 >LDYA PS.ArgV
|
||||
|
||||
jsr ENV.Search.PATH Get fullpath in K.Buf256
|
||||
jsr PS.Find.PATH Get fullpath in K.Buf256
|
||||
bcc .6
|
||||
|
||||
>LDYA PS.ArgV
|
||||
jsr ENV.Search.CWD
|
||||
jsr PS.Find.CWD
|
||||
bcs .99
|
||||
|
||||
.6 lda K.S.STAT+S.STAT.P.TYPE
|
||||
|
@ -350,21 +350,33 @@ PS.Load ldy #$ff
|
|||
.7 cmp #S.FI.T.TXT
|
||||
beq PS.Load.SCRIPT
|
||||
|
||||
* cmp #S.FI.T.SYS
|
||||
* bra *
|
||||
cmp #S.FI.T.SYS
|
||||
bne PS.Load.IPATH
|
||||
|
||||
jsr PS.Buf2IO .SYSTEM -> IOBUF
|
||||
|
||||
* ldy #$ff
|
||||
|
||||
*.8 iny
|
||||
* inx
|
||||
* lda PS.T,y
|
||||
* sta K.IOBuf-1,x
|
||||
* bne .8
|
||||
|
||||
>LDYAI PS.SHUTDOWN
|
||||
jsr PS.Find.PATH
|
||||
bcs PS.Load.RTS
|
||||
|
||||
jmp PS.LoadBIN
|
||||
*--------------------------------------
|
||||
PS.Load.IPATH lda #E.BADPATH
|
||||
.HS 2C
|
||||
PS.Load.IBIN lda #E.IBIN
|
||||
sec
|
||||
PS.Load.RTS rts
|
||||
*--------------------------------------
|
||||
PS.Load.SCRIPT jsr PS.Buf2IO
|
||||
|
||||
PS.Load.SCRIPT ldx #$ff
|
||||
|
||||
.10 inx Save Script name in IOBuf
|
||||
lda K.Buf256,x
|
||||
sta K.IOBuf,x
|
||||
bne .10
|
||||
jsr PS.LoadGetHeader
|
||||
bcs PS.Load.RTS
|
||||
|
||||
|
@ -880,12 +892,12 @@ K.LoadFile clc
|
|||
*\--------------------------------------
|
||||
K.FileSearch >PULLW .4+1 DstStat
|
||||
>PULLW .2+1 DstBuf
|
||||
>PULLW ENV.Search.2+1 path to search
|
||||
>PULLW ENV.Search.4+1 filename to find
|
||||
>PULLW PS.Find.2+1 path to search
|
||||
>PULLW PS.Find.4+1 filename to find
|
||||
|
||||
stz ENV.Search.98+1
|
||||
stz PS.Find.98+1
|
||||
|
||||
jsr ENV.Search
|
||||
jsr PS.Find
|
||||
bcs K.FileSearch.RTS
|
||||
|
||||
ldx #$ff
|
||||
|
@ -902,78 +914,78 @@ K.FileSearch >PULLW .4+1 DstStat
|
|||
K.FileSearch.RTS
|
||||
rts
|
||||
*--------------------------------------
|
||||
ENV.Search.CWD >STYA ENV.Search.4+1 filename to find
|
||||
PS.Find.CWD >STYA PS.Find.4+1 filename to find
|
||||
ldy #S.PS.hCWD
|
||||
lda (PS.NewPSPtr),y
|
||||
jsr K.GetMemPtr
|
||||
>STYA ENV.Search.2+1
|
||||
>STYA PS.Find.2+1
|
||||
|
||||
stz ENV.Search.98+1
|
||||
stz PS.Find.98+1
|
||||
|
||||
bra ENV.Search
|
||||
bra PS.Find
|
||||
|
||||
ENV.Search.LIB ldx #0
|
||||
PS.Find.LIB ldx #0
|
||||
.HS 2C BIT ABS
|
||||
ENV.Search.DRV ldx #2
|
||||
PS.Find.DRV ldx #2
|
||||
.HS 2C BIT ABS
|
||||
ENV.Search.PATH ldx #4
|
||||
PS.Find.PATH ldx #4
|
||||
|
||||
>STYA ENV.Search.4+1 filename to find
|
||||
>STYA PS.Find.4+1 filename to find
|
||||
|
||||
>PUSHW ENV.VARS,x
|
||||
>PUSHW PS.VARS,x
|
||||
>PUSHWI 0 allocate...
|
||||
>SYSCALL2 GetEnv get value for Search Path
|
||||
bcs K.FileSearch.RTS
|
||||
|
||||
>STYA ENV.Search.2+1
|
||||
stx ENV.Search.98+1
|
||||
>STYA PS.Find.2+1
|
||||
stx PS.Find.98+1
|
||||
|
||||
ENV.Search stz ENV.Search.1+1
|
||||
PS.Find stz PS.Find.1+1
|
||||
|
||||
ENV.Search.1 ldy #0 Self Modified Index in Search list string
|
||||
PS.Find.1 ldy #0 Self Modified Index in Search list string
|
||||
|
||||
ldx #0
|
||||
|
||||
ENV.Search.2 lda $ffff,y SELF MODIFIED
|
||||
PS.Find.2 lda $ffff,y SELF MODIFIED
|
||||
|
||||
beq ENV.Search.3 end of string, try it....
|
||||
beq PS.Find.3 end of string, try it....
|
||||
|
||||
iny
|
||||
cmp #':'
|
||||
beq ENV.Search.3
|
||||
beq PS.Find.3
|
||||
|
||||
sta K.Buf256,x
|
||||
inx
|
||||
bra ENV.Search.2
|
||||
bra PS.Find.2
|
||||
|
||||
ENV.Search.3 txa
|
||||
beq ENV.Search.98 String is empty....nothing to try
|
||||
PS.Find.3 txa
|
||||
beq PS.Find.98 String is empty....nothing to try
|
||||
|
||||
sty ENV.Search.1+1 save current index
|
||||
sty PS.Find.1+1 save current index
|
||||
|
||||
ldy #0
|
||||
|
||||
ENV.Search.4 lda $ffff,y Self Modified, Append Filename...
|
||||
PS.Find.4 lda $ffff,y Self Modified, Append Filename...
|
||||
sta K.Buf256,x
|
||||
beq ENV.Search.5
|
||||
beq PS.Find.5
|
||||
|
||||
iny
|
||||
inx
|
||||
bra ENV.Search.4
|
||||
bra PS.Find.4
|
||||
|
||||
ENV.Search.5 >LDYAI K.Buf256
|
||||
PS.Find.5 >LDYAI K.Buf256
|
||||
jsr FS.STAT.YA
|
||||
bcs ENV.Search.1 Failed...retry next path...
|
||||
bcs PS.Find.1 Failed...retry next path...
|
||||
|
||||
lda K.S.STAT+S.STAT.P.TYPE
|
||||
cmp #S.FI.T.DIR Dir ?
|
||||
beq ENV.Search.1
|
||||
jsr ENV.Search.98 Discard Expanded hSrch list
|
||||
beq PS.Find.1
|
||||
jsr PS.Find.98 Discard Expanded hSrch list
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
ENV.Search.98 lda #$ff SELF MODIFIED : Discard Search list
|
||||
PS.Find.98 lda #$ff SELF MODIFIED : Discard Search list
|
||||
beq .1
|
||||
|
||||
jsr K.FreeMem
|
||||
|
@ -982,7 +994,18 @@ ENV.Search.98 lda #$ff SELF MODIFIED : Discard Search list
|
|||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
ENV.VARS .DA .1
|
||||
PS.Buf2IO ldx #$ff
|
||||
|
||||
.1 inx Save Script name in IOBuf
|
||||
lda K.Buf256,x
|
||||
sta K.IOBuf,x
|
||||
bne .1
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
PS.SHUTDOWN .AZ "shutdown"
|
||||
*PS.T .AZ " -T 3"
|
||||
PS.VARS .DA .1
|
||||
.DA .2
|
||||
.DA .3
|
||||
.1 .AZ "LIB"
|
||||
|
@ -999,6 +1022,7 @@ K.GetMemStat >STYA ZPPtr1
|
|||
|
||||
ldy #23
|
||||
ldx #7
|
||||
|
||||
.1 lda DevMgr.Stat,x
|
||||
sta (ZPPtr1),y
|
||||
dey
|
||||
|
@ -1007,12 +1031,15 @@ K.GetMemStat >STYA ZPPtr1
|
|||
sta SETREADAUX
|
||||
jsr .2
|
||||
sta CLRREADAUX
|
||||
|
||||
.2 ldx #7
|
||||
|
||||
.3 lda Mem.Table,x
|
||||
sta (ZPPtr1),y
|
||||
dey
|
||||
dex
|
||||
bpl .3
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
|
Loading…
Reference in New Issue