mirror of
https://github.com/A2osX/A2osX.git
synced 2025-04-28 11:37:41 +00:00
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:
parent
993e1828fe
commit
4841e57d46
120
A2osX.S.QC.txt
120
A2osX.S.QC.txt
@ -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.
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user