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