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 ****** * ****** START OF MLI QUIT CODE ******
* Load Address :$1000-$12FF * 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 .PH $1000
*-------------------------------------- *--------------------------------------
@ -62,34 +57,15 @@ A2osX.QC.Start1 sei
>LDAXI A2osX.QC.Prefix >LDAXI A2osX.QC.Prefix
jsr A2osX.QC.PrintAX jsr A2osX.QC.PrintAX
>DEBUGOA >DEBUG
bra .3 bra .3
.4 >LDAXI MSG.SETPREFIXOK .4 >LDAXI MSG.SETPREFIXOK
jsr A2osX.QC.PrintAX jsr A2osX.QC.PrintAX
>LDAXI MSG.KLOADING
jsr A2osX.QC.PrintAX
jsr A2osX.QC.KLoad jsr A2osX.QC.KLoad
bcs .9 bcs *
>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
* >LDYAI GO.Reset * >LDYAI GO.Reset
* >STYA POWERUP * >STYA POWERUP
@ -101,52 +77,24 @@ A2osX.QC.Start1 sei
>DEBUGOA >DEBUGOA
jmp $2000 jmp $2000
*--------------------------------------
.9 >LDAXI MSG.KLOADING.KO A2osX.QC.KLoad >LDAXI MSG.KLOAD
jsr A2osX.QC.PrintAX 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 ldx A2osX.QC.Prefix
ldy #0 ldy #0
.2 iny .2 inx
lda (TmpPtr1),y iny
sta MLIOPEN00.PATH+1,x lda SYSKERNEL,y
inx sta A2osX.QC.Prefix,x
tya cpy SYSKERNEL
cmp (TmpPtr1)
bne .2 bne .2
stx MLIOPEN00.PATH stx A2osX.QC.Prefix
>LDAXI MLIOPEN00.PATH >LDAXI A2osX.QC.Prefix
jsr A2osX.QC.PrintAX jsr A2osX.QC.PrintAX
jsr MLI jsr MLI
@ -155,16 +103,12 @@ A2osX.QC.FOPENYA
bcs .9 bcs .9
lda MLIOPEN00+5 lda MLIOPEN00+5
sta MLIREAD00K+1 sta MLIREAD00+1
sta MLIREAD00C+1
sta MLICLOSE00+1 sta MLICLOSE00+1
.9 rts
*--------------------------------------
A2osX.QC.FREADYA
>STYA .1
jsr MLI jsr MLI
.DA #MLIREAD .DA #MLIREAD
.1 .DA $ffff .DA MLIREAD00
php php
pha pha
@ -175,7 +119,12 @@ A2osX.QC.FREADYA
pla pla
plp plp
rts bcc .9
>LDAXI MSG.KLOAD.KO
jsr A2osX.QC.PrintAX
.9 rts
*-------------------------------------- *--------------------------------------
A2osX.QC.PrintAX A2osX.QC.PrintAX
>STAX TmpPtr1 >STAX TmpPtr1
@ -198,41 +147,26 @@ MLISETPREFIX00 .DA #1
.DA A2osX.QC.Prefix .DA A2osX.QC.Prefix
*-------------------------------------- *--------------------------------------
MLIOPEN00 .DA #3 MLIOPEN00 .DA #3
.DA MLIOPEN00.PATH .DA A2osX.QC.Prefix
.DA MLIOPEN00.BUFF .DA $C00
.BS 1 .BS 1
*-------------------------------------- *--------------------------------------
MLIREAD00K .DA #4 MLIREAD00 .DA #4
.BS 1 .BS 1
.DA MLIREAD00.ADDR .DA $2000
.DA $8000 .DA $8000
.BS 2 .BS 2
*-------------------------------------- *--------------------------------------
MLIREAD00C .DA #4
.BS 1
.DA MLIREAD01.ADDR
.DA 16
.BS 2
*--------------------------------------
MLICLOSE00 .DA #1 MLICLOSE00 .DA #1
.BS 1 .BS 1
*-------------------------------------- *--------------------------------------
SYSKERNEL >PSTR "SYS/KERNEL" 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.INIT1 >PSTR "A2osX[Stage1]:Init"
MSG.SETPREFIXOK >PSTR "Set Prefix OK" MSG.SETPREFIXOK >PSTR "Set Prefix OK"
MSG.SETPREFIXKO >PSTR "Insert Vol:" MSG.SETPREFIXKO >PSTR "Insert Vol:"
MSG.KLOADING >PSTR "Loading Kernel..." MSG.KLOAD >PSTR "Loading Kernel..."
MSG.KLOADING.KO >PSTR "Error While Loading Kernel." MSG.KLOAD.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.INIT1OK >PSTR "A2osX[Stage1]:Complete." MSG.INIT1OK >PSTR "A2osX[Stage1]:Complete."
*-------------------------------------- *--------------------------------------
.BS $1300-* .BS $1300-*

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -246,9 +246,9 @@ GO.A2osX php
sei sei
sta A2osX.SaveA sta GO.EXIT.SaveA+1
stx A2osX.SaveX stx GO.EXIT.SaveX+1
sty A2osX.SaveY sty GO.EXIT.SaveY+1
pla Restore P in A for later 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 GO.EXIT sty pStack
pha push P on stack pha push P on stack
ldy A2osX.SaveY GO.EXIT.SaveY ldy #$ff
ldx A2osX.SaveX GO.EXIT.SaveX ldx #$ff
lda A2osX.SaveA GO.EXIT.SaveA lda #$ff
plp plp
GO.EXIT.JMP jmp $FFFF Self Modified 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) * Called for ProDOS IRQ Manager (LCBNK1)
* A,X,Y, $FA->$FF Already Saved * A,X,Y, $FA->$FF Already Saved
* Main RAM,ZP/LC selected * Main RAM,ZP/LC selected
@ -333,6 +329,13 @@ IrqHandler cld
.3 rts .3 rts
*-------------------------------------- *--------------------------------------
BrkHandler bra * 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 MAN
SAVE /A2OSX.SRC/SYS/KERNEL.S.GP SAVE /A2OSX.SRC/SYS/KERNEL.S.GP

View File

@ -19,7 +19,7 @@ Kernel.Init2 sei
sta CLRALTZP sta CLRALTZP
>LDAXI MSG.D000BNK2 >LDAXI MSG.D2
jsr PrintFAX jsr PrintFAX
sta SETALTZP sta SETALTZP
@ -36,7 +36,7 @@ Kernel.Init2 sei
sta CLRALTZP sta CLRALTZP
>LDAXI MSG.D000BNK1 >LDAXI MSG.D1
jsr PrintFAX jsr PrintFAX
sta SETALTZP sta SETALTZP
@ -53,7 +53,7 @@ Kernel.Init2 sei
sta CLRALTZP sta CLRALTZP
>LDAXI MSG.E000 >LDAXI MSG.E0
jsr PrintFAX jsr PrintFAX
sta SETALTZP sta SETALTZP
@ -74,6 +74,8 @@ Kernel.Init2 sei
sta CLRALTZP Make MAIN ZP is enabled for X.PRINT.F sta CLRALTZP Make MAIN ZP is enabled for X.PRINT.F
cli cli
jsr KConfigLoad
lda A2osX.HZ lda A2osX.HZ
pha push HZ pha push HZ
>LDAXI MSG.HZ >LDAXI MSG.HZ
@ -101,20 +103,12 @@ Kernel.Move ldy #0
bne .1 bne .1
.9 rts .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 CPU.Init >LDAXI MSG.CPU
jsr PrintFAX jsr PrintFAX
jsr Detect6502 A = CPU type jsr Detect6502 A = CPU type
sta A2osX.CPUTYPE sta A2osX.CPUTYPE
lda MSG.CPUTYPEH,y ldx MSG.CPUTYPEH,y
tax
lda MSG.CPUTYPEL,y lda MSG.CPUTYPEL,y
jsr PrintFAX jsr PrintFAX
@ -208,8 +202,8 @@ CPU.Init.Z80 >LDAXI MSG.Z80
* Out: * Out:
* A = $60, 6502 * A = $60, 6502
* A = $61, 65C02 * A = $61, 65C02
* A = $62, R65C02 * A = $62, 65R02
* A = $63, 65C816 * A = $63, 65816
*-------------------------------------- *--------------------------------------
Detect6502 ldy #0 Test 6502 BCD bug Detect6502 ldy #0 Test 6502 BCD bug
sed sed
@ -273,6 +267,38 @@ DetectZ80 ldx #Z80Code.Size
clc clc
.9 rts .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 Z80Code.Start .HS 31FFFF START: LD SP,0FFFFH Init Stack
.HS 3EFF LD A,0FFH Set Flag .HS 3EFF LD A,0FFH Set Flag
.HS 320D00 LD (FLAG),A .HS 320D00 LD (FLAG),A
@ -281,6 +307,13 @@ Z80Code.Start .HS 31FFFF START: LD SP,0FFFFH Init Stack
.HS 00 FLAG: .DB 0 .HS 00 FLAG: .DB 0
Z80Code.Size .EQ *-Z80Code.Start 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 >CSTR "Checking CPU..."
MSG.CPU.SPEED >CSTR "Detecting CPU Speed..." MSG.CPU.SPEED >CSTR "Detecting CPU Speed..."
MSG.CPUTYPEL .DA #MSG.6502 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 >CSTR "Detecting Z80 CPU..."
MSG.Z80.OK >CSTR "Detected In Slot %d.\n" MSG.Z80.OK >CSTR "Detected In Slot %d.\n"
MSG.Z80.KO >CSTR "Not Detected.\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 MAN
SAVE /A2OSX.SRC/SYS/KERNEL.S.INIT2 SAVE /A2OSX.SRC/SYS/KERNEL.S.INIT2
LOAD /A2OSX.SRC/SYS/KERNEL.S LOAD /A2OSX.SRC/SYS/KERNEL.S

View File

@ -322,9 +322,6 @@ DevMgrInit.BLK ldy #$ff
inc DEV.HEADER+S.DEV.DEVID inc DEV.HEADER+S.DEV.DEVID
jsr DevMgrInit.AddDev jsr DevMgrInit.AddDev
rts rts
DevMgrInit.BLK.JMP
jmp (DEV.HEADER+S.DEV.ROM.JMP)
*-------------------------------------- *--------------------------------------
DevMgrInit.SP ldy #$ff DevMgrInit.SP ldy #$ff
lda (ZPPtr1),y 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
.DA 0
.DA 0
*-------------------------------------- *--------------------------------------
.DA 0 $A0 .DA 0 $A0
.DA 0 .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
.DA 0
.DA 0
*-------------------------------------- *--------------------------------------
.DA 0 $B0 .DA 0 $B0
.DA 0 .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
.DA 0
.DA 0
.DA 0
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE /A2OSX.SRC/SYS/KERNEL.S.JMP 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.D1.S .EQ A2osX.D1.E-A2osX.D1
A2osX.D2.S .EQ A2osX.D2.E-A2osX.D2 A2osX.D2.S .EQ A2osX.D2.E-A2osX.D2
A2osX.E0.S .EQ A2osX.E0.E-A2osX.E0 A2osX.E0.S .EQ A2osX.E0.E-A2osX.E0
.DO A2osX.GP.S>$1E0 .DO A2osX.GP.S>$200
* ERROR:GP too big * ERROR:GP too big
.FIN .FIN
.DO A2osX.D1.S>$1000 .DO A2osX.D1.S>$1000