NEW
  AUTO 3,1
*--------------------------------------
CORE.ReqT2SetupX
				ldx #S.SMB.H.CMD.TRANS2
				jsr CORE.ReqSetupX

				ldx #0

.1				lda SMB.Trans2.H,x
				sta (ZPReqPtr),y
				iny
				inx
				cpx #SMB.Trans2.H.Len
				bne .1

				rts
*--------------------------------------
CORE.ReqSetupX	phx

				lda hReq
				>SYSCALL2 GetMemPtr
				>STYA ZPReqPtr

				lda hSMBContext
				>SYSCALL2 GetMemPtr
				>STYA ZPCtxPtr

				ldy #0

.1				lda (ZPCtxPtr),y
				cpy #S.NETBIOS+S.SMB.H.CMD
				bne .2

				pla

.2				sta (ZPReqPtr),y
				iny
				cpy #S.NETBIOS+S.SMB.H
				bne .1

				rts
*--------------------------------------
CORE.ReqSetupPtr2
				sty ByteCountOfs

				lda #0
				sta (ZPReqPtr),y		Reset ByteCount
				iny
				sta (ZPReqPtr),y
				iny						+2 for ByteCount

CORE.ReqT2SetupPtr2
				sty ZPReqLen
				stz ZPReqLen+1

				tya

				clc
				adc ZPReqPtr
				sta ZPPtr2

				lda ZPReqPtr+1
				adc #0
				sta ZPPtr2+1

				rts
*--------------------------------------
CORE.PutBytePtr2
				sta (ZPPtr2)
				inc ZPPtr2
				bne .1

				inc ZPPtr2+1

.1				inc ZPReqLen
				bne .8

				inc ZPReqLen+1

.8				rts
*--------------------------------------
CORE.AppendPathPtr2BF4
				lda #$04				BufferFormat
				jsr CORE.PutBytePtr2

CORE.AppendPathPtr2
				ldx #0

				ldy #$ff

.1				iny
				lda (pPath),y
				beq .4

.2				cmp #'/'
				bne .3

				lda #'\'

.3				sta (ZPPtr2),y
				tax
				bra .1

.4				cpx #'\'
				bne .5

				dey

.5				sta (ZPPtr2),y			A = 0

				rts
*--------------------------------------
CORE.AppendTypePtr2
				pha
				
				lda #'.'
				sta (ZPPtr2),y
				iny

				pla

				ldx #0

.1				cmp PRODOS.FT.HEX,x
				beq .4

				inx
				cpx #PRODOS.FT.TXT-PRODOS.FT.HEX
				bne .1

				pha

				lda #'0'
				sta (ZPPtr2),y
				iny
				
				pla
				bra CORE.AppendHEXPtr2

.4				txa
				asl
				asl
				tax

.6				lda PRODOS.FT.TXT,x
				beq .8

				sta (ZPPtr2),y
				inx
				iny
				bra .6

.8				rts
*--------------------------------------
CORE.AppendAuxTPtr2
				pha
				
				lda #'_'
				sta (ZPPtr2),y
				iny

				pla
				jsr CORE.AppendHEXPtr2
				
				txa
*--------------------------------------
CORE.AppendHEXPtr2
				pha
				lsr
				lsr
				lsr
				lsr

				ora #$30
				cmp #'9'+1
				bcc .2

				adc #6

.2				sta (ZPPtr2),y
				iny
				
				pla
				and #$0F

				ora #$30
				cmp #'9'+1
				bcc .3

				adc #6

.3				sta (ZPPtr2),y
				iny
				
				rts
*--------------------------------------
CORE.Add2ByteCount
				ldy ByteCountOfs
				clc
				adc (ZPReqPtr),y
				sta (ZPReqPtr),y

				iny						ByteCountOfs+1

				lda #0
				adc (ZPReqPtr),y
				sta (ZPReqPtr),y
				rts
*--------------------------------------
CORE.AddYReqLenPtr2
				tya

				sec						+1 for \0

				adc ZPPtr2
				sta ZPPtr2
				bcc CORE.AddYReqLen

				inc ZPPtr2+1
*--------------------------------------
CORE.AddYReqLen	tya

				sec						+1 for \0

				adc ZPReqLen
				sta ZPReqLen
				bcc .8

				inc ZPReqLen+1

.8				rts
*--------------------------------------
CORE.AppendPath	ldx #0

.1				lda (pPath)
				beq .4

				inc pPath
				bne .2

				inc pPath+1

.2				cmp #'/'
				bne .3

				lda #'\'

.3				sta (ZPReqPtr),y
				tax
				iny
				bra .1

.4				cpx #'\'
				bne .5

				dey

.5				rts
*--------------------------------------
CORE.SetT2ReqLenYA
				sty ZPReqLen
				sta ZPReqLen+1

CORE.SetT2ReqLen
				lda ZPReqLen
				sec
				sbc #S.NETBIOS+S.SMB.H+SMB.Trans2.H.Len+7

				ldy #S.NETBIOS+S.SMB.H+1
				sta (ZPReqPtr),y

				ldy #S.NETBIOS+S.SMB.H+19
				sta (ZPReqPtr),y

				inc
				inc
				inc

				ldy #S.NETBIOS+S.SMB.H+SMB.Trans2.H.Len+2
				sta (ZPReqPtr),y
*--------------------------------------
CORE.SetReqLen	lda ZPReqLen
				sec
				sbc #S.NETBIOS
				ldy #S.NETBIOS.LEN+2
				sta (ZPReqPtr),y

				lda ZPReqLen+1
				sbc /S.NETBIOS
				dey
				sta (ZPReqPtr),y

				rts
*--------------------------------------
CORE.GetRespData
				sta hResp
				>SYSCALL2 GetMemPtr

				pha
				tya
*				clc
				adc #S.TCP
				sta	ZPRespPtr
				pla
				adc /S.TCP
				sta	ZPRespPtr+1
				rts
*--------------------------------------
CORE.GetRespDataPtr1
				ldy #S.NETBIOS+S.SMB.H+15				Data Offset
				lda (ZPRespPtr),y
				clc
				adc ZPRespPtr
				tax

				iny
				lda (ZPRespPtr),y
				adc ZPRespPtr+1
				pha

				txa
				clc
				adc #S.NETBIOS
				sta ZPPtr1

				pla
				adc /S.NETBIOS
				sta ZPPtr1+1

				rts
*--------------------------------------
CORE.CheckSMBStatus
				ldy #S.NETBIOS+S.SMB.H.STATUS
				lda (ZPRespPtr),y
				clc
				beq CORE.FreeRespData.RTS

				stz CIFS.Status

				cmp #2					SRV
				bcs .9

				iny
				iny

				lda (ZPRespPtr),y		ERR CODE
				ldx #MLIERR01-SMBERR01

.1				cmp SMBERR01-1,x
				beq .2					CS

				dex
				bne .1

.9				lda #MLI.E.IO
				sec
				bra CORE.FreeRespData

.2				lda MLIERR01-1,x
*--------------------------------------
CORE.FreeRespData
				php
				pha
				lda hResp
				beq .8
				
				stz hResp
				
				>SYSCALL2 FreeMem

.8				pla
				plp

CORE.FreeRespData.RTS
				rts
*--------------------------------------
MAN
SAVE usr/src/sbin/cifsd.s.core
LOAD usr/src/sbin/cifsd.s
ASM
