mirror of
https://github.com/A2osX/A2osX.git
synced 2025-01-27 09:34:38 +00:00
Kernel 0.9.2
This commit is contained in:
parent
ad49295e8f
commit
be83829ab4
Binary file not shown.
Binary file not shown.
@ -4,8 +4,8 @@ AUTO 4,1
|
||||
*--------------------------------------
|
||||
KVER .EQ $5C00 92.0
|
||||
*--------------------------------------
|
||||
ZPDRV .EQ $20 32 bytes for DHGR.DRV....
|
||||
ZPLIB .EQ $40 32 bytes for TCPIPD..
|
||||
ZPDRV .EQ $20 32 bytes
|
||||
ZPLIB .EQ $40 32 bytes
|
||||
*--------------------------------------
|
||||
* PS Context : 48 bytes MAX
|
||||
*--------------------------------------
|
||||
@ -79,11 +79,16 @@ SYS.MKFIFO .EQ $0A
|
||||
SYS.OpenDir .EQ $10
|
||||
SYS.ReadDir .EQ $12
|
||||
SYS.CloseDir .EQ $14
|
||||
* .EQ $16
|
||||
* .EQ $18
|
||||
* .EQ $1A
|
||||
* .EQ $1C
|
||||
* .EQ $1E
|
||||
SYS.Open .EQ $16
|
||||
SYS.Open.RDONLY .EQ %00000001
|
||||
SYS.Open.WRONLY .EQ %00000010
|
||||
SYS.Open.RDWR .EQ %00000011
|
||||
SYS.Open.APPEND .EQ %00000100
|
||||
SYS.Open.CREATE .EQ %10000000
|
||||
SYS.Close .EQ $18
|
||||
SYS.Read .EQ $1A
|
||||
SYS.Write .EQ $1C
|
||||
SYS.IOCTL .EQ $1E
|
||||
|
||||
SYS.FPutC .EQ $20
|
||||
SYS.PutChar .EQ $22
|
||||
@ -119,7 +124,7 @@ SYS.Rename .EQ $42
|
||||
SYS.GetDevByID .EQ $48
|
||||
SYS.GetDevByName .EQ $4A
|
||||
SYS.GetDevStatus .EQ $4C
|
||||
SYS.IOCTL .EQ $4E
|
||||
* .EQ $4E
|
||||
|
||||
* .EQ $50
|
||||
SYS.SScanF .EQ $52
|
||||
@ -357,30 +362,30 @@ S.DSTAT.ST.DSKSW .EQ $40
|
||||
S.DSTAT.ST.NOREM .EQ $20
|
||||
S.DSTAT.VERSION .EQ 23
|
||||
*
|
||||
S.DSTAT .EQ 25
|
||||
S.DSTAT .EQ 25
|
||||
*--------------------------------------
|
||||
* S.FD
|
||||
*--------------------------------------
|
||||
S.FD.T .EQ 0
|
||||
S.FD.T .EQ 0
|
||||
S.FD.T.REG .EQ 0
|
||||
S.FD.T.DIR .EQ 2
|
||||
S.FD.T.CDEV .EQ 4
|
||||
S.FD.T.BDEV .EQ 6
|
||||
S.FD.T.LNK .EQ 8
|
||||
S.FD.T.DSOCK .EQ 10
|
||||
S.FD.T.SSOCK .EQ 12
|
||||
S.FD.T.DSOCK .EQ 10
|
||||
S.FD.T.SSOCK .EQ 12
|
||||
S.FD.T.FIFO .EQ 14
|
||||
S.FD.HANDLER .EQ 1 0=KRNL,!0=hLIB (LIBNFS,LIBTCPIP.....)
|
||||
*--------------------------------------
|
||||
S.FD.REG.REF .EQ 2
|
||||
S.FD.REG.REF .EQ 2
|
||||
S.FD.REG.IOBUF .EQ 3
|
||||
*
|
||||
S.FD.REG .EQ 4
|
||||
*--------------------------------------
|
||||
S.FD.DIR.REF .EQ 2
|
||||
S.FD.DIR.REF .EQ 2
|
||||
S.FD.DIR.IOBUF .EQ 3
|
||||
S.FD.DIR.EL .EQ 4
|
||||
S.FD.DIR.EPB .EQ 5
|
||||
S.FD.DIR.EPB .EQ 5
|
||||
S.FD.DIR.FC .EQ 6 word
|
||||
*
|
||||
S.FD.DIR .EQ 8
|
||||
@ -389,7 +394,7 @@ S.FD.DEV.BUSID .EQ 2
|
||||
S.FD.DEV.DEVID .EQ 3
|
||||
S.FD.DEV.BUSPTR .EQ 4 word
|
||||
S.FD.DEV.DRVPTR .EQ 6 word
|
||||
S.FD.DEV.NAME .EQ 8 C-String
|
||||
S.FD.DEV.NAME .EQ 8 C-String
|
||||
*
|
||||
S.FD.DEV .EQ 16
|
||||
*--------------------------------------
|
||||
@ -402,7 +407,7 @@ S.FD.SSOCK.READ .EQ 5
|
||||
S.FD.SSOCK.WRITE .EQ 6
|
||||
S.FD.SSOCK.STATUS .EQ 7
|
||||
*
|
||||
S.FD.SSOCK .EQ 8
|
||||
S.FD.SSOCK .EQ 8
|
||||
*--------------------------------------
|
||||
S.FD.FIFO.S .EQ 2
|
||||
S.FD.FIFO.S.Opened .EQ 1
|
||||
|
@ -20,7 +20,7 @@ ZPPtr3 .EQ ZPKERNEL+4
|
||||
ZPPtr4 .EQ ZPKERNEL+6
|
||||
|
||||
pIOCTL .EQ ZPKERNEL+8
|
||||
pDev .EQ ZPKERNEL+10
|
||||
*pDev .EQ ZPKERNEL+10
|
||||
pFD .EQ ZPKERNEL+12
|
||||
pIOBuf .EQ ZPKERNEL+14
|
||||
*--------------------------------------
|
||||
@ -107,10 +107,10 @@ K.STACKTOP .EQ $03ED XFer !!! down to $3E0
|
||||
*--------------------------------------
|
||||
* free $0C00->$17FF = $C00 (3072) Aux
|
||||
*--------------------------------------
|
||||
Dev.Table.hMem .EQ $0C00 K.Dev.MAX
|
||||
Dev.Table.F .EQ $0C20 K.Dev.MAX
|
||||
Dev.Table.PTRLO .EQ $0C40 K.Dev.MAX
|
||||
Dev.Table.PTRHI .EQ $0C60 K.Dev.MAX
|
||||
FD.Table.hMem .EQ $0C00 K.Dev.MAX
|
||||
FD.Table.F .EQ $0C20 K.Dev.MAX
|
||||
FD.Table.PTRLO .EQ $0C40 K.Dev.MAX
|
||||
FD.Table.PTRHI .EQ $0C60 K.Dev.MAX
|
||||
*--------------------------------------
|
||||
PS.Table.hMem .EQ $0D00 K.PS.MAX
|
||||
PS.Table.PID .EQ $0D20 K.PS.MAX
|
||||
|
@ -330,6 +330,29 @@ AUTO 4,1
|
||||
>PULLA
|
||||
sta ]1+1
|
||||
.EM
|
||||
*--------------------------------------
|
||||
.MA RET
|
||||
.DO ]1=1
|
||||
inc pStack
|
||||
.FIN
|
||||
.DO ]1=2
|
||||
inc pStack
|
||||
inc pStack
|
||||
.FIN
|
||||
.DO ]1=3
|
||||
inc pStack
|
||||
inc pStack
|
||||
inc pStack
|
||||
.FIN
|
||||
.DO ]1>3
|
||||
pha
|
||||
lda #]1
|
||||
:1 inc pStack
|
||||
dec
|
||||
bne :1
|
||||
pla
|
||||
.FIN
|
||||
.EM
|
||||
*--------------------------------------
|
||||
* General WORD Manipulation Macros
|
||||
*--------------------------------------
|
||||
|
@ -345,10 +345,10 @@ K.InsDrv >STYA BIN.R.CS.Start
|
||||
|
||||
ldx DevMgr.DevCnt
|
||||
lda DevMgr.Free
|
||||
sta Dev.Table,x
|
||||
sta FD.Table.PTRLO,x
|
||||
inx
|
||||
lda DevMgr.Free+1
|
||||
sta Dev.Table,x
|
||||
sta FD.Table.PTRHI,x
|
||||
|
||||
inx
|
||||
stx DevMgr.DevCnt
|
||||
|
@ -14,8 +14,8 @@ K.GetDevByID cmp DevMgr.DevCnt
|
||||
|
||||
tax
|
||||
|
||||
ldy Dev.Table.PTRLO,x
|
||||
lda Dev.Table.PTRHI,x
|
||||
ldy FD.Table.PTRLO,x
|
||||
lda FD.Table.PTRHI,x
|
||||
|
||||
* clc
|
||||
|
||||
@ -27,27 +27,27 @@ K.GetDevByID cmp DevMgr.DevCnt
|
||||
* **Out:**
|
||||
* CC = OK, CS = ERROR
|
||||
* X = DEVID
|
||||
* Y,A = DEVSLOT
|
||||
* Y,A = FD
|
||||
*\--------------------------------------
|
||||
K.GetDevByName >STYA ZPPtr1
|
||||
|
||||
ldx #0
|
||||
|
||||
ldy Dev.Table.PTRLO,x
|
||||
lda Dev.Table.PTRHI,x
|
||||
.1 ldy FD.Table.PTRLO,x
|
||||
lda FD.Table.PTRHI,x
|
||||
|
||||
>STYA ZPPtr2
|
||||
|
||||
lda (ZPPtr2)
|
||||
lda ZPPtr2
|
||||
clc
|
||||
adc #S.FD.DEV.NAME
|
||||
sta ZPPtr3
|
||||
ldy #1
|
||||
lda (ZPPtr2)
|
||||
|
||||
lda ZPPtr2+1
|
||||
adc #0
|
||||
sta ZPPtr3+1
|
||||
|
||||
.1 ldy #$ff
|
||||
ldy #$ff
|
||||
|
||||
.2 iny
|
||||
lda (ZPPtr1),y
|
||||
@ -57,9 +57,7 @@ K.GetDevByName >STYA ZPPtr1
|
||||
ora (ZPPtr3),y Both char are 0 ?
|
||||
bne .2 no....loop
|
||||
|
||||
lda ZPPtr3
|
||||
and #$F0
|
||||
tay
|
||||
ldy ZPPtr2
|
||||
lda ZPPtr3+1
|
||||
clc
|
||||
rts
|
||||
@ -70,7 +68,7 @@ K.GetDevByName >STYA ZPPtr1
|
||||
|
||||
K.GetDev.NODEV lda #MLI.E.NODEV
|
||||
sec
|
||||
rts
|
||||
K.GetDev.9 rts
|
||||
*/--------------------------------------
|
||||
* # GetDevStatus
|
||||
* **In:**
|
||||
@ -80,41 +78,11 @@ K.GetDev.NODEV lda #MLI.E.NODEV
|
||||
*\--------------------------------------
|
||||
K.GetDevStatus ldx #IOCTL.STATUS
|
||||
jsr K.GetDevByID
|
||||
bcs K.IOCTL.9
|
||||
bcs K.GetDev.9
|
||||
|
||||
>STYA pDev
|
||||
>STYA pFD
|
||||
|
||||
jmp (pDev)
|
||||
*/--------------------------------------
|
||||
* # IOCTL
|
||||
* ## C
|
||||
* `int ioctl(int fd, unsigned long request, ...);`
|
||||
* ## ASM
|
||||
* **In:**
|
||||
* `PUSHWI param`
|
||||
* `lda #request`
|
||||
* `ldy fd`
|
||||
* `>SYSCALL IOCTL`
|
||||
* **Out:**
|
||||
* Y,A = ...
|
||||
*\--------------------------------------
|
||||
K.IOCTL tax op
|
||||
>PULLB .1+1 param LO
|
||||
>PULLB .2+1 param HI
|
||||
|
||||
tya id
|
||||
|
||||
jsr K.GetDevByID
|
||||
bcs K.IOCTL.9
|
||||
|
||||
>STYA pDev
|
||||
|
||||
.1 ldy #$ff SELF MODIFIED
|
||||
.2 lda #$ff SELF MODIFIED
|
||||
|
||||
jmp (pDev) x = op
|
||||
|
||||
K.IOCTL.9 rts
|
||||
jmp (pFD)
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE /A2OSX.SRC/SYS/KERNEL.S.DEV
|
||||
|
@ -105,13 +105,13 @@ DRV.BLK txa
|
||||
sta DRV.BLK.PARAMS CMD
|
||||
|
||||
ldy #S.FD.DEV.DEVID Drive 1, or 2
|
||||
lda (pDev),y
|
||||
lda (pFD),y
|
||||
dec O or 1
|
||||
lsr in Carry
|
||||
php
|
||||
|
||||
ldy #S.FD.DEV.BUSID
|
||||
lda (pDev),y
|
||||
lda (pFD),y
|
||||
asl
|
||||
asl
|
||||
asl
|
||||
|
@ -12,9 +12,67 @@ Kernel.Init2 sei
|
||||
|
||||
sta CLRALTZP Make sure MAIN ZP is enabled for X.PRINT.F
|
||||
|
||||
ldx #0
|
||||
|
||||
ldy #0
|
||||
|
||||
.2 lda SYSSCREEN.TOP,y
|
||||
beq .3
|
||||
|
||||
cmp #$40
|
||||
bcc .10
|
||||
cmp #$5F
|
||||
bcs .10
|
||||
and #$3F
|
||||
|
||||
.10 sta SETWRITEAUX
|
||||
sta SYS.BASL0,x
|
||||
sta CLRWRITEAUX
|
||||
|
||||
iny
|
||||
|
||||
lda SYSSCREEN.TOP,y
|
||||
beq .5
|
||||
|
||||
cmp #$40
|
||||
bcc .11
|
||||
cmp #$5F
|
||||
bcs .11
|
||||
and #$3F
|
||||
|
||||
.11 sta SYS.BASL0,x
|
||||
|
||||
iny
|
||||
inx
|
||||
bra .2
|
||||
|
||||
.3 lda #$20
|
||||
|
||||
.4 sta SETWRITEAUX
|
||||
sta SYS.BASL0,x
|
||||
sta CLRWRITEAUX
|
||||
|
||||
.5 lda #$20
|
||||
sta SYS.BASL0,x
|
||||
|
||||
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
|
||||
|
||||
@ -123,31 +181,15 @@ Kernel.Init2 sei
|
||||
Kernel.Init3 sta SETALTZP
|
||||
bit RRAMWRAMBNK1
|
||||
bit RRAMWRAMBNK1
|
||||
|
||||
ldx #Kernel.ZP.S-1
|
||||
|
||||
.1 lda Kernel.ZP,x
|
||||
sta CHARGET,x
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
lda #$ff Make sure we are in Kernel Mode during setup
|
||||
sta IRQ.InKernel
|
||||
|
||||
>LDAXI MSG.Init3
|
||||
jsr PrintFAX
|
||||
>DEBUG
|
||||
jsr MemMgrInit
|
||||
|
||||
>LDYAI FD.NULL
|
||||
jsr DevMgrInit.AddCDev
|
||||
|
||||
>LDYAI FD.SYS
|
||||
jsr DevMgrInit.AddCDev
|
||||
|
||||
jsr PS0Init
|
||||
bcs *
|
||||
|
||||
>LDYAI MSG.Init3
|
||||
>SYSCALL PrintF
|
||||
|
||||
jsr DevMgrInit
|
||||
bcs *
|
||||
|
||||
@ -163,6 +205,8 @@ Kernel.Init3 sta SETALTZP
|
||||
jsr TskMgrInit
|
||||
bcs *
|
||||
|
||||
jsr PS0Init
|
||||
|
||||
ldy #S.PS.hPREFIX
|
||||
lda (pPs),y
|
||||
>SYSCALL GetMemPtr
|
||||
@ -190,7 +234,6 @@ Kernel.Init3 sta SETALTZP
|
||||
|
||||
>DEBUGOA
|
||||
|
||||
>DEBUG
|
||||
jmp CORE.Run
|
||||
|
||||
.9 >PUSHA
|
||||
@ -198,27 +241,6 @@ Kernel.Init3 sta SETALTZP
|
||||
>SYSCALL PrintF
|
||||
bra * No need to discard Expanded CMDLINE
|
||||
*--------------------------------------
|
||||
* Modified CHARGET/CHARGOT for ROM CALL
|
||||
* CHRGET .EQ $B1 - C8
|
||||
*--------------------------------------
|
||||
Kernel.ZP .PH $B1
|
||||
CHARGET inc TXTPTR
|
||||
bne CHARGOT
|
||||
inc TXTPTR+1
|
||||
|
||||
CHARGOT lda $ffff
|
||||
beq IsDigit.9
|
||||
|
||||
IsDigit cmp #'0'
|
||||
bcc IsDigit.9
|
||||
cmp #'9'+1
|
||||
rts
|
||||
|
||||
IsDigit.9 sec
|
||||
rts
|
||||
.EP
|
||||
Kernel.ZP.S .EQ *-Kernel.ZP
|
||||
*--------------------------------------
|
||||
Kernel.Move >STYA ZPPtr3
|
||||
|
||||
ldy #0
|
||||
@ -435,14 +457,6 @@ DetectZ80 ldx #Z80Code.Size
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
Z80Code.Start .HS 31FF00 START: LD SP,000FFH Init Stack
|
||||
.HS 3EFF LD A,0FFH Set Flag
|
||||
.HS 320D00 LD (FLAG),A
|
||||
.HS 3200E1 LD (0E100H),A Back to 6502
|
||||
.HS 18F3 JR START Loop
|
||||
.HS 00 FLAG: .DB 0
|
||||
Z80Code.Size .EQ *-Z80Code.Start
|
||||
*--------------------------------------
|
||||
MemMgrInit >LDYAI Mem.MHiMem
|
||||
>STYA Mem.HiMem
|
||||
>STYA Mem.Free
|
||||
@ -463,76 +477,6 @@ MemMgrInit >LDYAI Mem.MHiMem
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
PS0Init ldx #0
|
||||
|
||||
ldy #0
|
||||
|
||||
.2 lda DevMgr.SYS.TITLE,y
|
||||
beq .3
|
||||
|
||||
cmp #$40
|
||||
bcc .10
|
||||
cmp #$5F
|
||||
bcs .10
|
||||
and #$3F
|
||||
|
||||
.10 sta SETWRITEAUX
|
||||
sta SYS.BASL0,x
|
||||
sta CLRWRITEAUX
|
||||
|
||||
iny
|
||||
|
||||
lda DevMgr.SYS.TITLE,y
|
||||
beq .5
|
||||
|
||||
cmp #$40
|
||||
bcc .11
|
||||
cmp #$5F
|
||||
bcs .11
|
||||
and #$3F
|
||||
|
||||
.11 sta SYS.BASL0,x
|
||||
|
||||
iny
|
||||
inx
|
||||
bra .2
|
||||
|
||||
.3 lda #$20
|
||||
|
||||
.4 sta SETWRITEAUX
|
||||
sta SYS.BASL0,x
|
||||
sta CLRWRITEAUX
|
||||
|
||||
.5 lda #$20
|
||||
sta SYS.BASL0,x
|
||||
|
||||
inx
|
||||
cpx #40
|
||||
bne .4
|
||||
|
||||
>LDYAI CORE.S.PS0 Select Process 0 (Kernel)
|
||||
>STYA pPs
|
||||
|
||||
>LDYAI K.STACKTOP
|
||||
>STYA pStack
|
||||
|
||||
lda #DEVID.SYS
|
||||
|
||||
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
|
||||
*--------------------------------------
|
||||
DevMgr.SYS.TITLE .AZ "A2osX System Screen"
|
||||
*--------------------------------------
|
||||
* Setup AuxLC $FFFE->Kernel IRQ Handler
|
||||
* if irq not handled, jmp (S.IrqMgrOldFFFE)
|
||||
*--------------------------------------
|
||||
@ -658,9 +602,6 @@ IrqMgrInit.TClock
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
TClock.SIG .HS 0878282c58ff700538b00118b8087848
|
||||
.HS 8a489848adffcf201ac86868ba8df807
|
||||
*--------------------------------------
|
||||
IrqMgrInit.Mouse
|
||||
stz ZPPtr1 Try finding a Mouse Card...
|
||||
@ -744,9 +685,6 @@ IrqMgrInit.Mouse
|
||||
ldy IRQ.VBL.n0
|
||||
|
||||
.11 jmp $ffff SELF MODIFIED
|
||||
|
||||
Mouse.OFS .HS 05070B0CFB
|
||||
Mouse.SIG .HS 38180120D6
|
||||
*--------------------------------------
|
||||
IrqMgrInit.HZ2Tick
|
||||
ldx #50
|
||||
@ -765,6 +703,12 @@ IrqMgrInit.HZ2Tick
|
||||
DevMgrInit >LDYAI MSG.DEV
|
||||
>SYSCALL PrintF
|
||||
|
||||
>LDYAI FD.NULL
|
||||
jsr DevMgrInit.AddCDev
|
||||
|
||||
>LDYAI FD.SYS
|
||||
jsr DevMgrInit.AddCDev
|
||||
|
||||
lda DEVCNT
|
||||
sta DevMgrInit.DEVCNT
|
||||
|
||||
@ -924,13 +868,14 @@ DevMgrInit.AddCDev
|
||||
phx
|
||||
|
||||
ldx DevMgr.DevCnt
|
||||
sta Dev.Table.PTRHI,x
|
||||
sta FD.Table.PTRHI,x
|
||||
tya
|
||||
sta Dev.Table.PTRLO,x
|
||||
sta FD.Table.PTRLO,x
|
||||
pla
|
||||
sta Dev.Table.hMem,x
|
||||
.10+1 lda #$ff SELF MODIFIED
|
||||
sta Dev.Table.F,x
|
||||
sta FD.Table.hMem,x
|
||||
|
||||
.10 lda #$ff SELF MODIFIED
|
||||
sta FD.Table.F,x
|
||||
|
||||
ldx #S.FD.DEV-1
|
||||
|
||||
@ -950,44 +895,6 @@ DevMgrInit.AddCDev
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
FD.NULL .DA #S.FD.T.CDEV
|
||||
.DA #0 HANDLER
|
||||
.DA #0 BUSID
|
||||
.DA #DEVID.NULL
|
||||
.DA DRV.NULL
|
||||
.DA 0 ROMPTR
|
||||
.AZ "NULL" NAME
|
||||
.HS 000000
|
||||
*--------------------------------------
|
||||
FD.SYS .DA #S.FD.T.CDEV
|
||||
.DA #0 HANDLER
|
||||
.DA #0 BUSID
|
||||
.DA #DEVID.SYS
|
||||
.DA DRV.SYS
|
||||
.DA 0 ROMPTR
|
||||
.AZ "SYS" NAME
|
||||
.HS 00000000
|
||||
*--------------------------------------
|
||||
FD.BDEV .DA #S.FD.T.BDEV
|
||||
.DA #0 HANDLER
|
||||
.DA #0 BUSID
|
||||
.DA #0 DEVID
|
||||
.BS 2 DRVPTR
|
||||
.BS 2 ROMPTR
|
||||
.AZ "S1D1" NAME
|
||||
.HS 000000
|
||||
*--------------------------------------
|
||||
SmartPort.OFS .HS 010305
|
||||
SmartPort.SIG .HS 200003
|
||||
*--------------------------------------
|
||||
SP.DEV.STATUS .DA #3
|
||||
SP.DEV.STATUS.DEVID
|
||||
.BS 1
|
||||
.DA SP.DEV.STATUS.DATA
|
||||
.DA S.IOCTL.STATCODE.GETDIB
|
||||
SP.DEV.STATUS.DATA
|
||||
.BS S.DSTAT
|
||||
*--------------------------------------
|
||||
EvtMgrInit >LDYAI MSG.EVT
|
||||
>SYSCALL printf
|
||||
lda #$A5
|
||||
@ -1060,7 +967,67 @@ TskMgrInit >LDYAI MSG.TSK
|
||||
>SYSCALL PutEnv
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
MSG.Init2 .AZ "A2osX[Stage2]:Init\nInstalling KERNEL...\n"
|
||||
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
|
||||
*--------------------------------------
|
||||
Kernel.ZP .PH $B1
|
||||
CHARGET inc TXTPTR
|
||||
bne CHARGOT
|
||||
inc TXTPTR+1
|
||||
|
||||
CHARGOT lda $ffff
|
||||
beq IsDigit.9
|
||||
|
||||
IsDigit cmp #'0'
|
||||
bcc IsDigit.9
|
||||
cmp #'9'+1
|
||||
rts
|
||||
|
||||
IsDigit.9 sec
|
||||
rts
|
||||
.EP
|
||||
Kernel.ZP.S .EQ *-Kernel.ZP
|
||||
*--------------------------------------
|
||||
Z80Code.Start .HS 31FF00 START: LD SP,000FFH Init Stack
|
||||
.HS 3EFF LD A,0FFH Set Flag
|
||||
.HS 320D00 LD (FLAG),A
|
||||
.HS 3200E1 LD (0E100H),A Back to 6502
|
||||
.HS 18F3 JR START Loop
|
||||
.HS 00 FLAG: .DB 0
|
||||
Z80Code.Size .EQ *-Z80Code.Start
|
||||
*--------------------------------------
|
||||
Mouse.OFS .HS 05070B0CFB
|
||||
Mouse.SIG .HS 38180120D6
|
||||
*--------------------------------------
|
||||
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"
|
||||
@ -1106,7 +1073,7 @@ MSG.KCREAD .AZ "Reading Kernel Config File..."
|
||||
MSG.KCREAD.OK .AZ "OK\n"
|
||||
MSG.KCREAD.KO .AZ "\nError While Reading Kernel Config File, Using Default.\n"
|
||||
*--------------------------------------
|
||||
DEV.SYS .AZ "SYS"
|
||||
DEV.SYS .AZ "/DEV/SYS"
|
||||
I.ENV.A2osX .AZ "A2OSX"
|
||||
I.ENV.PATH .AZ "PATH=${A2OSX}SBIN/;${A2OSX}BIN/"
|
||||
I.ENV.LIB .AZ "LIB=${A2OSX}LIB/"
|
||||
@ -1128,6 +1095,44 @@ MLIREAD00 .DA #4
|
||||
MLICLOSE00 .DA #1
|
||||
.BS 1
|
||||
*--------------------------------------
|
||||
FD.NULL .DA #S.FD.T.CDEV
|
||||
.DA #0 HANDLER
|
||||
.DA #0 BUSID
|
||||
.DA #DEVID.NULL
|
||||
.DA DRV.NULL
|
||||
.DA 0 ROMPTR
|
||||
.AZ "NULL" NAME
|
||||
.HS 000000
|
||||
*--------------------------------------
|
||||
FD.SYS .DA #S.FD.T.CDEV
|
||||
.DA #0 HANDLER
|
||||
.DA #0 BUSID
|
||||
.DA #DEVID.SYS
|
||||
.DA DRV.SYS
|
||||
.DA 0 ROMPTR
|
||||
.AZ "SYS" NAME
|
||||
.HS 00000000
|
||||
*--------------------------------------
|
||||
FD.BDEV .DA #S.FD.T.BDEV
|
||||
.DA #0 HANDLER
|
||||
.DA #0 BUSID
|
||||
.DA #0 DEVID
|
||||
.BS 2 DRVPTR
|
||||
.BS 2 ROMPTR
|
||||
.AZ "S1D1" NAME
|
||||
.HS 000000
|
||||
*--------------------------------------
|
||||
SmartPort.OFS .HS 010305
|
||||
SmartPort.SIG .HS 200003
|
||||
*--------------------------------------
|
||||
SP.DEV.STATUS .DA #3
|
||||
SP.DEV.STATUS.DEVID
|
||||
.BS 1
|
||||
.DA SP.DEV.STATUS.DATA
|
||||
.DA S.IOCTL.STATCODE.GETDIB
|
||||
SP.DEV.STATUS.DATA
|
||||
.BS S.DSTAT
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE /A2OSX.SRC/SYS/KERNEL.S.INIT
|
||||
LOAD /A2OSX.SRC/SYS/KERNEL.S
|
||||
|
@ -1,25 +1,89 @@
|
||||
NEW
|
||||
PREFIX /A2OSX.BUILD
|
||||
AUTO 4,1
|
||||
*--------------------------------------
|
||||
* int open(const char *pathname, int flags);
|
||||
*--------------------------------------
|
||||
IO.OPEN jsr IO.SELECT
|
||||
*/--------------------------------------
|
||||
* # open
|
||||
* ## C
|
||||
* `int open(const char *pathname, int flags);`
|
||||
* ## ASM
|
||||
* **In:**
|
||||
* `>PUSHB flags`
|
||||
* `>LDYA pathname`
|
||||
* `>SYSCALL open`
|
||||
* **Out:**
|
||||
* A = hFD
|
||||
* note : if file is created on ProDOS : T=TXT,X=$0000
|
||||
*\--------------------------------------
|
||||
K.Open jsr PFT.CheckPathYA check if not /mnt
|
||||
|
||||
K.Open.I jsr IO.SetMLIPathYA local pathname...
|
||||
|
||||
ldx #5 /DEV/
|
||||
cpx K.MLI.PATH
|
||||
bcc K.Open.REG
|
||||
|
||||
.1 lda K.MLI.PATH,x
|
||||
cmp IO.DEVDIR,x
|
||||
bne K.Open.REG
|
||||
dex
|
||||
bne .1
|
||||
|
||||
K.Open.DEV ldy #K.MLI.PATH+5 skip /DEV/
|
||||
lda /K.MLI.PATH+5
|
||||
|
||||
jsr K.GetDevByName
|
||||
bcs .9
|
||||
|
||||
>STYA pFD
|
||||
|
||||
|
||||
.9 >RET 1
|
||||
|
||||
K.Open.REG >LDYAI K.MLI.PATH
|
||||
>STYA K.MLI.PARAMS+1
|
||||
|
||||
|
||||
sta K.S.IOCTL
|
||||
*--------------------------------------
|
||||
* int close(int fd);
|
||||
*--------------------------------------
|
||||
IO.CLOSE
|
||||
K.Close jsr K.GetMemPtr
|
||||
>STYA pFD
|
||||
|
||||
lda (pFD) #S.FD.T
|
||||
tax
|
||||
jmp (.1,x)
|
||||
|
||||
.1 .DA IO.CLOSE.REG
|
||||
.DA STDIO.IOERR DIR
|
||||
.DA IO.CLOSE.CDEV
|
||||
.DA STDIO.IOERR BDEV
|
||||
.DA STDIO.IOERR LNK
|
||||
.DA STDIO.IOERR DSOCK
|
||||
.DA IO.CLOSE.SSOCK
|
||||
.DA IO.CLOSE.FIFO
|
||||
*--------------------------------------
|
||||
IO.CLOSE.REG
|
||||
*--------------------------------------
|
||||
IO.CLOSE.CDEV
|
||||
*--------------------------------------
|
||||
IO.CLOSE.SSOCK
|
||||
*--------------------------------------
|
||||
IO.CLOSE.FIFO
|
||||
*--------------------------------------
|
||||
* int read(int fd, void *buf, size_t count);
|
||||
*--------------------------------------
|
||||
IO.READ
|
||||
K.Read
|
||||
*--------------------------------------
|
||||
* int write(int fd, const void *buf, size_t count);
|
||||
*--------------------------------------
|
||||
IO.WRITE lda (pFD) #S.FD.T
|
||||
K.Write jsr K.GetMemPtr
|
||||
>STYA pFD
|
||||
|
||||
lda (pFD) #S.FD.T
|
||||
tax
|
||||
*--------------------------------------
|
||||
jmp (.1,x)
|
||||
|
||||
.1 .DA IO.WRITE.REG
|
||||
.DA STDIO.IOERR DIR
|
||||
.DA IO.WRITE.CDEV
|
||||
@ -90,11 +154,67 @@ IO.WRITE.FIFO ldy #S.FD.FIFO.S
|
||||
.99 lda #MLI.E.EOF
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
*/--------------------------------------
|
||||
* # IOCTL
|
||||
* ## C
|
||||
* `int ioctl(int fd, unsigned long request, void * param );`
|
||||
* ## ASM
|
||||
* **In:**
|
||||
* `PUSHWI param`
|
||||
* `lda #request`
|
||||
* `ldy fd`
|
||||
* `>SYSCALL IOCTL`
|
||||
* **Out:**
|
||||
* Y,A = ...
|
||||
*\--------------------------------------
|
||||
K.IOCTL tax op
|
||||
>PULLB .1+1 param LO
|
||||
>PULLB .2+1 param HI
|
||||
|
||||
tya id
|
||||
|
||||
jsr K.GetDevByID
|
||||
bcs K.IOCTL.9
|
||||
|
||||
>STYA pFD
|
||||
|
||||
.1 ldy #$ff SELF MODIFIED
|
||||
.2 lda #$ff SELF MODIFIED
|
||||
|
||||
jmp (pFD) x = op
|
||||
|
||||
K.IOCTL.9 rts
|
||||
*/--------------------------------------
|
||||
* # pipe
|
||||
* ## C
|
||||
* `int pipe(int pipefd[2]);`
|
||||
* ## ASM
|
||||
* **In:**
|
||||
*\--------------------------------------
|
||||
IO.SELECT jsr K.GetMemPtr
|
||||
>STYA pFD
|
||||
rts
|
||||
*--------------------------------------
|
||||
IO.PullMLIPath >PULLYA
|
||||
IO.SetMLIPathYA >STYA .1+1
|
||||
|
||||
ldx #0
|
||||
|
||||
.1 lda $ffff,x Self Modified
|
||||
beq .8
|
||||
inx
|
||||
sta K.MLI.PATH,x
|
||||
cpx #MLI.MAXPATH
|
||||
bne .1
|
||||
|
||||
.8 stx K.MLI.PATH
|
||||
inx
|
||||
stz K.MLI.PATH,x
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
IO.DEVDIR >PSTR "/DEV/"
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE /A2OSX.SRC/SYS/KERNEL.S.IO
|
||||
LOAD /A2OSX.SRC/SYS/KERNEL.S
|
||||
|
@ -35,7 +35,7 @@ K.IrqHAuxLC cld
|
||||
|
||||
lda RDREADAUX
|
||||
pha
|
||||
sta CLRREADAUX Make sure we can access Dev.Table
|
||||
sta CLRREADAUX Make sure we can access FD.Table
|
||||
|
||||
lda RDWRITEAUX
|
||||
pha
|
||||
@ -190,13 +190,13 @@ K.IrqH.Switch inc IRQ.Tick
|
||||
*--------------------------------------
|
||||
K.IrqH.DEV ldx #0
|
||||
|
||||
.1 lda Dev.Table.F,x
|
||||
.1 lda FD.Table.F,x
|
||||
and #S.DSTAT.S.IRQ
|
||||
beq .2
|
||||
|
||||
lda Dev.Table.PTRLO,x
|
||||
lda FD.Table.PTRLO,x
|
||||
sta $fe
|
||||
lda Dev.Table.PTRHI,x
|
||||
lda FD.Table.PTRHI,x
|
||||
sta $ff
|
||||
|
||||
ldy #S.FD.DEV.DRVPTR
|
||||
|
@ -18,11 +18,11 @@ K.SYSCALL.JMP .DA 0 $00
|
||||
.DA K.OpenDir $10
|
||||
.DA K.ReadDir
|
||||
.DA K.CloseDir
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA K.Open
|
||||
.DA K.Close
|
||||
.DA K.Read
|
||||
.DA K.Write
|
||||
.DA K.IOCTL
|
||||
|
||||
.DA K.FPutC $20
|
||||
.DA K.PutChar
|
||||
|
@ -127,7 +127,7 @@ K.MkNod jsr K.GetDevByName Y,A=NAME
|
||||
stx .2+1
|
||||
|
||||
ldy #S.FD.T
|
||||
lda (pDev),y
|
||||
lda (pFD),y
|
||||
cmp #S.FD.T.CDEV
|
||||
bne .99
|
||||
|
||||
|
@ -40,7 +40,7 @@ K.PutChar.X >LDYAI K.IOBuf
|
||||
>STYA K.S.IOCTL+S.IOCTL.BUFPTR
|
||||
stx K.S.IOCTL+S.IOCTL.BYTECNT
|
||||
stz K.S.IOCTL+S.IOCTL.BYTECNT+1
|
||||
jmp IO.WRITE
|
||||
jmp K.WRITE
|
||||
*/--------------------------------------
|
||||
* # PutS
|
||||
* Write Str to StdOut, appends '\r\n'
|
||||
@ -98,7 +98,7 @@ K.FPutS.I jsr IO.SELECT
|
||||
|
||||
.2 sty K.S.IOCTL+S.IOCTL.BYTECNT
|
||||
stx K.S.IOCTL+S.IOCTL.BYTECNT+1
|
||||
jmp IO.WRITE
|
||||
jmp K.WRITE
|
||||
*/--------------------------------------
|
||||
* # PrintF/SPrintF/FPrintF
|
||||
* Prints C-Style String
|
||||
@ -594,10 +594,10 @@ K.GetChar ldy #S.PS.hStdIn
|
||||
* A = char
|
||||
*\--------------------------------------
|
||||
K.GetC jsr K.GetMemPtr
|
||||
>STYA pDev
|
||||
>STYA pFD
|
||||
|
||||
ldy #S.FD.T
|
||||
lda (pDev),y
|
||||
lda (pFD),y
|
||||
asl
|
||||
tax
|
||||
jmp (.1,x)
|
||||
@ -614,7 +614,7 @@ K.GetC jsr K.GetMemPtr
|
||||
K.GetC.REG >PUSHWI K.IOBuf
|
||||
>PUSHWI 1
|
||||
ldy #S.FD.REG.REF
|
||||
>PUSHB (pDev),y
|
||||
>PUSHB (pFD),y
|
||||
|
||||
jsr K.FRead
|
||||
bcs .9
|
||||
@ -623,23 +623,23 @@ K.GetC.REG >PUSHWI K.IOBuf
|
||||
*--------------------------------------
|
||||
K.GetC.CDEV ldx #IOCTL.READ
|
||||
ldy #S.FD.DEV.DRVPTR
|
||||
lda (pDev),y
|
||||
lda (pFD),y
|
||||
sta .1+1
|
||||
iny
|
||||
lda (pDev),y
|
||||
lda (pFD),y
|
||||
sta .1+2
|
||||
.1 jmp $ffff
|
||||
*--------------------------------------
|
||||
K.GetC.SSOCK lda (pDev) #S.FD.HANDLER
|
||||
K.GetC.SSOCK lda (pFD) #S.FD.HANDLER
|
||||
* jsr K.GetMemPtr
|
||||
* >STYA .1+1
|
||||
|
||||
* ldy #S.FD.SSOCK.READ
|
||||
* lda (pDev),y
|
||||
* lda (pFD),y
|
||||
* tax Function Offset for READ
|
||||
|
||||
* ldy #S.FD.SSOCK.HSKT
|
||||
* lda (pDev),y
|
||||
* lda (pFD),y
|
||||
|
||||
*.1 jmp $ffff
|
||||
*--------------------------------------
|
||||
@ -803,6 +803,15 @@ K.SScanF.GetVAL tya Y=char count parsed
|
||||
* + SYS.FOpen.A : Append
|
||||
* + SYS.FOpen.T : Open/Append in Text mode
|
||||
* + SYS.FOpen.X : Create if not exists
|
||||
* http://man7.org/linux/man-pages/man3/fopen.3.html
|
||||
* r = O_RDONLY
|
||||
* w = O_WRONLY | O_CREAT | O_TRUNC
|
||||
* a = O_WRONLY | O_CREAT | O_APPEND
|
||||
* r+ = O_RDWR
|
||||
* w+ = O_RDWR | O_CREAT | O_TRUNC
|
||||
* a+ = O_RDWR | O_CREAT | O_APPEND
|
||||
*
|
||||
* TODO: mode="w+t=TYP,x=AUXTYPE"
|
||||
* `>LDYAI filename`
|
||||
* **Out:**
|
||||
* CC : A = hFILE
|
||||
|
@ -5,6 +5,7 @@ AUTO 4,1
|
||||
*--------------------------------------
|
||||
PrintFAX sta PrintFAX.Next+1
|
||||
stx PrintFAX.Next+2
|
||||
|
||||
pla
|
||||
sta PrintFAX.99+1
|
||||
pla
|
||||
|
Loading…
x
Reference in New Issue
Block a user