Kernel 0.94+

This commit is contained in:
Rémy GIBERT 2021-01-24 20:44:43 +01:00
parent cfa13a36bb
commit 01d23aec78
13 changed files with 1102 additions and 250 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -16,6 +16,7 @@ NEW
ZS.START ZS.START
ZPAtlkParams .BS 2 ZPAtlkParams .BS 2
ZPPTR1 .BS 2 ZPPTR1 .BS 2
BufPtr .BS 2
hBuf .BS 1 hBuf .BS 1
ZS.END .ED ZS.END .ED
*-------------------------------------- *--------------------------------------
@ -43,6 +44,8 @@ L.MSG.ATKERR .DA MSG.ATKERR
L.MSG.GETINFO .DA MSG.GETINFO L.MSG.GETINFO .DA MSG.GETINFO
L.MSG.MYZONE .DA MSG.MYZONE L.MSG.MYZONE .DA MSG.MYZONE
L.SEARCH.STRING .DA SEARCH.STRING L.SEARCH.STRING .DA SEARCH.STRING
L.MSG.ZONES .DA MSG.ZONES
L.MSG.PSTR .DA MSG.PSTR
L.MSG.DUMP0 .DA MSG.DUMP0 L.MSG.DUMP0 .DA MSG.DUMP0
L.MSG.DUMP .DA MSG.DUMP L.MSG.DUMP .DA MSG.DUMP
.DA 0 .DA 0
@ -55,6 +58,15 @@ CS.RUN jsr CS.RUN.GetInfo
jsr CS.RUN.GetMyZone jsr CS.RUN.GetMyZone
>LDYAI 1024
>SYSCALL GetMem
bcs .9
>STYA BufPtr
stx hBuf
jsr CS.RUN.GetZoneList
jsr CS.RUN.LookupName jsr CS.RUN.LookupName
lda #0 lda #0
@ -106,6 +118,41 @@ CS.RUN.GetMyZone
>PUSHEA.G ZoneBuf >PUSHEA.G ZoneBuf
>PUSHBI 2 >PUSHBI 2
>SYSCALL PrintF >SYSCALL PrintF
.9 rts
*--------------------------------------
CS.RUN.GetZoneList
>LDYAI 1024
>STYA.G P.LookupName+$08 BufLen
>LDYA BufPtr
>STYA.G P.LookupName+$0A BufPtr
>LDA.G P.GetInfo+$0A BRIDGE
>STA.G P.GetZoneList+$0E
lda #1
>STA.G P.GetZoneList+$0F Start Index
lda #4 1/4 sec
>STA.G P.GetZoneList+$11 RetInt
>STA.G P.GetZoneList+$12 RetCnt
>LEA.G P.GetZoneList
ldx #AT.GetZoneList
jsr CS.RUN.GOATLK
bcs .9
>LDYA L.MSG.ZONES
>SYSCALL PutS
>LDA.G P.GetZoneList+$13 Zone #
beq .8
tax
>LDYA BufPtr
jsr CS.RUN.PrintListYAX
.8 clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CS.RUN.LookupName CS.RUN.LookupName
@ -115,15 +162,11 @@ CS.RUN.LookupName
lda #4 lda #4
>STA.G P.LookupName+$0C RetInt >STA.G P.LookupName+$0C RetInt
>STA.G P.LookupName+$0D RetCnt >STA.G P.LookupName+$0D RetCnt
>LDYAI 1024 >LDYAI 1024
>STYA.G P.LookupName+$10 BufLen >STYA.G P.LookupName+$10 BufLen
>LDYAI 1024 >LDYA BufPtr
>SYSCALL GetMem
bcs .99
>STYA ZPPTR1 >STYA ZPPTR1
stx hBuf
>STYA.G P.LookupName+$12 BufPtr >STYA.G P.LookupName+$12 BufPtr
lda #16 lda #16
@ -213,6 +256,30 @@ CS.RUN.GOATLK >STYA ZPAtlkParams
sec sec
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CS.RUN.PrintListYAX
>STYA ZPPTR1
.1 phx
>PUSHW L.MSG.PSTR
>PUSHW ZPPTR1
>PUSHBI 2
>SYSCALL PrintF
plx
bcs .9
lda (ZPPTR1)
sec
adc ZPPTR1
sta ZPPTR1
bcc .2
inc ZPPTR1+1
.2 dex
bne .1
.8 clc
.9 rts
*--------------------------------------
CS.DOEVENT sec CS.DOEVENT sec
rts rts
*-------------------------------------- *--------------------------------------
@ -233,6 +300,8 @@ MSG.MYZONE .AZ "Zone Name :%S\r\n"
SEARCH.STRING >PSTR "=" SEARCH.STRING >PSTR "="
>PSTR "=" >PSTR "="
>PSTR "*" >PSTR "*"
MSG.ZONES .AZ "Zone list :"
MSG.PSTR .AZ " %S\r\n"
MSG.DUMP0 .AZ "Net Nod SkT En# Object:Type@Zone" MSG.DUMP0 .AZ "Net Nod SkT En# Object:Type@Zone"
MSG.DUMP .AZ "\e[?7l%H %h %h %h %S:%S@%S\r\n" MSG.DUMP .AZ "\e[?7l%H %h %h %h %S:%S@%S\r\n"
*-------------------------------------- *--------------------------------------
@ -240,8 +309,9 @@ MSG.DUMP .AZ "\e[?7l%H %h %h %h %S:%S@%S\r\n"
.OR 0 .OR 0
DS.START DS.START
P.GetInfo .BS $0F P.GetInfo .BS $0F
P.GetMyZone .BS $0F P.GetZoneList .BS $19
P.LookupName .BS $17 P.GetMyZone .BS $10
P.LookupName .BS $18
ZoneBuf .BS 33 ZoneBuf .BS 33
DS.END .ED DS.END .ED
*-------------------------------------- *--------------------------------------

View File

@ -40,7 +40,7 @@ CS.START cld
*-------------------------------------- *--------------------------------------
.1 .DA CS.INIT .1 .DA CS.INIT
.DA CS.RUN .DA CS.RUN
.DA CS.DOEVENT .DA CS.DOEVENT
.DA CS.QUIT .DA CS.QUIT
L.MSG.USAGE .DA MSG.USAGE L.MSG.USAGE .DA MSG.USAGE
L.MSG.NOATK .DA MSG.NOATK L.MSG.NOATK .DA MSG.NOATK
@ -48,8 +48,11 @@ L.MSG.ATKERR .DA MSG.ATKERR
L.MSG.GETINFO .DA MSG.GETINFO L.MSG.GETINFO .DA MSG.GETINFO
L.MSG.NETNODPORT .DA MSG.NETNODPORT L.MSG.NETNODPORT .DA MSG.NETNODPORT
L.MSG.NOTFOUND .DA MSG.NOTFOUND L.MSG.NOTFOUND .DA MSG.NOTFOUND
L.MSG.SRVINFO .DA MSG.SRVINFO L.MSG.SRVINFO1 .DA MSG.SRVINFO1
L.FPLogin .DA FPLogin L.MSG.SRVINFO2 .DA MSG.SRVINFO2
L.MSG.PSTR .DA MSG.PSTR
L.FPLogin.Guest .DA FPLogin.Guest
L.FPLogin.Auth .DA FPLogin.Auth
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
CS.INIT clc CS.INIT clc
@ -64,16 +67,16 @@ CS.RUN ldy #S.PS.ARGC
jsr CS.RUN.LookupName jsr CS.RUN.LookupName
bcs .9 bcs .9
jsr CS.RUN.GetParms jsr CS.RUN.GetParms
bcs .9 bcs .9
jsr CS.RUN.GetStatus jsr CS.RUN.GetStatus
bcs .9 bcs .9
jsr CS.RUN.FILogin jsr CS.RUN.FILogin
bcs .9 bcs .9
lda #0 lda #0
sec sec
.9 rts .9 rts
@ -95,13 +98,13 @@ CS.RUN.GetInfo >LEA.G P.GetInfo
>PUSHB.G P.GetInfo+$08 THIS-NET >PUSHB.G P.GetInfo+$08 THIS-NET
>PUSHB.G P.GetInfo+$09 THIS-NET >PUSHB.G P.GetInfo+$09 THIS-NET
>PUSHB.G P.GetInfo+$0E NODE >PUSHB.G P.GetInfo+$0E NODE
>PUSHB.G P.GetInfo+$0A BRIDGE >PUSHB.G P.GetInfo+$0A BRIDGE
>PUSHB.G P.GetInfo+$0C HARDWARE ID >PUSHB.G P.GetInfo+$0C HARDWARE ID
>PUSHB.G P.GetInfo+$0D HARDWARE ID >PUSHB.G P.GetInfo+$0D HARDWARE ID
>PUSHB.G P.GetInfo+$0B ROM VERSION >PUSHB.G P.GetInfo+$0B ROM VERSION
>PUSHBI 7 >PUSHBI 7
>SYSCALL PrintF >SYSCALL PrintF
rts rts
@ -117,7 +120,7 @@ CS.RUN.LookupName
lda #1 lda #1
>SYSCALL ArgV >SYSCALL ArgV
>STYA ZPPTR1 >STYA ZPPTR1
>LEA.G NameBuf >LEA.G NameBuf
>STYA ZPPTR2 >STYA ZPPTR2
>STYA.G P.LookupName+$08 >STYA.G P.LookupName+$08
@ -127,11 +130,11 @@ CS.RUN.LookupName
.1 iny .1 iny
lda (ZPPTR1),y lda (ZPPTR1),y
bne .1 bne .1
tya tya
tax tax
jsr CS.RUN.PutPtr2 jsr CS.RUN.PutPtr2
.2 ldy #0 .2 ldy #0
.3 lda (ZPPTR1),y .3 lda (ZPPTR1),y
@ -139,29 +142,29 @@ CS.RUN.LookupName
iny iny
dex dex
bne .3 bne .3
ldx #SEARCH.STRING.Len ldx #SEARCH.STRING.Len
ldy #0 ldy #0
.4 lda SEARCH.STRING,y .4 lda SEARCH.STRING,y
jsr CS.RUN.PutPtr2 jsr CS.RUN.PutPtr2
iny iny
dex dex
bne .4 bne .4
lda #4 lda #4
>STA.G P.LookupName+$C RetInt >STA.G P.LookupName+$C RetInt
>STA.G P.LookupName+$D RetCnt >STA.G P.LookupName+$D RetCnt
>LDYAI 5+99 >LDYAI 5+99
>STYA.G P.LookupName+$10 BufLen >STYA.G P.LookupName+$10 BufLen
>LEA.G LookupBuf >LEA.G LookupBuf
>STYA.G P.LookupName+$12 BufPtr >STYA.G P.LookupName+$12 BufPtr
lda #1 lda #1
>STA.G P.LookupName+$16 MaxMatch >STA.G P.LookupName+$16 MaxMatch
>LEA.G P.LookupName >LEA.G P.LookupName
ldx #AT.LookupName ldx #AT.LookupName
jsr CS.RUN.GOATLK jsr CS.RUN.GOATLK
@ -174,7 +177,7 @@ CS.RUN.LookupName
ldy #LookupBuf ldy #LookupBuf
ldx #4 ldx #4
.5 lda (pData),y .5 lda (pData),y
>PUSHA >PUSHA
iny iny
@ -196,36 +199,36 @@ CS.RUN.GetParms >LEA.G P.GetParms
ldx #AT.GetParms ldx #AT.GetParms
jsr CS.RUN.GOATLK jsr CS.RUN.GOATLK
bcs .9 bcs .9
>LDYA.G P.GetParms+$4 >LDYA.G P.GetParms+$4
>SYSCALL GetMem >SYSCALL GetMem
bcs .9 bcs .9
>STYA ZPCmdBuf >STYA ZPCmdBuf
stx hCmdBuf stx hCmdBuf
>LDYA.G P.GetParms+$6 >LDYA.G P.GetParms+$6
>SYSCALL GetMem >SYSCALL GetMem
bcs .9 bcs .9
>STYA ZPReplyBuf >STYA ZPReplyBuf
stx hReplyBuf stx hReplyBuf
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CS.RUN.GetStatus CS.RUN.GetStatus
>LDYA.G LookupBuf >LEA.G LookupBuf
>STYA ZPPTR1 >STYA ZPPTR1
>LEA.G P.GetStatus+$8 >LEA.G P.GetStatus+$8
>STYA ZPPTR2 >STYA ZPPTR2
ldy #3 ldy #3
.1 lda (ZPPTR1),y copy NETWORK/NODE/SOCKET .1 lda (ZPPTR1),y copy NETWORK/NODE/SOCKET
sta (ZPPTR2),y sta (ZPPTR2),y
dey dey
bpl .1 bpl .1
>LDYA.G P.GetParms+$6 >LDYA.G P.GetParms+$6
>STYA.G P.GetStatus+$C Reply buffer length >STYA.G P.GetStatus+$C Reply buffer length
@ -236,51 +239,212 @@ CS.RUN.GetStatus
ldx #AT.GetStatus ldx #AT.GetStatus
jsr CS.RUN.GOATLK jsr CS.RUN.GOATLK
bcs .9 bcs .9
>PUSHW L.MSG.SRVINFO >PUSHW L.MSG.SRVINFO1
lda (ZPReplyBuf) Offset to Machine Type lda #10 Server Name
clc clc
adc ZPReplyBuf adc ZPReplyBuf
tay tay
lda #0 lda #0
adc ZPReplyBuf+1 adc ZPReplyBuf+1
>PUSHYA >PUSHYA
ldy #1
lda (ZPReplyBuf),y Offset to Machine Type
clc
adc ZPReplyBuf
pha
lda (ZPReplyBuf)
adc ZPReplyBuf+1
ply
>PUSHYA
>PUSHBI 4
>SYSCALL PrintF
ldy #3 Offset to Version list
lda (ZPReplyBuf),y
clc
adc ZPReplyBuf
pha
dey
lda (ZPReplyBuf),y
adc ZPReplyBuf+1
ply
jsr CS.RUN.PrintListYA
>LDYA L.MSG.SRVINFO2
>SYSCALL PutS
ldy #5 Offset to UAM list
lda (ZPReplyBuf),y
clc
adc ZPReplyBuf
pha
dey
lda (ZPReplyBuf),y
adc ZPReplyBuf+1
ply
jsr CS.RUN.PrintListYA
clc
.9 rts
*--------------------------------------
CS.RUN.PrintListYA
>STYA ZPPTR1
lda (ZPPTR1)
beq .8
tax
inc ZPPTR1
bne .1
inc ZPPTR1+1
.1 phx
>PUSHW L.MSG.PSTR
>PUSHW ZPPTR1
>PUSHBI 2 >PUSHBI 2
>SYSCALL PrintF >SYSCALL PrintF
plx
.9 rts bcs .9
lda (ZPPTR1)
sec
adc ZPPTR1
sta ZPPTR1
bcc .2
inc ZPPTR1+1
.2 dex
bne .1
.8 clc
.9 rts
*-------------------------------------- *--------------------------------------
CS.RUN.FILogin >LDYA.G LookupBuf CS.RUN.FILogin >LEA.G LookupBuf
>STYA ZPPTR1 >STYA ZPPTR1
>LEA.G P.FILogin+$4 >LEA.G P.FILogin+$4
>STYA ZPPTR2 >STYA ZPPTR2
ldy #3 ldy #3
.1 lda (ZPPTR1),y copy NETWORK/NODE/SOCKET .1 lda (ZPPTR1),y copy NETWORK/NODE/SOCKET
sta (ZPPTR2),y sta (ZPPTR2),y
dey dey
bpl .1 bpl .1
>LDYAI FPLogin.Len
>STYA.G P.FILogin+$8 Cmd buffer length
>LDYA L.FPLogin
>STYA.G P.FILogin+$A
>LDYA.G P.GetParms+$6 >LDYA.G P.GetParms+$6
>STYA.G P.FILogin+$E Reply buffer length >STYA.G P.FILogin+$E Reply buffer length
>LDYA ZPReplyBuf >LDYA ZPReplyBuf
>STYA.G P.FILogin+$10 >STYA.G P.FILogin+$10
>LEA.G P.FILogin lda #2 USERNAME
>SYSCALL ArgV
bcc .2
>LDYAI FPLogin.Guest.Len
>STYA.G P.FILogin+$8 Cmd buffer length
>LDYA L.FPLogin.Guest
>STYA.G P.FILogin+$A
bra .80
*--------------------------------------
.2 >STYA ZPPTR1
ldx #FPLogin.Auth.Len
ldy #0
.3 lda FPLogin.Auth,y
sta (ZPCmdBuf),y
iny
dex
bne .3
phy
ldy #$ff
.4 iny
lda (ZPPTR1),y
bne .4
tya
tax
ply
sta (ZPCmdBuf),y USERNAME Len
iny
.5 jsr CS.RUN.GetPtr1
sta (ZPCmdBuf),y
iny
dex
bne .5
tya
lsr
bcc .6
lda #0
sta (ZPCmdBuf),y
iny
.6 phy
lda #3 PASSWORD
>SYSCALL ArgV
bcs .99
>STYA ZPPTR1
ldx #8
ply
.7 jsr CS.RUN.GetPtr1
beq .8
sta (ZPCmdBuf),y
iny
dex
bne .7
.8 txa
beq .10
lda #0
.9 sta (ZPCmdBuf),y
iny
dex
bne .9
.10 >STYA.G P.FILogin+$8 Cmd buffer length
>LDYA ZPCmdBuf
>STYA.G P.FILogin+$A
.80 >LEA.G P.FILogin
ldx #AT.FILogin ldx #AT.FILogin
jmp CS.RUN.GOATLK jsr CS.RUN.GOATLK
bcs .89
>LDA.G P.FILogin+$14
sta A2osX.ATLKSID
.89 rts
.99 ply
lda #E.SYN
sec
rts
*-------------------------------------- *--------------------------------------
CS.RUN.GOATLK >STYA ZPAtlkParams CS.RUN.GOATLK >STYA ZPAtlkParams
@ -295,49 +459,58 @@ CS.RUN.GOATLK >STYA ZPAtlkParams
pha pha
>PUSHW L.MSG.ATKERR >PUSHW L.MSG.ATKERR
ldy #1 ldy #1
lda (ZPAtlkParams),y lda (ZPAtlkParams),y
>PUSHA >PUSHA
ldy #3 ldy #3
lda (ZPAtlkParams),y lda (ZPAtlkParams),y
>PUSHA >PUSHA
dey dey
lda (ZPAtlkParams),y lda (ZPAtlkParams),y
>PUSHA >PUSHA
>PUSHBI 3 >PUSHBI 3
>SYSCALL PrintF >SYSCALL PrintF
pla pla
sec sec
.9 rts .9 rts
*--------------------------------------
CS.RUN.GetPtr1 lda (ZPPTR1)
beq .8
inc ZPPTR1
bne .8
inc ZPPTR1+1
.8 rts
*-------------------------------------- *--------------------------------------
CS.RUN.PutPtr2 sta (ZPPTR2) CS.RUN.PutPtr2 sta (ZPPTR2)
inc ZPPTR2 inc ZPPTR2
bne .8 bne .8
inc ZPPTR2+1 inc ZPPTR2+1
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
CS.DOEVENT sec CS.DOEVENT sec
rts rts
*-------------------------------------- *--------------------------------------
CS.QUIT lda hReplyBuf CS.QUIT lda hReplyBuf
beq .1 beq .1
>SYSCALL FreeMem >SYSCALL FreeMem
.1 lda hCmdBuf .1 lda hCmdBuf
beq .2 beq .2
>SYSCALL FreeMem >SYSCALL FreeMem
.2 clc .2 clc
rts rts
*-------------------------------------- *--------------------------------------
CS.END CS.END
MSG.USAGE .AZ "Usage : ATLOGON <SERVER> [USER] [PASSWORD]" MSG.USAGE .AZ "Usage : ATLOGON <SERVER> [USER] [PASSWORD]"
MSG.NOATK .AZ "AppleTalk Not Loaded." MSG.NOATK .AZ "AppleTalk Not Loaded."
MSG.ATKERR .AZ "AppleTalk Call %h, ERR:%H\r\n" MSG.ATKERR .AZ "AppleTalk Call %h, ERR:%H\r\n"
@ -346,24 +519,34 @@ MSG.GETINFO .AS "Network/Node:%H/%h\r\n"
.AZ "HWID/ROMVER :%H/%h\r\n" .AZ "HWID/ROMVER :%H/%h\r\n"
MSG.NETNODPORT .AZ "Server Address : %H/%h:%h\r\n" MSG.NETNODPORT .AZ "Server Address : %H/%h:%h\r\n"
MSG.NOTFOUND .AZ "Server not found" MSG.NOTFOUND .AZ "Server not found"
MSG.SRVINFO .AS "Server Type : %S\r\n" MSG.SRVINFO1 .AS "Server Name : %S\r\n"
.DA #0 .AS "Server Type : %S\r\n"
.AZ "AFP Dialects :\r\n"
MSG.SRVINFO2 .AZ "Supported UAMs :"
MSG.PSTR .AZ " %S\r\n"
SEARCH.STRING >PSTR "AFPServer" SEARCH.STRING >PSTR "AFPServer"
>PSTR "*" >PSTR "*"
SEARCH.STRING.Len .EQ *-SEARCH.STRING SEARCH.STRING.Len .EQ *-SEARCH.STRING
*-------------------------------------- *--------------------------------------
FPLogin .DA #12 FPLogin.Guest .DA #18
.DA #0 * .DA #0
>PSTR "AFPVersion 1.1" >PSTR "AFPVersion 2.1"
>PSTR "No User Authent" >PSTR "No User Authent"
.DA #0 FPLogin.Guest.Len .EQ *-FPLogin.Guest
FPLogin.Len .EQ *-FPLogin *--------------------------------------
FPLogin.Auth .DA #18
* .DA #0
>PSTR "AFPVersion 2.1"
>PSTR "Cleartxt Passwrd"
* >PSTR "username"
* .AS "password" 8 bytes, word aligned, 0 padded
FPLogin.Auth.Len .EQ *-FPLogin.Auth
*-------------------------------------- *--------------------------------------
.DUMMY .DUMMY
.OR 0 .OR 0
DS.START DS.START
P.GetInfo .BS $0F P.GetInfo .BS $0F
P.LookupName .BS $17 P.LookupName .BS $18
P.GetParms .BS $07 P.GetParms .BS $07
P.GetStatus .BS $14 P.GetStatus .BS $14
P.FILogin .BS $19 P.FILogin .BS $19

View File

@ -0,0 +1,356 @@
NEW
AUTO 3,1
.LIST OFF
.OP 65C02
.OR $2000
.TF bin/atmount
*--------------------------------------
.INB inc/macros.i
.INB inc/a2osx.i
.INB inc/mli.i
.INB inc/mli.e.i
.INB inc/appletalk.i
*--------------------------------------
.DUMMY
.OR ZPBIN
ZS.START
ZPAtlkParams .BS 2
hCmdBuf .BS 1
hReplyBuf .BS 1
ZPCmdBuf .BS 2
ZPReplyBuf .BS 2
ZPPTR1 .BS 2
ZPPTR2 .BS 2
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 CS
.DA DS.END-DS.START DS
.DA #64 Stack Size
.DA #ZS.END-ZS.START Zero Page Size
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
.DA CS.QUIT
L.MSG.USAGE .DA MSG.USAGE
L.MSG.NOATK .DA MSG.NOATK
L.MSG.NOSESSION .DA MSG.NOSESSION
L.MSG.ATKERR .DA MSG.ATKERR
L.MSG.GETINFO .DA MSG.GETINFO
L.MSG.VOLLIST .DA MSG.VOLLIST
L.MSG.VOL .DA MSG.VOL
L.MSG.MOUNTED .DA MSG.MOUNTED
L.FPGetSrvrParms .DA FPGetSrvrParms
.DA 0
*--------------------------------------
CS.INIT clc
rts
*--------------------------------------
CS.RUN jsr CS.RUN.GetInfo
bcs .9
lda A2osX.ATLKSID
bne .1
>LDYA L.MSG.NOSESSION
>SYSCALL PutS
lda #0
sec
rts
.1 jsr CS.RUN.GetParms
bcs .9
lda #1
>SYSCALL ArgV
bcc .2
jsr CS.RUN.ListVols
bcs .9
lda #0
sec
rts
.2 jsr CS.RUN.MountVol
bcs .9
lda #0
sec
.9 rts
*--------------------------------------
CS.RUN.USAGE >PUSHW L.MSG.USAGE
>PUSHBI 0
>SYSCALL PrintF
lda #E.SYN
sec
rts
*--------------------------------------
CS.RUN.GetInfo >LEA.G P.GetInfo
ldx #AT.GetInfo
jsr CS.RUN.GOATLK
bcs .9
>PUSHW L.MSG.GETINFO
>PUSHB.G P.GetInfo+$08 THIS-NET
>PUSHB.G P.GetInfo+$09 THIS-NET
>PUSHB.G P.GetInfo+$0E NODE
>PUSHB.G P.GetInfo+$0A BRIDGE
>PUSHB.G P.GetInfo+$0C HARDWARE ID
>PUSHB.G P.GetInfo+$0D HARDWARE ID
>PUSHB.G P.GetInfo+$0B ROM VERSION
>PUSHBI 7
>SYSCALL PrintF
rts
.9 pha
>LDYA L.MSG.NOATK
>SYSCALL PutS
pla
sec
rts
*--------------------------------------
CS.RUN.GetParms >LEA.G P.GetParms
ldx #AT.GetParms
jsr CS.RUN.GOATLK
bcs .9
>LDYA.G P.GetParms+$4
>SYSCALL GetMem
bcs .9
>STYA ZPCmdBuf
stx hCmdBuf
>LDYA.G P.GetParms+$6
>SYSCALL GetMem
bcs .9
>STYA ZPReplyBuf
stx hReplyBuf
.9 rts
*--------------------------------------
CS.RUN.ListVols lda A2osX.ATLKSID
>STA.G P.Command+$08 Session Ref
>LDYAI FPGetSrvrParms.Len
>STYA.G P.Command+$09
>LDYA L.FPGetSrvrParms
>STYA.G P.Command+$0B
>LDYA.G P.GetParms+$6 Reply Size
>STYA.G P.Command+$0F
>LDYA ZPReplyBuf
>STYA.G P.Command+$11
>LEA.G P.Command
ldx #AT.Command
jsr CS.RUN.GOATLK
bcs .9
>LDYA L.MSG.VOLLIST
>SYSCALL Puts
lda ZPReplyBuf
clc
adc #4
tay
lda ZPReplyBuf+1
adc #0
jsr CS.RUN.PrintListYA
.9 rts
*--------------------------------------
CS.RUN.PrintListYA
>STYA ZPPTR1
lda (ZPPTR1)
beq .8
tax
inc ZPPTR1
bne .1
inc ZPPTR1+1
.1 phx
>PUSHW L.MSG.VOL
>PUSHB (ZPPTR1)
inc ZPPTR1
bne .10
inc ZPPTR1+1
.10 >PUSHW ZPPTR1
>PUSHBI 3
>SYSCALL PrintF
plx
bcs .9
lda (ZPPTR1)
sec
adc ZPPTR1
sta ZPPTR1
bcc .2
inc ZPPTR1+1
.2 dex
bne .1
.8 clc
.9 rts
*--------------------------------------
CS.RUN.MountVol >STYA ZPPTR1
>LEA.G VolName
>STYA ZPPTR2
ldy #$ff
.1 iny
lda (ZPPTR1),y
bne .1
tya
tax
sta (ZPPTR2)
ldy #0
.2 lda (ZPPTR1),y
iny
sta (ZPPTR2),y
dex
bne .2
lda A2osX.ATLKSID
>STA.G P.MountVol+$04 Session Ref
lda #128
>STA.G P.MountVol+$05 Mount Flag
>LEA.G VolName
>STYA.G P.MountVol+$06
>LEA.G P.MountVol
ldx #AT.FIMountVol
jsr CS.RUN.GOATLK
bcs .9
>PUSHW L.MSG.MOUNTED
>PUSHW ZPPTR2
>LDA.G P.MountVol+$0C
asl
php
lsr
lsr
lsr
lsr
lsr
>PUSHA
plp
lda #0
rol
inc
>PUSHA
>PUSHBI 4
>SYSCALL PrintF
.9 rts
*--------------------------------------
CS.RUN.GOATLK >STYA ZPAtlkParams
ldy #1
txa
sta (ZPAtlkParams),y
>LDYA ZPAtlkParams
jsr A2osX.ATKCALL
bcc .9
pha
>PUSHW L.MSG.ATKERR
ldy #1
lda (ZPAtlkParams),y
>PUSHA
ldy #3
lda (ZPAtlkParams),y
>PUSHA
dey
lda (ZPAtlkParams),y
>PUSHA
>PUSHBI 3
>SYSCALL PrintF
pla
sec
.9 rts
*--------------------------------------
CS.DOEVENT sec
rts
*--------------------------------------
CS.QUIT lda hReplyBuf
beq .1
>SYSCALL FreeMem
.1 lda hCmdBuf
beq .2
>SYSCALL FreeMem
.2 clc
rts
*--------------------------------------
CS.END
MSG.USAGE .AZ "Usage : ATMOUNT [VOLUME]"
MSG.NOATK .AZ "AppleTalk Not Loaded."
MSG.NOSESSION .AZ "No Active AppleTalk Session."
MSG.ATKERR .AZ "AppleTalk Call %h, ERR:%H\r\n"
MSG.GETINFO .AS "Network/Node:%H/%h\r\n"
.AS "Bridge : %h\r\n"
.AZ "HWID/ROMVER :%H/%h\r\n"
MSG.VOLLIST .AZ "Flags Volume Name"
MSG.VOL .AZ "%b %S\r\n"
MSG.MOUNTED .AZ "Volume %S Mounted as s%dd%d\r\n"
*--------------------------------------
FPGetSrvrParms .DA #16
FPGetSrvrParms.Len .EQ *-FPGetSrvrParms
*--------------------------------------
.DUMMY
.OR 0
DS.START
P.GetInfo .BS $0F
P.GetParms .BS $07
P.Command .BS $1B
P.MountVol .BS $11
VolName .BS 28
DS.END
.ED
*--------------------------------------
MAN
SAVE usr/src/bin/atmount.s
ASM

View File

@ -61,7 +61,7 @@ A2osX.ASCREEN .EQ $BEDA Active Screen
* free BEDB -> BEDF * free BEDB -> BEDF
A2osX.KVER .EQ $BEE0 A2osX.KVER .EQ $BEE0
A2osX.IRQMode .EQ $BEE3 A2osX.IRQMode .EQ $BEE3
A2osX.ATLKSID .EQ $BEE4
A2osX.FSID .EQ $BEE5 A2osX.FSID .EQ $BEE5
A2osX.CPUTYPE .EQ $BEE6 A2osX.CPUTYPE .EQ $BEE6
A2osX.CPUSPEED .EQ $BEE7 WORD, (->255.99 Mhz) A2osX.CPUSPEED .EQ $BEE7 WORD, (->255.99 Mhz)

View File

@ -11,12 +11,13 @@ AT.GetZoneList .EQ $1B
AT.GetParms .EQ $1C AT.GetParms .EQ $1C
AT.GetStatus .EQ $1D AT.GetStatus .EQ $1D
AT.Command .EQ $20
AT.FILogin .EQ $2B AT.FILogin .EQ $2B
AT.FILoginCont .EQ $2C AT.FILoginCont .EQ $2C
AT.FILogout .EQ $2D AT.FILogout .EQ $2D
AT.FIMountVol .EQ $2E AT.FIMountVol .EQ $2E
AT.FIListSessions .EQ $3F AT.FIListSessions .EQ $2F
AT.FINaming .EQ $33 AT.FINaming .EQ $33
AT.FIGetSVersion .EQ $3A AT.FIGetSVersion .EQ $3A
*-------------------------------------- *--------------------------------------

View File

@ -10,7 +10,7 @@ S.NETBIOS .EQ 4
*-------------------------------------- *--------------------------------------
S.SMB.H.PROTO .EQ 0 \xFF 'SMB' S.SMB.H.PROTO .EQ 0 \xFF 'SMB'
S.SMB.H.CMD .EQ 4 S.SMB.H.CMD .EQ 4
S.SMB.H.CMD.TRANSACTION2 .EQ $32 S.SMB.H.CMD.TRANS2 .EQ $32
S.SMB.H.CMD.NEGOTIATE .EQ $72 S.SMB.H.CMD.NEGOTIATE .EQ $72
S.SMB.H.CMD.SESSION.SETUP.ANDX .EQ $73 S.SMB.H.CMD.SESSION.SETUP.ANDX .EQ $73
S.SMB.H.CMD.TREE.CONNECT.ANDX .EQ $75 S.SMB.H.CMD.TREE.CONNECT.ANDX .EQ $75
@ -36,5 +36,13 @@ S.SMB.H.MID .EQ 30
* *
S.SMB.H .EQ 32 S.SMB.H .EQ 32
*-------------------------------------- *--------------------------------------
SMB_INFO_STANDARD .EQ $0001
SMB_INFO_QUERY_EA_SIZE .EQ $0002
SMB_INFO_QUERY_EAS_FROM_LIST .EQ $0003
SMB_FIND_FILE_DIRECTORY_INFO .EQ $0101
SMB_FIND_FILE_FULL_DIRECTORY_INFO .EQ $0102
SMB_FIND_FILE_NAMES_INFO .EQ $0103
SMB_FIND_FILE_BOTH_DIRECTORY_INFO .EQ $0104
*--------------------------------------
MAN MAN
SAVE INC/NET.SMB.I SAVE INC/NET.SMB.I

View File

@ -48,7 +48,7 @@ D2Recalibrate >PULLB DrvSlt
lda #IO.D2.SeekTimeR lda #IO.D2.SeekTimeR
jsr D2.Wait100usecA jsr D2.Wait100usecA
pla pla
bne .1 bne .1
@ -76,8 +76,16 @@ D2MoveHead >PULLB MoveTo
clc clc
.9 rts .9 rts
D2MoveHead.SEI ldx Slotn0 D2MoveHead.SEI lda MoveFrom
ldy Slotn0 tay
and #6
ora Slotn0
tax
tya
inc
bra .3
.1 lda MoveFrom .1 lda MoveFrom
cmp MoveTo cmp MoveTo
@ -96,11 +104,11 @@ D2MoveHead.SEI ldx Slotn0
.HS B0 BCS .HS B0 BCS
* Current > Target, must move out * Current > Target, must move out
.2 dec .2 dec
sta MoveFrom sta MoveFrom
and #6 and #6
ora Slotn0 ora Slotn0
tax tax
@ -117,17 +125,15 @@ D2MoveHead.SEI ldx Slotn0
.3 and #6 .3 and #6
ora Slotn0 ora Slotn0
tay tay
sta IO.D2.Ph0On,x
sta IO.D2.Ph0On,y
sta IO.D2.Ph0On,y
sta IO.D2.Ph0On,x
lda #IO.D2.SeekTimeF lda #IO.D2.SeekTimeF
jsr D2.Wait100usecA jsr D2.Wait100usecA
bra .1 bra .1
.8 jsr D2.Wait25600usec .8 jsr D2.Wait25600usec
sta IO.D2.Ph0Off,x sta IO.D2.Ph0Off,x
sta IO.D2.Ph0Off,y sta IO.D2.Ph0Off,y
rts rts
@ -304,12 +310,7 @@ CheckDiskII pha
lda IO.D2.ReadMode,x lda IO.D2.ReadMode,x
lda IO.D2.RData,x lda IO.D2.RData,x
lda IO.D2.Ph0Off,x clc
lda IO.D2.Ph1Off,x
lda IO.D2.Ph2Off,x
lda IO.D2.Ph3Off,x
* clc
rts rts
.9 pla .9 pla
@ -492,11 +493,11 @@ D2WriteTrackPtr2
jsr $200 jsr $200
bcs .9 bcs .9
plp plp
clc clc
rts rts
.9 plp .9 plp
sec sec
rts rts

View File

@ -1,6 +1,6 @@
NEW NEW
AUTO 3,1 AUTO 3,1
.LIST OFF .LIST OFF
.OP 65C02 .OP 65C02
.OR $2000 .OR $2000
.TF lib/libblkdev .TF lib/libblkdev
@ -78,13 +78,13 @@ LIB.UNLOAD clc
* # GetProDOSCatSize * # GetProDOSCatSize
* Compute space needed for ProDOS Catalog * Compute space needed for ProDOS Catalog
* ## C * ## C
* int getprodoscatsize (short int options, short int catsize, int devsize ); * int getprodoscatsize (short int options, short int catsize, int devsize );
* ## ASM * ## ASM
* **In:** * **In:**
* PUSHW = DevSize (in 512b blocks) * PUSHW = DevSize (in 512b blocks)
* PUSHB = Catalog Size (in blocks) * PUSHB = Catalog Size (in blocks)
* PUSHB = Options * PUSHB = Options
* ## RETURN VALUE * ## RETURN VALUE
* X=BlockCount (max 22) * X=BlockCount (max 22)
* Y,A=BufSize (max $4400) * Y,A=BufSize (max $4400)
*\-------------------------------------- *\--------------------------------------
@ -175,15 +175,17 @@ BuildProDOSCat >PULLW ZPPtr1 DstBuf
* Blk 2 : First Directory Block * Blk 2 : First Directory Block
jsr ZeroPtr1
* ldy #0 * ldy #0
stz VolDirHdr.Prev * stz VolDirHdr.Prev
* stz VolDirHdr.Prev+1 always 0 * stz VolDirHdr.Prev+1 always 0
lda #3 next block lda #3 next block
ldx VolDirHdr.CatSize ldx VolDirHdr.CatSize
dex dex
bne .30 bne .30
txa txa
@ -197,22 +199,22 @@ BuildProDOSCat >PULLW ZPPtr1 DstBuf
beq .39 beq .39
iny iny
cmp #'a' cmp #'a'
bcc .38 bcc .38
cmp #'z'+1 cmp #'z'+1
bcs .38 bcs .38
eor #$20 eor #$20
pha pha
cpy #8 cpy #8
bcs .31 bcs .31
lda LC.BitMap,y lda LC.BitMap,y
tsb VolDirHdr.MVER tsb VolDirHdr.MVER
bra .32 bra .32
.31 lda LC.BitMap-8,y .31 lda LC.BitMap-8,y
tsb VolDirHdr.VER tsb VolDirHdr.VER
@ -222,7 +224,7 @@ BuildProDOSCat >PULLW ZPPtr1 DstBuf
pla pla
.38 sta VolDirHdr.Name,y .38 sta VolDirHdr.Name,y
cpy #15 cpy #15
bne .3 bne .3
@ -237,13 +239,17 @@ BuildProDOSCat >PULLW ZPPtr1 DstBuf
dey dey
bpl .4 bpl .4
* Blk 3...n : additional Directory Blocks * Blk 3...n : additional Directory Blocks
lda #3 Actual Block ID lda #3 Actual Block ID
ldy #2 next blk ptr ldy #2 next blk ptr
.41 inc ZPPtr1+1 .41 inc ZPPtr1+1
jsr ZeroPtr1
inc ZPPtr1+1 Next Block inc ZPPtr1+1 Next Block
jsr ZeroPtr1
dex dex
bmi .40 bmi .40
@ -262,7 +268,7 @@ BuildProDOSCat >PULLW ZPPtr1 DstBuf
* BitMap Blocks : 0=Used 1=free * BitMap Blocks : 0=Used 1=free
.40 .40
BuildProDOSCat.BM BuildProDOSCat.BM
jsr GetProDOSCatSize.I X=blk used for boot/dir/bitmap jsr GetProDOSCatSize.I X=blk used for boot/dir/bitmap
@ -287,7 +293,7 @@ BuildProDOSCat.BM
.6 lsr .6 lsr
bne .5 bne .5
iny iny
bne .50 bne .50
.7 lda #%10000000 .7 lda #%10000000
@ -296,7 +302,7 @@ BuildProDOSCat.BM
inc Count+1 inc Count+1
bne .81 bne .81
clc clc
rts rts
@ -311,7 +317,20 @@ BuildProDOSCat.BM
bne .7 bne .7
inc ZPPtr1+1 inc ZPPtr1+1
jsr ZeroPtr1
bra .7 bra .7
*--------------------------------------
ZeroPtr1 phy
lda #0
tay
.1 sta (ZPPtr1),y
iny
bne .1
ply
rts
*-------------------------------------- *--------------------------------------
.INB usr/src/lib/libblkdev.s.d2 .INB usr/src/lib/libblkdev.s.d2
*-------------------------------------- *--------------------------------------
@ -329,24 +348,24 @@ TrkWriter.Start lda IO.D2.ReadProt,x
ldy ZPPtr1 ldy ZPPtr1
stz ZPPtr1 stz ZPPtr1
lda (ZPPtr1),y lda (ZPPtr1),y
iny iny
* bne .10 no chance this happens because mem blocks are $FFF0 aligned.... * bne .10 no chance this happens because mem blocks are $FFF0 aligned....
* inc ZPPtr1+1 * inc ZPPtr1+1
.10 cmp #$80 if CC, it is a sync byte .10 cmp #$80 if CC, it is a sync byte
ora #$80 make sure Bit7 high ora #$80 make sure Bit7 high
sta IO.D2.WriteMode,x (5) goto write mode sta IO.D2.WriteMode,x (5) goto write mode
ora IO.D2.WShift,x (4) ora IO.D2.WShift,x (4)
nop (2) nop (2)
bra .2 (3) bra .2 (3)
.1 lda (ZPPtr1),y (5) as NibbleBuf is page aligned, no page crossing .1 lda (ZPPtr1),y (5) as NibbleBuf is page aligned, no page crossing
beq .8 (2)(3 if Z) END OF TRACK beq .8 (2)(3 if Z) END OF TRACK
* nobody will never try to write 00000000, right? * nobody will never try to write 00000000, right?
@ -360,7 +379,7 @@ TrkWriter.Start lda IO.D2.ReadProt,x
* 32us Byte,next page : 2 (beq failed)+5 +2+2+5+4+2+2 (bne failed) + 5 + 3 (bcs succeeded) = 32 * 32us Byte,next page : 2 (beq failed)+5 +2+2+5+4+2+2 (bne failed) + 5 + 3 (bcs succeeded) = 32
inc ZPPtr1+1 (5) inc ZPPtr1+1 (5)
bcs .1 (2)(3 if cs) regular 32us byte bcs .1 (2)(3 if cs) regular 32us byte
* 40us Byte,next page : 2 (beq failed) +2+2+5+4+2+2 (bne failed) + 5 + 2 (bcs failed) +2+2+2+3 = 40 * 40us Byte,next page : 2 (beq failed) +2+2+5+4+2+2 (bne failed) + 5 + 2 (bcs failed) +2+2+2+3 = 40
@ -386,7 +405,7 @@ TrkWriter.Start lda IO.D2.ReadProt,x
.8 pha (3) make sure 32us elapsed before switching to read mode (beq(3)+pha(3)=beq(2)+cmp(2)+ora(2)) .8 pha (3) make sure 32us elapsed before switching to read mode (beq(3)+pha(3)=beq(2)+cmp(2)+ora(2))
lda IO.D2.ReadMode,x close write mode lda IO.D2.ReadMode,x close write mode
lda IO.D2.RData,x lda IO.D2.RData,x
pla from pha (3) pla from pha (3)
clc clc
rts rts

View File

@ -66,6 +66,22 @@ J.CIFS .DA CIFS.ChTyp
.DA CIFS.Read .DA CIFS.Read
.DA CIFS.Write .DA CIFS.Write
.DA CIFS.ChOwn .DA CIFS.ChOwn
J.CIFS2 .DA CIFS2.ChTyp
.DA CIFS2.ChMod
.DA CIFS2.FStat
.DA CIFS2.Stat
.DA CIFS2.MKDir
.DA CIFS2.MKNod
.DA CIFS2.MKFIFO
.DA CIFS2.Pipe
.DA CIFS2.OpenDir
.DA CIFS2.ReadDir
.DA CIFS2.CloseDir
.DA CIFS2.Open
.DA CIFS2.Close
.DA CIFS2.Read
.DA CIFS2.Write
.DA CIFS2.ChOwn
L.LIBTCPIP .DA LIBTCPIP L.LIBTCPIP .DA LIBTCPIP
L.SMB.TRANSPORT .DA SMB.TRANSPORT L.SMB.TRANSPORT .DA SMB.TRANSPORT
.DA 0 .DA 0
@ -458,55 +474,193 @@ CIFS.Mount ldy #1
CIFS.UMount clc CIFS.UMount clc
rts rts
*-------------------------------------- *--------------------------------------
CIFS.CallBack jmp (J.CIFS,x) CIFS.CallBack bit CIFS.Status
bmi .1
jmp (J.CIFS,x)
.1 ldy #S.PS.PID
lda (pPS),y
cmp CIFS.PID
bne .8
jmp (J.CIFS2,x)
.8 lda #0
sec
rts
*-------------------------------------- *--------------------------------------
CIFS.ChTyp CIFS.ChTyp
CIFS2.ChTyp
*-------------------------------------- *--------------------------------------
CIFS.ChMod CIFS.ChMod
CIFS2.ChMod
*-------------------------------------- *--------------------------------------
CIFS.FStat CIFS.FStat
*-------------------------------------- *--------------------------------------
CIFS.Stat pha CIFS2.FStat lda #MLI.E.BADCALL
>PULLW ZPPtr2 S.STAT
>PULLW ZPPtr1 PATH
pla
>SYSCALL2 PutS
.99 lda #MLI.E.INVPATH
sec sec
rts rts
*-------------------------------------- *--------------------------------------
CIFS.Stat >STYA ZPPtr1 resolved path
lda MountTable+2
>SYSCALL2 GetMemPtr
>STYA ZPCtxPtr
ldx #S.SMB.H.CMD.TRANS2
jsr RequestSetupX
ldx #0
.1 lda SMB.Trans2.H,x
sta (ZPReqPtr),y
iny
inx
cpx #SMB.Trans2.H.Len
bne .1
ldx #0
.2 lda SMB.QueryPathInfo,x
sta (ZPReqPtr),y
iny
inx
cpx #SMB.QueryPathInfo.Len
bne .2
.3 lda (ZPPtr1)
inc ZPPtr1
bne .4
inc ZPPtr1+1
.4 sta (ZPReqPtr),y
iny
tax
bne .3
jsr SetT2ReqLenYA
>PUSHYA
>PUSHW ZPReqPtr
lda MountTable+3 hSocket
ldx #LIBTCPIP.Send
jsr GO.LIBTCPIP
bcs .9
ldy #S.PS.PID
lda (pPS),y
sta CIFS.PID
dec CIFS.Status
lda #0
sec
rts
lda #MLI.E.INVPATH
sec
.9 >RET 4
*--------------------------------------
CIFS2.Stat lda MountTable+3 hSocket
ldx #LIBTCPIP.Recv
jsr GO.LIBTCPIP
bcs .9
jsr GetRespData
ldy #S.NETBIOS+S.SMB.H.STATUS
lda (ZPRespPtr),y
beq .1
lda #MLI.E.FNOTFND
bra .99
.1 >PULLW ZPPtr1
inc pStack
inc pStack
stz CIFS.Status
clc
rts
.9 cmp #E.NODATA
bne .99
dec CIFS.Retries
beq .90
lda #0
sec
rts
.90 lda #MLI.E.IO
.99 sec
stz CIFS.Status
>RET 4
*--------------------------------------
CIFS.MKDir CIFS.MKDir
CIFS2.MKDir
*-------------------------------------- *--------------------------------------
CIFS.MKNod CIFS.MKNod
CIFS2.MKNod
*-------------------------------------- *--------------------------------------
CIFS.MKFIFO CIFS.MKFIFO
CIFS2.MKFIFO
*-------------------------------------- *--------------------------------------
CIFS.Pipe lda #MLI.E.BADCALL CIFS.Pipe
CIFS2.Pipe lda #MLI.E.BADCALL
sec sec
rts rts
*-------------------------------------- *--------------------------------------
CIFS.OpenDir lda #MLI.E.BADCALL CIFS.OpenDir >STYA ZPPtr1 resolved path
>SYSCALL2 PutS
>LDYAI S.FD.DIR
>SYSCALL2 GetMem
bcs .9
>STYA ZPPtr2
lda #S.FD.T.DIR
sta (ZPPtr2)
>PUSHW ZPPtr1
>PUSHWI 0
txa
>PUSHA
>SYSCALL2 mknod
.9 rts
CIFS2.OpenDir lda #MLI.E.BADCALL
sec sec
rts rts
*-------------------------------------- *--------------------------------------
CIFS.ReadDir lda #MLI.E.INVPATH CIFS.ReadDir
CIFS2.ReadDir lda #MLI.E.INVPATH
sec sec
rts rts
*-------------------------------------- *--------------------------------------
CIFS.CloseDir CIFS.CloseDir
CIFS2.CloseDir
*-------------------------------------- *--------------------------------------
CIFS.Open CIFS.Open
CIFS2.Open
*-------------------------------------- *--------------------------------------
CIFS.Close CIFS.Close
CIFS2.Close
*-------------------------------------- *--------------------------------------
CIFS.Read CIFS.Read
CIFS2.Read
*-------------------------------------- *--------------------------------------
CIFS.Write CIFS.Write
CIFS2.Write
*-------------------------------------- *--------------------------------------
CIFS.ChOwn CIFS.ChOwn
CIFS2.ChOwn
lda #MLI.E.BADCALL lda #MLI.E.BADCALL
sec sec
rts rts
@ -559,7 +713,29 @@ SetReqLenYAtA sty ZPReqLen
iny iny
lda #0 lda #0
sta (ZPReqPtr),y sta (ZPReqPtr),y
bra SetReqLenNETBIOS
*--------------------------------------
SetT2ReqLenYA sty ZPReqLen
stz ZPReqLen+1
tya
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
SetReqLenNETBIOS
lda ZPReqLen lda ZPReqLen
sec sec
sbc #S.NETBIOS sbc #S.NETBIOS
@ -598,6 +774,10 @@ hSocket .BS 1
hReq .BS 1 hReq .BS 1
hResp .BS 1 hResp .BS 1
*-------------------------------------- *--------------------------------------
CIFS.Status .BS 1
CIFS.PID .BS 1
CIFS.Retries .BS 1
*--------------------------------------
MountTable .BS 2 pMountPoint MountTable .BS 2 pMountPoint
.BS 1 hSMBContext .BS 1 hSMBContext
.BS 1 hSocket .BS 1 hSocket
@ -680,51 +860,53 @@ SMB.TreeConnect.T
.AZ "A:" Disk Share .AZ "A:" Disk Share
SMB.TreeConnect.T.Len .EQ *-SMB.TreeConnect.T SMB.TreeConnect.T.Len .EQ *-SMB.TreeConnect.T
*-------------------------------------- *--------------------------------------
SMB.TRANS2.H .DA #15 WORD COUNT SMB.Trans2.H .DA #15 WORD COUNT
.BS 2 TotalParamCount .BS 2 TotalParamCount
.DA 0 TotalDataCount .DA 0 TotalDataCount
.DA 10 MaxParameterCount .DA 2 MaxParameterCount
.DA 460 MaxDataCount .DA 40 MaxDataCount
.DA #1 MaxSetupCount .DA #0 MaxSetupCount
.HS 00 Reserved1 .HS 00 Reserved1
.DA 0 Flags .DA 0 Flags
.HS 00000000 Timeout .HS 00000000 Timeout
.HS 0000 Reserved2 .HS 0000 Reserved2
.BS 2 ParameterCount .BS 2 ParameterCount
.DA 66 ParameterOffset .DA 68 ParameterOffset
.HS 0000 DataCount .HS 0000 DataCount
.HS 0000 DataOffset .HS 0000 DataOffset
.DA #1 SetupCount .DA #1 SetupCount
.HS 00 Reserved3 .HS 00 Reserved3
SMB.Trans2.H.Len .EQ *-SMB.Trans2.H
*-------------------------------------- *--------------------------------------
SMB.QueryPathInfo SMB.QueryPathInfo
.DA 5 TRANS2_QUERY_PATH_INFORMATION .DA 5 TRANS2_QUERY_PATH_INFORMATION
.BS 2 PrmCnt
.DA SMB.QueryPathInfo.PrmCnt+1 INCLUDING Padding byte below .HS 000000 Padding
.HS 00 Padding .DA SMB_INFO_STANDARD InformationLevel
SMB.QueryPathInfo.Prm
.DA $0001 InformationLevel
.HS 00000000 SearchStorageType .HS 00000000 SearchStorageType
SMB.QueryPathInfo.PrmCnt .EQ *-SMB.QueryPathInfo.Prm * .AZ "file" FileName
.AZ "server.met" FileName SMB.QueryPathInfo.Len .EQ *-SMB.QueryPathInfo
SMB.QueryPathInfo.end
*-------------------------------------- *--------------------------------------
SMB.FindFirst .DA 1 TRANS2_FIND_FIRST2 SMB.FindFirst .DA 1 TRANS2_FIND_FIRST2
.BS 2 PrmCnt
.DA SMB.FindFirst.PrmCnt+1 INCLUDING Padding byte below
.HS 00 Padding .HS 00 Padding
SMB.FindFirst.Prm
.DA $0016 SearchAttributes .DA $0016 SearchAttributes
.DA 1024 SearchCount .DA 1024 SearchCount
.DA 3 Flags .DA 2 Flags
.DA $0001 InformationLevel .DA SMB_INFO_STANDARD InformationLevel
.HS 00000000 SearchStorageType * .AZ "*.*" FileName
SMB.FindFirst.PrmCnt .EQ *-SMB.FindFirst.Prm SMB.FindFirst.end .EQ *-SMB.FindFirst
.AZ "\*.*" FileName *--------------------------------------
SMB.FindFirst.end SMB.FindNext .DA 2 TRANS2_FIND_NEXT2
.BS 2 PrmCnt
.HS 00 Padding
.BS 2 SID
.DA 1024 SearchCount
.DA SMB_INFO_STANDARD InformationLevel
.HS 00000000 ResumeKey
.DA 2 Flags
* .AZ "*.*" FileName
SMB.FindNext.end .EQ *-SMB.FindNext
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE usr/src/lib/libcifs.s SAVE usr/src/lib/libcifs.s

View File

@ -75,7 +75,8 @@ L59BD lda bloknml
lsr lsr
sta XRW.ReqSector sta XRW.ReqSector
*-------------------------------------- *--------------------------------------
jsr XRW.Reset ldx A2L
jsr XRW.ReadMode
jsr XRW.CheckMotorOn jsr XRW.CheckMotorOn
@ -152,6 +153,9 @@ L538E lda A4L get command #
*-------------------------------------- *--------------------------------------
.2 sei DISABLE IRQ .2 sei DISABLE IRQ
jsr XRW.TrackSelect
bcs XRW.E.IO
jsr XRW.SectorIO jsr XRW.SectorIO
bcs XRW.E.IO bcs XRW.E.IO
@ -160,6 +164,7 @@ L538E lda A4L get command #
inc XRW.ReqSector inc XRW.ReqSector
inc XRW.ReqSector inc XRW.ReqSector
lda XRW.ReqTrack
jsr XRW.SectorIO get 2nd half of block jsr XRW.SectorIO get 2nd half of block
dec buf+1 dec buf+1
@ -304,16 +309,11 @@ L596F ldy #$FF index to last byte of data to write.
stx wrefd5+1 stx wrefd5+1
rts rts
*-------------------------------------- *--------------------------------------
XRW.SectorIO lda #2 XRW.TrackSelect lda #2
sta XRW.RecalibrateCnt sta XRW.RecalibrateCnt
sta XRW.BadSeek sta XRW.BadSeek
jsr XRW.DEBUG
bit XRW.bWrite
bpl .1
jsr XRW.PreNibble must prenibblize for write .1 stz XRW.RetryCnt
.1 stz XRW.RetryCnt
.2 jsr XRW.ReadAddr read next address field. .2 jsr XRW.ReadAddr read next address field.
bcc .4 if CC, A = current track bcc .4 if CC, A = current track
@ -337,39 +337,64 @@ XRW.SectorIO lda #2
bra .1 bra .1
.4 cmp XRW.ReqTrack .4 cmp XRW.ReqTrack
beq .6 beq .8
lda XRW.BadSeek * lda XRW.BadSeek
beq .40 2 bad seeks, already * beq .5 2 bad seeks, already
dec XRW.BadSeek * dec XRW.BadSeek
bne .5 * bne .6
.40 lda XRW.SeekTime *.5 lda XRW.SeekTime
bmi .5 seektime already > 128 * bmi .6 seektime already > 128
clc * clc
adc #IO.D2.SeekTimeI * adc #IO.D2.SeekTimeI
sta XRW.SeekTime * sta XRW.SeekTime
ldx XRW.UnitIndex * ldx XRW.UnitIndex
sta XRW.D2SeekTime-1,x * sta XRW.D2SeekTime-1,x
.5 lda XRW.ReqTrack .6 lda XRW.ReqTrack
jsr XRW.Seek jsr XRW.Seek
bra .3 bra .3
.8 clc
.9 rts
*--------------------------------------
XRW.SectorIO bit XRW.bWrite
bpl .1
.6 lda XRW.AddrField.S is this the right sector ? jsr XRW.SEEK2T
phx
phy
jsr XRW.PreNibble
ply
plx
jsr XRW.SEEKOFF
.1 stz XRW.RetryCnt
jsr XRW.DEBUG
.2 jsr XRW.ReadAddr
bcs .3
lda XRW.AddrField.S
cmp XRW.ReqSector cmp XRW.ReqSector
bne .3 no, try another sector. beq .8
bit XRW.bWrite .3 inc XRW.RetryCnt
bmi XRW.Write bpl .2
.7 jsr XRW.Read sec
bcs .3 if bad read
.9 rts .9 rts
.8 bit XRW.bWrite
bmi XRW.Write
jmp XRW.Read
*-------------------------------------- *--------------------------------------
* write subroutine (16 sector format) * write subroutine (16 sector format)
* *
@ -519,11 +544,13 @@ wrefd5 ldx #$60 (2) restore slot. warning: modified by prenib
clc (2) clc (2)
lda #$FF (2) jsr XRW.Write.RTS (6+6)
nop (2) nop (2)
nop (2) nop (2)
jsr wnibl (15,6) write turn off byte. * lda #$FF (2)
* jsr wnibl (15,6) write turn off byte.
XRW.ReadMode lda IO.D2.ReadMode,x out of write mode XRW.ReadMode lda IO.D2.ReadMode,x out of write mode
lda IO.D2.WShift,x to read mode. lda IO.D2.WShift,x to read mode.
@ -542,14 +569,29 @@ wnibl sta IO.D2.WLoad,x (5) nibl write
XRW.Write.RTS rts (6) XRW.Write.RTS rts (6)
.LIST OFF .LIST OFF
*-------------------------------------- *--------------------------------------
XRW.Reset ldx A2L * determine if motor is stopped
*
* if stopped, controller's shift register will not be changing.
* return y = 0 and zero flag set if it is stopped.
*--------------------------------------
XRW.CheckMotorOn
ldx A2L
XRW.CheckMotorOnX
ldy #0 init loop counter.
lda IO.D2.Ph0Off,x .1 lda IO.D2.RData,x read the shift register.
lda IO.D2.Ph1Off,x jsr .9 delay
lda IO.D2.Ph2Off,x
lda IO.D2.Ph3Off,x
jmp XRW.ReadMode pha
pla more delay.
cmp IO.D2.RData,x has shift reg changed ?
bne .9 yes, motor is moving.
dey no, dec retry counter
bne .1 and try 256 times.
.9 rts Z if motor OFF
*-------------------------------------- *--------------------------------------
* read subroutine (16-sector format) * read subroutine (16-sector format)
* *
@ -716,20 +758,22 @@ XRW.Seek ldx XRW.UnitIndex
jsr XRW.Trk2Qtrk jsr XRW.Trk2Qtrk
sta XRW.CurrentQTrack sta XRW.CurrentQTrack
tay
pla pla
sta XRW.D2Trk-1,x will be current track at the end sta XRW.D2Trk-1,x will be current track at the end
ldx A2L tya
ldy A2L jsr XRW.Seek2QT
bra .4
.1 lda XRW.CurrentQTrack .1 lda XRW.CurrentQTrack
cmp XRW.TargetQTrack cmp XRW.TargetQTrack
beq .8 beq .8
pha pha
sta IO.D2.Ph0Off,x jsr XRW.SEEKOFF
sta IO.D2.Ph0Off,y
bcs .2 bcs .2
* Current < Target, must move in * Current < Target, must move in
@ -763,20 +807,37 @@ XRW.Seek ldx XRW.UnitIndex
sta IO.D2.Ph0On,x sta IO.D2.Ph0On,x
sta IO.D2.Ph0On,y sta IO.D2.Ph0On,y
jsr XRW.WaitSeekTime
.4
* lda XRW.SeekTime
lda #IO.D2.SeekTimeP
jsr XRW.Wait100usecA
bra .1 bra .1
.8 jsr XRW.Wait25600usec .8 jsr XRW.Wait25600usec
sta IO.D2.Ph0Off,x XRW.SEEKOFF sta IO.D2.Ph0Off,x
sta IO.D2.Ph0Off,y sta IO.D2.Ph0Off,y
rts rts
*-------------------------------------- *--------------------------------------
XRW.WaitSeekTime XRW.SEEK2T ldx XRW.UnitIndex
* lda XRW.SeekTime jsr XRW.Trk2Qtrk
lda #IO.D2.SeekTimeP
.HS 2C BIT ABS XRW.SEEK2QT pha
and #6
ora A2L
tax
pla
inc
and #6
ora A2L
tay
sta IO.D2.Ph0On,x
sta IO.D2.Ph0On,y
rts
*--------------------------------------
XRW.Wait25600usec XRW.Wait25600usec
lda #0 lda #0
XRW.Wait100usecA XRW.Wait100usecA
@ -890,30 +951,6 @@ XRW.ReadAddr.RTS
rts rts
.LIST OFF .LIST OFF
*-------------------------------------- *--------------------------------------
* determine if motor is stopped
*
* if stopped, controller's shift register will not be changing.
* return y = 0 and zero flag set if it is stopped.
*--------------------------------------
XRW.CheckMotorOn
ldx A2L
XRW.CheckMotorOnX
ldy #0 init loop counter.
.1 lda IO.D2.RData,x read the shift register.
jsr .9 delay
pha
pla more delay.
cmp IO.D2.RData,x has shift reg changed ?
bne .9 yes, motor is moving.
dey no, dec retry counter
bne .1 and try 256 times.
.9 rts Z if motor OFF
*--------------------------------------
XRW.TestWP ldx A2L XRW.TestWP ldx A2L
lda IO.D2.ReadProt,x test for write protected lda IO.D2.ReadProt,x test for write protected
lda IO.D2.ReadMode,x lda IO.D2.ReadMode,x
@ -922,6 +959,7 @@ XRW.TestWP ldx A2L
rts rts
*-------------------------------------- *--------------------------------------
XRW.DEBUG sta CLRPAGE2 XRW.DEBUG sta CLRPAGE2
lda #"R" lda #"R"
bit XRW.bWrite bit XRW.bWrite
bpl .1 bpl .1
@ -930,37 +968,31 @@ XRW.DEBUG sta CLRPAGE2
.1 sta $723 .1 sta $723
ldx #$24
lda XRW.ReqTrack lda XRW.ReqTrack
pha jsr .6
lsr
lsr
lsr
lsr
jsr .7
sta $724
pla
jsr .7
sta $725
lda XRW.ReqSector lda XRW.ReqSector
pha
.6 pha
lsr lsr
lsr lsr
lsr lsr
lsr lsr
jsr .7 jsr .7
sta $726
pla pla
jsr .7
sta $727
rts
.7 and #$0F .7 and #$0F
ora #$B0 ora #$B0
cmp #"9"+1 cmp #"9"+1
bcc .8 bcc .8
adc #6 adc #6
.8 rts
.8 sta $700,x
inx
rts
*-------------------------------------- *--------------------------------------
.LIST ON .LIST ON
XRW.FREE .EQ $D540-* XRW.FREE .EQ $D540-*