Kernel 0.94

This commit is contained in:
Rémy GIBERT 2020-09-25 14:05:23 +02:00
parent d5ae40e15e
commit eeb708419c
10 changed files with 151 additions and 103 deletions

Binary file not shown.

Binary file not shown.

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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
*--------------------------------------

View File

@ -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
*--------------------------------------

View File

@ -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
*--------------------------------------

View File

@ -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

View File

@ -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
*--------------------------------------