A2osX/SBIN/CIFSD.S.INIT.txt

256 lines
3.9 KiB
Plaintext
Raw Normal View History

2023-01-17 06:31:23 +00:00
NEW
AUTO 3,1
*--------------------------------------
INIT.Setup >LDYAI 512
>SYSCALL GetMem
bcs .9
stx hReq
jsr INIT.Negotiate
bcs .9
jsr INIT.SessionSetup
bcs .9
lda #2
>SYSCALL ArgV
>STYA pPath
jsr INIT.TreeConnect
bcs .9
lda #3
>SYSCALL ArgV
>PUSHYA
>PUSHW L.IO.CallBack
>SYSCALL Mount
bcs .9
sta hMount
* clc
.9 rts
*--------------------------------------
INIT.Negotiate >PUSHB hSocket
>PUSHW L.NETBIOS.H
>PUSHWI SMB.NegReq.end-NETBIOS.H
>LIBCALL hLIBTCPIP,LIBTCPIP.Send
bcs .99
jsr INIT.ReadSocket
bcs .99
jsr CORE.GetRespData
ldy #S.NETBIOS+S.SMB.H.STATUS
lda (ZPRespPtr),y
bne .97
ldy #S.NETBIOS.LEN+2
lda (ZPRespPtr),y
clc
adc #S.NETBIOS
sta ZPPtr1
tay
lda #0
>SYSCALL GetMem
bcs .99
>STYA ZPCtxPtr
stx hSMBContext
ldy ZPPtr1
.4 dey
lda (ZPRespPtr),y
sta (ZPCtxPtr),y
tya
bne .4
ldy #S.NETBIOS+S.SMB.H.FLAGS
sta (ZPCtxPtr),y
jsr CORE.FreeRespData
clc
rts
.97 jsr CORE.FreeRespData
lda #MLI.E.INVPARAM
sec
.99 rts
*--------------------------------------
INIT.SessionSetup
ldx #S.SMB.H.CMD.SESSION.SETUP.ANDX
jsr CORE.ReqSetupX
ldx #0
.2 lda SMB.SessionSetup.H,x
sta (ZPReqPtr),y
iny
inx
cpx #SMB.SessionSetup.H.Len
bne .2
jsr CORE.ReqSetupPtr2
ldy #0
ldx #0
.3 lda SMB.SessionSetup.Guest,x
jsr CORE.PutBytePtr2
iny
inx
cpx #SMB.SessionSetup.Guest.Len
bne .3
ldx #0
.4 lda SMB.SessionSetup.T,x
jsr CORE.PutBytePtr2
iny
inx
cpx #SMB.SessionSetup.T.Len
bne .4
tya
ldy ByteCountOfs
sta (ZPReqPtr),y
jsr CORE.SetReqLen
jsr INIT.WriteSocket
bcs .99
jsr INIT.ReadSocket
bcs .99
jsr CORE.GetRespData
ldy #S.NETBIOS+S.SMB.H.STATUS
lda (ZPRespPtr),y
bne .97
ldy #S.NETBIOS+S.SMB.H.UID
lda (ZPRespPtr),y
sta (ZPCtxPtr),y
iny
lda (ZPRespPtr),y
sta (ZPCtxPtr),y
jsr CORE.FreeRespData
clc
rts
.97 jsr CORE.FreeRespData
.98 lda #MLI.E.LOCKED
sec
.99 rts
*--------------------------------------
INIT.TreeConnect
ldx #S.SMB.H.CMD.TREE.CONNECT.ANDX
jsr CORE.ReqSetupX
ldx #0
.1 lda SMB.TreeConnect.H,x
sta (ZPReqPtr),y
iny
inx
cpx #SMB.TreeConnect.H.Len
bne .1
jsr CORE.ReqSetupPtr2
lda #0
jsr CORE.PutBytePtr2 PASSWORD = "\0"
jsr CORE.AppendPathPtr2
jsr CORE.AddYReqLenPtr2
iny + \0 from password
ldx #0
.4 lda SMB.TreeConnect.T,x
jsr CORE.PutBytePtr2
iny
inx
cpx #SMB.TreeConnect.T.Len
bne .4
tya
ldy ByteCountOfs
sta (ZPReqPtr),y
jsr CORE.SetReqLen
jsr INIT.WriteSocket
bcs .99
jsr INIT.ReadSocket
bcs .99
jsr CORE.GetRespData
ldy #S.NETBIOS+S.SMB.H.STATUS
lda (ZPRespPtr),y
bne .97
ldy #S.NETBIOS+S.SMB.H.TID
lda (ZPRespPtr),y
sta (ZPCtxPtr),y
iny
lda (ZPRespPtr),y
sta (ZPCtxPtr),y
.8 jsr CORE.FreeRespData
clc
rts
.97 jsr CORE.FreeRespData
.98 lda #MLI.E.IO
sec
.99 rts
*--------------------------------------
INIT.ReadSocket lda #TIMEOUT.MAX
sta TimeOut
.1 >SLEEP
lda hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Recv
bcc .99
cmp #E.NODATA
sec
bne .99
lda TimeOut
bne .1
lda #MLI.E.OFFLINE
.99 rts
*--------------------------------------
INIT.WriteSocket
>PUSHB hSocket
>PUSHW ZPReqPtr
>PUSHW ZPReqLen
>LIBCALL hLIBTCPIP,LIBTCPIP.Send
rts
*--------------------------------------
MAN
SAVE usr/src/sbin/cifsd.s.init
LOAD usr/src/sbin/cifsd.s
ASM