mirror of https://github.com/A2osX/A2osX.git
Kernel 0.94+
This commit is contained in:
parent
d8c0f5e1e3
commit
2c946c431e
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -16,7 +16,6 @@ NEW
|
|||
ZS.START
|
||||
ZPAtlkParams .BS 2
|
||||
ZPPTR1 .BS 2
|
||||
ZPPTR2 .BS 2
|
||||
hBuf .BS 1
|
||||
ZS.END .ED
|
||||
*--------------------------------------
|
||||
|
@ -63,12 +62,9 @@ CS.RUN jsr CS.RUN.GetInfo
|
|||
sec
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.RUN.GetInfo lda #AT.GetInfo
|
||||
>STA.G P.GetInfo+1
|
||||
|
||||
>LEA.G P.GetInfo
|
||||
|
||||
jsr A2osX.ATKCALL
|
||||
CS.RUN.GetInfo >LEA.G P.GetInfo
|
||||
ldx #AT.GetInfo
|
||||
jsr CS.RUN.GOATLK
|
||||
bcs .9
|
||||
|
||||
>PUSHW L.MSG.GETINFO
|
||||
|
@ -96,7 +92,8 @@ CS.RUN.GetInfo lda #AT.GetInfo
|
|||
CS.RUN.GetMyZone
|
||||
>LEA.G ZoneBuf
|
||||
>STYA.G P.GetMyZone+$08
|
||||
lda #4
|
||||
|
||||
lda #4 1/4 sec
|
||||
>STA.G P.GetMyZone+$0C RetInt
|
||||
>STA.G P.GetMyZone+$0D RetCnt
|
||||
|
||||
|
@ -156,23 +153,28 @@ CS.RUN.LookupName
|
|||
lda ZPPTR1
|
||||
clc
|
||||
adc #5
|
||||
sta ZPPTR2
|
||||
sta ZPPTR1
|
||||
lda ZPPTR1+1
|
||||
adc #0
|
||||
sta ZPPTR2+2
|
||||
>PUSHW ZPPTR2
|
||||
|
||||
>PUSHBI 7
|
||||
sta ZPPTR1+1
|
||||
|
||||
ldx #3
|
||||
|
||||
.3 >PUSHW ZPPTR1
|
||||
lda ZPPTR1
|
||||
sec
|
||||
adc (ZPPTR1)
|
||||
sta ZPPTR1
|
||||
lda ZPPTR1+1
|
||||
adc #0
|
||||
sta ZPPTR1+1
|
||||
dex
|
||||
bne .3
|
||||
|
||||
>PUSHBI 11
|
||||
>SYSCALL PrintF
|
||||
bcs .9
|
||||
|
||||
lda ZPPTR2
|
||||
sec
|
||||
adc (ZPPTR2)
|
||||
sta ZPPTR1
|
||||
lda ZPPTR2+1
|
||||
adc #0
|
||||
sta ZPPTR1+1
|
||||
>DEC.G P.LookupName+$17
|
||||
bne .1
|
||||
|
||||
|
@ -224,13 +226,15 @@ CS.QUIT lda hBuf
|
|||
CS.END
|
||||
MSG.NOATK .AZ "AppleTalk Not Loaded."
|
||||
MSG.ATKERR .AZ "AppleTalk Call %h, ERR:%H\r\n"
|
||||
MSG.GETINFO .AS "Network/Node:$%h%h/$%h\r\n"
|
||||
.AS "Bridge : $%h\r\n"
|
||||
.AZ "HWID/ROMVER :$%h%h/$%h\r\n"
|
||||
MSG.GETINFO .AS "Network/Node:%h%h/%h\r\n"
|
||||
.AS "Bridge : %h\r\n"
|
||||
.AZ "HWID/ROMVER :%h%h/%h\r\n"
|
||||
MSG.MYZONE .AZ "Zone Name :%S\r\n"
|
||||
SEARCH.STRING >PSTR "=:=@*"
|
||||
MSG.DUMP0 .AZ "Net Nod SkT En# Name"
|
||||
MSG.DUMP .AZ "%H $%h $%h $%h %S\r\n"
|
||||
SEARCH.STRING >PSTR "="
|
||||
>PSTR "="
|
||||
>PSTR "*"
|
||||
MSG.DUMP0 .AZ "\e[?7lNet Nod SkT En# Object:Type@Zone"
|
||||
MSG.DUMP .AZ "%H %h %h %h %S:%S@%S\r\n"
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
.OR 0
|
||||
|
|
|
@ -15,6 +15,10 @@ NEW
|
|||
.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
|
||||
|
@ -56,6 +60,9 @@ CS.RUN ldy #S.PS.ARGC
|
|||
jsr CS.RUN.LookupName
|
||||
bcs .9
|
||||
|
||||
jsr CS.RUN.GetParms
|
||||
bcs .9
|
||||
|
||||
jsr CS.RUN.FILogin
|
||||
bcs .9
|
||||
|
||||
|
@ -71,12 +78,9 @@ CS.RUN.USAGE >PUSHW L.MSG.USAGE
|
|||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.GetInfo lda #AT.GetInfo
|
||||
>STA.G P.GetInfo+1
|
||||
|
||||
>LEA.G P.GetInfo
|
||||
|
||||
jsr A2osX.ATKCALL
|
||||
CS.RUN.GetInfo >LEA.G P.GetInfo
|
||||
ldx #AT.GetInfo
|
||||
jsr CS.RUN.GOATLK
|
||||
bcs .9
|
||||
|
||||
>PUSHW L.MSG.GETINFO
|
||||
|
@ -104,15 +108,47 @@ CS.RUN.GetInfo lda #AT.GetInfo
|
|||
CS.RUN.LookupName
|
||||
lda #1
|
||||
>SYSCALL ArgV
|
||||
>STYA ZPPTR1
|
||||
|
||||
>LEA.G NameBuf
|
||||
>STYA ZPPTR2
|
||||
>STYA.G P.LookupName+$08
|
||||
|
||||
lda #1
|
||||
jsr CS.RUN.PutPtr2
|
||||
lda #'='
|
||||
jsr CS.RUN.PutPtr2
|
||||
|
||||
ldy #$ff
|
||||
|
||||
.1 iny
|
||||
lda (ZPPTR1),y
|
||||
bne .1
|
||||
|
||||
tya
|
||||
tax
|
||||
jsr CS.RUN.PutPtr2
|
||||
|
||||
.2 ldy #0
|
||||
|
||||
.3 lda (ZPPTR1),y
|
||||
jsr CS.RUN.PutPtr2
|
||||
iny
|
||||
dex
|
||||
bne .3
|
||||
|
||||
lda #1
|
||||
jsr CS.RUN.PutPtr2
|
||||
lda #'*'
|
||||
jsr CS.RUN.PutPtr2
|
||||
|
||||
lda #4
|
||||
>STA.G P.LookupName+$C RetInt
|
||||
>STA.G P.LookupName+$D RetCnt
|
||||
>LDYAI 64
|
||||
>STYA.G P.LookupName+$10 BufLen
|
||||
>LDYA.G NameBuf
|
||||
>STYA ZPPTR1
|
||||
>LDYA.G LookupBuf
|
||||
|
||||
>STYA.G P.LookupName+$12 BufPtr
|
||||
|
||||
lda #1
|
||||
|
@ -122,20 +158,49 @@ CS.RUN.LookupName
|
|||
ldx #AT.LookupName
|
||||
jmp CS.RUN.GOATLK
|
||||
*--------------------------------------
|
||||
CS.RUN.FILogin >LEA.G P.FILogin+$4
|
||||
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.FILogin >LDYA.G LookupBuf
|
||||
>STYA ZPPTR1
|
||||
>LEA.G P.FILogin+$4
|
||||
>STYA ZPPTR2
|
||||
|
||||
ldy #3
|
||||
|
||||
.1 lda (ZPPTR1),y
|
||||
.1 lda (ZPPTR1),y copy NETWORK/NODE/SOCKET
|
||||
sta (ZPPTR2),y
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
>LDYAI 64
|
||||
>STYA.G P.FILogin+$E
|
||||
>LDYA.G P.GetParms+$4
|
||||
>STYA.G P.FILogin+$8 Cmd buffer length
|
||||
|
||||
>LDYA ZPCmdBuf
|
||||
>STYA.G P.FILogin+$A
|
||||
|
||||
>LDYA.G P.GetParms+$6
|
||||
>STYA.G P.FILogin+$E Reply buffer length
|
||||
|
||||
>LEA.G ReplyBuf
|
||||
>LDYA ZPReplyBuf
|
||||
>STYA.G P.FILogin+$10
|
||||
|
||||
>LEA.G P.FILogin
|
||||
|
@ -174,10 +239,26 @@ CS.RUN.GOATLK >STYA ZPAtlkParams
|
|||
sec
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.RUN.PutPtr2 sta (ZPPTR2)
|
||||
inc ZPPTR2
|
||||
bne .8
|
||||
inc ZPPTR2+1
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
CS.DOEVENT sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.QUIT clc
|
||||
CS.QUIT lda hReplyBuf
|
||||
beq .1
|
||||
|
||||
>SYSCALL FreeMem
|
||||
|
||||
.1 lda hCmdBuf
|
||||
beq .2
|
||||
|
||||
>SYSCALL FreeMem
|
||||
|
||||
.2 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
|
@ -193,10 +274,10 @@ MSG.USAGE .AZ "Usage : ATLOGON <SERVER> [USER] [PASSWORD]"
|
|||
DS.START
|
||||
P.GetInfo .BS $0F
|
||||
P.LookupName .BS $17
|
||||
P.GetParms .BS $07
|
||||
P.FILogin .BS $19
|
||||
ZoneBuf .BS 33
|
||||
NameBuf .BS 64
|
||||
ReplyBuf .BS 64
|
||||
NameBuf .BS 36
|
||||
lookupBuf .BS 5+99
|
||||
DS.END
|
||||
.ED
|
||||
*--------------------------------------
|
||||
|
|
|
@ -6,7 +6,6 @@ PathBuf .BS 65
|
|||
|
||||
hFileBuf .BS 1
|
||||
|
||||
CSH.Buf .BS 2
|
||||
CSH.BufPtrSave .BS 2
|
||||
|
||||
CSH.CmdSave .BS 1
|
||||
|
|
|
@ -2,20 +2,22 @@ NEW
|
|||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
CSH.T.VOID .EQ 0
|
||||
CSH.T.SCHAR .EQ 1
|
||||
CSH.T.SINT .EQ 2
|
||||
CSH.T.SLONG .EQ 3
|
||||
CSH.T.FLOAT .EQ 4
|
||||
CSH.T.UCHAR .EQ 5
|
||||
CSH.T.UINT .EQ 6
|
||||
CSH.T.ULONG .EQ 7
|
||||
CSH.T.VARIADIC .EQ $FF
|
||||
*--------------------------------------
|
||||
CSH.Q.POINTER .EQ %01000000
|
||||
CSH.Q.PPOINTER .EQ %10000000
|
||||
CSH.Q.PPPOINTER .EQ %11000000
|
||||
CSH.Q.CONST .EQ %00100000
|
||||
CSH.Q.FUNC .EQ %00010000
|
||||
CSH.T.VOID .EQ 0
|
||||
CSH.T.CHAR .EQ 1
|
||||
CSH.T.INT .EQ 2
|
||||
CSH.T.LONG .EQ 3
|
||||
CSH.T.UCHAR .EQ 4
|
||||
CSH.T.UINT .EQ 5
|
||||
CSH.T.ULONG .EQ 6
|
||||
CSH.T.FLOAT .EQ 7
|
||||
CSH.T.VARIADIC .EQ $F
|
||||
CSH.Q.PCONST .EQ %00100000
|
||||
CSH.Q.CONST .EQ %00010000
|
||||
CSH.Q.FUNC .EQ %00001000
|
||||
*--------------------------------------
|
||||
CSH.OPChars .AS "!~+-*/%=&|^<>"
|
||||
CSH.OPChars.Cnt .EQ *-CSH.OPChars
|
||||
|
@ -92,23 +94,24 @@ CSH.KW >PSTR "if"
|
|||
>PSTR "case"
|
||||
>PSTR "break"
|
||||
>PSTR "continue"
|
||||
>PSTR "sizeof"
|
||||
>PSTR "typedef"
|
||||
>PSTR "struct"
|
||||
>PSTR "sizeof"
|
||||
CSH.TYPES >PSTR "void"
|
||||
>PSTR "float"
|
||||
CSH.MTYPES >PSTR "const" ALL
|
||||
>PSTR "signed" char,int,long
|
||||
>PSTR "unsigned" char,int,long
|
||||
>PSTR "short" int
|
||||
CSH.STYPES >PSTR "char"
|
||||
CSH.TYPES >PSTR "void"
|
||||
>PSTR "char"
|
||||
>PSTR "int"
|
||||
>PSTR "long"
|
||||
>PSTR "float"
|
||||
.HS 00
|
||||
*--------------------------------------
|
||||
CSH.FTYPES >PSTR "fastcall"
|
||||
* .HS 00
|
||||
*--------------------------------------
|
||||
CSH.TYPESIZE .HS 0001020401020405 VOID,CHAR,INT,LONG,UCHAR,UINT,ULONG,FLOAT....
|
||||
CSH.TYPESIZE .HS 0001020405010204
|
||||
*--------------------------------------
|
||||
CSH.FN
|
||||
* float cos ( float x );
|
||||
|
@ -142,57 +145,57 @@ CSH.FN
|
|||
.DA #0
|
||||
* char getchar ( void );
|
||||
>PSTR "getchar"
|
||||
.DA #CSH.T.CHAR returned value
|
||||
.DA #CSH.T.UCHAR returned value
|
||||
.DA #0
|
||||
* int puts ( const char * str );
|
||||
>PSTR "puts"
|
||||
.DA #CSH.T.INT returned value
|
||||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.CHAR
|
||||
.DA #CSH.T.SINT returned value
|
||||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.UCHAR
|
||||
.DA #0
|
||||
* int execl(const char* cmdline, short int flags);
|
||||
>PSTR "execl"
|
||||
.DA #CSH.T.INT returned value
|
||||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.CHAR
|
||||
.DA #CSH.T.SINT returned value
|
||||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.UCHAR
|
||||
.DA #CSH.T.UCHAR
|
||||
.DA #0
|
||||
* int printf ( const char * format, ... );
|
||||
>PSTR "printf"
|
||||
.DA #CSH.T.INT returned value
|
||||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.CHAR
|
||||
.DA #CSH.T.SINT returned value
|
||||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.UCHAR
|
||||
.DA #CSH.T.VARIADIC
|
||||
.DA #0
|
||||
* int putenv(const char *string);
|
||||
>PSTR "putenv"
|
||||
.DA #CSH.T.INT returned value
|
||||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.CHAR
|
||||
.DA #CSH.T.SINT returned value
|
||||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.UCHAR
|
||||
.DA #0
|
||||
* int setenv(const char *name, const char *value);
|
||||
>PSTR "setenv"
|
||||
.DA #CSH.T.INT returned value
|
||||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.CHAR
|
||||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.CHAR
|
||||
.DA #CSH.T.SINT returned value
|
||||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.UCHAR
|
||||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.UCHAR
|
||||
.DA #0
|
||||
* char *getenv(const char *name, char *value);
|
||||
>PSTR "getenv"
|
||||
.DA #CSH.Q.POINTER+CSH.T.CHAR
|
||||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.CHAR
|
||||
.DA #CSH.Q.POINTER+CSH.T.CHAR
|
||||
.DA #CSH.Q.POINTER+CSH.T.UCHAR
|
||||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.UCHAR
|
||||
.DA #CSH.Q.POINTER+CSH.T.UCHAR
|
||||
.DA #0
|
||||
* int unsetenv(const char *name);
|
||||
>PSTR "unsetenv"
|
||||
.DA #CSH.T.INT returned value
|
||||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.CHAR
|
||||
.DA #CSH.T.SINT returned value
|
||||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.UCHAR
|
||||
.DA #0
|
||||
* void md5 (const char* str, char* digest);
|
||||
>PSTR "md5"
|
||||
.DA #CSH.T.VOID
|
||||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.CHAR
|
||||
.DA #CSH.Q.POINTER+CSH.T.CHAR
|
||||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.UCHAR
|
||||
.DA #CSH.Q.POINTER+CSH.T.UCHAR
|
||||
.DA #0
|
||||
* void * malloc ( int size );
|
||||
>PSTR "malloc"
|
||||
.DA #CSH.Q.POINTER+CSH.T.VOID returned value
|
||||
.DA #CSH.T.INT
|
||||
.DA #CSH.T.SINT
|
||||
.DA #0
|
||||
*--------------------------------------
|
||||
.DA #0
|
||||
|
|
|
@ -48,8 +48,8 @@ J.CSH.BOPS.SHLt .DA CSH.TMISMATCH
|
|||
L.CSH.FN .DA CSH.FN
|
||||
L.CSH.DIRS .DA CSH.DIRS
|
||||
L.CSH.KW .DA CSH.KW
|
||||
L.CSH.MTYPES .DA CSH.MTYPES
|
||||
L.CSH.TYPES .DA CSH.TYPES
|
||||
L.CSH.STYPES .DA CSH.STYPES
|
||||
L.CSH.FTYPES .DA CSH.FTYPES
|
||||
J.CSH.DIRS .DA CSH.DIR.DEFINE
|
||||
.DA CSH.DIR.INCLUDE
|
||||
|
@ -62,20 +62,26 @@ J.CSH.KW .DA CSH.IF
|
|||
.DA CSH.CASE
|
||||
.DA CSH.BREAK
|
||||
.DA CSH.CONTINUE
|
||||
.DA CSH.SIZEOF
|
||||
*--------------------------------------
|
||||
.DA CSH.TYPEDEF
|
||||
.DA CSH.STRUCT
|
||||
.DA CSH.SIZEOF
|
||||
.DA CSH.VOID
|
||||
.DA CSH.FLOAT
|
||||
*--------------------------------------
|
||||
J.CSH.MTYPES .DA CSH.CONST
|
||||
.DA CSH.SIGNED
|
||||
.DA CSH.UNSIGNED
|
||||
.DA CSH.SHORT
|
||||
J.CSH.STYPES .DA CSH.CHAR
|
||||
J.CSH.TYPES .DA CSH.VOID
|
||||
.DA CSH.CHAR
|
||||
.DA CSH.INT
|
||||
.DA CSH.LONG
|
||||
.DA CSH.FLOAT
|
||||
J.CSH.UTYPES .DA CSH.UCHAR
|
||||
.DA CSH.UINT
|
||||
.DA CSH.ULONG
|
||||
J.CSH.STYPES .DA CSH.SCHAR
|
||||
.DA CSH.SINT
|
||||
.DA CSH.SLONG
|
||||
J.CSH.KW.END .DA CSH.IF.END
|
||||
.DA CSH.WHILE.END
|
||||
*--------------------------------------
|
||||
|
|
|
@ -75,7 +75,7 @@ CSH.Quit >LDA.G CSH.hSymbols
|
|||
|
||||
.3 lda hInclude
|
||||
beq .4
|
||||
|
||||
|
||||
>SYSCALL FClose
|
||||
|
||||
.4 lda hDefine
|
||||
|
@ -204,134 +204,6 @@ CSH.COMMENTS jsr CSH.GetNextChar
|
|||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CSH.DIR jsr CSH.GetNextCharNB
|
||||
bcs .99
|
||||
|
||||
cmp #'!' #!/bin/csh
|
||||
bne .1
|
||||
|
||||
jmp CSH.SkipLine
|
||||
|
||||
.1 >LDYA L.CSH.DIRS
|
||||
jsr CSH.LookupID
|
||||
bcs .91
|
||||
|
||||
jmp (J.CSH.DIRS,x)
|
||||
|
||||
.91 lda #CSH.E.INVDIR
|
||||
sec
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
CSH.DIR.DEFINE jsr CSH.CheckSpace
|
||||
bcs .99
|
||||
|
||||
jsr CSH.IsLetter
|
||||
bcs .90
|
||||
|
||||
>LDA.G CSH.hDefines
|
||||
jsr CSH.NewKey
|
||||
bcs .99
|
||||
|
||||
>STYA ZPVarID
|
||||
|
||||
jsr CSH.CheckSpace
|
||||
bcs .99
|
||||
|
||||
ldy #$ff
|
||||
|
||||
.1 iny
|
||||
lda (ZPInputBufPtr),y
|
||||
beq .2
|
||||
|
||||
cmp #C.CR
|
||||
bne .1
|
||||
|
||||
dey
|
||||
|
||||
.2 iny
|
||||
|
||||
phy
|
||||
|
||||
>PUSHB.G CSH.hDefines
|
||||
>PUSHW ZPVarID
|
||||
>PUSHW ZPInputBufPtr
|
||||
|
||||
ply
|
||||
lda #0
|
||||
>PUSHYA DataLen
|
||||
|
||||
>SYSCALL SListAddData
|
||||
bcs .99
|
||||
|
||||
jmp CSH.SkipLine
|
||||
|
||||
.90 lda #CSH.E.SYNTAX
|
||||
sec
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
CSH.DIR.INCLUDE >STZ.G PathBuf
|
||||
|
||||
jsr CSH.CheckSpace
|
||||
bcs .99
|
||||
|
||||
cmp #'"'
|
||||
beq .1
|
||||
|
||||
cmp #'<'
|
||||
bne .90
|
||||
|
||||
>PUSHW L.ENV.INCLUDE
|
||||
>PUSHEA.G PathBuf
|
||||
>SYSCALL GetEnv
|
||||
|
||||
lda #'>'
|
||||
|
||||
.1 sta ArgIndex
|
||||
|
||||
ldy #PathBuf
|
||||
|
||||
.2 lda (pData),y
|
||||
beq .3
|
||||
|
||||
iny
|
||||
bra .2
|
||||
|
||||
.3 jsr CSH.GetNextChar
|
||||
beq .90
|
||||
|
||||
cmp ArgIndex
|
||||
beq .8
|
||||
|
||||
sta (pData),y
|
||||
iny
|
||||
cpy #64
|
||||
bne .3
|
||||
|
||||
.90 lda #CSH.E.SYNTAX
|
||||
sec
|
||||
.99 rts
|
||||
|
||||
.8 jsr CSH.GetNextChar skip " or >
|
||||
|
||||
lda hInclude
|
||||
bne .90
|
||||
|
||||
lda hDefine
|
||||
bne .90
|
||||
|
||||
>LDYA ZPInputBufPtr
|
||||
>STYA.G CSH.SaveInclude
|
||||
|
||||
>LDYA pData
|
||||
jsr CS.RUN.LoadFile
|
||||
bcs .99
|
||||
|
||||
stx hInclude
|
||||
>STYA ZPInputBufPtr
|
||||
>STYA.G CSH.Buf For printing error message
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
CSH.SkipLine jsr CSH.GetNextChar
|
||||
bcs .9
|
||||
cmp #C.CR
|
||||
|
@ -440,8 +312,8 @@ CSH.AddSymbol >LDA.G CSH.hSymbols
|
|||
ldx ZPVarType
|
||||
jsr CSH.GetVarSize CS if pointer
|
||||
sta ZPVarSizeOf
|
||||
|
||||
* clc / sec
|
||||
|
||||
* clc / sec
|
||||
|
||||
lda ZPCSHData
|
||||
sta ZPVarDataPtr
|
||||
|
@ -473,32 +345,46 @@ CSH.TMISMATCH lda #CSH.E.TMISMATCH
|
|||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CSH.AddFunction lda #CSH.Q.FUNC
|
||||
CSH.fDeclaration
|
||||
lda #CSH.Q.FUNC
|
||||
tsb ZPVarType
|
||||
|
||||
jsr CSH.GetNextCharNB Skip (
|
||||
bcs .9
|
||||
|
||||
>DEBUG
|
||||
.1 cmp #')'
|
||||
beq .5
|
||||
|
||||
>LDYA L.CSH.TYPES
|
||||
jsr CSH.LookupID
|
||||
bcs .9
|
||||
|
||||
|
||||
|
||||
.5 jsr CSH.GetNextCharNB Skip )
|
||||
|
||||
|
||||
jsr CSH.GetDeclaration
|
||||
bcs .99
|
||||
|
||||
|
||||
|
||||
.5 jsr CSH.GetNextCharNB Skip )
|
||||
|
||||
jsr CSH.SkipLine
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #CSH.E.SYNTAX
|
||||
sec
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
CSH.GetDeclaration
|
||||
>ENTER 4
|
||||
|
||||
>LDYA L.CSH.MTYPES
|
||||
jsr CSH.LookupID
|
||||
bcs .9
|
||||
|
||||
|
||||
bra .8
|
||||
|
||||
.9 lda #CSH.E.SYNTAX
|
||||
sec
|
||||
.99 rts
|
||||
.8 >LEAVE
|
||||
rts
|
||||
*--------------------------------------
|
||||
CSH.NewKey >PUSHA
|
||||
>PUSHW ZPInputBufPtr
|
||||
|
@ -860,10 +746,10 @@ CSH.GetChar lda (ZPInputBufPtr)
|
|||
ply
|
||||
plx
|
||||
bra CSH.GetChar
|
||||
|
||||
|
||||
.1 lda hInclude
|
||||
beq .9
|
||||
|
||||
|
||||
stz hInclude
|
||||
phx
|
||||
phy
|
||||
|
|
|
@ -0,0 +1,135 @@
|
|||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
CSH.DIR jsr CSH.GetNextCharNB
|
||||
bcs .99
|
||||
|
||||
cmp #'!' #!/bin/csh
|
||||
bne .1
|
||||
|
||||
jmp CSH.SkipLine
|
||||
|
||||
.1 >LDYA L.CSH.DIRS
|
||||
jsr CSH.LookupID
|
||||
bcs .91
|
||||
|
||||
jmp (J.CSH.DIRS,x)
|
||||
|
||||
.91 lda #CSH.E.INVDIR
|
||||
sec
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
CSH.DIR.DEFINE jsr CSH.CheckSpace
|
||||
bcs .99
|
||||
|
||||
jsr CSH.IsLetter
|
||||
bcs .90
|
||||
|
||||
>LDA.G CSH.hDefines
|
||||
jsr CSH.NewKey
|
||||
bcs .99
|
||||
|
||||
>STYA ZPVarID
|
||||
|
||||
jsr CSH.CheckSpace
|
||||
bcs .99
|
||||
|
||||
ldy #$ff
|
||||
|
||||
.1 iny
|
||||
lda (ZPInputBufPtr),y
|
||||
beq .2
|
||||
|
||||
cmp #C.CR
|
||||
bne .1
|
||||
|
||||
dey
|
||||
|
||||
.2 iny
|
||||
|
||||
phy
|
||||
|
||||
>PUSHB.G CSH.hDefines
|
||||
>PUSHW ZPVarID
|
||||
>PUSHW ZPInputBufPtr
|
||||
|
||||
ply
|
||||
lda #0
|
||||
>PUSHYA DataLen
|
||||
|
||||
>SYSCALL SListAddData
|
||||
bcs .99
|
||||
|
||||
jmp CSH.SkipLine
|
||||
|
||||
.90 lda #CSH.E.SYNTAX
|
||||
sec
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
CSH.DIR.INCLUDE >STZ.G PathBuf
|
||||
|
||||
jsr CSH.CheckSpace
|
||||
bcs .99
|
||||
|
||||
cmp #'"'
|
||||
beq .1
|
||||
|
||||
cmp #'<'
|
||||
bne .90
|
||||
|
||||
>PUSHW L.ENV.INCLUDE
|
||||
>PUSHEA.G PathBuf
|
||||
>SYSCALL GetEnv
|
||||
|
||||
lda #'>'
|
||||
|
||||
.1 sta ArgIndex
|
||||
|
||||
ldy #PathBuf
|
||||
|
||||
.2 lda (pData),y
|
||||
beq .3
|
||||
|
||||
iny
|
||||
bra .2
|
||||
|
||||
.3 jsr CSH.GetNextChar
|
||||
beq .90
|
||||
|
||||
cmp ArgIndex
|
||||
beq .8
|
||||
|
||||
sta (pData),y
|
||||
iny
|
||||
cpy #64
|
||||
bne .3
|
||||
|
||||
.90 lda #CSH.E.SYNTAX
|
||||
sec
|
||||
.99 rts
|
||||
|
||||
.8 jsr CSH.GetNextChar skip " or >
|
||||
|
||||
lda hInclude
|
||||
bne .90
|
||||
|
||||
lda hDefine
|
||||
bne .90
|
||||
|
||||
>LDYA ZPInputBufPtr
|
||||
>STYA.G CSH.SaveInclude
|
||||
|
||||
>LDYA pData
|
||||
jsr CS.RUN.LoadFile
|
||||
bcs .99
|
||||
|
||||
stx hInclude
|
||||
>STYA ZPInputBufPtr
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/bin/csh.s.dir
|
||||
LOAD usr/src/bin/csh.s
|
||||
ASM
|
|
@ -76,7 +76,7 @@ CSH.ExpEval ldx ZPPtr1
|
|||
ldx ZPPtr2
|
||||
bne .23
|
||||
|
||||
ldx #CSH.T.INT
|
||||
ldx #CSH.T.SINT
|
||||
stx ZPPtr2
|
||||
|
||||
.23 jsr CSH.GetNumOnStack
|
||||
|
@ -194,9 +194,11 @@ CSH.GetNumOnStack
|
|||
txa
|
||||
beq .99
|
||||
|
||||
.10 cpx #CSH.T.FLOAT
|
||||
bcc .1
|
||||
bne .99
|
||||
cpx #CSH.T.ULONG+1
|
||||
bcs .99
|
||||
|
||||
cpx #CSH.T.FLOAT
|
||||
bne .1
|
||||
|
||||
>PUSHW ZPInputBufPtr
|
||||
>PUSHWI ZPInputBufPtr
|
||||
|
@ -208,8 +210,9 @@ CSH.GetNumOnStack
|
|||
>PUSHWI ZPInputBufPtr
|
||||
>PUSHBI 10
|
||||
phx
|
||||
cpx #CSH.T.UCHAR
|
||||
|
||||
bcc .2
|
||||
|
||||
>SYSCALL StrToUL
|
||||
bra .3
|
||||
|
||||
|
@ -224,6 +227,7 @@ CSH.GetNumOnStack
|
|||
|
||||
cmp #2
|
||||
bne .4
|
||||
|
||||
ldy #1
|
||||
>PULLA
|
||||
sta (pStack),y
|
||||
|
@ -236,6 +240,7 @@ CSH.GetNumOnStack
|
|||
inc pStack
|
||||
inc pStack
|
||||
sta (pStack)
|
||||
|
||||
.8 clc
|
||||
.9 rts
|
||||
|
||||
|
|
|
@ -74,9 +74,9 @@ CSH.SWITCH
|
|||
CSH.CASE
|
||||
CSH.BREAK
|
||||
CSH.CONTINUE
|
||||
CSH.TYPEDEF
|
||||
CSH.SIZEOF
|
||||
lda #CSH.E.SYNTAX
|
||||
*--------------------------------------
|
||||
CSH.TYPEDEF lda #CSH.E.SYNTAX
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
@ -108,7 +108,25 @@ CSH.STRUCT >ENTER 4
|
|||
.99 >LEAVE
|
||||
rts
|
||||
*--------------------------------------
|
||||
* Built in Types
|
||||
CSH.CONST lda ZPVarQual
|
||||
bit #CSH.Q.PPPOINTER
|
||||
bne .1
|
||||
|
||||
lda #CSH.Q.CONST
|
||||
bra .2
|
||||
|
||||
.1 lda #CSH.Q.PCONST
|
||||
|
||||
.2 bit ZPVarQual
|
||||
bne .9
|
||||
|
||||
tsb ZPVarQual
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #CSH.E.SYNTAX
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CSH.SIGNED sec
|
||||
.HS 90 BCC
|
||||
|
@ -119,16 +137,23 @@ CSH.UNSIGNED clc
|
|||
jsr CSH.CheckSpace
|
||||
bcs .9
|
||||
|
||||
>LDYA L.CSH.STYPES
|
||||
>LDYA L.CSH.TYPES
|
||||
jsr CSH.LookupID
|
||||
|
||||
bcs .9
|
||||
|
||||
cpx #2
|
||||
bcc .9
|
||||
|
||||
cpx #8 only char int long allowed
|
||||
bcs .9
|
||||
|
||||
plp
|
||||
bcs .8
|
||||
jmp (J.CSH.UTYPES,x)
|
||||
|
||||
.8 jmp (J.CSH.STYPES,x)
|
||||
jmp (J.CSH.UTYPES-2,x)
|
||||
|
||||
.8 jmp (J.CSH.STYPES-2,x)
|
||||
|
||||
.9 plp
|
||||
|
||||
|
@ -139,13 +164,13 @@ CSH.UNSIGNED clc
|
|||
CSH.SHORT jsr CSH.CheckSpace
|
||||
bcs .9
|
||||
|
||||
>LDYA L.CSH.STYPES
|
||||
>LDYA L.CSH.TYPES
|
||||
jsr CSH.LookupID
|
||||
|
||||
bcs CSH.UCHAR
|
||||
|
||||
cpx #2
|
||||
beq CSH.CHAR
|
||||
cpx #4 only int allowed
|
||||
beq CSH.SCHAR
|
||||
|
||||
.9 lda #CSH.E.SYNTAX
|
||||
sec
|
||||
|
@ -153,16 +178,22 @@ CSH.SHORT jsr CSH.CheckSpace
|
|||
*--------------------------------------
|
||||
CSH.VOID ldx #CSH.T.VOID
|
||||
bra CSH.TYPE
|
||||
CSH.CHAR ldx #CSH.T.CHAR
|
||||
|
||||
CSH.SCHAR ldx #CSH.T.SCHAR
|
||||
bra CSH.TYPE
|
||||
CSH.CHAR
|
||||
CSH.UCHAR ldx #CSH.T.UCHAR
|
||||
bra CSH.TYPE
|
||||
CSH.INT ldx #CSH.T.INT
|
||||
CSH.INT
|
||||
CSH.SINT ldx #CSH.T.SINT
|
||||
bra CSH.TYPE
|
||||
|
||||
CSH.UINT ldx #CSH.T.UINT
|
||||
bra CSH.TYPE
|
||||
CSH.LONG ldx #CSH.T.LONG
|
||||
CSH.LONG
|
||||
CSH.SLONG ldx #CSH.T.SLONG
|
||||
bra CSH.TYPE
|
||||
|
||||
CSH.ULONG ldx #CSH.T.ULONG
|
||||
bra CSH.TYPE
|
||||
|
||||
|
@ -220,7 +251,7 @@ CSH.TYPE stx ZPVarType
|
|||
.13 cmp #'('
|
||||
bne .9
|
||||
|
||||
jmp CSH.AddFunction
|
||||
jmp CSH.fDeclaration
|
||||
|
||||
.2 jsr CSH.GetNextCharNB Skip =
|
||||
bcs .9
|
||||
|
@ -274,6 +305,7 @@ CSH.fCall ldx ZPPtr1
|
|||
|
||||
cmp #'('
|
||||
bne .52
|
||||
|
||||
jsr CSH.GetNextCharNB skip '('
|
||||
.10 bcs .90
|
||||
|
||||
|
@ -294,13 +326,16 @@ CSH.fCall ldx ZPPtr1
|
|||
*--------------------------------------
|
||||
.3 eor #CSH.T.VARIADIC if VARIADIC, don't advance to next arg and assume type = 0
|
||||
beq .4
|
||||
|
||||
eor #CSH.T.VARIADIC restore type...
|
||||
|
||||
.4 jsr CSH.ExpEval A=0 if VARIADIC
|
||||
bcs .9 X = Var Type
|
||||
|
||||
lda (ZPPtr1) get current arg type
|
||||
eor #CSH.T.VARIADIC
|
||||
bne .5
|
||||
|
||||
jsr CSH.GetVarSize X = Var Type
|
||||
|
||||
clc make sure pointer only 2 bytes
|
||||
|
@ -326,6 +361,7 @@ CSH.fCall ldx ZPPtr1
|
|||
bne .90
|
||||
lda (ZPPtr1)
|
||||
beq .8 no more arg after ')', exit
|
||||
|
||||
eor #CSH.T.VARIADIC
|
||||
bne .90 missing arg
|
||||
|
||||
|
|
|
@ -24,7 +24,8 @@ ZPCSHStack .BS 2
|
|||
|
||||
ZPVarID .BS 2
|
||||
ZPVarDef .EQ *
|
||||
ZPVarType .BS 2
|
||||
ZPVarType .BS 1
|
||||
ZPVarQual .BS 1
|
||||
ZPVarSizeOf .BS 2
|
||||
ZPVarDataPtr .BS 2
|
||||
|
||||
|
@ -160,7 +161,6 @@ CS.RUN.ARGS inc ArgIndex
|
|||
bcs .9
|
||||
|
||||
>STYA ZPInputBufPtr
|
||||
>STYA.G CSH.Buf For printing error message
|
||||
|
||||
txa
|
||||
>STA.G hFileBuf
|
||||
|
@ -203,8 +203,17 @@ PrintErrMsg lda hDefine
|
|||
>LDYA.G CSH.SaveDefine
|
||||
>STYA ZPInputBufPtr
|
||||
|
||||
.10 >LDYA.G CSH.Buf
|
||||
.10 lda hInclude
|
||||
beq .11
|
||||
|
||||
|
||||
bra .12
|
||||
|
||||
.11 >LDA.G hFileBuf
|
||||
|
||||
.12 >SYSCALL GetMemPtr
|
||||
>STYA ZPPtr1
|
||||
|
||||
stz ZPPtr2
|
||||
stz ZPPtr2+1 Line counter
|
||||
|
||||
|
@ -255,7 +264,7 @@ PrintErrMsg lda hDefine
|
|||
lda (pPS),y
|
||||
>PUSHA
|
||||
>PUSHW L.MSG.ERR
|
||||
>PUSHW ZPPtr2 Line counter
|
||||
>PUSHW ZPPtr2 Line counter
|
||||
>PUSHBI 2
|
||||
>SYSCALL FPrintF
|
||||
|
||||
|
@ -306,6 +315,7 @@ PrintTraceMsg.3 >PUSHBI '>'
|
|||
rts
|
||||
*--------------------------------------
|
||||
.INB usr/src/bin/csh.s.core
|
||||
.INB usr/src/bin/csh.s.dir
|
||||
.INB usr/src/bin/csh.s.kw
|
||||
.INB usr/src/bin/csh.s.exp
|
||||
.INB usr/src/bin/csh.s.exec
|
||||
|
|
|
@ -198,7 +198,7 @@ CS.RUN.Format jsr CS.RUN.GetDevStatus
|
|||
>LDYA L.MSG.OK
|
||||
>SYSCALL PutS
|
||||
bcs .9
|
||||
>DEBUGOA
|
||||
|
||||
.8 >PUSHB DSSS0000
|
||||
>PUSHW pData
|
||||
>SYSCALL Online
|
||||
|
@ -314,6 +314,11 @@ CS.RUN.LL >LDA.G DIB+S.DIB.T
|
|||
CS.RUN.LL.RTS rts
|
||||
*--------------------------------------
|
||||
CS.RUN.LL.DISKII
|
||||
jsr CS.RUN.MotorOn
|
||||
bcs CS.RUN.LL.RTS
|
||||
|
||||
>SLEEP
|
||||
|
||||
>LDYAI 4096
|
||||
>SYSCALL GetMem
|
||||
bcs CS.RUN.LL.RTS
|
||||
|
@ -321,11 +326,6 @@ CS.RUN.LL.DISKII
|
|||
stx hTrackBuf
|
||||
>STYA ZPPtr1
|
||||
|
||||
jsr CS.RUN.MotorOn
|
||||
bcs CS.RUN.LL.RTS
|
||||
|
||||
>SLEEP
|
||||
|
||||
>PUSHB DSSS0000
|
||||
>LIBCALL hLIBBLKDEV,LIBBLKDEV.D2Recalibrate
|
||||
bcs CS.RUN.LL.RTS
|
||||
|
@ -393,7 +393,6 @@ CS.RUN.LL.DISKII
|
|||
bpl .80
|
||||
|
||||
jsr CS.RUN.LL.DISKII.V
|
||||
>DEBUGOA
|
||||
bcs .9
|
||||
|
||||
.80 jmp CS.RUN.MotorOff
|
||||
|
@ -750,7 +749,7 @@ Disk2.HX .DA 432 BlkCnt
|
|||
*-------------------------------------- RANA Elite 2
|
||||
Disk2.DefaultD .DA 640 BlkCnt
|
||||
.DA #40 TrkCnt
|
||||
.DA #2 Stepping
|
||||
.DA #4 Stepping
|
||||
.DA #193 VolNum
|
||||
.DA #$80 AltBB
|
||||
.DA #1 HeadCnt
|
||||
|
@ -758,7 +757,7 @@ Disk2.DefaultD .DA 640 BlkCnt
|
|||
*--------------------------------------
|
||||
Disk2.XD .DA 640 BlkCnt
|
||||
.DA #40 TrkCnt
|
||||
.DA #2 Stepping
|
||||
.DA #4 Stepping
|
||||
.DA #193 VolNum
|
||||
.DA #$80 AltBB
|
||||
.DA #1 HeadCnt
|
||||
|
|
|
@ -133,7 +133,7 @@ DHCP.RUN.OK lda #S.IPCFG.STATUS.OK
|
|||
|
||||
ldx #0
|
||||
|
||||
.2 lda IPCFG+S.IPCFG.IP,x
|
||||
.2 lda IPCFG+S.IPCFG.MASK,x
|
||||
>PUSHA
|
||||
inx
|
||||
cpx #4
|
||||
|
|
|
@ -395,6 +395,7 @@ CS.RUN.PRINT.BDEV
|
|||
beq .8
|
||||
>LDYA ZPFileName
|
||||
jmp EnterSubDirYA
|
||||
|
||||
.8 clc
|
||||
.9 rts
|
||||
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
MSG.USAGE .AS "Usage : SED File(s) (*,? wildcards allowed)\r\n"
|
||||
.AS " -C : Continue on error\r\n"
|
||||
.AS " -R : Recurse subdirectories\r\n"
|
||||
.AS " -S "search text"
|
||||
.AS " -N "new text"
|
|
@ -9,6 +9,8 @@ AT.LookupName .EQ $10
|
|||
AT.GetMyZone .EQ $1A
|
||||
AT.GetZoneList .EQ $1B
|
||||
|
||||
AT.GetParms .EQ $1C
|
||||
|
||||
AT.FILogin .EQ $2B
|
||||
AT.FILoginCont .EQ $2C
|
||||
AT.FILogout .EQ $2D
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
NEW
|
||||
AUTO 3,1
|
||||
*--------------------------------------
|
||||
IO.D2.SeekTimeR .EQ 140 LIBBLKDEV Recalibration
|
||||
IO.D2.SeekTimeR .EQ 65 LIBBLKDEV Recalibration
|
||||
IO.D2.SeekTimeF .EQ 65 LIBBLKDEV Track Formatter
|
||||
IO.D2.SeekTimeB .EQ 65 LIBBLKDEV Boot Block
|
||||
IO.D2.SeekTime0 .EQ 65 ProDOS.FX initial0
|
||||
IO.D2.SeekTimeP .EQ 30 ProDOS.FX initial
|
||||
IO.D2.SeekTimeP .EQ 65 ProDOS.FX initial
|
||||
IO.D2.SeekTimeI .EQ 10 ProDOS.FX increment -> until > 128
|
||||
*--------------------------------------
|
||||
IO.D2.Ph0Off .EQ $C080
|
||||
|
|
|
@ -16,10 +16,12 @@ PS.Table.Stats .EQ $13E0 K.PS.MAX
|
|||
S.Table.hSID .EQ $1400 K.USR.MAX
|
||||
S.Table.hFile .EQ $1410 K.USR.MAX
|
||||
*--------------------------------------
|
||||
Flt.Table.hPath .EQ $1420 K.FLT.MAX
|
||||
Flt.Table.hLib .EQ $1424 K.FLT.MAX
|
||||
Flt.Table.pftLO .EQ $1420 K.FLT.MAX
|
||||
Flt.Table.pftHI .EQ $1424 K.FLT.MAX
|
||||
Flt.Table.cbLO .EQ $1428 K.FLT.MAX
|
||||
Flt.Table.cbHI .EQ $142C K.FLT.MAX
|
||||
*--------------------------------------
|
||||
A2osX.EndTables .EQ $1428
|
||||
A2osX.EndTables .EQ $1430
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE inc/kernel.i
|
||||
|
|
|
@ -3,8 +3,13 @@ NEW
|
|||
*--------------------------------------
|
||||
TCP.PORT.CIFS .EQ 445
|
||||
*--------------------------------------
|
||||
S.SMB.H.PROTO .EQ 0 \xFF 'SMB'
|
||||
S.SMB.H.CMD .EQ 4
|
||||
S.NETBIOS.TYPE .EQ 0
|
||||
S.NETBIOS.LEN .EQ 1
|
||||
*
|
||||
S.NETBIOS .EQ 4
|
||||
*--------------------------------------
|
||||
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
|
||||
|
@ -24,10 +29,10 @@ 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.TID .EQ 24
|
||||
S.SMB.H.PIDLO .EQ 26
|
||||
S.SMB.H.UID .EQ 28
|
||||
S.SMB.H.MID .EQ 30
|
||||
S.SMB.H.UID .EQ 28
|
||||
S.SMB.H.MID .EQ 30
|
||||
*
|
||||
S.SMB.H .EQ 32
|
||||
*--------------------------------------
|
||||
|
|
|
@ -13,12 +13,12 @@ int fastcall putchar(short int);
|
|||
// int fputc ( hFILE stream , short int character );
|
||||
int fastcall puts(const char*);
|
||||
int fputs (short int, const char*);
|
||||
char* fgets(hFILE stream, char* s, int n);
|
||||
char* fgets(short int, char* s, int n);
|
||||
short int getchar();
|
||||
short int fastcall getc(short int);
|
||||
// short int ungetc(short int c, short int );
|
||||
|
||||
short int fopen( const char*,short int,short int,int);
|
||||
short int fopen(const char*,short int,short int,int);
|
||||
int fclose(short int);
|
||||
// int fread (short int stream, void * ptr, int count );
|
||||
// int fwrite (short int stream, const void * ptr, int count );
|
||||
|
|
|
@ -6,54 +6,56 @@ D2MotorControl >PULLB MotorOn
|
|||
>PULLB DrvSlt
|
||||
jsr CheckDiskII
|
||||
bcs .9
|
||||
|
||||
|
||||
lda MotorOn
|
||||
asl
|
||||
|
||||
|
||||
lda #IO.D2.DrvOff
|
||||
adc Slotn0
|
||||
tax
|
||||
lda $C000,x
|
||||
|
||||
|
||||
clc
|
||||
|
||||
|
||||
.9 rts
|
||||
*/--------------------------------------
|
||||
*\--------------------------------------
|
||||
D2Recalibrate >PULLB DrvSlt
|
||||
jsr CheckDiskII
|
||||
bcs .9
|
||||
|
||||
|
||||
* ldx Slotn0
|
||||
ldy Slotn0
|
||||
|
||||
lda IO.D2.DrvOn,y
|
||||
nop
|
||||
nop
|
||||
|
||||
|
||||
lda #168
|
||||
|
||||
.1 sta IO.D2.Ph0Off,y
|
||||
|
||||
dec
|
||||
.1 dec
|
||||
dec
|
||||
|
||||
pha
|
||||
pha
|
||||
|
||||
and #6
|
||||
ora Slotn0
|
||||
phy
|
||||
plx
|
||||
tay
|
||||
sta IO.D2.Ph0On,y
|
||||
|
||||
lda IO.D2.Ph0On,y
|
||||
|
||||
lda #IO.D2.SeekTimeR
|
||||
jsr D2.Wait100usecA
|
||||
|
||||
lda IO.D2.Ph0Off,x
|
||||
|
||||
lda #IO.D2.SeekTimeR
|
||||
jsr D2.Wait100usecA
|
||||
|
||||
pla
|
||||
bne .1
|
||||
|
||||
|
||||
jsr D2.Wait25600usec
|
||||
|
||||
ldx Slotn0
|
||||
lda IO.D2.Ph0Off,x
|
||||
|
||||
* ldy Slotn0
|
||||
lda IO.D2.Ph0Off,y
|
||||
|
||||
jsr D2.Wait25600usec
|
||||
|
||||
|
@ -74,15 +76,15 @@ D2MoveHead >PULLB MoveTo
|
|||
clc
|
||||
.9 rts
|
||||
|
||||
|
||||
D2MoveHead.SEI ldx Slotn0
|
||||
ldy Slotn0
|
||||
|
||||
.1 lda MoveFrom
|
||||
cmp MoveTo
|
||||
beq .7
|
||||
beq .8
|
||||
|
||||
jsr .8
|
||||
sta IO.D2.Ph0Off,x
|
||||
sta IO.D2.Ph0Off,y
|
||||
|
||||
bcs .2
|
||||
|
||||
|
@ -121,28 +123,28 @@ D2MoveHead.SEI ldx Slotn0
|
|||
and #6
|
||||
ora Slotn0
|
||||
|
||||
* bcc .4
|
||||
bcc .4
|
||||
|
||||
* move out : invert 2 phases
|
||||
|
||||
* phx
|
||||
* tax
|
||||
* pla
|
||||
phx
|
||||
tax
|
||||
pla
|
||||
|
||||
.4 tay
|
||||
|
||||
lda IO.D2.Ph0On,x
|
||||
lda IO.D2.Ph0On,y
|
||||
sta IO.D2.Ph0On,x
|
||||
sta IO.D2.Ph0On,y
|
||||
|
||||
lda #IO.D2.SeekTimeF
|
||||
jsr D2.Wait100usecA
|
||||
|
||||
bra .1
|
||||
|
||||
.7 jsr D2.Wait25600usec
|
||||
.8 jsr D2.Wait25600usec
|
||||
|
||||
.8 bit IO.D2.Ph0Off,x
|
||||
ldx IO.D2.Ph0Off,y
|
||||
sta IO.D2.Ph0Off,x
|
||||
sta IO.D2.Ph0Off,y
|
||||
rts
|
||||
*--------------------------------------
|
||||
D2.Wait25600usec
|
||||
|
@ -150,22 +152,22 @@ D2.Wait25600usec
|
|||
|
||||
D2.Wait100usecA phx
|
||||
|
||||
.1 ldx #19 (2)
|
||||
.1 ldx #20 (2)
|
||||
|
||||
.2 dex (2)
|
||||
bne .2 (3)
|
||||
|
||||
dec (2)
|
||||
bne .1 (3)
|
||||
|
||||
|
||||
plx
|
||||
|
||||
|
||||
rts (6)
|
||||
*/--------------------------------------
|
||||
* # D2TrkRead16s
|
||||
* Write a track (16 sectors)
|
||||
* PUSHB = DSSS0000
|
||||
* PUSHB = TrackNum * 4 : 0->136+
|
||||
* PUSHB = TrackNum * 4 : 0->136+
|
||||
* PUSHW = Ptr to 16*256 buffer
|
||||
* ## RETURN VALUE
|
||||
* CC : success, A = VolNum
|
||||
|
@ -177,16 +179,16 @@ D2TrkRead16s >PULLW ZPPtr1
|
|||
|
||||
jsr CheckDiskII
|
||||
bcs .9
|
||||
|
||||
|
||||
|
||||
|
||||
lda VolNum
|
||||
clc
|
||||
.9 rts
|
||||
.9 rts
|
||||
*/--------------------------------------
|
||||
* # D2TrkWrite16s
|
||||
* Write a track (16 sectors)
|
||||
* PUSHB = DSSS0000
|
||||
* PUSHB = TrackNum * 4 : 0->136+
|
||||
* PUSHB = TrackNum * 4 : 0->136+
|
||||
* PUSHW = Ptr to 16*256 buffer
|
||||
* ## RETURN VALUE
|
||||
* CC : success
|
||||
|
@ -199,53 +201,56 @@ D2TrkWrite16s >PULLW ZPPtr1
|
|||
|
||||
jsr CheckDiskII
|
||||
bcs .9
|
||||
|
||||
>LDYAI TRACK16.LEN+1
|
||||
|
||||
>LDYAI TRACK16.LEN+256+1
|
||||
>SYSCALL2 GetMem
|
||||
bcs .9
|
||||
|
||||
|
||||
>STYA ZPPtr2
|
||||
stx hTrkBuf
|
||||
|
||||
stz SectNum
|
||||
|
||||
ldy #0 put 256 FF sync bytes for slooooow drives
|
||||
jsr PutSyncBytePtr2
|
||||
|
||||
ldy #TRACK16.GAP1
|
||||
jsr PutSyncBytePtr2
|
||||
|
||||
|
||||
.1 jsr PutAddrHeadPtr2
|
||||
|
||||
|
||||
jsr HeaderCheckSum
|
||||
|
||||
|
||||
ldy #3
|
||||
|
||||
.2 lda Checksum,y
|
||||
jsr PutByte44Ptr2
|
||||
dey
|
||||
bpl .2
|
||||
|
||||
|
||||
jsr PutTailPtr2
|
||||
|
||||
|
||||
ldy #TRACK16.GAP2
|
||||
jsr PutSyncBytePtr2
|
||||
|
||||
|
||||
jsr PutDataHeadPtr2
|
||||
|
||||
|
||||
jsr PutData
|
||||
|
||||
|
||||
jsr PutTailPtr2
|
||||
ldy #TRACK16.GAP3
|
||||
jsr PutSyncBytePtr2
|
||||
|
||||
|
||||
inc ZPPtr1+1
|
||||
|
||||
|
||||
inc SectNum
|
||||
lda SectNum
|
||||
cmp #16
|
||||
bne .1
|
||||
|
||||
|
||||
lda #0
|
||||
sta (ZPPtr2)
|
||||
|
||||
|
||||
jsr D2WriteTrackPtr2
|
||||
php
|
||||
pha
|
||||
|
@ -271,7 +276,7 @@ D2TrkReadNIB
|
|||
*\--------------------------------------
|
||||
D2TrkWriteNIB >PULLW ZPPtr1
|
||||
>PULLB DrvSlt
|
||||
|
||||
|
||||
jsr CheckDiskII was it a DISK II ?
|
||||
bcs .9
|
||||
|
||||
|
@ -289,7 +294,7 @@ CheckDiskII pha
|
|||
ora #$C0 make Cn
|
||||
sta ZPPtr3+1
|
||||
stz ZPPtr3
|
||||
|
||||
|
||||
ldx #3 4 bytes to check
|
||||
|
||||
.1 ldy DiskII.OFS,x
|
||||
|
@ -300,7 +305,7 @@ CheckDiskII pha
|
|||
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
|
||||
pla all bytes match, Disk II
|
||||
asl
|
||||
lda #0
|
||||
|
@ -333,7 +338,10 @@ DrvSpinCheck ldy #0
|
|||
|
||||
lda IO.D2.RData,x
|
||||
|
||||
.1 cmp IO.D2.RData,x
|
||||
.1 pha
|
||||
pla
|
||||
|
||||
cmp IO.D2.RData,x
|
||||
bne .8 spinning
|
||||
|
||||
dey
|
||||
|
@ -395,36 +403,36 @@ PutData stz Checksum
|
|||
clc
|
||||
adc #86
|
||||
bcc .1
|
||||
|
||||
|
||||
iny
|
||||
clc
|
||||
|
||||
|
||||
.1 sta ZPPtr3
|
||||
sty ZPPtr3+1
|
||||
|
||||
|
||||
adc #86
|
||||
bcc .2
|
||||
|
||||
|
||||
iny
|
||||
|
||||
|
||||
.2 sta ZPPtr4
|
||||
sty ZPPtr4+1
|
||||
|
||||
|
||||
ldy #85
|
||||
|
||||
|
||||
.3 lda (ZPPtr1),y
|
||||
and #3
|
||||
tax
|
||||
lda D2.XX000000,x
|
||||
pha
|
||||
|
||||
|
||||
lda (ZPPtr3),y
|
||||
and #3
|
||||
tax
|
||||
pla
|
||||
ora D2.00XX0000,x
|
||||
pha
|
||||
|
||||
|
||||
lda (ZPPtr4),y
|
||||
and #3
|
||||
tax
|
||||
|
@ -432,37 +440,37 @@ PutData stz Checksum
|
|||
ora D2.0000XX00,x
|
||||
|
||||
tax
|
||||
|
||||
|
||||
eor Checksum
|
||||
sta Checksum
|
||||
|
||||
|
||||
lda FC2Nib,x
|
||||
|
||||
|
||||
jsr PutBytePtr2
|
||||
dey
|
||||
bpl .3
|
||||
|
||||
|
||||
ldy #0
|
||||
|
||||
|
||||
.4 lda (ZPPtr1),y
|
||||
and #$FC
|
||||
|
||||
|
||||
tax
|
||||
|
||||
|
||||
eor Checksum
|
||||
sta Checksum
|
||||
|
||||
|
||||
lda FC2Nib,x
|
||||
|
||||
|
||||
jsr PutBytePtr2
|
||||
|
||||
|
||||
iny
|
||||
bne .4
|
||||
|
||||
|
||||
ldx Checksum
|
||||
lda FC2Nib,x
|
||||
jsr PutBytePtr2
|
||||
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
PutByte44Ptr2 pha
|
||||
|
@ -470,14 +478,14 @@ PutByte44Ptr2 pha
|
|||
jsr .1
|
||||
|
||||
pla
|
||||
|
||||
|
||||
.1 ora #$AA
|
||||
*--------------------------------------
|
||||
PutBytePtr2 sta (ZPPtr2)
|
||||
inc ZPPtr2
|
||||
bne .8
|
||||
inc ZPPtr2+1
|
||||
.8 rts
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
D2WriteTrackPtr2
|
||||
lda hTrkBuf
|
||||
|
@ -488,16 +496,16 @@ D2WriteTrackPtr2
|
|||
sei
|
||||
|
||||
ldy #TrkWriter.Size
|
||||
|
||||
|
||||
.1 lda TrkWriter-1,y
|
||||
sta $1ff,y
|
||||
dey
|
||||
bne .1
|
||||
|
||||
|
||||
ldx Slotn0
|
||||
|
||||
jsr $200
|
||||
|
||||
|
||||
plp
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
|
|
@ -13,16 +13,16 @@ NEW
|
|||
*--------------------------------------
|
||||
* 300rpm = 5rps = 200000us / 4us = 50000 bits MAX
|
||||
*--------------------------------------
|
||||
TRACK16.LEN .EQ 6400
|
||||
TRACK16.LEN .EQ 6240
|
||||
*--------------------------------------
|
||||
TRACK16.GAP1 .EQ 80 800 bits
|
||||
* 16 * (
|
||||
*Address field = D5AA96 + 4x2 + DEAAEB = 14 112 bits
|
||||
TRACK16.GAP2 .EQ 6 60 bits
|
||||
*Data field = D5AAAD + 342 + CS + DEAAEB = 349 2792 bits
|
||||
TRACK16.GAP3 .EQ 17 170 bits
|
||||
TRACK16.GAP3 .EQ 16 160 bits
|
||||
* )
|
||||
* 80 + 16 * (14 + 6 + 349 + 17) = 6256 800 + 50144 bits
|
||||
* 80 + 16 * (14 + 6 + 349 + 16) = 6240 800 + 49984 bits
|
||||
*--------------------------------------
|
||||
TRACK9.LEN .EQ 6511
|
||||
*--------------------------------------
|
||||
|
|
|
@ -0,0 +1,691 @@
|
|||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
.OP 65C02
|
||||
.OR $2000
|
||||
.TF lib/libcifs
|
||||
*--------------------------------------
|
||||
.INB inc/macros.i
|
||||
.INB inc/a2osx.i
|
||||
.INB inc/mli.e.i
|
||||
.INB inc/eth.i
|
||||
.INB inc/libtcpip.i
|
||||
.INB inc/net.smb.i
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
.OR ZPLIB
|
||||
ZS.START
|
||||
hSocket .BS 1
|
||||
hReq .BS 1
|
||||
ZPReqPtr .BS 2
|
||||
ZPReqLen .BS 2
|
||||
ZPCtxPtr .BS 2
|
||||
|
||||
hResp .BS 1
|
||||
ZPRespPtr .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
|
||||
.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
|
||||
*--------------------------------------
|
||||
J.CIFS .DA CIFS.ChTyp
|
||||
.DA CIFS.ChMod
|
||||
.DA CIFS.FStat
|
||||
.DA CIFS.Stat
|
||||
.DA CIFS.MKDir
|
||||
.DA CIFS.MKNod
|
||||
.DA CIFS.MKFIFO
|
||||
.DA CIFS.Pipe
|
||||
.DA CIFS.OpenDir
|
||||
.DA CIFS.ReadDir
|
||||
.DA CIFS.CloseDir
|
||||
.DA CIFS.Open
|
||||
.DA CIFS.Close
|
||||
.DA CIFS.Read
|
||||
.DA CIFS.Write
|
||||
.DA CIFS.ChOwn
|
||||
L.LIBTCPIP .DA LIBTCPIP
|
||||
L.SMB.TRANSPORT .DA SMB.TRANSPORT
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
LIB.LOAD >LDYA L.LIBTCPIP
|
||||
>SYSCALL LoadLib
|
||||
bcs .9
|
||||
|
||||
sta hLIBTCPIP
|
||||
|
||||
>LDYAI 256
|
||||
>SYSCALL GetMem
|
||||
bcs .9
|
||||
|
||||
>STYA ZPReqPtr
|
||||
stx hReq
|
||||
|
||||
|
||||
* clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
LIB.UNLOAD lda hReq
|
||||
beq .1
|
||||
|
||||
>SYSCALL FreeMem
|
||||
|
||||
.1 lda hLIBTCPIP
|
||||
beq .8
|
||||
|
||||
>SYSCALL UnloadLib
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
* >PUSHB hSocket
|
||||
* >PUSHB 0
|
||||
* >LIBCALL Negotiate
|
||||
* A = hSMBContext
|
||||
*--------------------------------------
|
||||
CIFS.Negotiate lda (pStack)
|
||||
bne .1
|
||||
|
||||
dec
|
||||
sta (pStack)
|
||||
|
||||
>PUSHWI SMB.NegReq.end-SMB.TRANSPORT
|
||||
>PUSHW L.SMB.TRANSPORT
|
||||
ldy #1+4 hSocket
|
||||
lda (pStack),y
|
||||
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Send
|
||||
bcs .99
|
||||
>DEBUG
|
||||
lda #0
|
||||
sec
|
||||
rts
|
||||
|
||||
.1 dec
|
||||
sta (pStack)
|
||||
beq .98
|
||||
|
||||
ldy #1 hSocket
|
||||
lda (pStack),y
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Recv
|
||||
>DEBUG
|
||||
bcc .3
|
||||
|
||||
cmp #E.NODATA
|
||||
bne .99
|
||||
inc
|
||||
rts
|
||||
|
||||
.3 jsr GetRespData
|
||||
|
||||
ldy #S.NETBIOS+S.SMB.H.STATUS
|
||||
lda (ZPRespPtr),y
|
||||
bne .97
|
||||
|
||||
ldy #3
|
||||
lda (ZPRespPtr),y
|
||||
tay
|
||||
lda #0
|
||||
|
||||
>SYSCALL GetMem
|
||||
bcs .99
|
||||
|
||||
>STYA ZPCtxPtr
|
||||
|
||||
ldy #3
|
||||
lda (ZPRespPtr),y
|
||||
|
||||
tay
|
||||
|
||||
.4 dey
|
||||
lda (ZPRespPtr),y
|
||||
sta (ZPCtxPtr),y
|
||||
tya
|
||||
bne .4
|
||||
|
||||
phx
|
||||
|
||||
lda hResp
|
||||
>SYSCALL FreeMem
|
||||
|
||||
pla
|
||||
|
||||
clc
|
||||
>RET 2
|
||||
|
||||
.97 lda hResp
|
||||
>SYSCALL FreeMem
|
||||
|
||||
.98 lda #MLI.E.IO
|
||||
|
||||
.99 >POP 2
|
||||
rts
|
||||
*--------------------------------------
|
||||
* >PUSHB hSocket
|
||||
* >PUSHB hSMBContext
|
||||
* >PUSHW username
|
||||
* >PUSHW password
|
||||
* >PUSHB 0
|
||||
* >LIBCALL SessionSetup
|
||||
* (SMBContext updated with UID)
|
||||
*--------------------------------------
|
||||
CIFS.SessionSetup
|
||||
lda (pStack)
|
||||
beq .10
|
||||
jmp .5
|
||||
|
||||
.10 dec
|
||||
sta (pStack)
|
||||
|
||||
ldy #5 hSMBContext
|
||||
jsr GetSMBCtx
|
||||
|
||||
ldx #S.SMB.H.CMD.SESSION.SETUP.ANDX
|
||||
|
||||
ldy #0
|
||||
|
||||
.1 lda (ZPCtxPtr),y
|
||||
cpy #S.NETBIOS+S.SMB.H.CMD
|
||||
bne .11
|
||||
|
||||
txa
|
||||
|
||||
.11 sta (ZPReqPtr),y
|
||||
iny
|
||||
cpy #S.NETBIOS+S.SMB.H
|
||||
bne .1
|
||||
|
||||
ldx #0
|
||||
|
||||
.2 lda SMB.SessionSetup.H,x
|
||||
sta (ZPReqPtr),y
|
||||
iny
|
||||
inx
|
||||
cpx #SMB.SessionSetup.H.Len
|
||||
bne .2
|
||||
|
||||
phy save Y = LEN
|
||||
iny
|
||||
iny
|
||||
|
||||
ldx #0
|
||||
|
||||
.3 lda SMB.SessionSetup.Guest,x
|
||||
sta (ZPReqPtr),y
|
||||
iny
|
||||
inx
|
||||
cpx #SMB.SessionSetup.Guest.Len
|
||||
bne .3
|
||||
|
||||
ldx #0
|
||||
|
||||
.4 lda SMB.SessionSetup.T,x
|
||||
sta (ZPReqPtr),y
|
||||
iny
|
||||
inx
|
||||
cpx #SMB.SessionSetup.T.Len
|
||||
bne .4
|
||||
|
||||
pla
|
||||
|
||||
jsr GetReqLenYAtA
|
||||
|
||||
>PUSHYA
|
||||
>PUSHW ZPReqPtr
|
||||
ldy #6+4 hSocket
|
||||
lda (pStack),y
|
||||
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Send
|
||||
bcs .99
|
||||
|
||||
lda #0
|
||||
sec
|
||||
rts
|
||||
|
||||
.5 dec
|
||||
sta (pStack)
|
||||
beq .98
|
||||
|
||||
ldy #6 hSocket
|
||||
lda (pStack),y
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Recv
|
||||
bcc .6
|
||||
|
||||
cmp #E.NODATA
|
||||
bne .99
|
||||
inc
|
||||
rts
|
||||
|
||||
.6 jsr GetRespData
|
||||
|
||||
ldy #S.NETBIOS+S.SMB.H.STATUS
|
||||
lda (ZPRespPtr),y
|
||||
bne .97
|
||||
|
||||
ldy #5 hSMBContext
|
||||
jsr GetSMBCtx
|
||||
|
||||
ldy #S.NETBIOS+S.SMB.H.UID
|
||||
lda (ZPRespPtr),y
|
||||
sta (ZPCtxPtr),y
|
||||
iny
|
||||
lda (ZPRespPtr),y
|
||||
sta (ZPCtxPtr),y
|
||||
|
||||
.8 lda hResp
|
||||
>SYSCALL FreeMem
|
||||
|
||||
clc
|
||||
>RET 7
|
||||
|
||||
.97 lda hResp
|
||||
>SYSCALL FreeMem
|
||||
|
||||
.98 lda #MLI.E.IO
|
||||
|
||||
.99 >POP 7
|
||||
rts
|
||||
*--------------------------------------
|
||||
* >PUSHB hSocket
|
||||
* >PUSHB hSMBContext
|
||||
* >PUSHW path
|
||||
* >PUSHB 0
|
||||
* >LIBCALL TreeConnect
|
||||
* (SMBContext updated with TID)
|
||||
*--------------------------------------
|
||||
CIFS.TreeConnect
|
||||
lda (pStack)
|
||||
beq .10
|
||||
jmp .5
|
||||
|
||||
.10 dec
|
||||
sta (pStack)
|
||||
|
||||
ldy #3 hSMBContext
|
||||
jsr GetSMBCtx
|
||||
|
||||
ldx #S.SMB.H.CMD.TREE.CONNECT.ANDX
|
||||
|
||||
ldy #0
|
||||
|
||||
.1 lda (ZPCtxPtr),y
|
||||
cpy #S.NETBIOS+S.SMB.H.CMD
|
||||
bne .11
|
||||
|
||||
txa
|
||||
|
||||
.11 sta (ZPReqPtr),y
|
||||
iny
|
||||
cpy #S.NETBIOS+S.SMB.H
|
||||
bne .1
|
||||
|
||||
ldx #0
|
||||
|
||||
.2 lda SMB.TreeConnect.H,x
|
||||
sta (ZPReqPtr),y
|
||||
iny
|
||||
inx
|
||||
cpx #SMB.TreeConnect.H.Len
|
||||
bne .2
|
||||
|
||||
phy save Y = LEN
|
||||
iny
|
||||
iny
|
||||
|
||||
lda #0
|
||||
sta (ZPReqPtr),y PASSWORD = "\0"
|
||||
iny
|
||||
|
||||
ldy #1
|
||||
lda (pStack),y
|
||||
sta ZPPtr1
|
||||
iny
|
||||
lda (pStack),y
|
||||
sta ZPPtr1+1
|
||||
|
||||
.3 lda (ZPPtr1)
|
||||
inc ZPPtr1
|
||||
bne .31
|
||||
|
||||
inc ZPPtr1+1
|
||||
|
||||
.31 sta (ZPReqPtr),y
|
||||
iny
|
||||
tax
|
||||
bne .3
|
||||
|
||||
ldx #0
|
||||
|
||||
.4 lda SMB.TreeConnect.T,x
|
||||
sta (ZPReqPtr),y
|
||||
iny
|
||||
inx
|
||||
cpx #SMB.TreeConnect.T.Len
|
||||
bne .4
|
||||
|
||||
pla
|
||||
|
||||
jsr GetReqLenYAtA
|
||||
|
||||
>PUSHYA
|
||||
>PUSHW ZPReqPtr
|
||||
ldy #4+4 hSocket
|
||||
lda (pStack),y
|
||||
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Send
|
||||
bcs .99
|
||||
|
||||
lda #0
|
||||
sec
|
||||
rts
|
||||
|
||||
.5 dec
|
||||
sta (pStack)
|
||||
beq .98
|
||||
|
||||
ldy #4 hSocket
|
||||
lda (pStack),y
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Recv
|
||||
bcc .6
|
||||
|
||||
cmp #E.NODATA
|
||||
bne .99
|
||||
inc
|
||||
rts
|
||||
|
||||
.6 jsr GetRespData
|
||||
|
||||
ldy #S.NETBIOS+S.SMB.H.STATUS
|
||||
lda (ZPRespPtr),y
|
||||
bne .97
|
||||
|
||||
ldy #3 hSMBContext
|
||||
jsr GetSMBCtx
|
||||
|
||||
ldy #S.NETBIOS+S.SMB.H.TID
|
||||
lda (ZPRespPtr),y
|
||||
sta (ZPCtxPtr),y
|
||||
iny
|
||||
lda (ZPRespPtr),y
|
||||
sta (ZPCtxPtr),y
|
||||
|
||||
.8 lda hResp
|
||||
>SYSCALL FreeMem
|
||||
|
||||
clc
|
||||
>RET 5
|
||||
|
||||
.97 lda hResp
|
||||
>SYSCALL FreeMem
|
||||
|
||||
.98 lda #MLI.E.IO
|
||||
|
||||
.99 >POP 5
|
||||
rts
|
||||
*--------------------------------------
|
||||
CIFS.Mount
|
||||
*--------------------------------------
|
||||
CIFS.UMount clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.CALLBACK jmp (J.CIFS,x)
|
||||
*--------------------------------------
|
||||
CIFS.ChTyp
|
||||
*--------------------------------------
|
||||
CIFS.ChMod
|
||||
*--------------------------------------
|
||||
CIFS.FStat
|
||||
*--------------------------------------
|
||||
CIFS.Stat >PULLW ZPPtr2 S.STAT
|
||||
>PULLW ZPPtr1 PATH
|
||||
|
||||
|
||||
.99 lda #MLI.E.INVPATH
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CIFS.MKDir
|
||||
*--------------------------------------
|
||||
CIFS.MKNod
|
||||
*--------------------------------------
|
||||
CIFS.MKFIFO
|
||||
*--------------------------------------
|
||||
CIFS.Pipe lda #MLI.E.BADCALL
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CIFS.OpenDir lda #MLI.E.BADCALL
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CIFS.ReadDir lda #MLI.E.INVPATH
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CIFS.CloseDir
|
||||
*--------------------------------------
|
||||
CIFS.Open
|
||||
*--------------------------------------
|
||||
CIFS.Close
|
||||
*--------------------------------------
|
||||
CIFS.Read
|
||||
*--------------------------------------
|
||||
CIFS.Write
|
||||
*--------------------------------------
|
||||
CIFS.ChOwn
|
||||
lda #MLI.E.BADCALL
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
GetSMBCtx lda (pStack),y
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPCtxPtr
|
||||
rts
|
||||
*--------------------------------------
|
||||
* Y = LEN from S.NETBIOS.TYPE
|
||||
* A = Ptr to LEN Word
|
||||
*--------------------------------------
|
||||
GetReqLenYAtA sty ZPReqLen
|
||||
stz ZPReqLen+1
|
||||
|
||||
pha
|
||||
|
||||
tya
|
||||
dec
|
||||
dec
|
||||
ply
|
||||
|
||||
sta (ZPReqPtr),y
|
||||
iny
|
||||
lda #0
|
||||
sta (ZPReqPtr),y
|
||||
|
||||
lda ZPReqLen
|
||||
sec
|
||||
sbc #S.NETBIOS
|
||||
ldy #S.NETBIOS.LEN+2
|
||||
sta (ZPReqPtr),y
|
||||
lda ZPReqLen+1
|
||||
sec
|
||||
sbc /S.NETBIOS
|
||||
dey
|
||||
sta (ZPReqPtr),y
|
||||
|
||||
lda ZPReqLen
|
||||
clc
|
||||
adc #S.TCP
|
||||
tay
|
||||
|
||||
lda ZPReqLen+1
|
||||
adc /S.TCP
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
GetRespData sta hResp
|
||||
>SYSCALL GetMemPtr
|
||||
|
||||
pha
|
||||
tya
|
||||
* clc
|
||||
adc #S.TCP
|
||||
sta ZPRespPtr
|
||||
pla
|
||||
adc /S.TCP
|
||||
sta ZPRespPtr+1
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
*--------------------------------------
|
||||
LIBTCPIP .AZ "libtcpip"
|
||||
hLIBTCPIP .BS 1
|
||||
*--------------------------------------
|
||||
SMB.TRANSPORT .DA #0 DIRECT TCP TRANSPORT
|
||||
.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
|
||||
.DA 0 CI PASS LEN
|
||||
.DA 0 CS PASS LEN
|
||||
.HS 00000000
|
||||
.HS 00000000 CAPABILITIES
|
||||
SMB.SessionSetup.H.Len .EQ *-SMB.SessionSetup.H
|
||||
* .BS 2 ByteCount
|
||||
SMB.SessionSetup.Guest
|
||||
.AZ "" Password
|
||||
.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
|
||||
SMB.TreeConnect.T.Len .EQ *-SMB.TreeConnect.T
|
||||
*--------------------------------------
|
||||
SMB.TRANS2.H .DA #15 WORD COUNT
|
||||
.BS 2 TotalParamCount
|
||||
.DA 0 TotalDataCount
|
||||
.DA 10 MaxParameterCount
|
||||
.DA 460 MaxDataCount
|
||||
.DA #1 MaxSetupCount
|
||||
.HS 00 Reserved1
|
||||
.DA 0 Flags
|
||||
.HS 00000000 Timeout
|
||||
.HS 0000 Reserved2
|
||||
.BS 2 ParameterCount
|
||||
.DA 66 ParameterOffset
|
||||
.HS 0000 DataCount
|
||||
.HS 0000 DataOffset
|
||||
.DA #1 SetupCount
|
||||
.HS 00 Reserved3
|
||||
*--------------------------------------
|
||||
SMB.QueryPathInfo
|
||||
.DA 5 TRANS2_QUERY_PATH_INFORMATION
|
||||
|
||||
.DA SMB.QueryPathInfo.PrmCnt+1 INCLUDING Padding byte below
|
||||
.HS 00 Padding
|
||||
|
||||
SMB.QueryPathInfo.Prm
|
||||
.DA $0001 InformationLevel
|
||||
.HS 00000000 SearchStorageType
|
||||
SMB.QueryPathInfo.PrmCnt .EQ *-SMB.QueryPathInfo.Prm
|
||||
.AZ "server.met" FileName
|
||||
SMB.QueryPathInfo.end
|
||||
|
||||
*--------------------------------------
|
||||
SMB.FindFirst .DA 1 TRANS2_FIND_FIRST2
|
||||
|
||||
.DA SMB.FindFirst.PrmCnt+1 INCLUDING Padding byte below
|
||||
.HS 00 Padding
|
||||
|
||||
SMB.FindFirst.Prm
|
||||
.DA $0016 SearchAttributes
|
||||
.DA 1024 SearchCount
|
||||
.DA 3 Flags
|
||||
.DA $0001 InformationLevel
|
||||
.HS 00000000 SearchStorageType
|
||||
SMB.FindFirst.PrmCnt .EQ *-SMB.FindFirst.Prm
|
||||
.AZ "\*.*" FileName
|
||||
SMB.FindFirst.end
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/lib/libcifs.s
|
||||
ASM
|
|
@ -5,9 +5,9 @@ NEW
|
|||
.OR $2000
|
||||
.TF lib/libpak
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/LIBPAK.I
|
||||
.INB inc/macros.i
|
||||
.INB inc/a2osx.i
|
||||
.INB inc/libpak.i
|
||||
*--------------------------------------
|
||||
STATS .EQ 0
|
||||
*--------------------------------------
|
||||
|
@ -39,7 +39,6 @@ CS.START cld
|
|||
L.MSG.Stats .DA MSG.Stats
|
||||
L.MSG.TopBytes .DA MSG.TopBytes
|
||||
.FIN
|
||||
L.MSG.BL .DA MSG.BL
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
LIB.LOAD
|
||||
|
@ -674,7 +673,6 @@ MSG.TopBytes .AS "Top : (%2d) %h.%h.%h.%h.%h.%h.%h.%h %h.%h.%h.%h.%h.%h.%h.%h
|
|||
TOP.Bits .DA #PAK.B.TOP8,#PAK.B.TOP16,#PAK.B.TOP24,#PAK.B.TOP32
|
||||
TOP.BitCnt .DA #PAK.B.TOP8.W,#PAK.B.TOP16.W,#PAK.B.TOP24.W,#PAK.B.TOP32.W
|
||||
TOP.Stat .DA #S.PAKSTAT.TOP8,#S.PAKSTAT.TOP16,#S.PAKSTAT.TOP24,#S.PAKSTAT.TOP32
|
||||
MSG.BL .AZ "o=%D,l=%d,d=%D:"
|
||||
*--------------------------------------
|
||||
Pak.SrcPtr .BS 2
|
||||
|
||||
|
@ -708,5 +706,5 @@ Pak.Shnk .BS S.PAKSHNK
|
|||
Pak.Stat .BS S.PAKSTAT
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/LIB/LIBPAK.S
|
||||
SAVE usr/src/lib/libpak.s
|
||||
ASM
|
||||
|
|
|
@ -221,7 +221,7 @@ SKT.connect.SEQPKT
|
|||
bcs .99
|
||||
|
||||
lda #S.SOCKET.TCP.S.SYNSENT
|
||||
jsr SKT.StoreTCB.S
|
||||
jmp SKT.StoreTCB.S
|
||||
|
||||
.99 lda #ERR.SKT.NOCONN
|
||||
sec
|
||||
|
@ -1045,14 +1045,14 @@ SKT.CheckStream lda #S.SOCKET.T.STREAM
|
|||
SKT.CheckTCP ldy #S.SOCKET.O
|
||||
lda (ZPPtrSKT),y
|
||||
and #S.SOCKET.O.ACCEPTCONN
|
||||
bne .99
|
||||
bne SKT.BAD
|
||||
|
||||
ldy #S.SOCKET.TCP.S
|
||||
lda (ZPPtrSKT),y
|
||||
cmp #S.SOCKET.TCP.S.ESTBLSH
|
||||
beq .8
|
||||
|
||||
bcc .90
|
||||
bcc .9
|
||||
|
||||
lda #MLI.E.IO
|
||||
* sec
|
||||
|
@ -1062,11 +1062,10 @@ SKT.CheckTCP ldy #S.SOCKET.O
|
|||
clc
|
||||
rts
|
||||
|
||||
.90 lda #ERR.SKT.NOCONN
|
||||
.9 lda #ERR.SKT.NOCONN
|
||||
sec
|
||||
rts
|
||||
|
||||
.99
|
||||
SKT.BAD lda #ERR.SKT.BAD
|
||||
sec
|
||||
rts
|
||||
|
@ -1308,22 +1307,26 @@ SKT.NewTCB ldx #S.SOCKET.TCP.INSEQNUM
|
|||
.9 rts
|
||||
*--------------------------------------
|
||||
SKT.GetTCB ldy #S.SOCKET.TCP.INSEQNUM
|
||||
|
||||
.1 lda (ZPPtrSKT),y
|
||||
sta SKT.Cache,y
|
||||
iny
|
||||
cpy #S.SOCKET.TCP
|
||||
bne .1
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
SKT.StoreTCB.S ldy #S.SOCKET.TCP.S
|
||||
sta (ZPPtrSKT),y
|
||||
|
||||
SKT.StoreTCB ldy #S.SOCKET.TCP.INSEQNUM
|
||||
|
||||
.1 lda SKT.Cache,y
|
||||
sta (ZPPtrSKT),y
|
||||
iny
|
||||
cpy #S.SOCKET.TCP
|
||||
bne .1
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
TCP.IN jsr FRM.GetTargetSKT.TCPUDP
|
||||
jsr SKT.FindMatchingLocRem
|
||||
|
@ -20,7 +20,7 @@ TCP.IN jsr FRM.GetTargetSKT.TCPUDP
|
|||
TCP.IN.RST lda #S.SOCKET.TCP.S.CLWAIT
|
||||
ldy #S.SOCKET.TCP.S
|
||||
sta (ZPPtrSKT),y
|
||||
|
||||
|
||||
* lda SKT.TABLE,x
|
||||
* jsr SKT.shutdown
|
||||
*--------------------------------------
|
||||
|
@ -39,7 +39,7 @@ TCP.IN.JMP.LISTEN
|
|||
bcs TCP.IN.JMP.DISCARD
|
||||
|
||||
jsr SKT.AddToQueueA Queued successfully ?
|
||||
bcs TCP.IN.JMP.DISCARD no, discard frame and new socket
|
||||
bcs TCP.IN.JMP.DISCARD no, discard frame and new socket
|
||||
|
||||
jsr ARP.AddFromFrameInPtr
|
||||
lda ZPTmpPtr1
|
||||
|
@ -64,11 +64,11 @@ TCP.IN.JMP.LISTEN
|
|||
|
||||
lda #S.SOCKET.TCP.S.SYNRCVD
|
||||
jmp SKT.StoreTCB.S
|
||||
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
TCP.IN.JMP.SYNSENT
|
||||
ldy #S.TCP.OPTIONS SYN Send, only accept SYN.ACK packet, then Send ACK
|
||||
ldy #S.TCP.OPTIONS SYN Send, only accept SYN.ACK packet, then Send ACK
|
||||
lda (ZPFrameInPtr),y
|
||||
and #S.TCP.OPTIONS.SYN+S.TCP.OPTIONS.ACK
|
||||
cmp #S.TCP.OPTIONS.SYN+S.TCP.OPTIONS.ACK
|
||||
|
@ -82,7 +82,7 @@ TCP.IN.JMP.SYNSENT
|
|||
|
||||
.1 lda SKT.Cache+S.SOCKET.TCP.OUTNEXTSEQ,x
|
||||
adc #0
|
||||
sta SKT.Cache+S.SOCKET.TCP.OUTNEXTSEQ,x
|
||||
sta SKT.Cache+S.SOCKET.TCP.OUTNEXTSEQ,x
|
||||
eor (ZPFrameInPtr),y
|
||||
bne .9
|
||||
dey
|
||||
|
@ -108,7 +108,7 @@ TCP.IN.JMP.SYNRCVD
|
|||
cmp #S.TCP.OPTIONS.ACK
|
||||
bne .8
|
||||
jsr SKT.GetTCB
|
||||
|
||||
|
||||
ldx #3
|
||||
ldy #S.TCP.ACKNUM+3
|
||||
|
||||
|
@ -125,7 +125,7 @@ TCP.IN.JMP.SYNRCVD
|
|||
bpl .1
|
||||
lda #S.SOCKET.TCP.S.ESTBLSH
|
||||
jmp SKT.StoreTCB.S
|
||||
|
||||
|
||||
.8 clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
|
@ -136,7 +136,7 @@ TCP.IN.JMP.ESTBLSH
|
|||
lda (ZPFrameInPtr),y
|
||||
and #S.TCP.OPTIONS.ACK Remote side ACKed data ?
|
||||
beq .4
|
||||
* Ack sent data
|
||||
* Ack sent data
|
||||
ldy #S.TCP.ACKNUM+3 Get new ACK number from FrameIn...
|
||||
ldx #3 Substract old ACK from socket
|
||||
|
||||
|
@ -197,7 +197,7 @@ TCP.IN.JMP.ESTBLSH
|
|||
.5 lda (ZPFrameInPtr),y
|
||||
eor SKT.Cache+S.SOCKET.TCP.INSEQNUM,x
|
||||
bne .90 Missed a frame.....
|
||||
|
||||
|
||||
dey
|
||||
dex
|
||||
bpl .5
|
||||
|
@ -209,9 +209,9 @@ TCP.IN.JMP.ESTBLSH
|
|||
|
||||
jsr SKT.AddDataToSktIn yes, queue data if there is room for....
|
||||
bcc .6
|
||||
|
||||
|
||||
rts
|
||||
|
||||
|
||||
.52 lda hFrameIn
|
||||
jsr SKT.AddToQueueA
|
||||
bcs .99
|
||||
|
@ -222,7 +222,7 @@ TCP.IN.JMP.ESTBLSH
|
|||
ldy ZPDataInLen+1
|
||||
ldx #S.SOCKET.TCP.INSEQNUM
|
||||
jsr TCP.AddAYToSktCacheAtX
|
||||
|
||||
|
||||
jsr SKT.StoreTCB update socket
|
||||
jsr TCP.SetSocketTCPO.ACK ...and ack data
|
||||
|
||||
|
@ -235,7 +235,7 @@ TCP.IN.JMP.ESTBLSH
|
|||
jsr SKT.StoreTCB update socket
|
||||
|
||||
lda #S.TCP.OPTIONS.FIN+S.TCP.OPTIONS.ACK
|
||||
jsr TCP.OUT.SendOptA FIN received, Send FIN.ACK
|
||||
jsr TCP.OUT.SendOptA FIN received, Send FIN.ACK
|
||||
|
||||
lda #S.SOCKET.TCP.S.LASTACK
|
||||
jmp SKT.StoreTCB.S
|
||||
|
@ -243,16 +243,16 @@ TCP.IN.JMP.ESTBLSH
|
|||
.8 ldy #S.SOCKET.TCP.O
|
||||
lda (ZPPtrSKT),y
|
||||
bne .91
|
||||
|
||||
|
||||
.80 clc
|
||||
.99 rts
|
||||
|
||||
.90 lda #S.TCP.OPTIONS.ACK Send 3 ACK for last SEQ number
|
||||
jsr TCP.OUT.SendOptA
|
||||
|
||||
|
||||
lda #S.TCP.OPTIONS.ACK
|
||||
jsr TCP.OUT.SendOptA
|
||||
|
||||
|
||||
lda #S.TCP.OPTIONS.ACK
|
||||
.91 jmp TCP.OUT.SendOptA
|
||||
*--------------------------------------
|
||||
|
@ -279,7 +279,7 @@ TCP.IN.JMP.FINWT1
|
|||
bne .1
|
||||
|
||||
lda #S.TCP.OPTIONS.FIN+S.TCP.OPTIONS.ACK
|
||||
jsr TCP.OUT.SendOptA Send FIN.ACK
|
||||
jsr TCP.OUT.SendOptA Send FIN.ACK
|
||||
bcs TCP.IN.JMP.TIMEWT.RTS
|
||||
|
||||
lda #S.SOCKET.TCP.S.FINWT2
|
||||
|
@ -288,9 +288,9 @@ TCP.IN.JMP.FINWT1
|
|||
.1 jsr TCP.IN.ACKTheFIN FIN/ACK
|
||||
|
||||
lda #S.TCP.OPTIONS.FIN+S.TCP.OPTIONS.ACK
|
||||
jsr TCP.OUT.SendOptA FIN received, Send 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
|
||||
*--------------------------------------
|
||||
|
@ -306,9 +306,9 @@ TCP.IN.JMP.FINWT2
|
|||
|
||||
lda #S.TCP.OPTIONS.ACK
|
||||
|
||||
jsr TCP.OUT.SendOptA FIN received, Send ACK
|
||||
jsr TCP.OUT.SendOptA FIN received, Send ACK
|
||||
bcs TCP.IN.JMP.TIMEWT.RTS
|
||||
|
||||
|
||||
lda #S.SOCKET.TCP.S.TIMEWT
|
||||
jmp SKT.StoreTCB.S
|
||||
*--------------------------------------
|
||||
|
@ -346,7 +346,7 @@ TCP.IN.ACKTheSYN
|
|||
*--------------------------------------
|
||||
TCP.IN.ACKTheFIN
|
||||
ldx #3
|
||||
|
||||
|
||||
.1 inc SKT.Cache+S.SOCKET.TCP.INSEQNUM,x
|
||||
bne .8
|
||||
dex
|
||||
|
@ -448,13 +448,13 @@ TCP.SENDCLOSE ldx #0
|
|||
*--------------------------------------
|
||||
.4 cpx #S.SOCKET.T.SEQPKT
|
||||
bne .6
|
||||
|
||||
|
||||
.5 jsr SKT.GetFromQueue
|
||||
bcs .7
|
||||
|
||||
>SYSCALL2 FreeMem
|
||||
bra .5
|
||||
|
||||
bra .5
|
||||
|
||||
.6 ldy #S.SOCKET.SQ.hInMem
|
||||
jsr TCP.SENDCLOSE.PIPE
|
||||
|
||||
|
@ -472,7 +472,9 @@ TCP.SENDCLOSE ldx #0
|
|||
cpx #K.SKTTABLE.SIZE
|
||||
bne .1
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
TCP.SENDCLOSE.PIPE
|
||||
lda (ZPPtrSKT),y
|
||||
beq .8
|
||||
|
@ -487,11 +489,11 @@ TCP.SENDCLOSE.PIPE
|
|||
TCP.OUT lda SKT.Cache+S.SOCKET.TCP.OUTTOSEND+1
|
||||
ldy SKT.Cache+S.SOCKET.TCP.OUTTOSEND
|
||||
bne .1
|
||||
|
||||
|
||||
tax
|
||||
bne .1
|
||||
* Y,A=0 : no data to send
|
||||
|
||||
* Y,A=0 : no data to send
|
||||
|
||||
ldy #S.SOCKET.TCP.O
|
||||
lda (ZPPtrSKT),y
|
||||
bne TCP.OUT.SendOptA a least an option...
|
||||
|
@ -553,7 +555,7 @@ TCP.OUT.Send ldy #S.TCP.OPTIONS
|
|||
sta (ZPFrameOutPtr),y
|
||||
bit #S.TCP.OPTIONS.ACK
|
||||
beq .2
|
||||
|
||||
|
||||
ldx #3
|
||||
ldy #S.TCP.ACKNUM+3
|
||||
|
||||
|
|
|
@ -227,17 +227,18 @@ INCOMING sta hFrameIn
|
|||
iny
|
||||
lda (ZPFrameInPtr),y
|
||||
cmp #S.ETH.EII.TYPE.ARP
|
||||
beq .2
|
||||
bne .2
|
||||
|
||||
jmp ARP.IN
|
||||
|
||||
cmp #S.ETH.EII.TYPE.IP
|
||||
beq .3
|
||||
.2 cmp #S.ETH.EII.TYPE.IP
|
||||
bne .9
|
||||
|
||||
.9 sec
|
||||
jmp IP.IN
|
||||
|
||||
.9 lda #MLI.E.EOF
|
||||
sec
|
||||
rts
|
||||
|
||||
.2 jmp ARP.IN
|
||||
.3 jmp IP.IN
|
||||
*--------------------------------------
|
||||
* A = S.EVT.F
|
||||
* Expire = every sec
|
||||
|
@ -248,6 +249,7 @@ PULSE and #S.EVT.F.T1SEC
|
|||
|
||||
jsr ARP.EXPIRE every sec
|
||||
jsr DNS.EXPIRE
|
||||
|
||||
.1 jsr FRM.RETRY every 100ms
|
||||
jsr DNS.POLL
|
||||
jmp TCP.SENDCLOSE
|
||||
|
|
|
@ -0,0 +1,49 @@
|
|||
NEW
|
||||
AUTO 3,1
|
||||
.LIST ON
|
||||
.OP 65C02
|
||||
.OR $2000
|
||||
.TF lib/string.o
|
||||
*--------------------------------------
|
||||
.INB inc/macros.i
|
||||
.INB inc/a2osx.i
|
||||
*--------------------------------------
|
||||
.DA #0 KERNEL
|
||||
*--------------------------------------
|
||||
>PSTR "strlen"
|
||||
.DA CODE.strlen
|
||||
>PSTR "strdup"
|
||||
.DA CODE.strdup
|
||||
>PSTR "strupr"
|
||||
.DA CODE.strupr
|
||||
>PSTR "strlwr"
|
||||
.DA CODE.strlwr
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
CODE.strlen .DA #CODE.strlen.L
|
||||
>SYSCALL strlen
|
||||
CODE.strlen.L .EQ *-CODE.strlen
|
||||
rts
|
||||
*--------------------------------------
|
||||
*--------------------------------------
|
||||
*--------------------------------------
|
||||
CODE.strdup .DA #CODE.strdup.L
|
||||
>SYSCALL strdup
|
||||
CODE.strdup.L .EQ *-CODE.strdup
|
||||
rts
|
||||
*--------------------------------------
|
||||
CODE.strupr .DA #CODE.strupr.L
|
||||
>SYSCALL strupr
|
||||
CODE.strupr.L .EQ *-CODE.strupr
|
||||
rts
|
||||
*--------------------------------------
|
||||
CODE.strlwr .DA #CODE.strlwr.L
|
||||
>SYSCALL strlwr
|
||||
CODE.strlwr.L .EQ *-CODE.strlwr
|
||||
rts
|
||||
*--------------------------------------
|
||||
*--------------------------------------
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/lib/string.o.s
|
||||
ASM
|
|
@ -148,7 +148,7 @@ XDOS.DevCall php do not allow interrupts.
|
|||
lsr
|
||||
tax
|
||||
jsr XDOS.DevCall.Jmp
|
||||
|
||||
bit CLRC8ROM RELEASE $C800-$CFFF ROM space
|
||||
bcs .9
|
||||
|
||||
plp
|
||||
|
|
|
@ -23,6 +23,8 @@ XRW.START cld $D8 to flag language card bank 1 (main)
|
|||
|
||||
.10 sta XRW.SeekTime
|
||||
|
||||
stz XRW.montimel
|
||||
|
||||
pla
|
||||
|
||||
and #$7F mask off high bit.
|
||||
|
@ -57,7 +59,7 @@ L59BD lda bloknml
|
|||
|
||||
ldy #$05
|
||||
|
||||
.1 asl
|
||||
.1 asl
|
||||
rol XRW.ReqTrack
|
||||
dey
|
||||
bne .1
|
||||
|
@ -181,73 +183,6 @@ XRW.E.EXIT ldx A2L
|
|||
bit IO.D2.DrvOff,x turn off
|
||||
rts
|
||||
*--------------------------------------
|
||||
XRW.SectorIO lda #2
|
||||
sta XRW.RecalibrateCnt
|
||||
sta XRW.BadSeek
|
||||
|
||||
bit XRW.bWrite
|
||||
bpl .1
|
||||
|
||||
jsr XRW.PreNibble must prenibblize for write
|
||||
|
||||
.1 stz XRW.RetryCnt
|
||||
|
||||
.2 jsr XRW.ReadAddr read next address field.
|
||||
bcc .4 if CC, A = current track
|
||||
|
||||
.3 inc XRW.RetryCnt one less chance.
|
||||
bpl .2 branch if < 128
|
||||
|
||||
dec XRW.RecalibrateCnt
|
||||
sec
|
||||
beq .9
|
||||
|
||||
ldx XRW.UnitIndex
|
||||
lda #41
|
||||
sta XRW.D2Trk-1,x
|
||||
lda #0
|
||||
sta XRW.D2VolNum-1,x
|
||||
|
||||
jsr XRW.Seek Seek from Track 41 -> 0
|
||||
bra .1
|
||||
|
||||
.4 cmp XRW.ReqTrack
|
||||
beq .6
|
||||
|
||||
lda XRW.BadSeek
|
||||
beq .40 2 bad seeks, already
|
||||
|
||||
dec XRW.BadSeek
|
||||
bne .5
|
||||
|
||||
.40 lda XRW.SeekTime
|
||||
bmi .5 seektime = 140
|
||||
|
||||
clc
|
||||
adc #IO.D2.SeekTimeI
|
||||
sta XRW.SeekTime
|
||||
|
||||
ldx XRW.UnitIndex
|
||||
sta XRW.D2SeekTime-1,x
|
||||
|
||||
.5 lda XRW.ReqTrack
|
||||
jsr XRW.Seek
|
||||
bra .3
|
||||
|
||||
.6 lda XRW.AddrField.S is this the right sector ?
|
||||
cmp XRW.ReqSector
|
||||
bne .3 no, try another sector.
|
||||
|
||||
bit XRW.bWrite
|
||||
bpl .7 branch if write
|
||||
|
||||
jmp XRW.Write
|
||||
|
||||
.7 jsr XRW.Read
|
||||
bcs .3 if bad read
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
* preniblize subroutine (16 sector format)
|
||||
*
|
||||
* converts 256 bytes of user data in (buf) into 6 bit nibls in nbuf2.
|
||||
|
@ -369,6 +304,75 @@ L596F ldy #$FF index to last byte of data to write.
|
|||
stx wrefd5+1
|
||||
rts
|
||||
*--------------------------------------
|
||||
XRW.SectorIO lda #2
|
||||
sta XRW.RecalibrateCnt
|
||||
sta XRW.BadSeek
|
||||
|
||||
bit XRW.bWrite
|
||||
bpl .1
|
||||
|
||||
jsr XRW.PreNibble must prenibblize for write
|
||||
|
||||
.1 stz XRW.RetryCnt
|
||||
|
||||
.2 jsr XRW.ReadAddr read next address field.
|
||||
bcc .4 if CC, A = current track
|
||||
|
||||
.3 inc XRW.RetryCnt one less chance.
|
||||
bpl .2 branch if < 128
|
||||
|
||||
dec XRW.RecalibrateCnt
|
||||
sec
|
||||
beq .9
|
||||
|
||||
ldx XRW.UnitIndex
|
||||
|
||||
lda #41
|
||||
sta XRW.D2Trk-1,x
|
||||
|
||||
lda #0
|
||||
sta XRW.D2VolNum-1,x reset volnum for seeking 4 Qtracks
|
||||
|
||||
jsr XRW.Seek Seek from Track 41 -> 0
|
||||
bra .1
|
||||
|
||||
.4 cmp XRW.ReqTrack
|
||||
beq .6
|
||||
|
||||
lda XRW.BadSeek
|
||||
beq .40 2 bad seeks, already
|
||||
|
||||
dec XRW.BadSeek
|
||||
bne .5
|
||||
|
||||
.40 lda XRW.SeekTime
|
||||
bmi .5 seektime already > 128
|
||||
|
||||
clc
|
||||
adc #IO.D2.SeekTimeI
|
||||
sta XRW.SeekTime
|
||||
|
||||
ldx XRW.UnitIndex
|
||||
sta XRW.D2SeekTime-1,x
|
||||
|
||||
.5 lda XRW.ReqTrack
|
||||
jsr XRW.Seek
|
||||
bra .3
|
||||
|
||||
.6 lda XRW.AddrField.S is this the right sector ?
|
||||
cmp XRW.ReqSector
|
||||
bne .3 no, try another sector.
|
||||
|
||||
bit XRW.bWrite
|
||||
* bpl .7 branch if write
|
||||
bmi XRW.Write
|
||||
* jmp XRW.Write
|
||||
|
||||
.7 jsr XRW.Read
|
||||
bcs .3 if bad read
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
* write subroutine (16 sector format)
|
||||
*
|
||||
* writes data from nbuf1 and buf. first nbuf2, high to low then direct
|
||||
|
@ -382,13 +386,10 @@ L596F ldy #$FF index to last byte of data to write.
|
|||
.LIST ON
|
||||
XRW.Write lda IO.D2.ReadProt,x PREWRITE MODE
|
||||
.LIST OFF
|
||||
lda IO.D2.ReadMode,x
|
||||
* sec
|
||||
* bpl .1
|
||||
|
||||
* jmp XRW.ReadMode
|
||||
* lda IO.D2.ReadMode,x
|
||||
|
||||
.1 lda nbuf2
|
||||
lda nbuf2
|
||||
sta pcl
|
||||
|
||||
lda #$FF Self Sync Byte
|
||||
|
@ -520,10 +521,12 @@ wrefd5 ldx #$60 (2) restore slot. warning: modified by prenib
|
|||
|
||||
clc (2)
|
||||
|
||||
lda #$FF (2)
|
||||
nop (2)
|
||||
jsr XRW.Write.RTS (6+6)
|
||||
|
||||
jsr wnibl (15,6) write turn off byte.
|
||||
* lda #$FF (2)
|
||||
* nop (2)
|
||||
|
||||
* jsr wnibl (15,6) write turn off byte.
|
||||
|
||||
XRW.ReadMode lda IO.D2.ReadMode,x out of write mode
|
||||
lda IO.D2.WShift,x to read mode.
|
||||
|
@ -542,41 +545,14 @@ wnibl sta IO.D2.WLoad,x (5) nibl write
|
|||
XRW.Write.RTS rts (6)
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
* delays a specified number of 100 usec intervals for motor timing.
|
||||
* on entry: acc holds number of 100 usec intervals to delay.
|
||||
* on exit: acc = 0, x = 0, y = unchanged, carry set.
|
||||
* montimel, montimeh are incremented once per 100 usec interval
|
||||
* for motor on timing.
|
||||
*--------------------------------------
|
||||
XRW.WaitSeekTime
|
||||
* lda XRW.SeekCnt
|
||||
* bne .1
|
||||
* inc XRW.SeekCnt
|
||||
|
||||
lda #IO.D2.SeekTime0
|
||||
* bra XRW.Wait100usecA
|
||||
*.1 lda XRW.SeekTime
|
||||
.HS 2C BIT ABS
|
||||
XRW.Wait25600usec
|
||||
lda #0
|
||||
XRW.Wait100usecA
|
||||
phx
|
||||
|
||||
.1 ldx #17 (2)
|
||||
XRW.Reset ldx A2L
|
||||
|
||||
.2 dex (2)
|
||||
bne .2 (3)
|
||||
lda IO.D2.Ph0Off,x
|
||||
lda IO.D2.Ph1Off,x
|
||||
lda IO.D2.Ph2Off,x
|
||||
lda IO.D2.Ph3Off,x
|
||||
|
||||
inc XRW.montimel (6)
|
||||
bne .3 (3)
|
||||
|
||||
inc XRW.montimeh (6)
|
||||
|
||||
.3 dec (2)
|
||||
bne .1 (3)
|
||||
|
||||
plx
|
||||
rts
|
||||
jmp XRW.ReadMode
|
||||
*--------------------------------------
|
||||
* read subroutine (16-sector format)
|
||||
*
|
||||
|
@ -746,16 +722,15 @@ XRW.Seek ldx XRW.UnitIndex
|
|||
pla
|
||||
sta XRW.D2Trk-1,x will be current track at the end
|
||||
|
||||
stz XRW.SeekCnt
|
||||
|
||||
ldx A2L
|
||||
ldy A2L
|
||||
|
||||
.1 lda XRW.CurrentQTrack
|
||||
cmp XRW.TargetQTrack
|
||||
beq .7
|
||||
beq .8
|
||||
|
||||
jsr .8
|
||||
sta IO.D2.Ph0Off,x
|
||||
sta IO.D2.Ph0Off,y
|
||||
|
||||
bcs .2
|
||||
|
||||
|
@ -794,37 +769,53 @@ XRW.Seek ldx XRW.UnitIndex
|
|||
and #6
|
||||
ora A2L
|
||||
|
||||
* bcc .4
|
||||
bcc .4
|
||||
|
||||
* move out : invert 2 phases
|
||||
|
||||
* phx
|
||||
* tax
|
||||
* pla
|
||||
phx
|
||||
tax
|
||||
pla
|
||||
|
||||
.4 tay
|
||||
|
||||
lda IO.D2.Ph0On,x
|
||||
lda IO.D2.Ph0On,y
|
||||
sta IO.D2.Ph0On,x
|
||||
sta IO.D2.Ph0On,y
|
||||
|
||||
jsr XRW.WaitSeekTime
|
||||
|
||||
bra .1
|
||||
|
||||
.7 jsr XRW.Wait25600usec
|
||||
.8 jsr XRW.Wait25600usec
|
||||
|
||||
.8 bit IO.D2.Ph0Off,x
|
||||
ldx IO.D2.Ph0Off,y
|
||||
rts
|
||||
sta IO.D2.Ph0Off,x
|
||||
sta IO.D2.Ph0Off,y
|
||||
rts
|
||||
*--------------------------------------
|
||||
XRW.Reset ldx A2L
|
||||
XRW.WaitSeekTime
|
||||
* lda XRW.SeekTime
|
||||
lda #IO.D2.SeekTimeP
|
||||
.HS 2C BIT ABS
|
||||
XRW.Wait25600usec
|
||||
lda #0
|
||||
XRW.Wait100usecA
|
||||
phx
|
||||
|
||||
.1 ldx #18 (2)
|
||||
|
||||
lda IO.D2.Ph0Off,x
|
||||
lda IO.D2.Ph1Off,x
|
||||
lda IO.D2.Ph2Off,x
|
||||
lda IO.D2.Ph3Off,x
|
||||
.2 dex (2)
|
||||
bne .2 (3)
|
||||
|
||||
jmp XRW.ReadMode
|
||||
inc XRW.montimel (6)
|
||||
bne .3 (3)
|
||||
|
||||
inc XRW.montimeh (6)
|
||||
|
||||
.3 dec (2)
|
||||
bne .1 (3)
|
||||
|
||||
plx
|
||||
rts
|
||||
*--------------------------------------
|
||||
XRW.Trk2Qtrk asl x2
|
||||
sta .1+1
|
||||
|
@ -1003,6 +994,7 @@ XRW.SeekTime .HS 00
|
|||
.HS FFFFFF
|
||||
.HS 7C
|
||||
* .HS FFFF
|
||||
XRW.MoveCnt .EQ *
|
||||
XRW.Temp4x4 .HS 00
|
||||
XRW.CheckSum .HS 00 used for address header cksum
|
||||
.HS 8084
|
||||
|
@ -1016,9 +1008,7 @@ XRW.CurrentQTrack .HS 00
|
|||
* .HS FF
|
||||
XRW.TargetQTrack .HS 00
|
||||
.HS B0B4B8BCC0C4C8
|
||||
* .HS FFFF
|
||||
.HS FF
|
||||
XRW.SeekCnt .HS 00
|
||||
.HS FFFF
|
||||
.HS CCD0D4D8DCE0
|
||||
XRW.bWrite .HS 00
|
||||
.HS E4E8ECF0F4F8FC
|
||||
|
|
488
SBIN/CIFSD.S.txt
488
SBIN/CIFSD.S.txt
|
@ -11,8 +11,9 @@ NEW
|
|||
.INB inc/eth.i
|
||||
.INB inc/libtcpip.i
|
||||
.INB inc/net.smb.i
|
||||
.INB inc/libcifs.i
|
||||
*--------------------------------------
|
||||
TIMEOUT.MAX .EQ 100 20 sec.
|
||||
TIMEOUT.MAX .EQ 250 25 sec.
|
||||
*--------------------------------------
|
||||
* Zero Page Segment, up to 32 bytes
|
||||
*--------------------------------------
|
||||
|
@ -20,11 +21,15 @@ TIMEOUT.MAX .EQ 100 20 sec.
|
|||
.OR ZPBIN
|
||||
ZS.START
|
||||
ZPIPCfgPtr .BS 2
|
||||
hSocket .BS 1
|
||||
hResp .BS 1
|
||||
ZPRespPtr .BS 2
|
||||
TimeOut .BS 1
|
||||
ZS.END
|
||||
.ED
|
||||
hSMBContext .BS 1
|
||||
hMount .BS 1
|
||||
ZPPtr1 .BS 2
|
||||
ZPPtr2 .BS 2
|
||||
ZS.END .ED
|
||||
*--------------------------------------
|
||||
* File Header (16 Bytes)
|
||||
*--------------------------------------
|
||||
|
@ -44,9 +49,10 @@ CS.START cld
|
|||
*--------------------------------------
|
||||
.1 .DA CS.INIT
|
||||
.DA CS.RUN
|
||||
.DA CS.DOEVENT
|
||||
.DA CS.DOEVENT
|
||||
.DA CS.QUIT
|
||||
L.LIBTCPIP .DA LIBTCPIP
|
||||
L.LIBCIFS .DA LIBCIFS
|
||||
L.MSG.TCPIPERR .DA MSG.TCPIPERR
|
||||
L.MSG.USAGE .DA MSG.USAGE
|
||||
L.MSG.UNKNOWN .DA MSG.UNKNOWN
|
||||
|
@ -54,6 +60,7 @@ 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.QueryPathInfo .DA SMB.QueryPathInfo
|
||||
L.SMB.FindFirstReq .DA SMB.FindFirstReq
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
|
@ -63,17 +70,84 @@ L.SMB.FindFirstReq .DA SMB.FindFirstReq
|
|||
CS.INIT >LDYA L.LIBTCPIP
|
||||
>SYSCALL LoadLib
|
||||
bcs .9
|
||||
|
||||
sta hLIBTCPIP
|
||||
|
||||
clc
|
||||
.9 rts
|
||||
|
||||
>LDYA L.LIBCIFS
|
||||
>SYSCALL LoadLib
|
||||
bcs .9
|
||||
|
||||
sta hLIBCIFS
|
||||
|
||||
* clc
|
||||
.9
|
||||
CS.INIT.RTS rts
|
||||
*--------------------------------------
|
||||
* Called until exit with CS
|
||||
* if RUN exits with CC, RUN entered again
|
||||
*--------------------------------------
|
||||
CS.RUN >LDA.G hSocket
|
||||
bne .8
|
||||
CS.RUN lda hSocket
|
||||
beq .1
|
||||
|
||||
lda #0
|
||||
clc
|
||||
rts
|
||||
|
||||
.1 jsr CS.RUN.CheckTCPIP
|
||||
bcs CS.INIT.RTS
|
||||
|
||||
jsr CS.RUN.CheckArgs
|
||||
bcs CS.INIT.RTS
|
||||
|
||||
jsr CS.RUN.Connect
|
||||
bcs CS.INIT.RTS
|
||||
|
||||
>PUSHB hSocket
|
||||
>PUSHBI 0
|
||||
>LIBCALL hLIBCIFS,LIBCIFS.Negotiate
|
||||
|
||||
* jsr CS.RUN.Negotiate
|
||||
bcs .9
|
||||
|
||||
sta hSMBContext
|
||||
|
||||
>PUSHB hSocket
|
||||
>PUSHB hSMBContext
|
||||
>PUSHWI 0
|
||||
>PUSHWI 0
|
||||
>PUSHBI 0
|
||||
>LIBCALL hLIBCIFS,LIBCIFS.SessionSetup
|
||||
|
||||
* jsr CS.RUN.SessSetup
|
||||
bcs .9
|
||||
|
||||
>PUSHB hSocket
|
||||
>PUSHB hSMBContext
|
||||
lda #2
|
||||
>SYSCALL ArgV
|
||||
>PUSHYA
|
||||
>PUSHBI 0
|
||||
>LIBCALL hLIBCIFS,LIBCIFS.TreeConnect
|
||||
|
||||
* jsr CS.RUN.TreeConn
|
||||
bcs .9
|
||||
|
||||
* lda #3
|
||||
* >SYSCALL ArgV
|
||||
* >PUSHYA
|
||||
|
||||
* >PUSHW L.CS.CALLBACK
|
||||
|
||||
* >SYSCALL Mount
|
||||
* bcs .9
|
||||
|
||||
* sta hMount
|
||||
|
||||
.8 lda #0
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.RUN.CheckTCPIP
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG is TCPIP loaded ?
|
||||
bcs .9
|
||||
|
||||
|
@ -83,67 +157,66 @@ CS.RUN >LDA.G hSocket
|
|||
|
||||
>LDYA L.MSG.TCPIPERR
|
||||
>SYSCALL PutS
|
||||
|
||||
|
||||
lda #E.SYN
|
||||
sec
|
||||
rts
|
||||
|
||||
.1 jsr CS.RUN.CheckArgs
|
||||
bcs .90
|
||||
|
||||
jsr CS.RUN.Connect
|
||||
|
||||
>SLEEP
|
||||
|
||||
jsr CS.RUN.Negotiate
|
||||
bcs .9
|
||||
|
||||
>SLEEP
|
||||
|
||||
jsr CS.RUN.SessSetup
|
||||
bcs .9
|
||||
|
||||
>SLEEP
|
||||
|
||||
jsr CS.RUN.TreeConn
|
||||
bcs .9
|
||||
|
||||
>SLEEP
|
||||
|
||||
jsr CIFS.OpenDir
|
||||
bcs .9
|
||||
|
||||
|
||||
.8 lda #0
|
||||
clc
|
||||
.9 rts
|
||||
|
||||
.90 >LDYA L.MSG.USAGE
|
||||
>SYSCALL PutS
|
||||
lda #E.SYN
|
||||
sec
|
||||
.1 lda #AF.INET
|
||||
>STA.G SA.LOCAL
|
||||
>STA.G SA.REMOTE
|
||||
|
||||
ldy #S.IPCFG.IP+3
|
||||
|
||||
.3 lda (ZPIPCfgPtr),y
|
||||
pha
|
||||
dey
|
||||
cpy #S.IPCFG.IP-1
|
||||
bne .3
|
||||
|
||||
ldy #SA.LOCAL+S.SOCKADDR.ADDR
|
||||
|
||||
.4 pla
|
||||
sta (pData),y
|
||||
iny
|
||||
cpy #SA.LOCAL+S.SOCKADDR.ADDR+4
|
||||
bne .4
|
||||
|
||||
lda #TCP.PORT.CIFS
|
||||
>STA.G SA.REMOTE+S.SOCKADDR.PORT
|
||||
iny
|
||||
lda /TCP.PORT.CIFS
|
||||
sta (pData),y
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.CheckArgs
|
||||
ldy #S.PS.ARGC
|
||||
lda (pPS),y
|
||||
cmp #3
|
||||
bcc .9
|
||||
bcs .1
|
||||
|
||||
lda #TIMEOUT.MAX
|
||||
>LDYA L.MSG.USAGE
|
||||
>SYSCALL PutS
|
||||
lda #E.SYN
|
||||
sec
|
||||
rts
|
||||
|
||||
.1 lda #TIMEOUT.MAX
|
||||
sta TimeOut
|
||||
|
||||
.1 >PUSHEA.G SA.REMOTE+S.SOCKADDR.ADDR
|
||||
|
||||
.2 >PUSHEA.G SA.REMOTE+S.SOCKADDR.ADDR
|
||||
lda #1
|
||||
>SYSCALL ArgV
|
||||
>PUSHYA
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.HST.GetByName
|
||||
bcc .2
|
||||
|
||||
bcc .3
|
||||
|
||||
>SLEEP
|
||||
lda TimeOut
|
||||
bne .1
|
||||
|
||||
bne .2
|
||||
|
||||
>PUSHW L.MSG.UNKNOWN
|
||||
lda #1
|
||||
>SYSCALL ArgV
|
||||
|
@ -151,32 +224,10 @@ CS.RUN.CheckArgs
|
|||
>PUSHBI 2
|
||||
>SYSCALL PrintF
|
||||
sec
|
||||
.9 rts
|
||||
|
||||
.2 lda #AF.INET
|
||||
>STA.G SA.LOCAL
|
||||
>STA.G SA.REMOTE
|
||||
ldy #S.IPCFG.IP+3
|
||||
|
||||
.3 lda (ZPIPCfgPtr),y
|
||||
pha
|
||||
dey
|
||||
cpy #S.IPCFG.IP-1
|
||||
bne .3
|
||||
|
||||
ldy #SA.REMOTE+S.SOCKADDR.PORT
|
||||
.4 pla
|
||||
sta (pData),y
|
||||
iny
|
||||
cpy #SA.REMOTE+S.SOCKADDR.PORT+4
|
||||
bne .4
|
||||
|
||||
lda #TCP.PORT.CIFS
|
||||
>STA.G SA.REMOTE+S.SOCKADDR.PORT
|
||||
iny
|
||||
lda /TCP.PORT.CIFS
|
||||
sta (pData),y
|
||||
rts
|
||||
|
||||
.3 lda #2
|
||||
>SYSCALL ArgV
|
||||
|
||||
clc
|
||||
rts
|
||||
|
@ -186,16 +237,43 @@ CS.RUN.Connect >PUSHBI 0 no protocol
|
|||
>LIBCALL hLIBTCPIP,LIBTCPIP.Socket
|
||||
bcs .9
|
||||
|
||||
>STA.G hSocket
|
||||
sta hSocket
|
||||
|
||||
>PUSHEA.G SA.LOCAL
|
||||
>LDA.G hSocket
|
||||
lda hSocket
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Bind
|
||||
bcs .9
|
||||
|
||||
|
||||
>SLEEP
|
||||
|
||||
>PUSHEA.G SA.REMOTE
|
||||
>LDA.G hSocket
|
||||
lda hSocket
|
||||
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Connect
|
||||
bcs .9
|
||||
|
||||
lda #TIMEOUT.MAX
|
||||
sta TimeOut
|
||||
|
||||
.1 >SLEEP
|
||||
|
||||
lda hSocket
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Recv
|
||||
bcc .7
|
||||
|
||||
cmp #E.NODATA
|
||||
beq .8
|
||||
|
||||
ldx TimeOut
|
||||
bne .1
|
||||
|
||||
sec
|
||||
rts
|
||||
|
||||
.7 >SYSCALL Freemem
|
||||
|
||||
.8 clc
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.RUN.Negotiate
|
||||
|
@ -204,19 +282,19 @@ CS.RUN.Negotiate
|
|||
|
||||
.1 >PUSHWI SMB.NegReq.end-SMB.NegReq
|
||||
>PUSHW L.SMB.NegReq
|
||||
>LDA.G hSocket
|
||||
lda hSocket
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Send
|
||||
bcc .2
|
||||
|
||||
|
||||
>SLEEP
|
||||
ldx TimeOut
|
||||
bne .1
|
||||
|
||||
|
||||
bra .99
|
||||
|
||||
|
||||
.2 >SLEEP
|
||||
|
||||
>LDA.G hSocket
|
||||
lda hSocket
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Recv
|
||||
bcc .3
|
||||
|
||||
|
@ -228,25 +306,25 @@ CS.RUN.Negotiate
|
|||
.3 sta hResp
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPRespPtr
|
||||
|
||||
|
||||
ldy #$3f
|
||||
lda (ZPRespPtr),y
|
||||
bne .9
|
||||
|
||||
|
||||
ldy #$5B
|
||||
lda (ZPRespPtr),y
|
||||
cmp #5
|
||||
bne .9
|
||||
|
||||
|
||||
|
||||
|
||||
lda hResp
|
||||
>SYSCALL FreeMem
|
||||
* clc
|
||||
rts
|
||||
|
||||
|
||||
.9 lda hResp
|
||||
>SYSCALL FreeMem
|
||||
|
||||
|
||||
.99 lda #MLI.E.INVPATH
|
||||
sec
|
||||
rts
|
||||
|
@ -257,19 +335,19 @@ CS.RUN.SessSetup
|
|||
|
||||
.1 >PUSHWI SMB.SessSetup.end-SMB.SessSetup
|
||||
>PUSHW L.SMB.SessSetup
|
||||
>LDA.G hSocket
|
||||
lda hSocket
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Send
|
||||
bcc .2
|
||||
|
||||
|
||||
>SLEEP
|
||||
ldx TimeOut
|
||||
bne .1
|
||||
|
||||
|
||||
bra .99
|
||||
|
||||
|
||||
.2 >SLEEP
|
||||
|
||||
>LDA.G hSocket
|
||||
lda hSocket
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Recv
|
||||
bcc .3
|
||||
|
||||
|
@ -281,7 +359,7 @@ CS.RUN.SessSetup
|
|||
.3 sta hResp
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPRespPtr
|
||||
|
||||
|
||||
ldy #$3f
|
||||
lda (ZPRespPtr),y
|
||||
bne .9
|
||||
|
@ -292,7 +370,7 @@ CS.RUN.SessSetup
|
|||
iny
|
||||
lda (ZPRespPtr),y
|
||||
sta SMB.TreeConnReq.UID+1
|
||||
|
||||
|
||||
>PUSHW L.MSG.SESSION
|
||||
lda #$63
|
||||
clc
|
||||
|
@ -301,18 +379,18 @@ CS.RUN.SessSetup
|
|||
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
|
||||
|
@ -322,19 +400,19 @@ CS.RUN.TreeConn lda #TIMEOUT.MAX
|
|||
|
||||
.1 >PUSHWI SMB.TreeConnReq.end-SMB.TreeConnReq
|
||||
>PUSHW L.SMB.TreeConnReq
|
||||
>LDA.G hSocket
|
||||
lda hSocket
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Send
|
||||
bcc .2
|
||||
|
||||
|
||||
>SLEEP
|
||||
ldx TimeOut
|
||||
bne .1
|
||||
|
||||
|
||||
bra .99
|
||||
|
||||
|
||||
.2 >SLEEP
|
||||
|
||||
>LDA.G hSocket
|
||||
lda hSocket
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Recv
|
||||
bcc .3
|
||||
|
||||
|
@ -346,41 +424,43 @@ CS.RUN.TreeConn lda #TIMEOUT.MAX
|
|||
.3 sta hResp
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPRespPtr
|
||||
|
||||
|
||||
ldy #$3f
|
||||
lda (ZPRespPtr),y
|
||||
bne .9
|
||||
|
||||
|
||||
ldy #$52
|
||||
lda (ZPRespPtr),y
|
||||
sta SMB.FindFirstReq.TID
|
||||
iny
|
||||
lda (ZPRespPtr),y
|
||||
sta SMB.FindFirstReq.TID+1
|
||||
|
||||
|
||||
ldy #$56
|
||||
lda (ZPRespPtr),y
|
||||
sta SMB.FindFirstReq.UID
|
||||
iny
|
||||
lda (ZPRespPtr),y
|
||||
sta SMB.FindFirstReq.UID+1
|
||||
|
||||
|
||||
lda hResp
|
||||
>SYSCALL FreeMem
|
||||
* clc
|
||||
rts
|
||||
|
||||
|
||||
.9 lda hResp
|
||||
>SYSCALL FreeMem
|
||||
|
||||
|
||||
.99 lda #MLI.E.INVPATH
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.DOEVENT lda (pEvent)
|
||||
bpl .9 is it a TIMER event?
|
||||
|
||||
lda TimeOut
|
||||
beq .9
|
||||
|
||||
dec TimeOut
|
||||
.9 sec do not discard TIMER event
|
||||
rts
|
||||
|
@ -388,78 +468,41 @@ CS.DOEVENT lda (pEvent)
|
|||
* Called once, when RUN exited with CS
|
||||
* Put code for unloading LIB here
|
||||
*--------------------------------------
|
||||
CS.QUIT >LDA.G hSocket
|
||||
CS.QUIT lda hMount
|
||||
beq .1
|
||||
|
||||
>SYSCALL UMount
|
||||
|
||||
.1 lda hSocket
|
||||
beq .2
|
||||
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown
|
||||
|
||||
lda hLIBTCPIP
|
||||
|
||||
.2 lda hLIBCIFS
|
||||
beq .3
|
||||
|
||||
>SYSCALL UnloadLib
|
||||
|
||||
.3 lda hLIBTCPIP
|
||||
beq .8
|
||||
|
||||
>SYSCALL UnloadLib
|
||||
|
||||
.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
|
||||
|
||||
cmp #E.NODATA
|
||||
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
|
||||
*--------------------------------------
|
||||
LIBTCPIP .AZ "libtcpip"
|
||||
hLIBTCPIP .BS 1
|
||||
MSG.TCPIPERR .AZ "HTTPD:TCP/IP Not initialized properly."
|
||||
LIBCIFS .AZ "libcifs"
|
||||
hLIBCIFS .BS 1
|
||||
MSG.TCPIPERR .AZ "CIFSD: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"
|
||||
MSG.UNKNOWN .AZ "CIFSD:%s: Unknown host\r\n"
|
||||
MSG.SESSION .AZ "CIFSD:Connected to: %s\r\n"
|
||||
*--------------------------------------
|
||||
SMB.NegReq .DA #0 DIRECT TCP TRANSPORT
|
||||
.DA #0 24 BITS LENGTH
|
||||
|
@ -521,7 +564,7 @@ SMB.SessSetup .DA #0 DIRECT TCP TRANSPORT
|
|||
.DA 0 MID
|
||||
|
||||
.DA #13 WORD COUNT
|
||||
|
||||
|
||||
.HS FF000000 NO MORE CMD
|
||||
.DA 1280 MAX BUFFER
|
||||
.DA 2 MAX MPX COUNT
|
||||
|
@ -535,11 +578,9 @@ SMB.SessSetup .DA #0 DIRECT TCP TRANSPORT
|
|||
.DA #SMB.SessSetup.end-2-*
|
||||
.DA /SMB.SessSetup.end-2-*
|
||||
|
||||
SMB.SessSetup.SecBlob
|
||||
* .AZ "" Password
|
||||
.AZ "GUEST" Account Name
|
||||
.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 *
|
||||
|
@ -563,20 +604,73 @@ SMB.TreeConnReq.TID
|
|||
SMB.TreeConnReq.UID
|
||||
.DA 0 UID
|
||||
.DA 0 MID
|
||||
|
||||
|
||||
.DA #4 WORD COUNT
|
||||
.HS FF000000 NO MORE CMD
|
||||
.DA 0
|
||||
.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 "_temp" PATH
|
||||
.AZ "?????"
|
||||
SMB.TreeConnReq.end .EQ *
|
||||
*--------------------------------------
|
||||
* https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-cifs/9b171bbf-c6d8-4c88-ac85-23c795cbb5d3
|
||||
*--------------------------------------
|
||||
SMB.QueryPathInfo
|
||||
.DA #0 DIRECT TCP TRANSPORT
|
||||
.DA #0 24 BITS LENGTH
|
||||
.DA /SMB.QueryPathInfo.end-1-*
|
||||
.DA #SMB.QueryPathInfo.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
|
||||
SMB.QueryPathInfo.TID
|
||||
.DA $FFFF TID
|
||||
.DA $FEFF PIDLO
|
||||
SMB.QueryPathInfo.UID
|
||||
.DA 0 UID
|
||||
.DA 0 MID
|
||||
* Trans2
|
||||
.DA #15 WORD COUNT
|
||||
.DA SMB.QueryPathInfo.PrmCnt TotalParamCount
|
||||
.DA 0 TotalDataCount
|
||||
.DA 10 MaxParameterCount
|
||||
.DA 460 MaxDataCount
|
||||
.DA #1 MaxSetupCount
|
||||
.HS 00 Reserved1
|
||||
.DA 0 Flags
|
||||
.HS 00000000 Timeout
|
||||
.HS 0000 Reserved2
|
||||
.DA SMB.QueryPathInfo.PrmCnt ParameterCount
|
||||
.DA 66 ParameterOffset
|
||||
.HS 0000 DataCount
|
||||
.HS 0000 DataOffset
|
||||
|
||||
.DA #1 SetupCount
|
||||
.HS 00 Reserved3
|
||||
* TRANS2_QUERY_PATH_INFORMATION
|
||||
.DA 5 TRANS2_QUERY_PATH_INFORMATION
|
||||
|
||||
.DA SMB.QueryPathInfo.PrmCnt+1 INCLUDING Padding byte below
|
||||
.HS 00 Padding
|
||||
|
||||
SMB.QueryPathInfo.Prm
|
||||
.DA $0001 InformationLevel
|
||||
.HS 00000000 SearchStorageType
|
||||
.AZ "server.met" FileName
|
||||
SMB.QueryPathInfo.PrmCnt .EQ *-SMB.QueryPathInfo.Prm
|
||||
SMB.QueryPathInfo.end
|
||||
*--------------------------------------
|
||||
SMB.FindFirstReq
|
||||
.DA #0 DIRECT TCP TRANSPORT
|
||||
.DA #0 24 BITS LENGTH
|
||||
|
@ -596,38 +690,39 @@ SMB.FindFirstReq.TID
|
|||
.DA $FEFF PIDLO
|
||||
SMB.FindFirstReq.UID
|
||||
.DA 0 UID
|
||||
.DA 0 MID
|
||||
|
||||
.DA #$0F WORD COUNT
|
||||
.DA 0 TotalParamCount
|
||||
.DA 0 MID
|
||||
* Trans2
|
||||
.DA #15 WORD COUNT
|
||||
.DA SMB.FindFirstReq.PrmCnt TotalParamCount
|
||||
.DA 0 TotalDataCount
|
||||
.DA 256 MaxParameterCount
|
||||
.DA 1024 MaxDataCount
|
||||
.DA 10 MaxParameterCount
|
||||
.DA 460 MaxDataCount
|
||||
.DA #1 MaxSetupCount
|
||||
.HS 00 Reserved1
|
||||
.DA 0 Flags
|
||||
.HS 00000000 Timeout
|
||||
.HS 0000 Reserved2
|
||||
.DA 18 ParameterCount
|
||||
.DA 68 ParameterOffset
|
||||
.DA SMB.FindFirstReq.PrmCnt ParameterCount
|
||||
.DA 66 ParameterOffset
|
||||
.HS 0000 DataCount
|
||||
.HS 0000 DataOffset
|
||||
|
||||
.DA #1 SetupCount
|
||||
.HS 00 Reserved3
|
||||
|
||||
* FIND_FIRST2
|
||||
.DA 1 TRANS2_FIND_FIRST2
|
||||
|
||||
.DA SMB.FindFirstReq.end-2-*
|
||||
.DA SMB.FindFirstReq.PrmCnt+1 INCLUDING Padding byte below
|
||||
.HS 00 Padding
|
||||
|
||||
.HS 000000 Padding
|
||||
|
||||
.DA $373E SearchAttributes
|
||||
SMB.FindFirstReq.Prm
|
||||
.DA $0016 SearchAttributes
|
||||
.DA 1024 SearchCount
|
||||
.DA 0 Flags
|
||||
.DA $0104 InformationLevel
|
||||
.DA 3 Flags
|
||||
.DA $0001 InformationLevel
|
||||
.HS 00000000 SearchStorageType
|
||||
.AS "\*" FileName
|
||||
.AZ "\*.*" FileName
|
||||
SMB.FindFirstReq.PrmCnt .EQ *-SMB.FindFirstReq.Prm
|
||||
SMB.FindFirstReq.end
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
|
@ -641,7 +736,6 @@ SA.REMOTE .BS 1 S.SOCKADDR.AF
|
|||
.BS 1
|
||||
.BS 4 S.SOCKADDR.ADDR
|
||||
.BS 2 S.SOCKADDR.PORT
|
||||
hSocket .BS 1
|
||||
DS.END
|
||||
.ED
|
||||
*--------------------------------------
|
||||
|
|
|
@ -6,7 +6,7 @@ NEW
|
|||
.TF sbin/networkd
|
||||
*--------------------------------------
|
||||
LIB.MAX .EQ 4
|
||||
DBG .EQ 0
|
||||
DBG .EQ 2
|
||||
*--------------------------------------
|
||||
.INB inc/macros.i
|
||||
.INB inc/a2osx.i
|
||||
|
|
|
@ -8,19 +8,34 @@ NEW
|
|||
* A = hMem To loaded LIB
|
||||
*--------------------------------------
|
||||
K.LoadLib jsr PS.Find.LIB
|
||||
bcs .9
|
||||
bcs .99
|
||||
|
||||
jsr BIN.Load K.Buf256 = "/PATH/BIN"
|
||||
bcs .9
|
||||
bcs .99
|
||||
|
||||
>STYA .1+1
|
||||
|
||||
txa Pass hLib to LibLoad
|
||||
pha
|
||||
ldx #LIBMGR.LOAD
|
||||
.1 jsr $ffff SELF MODIFIED, Call LIB.LOAD function
|
||||
bcs BIN.Load.Cleanup
|
||||
|
||||
lda BIN.hMem
|
||||
.1 jsr $ffff SELF MODIFIED, Call LIB.LOAD function
|
||||
|
||||
plx
|
||||
bcc .8
|
||||
|
||||
pha
|
||||
txa
|
||||
|
||||
jsr K.FreeMem
|
||||
|
||||
pla
|
||||
sec
|
||||
rts
|
||||
|
||||
.8 txa
|
||||
* clc
|
||||
.9 rts
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
* UnloadLib
|
||||
* in :
|
||||
|
@ -57,24 +72,30 @@ K.LoadDrv >STYA .2+1 Save "BIN\0ARGS\0\0"
|
|||
|
||||
jsr PS.Find.DRV
|
||||
bcs .9
|
||||
|
||||
jsr BIN.Load K.Buf256 = "/PATH/BIN"
|
||||
bcs .9
|
||||
|
||||
>STYA .3+1
|
||||
|
||||
ldx #$ff
|
||||
|
||||
.1 inx Skip "BIN"
|
||||
|
||||
.2 lda $ffff,x
|
||||
bne .1
|
||||
|
||||
txa
|
||||
sec
|
||||
adc .2+1
|
||||
tay
|
||||
lda #0
|
||||
adc .2+2 Y,A = ARGS
|
||||
|
||||
.3 jsr $ffff SELF MODIFIED, call Dev.Detect
|
||||
jsr BIN.Load.Cleanup
|
||||
bcs .9
|
||||
|
||||
lda #0 Make sure RC = 0 if success
|
||||
* clc
|
||||
.9 rts
|
||||
|
|
|
@ -3,7 +3,7 @@ NEW
|
|||
*/--------------------------------------
|
||||
* # OpenDir
|
||||
* ## C
|
||||
* `int hDIR opendir (const char * dirpath);`
|
||||
* `short int hDIR opendir (const char * dirpath);`
|
||||
* ## ASM
|
||||
* `>LDYA dirpath`
|
||||
* `>SYSCALL opendir`
|
||||
|
@ -76,7 +76,7 @@ K.ReadDir.ROOT ldy #S.FD.DIR.FC did we already returned something ?
|
|||
>MLICALL MLIONLINE
|
||||
bcs K.ReadDir.RTS
|
||||
|
||||
>LDYAI 16*S.STAT+257 16 (Vols+Stat) + \0
|
||||
>LDYAI 16+S.STAT*18+1 14*(Vols+Stat) + 4*(PFT+Stat) + \0
|
||||
|
||||
jsr K.ReadDir.GetBufYA
|
||||
bcs K.ReadDir.RTS
|
||||
|
@ -86,7 +86,7 @@ K.ReadDir.ROOT ldy #S.FD.DIR.FC did we already returned something ?
|
|||
|
||||
.1 lda (ZPPtr2)
|
||||
and #$0F
|
||||
beq .6
|
||||
beq .4
|
||||
|
||||
tax
|
||||
inc
|
||||
|
@ -139,21 +139,49 @@ K.ReadDir.ROOT ldy #S.FD.DIR.FC did we already returned something ?
|
|||
|
||||
.3 jsr K.ReadDir.AddStat
|
||||
|
||||
.6 lda ZPPtr2
|
||||
.4 lda ZPPtr2
|
||||
clc
|
||||
adc #16
|
||||
sta ZPPtr2
|
||||
bcc .7
|
||||
bcc .5
|
||||
inc ZPPtr2+1
|
||||
|
||||
.7 dec K.ReadDir.EC
|
||||
.5 dec K.ReadDir.EC
|
||||
bne .1
|
||||
|
||||
jsr FS.ClrStat
|
||||
|
||||
lda /S.STAT.MODE.DIR
|
||||
sta K.S.STAT+S.STAT.MODE+1
|
||||
|
||||
ldx #0
|
||||
|
||||
.6 lda Flt.Table.pftHI,x
|
||||
beq .8
|
||||
|
||||
sta ZPPtr2+1
|
||||
lda Flt.Table.pftLO,x
|
||||
sta ZPPtr2
|
||||
|
||||
ldy #$ff
|
||||
|
||||
.7 iny
|
||||
lda (ZPPtr2),y
|
||||
jsr K.ReadDir.AddToBuf
|
||||
eor #0
|
||||
bne .7
|
||||
|
||||
jsr K.ReadDir.AddStat
|
||||
|
||||
.8 inx
|
||||
cpx #K.FLT.MAX
|
||||
bne .6
|
||||
|
||||
* lda #0 done by S.MEM.F.INIT0
|
||||
* sta (ZPPtr4) Ending 0
|
||||
|
||||
ldy #S.FD.DIR.FC
|
||||
lda #16
|
||||
lda #255
|
||||
sta (pFD),y Flag that we returned something for next time
|
||||
jmp K.ReadDir.EXIT
|
||||
*--------------------------------------
|
||||
|
|
|
@ -2,7 +2,7 @@ NEW
|
|||
AUTO 3,1
|
||||
*--------------------------------------
|
||||
* SYSCALL (AUXLC to AUXLC)
|
||||
* Used by user & kernel for inter bank Calls
|
||||
* Used by user & kernel for inter bank Calls
|
||||
* In:
|
||||
* X = SYSfnc.Index
|
||||
* Y,A = free for Inline param
|
||||
|
@ -10,7 +10,7 @@ NEW
|
|||
GP.CodeStart jmp GP.SysCall
|
||||
*--------------------------------------
|
||||
* LIBCALL (AUXLC to AUXLC)
|
||||
* Used by user
|
||||
* Used by user
|
||||
* In:
|
||||
* Y = LIB.ID
|
||||
* X = LIBfnc.Index
|
||||
|
@ -77,7 +77,7 @@ GP.Sleep2 ldy #S.PS.PC
|
|||
tsx
|
||||
|
||||
inx
|
||||
|
||||
|
||||
inx keep PC HI,LO from KERNEL jsr PSExec/PSResume
|
||||
inx Stack Ptr is $1ff if empty
|
||||
|
||||
|
@ -92,7 +92,7 @@ GP.Sleep2 ldy #S.PS.PC
|
|||
bne .2
|
||||
|
||||
tya
|
||||
|
||||
|
||||
.3 >PUSHA push CPU Stack BC to restore on top of Soft Stack
|
||||
|
||||
inc $1fe PC=PC+1
|
||||
|
@ -133,30 +133,49 @@ GP.SysCall dec IRQ.InKernel
|
|||
rts Unmodified Carry
|
||||
|
||||
.3 sei
|
||||
|
||||
pla get PC LO
|
||||
inc IRQ.InKernel
|
||||
|
||||
GO.Sleep2 pla get PC LO
|
||||
plx get PC HI
|
||||
* sec
|
||||
sbc #2 move back JSR GP.SysCall -3 (jsr $BF00) +1 (RTI)
|
||||
bcs .4
|
||||
sbc #2
|
||||
bcs GP.Sleep2
|
||||
|
||||
dex
|
||||
|
||||
.4 inc IRQ.InKernel
|
||||
bra GP.Sleep2
|
||||
.1 bra GP.Sleep2
|
||||
*--------------------------------------
|
||||
GP.LibCall dec IRQ.InLib
|
||||
|
||||
pha No need to save X, K.GetMemPtr will leave it unmodified
|
||||
tya Get LIB hMem in A
|
||||
pha
|
||||
phy
|
||||
ldy #S.PS.A
|
||||
sta (pPS),y
|
||||
txa
|
||||
iny #S.PS.X
|
||||
sta (pPS),y
|
||||
pla
|
||||
iny #S.PS.Y
|
||||
sta (pPS),y
|
||||
|
||||
jsr K.GetMemPtr Get LIB Code Segment (MemMgr in $E000, no BNK change)
|
||||
>STYA .1+1
|
||||
pla
|
||||
|
||||
.1 jsr $FFFF SELF MODIFIED
|
||||
|
||||
GP.LibCall.8 inc IRQ.InLib
|
||||
GP.LibCall.RTS rts
|
||||
bcc .2
|
||||
|
||||
tax
|
||||
beq .3
|
||||
|
||||
.2 inc IRQ.InLib
|
||||
rts
|
||||
|
||||
.3 sei
|
||||
inc IRQ.InLib
|
||||
|
||||
bra GO.Sleep2
|
||||
*--------------------------------------
|
||||
GP.AtkCall dec IRQ.InKernel
|
||||
|
||||
|
@ -187,7 +206,7 @@ GP.AtkCall.INC inc IRQ.InKernel
|
|||
GP.FpuCall dec IRQ.InKernel
|
||||
cpx #FPU.FADD
|
||||
bcs .1
|
||||
|
||||
|
||||
jsr MATH32 INT32, direct JMP
|
||||
bra GP.AtkCall.INC
|
||||
|
||||
|
@ -238,7 +257,7 @@ GP.FpuCall dec IRQ.InKernel
|
|||
*\--------------------------------------
|
||||
GP.RomCallGetFacOnStack
|
||||
jsr GP.ROMCALL
|
||||
|
||||
|
||||
lda pStack
|
||||
ldy pStack+1
|
||||
sta FORPNT Ptr to dst buffer
|
||||
|
@ -252,7 +271,7 @@ GP.RomCall phx
|
|||
plx
|
||||
|
||||
jsr GP.RomCall.JmpX
|
||||
|
||||
|
||||
.8 ldx #$ff
|
||||
bit $C000,x
|
||||
bit $C000,x
|
||||
|
@ -305,7 +324,7 @@ GP.Float ldy #3
|
|||
GP.lrintf jsr GP.SetFAC
|
||||
inc pStack keep 4 bytes on stack
|
||||
ldx #FPU.QINT
|
||||
jsr GP.ROMCALL
|
||||
jsr GP.ROMCALL
|
||||
|
||||
ldy #3
|
||||
|
||||
|
@ -386,7 +405,7 @@ GO.EXIT.JMP jmp $FFFF SELF MODIFIED
|
|||
*--------------------------------------
|
||||
GP.IRQ cld
|
||||
|
||||
bit IRQ.Skip After A2osX IRQ.H ?
|
||||
bit IRQ.Skip After A2osX IRQ.H ?
|
||||
bmi GP.IRQ.Exit
|
||||
|
||||
sta SETALTZP switch to aux LC
|
||||
|
|
|
@ -292,12 +292,6 @@ MemMgrInit >LDYAI Mem.MHiMem
|
|||
dex
|
||||
bpl .1
|
||||
|
||||
ldx #K.FLT.MAX*2-1
|
||||
|
||||
.11 stz Flt.Table.hPath,x
|
||||
dex
|
||||
bpl .11
|
||||
|
||||
ldx #K.NOD.MAX*2-1
|
||||
|
||||
.2 stz Nod.Table.hName,x
|
||||
|
@ -322,6 +316,12 @@ MemMgrInit >LDYAI Mem.MHiMem
|
|||
dex
|
||||
bpl .6
|
||||
|
||||
ldx #K.FLT.MAX*4-1
|
||||
|
||||
.7 stz Flt.Table.pftLO,x
|
||||
dex
|
||||
bpl .7
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
SysScrInit >LDYAI Mem.XHiMem
|
||||
|
|
|
@ -2,18 +2,59 @@ NEW
|
|||
AUTO 3,1
|
||||
*--------------------------------------
|
||||
* K.Mount
|
||||
* In :
|
||||
* Out :
|
||||
* ## ASM
|
||||
* `>PUSHW mountpoint`
|
||||
* `>PUSHW callback`
|
||||
*
|
||||
* Out : A = hMount
|
||||
*--------------------------------------
|
||||
K.Mount
|
||||
K.Mount >PULLW ZPPtr2 callback
|
||||
>PULLW ZPPtr1 mountpoint
|
||||
|
||||
ldx #1
|
||||
|
||||
.1 lda Flt.Table.pftHI-1,x
|
||||
beq .2
|
||||
|
||||
inx
|
||||
cpx #K.FLT.MAX+1
|
||||
bne .1
|
||||
|
||||
lda #E.OOH
|
||||
sec
|
||||
rts
|
||||
|
||||
.2 lda ZPPtr1
|
||||
sta Flt.Table.pftLO-1,x
|
||||
lda ZPPtr1+1
|
||||
sta Flt.Table.pftHI-1,x
|
||||
|
||||
lda ZPPtr2
|
||||
sta Flt.Table.cbLO-1,x
|
||||
lda ZPPtr2+1
|
||||
sta Flt.Table.cbHI-1,x
|
||||
|
||||
txa
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
* K.UMount
|
||||
* In :
|
||||
* In : A = hMount
|
||||
* Out :
|
||||
*--------------------------------------
|
||||
K.UMount
|
||||
K.UMount tax
|
||||
|
||||
lda Flt.Table.pftHI-1,x
|
||||
beq .9
|
||||
|
||||
stz Flt.Table.pftHI-1,x
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #E.INVH
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
K.Online >PULLW K.MLI.PARAMS+2
|
||||
>PULLB K.MLI.PARAMS+1
|
||||
|
@ -22,7 +63,7 @@ K.Online >PULLW K.MLI.PARAMS+2
|
|||
*/--------------------------------------
|
||||
* # GetStkObj
|
||||
* ## C
|
||||
* `int *ptr getstkobj (shoirt int hStkObj);`
|
||||
* `int *ptr getstkobj (short int hStkObj);`
|
||||
* ## ASM
|
||||
* `lda hStkObj`
|
||||
* `>SYSCALL GetStkObj`
|
||||
|
|
|
@ -25,11 +25,13 @@ PFT.CheckPathYA >PUSHYA
|
|||
|
||||
ldx #0
|
||||
|
||||
.1 lda Flt.Table.hPath,x
|
||||
.1 lda Flt.Table.pftHI,x
|
||||
beq .8
|
||||
|
||||
jsr K.GetMemPtr
|
||||
>STYA ZPPtr1
|
||||
sta ZPPtr1+1
|
||||
|
||||
lda Flt.Table.pftLO,x
|
||||
sta ZPPtr1
|
||||
|
||||
ldy #$ff
|
||||
|
||||
|
@ -46,12 +48,15 @@ PFT.CheckPathYA >PUSHYA
|
|||
cmp #'/'
|
||||
bne .8
|
||||
|
||||
lda Flt.Table.hLib,x get hLib
|
||||
jsr K.GetMemPtr
|
||||
>STYA .7+1
|
||||
lda Flt.Table.cbLO,x
|
||||
sta .7+1
|
||||
|
||||
lda Flt.Table.cbHI,x
|
||||
sta .7+2
|
||||
pla discard JSR return @
|
||||
pla
|
||||
>LDYAI K.Buf256 pass full path to handler
|
||||
lda /K.Buf256 pass full path to handler
|
||||
iny skip "/"
|
||||
|
||||
.6 ldx #$ff SELF MODIFIED SYSCALL #
|
||||
.7 jmp $ffff SELF MODIFIED
|
||||
|
|
Loading…
Reference in New Issue