Kernel version 0.9 : KConfig file now loaded by Kernel, no more QCODE

bug fix in KERNEL.S.JMP table, few bytes saved here & there
This commit is contained in:
Rémy GIBERT 2017-05-03 17:40:02 +02:00
parent 993e1828fe
commit 4841e57d46
9 changed files with 134 additions and 121 deletions

View File

@ -7,11 +7,6 @@ AUTO 8
*--------------------------------------
* ****** START OF MLI QUIT CODE ******
* Load Address :$1000-$12FF
*--------------------------------------
MLIOPEN00.PATH .EQ $200
MLIOPEN00.BUFF .EQ $0C00 1k Buffer for MLI open
MLIREAD00.ADDR .EQ $2000 for loading KERNEL
MLIREAD01.ADDR .EQ A2osX.HZ for loading CONFIG
*--------------------------------------
.PH $1000
*--------------------------------------
@ -62,34 +57,15 @@ A2osX.QC.Start1 sei
>LDAXI A2osX.QC.Prefix
jsr A2osX.QC.PrintAX
>DEBUGOA
>DEBUG
bra .3
.4 >LDAXI MSG.SETPREFIXOK
jsr A2osX.QC.PrintAX
>LDAXI MSG.KLOADING
jsr A2osX.QC.PrintAX
jsr A2osX.QC.KLoad
bcs .9
>LDAXI MSG.CLOADING
jsr A2osX.QC.PrintAX
jsr A2osX.QC.CLoad
bcc .8
>LDAXI MSG.CLOADING.KO
jsr A2osX.QC.PrintAX
ldx #15
.5 lda A2OSXCONF.DEFAULT,x
sta A2osX.HZ,x
dex
bpl .5
bcs *
* >LDYAI GO.Reset
* >STYA POWERUP
@ -101,52 +77,24 @@ A2osX.QC.Start1 sei
>DEBUGOA
jmp $2000
.9 >LDAXI MSG.KLOADING.KO
*--------------------------------------
A2osX.QC.KLoad >LDAXI MSG.KLOAD
jsr A2osX.QC.PrintAX
bra *
*--------------------------------------
A2osX.QC.KLoad >LDYAI SYSKERNEL
jsr A2osX.QC.FOPENYA
bcs .9
>LDYAI MLIREAD00K
jsr A2osX.QC.FREADYA
.9 rts
*--------------------------------------
A2osX.QC.CLoad >LDYAI A2OSXCONF
jsr A2osX.QC.FOPENYA
bcs .9
>LDYAI MLIREAD00C
jsr A2osX.QC.FREADYA
.9 rts
*--------------------------------------
A2osX.QC.FOPENYA
>STYA TmpPtr1
ldx A2osX.QC.Prefix
.1 lda A2osX.QC.Prefix,x
sta MLIOPEN00.PATH,x
dex
bne .1
ldx A2osX.QC.Prefix
ldy #0
.2 iny
lda (TmpPtr1),y
sta MLIOPEN00.PATH+1,x
inx
tya
cmp (TmpPtr1)
.2 inx
iny
lda SYSKERNEL,y
sta A2osX.QC.Prefix,x
cpy SYSKERNEL
bne .2
stx MLIOPEN00.PATH
stx A2osX.QC.Prefix
>LDAXI MLIOPEN00.PATH
>LDAXI A2osX.QC.Prefix
jsr A2osX.QC.PrintAX
jsr MLI
@ -155,16 +103,12 @@ A2osX.QC.FOPENYA
bcs .9
lda MLIOPEN00+5
sta MLIREAD00K+1
sta MLIREAD00C+1
sta MLIREAD00+1
sta MLICLOSE00+1
.9 rts
*--------------------------------------
A2osX.QC.FREADYA
>STYA .1
jsr MLI
.DA #MLIREAD
.1 .DA $ffff
.DA MLIREAD00
php
pha
@ -175,7 +119,12 @@ A2osX.QC.FREADYA
pla
plp
rts
bcc .9
>LDAXI MSG.KLOAD.KO
jsr A2osX.QC.PrintAX
.9 rts
*--------------------------------------
A2osX.QC.PrintAX
>STAX TmpPtr1
@ -198,41 +147,26 @@ MLISETPREFIX00 .DA #1
.DA A2osX.QC.Prefix
*--------------------------------------
MLIOPEN00 .DA #3
.DA MLIOPEN00.PATH
.DA MLIOPEN00.BUFF
.DA A2osX.QC.Prefix
.DA $C00
.BS 1
*--------------------------------------
MLIREAD00K .DA #4
MLIREAD00 .DA #4
.BS 1
.DA MLIREAD00.ADDR
.DA $2000
.DA $8000
.BS 2
*--------------------------------------
MLIREAD00C .DA #4
.BS 1
.DA MLIREAD01.ADDR
.DA 16
.BS 2
*--------------------------------------
MLICLOSE00 .DA #1
.BS 1
*--------------------------------------
SYSKERNEL >PSTR "SYS/KERNEL"
A2OSXCONF >PSTR "A2osX.KCONFIG"
*--------------------------------------
A2OSXCONF.DEFAULT
.DA #6 60hz
.BS 7
.DA #0 ChRoot
.BS 7 All Slots marked as "Free"
*--------------------------------------
MSG.INIT1 >PSTR "A2osX[Stage1]:Init"
MSG.SETPREFIXOK >PSTR "Set Prefix OK"
MSG.SETPREFIXKO >PSTR "Insert Vol:"
MSG.KLOADING >PSTR "Loading Kernel..."
MSG.KLOADING.KO >PSTR "Error While Loading Kernel."
MSG.CLOADING >PSTR "Reading Kernel Config File..."
MSG.CLOADING.KO >PSTR "Error While Reading Kernel Config File, Using Default."
MSG.KLOAD >PSTR "Loading Kernel..."
MSG.KLOAD.KO >PSTR "Error While Loading Kernel."
MSG.INIT1OK >PSTR "A2osX[Stage1]:Complete."
*--------------------------------------
.BS $1300-*

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -246,9 +246,9 @@ GO.A2osX php
sei
sta A2osX.SaveA
stx A2osX.SaveX
sty A2osX.SaveY
sta GO.EXIT.SaveA+1
stx GO.EXIT.SaveX+1
sty GO.EXIT.SaveY+1
pla Restore P in A for later
@ -288,16 +288,12 @@ GO.A2osX.BNK ldx #RRAMWRAMBNK1 Self Modified, initialized to BNK1 for INIT3
*--------------------------------------
GO.EXIT sty pStack
pha push P on stack
ldy A2osX.SaveY
ldx A2osX.SaveX
lda A2osX.SaveA
GO.EXIT.SaveY ldy #$ff
GO.EXIT.SaveX ldx #$ff
GO.EXIT.SaveA lda #$ff
plp
GO.EXIT.JMP jmp $FFFF Self Modified
*--------------------------------------
A2osX.SaveA .BS 1
A2osX.SaveX .BS 1
A2osX.SaveY .BS 1
*--------------------------------------
* Called for ProDOS IRQ Manager (LCBNK1)
* A,X,Y, $FA->$FF Already Saved
* Main RAM,ZP/LC selected
@ -333,6 +329,13 @@ IrqHandler cld
.3 rts
*--------------------------------------
BrkHandler bra *
*--------------------------------------
.BS A2osX.HZ-* fill to $BEF0
*--------------------------------------
.DA #6 60hz
.BS 7
.DA #0 ChRoot Disabled
.BS 7 All Slots marked as "Free"
*--------------------------------------
MAN
SAVE /A2OSX.SRC/SYS/KERNEL.S.GP

View File

@ -19,7 +19,7 @@ Kernel.Init2 sei
sta CLRALTZP
>LDAXI MSG.D000BNK2
>LDAXI MSG.D2
jsr PrintFAX
sta SETALTZP
@ -36,7 +36,7 @@ Kernel.Init2 sei
sta CLRALTZP
>LDAXI MSG.D000BNK1
>LDAXI MSG.D1
jsr PrintFAX
sta SETALTZP
@ -53,7 +53,7 @@ Kernel.Init2 sei
sta CLRALTZP
>LDAXI MSG.E000
>LDAXI MSG.E0
jsr PrintFAX
sta SETALTZP
@ -74,6 +74,8 @@ Kernel.Init2 sei
sta CLRALTZP Make MAIN ZP is enabled for X.PRINT.F
cli
jsr KConfigLoad
lda A2osX.HZ
pha push HZ
>LDAXI MSG.HZ
@ -101,20 +103,12 @@ Kernel.Move ldy #0
bne .1
.9 rts
*--------------------------------------
MSG.Init2 >CSTR "A2osX[Stage2]:Init\nInstalling KERNEL...\n - Global Page...\n"
MSG.D000BNK1 >CSTR " - $D000 Bank1...\n"
MSG.D000BNK2 >CSTR " - $D000 Bank2...\n"
MSG.E000 >CSTR " - $E000...\n"
MSG.HZ >CSTR "Kernel SYS Timer Set For %d0 hz Machine.\n"
MSG.Init2.OK >CSTR "A2osX[Stage2]:Complete.\n"
*--------------------------------------
CPU.Init >LDAXI MSG.CPU
jsr PrintFAX
jsr Detect6502 A = CPU type
sta A2osX.CPUTYPE
lda MSG.CPUTYPEH,y
tax
ldx MSG.CPUTYPEH,y
lda MSG.CPUTYPEL,y
jsr PrintFAX
@ -208,8 +202,8 @@ CPU.Init.Z80 >LDAXI MSG.Z80
* Out:
* A = $60, 6502
* A = $61, 65C02
* A = $62, R65C02
* A = $63, 65C816
* A = $62, 65R02
* A = $63, 65816
*--------------------------------------
Detect6502 ldy #0 Test 6502 BCD bug
sed
@ -273,6 +267,38 @@ DetectZ80 ldx #Z80Code.Size
clc
.9 rts
*--------------------------------------
KConfigLoad >LDAXI MSG.KCREAD
jsr PrintFAX
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
>LDAXI MSG.KCREAD.OK
jsr PrintFAX
rts
.9 >LDAXI MSG.KCREAD.KO
jsr PrintFAX
rts
*--------------------------------------
Z80Code.Start .HS 31FFFF START: LD SP,0FFFFH Init Stack
.HS 3EFF LD A,0FFH Set Flag
.HS 320D00 LD (FLAG),A
@ -281,6 +307,13 @@ Z80Code.Start .HS 31FFFF START: LD SP,0FFFFH Init Stack
.HS 00 FLAG: .DB 0
Z80Code.Size .EQ *-Z80Code.Start
*--------------------------------------
MSG.Init2 >CSTR "A2osX[Stage2]:Init\nInstalling KERNEL...\n - $BE00 Global Page...\n"
MSG.D1 >CSTR " - $D000 Bank1...\n"
MSG.D2 >CSTR " - $D000 Bank2...\n"
MSG.E0 >CSTR " - $E000...\n"
MSG.HZ >CSTR "Kernel SYS Timer Set For %d0 hz Machine.\n"
MSG.Init2.OK >CSTR "A2osX[Stage2]:Complete.\n"
*--------------------------------------
MSG.CPU >CSTR "Checking CPU..."
MSG.CPU.SPEED >CSTR "Detecting CPU Speed..."
MSG.CPUTYPEL .DA #MSG.6502
@ -299,6 +332,25 @@ MSG.CPU.SPEEDOK >CSTR "%d.%02d Mhz.\n"
MSG.Z80 >CSTR "Detecting Z80 CPU..."
MSG.Z80.OK >CSTR "Detected In Slot %d.\n"
MSG.Z80.KO >CSTR "Not Detected.\n"
MSG.KCREAD >CSTR "Reading Kernel Config File..."
MSG.KCREAD.OK >CSTR "OK\n"
MSG.KCREAD.KO >CSTR "\nError While Reading Kernel Config File, Using Default.\n"
A2OSXCONF >PSTR "A2osX.KCONFIG"
*--------------------------------------
MLIOPEN00 .DA #3
.DA A2OSXCONF
.DA $1000
.BS 1
*--------------------------------------
MLIREAD00 .DA #4
.BS 1
.DA A2osX.HZ
.DA 16
.BS 2
*--------------------------------------
MLICLOSE00 .DA #1
.BS 1
*--------------------------------------
MAN
SAVE /A2OSX.SRC/SYS/KERNEL.S.INIT2
LOAD /A2OSX.SRC/SYS/KERNEL.S

View File

@ -322,9 +322,6 @@ DevMgrInit.BLK ldy #$ff
inc DEV.HEADER+S.DEV.DEVID
jsr DevMgrInit.AddDev
rts
DevMgrInit.BLK.JMP
jmp (DEV.HEADER+S.DEV.ROM.JMP)
*--------------------------------------
DevMgrInit.SP ldy #$ff
lda (ZPPtr1),y

View File

@ -299,6 +299,15 @@ KERNEL.SYSCALL.FLAGS
.DA 0
.DA 0
.DA 0
.DA 0
.DA 0
.DA 0
.DA 0
.DA 0
.DA 0
.DA 0
.DA 0
*--------------------------------------
.DA 0 $A0
.DA 0
@ -308,6 +317,15 @@ KERNEL.SYSCALL.FLAGS
.DA 0
.DA 0
.DA 0
.DA 0
.DA 0
.DA 0
.DA 0
.DA 0
.DA 0
.DA 0
.DA 0
*--------------------------------------
.DA 0 $B0
.DA 0
@ -317,6 +335,15 @@ KERNEL.SYSCALL.FLAGS
.DA 0
.DA 0
.DA 0
.DA 0
.DA 0
.DA 0
.DA 0
.DA 0
.DA 0
.DA 0
.DA 0
*--------------------------------------
MAN
SAVE /A2OSX.SRC/SYS/KERNEL.S.JMP

View File

@ -88,7 +88,7 @@ A2osX.GP.S .EQ A2osX.GP.E-A2osX.GP
A2osX.D1.S .EQ A2osX.D1.E-A2osX.D1
A2osX.D2.S .EQ A2osX.D2.E-A2osX.D2
A2osX.E0.S .EQ A2osX.E0.E-A2osX.E0
.DO A2osX.GP.S>$1E0
.DO A2osX.GP.S>$200
* ERROR:GP too big
.FIN
.DO A2osX.D1.S>$1000