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)
jsr $C300
>LDAXI MSG.INIT1
>LDYAI MSG.INIT1
jsr A2osX.QC.PrintAX
.3 jsr MLI
@ -52,16 +52,16 @@ A2osX.QC.Start1 sei
.DA MLISETPREFIX00
bcc .4
>LDAXI MSG.SETPREFIXKO
>LDYAI MSG.SETPREFIXKO
jsr A2osX.QC.PrintAX
>LDAXI A2osX.QC.Prefix
>LDYAI A2osX.QC.Prefix
jsr A2osX.QC.PrintAX
>DEBUG
bra .3
.4 >LDAXI MSG.SETPREFIXOK
.4 >LDYAI MSG.SETPREFIXOK
jsr A2osX.QC.PrintAX
jsr A2osX.QC.KLoad
@ -72,13 +72,13 @@ A2osX.QC.Start1 sei
* bit RROMBNK1
* jsr SETPWRC
.8 >LDAXI MSG.INIT1OK
.8 >LDYAI MSG.INIT1OK
jsr A2osX.QC.PrintAX
>DEBUGOA
jmp $2000
*--------------------------------------
A2osX.QC.KLoad >LDAXI MSG.KLOAD
A2osX.QC.KLoad >LDYAI MSG.KLOAD
jsr A2osX.QC.PrintAX
ldx A2osX.QC.Prefix
@ -94,7 +94,7 @@ A2osX.QC.KLoad >LDAXI MSG.KLOAD
stx A2osX.QC.Prefix
>LDAXI A2osX.QC.Prefix
>LDYAI A2osX.QC.Prefix
jsr A2osX.QC.PrintAX
jsr MLI
@ -121,7 +121,7 @@ A2osX.QC.KLoad >LDAXI MSG.KLOAD
plp
bcc .9
>LDAXI MSG.KLOAD.KO
>LDYAI MSG.KLOAD.KO
jsr A2osX.QC.PrintAX
.9 rts

View File

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

View File

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

View File

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

View File

@ -10,9 +10,219 @@ Kernel.Init2 sei
stx A2osX.SaveSM
stx A2osX.SaveSX
sta CLRALTZP Make sure MAIN ZP is enabled for X.PRINT.F
ldx #Kernel.ZP.S-1
.1 lda Kernel.ZP,x
sta CHARGET,x
dex
bpl .1
ldx #0
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
@ -58,257 +268,51 @@ Kernel.Init2 sei
inx
cpx #40
bne .4
>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
*--------------------------------------
Kernel.Init3 sta SETALTZP
bit RRAMWRAMBNK1
bit RRAMWRAMBNK1
lda #$ff Make sure we are in Kernel Mode during setup
sta IRQ.InKernel
>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
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
*--------------------------------------
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 >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
*--------------------------------------
CPU.Init >LDAXI MSG.CPU
jsr PrintFAX
PS0.Init >LDYAI CORE.S.PS0 Select Process 0 (Kernel)
>STYA pPs
>LDYAI K.STACKTOP
>STYA pStack
>PUSHBI 0
>LDYAI DEV.SYS
>SYSCALL open
bcs .9
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
*--------------------------------------
CPU.Init >LDYAI MSG.CPU
>SYSCALL printf
jsr Detect6502 A = CPU type
sta A2osX.CPUTYPE
ldx MSG.CPUTYPEH,y
lda MSG.CPUTYPEL,y
jsr PrintFAX
ldx MSG.CPUTYPEL,y
lda MSG.CPUTYPEH,y
tay
>SYSCALL printf
lda MACHID
and #MACHID.T
cmp #MACHID.T.IIc
beq CPU.Init.Z80
>LDAXI MSG.CPU.SPEED
jsr PrintFAX
>LDYAI MSG.CPU.SPEED
>SYSCALL printf
stz A2osX.RANDOM16
stz A2osX.RANDOM16+1
@ -367,11 +371,12 @@ CPU.Init >LDAXI MSG.CPU
pha push CPU speed LO
lda A2osX.CPUSPEED
pha push CPU speed HI
>LDAXI MSG.CPU.SPEEDOK
jsr PrintFAX
>LDYAI MSG.CPU.SPEEDOK
>SYSCALL printf
CPU.Init.Z80 >LDAXI MSG.Z80
jsr PrintFAX
CPU.Init.Z80 >LDYAI MSG.Z80
>SYSCALL printf
jsr DetectZ80
bcs .9
sta A2osX.Z80SLOT
@ -381,12 +386,12 @@ CPU.Init.Z80 >LDAXI MSG.Z80
lda #A2osX.S.Z80
sta A2osX.S,x
>LDAXI MSG.Z80.OK
jsr PrintFAX
>LDYAI MSG.Z80.OK
>SYSCALL printf
rts
.9 >LDAXI MSG.Z80.KO
jsr PrintFAX
.9 >LDYAI MSG.Z80.KO
>SYSCALL printf
rts
*--------------------------------------
* Out:
@ -481,7 +486,7 @@ MemMgrInit >LDYAI Mem.MHiMem
* if irq not handled, jmp (S.IrqMgrOldFFFE)
*--------------------------------------
IrqMgrInit >LDYAI MSG.IRQ
>SYSCALL PrintF
>SYSCALL printf
php
sei
@ -512,7 +517,7 @@ IrqMgrInit >LDYAI MSG.IRQ
>STYA GP.IrqH.JSR+1
>LDYAI MSG.IRQ.CLOCK
>SYSCALL PrintF
>SYSCALL printf
clc
rts
@ -528,7 +533,7 @@ IrqMgrInit >LDYAI MSG.IRQ
>STYA GP.IrqH.JSR+1
>LDYAI MSG.IRQ.VBL
>SYSCALL PrintF
>SYSCALL printf
clc
rts
@ -539,7 +544,7 @@ IrqMgrInit >LDYAI MSG.IRQ
sta SYS.BASL0+38
>LDYAI MSG.IRQ.POLL
>SYSCALL PrintF
>SYSCALL printf
clc
rts
@ -701,13 +706,7 @@ IrqMgrInit.HZ2Tick
rts
*--------------------------------------
DevMgrInit >LDYAI MSG.DEV
>SYSCALL PrintF
>LDYAI FD.NULL
jsr DevMgrInit.AddCDev
>LDYAI FD.SYS
jsr DevMgrInit.AddCDev
>SYSCALL printf
lda DEVCNT
sta DevMgrInit.DEVCNT
@ -883,20 +882,14 @@ DevMgrInit.AddCDev
.2 sta $ffff,x SELF MODIFIED
dex
bpl .1
jsr $ffff
inc DevMgr.DevCnt
clc
rts
.9 lda #K.E.OOH
sec
rts
*--------------------------------------
EvtMgrInit >LDYAI MSG.EVT
>SYSCALL printf
lda #$A5
sta A2osX.TIMER16
lda #$9B
@ -909,6 +902,7 @@ EvtMgrInit >LDYAI MSG.EVT
*--------------------------------------
FltMgrInit >LDYAI MSG.FLT
>SYSCALL printf
stz Flt.Table
clc
rts
@ -916,8 +910,6 @@ FltMgrInit >LDYAI MSG.FLT
TskMgrInit >LDYAI MSG.TSK
>SYSCALL printf
jsr CORE.PSSelect0
>LDYAI K.ENV.SIZE get a buffer for ENV
>SYSCALL GetMem0 make sure blank!!
bcs .9
@ -967,29 +959,6 @@ TskMgrInit >LDYAI MSG.TSK
>SYSCALL PutEnv
.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
* CHRGET .EQ $B1 - C8
*--------------------------------------
@ -1026,14 +995,7 @@ TClock.SIG .HS 0878282c58ff700538b00118b8087848
.HS 8a489848adffcf201ac86868ba8df807
*--------------------------------------
SYSSCREEN.TOP .AZ "A2osX System Screen"
MSG.Init2 .AZ "A2osX[Stage2]:Init\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.Init2 .AZ "A2osX[Stage2]:Init\nRelocating Kernel...\n"
MSG.HZ .AZ "Kernel SYS Timer Set For %d0 hz Machine.\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 BUSID
.DA #DEVID.NULL
.DA 0 BUSPTR
.DA DRV.NULL
.DA 0 ROMPTR
.AZ "NULL" NAME
.HS 000000
*--------------------------------------
@ -1108,8 +1070,8 @@ FD.SYS .DA #S.FD.T.CDEV
.DA #0 HANDLER
.DA #0 BUSID
.DA #DEVID.SYS
.DA 0 BUSPTR
.DA DRV.SYS
.DA 0 ROMPTR
.AZ "SYS" NAME
.HS 00000000
*--------------------------------------
@ -1117,8 +1079,8 @@ FD.BDEV .DA #S.FD.T.BDEV
.DA #0 HANDLER
.DA #0 BUSID
.DA #0 DEVID
.BS 2 BUSPTR
.BS 2 DRVPTR
.BS 2 ROMPTR
.AZ "S1D1" NAME
.HS 000000
*--------------------------------------

View File

@ -20,7 +20,7 @@ K.Open.I jsr IO.SetMLIPathYA local pathname...
ldx #5 /DEV/
cpx K.MLI.PATH
bcc K.Open.REG
bcs K.Open.REG
.1 lda K.MLI.PATH,x
cmp IO.DEVDIR,x
@ -28,22 +28,39 @@ K.Open.I jsr IO.SetMLIPathYA local pathname...
dex
bne .1
K.Open.DEV ldy #K.MLI.PATH+5 skip /DEV/
lda /K.MLI.PATH+5
K.Open.DEV ldy #K.MLI.PATH+6 skip L/DEV/
lda /K.MLI.PATH+6
jsr K.GetDevByName
bcs .9
>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
>STYA K.MLI.PARAMS+1
sta K.S.IOCTL
lda (pStack)
* sta K.S.IOCTL
>RET 1
*--------------------------------------
* int close(int fd);
*--------------------------------------
@ -191,9 +208,18 @@ K.IOCTL.9 rts
* ## ASM
* **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
rts
.9 lda #MLI.E.NODEV
rts
*--------------------------------------
IO.PullMLIPath >PULLYA
IO.SetMLIPathYA >STYA .1+1

View File

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

View File

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

View File

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

View File

@ -26,22 +26,22 @@ RW.BLOCK .EQ $A00
*--------------------------------------
RWBankSelect .EQ $C073
*--------------------------------------
RW.Init >LDAXI RW.MSG
jsr PrintFAX
RW.Init >LDYAI RW.MSG
jsr PrintFYA
jsr RW.Detect1
bcs .10
>LDAXI RW.MSG.OK
jsr PrintFAX
>LDYAI RW.MSG.OK
jsr PrintFYA
rts
.10 jsr RW.Detect2
bcc .1
>LDAXI RW.MSG.KO1
jsr PrintFAX
>LDYAI RW.MSG.KO1
jsr PrintFYA
rts
.1 pha Push Page count
@ -55,28 +55,28 @@ RW.Init >LDAXI RW.MSG
phx Push Kbyte LO
pha Push Kbyte HI
>LDAXI RW.MSG.OK1
jsr PrintFAX
>LDYAI RW.MSG.OK1
jsr PrintFYA
jsr RW.Install
bcc .2
>LDAXI RW.MSG.KO2
jsr PrintFAX
>LDYAI RW.MSG.KO2
jsr PrintFYA
rts
.2 >LDAXI RW.MSG.OK2
jsr PrintFAX
.2 >LDYAI RW.MSG.OK2
jsr PrintFYA
jsr RW.Format
bcc .3
>LDAXI RW.MSG.KO3
jsr PrintFAX
>LDYAI RW.MSG.KO3
jsr PrintFYA
rts
.3 >LDAXI RW.MSG.OK3
jsr PrintFAX
.3 >LDYAI RW.MSG.OK3
jsr PrintFYA
rts
*--------------------------------------
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
DRV.EntryPoint .EQ $BF41
*--------------------------------------
VSDRIVE.Init >LDAXI VSDRIVE.MSG0
jsr PrintFAX
VSDRIVE.Init >LDYAI VSDRIVE.MSG0
jsr PrintFYA
jsr VSDRIVE.Check
bcs .90
@ -36,49 +36,49 @@ VSDRIVE.Init >LDAXI VSDRIVE.MSG0
and #$0F
pha slot n
>LDAXI VSDRIVE.SSCOK
jsr PrintFAX
>LDYAI VSDRIVE.SSCOK
jsr PrintFYA
jsr VSDRIVE.Ping
bcs .92
>LDAXI VSDRIVE.SRVOK
jsr PrintFAX
>LDYAI VSDRIVE.SRVOK
jsr PrintFYA
jsr VSDRIVE.SetSlot
bcs .91
pha Push slot
pha 2 times
>LDAXI VSDRIVE.DEVOK
jsr PrintFAX
>LDYAI VSDRIVE.DEVOK
jsr PrintFYA
jsr VSDRIVE.Install
>LDAXI VSDRIVE.OK
jsr PrintFAX
>LDYAI VSDRIVE.OK
jsr PrintFYA
rts
.90 >LDAXI VSDRIVE.DRVKO
jsr PrintFAX
.90 >LDYAI VSDRIVE.DRVKO
jsr PrintFYA
rts
.91 >LDAXI VSDRIVE.NOSLOT
jsr PrintFAX
.91 >LDYAI VSDRIVE.NOSLOT
jsr PrintFYA
rts
.92 pha Push EC
>LDAXI VSDRIVE.SRVKO
jsr PrintFAX
>LDYAI VSDRIVE.SRVKO
jsr PrintFYA
inc .1+1
lda .1+1
cmp #$C8
bne .2 Go try next SSC....
.99 >LDAXI VSDRIVE.SSCKO
jsr PrintFAX
.99 >LDYAI VSDRIVE.SSCKO
jsr PrintFYA
rts
*--------------------------------------
VSDRIVE.Check bit RRAMWRAMBNK2

View File

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