Kernel 0.9.2

This commit is contained in:
Rémy GIBERT 2018-07-12 17:20:39 +02:00
parent be83829ab4
commit b0bfcee198
14 changed files with 446 additions and 460 deletions

Binary file not shown.

Binary file not shown.

View File

@ -44,7 +44,7 @@ A2osX.QC.Start1 sei
lda #$8C Reset 80 col screen ($0C=FF=HOME) lda #$8C Reset 80 col screen ($0C=FF=HOME)
jsr $C300 jsr $C300
>LDAXI MSG.INIT1 >LDYAI MSG.INIT1
jsr A2osX.QC.PrintAX jsr A2osX.QC.PrintAX
.3 jsr MLI .3 jsr MLI
@ -52,16 +52,16 @@ A2osX.QC.Start1 sei
.DA MLISETPREFIX00 .DA MLISETPREFIX00
bcc .4 bcc .4
>LDAXI MSG.SETPREFIXKO >LDYAI MSG.SETPREFIXKO
jsr A2osX.QC.PrintAX jsr A2osX.QC.PrintAX
>LDAXI A2osX.QC.Prefix >LDYAI A2osX.QC.Prefix
jsr A2osX.QC.PrintAX jsr A2osX.QC.PrintAX
>DEBUG >DEBUG
bra .3 bra .3
.4 >LDAXI MSG.SETPREFIXOK .4 >LDYAI MSG.SETPREFIXOK
jsr A2osX.QC.PrintAX jsr A2osX.QC.PrintAX
jsr A2osX.QC.KLoad jsr A2osX.QC.KLoad
@ -72,13 +72,13 @@ A2osX.QC.Start1 sei
* bit RROMBNK1 * bit RROMBNK1
* jsr SETPWRC * jsr SETPWRC
.8 >LDAXI MSG.INIT1OK .8 >LDYAI MSG.INIT1OK
jsr A2osX.QC.PrintAX jsr A2osX.QC.PrintAX
>DEBUGOA >DEBUGOA
jmp $2000 jmp $2000
*-------------------------------------- *--------------------------------------
A2osX.QC.KLoad >LDAXI MSG.KLOAD A2osX.QC.KLoad >LDYAI MSG.KLOAD
jsr A2osX.QC.PrintAX jsr A2osX.QC.PrintAX
ldx A2osX.QC.Prefix ldx A2osX.QC.Prefix
@ -94,7 +94,7 @@ A2osX.QC.KLoad >LDAXI MSG.KLOAD
stx A2osX.QC.Prefix stx A2osX.QC.Prefix
>LDAXI A2osX.QC.Prefix >LDYAI A2osX.QC.Prefix
jsr A2osX.QC.PrintAX jsr A2osX.QC.PrintAX
jsr MLI jsr MLI
@ -121,7 +121,7 @@ A2osX.QC.KLoad >LDAXI MSG.KLOAD
plp plp
bcc .9 bcc .9
>LDAXI MSG.KLOAD.KO >LDYAI MSG.KLOAD.KO
jsr A2osX.QC.PrintAX jsr A2osX.QC.PrintAX
.9 rts .9 rts

View File

@ -55,35 +55,35 @@ A2osX.Init1 ldx #$FF init 6502 stack to highest
bit RROMBNK1 bit RROMBNK1
jsr HOME jsr HOME
>LDAXI MSG.INIT0 >LDYAI MSG.INIT0
jsr PrintFAX jsr PrintFYA
>LDAXI MSG.SYSMEM >LDYAI MSG.SYSMEM
jsr PrintFAX jsr PrintFYA
lda MACHID lda MACHID
and #MACHID.M and #MACHID.M
cmp #MACHID.M.128 cmp #MACHID.M.128
beq .1 beq .1
>LDAXI MSG.SYSMEM.KO >LDYAI MSG.SYSMEM.KO
jsr PrintFAX jsr PrintFYA
bra * bra *
.1 lda #$8C Reset 80 col screen ($0C:HOME) .1 lda #$8C Reset 80 col screen ($0C:HOME)
jsr $C300 jsr $C300
>LDAXI MSG.INIT0 >LDYAI MSG.INIT0
jsr PrintFAX jsr PrintFYA
>LDAXI MSG.SYSMEM >LDYAI MSG.SYSMEM
jsr PrintFAX jsr PrintFYA
>LDAXI MSG.SYSMEM.OK >LDYAI MSG.SYSMEM.OK
jsr PrintFAX jsr PrintFYA
>LDAXI MSG.CPU >LDYAI MSG.CPU
jsr PrintFAX jsr PrintFYA
sed Test 6502 BCD bug sed Test 6502 BCD bug
lda #$99 lda #$99
@ -92,12 +92,12 @@ A2osX.Init1 ldx #$FF init 6502 stack to highest
cld cld
bpl .2 if minus, BUG!, we have 6502 bpl .2 if minus, BUG!, we have 6502
>LDAXI MSG.CPU.KO >LDYAI MSG.CPU.KO
jsr PrintFAX jsr PrintFYA
bra * bra *
.2 >LDAXI MSG.CPU.OK .2 >LDYAI MSG.CPU.OK
jsr PrintFAX jsr PrintFYA
*-------------------------------------- *--------------------------------------
A2osX.CloseAll stz LEVEL Back To FILE LEVEL 0 A2osX.CloseAll stz LEVEL Back To FILE LEVEL 0
@ -106,8 +106,8 @@ A2osX.CloseAll stz LEVEL Back To FILE LEVEL 0
.DA MLICLOSE01 .DA MLICLOSE01
bcs * bcs *
*-------------------------------------- *--------------------------------------
A2osX.Prefix >LDAXI MSG.BOOTPREFIX A2osX.Prefix >LDYAI MSG.BOOTPREFIX
jsr PrintFAX jsr PrintFYA
jsr MLI jsr MLI
.DA #MLIGETPREFIX .DA #MLIGETPREFIX
.DA MLIGETPREFIX01 .DA MLIGETPREFIX01
@ -124,24 +124,24 @@ A2osX.Prefix >LDAXI MSG.BOOTPREFIX
bne .1 bne .1
jsr CROUT jsr CROUT
*-------------------------------------- *--------------------------------------
A2osX.RamDrv >LDAXI MSG.RAMDRV A2osX.RamDrv >LDYAI MSG.RAMDRV
jsr PrintFAX jsr PrintFYA
jsr DisableRamDRV jsr DisableRamDRV
bcc .2 bcc .2
tax tax
bne .1 bne .1
>LDAXI MSG.RAMDRV.KO0 >LDYAI MSG.RAMDRV.KO0
jsr PrintFAX jsr PrintFYA
bra A2osX.SetupQC bra A2osX.SetupQC
.1 >LDAXI MSG.RAMDRV.KO1 .1 >LDYAI MSG.RAMDRV.KO1
jsr PrintFAX jsr PrintFYA
bra A2osX.SetupQC bra A2osX.SetupQC
.2 >LDAXI MSG.RAMDRV.OK .2 >LDYAI MSG.RAMDRV.OK
jsr PrintFAX jsr PrintFYA
*-------------------------------------- *--------------------------------------
A2osX.SetupQC lda RRAMWRAMBNK2 A2osX.SetupQC lda RRAMWRAMBNK2
lda RRAMWRAMBNK2 lda RRAMWRAMBNK2
@ -159,12 +159,12 @@ A2osX.SetupQC lda RRAMWRAMBNK2
lda RROMBNK1 lda RROMBNK1
*-------------------------------------- *--------------------------------------
A2osX.EnumKM >LDAXI MSG.KMENUM A2osX.EnumKM >LDYAI MSG.KMENUM
jsr PrintFAX jsr PrintFYA
jsr EnumKM jsr EnumKM
*-------------------------------------- *--------------------------------------
A2osX.MLIQuit >LDAXI MSG.INIT0OK A2osX.MLIQuit >LDYAI MSG.INIT0OK
jsr PrintFAX jsr PrintFYA
>DEBUGOA >DEBUGOA
jsr MLI jsr MLI
@ -336,8 +336,8 @@ LoadKM ldx Boot.Prefix
lda /KM.Filename lda /KM.Filename
pha pha
>LDAXI MSG.KMLOAD >LDYAI MSG.KMLOAD
jsr PrintFAX jsr PrintFYA
jsr MLI jsr MLI
.DA #MLIOPEN .DA #MLIOPEN

View File

@ -351,6 +351,7 @@ AUTO 4,1
dec dec
bne :1 bne :1
pla pla
rts
.FIN .FIN
.EM .EM
*-------------------------------------- *--------------------------------------
@ -360,11 +361,6 @@ AUTO 4,1
ldy #]1 ldy #]1
lda /]1 lda /]1
.EM .EM
*--------------------------------------
.MA LDAXI
lda #]1
ldx /]1
.EM
*-------------------------------------- *--------------------------------------
.MA LDYA .MA LDYA
.DO ]#=2 .DO ]#=2

View File

@ -198,7 +198,8 @@ GetDynPort inc DYNPORT.LAST
bcs .1 bcs .1
>LDAXI K.DYNPORT.START lda #K.DYNPORT.START
ldx /K.DYNPORT.START
sta DYNPORT.LAST sta DYNPORT.LAST
stx DYNPORT.LAST+1 stx DYNPORT.LAST+1
rts CC rts CC

View File

@ -10,9 +10,219 @@ Kernel.Init2 sei
stx A2osX.SaveSM stx A2osX.SaveSM
stx A2osX.SaveSX stx A2osX.SaveSX
sta CLRALTZP Make sure MAIN ZP is enabled for X.PRINT.F ldx #Kernel.ZP.S-1
ldx #0 .1 lda Kernel.ZP,x
sta CHARGET,x
dex
bpl .1
sta CLRALTZP
>LDYAI MSG.Init2
jsr PrintFYA
>LDYAI A2osX.MAIN
>STYA ZPPtr1
>LDYAI CORE.Run
>STYA ZPPtr2
>LDYAI A2osX.MAIN.S^$FFFF
jsr Kernel.Move
>LDYAI A2osX.AUX
>STYA A1L Src Start Address (MAIN)
>LDYAI A2osX.GP
>STYA A2L Src End Address (MAIN)
>LDYAI X.GUIOSD
>STYA A4L Dst Address (AUX)
sec Main To Aux
jsr AuxMove
>LDYAI A2osX.GP
>STYA ZPPtr1
>LDYAI A2osX.SYSCALL
>STYA ZPPtr2
>LDYAI A2osX.GP.S^$FFFF
jsr Kernel.Move
sta SETALTZP
bit RRAMWRAMBNK2
bit RRAMWRAMBNK2
>LDYAI A2osX.D2
>STYA ZPPtr1
>LDYAI $D000
>STYA ZPPtr2
>LDYAI A2osX.D2.S^$FFFF
jsr Kernel.Move
bit RRAMWRAMBNK1
bit RRAMWRAMBNK1
>LDYAI A2osX.D1
>STYA ZPPtr1
>LDYAI $D000
>STYA ZPPtr2
>LDYAI A2osX.D1.S^$FFFF
jsr Kernel.Move
>LDYAI A2osX.E0
>STYA ZPPtr1
>LDYAI $E000
>STYA ZPPtr2
>LDYAI A2osX.E0.S^$FFFF
jsr Kernel.Move
bit RROMBNK1
sta CLRALTZP
cli
jsr KConfigLoad
lda A2osX.HZ
pha
>LDYAI MSG.HZ
jsr PrintFYA
>LDYAI MSG.Init2.OK
jsr PrintFYA
*--------------------------------------
>DEBUGOA
*--------------------------------------
Kernel.Init3 sta SETALTZP
bit RRAMWRAMBNK1
bit RRAMWRAMBNK1
lda #$ff Make sure we are in Kernel Mode during setup
sta IRQ.InKernel
jsr SysScrInit
jsr MemMgrInit
>LDYAI FD.NULL
jsr DevMgrInit.AddCDev
>LDYAI FD.SYS
jsr DevMgrInit.AddCDev
jsr PS0.Init
>DEBUG
>LDYAI MSG.Init3
>SYSCALL printf
>DEBUG
jsr CPU.Init
jsr DevMgrInit
jsr IrqMgrInit
bcs *
jsr EvtMgrInit
jsr FltMgrInit
jsr TskMgrInit
bcs *
ldy #S.PS.hPREFIX
lda (pPs),y
>SYSCALL GetMemPtr
>PUSHYA
>LDYAI MSG.Prefix
>SYSCALL printf
>PUSHWI STARTUP.CMDLINE
>LDYAI MSG.Startup
>SYSCALL printf
>LDYAI STARTUP.CMDLINE
>SYSCALL ExpandStr
phx Save Expanded CMDLINE for discard
>SYSCALL CreatePS
bcs .9
pla
>SYSCALL FreeMem ...discard...
>LDYAI MSG.Init3.OK
>SYSCALL printf
>DEBUGOA
jmp CORE.Run
.9 >PUSHA
>LDYAI MSG.StartupErr
>SYSCALL printf
bra * No need to discard Expanded CMDLINE
*--------------------------------------
* INIT2 Subs
*--------------------------------------
Kernel.Move >STYA ZPPtr3
ldy #0
.1 inc ZPPtr3
bne .2
inc ZPPtr3+1
beq .9
.2 lda (ZPPtr1),y
sta (ZPPtr2),y
iny
bne .1
inc ZPPtr1+1
inc ZPPtr2+1
bne .1
.9 rts
*--------------------------------------
KConfigLoad >LDYAI MSG.KCREAD
jsr PrintFYA
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
>LDYAI MSG.KCREAD.OK
jsr PrintFYA
rts
.9 >LDYAI MSG.KCREAD.KO
jsr PrintFYA
rts
*--------------------------------------
* INIT3 Subs
*--------------------------------------
SysScrInit ldx #0
ldy #0 ldy #0
@ -58,257 +268,51 @@ Kernel.Init2 sei
inx inx
cpx #40 cpx #40
bne .4 bne .4
rts
>LDAXI MSG.Init2
jsr PrintFAX
sta CLRALTZP
ldx #Kernel.ZP.S-1
.1 lda Kernel.ZP,x
sta CHARGET,x
dex
bpl .1
sta CLRALTZP
>LDAXI MSG.MAIN
jsr PrintFAX
>LDYAI A2osX.MAIN
>STYA ZPPtr1
>LDYAI CORE.Run
>STYA ZPPtr2
>LDYAI A2osX.MAIN.S^$FFFF
jsr Kernel.Move
>LDAXI MSG.AUX
jsr PrintFAX
>LDYAI A2osX.AUX
>STYA A1L Src Start Address (MAIN)
>LDYAI A2osX.GP
>STYA A2L Src End Address (MAIN)
>LDYAI X.GUIOSD
>STYA A4L Dst Address (AUX)
sec Main To Aux
jsr AuxMove
>LDAXI MSG.GP
jsr PrintFAX
>LDYAI A2osX.GP
>STYA ZPPtr1
>LDYAI A2osX.SYSCALL
>STYA ZPPtr2
>LDYAI A2osX.GP.S^$FFFF
jsr Kernel.Move
sta CLRALTZP
>LDAXI MSG.D2
jsr PrintFAX
sta SETALTZP
bit RRAMWRAMBNK2
bit RRAMWRAMBNK2
>LDYAI A2osX.D2
>STYA ZPPtr1
>LDYAI $D000
>STYA ZPPtr2
>LDYAI A2osX.D2.S^$FFFF
jsr Kernel.Move
sta CLRALTZP
>LDAXI MSG.D1
jsr PrintFAX
sta SETALTZP
bit RRAMWRAMBNK1
bit RRAMWRAMBNK1
>LDYAI A2osX.D1
>STYA ZPPtr1
>LDYAI $D000
>STYA ZPPtr2
>LDYAI A2osX.D1.S^$FFFF
jsr Kernel.Move
sta CLRALTZP
>LDAXI MSG.E0
jsr PrintFAX
sta SETALTZP
bit RRAMWRAMBNK1
bit RRAMWRAMBNK1
>LDYAI A2osX.E0
>STYA ZPPtr1
>LDYAI $E000
>STYA ZPPtr2
>LDYAI A2osX.E0.S^$FFFF
jsr Kernel.Move
sta CLRALTZP Make MAIN ZP is enabled for X.PRINT.F
cli
jsr KConfigLoad
lda A2osX.HZ
pha push HZ
>LDAXI MSG.HZ
jsr PrintFAX
jsr CPU.Init
>LDAXI MSG.Init2.OK
jsr PrintFAX
*-------------------------------------- *--------------------------------------
>DEBUGOA PS0.Init >LDYAI CORE.S.PS0 Select Process 0 (Kernel)
*-------------------------------------- >STYA pPs
Kernel.Init3 sta SETALTZP
bit RRAMWRAMBNK1
bit RRAMWRAMBNK1
lda #$ff Make sure we are in Kernel Mode during setup >LDYAI K.STACKTOP
sta IRQ.InKernel >STYA pStack
>LDAXI MSG.Init3
jsr PrintFAX
>DEBUG
jsr MemMgrInit
jsr DevMgrInit
bcs *
jsr IrqMgrInit
bcs *
jsr EvtMgrInit
bcs *
jsr FltMgrInit
bcs *
jsr TskMgrInit
bcs *
jsr PS0Init
ldy #S.PS.hPREFIX
lda (pPs),y
>SYSCALL GetMemPtr
>PUSHYA
>LDYAI MSG.Prefix
>SYSCALL PrintF
>PUSHWI STARTUP.CMDLINE
>LDYAI MSG.Startup
>SYSCALL PrintF
>LDYAI STARTUP.CMDLINE
>SYSCALL ExpandStr
phx Save Expanded CMDLINE for discard
>SYSCALL CreatePS
>PUSHBI 0
>LDYAI DEV.SYS
>SYSCALL open
bcs .9 bcs .9
pla
>SYSCALL FreeMem ...discard...
>LDYAI MSG.Init3.OK ldy #S.PS.hStdIn
>SYSCALL PrintF sta (pPs),y
sta CORE.S.PS0+S.PS.hStdIn
>DEBUGOA iny #S.PS.hStdOut
sta (pPs),y
jmp CORE.Run sta CORE.S.PS0+S.PS.hStdOut
iny #S.PS.hStdErr
.9 >PUSHA sta (pPs),y
>LDYAI MSG.StartupErr sta CORE.S.PS0+S.PS.hStdErr
>SYSCALL PrintF
bra * No need to discard Expanded CMDLINE
*--------------------------------------
Kernel.Move >STYA ZPPtr3
ldy #0
.1 inc ZPPtr3
bne .2
inc ZPPtr3+1
beq .9
.2 lda (ZPPtr1),y
sta (ZPPtr2),y
iny
bne .1
inc ZPPtr1+1
inc ZPPtr2+1
bne .1
clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
KConfigLoad >LDAXI MSG.KCREAD CPU.Init >LDYAI MSG.CPU
jsr PrintFAX >SYSCALL printf
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
*--------------------------------------
CPU.Init >LDAXI MSG.CPU
jsr PrintFAX
jsr Detect6502 A = CPU type jsr Detect6502 A = CPU type
sta A2osX.CPUTYPE sta A2osX.CPUTYPE
ldx MSG.CPUTYPEH,y
lda MSG.CPUTYPEL,y ldx MSG.CPUTYPEL,y
jsr PrintFAX lda MSG.CPUTYPEH,y
tay
>SYSCALL printf
lda MACHID lda MACHID
and #MACHID.T and #MACHID.T
cmp #MACHID.T.IIc cmp #MACHID.T.IIc
beq CPU.Init.Z80 beq CPU.Init.Z80
>LDAXI MSG.CPU.SPEED >LDYAI MSG.CPU.SPEED
jsr PrintFAX >SYSCALL printf
stz A2osX.RANDOM16 stz A2osX.RANDOM16
stz A2osX.RANDOM16+1 stz A2osX.RANDOM16+1
@ -367,11 +371,12 @@ CPU.Init >LDAXI MSG.CPU
pha push CPU speed LO pha push CPU speed LO
lda A2osX.CPUSPEED lda A2osX.CPUSPEED
pha push CPU speed HI pha push CPU speed HI
>LDAXI MSG.CPU.SPEEDOK >LDYAI MSG.CPU.SPEEDOK
jsr PrintFAX >SYSCALL printf
CPU.Init.Z80 >LDYAI MSG.Z80
>SYSCALL printf
CPU.Init.Z80 >LDAXI MSG.Z80
jsr PrintFAX
jsr DetectZ80 jsr DetectZ80
bcs .9 bcs .9
sta A2osX.Z80SLOT sta A2osX.Z80SLOT
@ -381,12 +386,12 @@ CPU.Init.Z80 >LDAXI MSG.Z80
lda #A2osX.S.Z80 lda #A2osX.S.Z80
sta A2osX.S,x sta A2osX.S,x
>LDAXI MSG.Z80.OK >LDYAI MSG.Z80.OK
jsr PrintFAX >SYSCALL printf
rts rts
.9 >LDAXI MSG.Z80.KO .9 >LDYAI MSG.Z80.KO
jsr PrintFAX >SYSCALL printf
rts rts
*-------------------------------------- *--------------------------------------
* Out: * Out:
@ -481,7 +486,7 @@ MemMgrInit >LDYAI Mem.MHiMem
* if irq not handled, jmp (S.IrqMgrOldFFFE) * if irq not handled, jmp (S.IrqMgrOldFFFE)
*-------------------------------------- *--------------------------------------
IrqMgrInit >LDYAI MSG.IRQ IrqMgrInit >LDYAI MSG.IRQ
>SYSCALL PrintF >SYSCALL printf
php php
sei sei
@ -512,7 +517,7 @@ IrqMgrInit >LDYAI MSG.IRQ
>STYA GP.IrqH.JSR+1 >STYA GP.IrqH.JSR+1
>LDYAI MSG.IRQ.CLOCK >LDYAI MSG.IRQ.CLOCK
>SYSCALL PrintF >SYSCALL printf
clc clc
rts rts
@ -528,7 +533,7 @@ IrqMgrInit >LDYAI MSG.IRQ
>STYA GP.IrqH.JSR+1 >STYA GP.IrqH.JSR+1
>LDYAI MSG.IRQ.VBL >LDYAI MSG.IRQ.VBL
>SYSCALL PrintF >SYSCALL printf
clc clc
rts rts
@ -539,7 +544,7 @@ IrqMgrInit >LDYAI MSG.IRQ
sta SYS.BASL0+38 sta SYS.BASL0+38
>LDYAI MSG.IRQ.POLL >LDYAI MSG.IRQ.POLL
>SYSCALL PrintF >SYSCALL printf
clc clc
rts rts
@ -701,13 +706,7 @@ IrqMgrInit.HZ2Tick
rts rts
*-------------------------------------- *--------------------------------------
DevMgrInit >LDYAI MSG.DEV DevMgrInit >LDYAI MSG.DEV
>SYSCALL PrintF >SYSCALL printf
>LDYAI FD.NULL
jsr DevMgrInit.AddCDev
>LDYAI FD.SYS
jsr DevMgrInit.AddCDev
lda DEVCNT lda DEVCNT
sta DevMgrInit.DEVCNT sta DevMgrInit.DEVCNT
@ -884,19 +883,13 @@ DevMgrInit.AddCDev
dex dex
bpl .1 bpl .1
jsr $ffff
inc DevMgr.DevCnt inc DevMgr.DevCnt
clc clc
rts rts
.9 lda #K.E.OOH
sec
rts
*-------------------------------------- *--------------------------------------
EvtMgrInit >LDYAI MSG.EVT EvtMgrInit >LDYAI MSG.EVT
>SYSCALL printf >SYSCALL printf
lda #$A5 lda #$A5
sta A2osX.TIMER16 sta A2osX.TIMER16
lda #$9B lda #$9B
@ -909,6 +902,7 @@ EvtMgrInit >LDYAI MSG.EVT
*-------------------------------------- *--------------------------------------
FltMgrInit >LDYAI MSG.FLT FltMgrInit >LDYAI MSG.FLT
>SYSCALL printf >SYSCALL printf
stz Flt.Table stz Flt.Table
clc clc
rts rts
@ -916,8 +910,6 @@ FltMgrInit >LDYAI MSG.FLT
TskMgrInit >LDYAI MSG.TSK TskMgrInit >LDYAI MSG.TSK
>SYSCALL printf >SYSCALL printf
jsr CORE.PSSelect0
>LDYAI K.ENV.SIZE get a buffer for ENV >LDYAI K.ENV.SIZE get a buffer for ENV
>SYSCALL GetMem0 make sure blank!! >SYSCALL GetMem0 make sure blank!!
bcs .9 bcs .9
@ -967,29 +959,6 @@ TskMgrInit >LDYAI MSG.TSK
>SYSCALL PutEnv >SYSCALL PutEnv
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
PS0Init >LDYAI CORE.S.PS0 Select Process 0 (Kernel)
>STYA pPs
>LDYAI K.STACKTOP
>STYA pStack
>PUSHBI 0
>LDYAI DEV.SYS
>SYSCALL open
ldy #S.PS.hStdIn
sta (pPs),y
sta CORE.S.PS0+S.PS.hStdIn
iny #S.PS.hStdOut
sta (pPs),y
sta CORE.S.PS0+S.PS.hStdOut
iny #S.PS.hStdErr
sta (pPs),y
sta CORE.S.PS0+S.PS.hStdErr
clc
.9 rts
*--------------------------------------
* Modified CHARGET/CHARGOT for ROM CALL * Modified CHARGET/CHARGOT for ROM CALL
* CHRGET .EQ $B1 - C8 * CHRGET .EQ $B1 - C8
*-------------------------------------- *--------------------------------------
@ -1026,14 +995,7 @@ TClock.SIG .HS 0878282c58ff700538b00118b8087848
.HS 8a489848adffcf201ac86868ba8df807 .HS 8a489848adffcf201ac86868ba8df807
*-------------------------------------- *--------------------------------------
SYSSCREEN.TOP .AZ "A2osX System Screen" SYSSCREEN.TOP .AZ "A2osX System Screen"
MSG.Init2 .AZ "A2osX[Stage2]:Init\n" MSG.Init2 .AZ "A2osX[Stage2]:Init\nRelocating Kernel...\n"
MSG.ZP .AZ "Installing KERNEL...\n - $0000 ZP...\n"
MSG.MAIN .AZ " - $1100 Main...\n"
MSG.AUX .AZ " - $0C00 Aux...\n"
MSG.GP .AZ " - $BD00 Global Page...\n"
MSG.D1 .AZ " - $D000 Bank1...\n"
MSG.D2 .AZ " - $D000 Bank2...\n"
MSG.E0 .AZ " - $E000...\n"
MSG.HZ .AZ "Kernel SYS Timer Set For %d0 hz Machine.\n" MSG.HZ .AZ "Kernel SYS Timer Set For %d0 hz Machine.\n"
MSG.Init2.OK .AZ "A2osX[Stage2]:Complete.\n" MSG.Init2.OK .AZ "A2osX[Stage2]:Complete.\n"
*-------------------------------------- *--------------------------------------
@ -1099,8 +1061,8 @@ FD.NULL .DA #S.FD.T.CDEV
.DA #0 HANDLER .DA #0 HANDLER
.DA #0 BUSID .DA #0 BUSID
.DA #DEVID.NULL .DA #DEVID.NULL
.DA 0 BUSPTR
.DA DRV.NULL .DA DRV.NULL
.DA 0 ROMPTR
.AZ "NULL" NAME .AZ "NULL" NAME
.HS 000000 .HS 000000
*-------------------------------------- *--------------------------------------
@ -1108,8 +1070,8 @@ FD.SYS .DA #S.FD.T.CDEV
.DA #0 HANDLER .DA #0 HANDLER
.DA #0 BUSID .DA #0 BUSID
.DA #DEVID.SYS .DA #DEVID.SYS
.DA 0 BUSPTR
.DA DRV.SYS .DA DRV.SYS
.DA 0 ROMPTR
.AZ "SYS" NAME .AZ "SYS" NAME
.HS 00000000 .HS 00000000
*-------------------------------------- *--------------------------------------
@ -1117,8 +1079,8 @@ FD.BDEV .DA #S.FD.T.BDEV
.DA #0 HANDLER .DA #0 HANDLER
.DA #0 BUSID .DA #0 BUSID
.DA #0 DEVID .DA #0 DEVID
.BS 2 BUSPTR
.BS 2 DRVPTR .BS 2 DRVPTR
.BS 2 ROMPTR
.AZ "S1D1" NAME .AZ "S1D1" NAME
.HS 000000 .HS 000000
*-------------------------------------- *--------------------------------------

View File

@ -20,7 +20,7 @@ K.Open.I jsr IO.SetMLIPathYA local pathname...
ldx #5 /DEV/ ldx #5 /DEV/
cpx K.MLI.PATH cpx K.MLI.PATH
bcc K.Open.REG bcs K.Open.REG
.1 lda K.MLI.PATH,x .1 lda K.MLI.PATH,x
cmp IO.DEVDIR,x cmp IO.DEVDIR,x
@ -28,22 +28,39 @@ K.Open.I jsr IO.SetMLIPathYA local pathname...
dex dex
bne .1 bne .1
K.Open.DEV ldy #K.MLI.PATH+5 skip /DEV/ K.Open.DEV ldy #K.MLI.PATH+6 skip L/DEV/
lda /K.MLI.PATH+5 lda /K.MLI.PATH+6
jsr K.GetDevByName jsr K.GetDevByName
bcs .9 bcs .9
>STYA pFD >STYA pFD
stx .8+1 DEVID
ldy #S.FD.DEV.DRVPTR
lda (pFD),y
sta .1+1
iny
lda (pFD),y
sta .1+2
.9 >RET 1 >PULLA get flags
ldx #IOCTL.OPEN
.1 jsr $ffff SELF MODIFIED
bcs .99
.8 lda #$ff SELF MODIFIED
.99 rts
.9 >RET 1 discard flags
K.Open.REG >LDYAI K.MLI.PATH K.Open.REG >LDYAI K.MLI.PATH
>STYA K.MLI.PARAMS+1 >STYA K.MLI.PARAMS+1
lda (pStack)
* sta K.S.IOCTL
sta K.S.IOCTL >RET 1
*-------------------------------------- *--------------------------------------
* int close(int fd); * int close(int fd);
*-------------------------------------- *--------------------------------------
@ -191,9 +208,18 @@ K.IOCTL.9 rts
* ## ASM * ## ASM
* **In:** * **In:**
*\-------------------------------------- *\--------------------------------------
IO.SELECT jsr K.GetMemPtr IO.SELECT cmp DevMgr.DevCnt
bcs .9
tax
ldy FD.Table.PTRLO,x
lda FD.Table.PTRHI,x
>STYA pFD >STYA pFD
rts rts
.9 lda #MLI.E.NODEV
rts
*-------------------------------------- *--------------------------------------
IO.PullMLIPath >PULLYA IO.PullMLIPath >PULLYA
IO.SetMLIPathYA >STYA .1+1 IO.SetMLIPathYA >STYA .1+1

View File

@ -17,6 +17,7 @@ AUTO 4,1
.INB /A2OSX.SRC/SYS/KERNEL.S.INIT .INB /A2OSX.SRC/SYS/KERNEL.S.INIT
.INB /A2OSX.SRC/X.PRINTF.S .INB /A2OSX.SRC/X.PRINTF.S
A2osX.MAIN .PH $1100 A2osX.MAIN .PH $1100
.INB /A2OSX.SRC/SYS/KERNEL.S.CORE .INB /A2OSX.SRC/SYS/KERNEL.S.CORE
.INB /A2OSX.SRC/SYS/KERNEL.S.DRV .INB /A2OSX.SRC/SYS/KERNEL.S.DRV

View File

@ -15,8 +15,8 @@ AUTO 6
*-------------------------------------- *--------------------------------------
TmpPtr1 .EQ $0 TmpPtr1 .EQ $0
*-------------------------------------- *--------------------------------------
AT.INIT >LDAXI MSG.INIT AT.INIT >LDYAI MSG.INIT
jsr PrintFAX jsr PrintFYA
lda #$F9 lda #$F9
sta TmpPtr1 sta TmpPtr1
@ -43,8 +43,8 @@ AT.INIT >LDAXI MSG.INIT
beq .4 beq .4
pha pha
>LDAXI MSG.FAILED >LDYAI MSG.FAILED
jsr PrintFAX jsr PrintFYA
rts rts
.3 dec TmpPtr1+1 .3 dec TmpPtr1+1
@ -52,8 +52,8 @@ AT.INIT >LDAXI MSG.INIT
cmp #$C0 cmp #$C0
bne .1 bne .1
>LDAXI MSG.NOHW >LDYAI MSG.NOHW
jsr PrintFAX jsr PrintFYA
rts rts
.4 stx WC.Flag .4 stx WC.Flag
@ -63,8 +63,8 @@ AT.INIT >LDAXI MSG.INIT
and #$0f and #$0f
pha Push slot # pha Push slot #
phy Push Type # phy Push Type #
>LDAXI MSG.HWOK >LDYAI MSG.HWOK
jsr PrintFAX jsr PrintFYA
>LDYA MLI+1 >LDYA MLI+1
>STYA GO.OLDMLI+1 >STYA GO.OLDMLI+1
@ -80,16 +80,16 @@ AT.INIT >LDAXI MSG.INIT
>STYA MLI+1 >STYA MLI+1
.5 >LDAXI MSG.ATINIT .5 >LDYAI MSG.ATINIT
jsr PrintFAX jsr PrintFYA
jsr GO.WSCARD jsr GO.WSCARD
.DA #MLIATALK .DA #MLIATALK
.DA MLIATALK.PARAMS .DA MLIATALK.PARAMS
bcs .9 bcs .9
>LDAXI MSG.IRQ >LDYAI MSG.IRQ
jsr PrintFAX jsr PrintFYA
jsr MLI jsr MLI
.DA #MLIALLOCIRQ .DA #MLIALLOCIRQ
@ -98,29 +98,29 @@ AT.INIT >LDAXI MSG.INIT
cli cli
>LDAXI MSG.PREFIX1 >LDYAI MSG.PREFIX1
jsr PrintFAX jsr PrintFYA
jsr GO.OLDMLI jsr GO.OLDMLI
.DA #MLIGETPREFIX .DA #MLIGETPREFIX
.DA MLIGETPREFIX.PARAMS .DA MLIGETPREFIX.PARAMS
bcs .9 bcs .9
>LDAXI MSG.PREFIX2 >LDYAI MSG.PREFIX2
jsr PrintFAX jsr PrintFYA
jsr GO.WSCARD jsr GO.WSCARD
.DA #MLISETPREFIX .DA #MLISETPREFIX
.DA MLIGETPREFIX.PARAMS .DA MLIGETPREFIX.PARAMS
bcs .9 bcs .9
>LDAXI MSG.OK >LDYAI MSG.OK
jsr PrintFAX jsr PrintFYA
rts rts
.9 pha .9 pha
>LDAXI MSG.KO >LDYAI MSG.KO
jsr PrintFAX jsr PrintFYA
rts rts
*-------------------------------------- *--------------------------------------
GO.WSCARD jmp $ffff Self Modifed GO.WSCARD jmp $ffff Self Modifed

View File

@ -16,20 +16,20 @@ AUTO 6
TmpPtr1 .EQ $0 TmpPtr1 .EQ $0
TmpPtr2 .EQ $2 TmpPtr2 .EQ $2
*-------------------------------------- *--------------------------------------
NSC.Init >LDAXI NSC.MSG0 NSC.Init >LDYAI NSC.MSG0
jsr NSC.Print jsr NSC.Print
lda MACHID lda MACHID
and #MACHID.CLK Clock already installed ? and #MACHID.CLK Clock already installed ?
beq .1 beq .1
>LDAXI NSC.MSG1 >LDYAI NSC.MSG1
jsr NSC.Print jsr NSC.Print
rts rts
.1 jsr NSC.Detect .1 jsr NSC.Detect
bcc .2 bcc .2
>LDAXI NSC.MSG2 >LDYAI NSC.MSG2
jsr NSC.Print jsr NSC.Print
rts rts
@ -39,7 +39,7 @@ NSC.Init >LDAXI NSC.MSG0
ora #MACHID.CLK ora #MACHID.CLK
sta MACHID sta MACHID
>LDAXI NSC.MSG3 >LDYAI NSC.MSG3
jsr NSC.Print jsr NSC.Print
rts rts
*-------------------------------------- *--------------------------------------

View File

@ -26,22 +26,22 @@ RW.BLOCK .EQ $A00
*-------------------------------------- *--------------------------------------
RWBankSelect .EQ $C073 RWBankSelect .EQ $C073
*-------------------------------------- *--------------------------------------
RW.Init >LDAXI RW.MSG RW.Init >LDYAI RW.MSG
jsr PrintFAX jsr PrintFYA
jsr RW.Detect1 jsr RW.Detect1
bcs .10 bcs .10
>LDAXI RW.MSG.OK >LDYAI RW.MSG.OK
jsr PrintFAX jsr PrintFYA
rts rts
.10 jsr RW.Detect2 .10 jsr RW.Detect2
bcc .1 bcc .1
>LDAXI RW.MSG.KO1 >LDYAI RW.MSG.KO1
jsr PrintFAX jsr PrintFYA
rts rts
.1 pha Push Page count .1 pha Push Page count
@ -55,28 +55,28 @@ RW.Init >LDAXI RW.MSG
phx Push Kbyte LO phx Push Kbyte LO
pha Push Kbyte HI pha Push Kbyte HI
>LDAXI RW.MSG.OK1 >LDYAI RW.MSG.OK1
jsr PrintFAX jsr PrintFYA
jsr RW.Install jsr RW.Install
bcc .2 bcc .2
>LDAXI RW.MSG.KO2 >LDYAI RW.MSG.KO2
jsr PrintFAX jsr PrintFYA
rts rts
.2 >LDAXI RW.MSG.OK2 .2 >LDYAI RW.MSG.OK2
jsr PrintFAX jsr PrintFYA
jsr RW.Format jsr RW.Format
bcc .3 bcc .3
>LDAXI RW.MSG.KO3 >LDYAI RW.MSG.KO3
jsr PrintFAX jsr PrintFYA
rts rts
.3 >LDAXI RW.MSG.OK3 .3 >LDYAI RW.MSG.OK3
jsr PrintFAX jsr PrintFYA
rts rts
*-------------------------------------- *--------------------------------------
RW.Detect1 jsr MLI RW.Detect1 jsr MLI

View File

@ -18,8 +18,8 @@ ADT.CMD.VSD .EQ $C5 "E": Virtual Drive Command Envelope
ADT.CMD.PING .EQ $D9 "Y": PING ADT.CMD.PING .EQ $D9 "Y": PING
DRV.EntryPoint .EQ $BF41 DRV.EntryPoint .EQ $BF41
*-------------------------------------- *--------------------------------------
VSDRIVE.Init >LDAXI VSDRIVE.MSG0 VSDRIVE.Init >LDYAI VSDRIVE.MSG0
jsr PrintFAX jsr PrintFYA
jsr VSDRIVE.Check jsr VSDRIVE.Check
bcs .90 bcs .90
@ -36,49 +36,49 @@ VSDRIVE.Init >LDAXI VSDRIVE.MSG0
and #$0F and #$0F
pha slot n pha slot n
>LDAXI VSDRIVE.SSCOK >LDYAI VSDRIVE.SSCOK
jsr PrintFAX jsr PrintFYA
jsr VSDRIVE.Ping jsr VSDRIVE.Ping
bcs .92 bcs .92
>LDAXI VSDRIVE.SRVOK >LDYAI VSDRIVE.SRVOK
jsr PrintFAX jsr PrintFYA
jsr VSDRIVE.SetSlot jsr VSDRIVE.SetSlot
bcs .91 bcs .91
pha Push slot pha Push slot
pha 2 times pha 2 times
>LDAXI VSDRIVE.DEVOK >LDYAI VSDRIVE.DEVOK
jsr PrintFAX jsr PrintFYA
jsr VSDRIVE.Install jsr VSDRIVE.Install
>LDAXI VSDRIVE.OK >LDYAI VSDRIVE.OK
jsr PrintFAX jsr PrintFYA
rts rts
.90 >LDAXI VSDRIVE.DRVKO .90 >LDYAI VSDRIVE.DRVKO
jsr PrintFAX jsr PrintFYA
rts rts
.91 >LDAXI VSDRIVE.NOSLOT .91 >LDYAI VSDRIVE.NOSLOT
jsr PrintFAX jsr PrintFYA
rts rts
.92 pha Push EC .92 pha Push EC
>LDAXI VSDRIVE.SRVKO >LDYAI VSDRIVE.SRVKO
jsr PrintFAX jsr PrintFYA
inc .1+1 inc .1+1
lda .1+1 lda .1+1
cmp #$C8 cmp #$C8
bne .2 Go try next SSC.... bne .2 Go try next SSC....
.99 >LDAXI VSDRIVE.SSCKO .99 >LDYAI VSDRIVE.SSCKO
jsr PrintFAX jsr PrintFYA
rts rts
*-------------------------------------- *--------------------------------------
VSDRIVE.Check bit RRAMWRAMBNK2 VSDRIVE.Check bit RRAMWRAMBNK2

View File

@ -3,33 +3,33 @@ PREFIX /A2OSX.BUILD
AUTO 4,1 AUTO 4,1
.LIST OFF .LIST OFF
*-------------------------------------- *--------------------------------------
PrintFAX sta PrintFAX.Next+1 PrintFYA sty PrintFYA.Next+1
stx PrintFAX.Next+2 sta PrintFYA.Next+2
pla pla
sta PrintFAX.99+1 sta PrintFYA.99+1
pla pla
sta PrintFAX.98+1 sta PrintFYA.98+1
lda $C011 RDLCBNK2 lda $C011 RDLCBNK2
sta PrintFAX.91+1 sta PrintFYA.91+1
lda $C012 RDLCRAM lda $C012 RDLCRAM
sta PrintFAX.90+1 sta PrintFYA.90+1
lda $C08A RROMBNK1, make sure $D000-$FFFF ROM selected lda $C08A RROMBNK1, make sure $D000-$FFFF ROM selected
lda $CFFF get access to $C800-$CFFF internal ROM lda $CFFF get access to $C800-$CFFF internal ROM
PrintFAX.1 stz X.b0Flag PrintFYA.1 stz X.b0Flag
stz X.DigitCount stz X.DigitCount
jsr PrintFAX.Next jsr PrintFYA.Next
beq PrintFAX.90 beq PrintFYA.90
cmp #'%' cmp #'%'
bne .7 bne .7
.2 jsr PrintFAX.Next .2 jsr PrintFYA.Next
beq PrintFAX.90 beq PrintFYA.90
cmp #'0' cmp #'0'
bne .3 bne .3
@ -43,24 +43,24 @@ PrintFAX.1 stz X.b0Flag
sta X.DigitCount sta X.DigitCount
bra .2 bra .2
.4 ldx #PrintFAX.Tbl-PrintFAX.Esc-1 .4 ldx #PrintFYA.Tbl-PrintFYA.Esc-1
.5 cmp PrintFAX.Esc,x .5 cmp PrintFYA.Esc,x
beq .6 beq .6
dex dex
bpl .5 bpl .5
bra PrintFAX.1 bra PrintFYA.1
.6 txa .6 txa
asl asl
tax tax
jmp (PrintFAX.Tbl,x) jmp (PrintFYA.Tbl,x)
.7 cmp #'\' .7 cmp #'\'
bne .8 bne .8
jsr PrintFAX.Next jsr PrintFYA.Next
beq PrintFAX.90 beq PrintFYA.90
cmp #'n' cmp #'n'
bne .8 bne .8
@ -68,46 +68,46 @@ PrintFAX.1 stz X.b0Flag
.8 ora #$80 .8 ora #$80
jsr $FDED COUT jsr $FDED COUT
bra PrintFAX.1 bra PrintFYA.1
PrintFAX.90 lda #$ff PrintFYA.90 lda #$ff
bpl PrintFAX.98 ROM was selected, nothing to do bpl PrintFYA.98 ROM was selected, nothing to do
PrintFAX.91 lda #$ff PrintFYA.91 lda #$ff
bmi PrintFAX.92 RAM bank 2 was selected bmi PrintFYA.92 RAM bank 2 was selected
ldx #$8B RRAMWRAMBNK1 ldx #$8B RRAMWRAMBNK1
.HS 2C bit abs .HS 2C bit abs
PrintFAX.92 ldx #$83 RRAMWRAMBNK2 PrintFYA.92 ldx #$83 RRAMWRAMBNK2
lda $C000,x lda $C000,x
lda $C000,x lda $C000,x
PrintFAX.98 lda #$ff Self modified RTS HI PrintFYA.98 lda #$ff Self modified RTS HI
pha pha
PrintFAX.99 lda #$ff Self modified RTS LOPrintFAXPrintFAX PrintFYA.99 lda #$ff Self modified RTS LOPrintFYAPrintFYA
pha pha
rts rts
*-------------------------------------- *--------------------------------------
PrintFAX.Next lda $ffff PrintFYA.Next lda $ffff
beq .8 beq .8
inc PrintFAX.Next+1 inc PrintFYA.Next+1
bne .8 bne .8
inc PrintFAX.Next+2 Always !=0 inc PrintFYA.Next+2 Always !=0
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
PrintFAX.Esc .AS "dDhHS" PrintFYA.Esc .AS "dDhHS"
PrintFAX.Tbl .DA PrintFAX.D PrintFYA.Tbl .DA PrintFYA.D
.DA PrintFAX.DD .DA PrintFYA.DD
.DA PrintFAX.H .DA PrintFYA.H
.DA PrintFAX.HH .DA PrintFYA.HH
.DA PrintFAX.S .DA PrintFYA.S
*-------------------------------------- *--------------------------------------
PrintFAX.D ldx #0 PrintFYA.D ldx #0
.HS D0 bne .HS D0 bne
PrintFAX.DD plx PrintFYA.DD plx
pla pla
sta X.HexBuffer sta X.HexBuffer
stx X.HexBuffer+1 stx X.HexBuffer+1
@ -186,15 +186,15 @@ PrintFAX.DD plx
cpy #6 cpy #6
bne .6 bne .6
.9 jmp PrintFAX.1 .9 jmp PrintFYA.1
*-------------------------------------- *--------------------------------------
PrintFAX.HH pla PrintFYA.HH pla
jsr $FDDA PRBYTE jsr $FDDA PRBYTE
PrintFAX.H pla PrintFYA.H pla
jsr $FDDA PRBYTE jsr $FDDA PRBYTE
jmp PrintFAX.1 jmp PrintFYA.1
*-------------------------------------- *--------------------------------------
PrintFAX.S pla PrintFYA.S pla
sta .1+2 sta .1+2
sta .2+2 sta .2+2
@ -216,7 +216,7 @@ PrintFAX.S pla
dex dex
bne .2 bne .2
.9 jmp PrintFAX.1 .9 jmp PrintFYA.1
*-------------------------------------- *--------------------------------------
X.HexBuffer .BS 2 X.HexBuffer .BS 2
X.BCDBuffer .BS 3 X.BCDBuffer .BS 3