A2osX/SYS/KERNEL.S.DEV.txt

187 lines
3.2 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

PR#3
PREFIX /A2OSX.SRC
NEW
INC 1
AUTO 6
.LIST OFF
*/--------------------------------------
* #GetDevByIDA
* ##IN:
* A = DevID
* ##OUT:
* CC = OK, CS = ERROR
* Y,A = DEVSLOT
* note: X Unmodified
*\--------------------------------------
K.GetDevByIDA cmp DevMgr.LastDevID
beq .1
bcs K.GetDevDNF
.1 pha save ID
asl
asl
asl
asl
adc #DevMgr.Table
tay
pla
php
lsr
lsr
lsr
lsr
plp
adc /DevMgr.Table
rts CC
*/--------------------------------------
* #GetDevIDByNameYA
* ##IN:
* Y,A = Ptr to device name (PStr)
* ##OUT:
* CC = OK, CS = ERROR
* X = DEVID
* Y,A = DEVSLOT
*\--------------------------------------
K.GetDevByNameYA
>STYA ZPQuickPtr1
>LDYAI DevMgr.Table+S.DEV.NAME
>STYA ZPQuickPtr2
ldx #0
.1 lda (ZPQuickPtr1)
cmp (ZPQuickPtr2)
bne .3
tay
.2 lda (ZPQuickPtr1),y
cmp (ZPQuickPtr2),y
bne .3
dey
bne .2
lda ZPQuickPtr2
sec
sbc #S.DEV.NAME
tay
lda ZPQuickPtr2+1
sbc /S.DEV.NAME
clc
rts
.3 lda ZPQuickPtr2
clc
adc #S.DEV
sta ZPQuickPtr2
bcc .4
inc ZPQuickPtr2+1
.4 cpx DevMgr.LastDevID
inx
bcc .1
K.GetDevDNF lda #DEVMGR.ERRDNF
rts
*/--------------------------------------
* #GetDevInfoA
* ##IN:
* A = DevID
* ##OUT:
* CC = OK, CS = ERROR
* Y,A = Ptr to S.DEVINFO
*\--------------------------------------
K.GetDevInfoA jsr K.GetDevByIDA
bcs K.GetDevDNF
>STYA ZPQuickPtr1
ldx #DEVMGR.GETINFO
jmp (ZPQuickPtr1)
*/--------------------------------------
* #MkNodYA
* return a S.FILE from a given Device
* ##IN:
* Y,A=DevName
* ##OUT:
* CC = OK, CS = ERROR
* A = hFILE
*\--------------------------------------
K.MkNodYA jsr K.GetDevByNameYA Ptr1=NAME,Ptr2=DEVSLOT
bcs .9
>PUSHWI S.NODE.DEV
>PUSHBI S.MEM.F.INIT0
jsr K.GetMem
bcs .9
>STYA ZPQuickPtr3 Ptr3=S.NODE
ldy #S.DEV.DEVID
lda (ZPQuickPtr2),y
pha
iny #S.DEV.F
lda (ZPQuickPtr2),y
asl CS if Block device
ldy #S.NODE.T
lda #S.NODE.T.CDEV
adc #0 add CS if blok
sta (ZPQuickPtr3),y
iny #S.NODE.DEV.ID
pla
sta (ZPQuickPtr3),y
clc
.9 rts
*/--------------------------------------
* #MKFIFO
* return a S.FILE to a new FIFO
* ##IN:
* ##OUT:
* CC = OK, CS = ERROR
* A = hFILE
*\--------------------------------------
K.MKFIFO >PUSHWI 256
>PUSHBI S.MEM.F.INIT0
jsr K.GetMem
bcs .99
phx save FIFO buffer
>PUSHWI S.NODE.FIFO
>PUSHBI S.MEM.F.INIT0
jsr K.GetMem
bcs .9
>STYA ZPQuickPtr1
ldy #S.NODE.T
lda #S.NODE.T.FIFO
sta (ZPQuickPtr1),y
iny S.NODE.FIFO.hMem
pla
sta (ZPQuickPtr1),y
txa
clc
rts
.9 plx get back FIFO buffer
pha save error code
txa
jsr K.FreeMemA
pla
sec
.99 rts
*--------------------------------------
MAN
SAVE SYS/KERNEL.S.DEV
LOAD SYS/KERNEL.S
ASM