Kernel 0.94

This commit is contained in:
Rémy GIBERT 2020-06-17 21:05:36 +02:00
parent 7eefe84082
commit 61bc2d9be8
13 changed files with 584 additions and 177 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -405,27 +405,15 @@ CS.RUN.LL.DISKII.V
.1 ldx #8
.2 phx
>PUSHW L.MSG.VERIFY
>PUSHB CurTrack
>PUSHW.G IOCTL+S.IOCTL.BLKNUM
>PUSHBI 3
>SYSCALL PrintF
jsr CS.RUN.LL.DISKII.VP
plx
bcs .9
phx
>PUSHB hDevID
>PUSHBI IOCTL.READBLOCK
>PUSHEA.G IOCTL
>SYSCALL IOCTL
jsr CS.RUN.LL.DISKII.VR
plx
bcs .9
>INCW.G IOCTL+S.IOCTL.BLKNUM
dex
@ -434,9 +422,31 @@ CS.RUN.LL.DISKII.V
inc CurTrack
dec Counter
bne .1
lda TrkCnt
sta Counter
.3 ldx #8
dec CurTrack
.4 >DECW.G IOCTL+S.IOCTL.BLKNUM
* ldx #0
* jsr CS.RUN.SeekToX
phx
jsr CS.RUN.LL.DISKII.VP
plx
bcs .9
phx
jsr CS.RUN.LL.DISKII.VR
plx
bcs .9
dex
bne .4
dec Counter
bne .3
>PUSHW L.MSG.CRLF
>PUSHBI 0
@ -444,6 +454,21 @@ CS.RUN.LL.DISKII.V
.9 rts
*--------------------------------------
CS.RUN.LL.DISKII.VP
>PUSHW L.MSG.VERIFY
>PUSHB CurTrack
>PUSHW.G IOCTL+S.IOCTL.BLKNUM
>PUSHBI 3
>SYSCALL PrintF
rts
*--------------------------------------
CS.RUN.LL.DISKII.VR
>PUSHB hDevID
>PUSHBI IOCTL.READBLOCK
>PUSHEA.G IOCTL
>SYSCALL IOCTL
rts
*--------------------------------------
CS.RUN.MotorOn sec
.HS 90 BCC
CS.RUN.MotorOff clc

View File

@ -2,6 +2,8 @@ NEW
AUTO 3,1
.LIST OFF
*--------------------------------------
IO.D2.SeekTime .EQ 200
*--------------------------------------
IO.D2.Ph0Off .EQ $C080
IO.D2.Ph0On .EQ $C081
IO.D2.Ph1Off .EQ $C082

View File

@ -3,32 +3,33 @@ NEW
*--------------------------------------
TCP.PORT.CIFS .EQ 445
*--------------------------------------
S.SMB.HEADER.PROTO .EQ 0 \xFF 'SMB'
S.SMB.HEADER.CMD .EQ 4
S.SMB.HEADER.CMD.NEGOTIATE .EQ $72
S.SMB.HEADER.CMD.SESSION.SETUP.ANDX .EQ $73
S.SMB.HEADER.CMD.TREE.CONNECT.ANDX .EQ $75
S.SMB.HEADER.STATUS .EQ 5
S.SMB.HEADER.FLAGS .EQ 9
S.SMB.HEADER.FLAGS.LOCKANDREADOK .EQ 1
S.SMB.HEADER.FLAGS.REPLY .EQ 128
S.SMB.HEADER.FLAGS2 .EQ 10
S.SMB.HEADER.FLAGS2.LONGNAMES .EQ %00000000.01000001
S.SMB.HEADER.FLAGS2.EAS .EQ %00000000.00000010
S.SMB.HEADER.FLAGS2.SECSIGN .EQ %00000000.00000100
S.SMB.HEADER.FLAGS2.DFS .EQ %00010000.00000000
S.SMB.HEADER.FLAGS2.READIFEXEC .EQ %00100000.00000000
S.SMB.HEADER.FLAGS2.NTSTATUS .EQ %01000000.00000000
S.SMB.HEADER.FLAGS2.UNICODE .EQ %10000000.00000000
S.SMB.HEADER.PIDHI .EQ 12
S.SMB.HEADER.SECFEAT .EQ 14
S.SMB.HEADER.RSVD .EQ 22
S.SMB.HEADER.TID .EQ 24
S.SMB.HEADER.PIDLO .EQ 26
S.SMB.HEADER.UID .EQ 28
S.SMB.HEADER.MID .EQ 30
S.SMB.H.PROTO .EQ 0 \xFF 'SMB'
S.SMB.H.CMD .EQ 4
S.SMB.H.CMD.TRANSACTION2 .EQ $32
S.SMB.H.CMD.NEGOTIATE .EQ $72
S.SMB.H.CMD.SESSION.SETUP.ANDX .EQ $73
S.SMB.H.CMD.TREE.CONNECT.ANDX .EQ $75
S.SMB.H.STATUS .EQ 5
S.SMB.H.FLAGS .EQ 9
S.SMB.H.FLAGS.LOCKANDREADOK .EQ 1
S.SMB.H.FLAGS.REPLY .EQ 128
S.SMB.H.FLAGS2 .EQ 10
S.SMB.H.FLAGS2.LONGNAMES .EQ %00000000.01000001
S.SMB.H.FLAGS2.EAS .EQ %00000000.00000010
S.SMB.H.FLAGS2.SECSIGN .EQ %00000000.00000100
S.SMB.H.FLAGS2.DFS .EQ %00010000.00000000
S.SMB.H.FLAGS2.READIFEXEC .EQ %00100000.00000000
S.SMB.H.FLAGS2.NTSTATUS .EQ %01000000.00000000
S.SMB.H.FLAGS2.UNICODE .EQ %10000000.00000000
S.SMB.H.PIDHI .EQ 12
S.SMB.H.SECFEAT .EQ 14
S.SMB.H.RSVD .EQ 22
S.SMB.H.TID .EQ 24
S.SMB.H.PIDLO .EQ 26
S.SMB.H.UID .EQ 28
S.SMB.H.MID .EQ 30
*
S.SMB.HEADER .EQ 32
S.SMB.H .EQ 32
*--------------------------------------
MAN
SAVE INC/NET.SMB.I

View File

@ -327,14 +327,13 @@ BB.Seek lda BB.HdrTrk get track we're on
* Current > Target, must move out
.2 cmp #$FF
beq .6 one QT remaining
bcs .60 one QT remaining
lda BB.CurrentQTrack
bit #1 from QT1 or QT3
bne .3
and #$FE from QT1 or QT3
dec
.3 dec
dec
.4 sta BB.CurrentQTrack
@ -355,29 +354,31 @@ BB.Seek lda BB.HdrTrk get track we're on
* Last QTrack
.6 bcs .60
tya
.6 tya
inc
inc
and #$f6
tax
lda IO.D2.Ph0On,x
bra .7
.60 tya
tax
* sec
adc #5
.7 and #$f6
tax
lda IO.D2.Ph0On,x
and #$f6
tay
lda IO.D2.Ph0On,y
phx
.7 phx
jsr BB.WaitPh
.80 jsr BB.Wait25600usec
plx
lda IO.D2.Ph0Off,x
lda IO.D2.Ph0Off,y
lda IO.D2.Ph0Off,x
bra BB.Read
.8 tya
@ -387,7 +388,7 @@ BB.Seek lda BB.HdrTrk get track we're on
bra .80
*--------------------------------------
BB.WaitPh lda #204
BB.WaitPh lda #IO.D2.SeekTime
.HS 2C BIT ABS
BB.Wait25600usec
lda #0
@ -399,8 +400,8 @@ BB.Wait25600usec
.2 dex (2) delay 86 usec.
bne .2 (2+) 2 + 5x16 + 2 + 2
ldx BB.Slotn0 (3)
bit IO.D2.RData,x (4) Slow down ACC boards
* ldx BB.Slotn0 (3)
* bit IO.D2.DrvOn,x (4) Slow down ACC boards
sbc #1 (2)
bne .1 (2+)

View File

@ -27,9 +27,13 @@ D2Recalibrate >PULLB DrvSlt
ldx Slotn0
ldy #166
ldy #168
.1 lda IO.D2.Ph0Off,x
dey
dey
tya
and #6
@ -37,18 +41,33 @@ D2Recalibrate >PULLB DrvSlt
tax
lda IO.D2.Ph0On,x
phx
lda #204
* lda #IO.D2.SeekTime
lda #0
jsr D2.Wait100usecA
plx
dey
dey
cpy #$fe
cpy #0
bne .1
jsr D2.Wait25600usec
jsr D2.Wait25600usec
jsr D2.Wait25600usec
jsr D2.Wait25600usec
jsr D2.Wait25600usec
ldx Slotn0
lda IO.D2.Ph0Off,x
jsr D2.Wait25600usec
jsr D2.Wait25600usec
jsr D2.Wait25600usec
jsr D2.Wait25600usec
jsr D2.Wait25600usec
jsr D2.Wait25600usec
jsr D2.Wait25600usec
jsr D2.Wait25600usec
jsr D2.Wait25600usec
jsr D2.Wait25600usec
clc
.9 rts
*/--------------------------------------
@ -75,70 +94,82 @@ D2MoveHead.1 ldy #0
* Current < Target, must move in
cmp #2
bcc .6 one QT remaining
bcc .5 one QT remaining
lda MoveFrom 2 or more
and #$FE from QT1 or QT3
inc
inc
bra .4
bra .3
* Current > Target, must move out
.2 cmp #$FF
beq .6 one QT remaining
bcs .6 one QT remaining
lda MoveFrom
bit #1 from QT1 or QT3
bne .3
dec
.3 dec
.4 sta MoveFrom
.3 and #$FE
sta MoveFrom
and #6
ora Slotn0
tax
pha
tya
beq .5
beq .4
lda IO.D2.Ph0Off,y
* nop
* nop
.5 lda IO.D2.Ph0On,x
* lda #1
* jsr D2.Wait100usecA
.4 lda IO.D2.Ph0On,x
ply
lda #204
* lda #IO.D2.SeekTime
lda #0
jsr D2.Wait100usecA
bra .1
* Last QTrack
.6 bcs .60
tya
.5 tya
inc
inc
bra .7
.60 tya
clc
adc #6
.7 and #$f6
and #$f6
tax
lda IO.D2.Ph0On,x
bra .7
.6 tya
tax
* sec
adc #5
and #$f6
tay
lda IO.D2.Ph0On,y
phx
lda #204
.7
* lda #IO.D2.SeekTime
lda #0
jsr D2.Wait100usecA
jsr D2.Wait25600usec
plx
lda IO.D2.Ph0Off,x
lda IO.D2.Ph0Off,y
* nop
* nop
* lda #1
* jsr D2.Wait100usecA
lda IO.D2.Ph0Off,x
jsr D2.Wait25600usec
rts
.8 tya
@ -147,11 +178,13 @@ D2MoveHead.1 ldy #0
jsr D2.Wait25600usec
lda IO.D2.Ph0Off,y
jsr D2.Wait25600usec
.9 rts
*--------------------------------------
D2.Wait25600usec
lda #0
D2.Wait100usecA sec (2)
D2.Wait100usecA phx (3)
.1 ldx #19 (2)
@ -159,26 +192,44 @@ D2.Wait100usecA sec (2)
bne .2 (3)
ldx Slotn0 (3)
bit IO.D2.RData,x (4) Slow down ACC boards
bit IO.D2.DrvOn,x (4) Slow down ACC boards
sec (2)
sbc #1 (2)
bne .1 (3)
rts
plx (4)
rts (6)
*/--------------------------------------
* # D2TrkRead16s
* Write a track (16 sectors)
* PUSHB = DSSS0000
* PUSHB = TrackNum * 4 : 0->136+
* PUSHW = Ptr to 16*256 buffer
* ## RETURN VALUE
* CC : success, A = VolNum
* CS : A = Error
*\--------------------------------------
D2TrkRead16s
D2TrkRead16s >PULLW ZPPtr1
>PULLB TrkNum
>PULLB DrvSlt
jsr CheckDiskII
bcs .9
lda VolNum
clc
.9 rts
*/--------------------------------------
* # D2TrkWrite16s
* Write a track (16 sectors)
* **In:**
* PUSHB = DSSS0000
* PUSHB = TrackNum * 4 : 0->136+
* PUSHW = Ptr to 16*256 buffer
* ## RETURN VALUE
* CC : success
* CS : A = Error
* A=0, currently starting/seeking...
*\--------------------------------------
D2TrkWrite16s >PULLW ZPPtr1
>PULLB TrkNum

View File

@ -415,8 +415,10 @@ SKT.shutdown.TCP
lda #S.SOCKET.TCP.S.FINWT1
jmp SKT.StoreTCB.S
.1 cmp #S.SOCKET.TCP.S.CLWAIT
beq .3
.2 lda #S.TCP.OPTIONS.RST
jsr TCP.OUT.SendOptA Send RST
bcs .9

View File

@ -220,25 +220,30 @@ TCP.IN.JMP.ESTBLSH
jsr TCP.AddAYToSktCacheAtX
jsr SKT.StoreTCB update socket
* jsr TCP.SetSocketTCPO.ACK ...and ack data
lda #S.TCP.OPTIONS.ACK
jsr TCP.OUT.SendOptA
* bcs *
jsr TCP.SetSocketTCPO.ACK ...and ack data
.7 ldy #S.TCP.OPTIONS
lda (ZPFrameInPtr),y
and #S.TCP.OPTIONS.FIN
beq .8
lda #S.SOCKET.TCP.S.CLWAIT
ldy #S.SOCKET.TCP.S
sta (ZPPtrSKT),y
jsr TCP.IN.ACKTheFIN
jsr SKT.StoreTCB update socket
lda #S.TCP.OPTIONS.FIN+S.TCP.OPTIONS.ACK
jsr TCP.SetSocketTCPO FIN received, Send FIN.ACK
* jsr TCP.OUT.SendOptA
.8 clc
lda #S.SOCKET.TCP.S.LASTACK
ldy #S.SOCKET.TCP.S
sta (ZPPtrSKT),y
.8 ldy #S.SOCKET.TCP.O
lda (ZPPtrSKT),y
beq .80
jmp TCP.OUT.SendOptA
.80 clc
rts
.9 sec
@ -249,6 +254,7 @@ TCP.IN.JMP.LASTACK
lda (ZPFrameInPtr),y
bit #S.TCP.OPTIONS.ACK
beq .8
ldy #S.SOCKET.TCP.S
lda #S.SOCKET.TCP.S.TIMEWT
sta (ZPPtrSKT),y
@ -275,7 +281,11 @@ TCP.IN.JMP.FINWT1
.1 jsr TCP.IN.ACKTheFIN FIN/ACK
lda #S.TCP.OPTIONS.FIN+S.TCP.OPTIONS.ACK
bra TCP.IN.JMP.FINWT.ACK Send FIN.ACK
jsr TCP.OUT.SendOptA FIN received, Send ACK
bcs TCP.IN.JMP.TIMEWT.RTS
lda #S.SOCKET.TCP.S.LASTACK
jmp SKT.StoreTCB.S
*--------------------------------------
TCP.IN.JMP.FINWT2
ldy #S.TCP.OPTIONS only accept ACK packet
@ -284,11 +294,11 @@ TCP.IN.JMP.FINWT2
bit #S.TCP.OPTIONS.ACK
beq TCP.IN.JMP.TIMEWT
jsr SKT.GetTCB
jsr TCP.IN.ACKTheFIN
lda #S.TCP.OPTIONS.ACK
TCP.IN.JMP.FINWT.ACK
jsr TCP.OUT.SendOptA FIN received, Send ACK
bcs TCP.IN.JMP.TIMEWT.RTS
@ -315,7 +325,9 @@ TCP.IN.JMP.TIMEWT.RTS
TCP.IN.ACKTheSYN
ldy #S.TCP.SEQNUM+3 Get Remote SEQ
ldx #3
sec
.3 lda (ZPFrameInPtr),y Set OUTACK=SEQ+1 for new socket...
adc #0
sta SKT.Cache+S.SOCKET.TCP.INSEQNUM,x
@ -326,8 +338,8 @@ TCP.IN.ACKTheSYN
rts
*--------------------------------------
TCP.IN.ACKTheFIN
jsr TCP.SetSocketTCPO.ACK
ldx #3
.1 inc SKT.Cache+S.SOCKET.TCP.INSEQNUM,x
bne .8
dex

View File

@ -35,7 +35,8 @@ L59A6 lda XRW.LastUnitUsed
jsr XRW.CheckMotorOnX check if previous drive running.
beq L59BD branch if stopped.
jsr XRW.Wait100usec
lda #1
jsr XRW.Wait100usecA
lda XRW.montimeh
bne L59A6
@ -95,9 +96,7 @@ L59BD ldx A2L
sec
rts
*--------------------------------------
* read/write a track/sector
regrwts ldy #3
regrwts ldy #1
sty XRW.RecalibrateCnt
sta XRW.ReqSector
@ -146,7 +145,8 @@ L537C plp was motor on ?
* motor was off, wait for it to speed up
L537F jsr XRW.Wait100usec wait 100us for each count in montime
L537F lda #1
jsr XRW.Wait100usecA wait 100us for each count in montime
lda XRW.montimeh
bmi L537F count up to 0000
@ -161,7 +161,7 @@ L537F jsr XRW.Wait100usec wait 100us for each count in montime
* locate the correct sector for this operation
L538E lda A4L get command #
beq L53FD if 0 then status command
beq XRW.TestWP if 0 then status command
lsr set carry = 1 for read, 0 for write.
bcs L5398 must prenibblize for write
@ -181,18 +181,21 @@ XRW.Recalibrate lda #MLI.E.IO anticipate a bad drive error.
dec XRW.RecalibrateCnt
bmi hndlerr
lda #54
lda #41
ldy XRW.UnitIndex
sta XRW.D2Trk-1,y
lda #0
sta XRW.D2VolNum-1,y
jsr XRW.Seek
bra L5398
L53BE lda XRW.AddrField.T
cmp XRW.ReqTrack
beq L53D5 ok
beq L53D5
jsr XRW.DEBUG
jsr XRW.DEBUG
ldy XRW.UnitIndex
@ -229,18 +232,18 @@ hndlerr sec
bit IO.D2.DrvOff,x turn off
rts
*--------------------------------------
L53F4 jsr XRW.Write
statdne bcc L53E7 if no errors.
lda #MLI.E.WRTPROT disk write protected.
bne hndlerr always
L53FD ldx A2L
XRW.TestWP ldx A2L
lda IO.D2.ReadProt,x test for write protected
lda IO.D2.ReadMode,x
rol write protect-->carry-->bit 0=1
lda IO.D2.RData,x keep in read mode
bra statdne
L53F4 jsr XRW.Write
statdne bcc L53E7 if no errors.
lda #MLI.E.WRTPROT disk write protected.
bne hndlerr always
*--------------------------------------
* determine if motor is stopped
*
@ -558,28 +561,28 @@ wnibl sta IO.D2.WLoad,x (5) nibl write
* montimel, montimeh are incremented once per 100 usec interval
* for motor on timing.
*--------------------------------------
XRW.Wait100usec lda #1
XRW.Wait100usecA
sec (2)
phx (3)
.1 ldx #17 (2)
.1 ldx #16 (2)
.2 dex (2)
bne .2 (3)
ldx A2L (3)
bit IO.D2.RData,x (4) Slow down ACC boards
bit IO.D2.DrvOn,x (4) Slow down ACC boards
inc XRW.montimel (6)
bne .3 (3)
inc XRW.montimeh (6)
.3 sbc #1 (2)
.3 sec (2)
sbc #1 (2)
bne .1 (3)
rts
plx (4)
rts (6)
*--------------------------------------
* read subroutine (16-sector format)
*
@ -732,11 +735,12 @@ L57CD pla place last byte into user buffer
* A = target track
*--------------------------------------
XRW.Seek pha save target track
ldx XRW.UnitIndex
jsr XRW.Trk2Qtrk
sta XRW.TargetQTrack
jsr XRW.DEBUG2
lda XRW.D2Trk-1,x
@ -758,69 +762,82 @@ XRW.Seek pha save target track
* Current < Target, must move in
cmp #2
bcc .6 one QT remaining
bcc .5 one QT remaining
lda XRW.CurrentQTrack
and #$FE from QT1 or QT3
inc
inc
bra .4
bra .3
* Current > Target, must move out
.2 cmp #$FF
beq .6 one QT remaining
lda XRW.CurrentQTrack
bit #1 from QT1 or QT3
bne .3
dec
.3 dec
bcs .6 one QT remaining
.4 sta XRW.CurrentQTrack
lda XRW.CurrentQTrack
dec
.3 and #$FE from QT1 or QT3
sta XRW.CurrentQTrack
and #6
ora A2L
tax
pha
tya
beq .5
beq .4
lda IO.D2.Ph0Off,y
* nop
* nop
.5 lda IO.D2.Ph0On,x
* lda #1
* jsr XRW.Wait100usecA
.4 lda IO.D2.Ph0On,x
ply
lda #204
* lda #IO.D2.SeekTime
lda #0
jsr XRW.Wait100usecA
bra .1
.6 bcs .60
tya
.5 tya
inc
inc
bra .7
.60 tya
clc
adc #6
.7 and #$f6
and #$f6
tax
lda IO.D2.Ph0On,x
bra .7
.6 tya
tax
* sec
adc #5
and #$f6
tay
lda IO.D2.Ph0On,y
phx
lda #204
.7
* lda #IO.D2.SeekTime
lda #0
jsr XRW.Wait100usecA
lda #0 wait 25.6 ms
jsr XRW.Wait100usecA
plx
lda IO.D2.Ph0Off,x
lda IO.D2.Ph0Off,y
* nop
* nop
* lda #1
* jsr XRW.Wait100usecA
lda IO.D2.Ph0Off,x
lda #0 wait 25.6 ms
jsr XRW.Wait100usecA
rts
.8 tya
@ -830,6 +847,9 @@ XRW.Seek pha save target track
jsr XRW.Wait100usecA
lda IO.D2.Ph0Off,y
lda #0 wait 25.6 ms
jsr XRW.Wait100usecA
.9 rts
*--------------------------------------
XRW.Trk2Qtrk asl x2
@ -924,22 +944,32 @@ rderr sec
*--------------------------------------
XRW.DEBUG phx
ldx #$20
ldx #$1c
lda XRW.AddrField.V
jsr .6
jsr XRW.DEBUG.PRINT
lda XRW.AddrField.T
jsr .6
jsr XRW.DEBUG.PRINT
inx
lda XRW.ReqTrack
jsr .6
jsr XRW.DEBUG.PRINT
plx
rts
.6 pha
XRW.DEBUG2 phx
pha
ldx #$26
jsr XRW.DEBUG.PRINT
pla
plx
rts
XRW.DEBUG.PRINT
pha
lsr
lsr
lsr

View File

@ -50,9 +50,11 @@ L.LIBTCPIP .DA LIBTCPIP
L.MSG.TCPIPERR .DA MSG.TCPIPERR
L.MSG.USAGE .DA MSG.USAGE
L.MSG.UNKNOWN .DA MSG.UNKNOWN
L.MSG.SESSION .DA MSG.SESSION
L.SMB.NegReq .DA SMB.NegReq
L.SMB.SessSetup .DA SMB.SessSetup
L.SMB.TreeConnReq .DA SMB.TreeConnReq
L.SMB.FindFirstReq .DA SMB.FindFirstReq
.DA 0
*--------------------------------------
* Called once at process creation
@ -69,7 +71,10 @@ CS.INIT >LDYA L.LIBTCPIP
* Called until exit with CS
* if RUN exits with CC, RUN entered again
*--------------------------------------
CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG is TCPIP loaded ?
CS.RUN >LDA.G hSocket
bne .8
>LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG is TCPIP loaded ?
bcs .9
>STYA ZPIPCfgPtr
@ -93,10 +98,23 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG is TCPIP loaded ?
jsr CS.RUN.Negotiate
bcs .9
>SLEEP
jsr CS.RUN.SessSetup
bcs .9
lda #0
>SLEEP
jsr CS.RUN.TreeConn
bcs .9
>SLEEP
jsr CIFS.OpenDir
bcs .9
.8 lda #0
clc
.9 rts
@ -207,13 +225,12 @@ CS.RUN.Negotiate
bra .99
.3 stx hResp
.3 sta hResp
>SYSCALL GetMemPtr
>STYA ZPRespPtr
ldy #$3f
lda (ZPRespPtr),y
iny
ora (ZPRespPtr),y
bne .9
ldy #$5B
@ -235,8 +252,115 @@ CS.RUN.Negotiate
rts
*--------------------------------------
CS.RUN.SessSetup
lda #TIMEOUT.MAX
sta TimeOut
.1 >PUSHWI SMB.SessSetup.end-SMB.SessSetup
>PUSHW L.SMB.SessSetup
>LDA.G hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Send
bcc .2
>SLEEP
ldx TimeOut
bne .1
bra .99
.2 >SLEEP
>LDA.G hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Recv
bcc .3
tay
beq .2
bra .99
.3 sta hResp
>SYSCALL GetMemPtr
>STYA ZPRespPtr
ldy #$3f
lda (ZPRespPtr),y
bne .9
ldy #$56
lda (ZPRespPtr),y
sta SMB.TreeConnReq.UID
iny
lda (ZPRespPtr),y
sta SMB.TreeConnReq.UID+1
>PUSHW L.MSG.SESSION
lda #$63
clc
adc ZPRespPtr
tay
lda #0
adc ZPRespPtr+1
>PUSHYA
>PUSHBI 2
>SYSCALL Printf
lda hResp
>SYSCALL FreeMem
* clc
rts
.9 lda hResp
>SYSCALL FreeMem
.99 lda #MLI.E.INVPATH
sec
rts
*--------------------------------------
CS.RUN.TreeConn lda #TIMEOUT.MAX
sta TimeOut
.1 >PUSHWI SMB.TreeConnReq.end-SMB.TreeConnReq
>PUSHW L.SMB.TreeConnReq
>LDA.G hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Send
bcc .2
>SLEEP
ldx TimeOut
bne .1
bra .99
.2 >SLEEP
>LDA.G hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Recv
bcc .3
tay
beq .2
bra .99
.3 sta hResp
>SYSCALL GetMemPtr
>STYA ZPRespPtr
ldy #$3f
lda (ZPRespPtr),y
bne .9
lda hResp
>SYSCALL FreeMem
* clc
rts
.9 lda hResp
>SYSCALL FreeMem
.99 lda #MLI.E.INVPATH
sec
rts
*--------------------------------------
CS.DOEVENT lda (pEvent)
@ -260,6 +384,58 @@ CS.QUIT >LDA.G hSocket
.8 clc
rts
*--------------------------------------
CIFS.OpenDir lda #TIMEOUT.MAX
sta TimeOut
.1 >PUSHWI SMB.FindFirstReq.end-SMB.FindFirstReq
>PUSHW L.SMB.FindFirstReq
>LDA.G hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Send
bcc .2
>SLEEP
ldx TimeOut
bne .1
bra .99
.2 >SLEEP
>LDA.G hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Recv
bcc .3
tay
beq .2
bra .99
.3 sta hResp
>SYSCALL GetMemPtr
>STYA ZPRespPtr
ldy #$3f
lda (ZPRespPtr),y
bne .9
lda hResp
>SYSCALL FreeMem
* clc
rts
.9 lda hResp
>SYSCALL FreeMem
.99 lda #MLI.E.INVPATH
sec
rts
*--------------------------------------
CIFS.ReadDir
*--------------------------------------
CIFS.CloseDir
clc
rts
*--------------------------------------
CS.END
*--------------------------------------
* Initialized DATA
@ -269,6 +445,7 @@ hLIBTCPIP .BS 1
MSG.TCPIPERR .AZ "HTTPD:TCP/IP Not initialized properly."
MSG.USAGE .AZ "Usage : CIFSD <ip|host> sharename mountpoint"
MSG.UNKNOWN .AZ "%s: Unknown host\r\n"
MSG.SESSION .AZ "Connected to: %s\r\n"
*--------------------------------------
SMB.NegReq .DA #0 DIRECT TCP TRANSPORT
.DA #0 24 BITS LENGTH
@ -276,10 +453,10 @@ SMB.NegReq .DA #0 DIRECT TCP TRANSPORT
.DA #SMB.NegReq.end-1-*
.DA #$FF
.AS "SMB"
.DA #S.SMB.HEADER.CMD.NEGOTIATE
.DA #S.SMB.H.CMD.NEGOTIATE
.HS 00000000
.DA #0 S.SMB.HEADER.FLAGS
.DA S.SMB.HEADER.FLAGS2.LONGNAMES
.DA #0 S.SMB.H.FLAGS
.DA S.SMB.H.FLAGS2.LONGNAMES
.DA 0 PIDHI
.HS 0000000000000000 SECFEAT
.DA 0 RSVD
@ -287,9 +464,12 @@ SMB.NegReq .DA #0 DIRECT TCP TRANSPORT
.DA $FEFF PIDLO
.DA 0 UID
.DA 0 MID
.DA #0 WORD COUNT
.DA #SMB.NegReq.end-2-*
.DA /SMB.NegReq.end-2-*
.DA #2
.AZ "PC NETWORK PROGRAM 1.0"
.DA #2
@ -314,8 +494,40 @@ SMB.SessSetup .DA #0 DIRECT TCP TRANSPORT
.DA #SMB.SessSetup.end-1-*
.DA #$FF
.AS "SMB"
.DA #S.SMB.HEADER.CMD.SESSION.SETUP.ANDX
.DA #S.SMB.H.CMD.SESSION.SETUP.ANDX
.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 $FEFF PIDLO
.DA 0 UID
.DA 0 MID
.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
.DA 0 CI PASS LEN
.DA 0 CS PASS LEN
.HS 00000000
.HS 00000000 CAPABILITIES
.DA #SMB.SessSetup.end-2-*
.DA /SMB.SessSetup.end-2-*
SMB.SessSetup.SecBlob
* .AZ "" Password
.AZ "GUEST" Account Name
.AZ "?" Primary Domain
SMB.SessSetup.SecBlob.LEN .EQ *-SMB.SessSetup.SecBlob
.AZ "A2osX" Native OS
.AZ "A2osX-CIFSD" Native LANMAN
SMB.SessSetup.end .EQ *
*--------------------------------------
SMB.TreeConnReq .DA #0 DIRECT TCP TRANSPORT
@ -324,9 +536,80 @@ SMB.TreeConnReq .DA #0 DIRECT TCP TRANSPORT
.DA #SMB.TreeConnReq.end-1-*
.DA #$FF
.AS "SMB"
.DA #S.SMB.HEADER.CMD.TREE.CONNECT.ANDX
.DA #S.SMB.H.CMD.TREE.CONNECT.ANDX
.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 $FEFF PIDLO
SMB.TreeConnReq.UID
.DA 0 UID
.DA 0 MID
.DA #4 WORD COUNT
.HS FF000000 NO MORE CMD
.DA 0
.DA 1 PASSWORD LEN
.DA #SMB.TreeConnReq.end-2-*
.DA /SMB.TreeConnReq.end-2-*
.AZ "" PASSWORD
.AZ "\\SV-W2K-3\Apple" PATH
.AZ "?????"
SMB.TreeConnReq.end .EQ *
*--------------------------------------
SMB.FindFirstReq
.DA #0 DIRECT TCP TRANSPORT
.DA #0 24 BITS LENGTH
.DA /SMB.TreeConnReq.end-1-*
.DA #SMB.TreeConnReq.end-1-*
.DA #$FF
.AS "SMB"
.DA #S.SMB.H.CMD.TRANSACTION2
.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 $FEFF PIDLO
.DA 0 UID
.DA 0 MID
.DA #$0F WORD COUNT
.DA 0 TotalParamCount
.DA 0 TotalDataCount
.DA 256 MaxParameterCount
.DA 1024 MaxDataCount
.DA #1 MaxSetupCount
.HS 00 Reserved1
.DA 0 Flags
.HS 00000000 Timeout
.HS 0000 Reserved2
.HS 0000 ParameterCount
.HS 0000 ParameterOffset
.DA SMB.FindFirstReq.end-2-* DataCount
.HS 0000 DataOffset
.DA #1 SetupCount
.HS 00 Reserved3
.DA 1 TRANS2_FIND_FIRST2
.DA SMB.FindFirstReq.end-2-*
.DA $373E SearchAttributes
.DA 10 SearchCount
.DA 0 Flags
.DA $0104 InformationLevel
.HS 00000000 SearchStorageType
.DA "*" FileName
SMB.FindFirstReq.end
*--------------------------------------
.DUMMY
.OR 0