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