A2osX/LIB/LIBCIFS.S.txt

1285 lines
24 KiB
Plaintext
Raw Normal View History

2021-01-12 21:14:13 +00:00
NEW
AUTO 3,1
.LIST OFF
.OP 65C02
.OR $2000
.TF lib/libcifs
*--------------------------------------
.INB inc/macros.i
.INB inc/a2osx.i
2021-02-11 22:08:22 +00:00
.INB inc/kernel.i
2021-01-12 21:14:13 +00:00
.INB inc/mli.e.i
.INB inc/eth.i
.INB inc/libtcpip.i
.INB inc/net.smb.i
*--------------------------------------
.DUMMY
.OR ZPLIB
ZS.START
ZPReqPtr .BS 2
ZPReqLen .BS 2
ZPCtxPtr .BS 2
2021-07-25 14:03:41 +00:00
ZPRespPtr .BS 2
2021-01-12 21:14:13 +00:00
ZPPtr1 .BS 2
ZPPtr2 .BS 2
2021-02-11 22:08:22 +00:00
BufPtr .BS 2
hBuf .BS 1
2021-03-11 21:40:55 +00:00
hResp .BS 1
2021-05-22 21:05:12 +00:00
pPath .BS 2
flags .BS 1
ftype .BS 1
auxtype .BS 2
2021-07-25 14:03:41 +00:00
pFD .BS 2
2021-03-11 21:40:55 +00:00
2021-02-17 16:15:43 +00:00
bFlag .BS 1
2021-06-17 17:38:34 +00:00
ByteCountOfs .BS 1
2021-01-12 21:14:13 +00:00
ZS.END .ED
*--------------------------------------
* File Header (16 Bytes)
*--------------------------------------
CS.START cld
jmp (.1,x)
.DA #$61 6502,Level 1 (65c02)
.DA #1 BIN Layout Version 1
.DA 0
.DA CS.END-CS.START
.DA 0
.DA 0
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
.1 .DA LIB.LOAD
.DA LIB.UNLOAD
.DA CIFS.Negotiate
.DA CIFS.SessionSetup
.DA CIFS.TreeConnect
.DA CIFS.Mount
.DA CIFS.UMount
*--------------------------------------
2021-01-17 21:48:54 +00:00
L.CALLBACK .DA CIFS.CallBack
*--------------------------------------
2021-01-12 21:14:13 +00:00
J.CIFS .DA CIFS.ChTyp
.DA CIFS.ChMod
.DA CIFS.FStat
.DA CIFS.Stat
.DA CIFS.MKDir
2021-05-19 12:44:47 +00:00
.DA CIFS.BADCALL MKNod
.DA CIFS.BADCALL MKFIFO
.DA CIFS.BADCALL Pipe
2021-01-12 21:14:13 +00:00
.DA CIFS.OpenDir
.DA CIFS.ReadDir
.DA CIFS.CloseDir
2021-05-19 12:44:47 +00:00
.DA CIFS.BADCALL Open
.DA CIFS.BADCALL Close
.DA CIFS.BADCALL Read
.DA CIFS.BADCALL Write
2021-01-12 21:14:13 +00:00
.DA CIFS.ChOwn
2021-05-19 12:44:47 +00:00
.DA CIFS.BADCALL
.DA CIFS.BADCALL
.DA CIFS.BADCALL
.DA CIFS.BADCALL
.DA CIFS.BADCALL
.DA CIFS.BADCALL
.DA CIFS.BADCALL
.DA CIFS.BADCALL
.DA CIFS.FOpen
.DA CIFS.FClose
.DA CIFS.FRead
.DA CIFS.FWrite
.DA CIFS.FFlush
.DA CIFS.FSeek
.DA CIFS.FTell
.DA CIFS.FEOF
.DA CIFS.Remove
.DA CIFS.Rename
*--------------------------------------
2021-01-24 19:44:43 +00:00
J.CIFS2 .DA CIFS2.ChTyp
.DA CIFS2.ChMod
.DA CIFS2.FStat
.DA CIFS2.Stat
.DA CIFS2.MKDir
2021-05-19 12:44:47 +00:00
.DA CIFS.BADCALL MKNod
.DA CIFS.BADCALL MKFIFO
.DA CIFS.BADCALL Pipe
2021-01-24 19:44:43 +00:00
.DA CIFS2.OpenDir
.DA CIFS2.ReadDir
.DA CIFS2.CloseDir
2021-05-19 12:44:47 +00:00
.DA CIFS.BADCALL Open
.DA CIFS.BADCALL Close
.DA CIFS.BADCALL Read
.DA CIFS.BADCALL Write
2021-02-17 16:15:43 +00:00
.DA CIFS2.ChOwn
2021-05-19 12:44:47 +00:00
.DA CIFS.BADCALL FPutC...
.DA CIFS.BADCALL
.DA CIFS.BADCALL
.DA CIFS.BADCALL
.DA CIFS.BADCALL
.DA CIFS.BADCALL
.DA CIFS.BADCALL
.DA CIFS.BADCALL ...UngetC
.DA CIFS2.FOpen
.DA CIFS2.FClose
.DA CIFS2.FRead
.DA CIFS2.FWrite
.DA CIFS2.FFlush
.DA CIFS2.FSeek
.DA CIFS2.FTell
.DA CIFS2.FEOF
.DA CIFS2.Remove
.DA CIFS2.Rename
*--------------------------------------
2021-01-12 21:14:13 +00:00
L.LIBTCPIP .DA LIBTCPIP
2021-07-10 19:09:43 +00:00
L.NETBIOS.H .DA NETBIOS.H
2021-01-12 21:14:13 +00:00
.DA 0
*--------------------------------------
LIB.LOAD >LDYA L.LIBTCPIP
2021-01-17 21:48:54 +00:00
>SYSCALL2 LoadLib
2021-01-12 21:14:13 +00:00
bcs .9
sta hLIBTCPIP
2021-01-17 21:48:54 +00:00
>SYSCALL2 GetMemPtr
>STYA pLIBTCPIP
2021-06-11 17:20:35 +00:00
>LDYAI 512
2021-01-17 21:48:54 +00:00
>SYSCALL2 GetMem
2021-01-12 21:14:13 +00:00
bcs .9
2021-01-17 21:48:54 +00:00
2021-01-12 21:14:13 +00:00
stx hReq
* clc
.9 rts
*--------------------------------------
LIB.UNLOAD lda hReq
beq .1
2021-01-17 21:48:54 +00:00
>SYSCALL2 FreeMem
2021-01-12 21:14:13 +00:00
.1 lda hLIBTCPIP
beq .8
2021-01-17 21:48:54 +00:00
>SYSCALL2 UnloadLib
2021-01-12 21:14:13 +00:00
.8 clc
rts
*--------------------------------------
* >PUSHB hSocket
2021-01-17 21:48:54 +00:00
* >PUSHBI 0
2021-01-12 21:14:13 +00:00
* >LIBCALL Negotiate
* A = hSMBContext
*--------------------------------------
CIFS.Negotiate lda (pStack)
bne .1
2021-01-17 21:48:54 +00:00
2021-01-12 21:14:13 +00:00
dec
sta (pStack)
2021-05-19 12:44:47 +00:00
ldy #1 hSocket
2021-01-12 21:14:13 +00:00
lda (pStack),y
2021-05-19 12:44:47 +00:00
>PUSHA
2021-07-10 19:09:43 +00:00
>PUSHW L.NETBIOS.H
>PUSHWI SMB.NegReq.end-NETBIOS.H
2021-01-12 21:14:13 +00:00
2021-01-13 16:57:41 +00:00
ldx #LIBTCPIP.Send
2021-01-17 21:48:54 +00:00
jsr GO.LIBTCPIP
2021-01-12 21:14:13 +00:00
bcs .99
2021-01-13 16:57:41 +00:00
2021-01-12 21:14:13 +00:00
lda #0
sec
rts
2021-07-10 19:09:43 +00:00
*--------------------------------------
2021-01-12 21:14:13 +00:00
.1 dec
sta (pStack)
beq .98
ldy #1 hSocket
lda (pStack),y
2021-01-13 16:57:41 +00:00
2021-07-10 19:09:43 +00:00
jsr ReadSocketA
2021-01-12 21:14:13 +00:00
bcc .3
cmp #E.NODATA
bne .99
inc
rts
.3 jsr GetRespData
2021-01-17 21:48:54 +00:00
2021-01-12 21:14:13 +00:00
ldy #S.NETBIOS+S.SMB.H.STATUS
lda (ZPRespPtr),y
bne .97
2021-02-11 22:08:22 +00:00
ldy #S.NETBIOS.LEN+2
2021-01-12 21:14:13 +00:00
lda (ZPRespPtr),y
2021-01-17 21:48:54 +00:00
2021-01-14 21:39:36 +00:00
clc
2021-02-11 22:08:22 +00:00
adc #S.NETBIOS
2021-01-14 21:39:36 +00:00
sta ZPPtr1
2021-01-12 21:14:13 +00:00
tay
lda #0
2021-01-17 21:48:54 +00:00
>SYSCALL2 GetMem
2021-01-12 21:14:13 +00:00
bcs .99
2021-01-17 21:48:54 +00:00
>STYA ZPCtxPtr
2021-01-14 21:39:36 +00:00
ldy ZPPtr1
2021-01-12 21:14:13 +00:00
.4 dey
lda (ZPRespPtr),y
sta (ZPCtxPtr),y
tya
bne .4
2021-01-14 21:39:36 +00:00
ldy #S.NETBIOS+S.SMB.H.FLAGS
sta (ZPCtxPtr),y
txa hSMBContext
2021-01-17 21:48:54 +00:00
jsr FreeRespData
2021-01-17 21:48:54 +00:00
2021-01-12 21:14:13 +00:00
clc
bra .99
2021-01-12 21:14:13 +00:00
.97 jsr FreeRespData
2021-01-12 21:14:13 +00:00
.98 lda #MLI.E.INVPARAM
2021-01-12 21:14:13 +00:00
2021-01-14 21:39:36 +00:00
.99 >RET 2
2021-01-12 21:14:13 +00:00
*--------------------------------------
* >PUSHB hSocket
* >PUSHB hSMBContext
* >PUSHW domain
2021-01-12 21:14:13 +00:00
* >PUSHW username
* >PUSHW password
2021-01-17 21:48:54 +00:00
* >PUSHBI 0
2021-01-12 21:14:13 +00:00
* >LIBCALL SessionSetup
* (SMBContext updated with UID)
*--------------------------------------
CIFS.SessionSetup
lda (pStack)
2021-01-17 21:48:54 +00:00
bne .5
2021-01-12 21:14:13 +00:00
2021-01-17 21:48:54 +00:00
dec
2021-01-12 21:14:13 +00:00
sta (pStack)
ldy #7 hSMBContext
2021-01-17 21:48:54 +00:00
jsr GetSMBContext
2021-01-14 21:39:36 +00:00
2021-01-12 21:14:13 +00:00
ldx #S.SMB.H.CMD.SESSION.SETUP.ANDX
2021-01-17 21:48:54 +00:00
jsr RequestSetupX
2021-01-12 21:14:13 +00:00
ldx #0
.2 lda SMB.SessionSetup.H,x
sta (ZPReqPtr),y
iny
inx
cpx #SMB.SessionSetup.H.Len
bne .2
2021-01-17 21:48:54 +00:00
2021-07-10 19:09:43 +00:00
jsr ReqSetupPtr2
2021-01-17 21:48:54 +00:00
2021-01-12 21:14:13 +00:00
ldx #0
2021-01-17 21:48:54 +00:00
2021-01-12 21:14:13 +00:00
.3 lda SMB.SessionSetup.Guest,x
2021-07-10 19:09:43 +00:00
jsr PutBytePtr2
2021-01-12 21:14:13 +00:00
inx
cpx #SMB.SessionSetup.Guest.Len
bne .3
2021-01-17 21:48:54 +00:00
2021-01-12 21:14:13 +00:00
ldx #0
.4 lda SMB.SessionSetup.T,x
2021-07-10 19:09:43 +00:00
jsr PutBytePtr2
2021-01-12 21:14:13 +00:00
inx
cpx #SMB.SessionSetup.T.Len
bne .4
2021-01-17 21:48:54 +00:00
2021-07-10 19:09:43 +00:00
jsr Add2ByteCount
2021-01-17 21:48:54 +00:00
2021-07-10 19:09:43 +00:00
jsr SetReqLen
2021-01-12 21:14:13 +00:00
ldy #8 hSocket
2021-01-12 21:14:13 +00:00
lda (pStack),y
2021-07-10 19:09:43 +00:00
jsr WriteSocketA
2021-01-12 21:14:13 +00:00
bcs .99
lda #0
sec
2021-01-17 21:48:54 +00:00
rts
2021-07-10 19:09:43 +00:00
*--------------------------------------
2021-01-12 21:14:13 +00:00
.5 dec
sta (pStack)
beq .98
ldy #8 hSocket
2021-01-12 21:14:13 +00:00
lda (pStack),y
2021-07-10 19:09:43 +00:00
jsr ReadSocketA
2021-01-12 21:14:13 +00:00
bcc .6
cmp #E.NODATA
bne .99
inc
rts
.6 jsr GetRespData
ldy #S.NETBIOS+S.SMB.H.STATUS
lda (ZPRespPtr),y
bne .97
2021-01-17 21:48:54 +00:00
ldy #7 hSMBContext
2021-01-17 21:48:54 +00:00
jsr GetSMBContext
2021-01-12 21:14:13 +00:00
ldy #S.NETBIOS+S.SMB.H.UID
lda (ZPRespPtr),y
sta (ZPCtxPtr),y
2021-01-17 21:48:54 +00:00
iny
2021-01-12 21:14:13 +00:00
lda (ZPRespPtr),y
sta (ZPCtxPtr),y
2021-01-17 21:48:54 +00:00
.8 jsr FreeRespData
2021-01-12 21:14:13 +00:00
clc
bra .99
2021-01-12 21:14:13 +00:00
.97 jsr FreeRespData
2021-01-12 21:14:13 +00:00
.98 lda #MLI.E.LOCKED
2021-01-13 16:57:41 +00:00
sec
2021-01-17 21:48:54 +00:00
.99 >RET 7
2021-01-12 21:14:13 +00:00
*--------------------------------------
* >PUSHB hSocket
* >PUSHB hSMBContext
2021-01-14 21:39:36 +00:00
* >PUSHW pathname
2021-01-17 21:48:54 +00:00
* >PUSHBI 0
2021-01-12 21:14:13 +00:00
* >LIBCALL TreeConnect
* (SMBContext updated with TID)
*--------------------------------------
CIFS.TreeConnect
lda (pStack)
2021-01-17 21:48:54 +00:00
bne .5
2021-01-12 21:14:13 +00:00
2021-01-17 21:48:54 +00:00
dec
2021-01-12 21:14:13 +00:00
sta (pStack)
2021-01-14 21:39:36 +00:00
ldy #1 pathname
lda (pStack),y
2021-07-10 19:09:43 +00:00
sta pPath
2021-01-14 21:39:36 +00:00
iny
lda (pStack),y
2021-07-10 19:09:43 +00:00
sta pPath+1
2021-01-14 21:39:36 +00:00
2021-01-17 21:48:54 +00:00
iny hSMBContext
jsr GetSMBContext
2021-01-12 21:14:13 +00:00
2021-01-17 21:48:54 +00:00
ldx #S.SMB.H.CMD.TREE.CONNECT.ANDX
jsr RequestSetupX
2021-01-12 21:14:13 +00:00
ldx #0
2021-02-17 16:15:43 +00:00
2021-01-17 21:48:54 +00:00
.1 lda SMB.TreeConnect.H,x
2021-01-12 21:14:13 +00:00
sta (ZPReqPtr),y
iny
inx
cpx #SMB.TreeConnect.H.Len
2021-01-17 21:48:54 +00:00
bne .1
2021-07-10 19:09:43 +00:00
jsr ReqSetupPtr2
2021-01-17 21:48:54 +00:00
2021-01-12 21:14:13 +00:00
lda #0
2021-07-10 19:09:43 +00:00
jsr PutBytePtr2 PASSWORD = "\0"
2021-01-17 21:48:54 +00:00
2021-07-10 19:09:43 +00:00
jsr AppendPathPtr2
jsr AddYReqLenPtr2
2021-01-12 21:14:13 +00:00
ldx #0
.4 lda SMB.TreeConnect.T,x
2021-07-10 19:09:43 +00:00
jsr PutBytePtr2
2021-01-12 21:14:13 +00:00
inx
cpx #SMB.TreeConnect.T.Len
bne .4
2021-01-17 21:48:54 +00:00
2021-07-10 19:09:43 +00:00
jsr SetReqLen
2021-01-12 21:14:13 +00:00
2021-05-19 12:44:47 +00:00
ldy #4 hSocket
2021-01-12 21:14:13 +00:00
lda (pStack),y
2021-06-11 17:20:35 +00:00
jsr WriteSocketA
2021-01-12 21:14:13 +00:00
bcs .99
lda #0
sec
2021-01-17 21:48:54 +00:00
rts
2021-01-12 21:14:13 +00:00
.5 dec
sta (pStack)
beq .98
ldy #4 hSocket
lda (pStack),y
2021-07-10 19:09:43 +00:00
jsr ReadSocketA
2021-01-12 21:14:13 +00:00
bcc .6
cmp #E.NODATA
bne .99
inc
rts
.6 jsr GetRespData
ldy #S.NETBIOS+S.SMB.H.STATUS
lda (ZPRespPtr),y
bne .97
2021-01-17 21:48:54 +00:00
2021-01-12 21:14:13 +00:00
ldy #3 hSMBContext
2021-01-17 21:48:54 +00:00
jsr GetSMBContext
2021-01-12 21:14:13 +00:00
ldy #S.NETBIOS+S.SMB.H.TID
lda (ZPRespPtr),y
sta (ZPCtxPtr),y
2021-01-17 21:48:54 +00:00
iny
2021-01-12 21:14:13 +00:00
lda (ZPRespPtr),y
sta (ZPCtxPtr),y
2021-01-17 21:48:54 +00:00
.8 jsr FreeRespData
2021-01-12 21:14:13 +00:00
clc
bra .99
2021-01-12 21:14:13 +00:00
.97 jsr FreeRespData
2021-01-12 21:14:13 +00:00
.98 lda #MLI.E.IO
2021-01-13 16:57:41 +00:00
sec
2021-01-17 21:48:54 +00:00
.99 >RET 5
2021-01-12 21:14:13 +00:00
*--------------------------------------
2021-01-17 21:48:54 +00:00
* >PUSHB hSocket
* >PUSHB hSMBContext
* >PUSHW MountPoint
* >LIBCALL Mount
*--------------------------------------
CIFS.Mount ldy #1
lda (pStack),y MP HI
>PUSHA
lda (pStack),y MP LO
>PUSHA
2021-02-17 16:15:43 +00:00
2021-01-17 21:48:54 +00:00
>PUSHW L.CALLBACK
>SYSCALL2 Mount
bcs .9
2021-02-17 16:15:43 +00:00
2021-01-17 21:48:54 +00:00
pha hMount
2021-02-17 16:15:43 +00:00
2021-01-17 21:48:54 +00:00
ldx #0
.1 >PULLB MountTable,x
inx
cpx #4
bne .1
2021-02-17 16:15:43 +00:00
2021-01-17 21:48:54 +00:00
pla
2021-02-17 16:15:43 +00:00
clc
rts
2021-01-17 21:48:54 +00:00
.9 >RET 4
2021-01-12 21:14:13 +00:00
*--------------------------------------
CIFS.UMount clc
rts
*--------------------------------------
2021-01-24 19:44:43 +00:00
CIFS.CallBack bit CIFS.Status
2021-02-17 16:15:43 +00:00
bpl .1
phy
pha
2021-06-17 17:38:34 +00:00
2021-02-17 16:15:43 +00:00
ldy #S.PS.PID
2021-01-24 19:44:43 +00:00
lda (pPS),y
cmp CIFS.PID
2021-02-17 16:15:43 +00:00
beq .2
2021-01-24 19:44:43 +00:00
2021-02-17 16:15:43 +00:00
pla
ply
lda #0
2021-01-24 19:44:43 +00:00
sec
2021-02-17 16:15:43 +00:00
rts
.1 jmp (J.CIFS,x)
2021-03-11 21:40:55 +00:00
2021-02-17 16:15:43 +00:00
.2 pla
ply
jmp (J.CIFS2,x)
2021-06-30 19:09:07 +00:00
*--------------------------------------
2021-06-19 17:46:36 +00:00
GetCTX lda MountTable+2
2021-02-11 22:08:22 +00:00
>SYSCALL2 GetMemPtr
>STYA ZPCtxPtr
2021-06-11 17:20:35 +00:00
rts
*--------------------------------------
GetSMBContext lda (pStack),y
>SYSCALL2 GetMemPtr
>STYA ZPCtxPtr
rts
*--------------------------------------
RequestT2SetupX ldx #S.SMB.H.CMD.TRANS2
2021-02-11 22:08:22 +00:00
jsr RequestSetupX
ldx #0
2021-02-17 16:15:43 +00:00
2021-02-11 22:08:22 +00:00
.1 lda SMB.Trans2.H,x
sta (ZPReqPtr),y
iny
inx
cpx #SMB.Trans2.H.Len
bne .1
rts
*--------------------------------------
2021-01-17 21:48:54 +00:00
RequestSetupX phx
lda hReq
>SYSCALL2 GetMemPtr
>STYA ZPReqPtr
ldy #0
.1 lda (ZPCtxPtr),y
cpy #S.NETBIOS+S.SMB.H.CMD
bne .2
2021-06-17 17:38:34 +00:00
pla
2021-01-17 21:48:54 +00:00
.2 sta (ZPReqPtr),y
iny
cpy #S.NETBIOS+S.SMB.H
bne .1
rts
*--------------------------------------
2021-06-17 17:38:34 +00:00
ReqSetupPtr2 sty ByteCountOfs
lda #0
sta (ZPReqPtr),y Reset ByteCount
2021-06-17 17:38:34 +00:00
iny
sta (ZPReqPtr),y
2021-06-17 17:38:34 +00:00
iny +2 for ByteCount
ReqT2SetupPtr2 sty ZPReqLen
stz ZPReqLen+1
tya
clc
adc ZPReqPtr
sta ZPPtr2
lda ZPReqPtr+1
adc #0
sta ZPPtr2+1
rts
*--------------------------------------
2021-06-19 17:46:36 +00:00
PutBytePtr2 sta (ZPPtr2)
inc ZPPtr2
bne .1
inc ZPPtr2+1
.1 inc ZPReqLen
bne .8
inc ZPReqLen+1
.8 rts
*--------------------------------------
2021-06-17 17:38:34 +00:00
AppendPathPtr2 ldx #0
ldy #$ff
2021-06-06 19:06:49 +00:00
.1 iny
lda (pPath),y
2021-06-17 17:38:34 +00:00
beq .4
.2 cmp #'/'
bne .3
lda #'\'
.3 sta (ZPPtr2),y
tax
bra .1
.4 cpx #'\'
bne .5
dey
2021-06-19 17:46:36 +00:00
.5 sta (ZPPtr2),y A = 0
2021-07-10 19:09:43 +00:00
rts
*--------------------------------------
AppendTypePtr2 ldx #0
.1 cmp PRODOS.FT.HEX,x
beq .4
inx
cpx #PRODOS.FT.TXT-PRODOS.FT.HEX
bne .1
pha
lsr
lsr
lsr
lsr
ora #$30
cmp #'9'+1
bcc .2
adc #6
.2 sta PRODOS.FT.DFLT+1
pla
and #$0F
ora #$30
cmp #'9'+1
bcc .3
adc #6
.3 sta PRODOS.FT.DFLT+2
.4 txa
asl
asl
tax
lda #'.'
sta (ZPPtr2),y
iny
.6 lda PRODOS.FT.TXT,x
sta (ZPPtr2),y
beq .8
inx
iny
bra .6
.8 rts
*--------------------------------------
Add2ByteCount ldy ByteCountOfs
clc
adc (ZPReqPtr),y
sta (ZPReqPtr),y
2021-06-19 17:46:36 +00:00
iny ByteCountOfs+1
2021-06-19 17:46:36 +00:00
lda #0
adc (ZPReqPtr),y
sta (ZPReqPtr),y
rts
*--------------------------------------
AddYReqLenPtr2 tya
2021-06-19 17:46:36 +00:00
sec +1 for \0
2021-06-17 17:38:34 +00:00
2021-06-19 17:46:36 +00:00
adc ZPPtr2
sta ZPPtr2
bcc AddYReqLen
2021-06-19 17:46:36 +00:00
inc ZPPtr2+1
*--------------------------------------
AddYReqLen tya
2021-06-19 17:46:36 +00:00
sec +1 for \0
adc ZPReqLen
sta ZPReqLen
bcc .8
2021-06-19 17:46:36 +00:00
inc ZPReqLen+1
.8 rts
2021-06-06 19:06:49 +00:00
*--------------------------------------
2021-02-17 16:15:43 +00:00
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
*--------------------------------------
2021-01-24 19:44:43 +00:00
SetT2ReqLenYA sty ZPReqLen
stz ZPReqLen+1
2021-02-17 16:15:43 +00:00
2021-06-17 17:38:34 +00:00
SetT2ReqLen lda ZPReqLen
2021-01-24 19:44:43 +00:00
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
2021-02-17 16:15:43 +00:00
2021-01-24 19:44:43 +00:00
inc
inc
inc
2021-02-17 16:15:43 +00:00
2021-01-24 19:44:43 +00:00
ldy #S.NETBIOS+S.SMB.H+SMB.Trans2.H.Len+2
sta (ZPReqPtr),y
2021-06-17 17:38:34 +00:00
*--------------------------------------
SetReqLen lda ZPReqLen
2021-01-12 21:14:13 +00:00
sec
sbc #S.NETBIOS
ldy #S.NETBIOS.LEN+2
sta (ZPReqPtr),y
2021-06-17 17:38:34 +00:00
2021-01-12 21:14:13 +00:00
lda ZPReqLen+1
sec
2021-01-17 21:48:54 +00:00
sbc /S.NETBIOS
2021-01-12 21:14:13 +00:00
dey
sta (ZPReqPtr),y
2021-01-17 21:48:54 +00:00
2021-01-12 21:14:13 +00:00
rts
*--------------------------------------
2021-03-11 21:40:55 +00:00
Sleep ldy #S.PS.PID
lda (pPS),y
sta CIFS.PID
dec CIFS.Status
2021-06-17 17:38:34 +00:00
Sleep2 stz CIFS.Retries
2021-05-19 12:44:47 +00:00
2021-03-11 21:40:55 +00:00
lda #0
sec
rts
*--------------------------------------
Exit.OK jsr FreeRespData
2021-06-19 17:46:36 +00:00
stz CIFS.Status
* clc
2021-06-19 17:46:36 +00:00
rts
*--------------------------------------
Exit.NODATA cmp #E.NODATA
bne .99
dec CIFS.Retries
beq .98
lda #0
sec
rts
.98 lda #MLI.E.OFFLINE
.99 stz CIFS.Status
sec
rts
*--------------------------------------
2021-01-12 21:14:13 +00:00
GetRespData sta hResp
2021-01-17 21:48:54 +00:00
>SYSCALL2 GetMemPtr
2021-01-12 21:14:13 +00:00
pha
tya
* clc
adc #S.TCP
sta ZPRespPtr
pla
adc /S.TCP
sta ZPRespPtr+1
rts
*--------------------------------------
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
*--------------------------------------
2021-06-19 17:46:36 +00:00
CheckSMBStatus ldy #S.NETBIOS+S.SMB.H.STATUS
lda (ZPRespPtr),y
clc
beq 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
2021-06-19 17:46:36 +00:00
dex
bne .1
.9 lda #MLI.E.IO
2021-06-19 17:46:36 +00:00
sec
bra FreeRespData
2021-06-19 17:46:36 +00:00
.2 lda MLIERR01-1,x
*--------------------------------------
FreeRespData php
pha
lda hResp
>SYSCALL2 FreeMem
pla
plp
FreeRespData.RTS
rts
*--------------------------------------
2021-02-11 22:08:22 +00:00
FileInfo2StatBuf
ldx #S.STAT-1
.1 stz StatBuf,x
dex
bpl .1
2021-02-17 16:15:43 +00:00
ldy #0 Creation Date/Time
ldx #S.STAT.CTIME
jsr FileInfo2StatBufDT
ldy #4 Last Access Date/Time
ldx #S.STAT.ATIME
jsr FileInfo2StatBufDT
ldy #8 Last Write Date/Time
ldx #S.STAT.MTIME
jsr FileInfo2StatBufDT
ldy #12+3 Data Size
2021-02-11 22:08:22 +00:00
ldx #3
2021-02-17 16:15:43 +00:00
.7 lda (ZPPtr1),y
2021-02-11 22:08:22 +00:00
sta StatBuf+S.STAT.SIZE,x
dey
dex
2021-02-17 16:15:43 +00:00
bpl .7
ldy #20 File Attribute
lda (ZPPtr1),y
and #$10
beq .8
lda /S.STAT.MODE.DIR
sta StatBuf+S.STAT.MODE+1
2021-06-30 19:09:07 +00:00
.8 rts
2021-01-12 21:14:13 +00:00
*--------------------------------------
2021-02-17 16:15:43 +00:00
* YYYYYYYM MMM DDDDD
* HHHHHmmm mmm SSSSS
*--------------------------------------
FileInfo2StatBufDT
iny
lda (ZPPtr1),y
2021-02-11 22:08:22 +00:00
lsr
2021-02-17 16:15:43 +00:00
php
clc
adc #80
sta StatBuf+S.TIME.YEAR,x
lda #19
adc #0
sta StatBuf+S.TIME.CENTURY,x
dey
plp
lda (ZPPtr1),y
ror
lsr
lsr
lsr
lsr
sta StatBuf+S.TIME.MONTH,x
lda (ZPPtr1),y
and #$1F
sta StatBuf+S.TIME.DAY,x
iny
iny
lda (ZPPtr1),y
and #$1F
asl
sta StatBuf+S.TIME.SECOND,x
lda (ZPPtr1),y
and #$E0
sta StatBuf+S.TIME.MINUTE,x
lda (ZPPtr1),y
lsr
ror StatBuf+S.TIME.MINUTE,x
lsr
ror StatBuf+S.TIME.MINUTE,x
lsr
ror StatBuf+S.TIME.MINUTE,x
lsr StatBuf+S.TIME.MINUTE,x
lsr StatBuf+S.TIME.MINUTE,x
sta StatBuf+S.TIME.HOUR,x
2021-02-11 22:08:22 +00:00
rts
2021-02-17 16:15:43 +00:00
* TODO : S.TIME.WDAY
*--------------------------------------
2021-06-27 13:48:04 +00:00
AddA2Ptr1 adc ZPPtr1
sta ZPPtr1
bcc .8
inc ZPPtr1+1
.8 rts
*--------------------------------------
2021-02-17 16:15:43 +00:00
StatBuf2Ptr2 ldy #S.STAT-1
.1 lda StatBuf,y
sta (ZPPtr2),y
dey
bpl .1
rts
*--------------------------------------
2021-06-27 13:48:04 +00:00
AddSTAT2Ptr2 lda #S.STAT
clc
*--------------------------------------
AddA2Ptr2 adc ZPPtr2
sta ZPPtr2
bcc .8
inc ZPPtr2+1
.8 rts
*--------------------------------------
*ClearSocket jsr ReadSocket
* bcs .8
2021-05-19 12:44:47 +00:00
* >SYSCALL2 FreeMem
* bra ClearSocket
2021-05-19 12:44:47 +00:00
*.8 clc
* rts
2021-03-15 15:00:27 +00:00
*--------------------------------------
2021-06-11 17:20:35 +00:00
WriteSocket lda MountTable+3 hSocket
WriteSocketA >PUSHA
>PUSHW ZPReqPtr
>PUSHW ZPReqLen
ldx #LIBTCPIP.Send
jmp (pLIBTCPIP)
*--------------------------------------
2021-03-15 15:00:27 +00:00
ReadSocket lda MountTable+3 hSocket
2021-07-10 19:09:43 +00:00
ReadSocketA ldx #LIBTCPIP.Recv
2021-02-11 22:08:22 +00:00
GO.LIBTCPIP jmp (pLIBTCPIP)
2021-01-24 19:44:43 +00:00
*--------------------------------------
2021-05-19 12:44:47 +00:00
CIFS.BADCALL lda #MLI.E.BADCALL
sec
rts
2021-07-10 19:09:43 +00:00
*--------------------------------------
.INB usr/src/lib/libcifs.io.s
2021-05-19 12:44:47 +00:00
*--------------------------------------
2021-02-11 22:08:22 +00:00
CS.END
PRODOS.FT.HEX .HS 0406FAFCFDCBCCCFFF
2021-06-30 19:09:07 +00:00
PRODOS.FT.TXT .AZ "txt"
.AZ "bin"
.AZ "asm"
.AZ "bas"
.AZ "var"
.AZ "pix"
.AZ "fon"
.AZ "pak"
.AZ "sys"
PRODOS.FT.END .EQ *-PRODOS.FT.TXT
PRODOS.FT.DFLT .AZ "$ "
2021-01-17 21:48:54 +00:00
*--------------------------------------
2021-06-19 17:46:36 +00:00
SMBERR01 .DA #2,#3,#32
MLIERR01 .DA #MLI.E.FNOTFND,#MLI.E.PNOTFND,#MLI.E.OPEN
*--------------------------------------
2021-07-10 19:09:43 +00:00
NETBIOS.H .DA #0 DIRECT TCP TRANSPORT
2021-01-12 21:14:13 +00:00
.DA #0 24 BITS LENGTH
.DA /SMB.NegReq.end-SMB.H
.DA #SMB.NegReq.end-SMB.H
*--------------------------------------
SMB.H .DA #$FF
.AS "SMB"
.DA #S.SMB.H.CMD.NEGOTIATE
.HS 00000000
.DA #0 S.SMB.H.FLAGS
.DA S.SMB.H.FLAGS2.LONGNAMES
.DA 0 PIDHI
.HS 0000000000000000 SECFEAT
.DA 0 RSVD
.DA $FFFF TID
.DA $FFFE PIDLO
.BS 2 UID
.DA 0 MID
*--------------------------------------
SMB.NegReq .DA #0 WORD COUNT
.DA #SMB.NegReq.end-2-* ByteCount
.DA #0
* .DA #2
* .AZ "PC NETWORK PROGRAM 1.0"
* .DA #2
* .AZ "LANMAN1.0"
* .DA #2
* .AZ "Windows for Workgroups 3.1a"
* .DA #2
* .AZ "LM1.2X002"
* .DA #2
* .AZ "LANMAN2.1"
.DA #2
.AZ "NT LM 0.12"
* .DA #2
* .AZ "SMB 2.002"
* .DA #2
* .AZ "SMB 2.???"
SMB.NegReq.end .EQ *
*--------------------------------------
SMB.SessionSetup.H
.DA #13 WORD COUNT
.HS FF000000 NO MORE CMD
.DA 1280 MAX BUFFER
.DA 2 MAX MPX COUNT
.HS 0000 VC NUMBER
.HS 00000000 SESSION KEY
.BS 2 CI PASS LEN (ANSI)
2021-01-14 21:39:36 +00:00
.DA 0 CS PASS LEN (UNICODE)
2021-01-12 21:14:13 +00:00
.HS 00000000
.HS 00000000 CAPABILITIES
SMB.SessionSetup.H.Len .EQ *-SMB.SessionSetup.H
* .BS 2 ByteCount
SMB.SessionSetup.Guest
2021-01-14 21:39:36 +00:00
* .AZ "" Password
2021-01-12 21:14:13 +00:00
.AZ "Guest" Account Name
.AZ "?" Primary Domain
SMB.SessionSetup.Guest.Len .EQ *-SMB.SessionSetup.Guest
SMB.SessionSetup.T
.AZ "A2osX" Native OS
.AZ "A2osX-CIFSD" Native LANMAN
SMB.SessionSetup.T.Len .EQ *-SMB.SessionSetup.T
*--------------------------------------
SMB.TreeConnect.H
.DA #4 WORD COUNT
.HS FF000000 NO MORE CMD
.DA 0
.DA 1 PASSWORD LEN (1 for "\0")
SMB.TreeConnect.H.Len .EQ *-SMB.TreeConnect.H
* .BS 2 ByteCount
* .AZ "" PASSWORD
* .AZ "_temp" PATH
SMB.TreeConnect.T
.AZ "A:" Disk Share
2021-06-06 19:06:49 +00:00
SMB.TreeConnect.T.Len .EQ *-SMB.TreeConnect.T
*--------------------------------------
SMB.ComCreate.H .DA #24 WORD COUNT
2021-06-05 15:48:54 +00:00
.HS FF000000 NO MORE CMD
.HS 00 Reserved
.BS 2 NameLength
.HS 00000000 Flags
2021-06-06 19:06:49 +00:00
.HS 00000000 RootDirectoryFID
2021-06-17 17:38:34 +00:00
.HS 00000010 DesiredAccess = GENERIC_ALL
2021-06-05 15:48:54 +00:00
.HS 0000000000000000 AllocationSize
.HS 00000000 ExtFileAttributes
2021-06-17 17:38:34 +00:00
.HS 00000000 ShareAccess
.BS 4 CreateDisposition
2021-06-05 15:48:54 +00:00
.HS 00000000 CreateOptions
.HS 00000000 ImpersonationLevel
2021-06-06 19:06:49 +00:00
.HS 00 SecurityFlags
2021-06-17 17:38:34 +00:00
SMB.ComCreate.H.Len .EQ *-SMB.ComCreate.H
* .BS 2 ByteCount
2021-06-05 15:48:54 +00:00
* .AZ "path\file"
2021-06-06 19:06:49 +00:00
*--------------------------------------
2021-06-05 15:48:54 +00:00
SMB.ComClose.H .DA #3 WORD COUNT
.BS 2 FID
.HS 00000000 LastTimeModified
.HS 0000 ByteCount
SMB.ComClose.H.Len .EQ *-SMB.ComClose.H
2021-06-06 19:06:49 +00:00
*--------------------------------------
2021-06-17 17:38:34 +00:00
SMB.ComFlush.H .DA #1 WORD COUNT
.BS 2 FID
.HS 0000 ByteCount
SMB.ComFlush.H.Len .EQ *-SMB.ComFlush.H
*--------------------------------------
SMB.ComDelete.H .DA #1 WORD COUNT
.HS 0000 SearchAttributes
SMB.ComDelete.H.Len .EQ *-SMB.ComDelete.H
* .BS 2 ByteCount
* .HS 04 BufferFormat
* .AZ "path\file"
*--------------------------------------
SMB.ComRename.H .DA #1 WORD COUNT
.HS 0000 SearchAttributes
SMB.ComRename.H.Len .EQ *-SMB.ComRename.H
* .BS 2 ByteCount
* .HS 04 BufferFormat
* .AZ "oldpath"
* .HS 04 BufferFormat
* .AZ "newpath"
*--------------------------------------
2021-02-20 10:18:02 +00:00
SMB.ComRead.H .DA #10 WORD COUNT
.HS FF000000 NO MORE CMD
.BS 2 FID
.BS 4 Offset
.BS 2 MaxCountOfBytesToReturn
2021-02-20 10:18:02 +00:00
.HS 0000 MinCountOfBytesToReturn
.HS 00000000 Timeout
.HS 0000 Remaining
2021-05-19 12:44:47 +00:00
SMB.ComRead.H.Len .EQ *-SMB.ComRead.H
2021-06-22 18:59:02 +00:00
* .BS 2 ByteCount
2021-06-06 19:06:49 +00:00
*--------------------------------------
2021-02-20 10:18:02 +00:00
SMB.ComWrite.H .DA #12 WORD COUNT
.HS FF000000 NO MORE CMD
.BS 2 FID
.BS 4 Offset
.HS 00000000 Timeout
2021-06-27 13:48:04 +00:00
.HS 0000
* .HS 0100 WriteMode=WritethroughMode
2021-06-11 17:20:35 +00:00
.HS 0000 Remaining
2021-02-20 10:18:02 +00:00
.HS 0000 Reserved
.BS 2 DataLength
2021-06-27 16:59:52 +00:00
.DA S.SMB.H+SMB.ComWrite.H.Len+2 DataOffset (+2 skip ByteCount)
2021-02-20 10:18:02 +00:00
SMB.ComWrite.H.Len .EQ *-SMB.ComWrite.H
2021-06-11 17:20:35 +00:00
* .BS 2 ByteCount
2021-02-20 10:18:02 +00:00
* DATA.....
2021-01-12 21:14:13 +00:00
*--------------------------------------
2021-01-24 19:44:43 +00:00
SMB.Trans2.H .DA #15 WORD COUNT
.BS 2 TotalParamCount
2021-01-12 21:14:13 +00:00
.DA 0 TotalDataCount
2021-02-11 22:08:22 +00:00
.DA 10 MaxParameterCount
2021-03-11 21:40:55 +00:00
.DA 450 MaxDataCount
2021-01-24 19:44:43 +00:00
.DA #0 MaxSetupCount
2021-01-12 21:14:13 +00:00
.HS 00 Reserved1
.DA 0 Flags
.HS 00000000 Timeout
.HS 0000 Reserved2
2021-01-24 19:44:43 +00:00
.BS 2 ParameterCount
.DA 68 ParameterOffset
2021-01-12 21:14:13 +00:00
.HS 0000 DataCount
.HS 0000 DataOffset
.DA #1 SetupCount
.HS 00 Reserved3
2021-02-17 16:15:43 +00:00
SMB.Trans2.H.Len .EQ *-SMB.Trans2.H
2021-01-12 21:14:13 +00:00
*--------------------------------------
2021-02-20 10:18:02 +00:00
SMB.FindFirst2 .DA 1 TRANS2_FIND_FIRST2
2021-01-24 19:44:43 +00:00
.BS 2 PrmCnt
2021-02-11 22:08:22 +00:00
.HS 000000 Padding
.DA $0037 SearchAttributes
2021-01-12 21:14:13 +00:00
.DA 1024 SearchCount
2021-01-24 19:44:43 +00:00
.DA 2 Flags
.DA SMB_INFO_STANDARD InformationLevel
2021-02-11 22:08:22 +00:00
.HS 00000000 SearchStorageType
2021-02-20 10:18:02 +00:00
* .AZ "path\*"
SMB.FindFirst2.Len .EQ *-SMB.FindFirst2
2021-01-24 19:44:43 +00:00
*--------------------------------------
2021-02-20 10:18:02 +00:00
SMB.FindNext2 .DA 2 TRANS2_FIND_NEXT2
2021-01-24 19:44:43 +00:00
.BS 2 PrmCnt
2021-02-11 22:08:22 +00:00
.HS 000000 Padding
2021-01-24 19:44:43 +00:00
.BS 2 SID
.DA 1024 SearchCount
.DA SMB_INFO_STANDARD InformationLevel
2021-02-17 16:15:43 +00:00
.HS 00000000 ResumeKey
.DA 2+8 Flags
2021-02-20 10:18:02 +00:00
* .AZ "path\*"
SMB.FindNext2.Len .EQ *-SMB.FindNext2
2021-02-11 22:08:22 +00:00
*--------------------------------------
2021-02-17 16:15:43 +00:00
SMB.QueryPathInfo
.DA 5 TRANS2_QUERY_PATH_INFORMATION
.BS 2 PrmCnt
.HS 000000 Padding
.DA SMB_INFO_STANDARD InformationLevel
.HS 00000000 SearchStorageType
2021-02-20 10:18:02 +00:00
* .AZ "filename"
2021-02-17 16:15:43 +00:00
SMB.QueryPathInfo.Len .EQ *-SMB.QueryPathInfo
*--------------------------------------
SMB.CreateDirectory
.DA 13 TRANS2_CREATE_DIRECTORY
.BS 2 PrmCnt
.HS 000000 Padding
.HS 00000000 Reserved
* .AZ "DirName"
SMB.CreateDirectory.Len .EQ *-SMB.CreateDirectory
*--------------------------------------
2021-02-11 22:08:22 +00:00
LIBTCPIP .AZ "libtcpip"
hLIBTCPIP .BS 1
pLIBTCPIP .BS 2
hSocket .BS 1
hReq .BS 1
*--------------------------------------
CIFS.Status .BS 1
CIFS.PID .BS 1
CIFS.Retries .BS 1
CIFS.Cnt .BS 2
2021-02-11 22:08:22 +00:00
*--------------------------------------
MountTable .BS 2 pMountPoint
.BS 1 hSMBContext
.BS 1 hSocket
*--------------------------------------
hFD .BS 1
2021-06-06 19:06:49 +00:00
hFILE .BS 1
2021-02-11 22:08:22 +00:00
StatBuf .BS S.STAT
2021-01-12 21:14:13 +00:00
*--------------------------------------
MAN
SAVE usr/src/lib/libcifs.s
ASM