mirror of
https://github.com/A2osX/A2osX.git
synced 2024-10-09 14:55:05 +00:00
Kernel 0.9.2
This commit is contained in:
parent
4294752153
commit
ad49295e8f
@ -41,7 +41,7 @@ Dev.Detect >LDYA L.MSG.DETECT
|
|||||||
>SYSCALL InsDrv
|
>SYSCALL InsDrv
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>STYA DEV.NODE+S.NODE.DEV.DRVPTR
|
>STYA DEV.NODE+S.FD.DEV.DRVPTR
|
||||||
|
|
||||||
>LDYA L.NODE
|
>LDYA L.NODE
|
||||||
>SYSCALL MKNOD
|
>SYSCALL MKNOD
|
||||||
@ -50,7 +50,7 @@ Dev.Detect >LDYA L.MSG.DETECT
|
|||||||
CS.END
|
CS.END
|
||||||
MSG.DETECT .AZ "Apple IIe/IIc 80 Col Driver.\r\n"
|
MSG.DETECT .AZ "Apple IIe/IIc 80 Col Driver.\r\n"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
NODE .DA #S.NODE.T.CDEV
|
NODE .DA #S.FD.T.CDEV
|
||||||
.DA #0 HANDLER
|
.DA #0 HANDLER
|
||||||
.DA #0 BUSID
|
.DA #0 BUSID
|
||||||
.DA #0 DEVID
|
.DA #0 DEVID
|
||||||
|
@ -282,7 +282,7 @@ S.MSTAT .EQ 24
|
|||||||
C.EOF .EQ 4
|
C.EOF .EQ 4
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DEVID.NULL .EQ 0
|
DEVID.NULL .EQ 0
|
||||||
DEVID.SYS .EQ 2
|
DEVID.SYS .EQ 1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IOCTL.STATUS .EQ 0 X,Y = byte count returned
|
IOCTL.STATUS .EQ 0 X,Y = byte count returned
|
||||||
IOCTL.READBLOCK .EQ 2
|
IOCTL.READBLOCK .EQ 2
|
||||||
@ -359,59 +359,59 @@ S.DSTAT.VERSION .EQ 23
|
|||||||
*
|
*
|
||||||
S.DSTAT .EQ 25
|
S.DSTAT .EQ 25
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* S.NODE
|
* S.FD
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.NODE.T .EQ 0
|
S.FD.T .EQ 0
|
||||||
S.NODE.T.REG .EQ 0
|
S.FD.T.REG .EQ 0
|
||||||
S.NODE.T.DIR .EQ 2
|
S.FD.T.DIR .EQ 2
|
||||||
S.NODE.T.CDEV .EQ 4
|
S.FD.T.CDEV .EQ 4
|
||||||
S.NODE.T.BDEV .EQ 6
|
S.FD.T.BDEV .EQ 6
|
||||||
S.NODE.T.LNK .EQ 8
|
S.FD.T.LNK .EQ 8
|
||||||
S.NODE.T.DSOCK .EQ 10
|
S.FD.T.DSOCK .EQ 10
|
||||||
S.NODE.T.SSOCK .EQ 12
|
S.FD.T.SSOCK .EQ 12
|
||||||
S.NODE.T.FIFO .EQ 14
|
S.FD.T.FIFO .EQ 14
|
||||||
S.NODE.HANDLER .EQ 1 0=KRNL,!0=hLIB (LIBNFS,LIBTCPIP.....)
|
S.FD.HANDLER .EQ 1 0=KRNL,!0=hLIB (LIBNFS,LIBTCPIP.....)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.NODE.REG.REF .EQ 2
|
S.FD.REG.REF .EQ 2
|
||||||
S.NODE.REG.IOBUF .EQ 3
|
S.FD.REG.IOBUF .EQ 3
|
||||||
*
|
*
|
||||||
S.NODE.REG .EQ 4
|
S.FD.REG .EQ 4
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.NODE.DIR.REF .EQ 2
|
S.FD.DIR.REF .EQ 2
|
||||||
S.NODE.DIR.IOBUF .EQ 3
|
S.FD.DIR.IOBUF .EQ 3
|
||||||
S.NODE.DIR.EL .EQ 4
|
S.FD.DIR.EL .EQ 4
|
||||||
S.NODE.DIR.EPB .EQ 5
|
S.FD.DIR.EPB .EQ 5
|
||||||
S.NODE.DIR.FC .EQ 6 word
|
S.FD.DIR.FC .EQ 6 word
|
||||||
*
|
*
|
||||||
S.NODE.DIR .EQ 8
|
S.FD.DIR .EQ 8
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.NODE.DEV.BUSID .EQ 2
|
S.FD.DEV.BUSID .EQ 2
|
||||||
S.NODE.DEV.DEVID .EQ 3
|
S.FD.DEV.DEVID .EQ 3
|
||||||
S.NODE.DEV.BUSPTR .EQ 4 word
|
S.FD.DEV.BUSPTR .EQ 4 word
|
||||||
S.NODE.DEV.DRVPTR .EQ 6 word
|
S.FD.DEV.DRVPTR .EQ 6 word
|
||||||
S.NODE.DEV.NAME .EQ 8 C-String
|
S.FD.DEV.NAME .EQ 8 C-String
|
||||||
*
|
*
|
||||||
S.NODE.DEV .EQ 16
|
S.FD.DEV .EQ 16
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* S.NODE.LNK
|
* S.FD.LNK
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.NODE.SSOCK.HSKT .EQ 2
|
S.FD.SSOCK.HSKT .EQ 2
|
||||||
S.NODE.SSOCK.OPEN .EQ 3
|
S.FD.SSOCK.OPEN .EQ 3
|
||||||
S.NODE.SSOCK.CLOSE .EQ 4
|
S.FD.SSOCK.CLOSE .EQ 4
|
||||||
S.NODE.SSOCK.READ .EQ 5
|
S.FD.SSOCK.READ .EQ 5
|
||||||
S.NODE.SSOCK.WRITE .EQ 6
|
S.FD.SSOCK.WRITE .EQ 6
|
||||||
S.NODE.SSOCK.STATUS .EQ 7
|
S.FD.SSOCK.STATUS .EQ 7
|
||||||
*
|
*
|
||||||
S.NODE.SSOCK .EQ 8
|
S.FD.SSOCK .EQ 8
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.NODE.FIFO.S .EQ 2
|
S.FD.FIFO.S .EQ 2
|
||||||
S.NODE.FIFO.S.Opened .EQ 1
|
S.FD.FIFO.S.Opened .EQ 1
|
||||||
S.NODE.FIFO.S.Closed .EQ 2
|
S.FD.FIFO.S.Closed .EQ 2
|
||||||
S.NODE.FIFO.hMem .EQ 3
|
S.FD.FIFO.hMem .EQ 3
|
||||||
S.NODE.FIFO.Tail .EQ 4
|
S.FD.FIFO.Tail .EQ 4
|
||||||
S.NODE.FIFO.Head .EQ 5
|
S.FD.FIFO.Head .EQ 5
|
||||||
*
|
*
|
||||||
S.NODE.FIFO .EQ 6
|
S.FD.FIFO .EQ 6
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* PS STRUCT
|
* PS STRUCT
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -21,7 +21,7 @@ ZPPtr4 .EQ ZPKERNEL+6
|
|||||||
|
|
||||||
pIOCTL .EQ ZPKERNEL+8
|
pIOCTL .EQ ZPKERNEL+8
|
||||||
pDev .EQ ZPKERNEL+10
|
pDev .EQ ZPKERNEL+10
|
||||||
pNode .EQ ZPKERNEL+12
|
pFD .EQ ZPKERNEL+12
|
||||||
pIOBuf .EQ ZPKERNEL+14
|
pIOBuf .EQ ZPKERNEL+14
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SYS.BASL0 .EQ $800
|
SYS.BASL0 .EQ $800
|
||||||
@ -102,22 +102,25 @@ K.STACKTOP .EQ $03ED XFer !!! down to $3E0
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
*** $3F0-$3FF IRQ Handler.... ***
|
*** $3F0-$3FF IRQ Handler.... ***
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Main/Aux $400 -> $7FF : TXT PAGE1 System Screen
|
* Main/Aux $400 -> $7FF : TXT PAGE1 Console Screen
|
||||||
* Main/Aux $800 -> $BFF : TXT PAGE2 Console Screen
|
* Main/Aux $800 -> $BFF : TXT PAGE2 System Screen
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* free $0C00->$17FF = $C00 (3072) Aux
|
* free $0C00->$17FF = $C00 (3072) Aux
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
K.Buf256 .EQ $0C00 Main
|
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
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PS.Table.PID .EQ $0D00 K.PS.MAX
|
PS.Table.hMem .EQ $0D00 K.PS.MAX
|
||||||
PS.Table.hMem .EQ $0D20 K.PS.MAX
|
PS.Table.PID .EQ $0D20 K.PS.MAX
|
||||||
PS.Table.Stat .EQ $0D40 K.PS.MAX
|
PS.Table.Stat .EQ $0D40 K.PS.MAX
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Evt.Table .EQ $0D60 K.EVT.MAX*S.EVT.SIZE=4*8=32b
|
Evt.Table .EQ $0D60 K.EVT.MAX*S.EVT.SIZE=4*8=32b
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Flt.Table .EQ $0D80 K.FLT.MAX*S.FLT.SIZE=4*32=128b
|
Flt.Table .EQ $0D80 K.FLT.MAX*S.FLT.SIZE=4*32=128b
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Dev.Table .EQ $0E00 K.Dev.MAX*2=32*2=64b
|
K.Buf256 .EQ $0E00
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
K.IOBuf .EQ $0F00
|
K.IOBuf .EQ $0F00
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -301,17 +301,17 @@ SKT.AcceptA jsr SKT.GetA.I
|
|||||||
* A = hFile
|
* A = hFile
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
SKT.MkNodA sta .1+1
|
SKT.MkNodA sta .1+1
|
||||||
>LDYAI S.NODE.SSOCK
|
>LDYAI S.FD.SSOCK
|
||||||
>SYSCALL GetMem0.YA
|
>SYSCALL GetMem0.YA
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>STYA ZPTmpPtr1
|
>STYA ZPTmpPtr1
|
||||||
|
|
||||||
ldy #S.NODE.T
|
ldy #S.FD.T
|
||||||
lda #S.NODE.T.SSOCK
|
lda #S.FD.T.SSOCK
|
||||||
sta (ZPTmpPtr1),y
|
sta (ZPTmpPtr1),y
|
||||||
|
|
||||||
ldy #S.NODE.SSOCK.HSKT
|
ldy #S.FD.SSOCK.HSKT
|
||||||
.1 lda #$ff
|
.1 lda #$ff
|
||||||
|
|
||||||
sta (ZPTmpPtr1),y
|
sta (ZPTmpPtr1),y
|
||||||
@ -325,9 +325,9 @@ SKT.MkNodA sta .1+1
|
|||||||
|
|
||||||
>STYA ZPTmpPtr1
|
>STYA ZPTmpPtr1
|
||||||
|
|
||||||
ldy #S.NODE.SSOCK-1
|
ldy #S.FD.SSOCK-1
|
||||||
|
|
||||||
.2 lda NODE.SSOCK,y
|
.2 lda FD.SSOCK,y
|
||||||
sta (ZPTmpPtr1),y
|
sta (ZPTmpPtr1),y
|
||||||
dey
|
dey
|
||||||
bpl .2
|
bpl .2
|
||||||
|
@ -112,7 +112,7 @@ L.TCP.IN.JMP .DA TCP.IN.JMP.CLOSED
|
|||||||
LIB.LOAD ldx RefCount
|
LIB.LOAD ldx RefCount
|
||||||
bne .8
|
bne .8
|
||||||
|
|
||||||
sta NODE.SSOCK+S.NODE.HANDLER
|
sta FD.SSOCK+S.FD.HANDLER
|
||||||
jsr ARP.CLEAR
|
jsr ARP.CLEAR
|
||||||
jsr DNS.CLEAR
|
jsr DNS.CLEAR
|
||||||
|
|
||||||
@ -292,14 +292,14 @@ bTextMode .BS 1
|
|||||||
HST.SScanF .AZ "%d.%d.%d.%d"
|
HST.SScanF .AZ "%d.%d.%d.%d"
|
||||||
IP.ID .BS 2
|
IP.ID .BS 2
|
||||||
IP.CHECKSUM .BS 4
|
IP.CHECKSUM .BS 4
|
||||||
NODE.SSOCK .BS 1 S.NODE.HANDLER
|
FD.SSOCK .BS 1 S.FD.HANDLER
|
||||||
.DA #S.NODE.T.SSOCK
|
.DA #S.FD.T.SSOCK
|
||||||
.BS 1 S.NODE.SSOCK.HSKT
|
.BS 1 S.FD.SSOCK.HSKT
|
||||||
.DA #0 S.NODE.SSOCK.OPEN
|
.DA #0 S.FD.SSOCK.OPEN
|
||||||
.DA #0 S.NODE.SSOCK.CLOSE
|
.DA #0 S.FD.SSOCK.CLOSE
|
||||||
.DA #0
|
.DA #0
|
||||||
.DA #0
|
.DA #0
|
||||||
.DA #0 S.NODE.SSOCK.STATUS
|
.DA #0 S.FD.SSOCK.STATUS
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE /A2OSX.SRC/LIB/LIBTCPIP.S
|
SAVE /A2OSX.SRC/LIB/LIBTCPIP.S
|
||||||
|
@ -14,8 +14,8 @@ K.GetDevByID cmp DevMgr.DevCnt
|
|||||||
|
|
||||||
tax
|
tax
|
||||||
|
|
||||||
lda Dev.Table,x
|
ldy Dev.Table.PTRLO,x
|
||||||
jmp K.GetMemPtr
|
lda Dev.Table.PTRHI,x
|
||||||
|
|
||||||
* clc
|
* clc
|
||||||
|
|
||||||
@ -33,14 +33,14 @@ K.GetDevByName >STYA ZPPtr1
|
|||||||
|
|
||||||
ldx #0
|
ldx #0
|
||||||
|
|
||||||
ldy Dev.Table,x
|
ldy Dev.Table.PTRLO,x
|
||||||
jsr K.GetMemPtr
|
lda Dev.Table.PTRHI,x
|
||||||
|
|
||||||
>STYA ZPPtr2
|
>STYA ZPPtr2
|
||||||
|
|
||||||
lda (ZPPtr2)
|
lda (ZPPtr2)
|
||||||
clc
|
clc
|
||||||
adc #S.NODE.DEV.NAME
|
adc #S.FD.DEV.NAME
|
||||||
sta ZPPtr3
|
sta ZPPtr3
|
||||||
ldy #1
|
ldy #1
|
||||||
lda (ZPPtr2)
|
lda (ZPPtr2)
|
||||||
@ -78,8 +78,6 @@ K.GetDev.NODEV lda #MLI.E.NODEV
|
|||||||
* **Out:**
|
* **Out:**
|
||||||
* Y,A = S.DSTAT
|
* Y,A = S.DSTAT
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.DevClose ldx #IOCTL.CLOSE
|
|
||||||
.HS 2C BIT ABS
|
|
||||||
K.GetDevStatus ldx #IOCTL.STATUS
|
K.GetDevStatus ldx #IOCTL.STATUS
|
||||||
jsr K.GetDevByID
|
jsr K.GetDevByID
|
||||||
bcs K.IOCTL.9
|
bcs K.IOCTL.9
|
||||||
@ -90,12 +88,12 @@ K.GetDevStatus ldx #IOCTL.STATUS
|
|||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # IOCTL
|
* # IOCTL
|
||||||
* ## C
|
* ## C
|
||||||
* `int ioctl ( short int id, short int op, void *param);`
|
* `int ioctl(int fd, unsigned long request, ...);`
|
||||||
* ## ASM
|
* ## ASM
|
||||||
* **In:**
|
* **In:**
|
||||||
* `PUSHWI param`
|
* `PUSHWI param`
|
||||||
* `lda #op`
|
* `lda #request`
|
||||||
* `ldy id`
|
* `ldy fd`
|
||||||
* `>SYSCALL IOCTL`
|
* `>SYSCALL IOCTL`
|
||||||
* **Out:**
|
* **Out:**
|
||||||
* Y,A = ...
|
* Y,A = ...
|
||||||
|
@ -15,15 +15,15 @@ K.OpenDir jsr PFT.CheckPathYA
|
|||||||
>STYA ZPPtr2
|
>STYA ZPPtr2
|
||||||
jsr STDIO.SetMLIPathYA For GETFILEINFO,MLIOPEN
|
jsr STDIO.SetMLIPathYA For GETFILEINFO,MLIOPEN
|
||||||
|
|
||||||
>LDYAI S.NODE.DIR
|
>LDYAI S.FD.DIR
|
||||||
jsr K.GetMem0
|
jsr K.GetMem0
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
stx .8+1
|
stx .8+1
|
||||||
|
|
||||||
ldy #S.NODE.T Done by GetMem0
|
ldy #S.FD.T Done by GetMem0
|
||||||
lda #S.NODE.T.DIR
|
lda #S.FD.T.DIR
|
||||||
sta (ZPPtr1),y
|
sta (ZPPtr1),y
|
||||||
|
|
||||||
ldy #1
|
ldy #1
|
||||||
@ -44,7 +44,7 @@ K.OpenDir jsr PFT.CheckPathYA
|
|||||||
bcs .98
|
bcs .98
|
||||||
|
|
||||||
lda K.MLI.PARAMS+5 get ref_num
|
lda K.MLI.PARAMS+5 get ref_num
|
||||||
ldy #S.NODE.DIR.REF
|
ldy #S.FD.DIR.REF
|
||||||
sta (ZPPtr1),y
|
sta (ZPPtr1),y
|
||||||
|
|
||||||
.8 lda #$ff Self Modified
|
.8 lda #$ff Self Modified
|
||||||
@ -83,7 +83,7 @@ K.ReadDir jsr PFT.CheckNodeA
|
|||||||
jsr K.GetMemPtr
|
jsr K.GetMemPtr
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
|
|
||||||
ldy #S.NODE.DIR.REF
|
ldy #S.FD.DIR.REF
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr1),y
|
||||||
beq K.ReadDir.ROOT
|
beq K.ReadDir.ROOT
|
||||||
jmp K.ReadDir.DIR
|
jmp K.ReadDir.DIR
|
||||||
@ -94,7 +94,7 @@ K.ReadDir.NoMore
|
|||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
K.ReadDir.ROOT
|
K.ReadDir.ROOT
|
||||||
ldy #S.NODE.DIR.FC did we already returned something ?
|
ldy #S.FD.DIR.FC did we already returned something ?
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr1),y
|
||||||
bne K.ReadDir.NoMore
|
bne K.ReadDir.NoMore
|
||||||
|
|
||||||
@ -207,7 +207,7 @@ K.ReadDir.ROOT
|
|||||||
* lda #0 done by S.MEM.F.INIT0
|
* lda #0 done by S.MEM.F.INIT0
|
||||||
* sta (ZPPtr4) Ending 0
|
* sta (ZPPtr4) Ending 0
|
||||||
|
|
||||||
.5 ldy #S.NODE.DIR.FC
|
.5 ldy #S.FD.DIR.FC
|
||||||
lda #16
|
lda #16
|
||||||
sta (ZPPtr1),y Flag that we returned somthing for next time
|
sta (ZPPtr1),y Flag that we returned somthing for next time
|
||||||
|
|
||||||
@ -239,7 +239,7 @@ K.ReadDir.DIR sta K.MLI.PARAMS+1 A=#S.DIR.PRODOS.REF
|
|||||||
>MLICALL MLIREAD Read A block from directory
|
>MLICALL MLIREAD Read A block from directory
|
||||||
bcs .98
|
bcs .98
|
||||||
|
|
||||||
ldy #S.NODE.DIR.EL Check if first run....
|
ldy #S.FD.DIR.EL Check if first run....
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr1),y
|
||||||
bne .2 no, we have all we need....
|
bne .2 no, we have all we need....
|
||||||
|
|
||||||
@ -261,7 +261,7 @@ K.ReadDir.DIR sta K.MLI.PARAMS+1 A=#S.DIR.PRODOS.REF
|
|||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
|
|
||||||
.2 ldy #S.NODE.DIR.EL+3
|
.2 ldy #S.FD.DIR.EL+3
|
||||||
ldx #3
|
ldx #3
|
||||||
|
|
||||||
.3 lda (ZPPtr1),y get this session parameters from S.DIR
|
.3 lda (ZPPtr1),y get this session parameters from S.DIR
|
||||||
@ -404,7 +404,7 @@ K.ReadDir.DIR2 jsr K.ReadDir.GetBuf
|
|||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
|
|
||||||
ldx #3
|
ldx #3
|
||||||
ldy #S.NODE.DIR.EL+3
|
ldy #S.FD.DIR.EL+3
|
||||||
|
|
||||||
.81 lda K.ReadDir.EL,x Store back this session prameters to S.DIR
|
.81 lda K.ReadDir.EL,x Store back this session prameters to S.DIR
|
||||||
sta (ZPPtr1),y
|
sta (ZPPtr1),y
|
||||||
|
@ -104,13 +104,13 @@ DRV.BLK txa
|
|||||||
lsr
|
lsr
|
||||||
sta DRV.BLK.PARAMS CMD
|
sta DRV.BLK.PARAMS CMD
|
||||||
|
|
||||||
ldy #S.NODE.DEV.DEVID Drive 1, or 2
|
ldy #S.FD.DEV.DEVID Drive 1, or 2
|
||||||
lda (pDev),y
|
lda (pDev),y
|
||||||
dec O or 1
|
dec O or 1
|
||||||
lsr in Carry
|
lsr in Carry
|
||||||
php
|
php
|
||||||
|
|
||||||
ldy #S.NODE.DEV.BUSID
|
ldy #S.FD.DEV.BUSID
|
||||||
lda (pDev),y
|
lda (pDev),y
|
||||||
asl
|
asl
|
||||||
asl
|
asl
|
||||||
@ -132,12 +132,12 @@ DRV.BLK txa
|
|||||||
dex
|
dex
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
ldy #S.NODE.DEV.BUSPTR
|
ldy #S.FD.DEV.BUSPTR
|
||||||
|
|
||||||
lda (pNode),y
|
lda (pFD),y
|
||||||
sta .3+1
|
sta .3+1
|
||||||
iny
|
iny
|
||||||
lda (pNode),y
|
lda (pFD),y
|
||||||
sta .3+2
|
sta .3+2
|
||||||
|
|
||||||
jsr GO.ProDOS
|
jsr GO.ProDOS
|
||||||
@ -169,11 +169,11 @@ DRV.SmartPort cld
|
|||||||
lda DRV.SmartPort.Cnt,x
|
lda DRV.SmartPort.Cnt,x
|
||||||
sta DRV.SmartPort.Go.Cmd
|
sta DRV.SmartPort.Go.Cmd
|
||||||
|
|
||||||
ldy #S.NODE.DEV.BUSPTR
|
ldy #S.FD.DEV.BUSPTR
|
||||||
lda (pNode),y
|
lda (pFD),y
|
||||||
sta .8+1
|
sta .8+1
|
||||||
iny
|
iny
|
||||||
lda (pNode),y
|
lda (pFD),y
|
||||||
sta .8+2
|
sta .8+2
|
||||||
|
|
||||||
.8 jsr $ffff
|
.8 jsr $ffff
|
||||||
|
@ -2,7 +2,7 @@ NEW
|
|||||||
PREFIX /A2OSX.BUILD
|
PREFIX /A2OSX.BUILD
|
||||||
AUTO 4,1
|
AUTO 4,1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Kernel.Init sei
|
Kernel.Init2 sei
|
||||||
ldx #$FF
|
ldx #$FF
|
||||||
txs
|
txs
|
||||||
sta SETALTZP
|
sta SETALTZP
|
||||||
@ -11,8 +11,8 @@ Kernel.Init sei
|
|||||||
stx A2osX.SaveSX
|
stx A2osX.SaveSX
|
||||||
|
|
||||||
sta CLRALTZP Make sure MAIN ZP is enabled for X.PRINT.F
|
sta CLRALTZP Make sure MAIN ZP is enabled for X.PRINT.F
|
||||||
*--------------------------------------
|
|
||||||
Kernel.Init2 >LDAXI MSG.Init2
|
>LDAXI MSG.Init2
|
||||||
jsr PrintFAX
|
jsr PrintFAX
|
||||||
|
|
||||||
>LDAXI MSG.MAIN
|
>LDAXI MSG.MAIN
|
||||||
@ -23,7 +23,7 @@ Kernel.Init2 >LDAXI MSG.Init2
|
|||||||
>LDYAI CORE.Run
|
>LDYAI CORE.Run
|
||||||
>STYA ZPPtr2
|
>STYA ZPPtr2
|
||||||
>LDYAI A2osX.MAIN.S^$FFFF
|
>LDYAI A2osX.MAIN.S^$FFFF
|
||||||
>STYA ZPPtr3
|
|
||||||
jsr Kernel.Move
|
jsr Kernel.Move
|
||||||
|
|
||||||
>LDAXI MSG.AUX
|
>LDAXI MSG.AUX
|
||||||
@ -48,7 +48,7 @@ Kernel.Init2 >LDAXI MSG.Init2
|
|||||||
>LDYAI A2osX.SYSCALL
|
>LDYAI A2osX.SYSCALL
|
||||||
>STYA ZPPtr2
|
>STYA ZPPtr2
|
||||||
>LDYAI A2osX.GP.S^$FFFF
|
>LDYAI A2osX.GP.S^$FFFF
|
||||||
>STYA ZPPtr3
|
|
||||||
jsr Kernel.Move
|
jsr Kernel.Move
|
||||||
|
|
||||||
sta CLRALTZP
|
sta CLRALTZP
|
||||||
@ -65,7 +65,7 @@ Kernel.Init2 >LDAXI MSG.Init2
|
|||||||
>LDYAI $D000
|
>LDYAI $D000
|
||||||
>STYA ZPPtr2
|
>STYA ZPPtr2
|
||||||
>LDYAI A2osX.D2.S^$FFFF
|
>LDYAI A2osX.D2.S^$FFFF
|
||||||
>STYA ZPPtr3
|
|
||||||
jsr Kernel.Move
|
jsr Kernel.Move
|
||||||
|
|
||||||
sta CLRALTZP
|
sta CLRALTZP
|
||||||
@ -82,7 +82,7 @@ Kernel.Init2 >LDAXI MSG.Init2
|
|||||||
>LDYAI $D000
|
>LDYAI $D000
|
||||||
>STYA ZPPtr2
|
>STYA ZPPtr2
|
||||||
>LDYAI A2osX.D1.S^$FFFF
|
>LDYAI A2osX.D1.S^$FFFF
|
||||||
>STYA ZPPtr3
|
|
||||||
jsr Kernel.Move
|
jsr Kernel.Move
|
||||||
|
|
||||||
sta CLRALTZP
|
sta CLRALTZP
|
||||||
@ -99,7 +99,7 @@ Kernel.Init2 >LDAXI MSG.Init2
|
|||||||
>LDYAI $E000
|
>LDYAI $E000
|
||||||
>STYA ZPPtr2
|
>STYA ZPPtr2
|
||||||
>LDYAI A2osX.E0.S^$FFFF
|
>LDYAI A2osX.E0.S^$FFFF
|
||||||
>STYA ZPPtr3
|
|
||||||
jsr Kernel.Move
|
jsr Kernel.Move
|
||||||
|
|
||||||
sta CLRALTZP Make MAIN ZP is enabled for X.PRINT.F
|
sta CLRALTZP Make MAIN ZP is enabled for X.PRINT.F
|
||||||
@ -136,10 +136,10 @@ Kernel.Init3 sta SETALTZP
|
|||||||
|
|
||||||
jsr MemMgrInit
|
jsr MemMgrInit
|
||||||
|
|
||||||
>LDYAI NODE.NULL
|
>LDYAI FD.NULL
|
||||||
jsr DevMgrInit.AddCDev
|
jsr DevMgrInit.AddCDev
|
||||||
|
|
||||||
>LDYAI NODE.SYS
|
>LDYAI FD.SYS
|
||||||
jsr DevMgrInit.AddCDev
|
jsr DevMgrInit.AddCDev
|
||||||
|
|
||||||
jsr PS0Init
|
jsr PS0Init
|
||||||
@ -219,7 +219,10 @@ IsDigit.9 sec
|
|||||||
.EP
|
.EP
|
||||||
Kernel.ZP.S .EQ *-Kernel.ZP
|
Kernel.ZP.S .EQ *-Kernel.ZP
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Kernel.Move ldy #0
|
Kernel.Move >STYA ZPPtr3
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
|
||||||
.1 inc ZPPtr3
|
.1 inc ZPPtr3
|
||||||
bne .2
|
bne .2
|
||||||
inc ZPPtr3+1
|
inc ZPPtr3+1
|
||||||
@ -233,8 +236,41 @@ Kernel.Move ldy #0
|
|||||||
inc ZPPtr1+1
|
inc ZPPtr1+1
|
||||||
inc ZPPtr2+1
|
inc ZPPtr2+1
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
.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
|
||||||
|
*--------------------------------------
|
||||||
CPU.Init >LDAXI MSG.CPU
|
CPU.Init >LDAXI MSG.CPU
|
||||||
jsr PrintFAX
|
jsr PrintFAX
|
||||||
|
|
||||||
@ -399,38 +435,6 @@ 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 31FF00 START: LD SP,000FFH Init Stack
|
Z80Code.Start .HS 31FF00 START: LD SP,000FFH 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
|
||||||
@ -780,13 +784,13 @@ DevMgrInit >LDYAI MSG.DEV
|
|||||||
tax 000DSSS0
|
tax 000DSSS0
|
||||||
lsr 0000DSSS
|
lsr 0000DSSS
|
||||||
and #$7
|
and #$7
|
||||||
sta NODE.BDEV+S.NODE.DEV.BUSID
|
sta FD.BDEV+S.FD.DEV.BUSID
|
||||||
|
|
||||||
lda DEVPTRS,x
|
lda DEVPTRS,x
|
||||||
sta NODE.BDEV+S.NODE.DEV.BUSPTR
|
sta FD.BDEV+S.FD.DEV.BUSPTR
|
||||||
|
|
||||||
lda DEVPTRS+1,x
|
lda DEVPTRS+1,x
|
||||||
sta NODE.BDEV+S.NODE.DEV.BUSPTR+1
|
sta FD.BDEV+S.FD.DEV.BUSPTR+1
|
||||||
|
|
||||||
sta ZPPtr1+1
|
sta ZPPtr1+1
|
||||||
stz ZPPtr1
|
stz ZPPtr1
|
||||||
@ -794,7 +798,7 @@ DevMgrInit >LDYAI MSG.DEV
|
|||||||
plp
|
plp
|
||||||
lda #0
|
lda #0
|
||||||
adc #1 Make DevID 1 or 2
|
adc #1 Make DevID 1 or 2
|
||||||
sta NODE.BDEV+S.NODE.DEV.DEVID
|
sta FD.BDEV+S.FD.DEV.DEVID
|
||||||
|
|
||||||
lda ZPPtr1+1
|
lda ZPPtr1+1
|
||||||
|
|
||||||
@ -832,11 +836,11 @@ DevMgrInit >LDYAI MSG.DEV
|
|||||||
|
|
||||||
lda ZPPtr1 get $Cn
|
lda ZPPtr1 get $Cn
|
||||||
and #$f get $0n
|
and #$f get $0n
|
||||||
cmp NODE.BDEV+S.NODE.DEV.DEVID same as SSS ?
|
cmp FD.BDEV+S.FD.DEV.DEVID same as SSS ?
|
||||||
beq .51
|
beq .51
|
||||||
|
|
||||||
inc NODE.BDEV+S.NODE.DEV.DEVID Remapped SP devices....
|
inc FD.BDEV+S.FD.DEV.DEVID Remapped SP devices....
|
||||||
inc NODE.BDEV+S.NODE.DEV.DEVID Add 2 to DEVID (2 & 3)
|
inc FD.BDEV+S.FD.DEV.DEVID Add 2 to DEVID (2 & 3)
|
||||||
|
|
||||||
.51 jsr DevMgrInit.SP
|
.51 jsr DevMgrInit.SP
|
||||||
lda #A2osX.S.SP
|
lda #A2osX.S.SP
|
||||||
@ -845,7 +849,7 @@ DevMgrInit >LDYAI MSG.DEV
|
|||||||
.6 jsr DevMgrInit.BLK
|
.6 jsr DevMgrInit.BLK
|
||||||
lda #A2osX.S.BLK
|
lda #A2osX.S.BLK
|
||||||
|
|
||||||
.7 ldx NODE.BDEV+S.NODE.DEV.DEVID
|
.7 ldx FD.BDEV+S.FD.DEV.DEVID
|
||||||
sta A2osX.S,x
|
sta A2osX.S,x
|
||||||
|
|
||||||
.8 dec DevMgrInit.DEVCNT
|
.8 dec DevMgrInit.DEVCNT
|
||||||
@ -868,7 +872,7 @@ DevMgrInit.USR >LDYAI DRV.BlkDevice
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DevMgrInit.BLK ldy #$ff
|
DevMgrInit.BLK ldy #$ff
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr1),y
|
||||||
sta NODE.BDEV+S.NODE.DEV.BUSPTR
|
sta FD.BDEV+S.FD.DEV.BUSPTR
|
||||||
|
|
||||||
>LDYAI DRV.BlkDevice
|
>LDYAI DRV.BlkDevice
|
||||||
jmp DevMgrInit.AddBDev
|
jmp DevMgrInit.AddBDev
|
||||||
@ -878,11 +882,11 @@ DevMgrInit.SP ldy #$ff
|
|||||||
clc
|
clc
|
||||||
adc #3 Compute smartport entry point
|
adc #3 Compute smartport entry point
|
||||||
sta .1+1
|
sta .1+1
|
||||||
sta NODE.BDEV+S.NODE.DEV.BUSPTR
|
sta FD.BDEV+S.FD.DEV.BUSPTR
|
||||||
lda ZPPtr1+1
|
lda ZPPtr1+1
|
||||||
sta .1+2
|
sta .1+2
|
||||||
|
|
||||||
lda NODE.BDEV+S.NODE.DEV.DEVID
|
lda FD.BDEV+S.FD.DEV.DEVID
|
||||||
sta SP.DEV.STATUS.DEVID
|
sta SP.DEV.STATUS.DEVID
|
||||||
|
|
||||||
.1 jsr $ffff Self Modified
|
.1 jsr $ffff Self Modified
|
||||||
@ -890,43 +894,55 @@ DevMgrInit.SP ldy #$ff
|
|||||||
.DA SP.DEV.STATUS
|
.DA SP.DEV.STATUS
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
ldx SP.DEV.STATUS.DATA+S.DSTAT.S
|
||||||
|
|
||||||
>LDYAI DRV.SmartPort
|
>LDYAI DRV.SmartPort
|
||||||
jsr DevMgrInit.AddBDev
|
jsr DevMgrInit.AddBDev
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DevMgrInit.AddBDev
|
DevMgrInit.AddBDev
|
||||||
>STYA NODE.BDEV+S.NODE.DEV.DRVPTR
|
>STYA FD.BDEV+S.FD.DEV.DRVPTR
|
||||||
|
|
||||||
lda NODE.BDEV+S.NODE.DEV.BUSID
|
lda FD.BDEV+S.FD.DEV.BUSID
|
||||||
ora #$30
|
ora #$30
|
||||||
sta NODE.BDEV+S.NODE.DEV.NAME+1 SnDy
|
sta FD.BDEV+S.FD.DEV.NAME+1 SnDy
|
||||||
|
|
||||||
lda NODE.BDEV+S.NODE.DEV.DEVID
|
lda FD.BDEV+S.FD.DEV.DEVID
|
||||||
ora #$30
|
ora #$30
|
||||||
sta NODE.BDEV+S.NODE.DEV.NAME+3 SxDn
|
sta FD.BDEV+S.FD.DEV.NAME+3 SxDn
|
||||||
|
|
||||||
>LDYAI DEV.BDEV
|
>LDYAI FD.BDEV
|
||||||
|
|
||||||
DevMgrInit.AddCDev
|
DevMgrInit.AddCDev
|
||||||
>STYA .1+1
|
>STYA .1+1
|
||||||
|
stx .10+1
|
||||||
|
|
||||||
|
>LDYAI S.FD.DEV
|
||||||
jsr K.GetMem
|
jsr K.GetMem
|
||||||
>STYA .2+1
|
>STYA .2+1
|
||||||
|
phx
|
||||||
txa
|
|
||||||
|
|
||||||
ldx DevMgr.DevCnt
|
ldx DevMgr.DevCnt
|
||||||
sta Dev.Table,x
|
sta Dev.Table.PTRHI,x
|
||||||
inx
|
tya
|
||||||
stx DevMgr.DevCnt
|
sta Dev.Table.PTRLO,x
|
||||||
|
pla
|
||||||
|
sta Dev.Table.hMem,x
|
||||||
|
.10+1 lda #$ff SELF MODIFIED
|
||||||
|
sta Dev.Table.F,x
|
||||||
|
|
||||||
ldx #S.NODE.DEV-1
|
ldx #S.FD.DEV-1
|
||||||
|
|
||||||
.1 lda $ffff,x SELF MODIFIED
|
.1 lda $ffff,x SELF MODIFIED
|
||||||
.2 sta $ffff,x SELF MODIFIED
|
.2 sta $ffff,x SELF MODIFIED
|
||||||
dex
|
dex
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
|
|
||||||
|
jsr $ffff
|
||||||
|
|
||||||
|
inc DevMgr.DevCnt
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
@ -934,7 +950,7 @@ DevMgrInit.AddCDev
|
|||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DEV.NULL .DA #S.NODE.T.CDEV
|
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
|
||||||
@ -943,7 +959,7 @@ DEV.NULL .DA #S.NODE.T.CDEV
|
|||||||
.AZ "NULL" NAME
|
.AZ "NULL" NAME
|
||||||
.HS 000000
|
.HS 000000
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DEV.SYS .DA #S.NODE.T.CDEV
|
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
|
||||||
@ -952,7 +968,7 @@ DEV.SYS .DA #S.NODE.T.CDEV
|
|||||||
.AZ "SYS" NAME
|
.AZ "SYS" NAME
|
||||||
.HS 00000000
|
.HS 00000000
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DEV.BDEV .DA #S.NODE.T.BDEV
|
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
|
||||||
@ -968,7 +984,7 @@ SP.DEV.STATUS .DA #3
|
|||||||
SP.DEV.STATUS.DEVID
|
SP.DEV.STATUS.DEVID
|
||||||
.BS 1
|
.BS 1
|
||||||
.DA SP.DEV.STATUS.DATA
|
.DA SP.DEV.STATUS.DATA
|
||||||
.DA #3 return DIB
|
.DA S.IOCTL.STATCODE.GETDIB
|
||||||
SP.DEV.STATUS.DATA
|
SP.DEV.STATUS.DATA
|
||||||
.BS S.DSTAT
|
.BS S.DSTAT
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -2,13 +2,21 @@ NEW
|
|||||||
PREFIX /A2OSX.BUILD
|
PREFIX /A2OSX.BUILD
|
||||||
AUTO 4,1
|
AUTO 4,1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO.OPEN
|
* int open(const char *pathname, int flags);
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO.SELECT jsr K.GetMemPtr
|
IO.OPEN jsr IO.SELECT
|
||||||
>STYA pNode
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO.WRITE lda (pNode) #S.NODE.T
|
* int close(int fd);
|
||||||
|
*--------------------------------------
|
||||||
|
IO.CLOSE
|
||||||
|
*--------------------------------------
|
||||||
|
* int read(int fd, void *buf, size_t count);
|
||||||
|
*--------------------------------------
|
||||||
|
IO.READ
|
||||||
|
*--------------------------------------
|
||||||
|
* int write(int fd, const void *buf, size_t count);
|
||||||
|
*--------------------------------------
|
||||||
|
IO.WRITE lda (pFD) #S.FD.T
|
||||||
tax
|
tax
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
jmp (.1,x)
|
jmp (.1,x)
|
||||||
@ -23,54 +31,54 @@ IO.WRITE lda (pNode) #S.NODE.T
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO.WRITE.REG >PUSHW K.S.IOCTL+S.IOCTL.BUFPTR
|
IO.WRITE.REG >PUSHW K.S.IOCTL+S.IOCTL.BUFPTR
|
||||||
>PUSHW K.S.IOCTL+S.IOCTL.BYTECNT
|
>PUSHW K.S.IOCTL+S.IOCTL.BYTECNT
|
||||||
ldy #S.NODE.REG.REF
|
ldy #S.FD.REG.REF
|
||||||
>PUSHB (pNode),y
|
>PUSHB (pFD),y
|
||||||
|
|
||||||
jmp K.FWrite
|
jmp K.FWrite
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO.WRITE.CDEV ldy #S.NODE.DEV.DRVPTR
|
IO.WRITE.CDEV ldy #S.FD.DEV.DRVPTR
|
||||||
lda (pNode),y
|
lda (pFD),y
|
||||||
sta .1+1
|
sta .1+1
|
||||||
iny
|
iny
|
||||||
lda (pNode),y
|
lda (pFD),y
|
||||||
sta .1+2
|
sta .1+2
|
||||||
|
|
||||||
lda K.IOBuf
|
lda K.IOBuf
|
||||||
ldx #IOCTL.WRITE
|
ldx #IOCTL.WRITE
|
||||||
.1 jmp $ffff
|
.1 jmp $ffff
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO.WRITE.SSOCK lda (pNode) #S.NODE.HANDLER
|
IO.WRITE.SSOCK lda (pFD) #S.FD.HANDLER
|
||||||
jsr K.GetMemPtr
|
jsr K.GetMemPtr
|
||||||
>STYA .1
|
>STYA .1
|
||||||
|
|
||||||
ldy #S.NODE.SSOCK.HSKT
|
ldy #S.FD.SSOCK.HSKT
|
||||||
>PUSHB (pNode),y
|
>PUSHB (pFD),y
|
||||||
>PUSHB K.IOBuf
|
>PUSHB K.IOBuf
|
||||||
|
|
||||||
ldy #S.NODE.SSOCK.WRITE
|
ldy #S.FD.SSOCK.WRITE
|
||||||
lda (pNode),y
|
lda (pFD),y
|
||||||
tax Function Offset for write
|
tax Function Offset for write
|
||||||
.1 jmp $ffff
|
.1 jmp $ffff
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO.WRITE.FIFO ldy #S.NODE.FIFO.S
|
IO.WRITE.FIFO ldy #S.FD.FIFO.S
|
||||||
lda (pNode),y
|
lda (pFD),y
|
||||||
beq .9 Remote PS did not opened yet the pipe
|
beq .9 Remote PS did not opened yet the pipe
|
||||||
cmp #S.NODE.FIFO.S.Closed
|
cmp #S.FD.FIFO.S.Closed
|
||||||
beq .99 Remote PS closed the Pipe
|
beq .99 Remote PS closed the Pipe
|
||||||
|
|
||||||
ldy #S.NODE.FIFO.hMem
|
ldy #S.FD.FIFO.hMem
|
||||||
lda (pNode),y
|
lda (pFD),y
|
||||||
jsr K.GetMemPtr
|
jsr K.GetMemPtr
|
||||||
>STYA .1+2
|
>STYA .1+2
|
||||||
|
|
||||||
ldy #S.NODE.FIFO.Head
|
ldy #S.FD.FIFO.Head
|
||||||
lda (pNode),y
|
lda (pFD),y
|
||||||
inc
|
inc
|
||||||
dey #S.NODE.FIFO.Tail
|
dey #S.FD.FIFO.Tail
|
||||||
cmp (pNode),y
|
cmp (pFD),y
|
||||||
beq .9 FIFO is full
|
beq .9 FIFO is full
|
||||||
iny
|
iny
|
||||||
sta (pNode),y
|
sta (pFD),y
|
||||||
tay
|
tay
|
||||||
lda K.IOBuf
|
lda K.IOBuf
|
||||||
.1 sta $ffff,y
|
.1 sta $ffff,y
|
||||||
@ -83,6 +91,10 @@ IO.WRITE.FIFO ldy #S.NODE.FIFO.S
|
|||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
IO.SELECT jsr K.GetMemPtr
|
||||||
|
>STYA pFD
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE /A2OSX.SRC/SYS/KERNEL.S.IO
|
SAVE /A2OSX.SRC/SYS/KERNEL.S.IO
|
||||||
LOAD /A2OSX.SRC/SYS/KERNEL.S
|
LOAD /A2OSX.SRC/SYS/KERNEL.S
|
||||||
|
@ -190,40 +190,31 @@ K.IrqH.Switch inc IRQ.Tick
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
K.IrqH.DEV ldx #0
|
K.IrqH.DEV ldx #0
|
||||||
|
|
||||||
.1 lda Dev.Table+1,x
|
.1 lda Dev.Table.F,x
|
||||||
|
and #S.DSTAT.S.IRQ
|
||||||
beq .2
|
beq .2
|
||||||
|
|
||||||
sta $ff
|
lda Dev.Table.PTRLO,x
|
||||||
lda Dev.Table,x
|
|
||||||
sta $fe
|
sta $fe
|
||||||
|
lda Dev.Table.PTRHI,x
|
||||||
|
sta $ff
|
||||||
|
|
||||||
ldy #S.NODE.DEV.DRVPTR
|
ldy #S.FD.DEV.DRVPTR
|
||||||
lda ($fe),y
|
lda ($fe),y
|
||||||
pha
|
|
||||||
|
|
||||||
|
sta .10+1
|
||||||
iny
|
iny
|
||||||
lda ($fe),y
|
lda ($fe),y
|
||||||
sta $ff
|
|
||||||
pla
|
|
||||||
sta $fe
|
|
||||||
|
|
||||||
ldy #IOCTL.IRQ+4+1
|
|
||||||
lda ($fe),y
|
|
||||||
cmp /A2osX.BADCALL
|
|
||||||
beq .2
|
|
||||||
|
|
||||||
sta .10+2
|
sta .10+2
|
||||||
dey
|
|
||||||
lda ($fe),y
|
|
||||||
sta .10+1
|
|
||||||
|
|
||||||
|
phx
|
||||||
|
ldx #IOCTL.IRQ
|
||||||
.10 jsr $ffff SELF MODIFIED
|
.10 jsr $ffff SELF MODIFIED
|
||||||
|
|
||||||
plx
|
plx
|
||||||
bcc .8 CC, IRQ cleared by device
|
bcc .8 CC, IRQ cleared by device
|
||||||
|
|
||||||
.2 inx
|
.2 inx
|
||||||
inx
|
|
||||||
|
|
||||||
.3 cpx DevMgr.DevCnt
|
.3 cpx DevMgr.DevCnt
|
||||||
bne .1
|
bne .1
|
||||||
|
@ -126,9 +126,9 @@ K.MkNod jsr K.GetDevByName Y,A=NAME
|
|||||||
>STYA .1+1
|
>STYA .1+1
|
||||||
stx .2+1
|
stx .2+1
|
||||||
|
|
||||||
ldy #S.NODE.T
|
ldy #S.FD.T
|
||||||
lda (pDev),y
|
lda (pDev),y
|
||||||
cmp #S.NODE.T.CDEV
|
cmp #S.FD.T.CDEV
|
||||||
bne .99
|
bne .99
|
||||||
|
|
||||||
txa Pass DEV.ID to OPEN
|
txa Pass DEV.ID to OPEN
|
||||||
@ -136,22 +136,22 @@ K.MkNod jsr K.GetDevByName Y,A=NAME
|
|||||||
.1 jsr $FFFF SELF MODIFIED
|
.1 jsr $FFFF SELF MODIFIED
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>LDYAI S.NODE.DEV
|
>LDYAI S.FD.DEV
|
||||||
jsr K.GetMem0
|
jsr K.GetMem0
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>STYA ZPPtr3 Ptr3=S.NODE
|
>STYA ZPPtr3 Ptr3=S.FD
|
||||||
|
|
||||||
ldy #S.NODE.T
|
ldy #S.FD.T
|
||||||
lda #S.NODE.T.CDEV
|
lda #S.FD.T.CDEV
|
||||||
sta (ZPPtr3),y
|
sta (ZPPtr3),y
|
||||||
|
|
||||||
ldy #S.NODE.DEV.DEVID
|
ldy #S.FD.DEV.DEVID
|
||||||
|
|
||||||
.2 lda #$ff Self Modified
|
.2 lda #$ff Self Modified
|
||||||
sta (ZPPtr3),y
|
sta (ZPPtr3),y
|
||||||
|
|
||||||
ldy #S.NODE.DEV.DRVPTR
|
ldy #S.FD.DEV.DRVPTR
|
||||||
lda .1+1
|
lda .1+1
|
||||||
sta (ZPPtr3),y
|
sta (ZPPtr3),y
|
||||||
|
|
||||||
@ -180,18 +180,18 @@ K.MKFIFO >LDYAI 256
|
|||||||
|
|
||||||
stx .1+1 save FIFO buffer
|
stx .1+1 save FIFO buffer
|
||||||
|
|
||||||
>LDYAI S.NODE.FIFO
|
>LDYAI S.FD.FIFO
|
||||||
jsr K.GetMem0
|
jsr K.GetMem0
|
||||||
|
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
|
|
||||||
ldy #S.NODE.T
|
ldy #S.FD.T
|
||||||
lda #S.NODE.T.FIFO
|
lda #S.FD.T.FIFO
|
||||||
sta (ZPPtr1),y
|
sta (ZPPtr1),y
|
||||||
|
|
||||||
iny S.NODE.FIFO.hMem
|
iny S.FD.FIFO.hMem
|
||||||
.1 lda #$ff Self Modified
|
.1 lda #$ff Self Modified
|
||||||
sta (ZPPtr1),y
|
sta (ZPPtr1),y
|
||||||
txa
|
txa
|
||||||
|
@ -596,7 +596,7 @@ K.GetChar ldy #S.PS.hStdIn
|
|||||||
K.GetC jsr K.GetMemPtr
|
K.GetC jsr K.GetMemPtr
|
||||||
>STYA pDev
|
>STYA pDev
|
||||||
|
|
||||||
ldy #S.NODE.T
|
ldy #S.FD.T
|
||||||
lda (pDev),y
|
lda (pDev),y
|
||||||
asl
|
asl
|
||||||
tax
|
tax
|
||||||
@ -613,7 +613,7 @@ K.GetC jsr K.GetMemPtr
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
K.GetC.REG >PUSHWI K.IOBuf
|
K.GetC.REG >PUSHWI K.IOBuf
|
||||||
>PUSHWI 1
|
>PUSHWI 1
|
||||||
ldy #S.NODE.REG.REF
|
ldy #S.FD.REG.REF
|
||||||
>PUSHB (pDev),y
|
>PUSHB (pDev),y
|
||||||
|
|
||||||
jsr K.FRead
|
jsr K.FRead
|
||||||
@ -622,7 +622,7 @@ K.GetC.REG >PUSHWI K.IOBuf
|
|||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
K.GetC.CDEV ldx #IOCTL.READ
|
K.GetC.CDEV ldx #IOCTL.READ
|
||||||
ldy #S.NODE.DEV.DRVPTR
|
ldy #S.FD.DEV.DRVPTR
|
||||||
lda (pDev),y
|
lda (pDev),y
|
||||||
sta .1+1
|
sta .1+1
|
||||||
iny
|
iny
|
||||||
@ -630,15 +630,15 @@ K.GetC.CDEV ldx #IOCTL.READ
|
|||||||
sta .1+2
|
sta .1+2
|
||||||
.1 jmp $ffff
|
.1 jmp $ffff
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
K.GetC.SSOCK lda (pDev) #S.NODE.HANDLER
|
K.GetC.SSOCK lda (pDev) #S.FD.HANDLER
|
||||||
* jsr K.GetMemPtr
|
* jsr K.GetMemPtr
|
||||||
* >STYA .1+1
|
* >STYA .1+1
|
||||||
|
|
||||||
* ldy #S.NODE.SSOCK.READ
|
* ldy #S.FD.SSOCK.READ
|
||||||
* lda (pDev),y
|
* lda (pDev),y
|
||||||
* tax Function Offset for READ
|
* tax Function Offset for READ
|
||||||
|
|
||||||
* ldy #S.NODE.SSOCK.HSKT
|
* ldy #S.FD.SSOCK.HSKT
|
||||||
* lda (pDev),y
|
* lda (pDev),y
|
||||||
|
|
||||||
*.1 jmp $ffff
|
*.1 jmp $ffff
|
||||||
@ -840,15 +840,15 @@ K.FOpen jsr PFT.CheckPathSTK
|
|||||||
bcc K.FOpen.10
|
bcc K.FOpen.10
|
||||||
K.FOpen.9 rts
|
K.FOpen.9 rts
|
||||||
|
|
||||||
K.FOpen.10 >LDYAI S.NODE.REG
|
K.FOpen.10 >LDYAI S.FD.REG
|
||||||
jsr K.GetMem0
|
jsr K.GetMem0
|
||||||
bcs K.FOpen.9
|
bcs K.FOpen.9
|
||||||
|
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
stx .8+1
|
stx .8+1
|
||||||
|
|
||||||
* ldy #S.NODE.T Done by GetMem0
|
* ldy #S.FD.T Done by GetMem0
|
||||||
* lda #S.NODE.T.REG
|
* lda #S.FD.T.REG
|
||||||
* sta (ZPPtr1),y
|
* sta (ZPPtr1),y
|
||||||
|
|
||||||
jsr STDIO.SetIOBUF
|
jsr STDIO.SetIOBUF
|
||||||
@ -858,7 +858,7 @@ K.FOpen.10 >LDYAI S.NODE.REG
|
|||||||
bcs .98
|
bcs .98
|
||||||
|
|
||||||
lda K.MLI.PARAMS+5 get ref_num
|
lda K.MLI.PARAMS+5 get ref_num
|
||||||
ldy #S.NODE.REG.REF
|
ldy #S.FD.REG.REF
|
||||||
sta (ZPPtr1),y
|
sta (ZPPtr1),y
|
||||||
|
|
||||||
sta K.MLI.PARAMS+1 Next MLI Calls are REF_NUM based
|
sta K.MLI.PARAMS+1 Next MLI Calls are REF_NUM based
|
||||||
@ -909,48 +909,34 @@ K.FOpen.AUXTYPE .BS 2
|
|||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # FClose
|
* # FClose
|
||||||
* Close a file
|
* Close a file
|
||||||
|
* ## C
|
||||||
|
* int fclose ( FILE * stream );
|
||||||
|
* ## ASM
|
||||||
* **In:**
|
* **In:**
|
||||||
* A = hFILE
|
* A = hFILE
|
||||||
* **Out:**
|
* **Out:**
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.FClose jsr PFT.CheckNodeA
|
K.FClose jsr PFT.CheckNodeA
|
||||||
sta K.FClose.8+1
|
sta .8+1
|
||||||
|
|
||||||
jsr K.GetMemPtr
|
jsr K.GetMemPtr
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
|
|
||||||
ldy #S.NODE.T
|
ldy #S.FD.REG.REF
|
||||||
lda (ZPPtr1),y
|
|
||||||
asl
|
|
||||||
tax
|
|
||||||
jmp (.1,x)
|
|
||||||
|
|
||||||
.1 .DA K.FClose.REG
|
|
||||||
.DA K.FClose.DIR
|
|
||||||
.DA K.FClose.CDEV
|
|
||||||
|
|
||||||
K.FClose.REG
|
|
||||||
K.FClose.DIR ldy #S.NODE.REG.REF
|
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr1),y
|
||||||
beq .1
|
beq .1
|
||||||
sta K.MLI.PARAMS+1
|
sta K.MLI.PARAMS+1
|
||||||
>MLICALL MLICLOSE
|
>MLICALL MLICLOSE
|
||||||
|
|
||||||
.1 ldy #S.NODE.REG.IOBUF
|
.1 ldy #S.FD.REG.IOBUF
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr1),y
|
||||||
beq K.FClose.8
|
beq .8
|
||||||
|
|
||||||
jsr K.FreeMem
|
jsr K.FreeMem
|
||||||
bra K.FClose.8
|
|
||||||
|
|
||||||
K.FClose.CDEV ldy #S.NODE.DEV.DEVID
|
.8 lda #$ff Self Modified
|
||||||
lda (ZPPtr1),y
|
|
||||||
jsr K.DevClose
|
|
||||||
bcs K.FClose.9
|
|
||||||
|
|
||||||
K.FClose.8 lda #$ff Self Modified
|
|
||||||
jmp K.FreeMem
|
jmp K.FreeMem
|
||||||
K.FClose.9 rts
|
.9 rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # FRead
|
* # FRead
|
||||||
* int fread ( void * ptr, int count, FILE * stream );
|
* int fread ( void * ptr, int count, FILE * stream );
|
||||||
@ -1197,13 +1183,13 @@ STDIO.SetIOBUF >LDYAI 1024 get a ProDOS IOBUF
|
|||||||
|
|
||||||
>STYA K.MLI.PARAMS+3 Save Ptr to IOBUF for MLIOPEN call
|
>STYA K.MLI.PARAMS+3 Save Ptr to IOBUF for MLIOPEN call
|
||||||
txa
|
txa
|
||||||
ldy #S.NODE.REG.IOBUF
|
ldy #S.FD.REG.IOBUF
|
||||||
sta (ZPPtr1),y
|
sta (ZPPtr1),y
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
STDIO.GetRefNum jsr K.GetMemPtr
|
STDIO.GetRefNum jsr K.GetMemPtr
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
ldy #S.NODE.REG.REF
|
ldy #S.FD.REG.REF
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr1),y
|
||||||
sta K.MLI.PARAMS+1
|
sta K.MLI.PARAMS+1
|
||||||
rts
|
rts
|
||||||
|
Loading…
Reference in New Issue
Block a user