diff --git a/.Docs/LIBTCPIP.md b/.Docs/LIBTCPIP.md index 6744dcfd..56e36ff7 100644 --- a/.Docs/LIBTCPIP.md +++ b/.Docs/LIBTCPIP.md @@ -5,9 +5,9 @@ Copyright 2015 - 2020, Remy Gibert and the A2osX contributors. # ARP.Clear Clear ARP Cache -**In:** +**In:** -## RETURN VALUE +## RETURN VALUE # ARP.Query Query ARP Cache and returns HW address @@ -17,7 +17,7 @@ Copyright 2015 - 2020, Remy Gibert and the A2osX contributors. ## RETURN VALUE CC: hit: MAC filled - CS: missed + CS: missed # ARP.Add Add a static ARP cache record @@ -34,19 +34,19 @@ Copyright 2015 - 2020, Remy Gibert and the A2osX contributors. # DNS.Clear Clear DNS Cache -**In:** +**In:** -## RETURN VALUE +## RETURN VALUE # DNS.Query Query DNS for specified host **In:** PUSHW = PTR to IP to fill with cached data -* PUSHW = hostname PTR to PSTR +* PUSHW = hostname PTR to PSTR ## RETURN VALUE CC: hit: IP filled with address - CS: missed + CS: missed # DNS.Add Add a static DNS record @@ -69,8 +69,8 @@ Create a new socket ## ASM **In:** +`>PUSHB type` `>PUSHB protocol` -`lda type` `>LIBCALL hLIBTCPIP,LIBTCPIP.socket` ## RETURN VALUE @@ -85,8 +85,8 @@ bind a name to a socket ## ASM **In:** +`>PUSHB fd` `>PUSHW addr` -`lda fd` `>LIBCALL hLIBTCPIP,LIBTCPIP.socket` ## RETURN VALUE @@ -101,8 +101,8 @@ Initiate a connection on a socket ## ASM **In:** +`>PUSHB fd` `>PUSHW addr` -`lda fd` `>LIBCALL hLIBTCPIP,LIBTCPIP.socket` ## RETURN VALUE @@ -157,9 +157,9 @@ Close socket ## ASM **In:** -`>PUSHWI count` +`>PUSHB fd` `>PUSHW buf` -`lda fd` +`>PUSHW count` `>LIBCALL hLIBTCPIP,LIBTCPIP.read` ## RETURN VALUE @@ -173,26 +173,37 @@ CS: A = EC ## ASM **In:** -`>PUSHWI count` +`>PUSHB fd` `>PUSHW buf` -`lda fd` +`>PUSHW count` `>LIBCALL hLIBTCPIP,LIBTCPIP.write` ## RETURN VALUE CC: Y,A = bytes written CS: A = EC -# Recv (RAW,DGRAM,SEQPKT) - # RecvFrom (RAW,DGRAM,SEQPKT) ## C -`hMem recv(hFD fd);` `hMem recvfrom(hFD fd, struct sockaddr *addr);` ## ASM **In:** +`>PUSHB fd` `>PUSHW addr` (RecvFrom) +`>LIBCALL hLIBTCPIP,LIBTCPIP.Recv` + +## RETURN VALUE +CC: A = hMem +CS: A = EC + +# Recv (RAW,DGRAM,SEQPKT) + +## C +`hMem recv(hFD fd);` + +## ASM +**In:** `lda fd` `>LIBCALL hLIBTCPIP,LIBTCPIP.Recv` @@ -200,20 +211,33 @@ CS: A = EC CC: A = hMem CS: A = EC -# Send (RAW,DGRAM,SEQPKT) - # SendTo (RAW,DGRAM,SEQPKT) ## C -`int skt.send(hFD fd, const void *buf, int count);` `int skt.sendto(hFD fd, const void *buf, int count, const struct sockaddr *addr);` ## ASM **In:** -`>PUSHW addr` (SendTo) -`>PUSHWI count` +`>PUSHB fd` `>PUSHW buf` -`lda fd` +`>PUSHWI count` +`>PUSHW addr` +`>LIBCALL hLIBTCPIP,LIBTCPIP.sendto` + +## RETURN VALUE +CC: Y,A = bytes written +CS: A = EC + +# Send (RAW,DGRAM,SEQPKT) + +## C +`int skt.send(hFD fd, const void *buf, int count);` + +## ASM +**In:** +`>PUSHB fd` +`>PUSHW buf` +`>PUSHWI count` `>LIBCALL hLIBTCPIP,LIBTCPIP.send` ## RETURN VALUE @@ -241,8 +265,8 @@ Set Socket Options ## ASM **In:** -`>PUSHBI opts` -`lda fd` +`>PUSHB fd` +`>PUSHB opts` `>LIBCALL hLIBTCPIP,LIBTCPIP.SetSockOpt` ## RETURN VALUE diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index d32b6355..77908878 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/BIN/ASM.S.txt b/BIN/ASM.S.txt index 2c5afa08..6e61fa18 100644 --- a/BIN/ASM.S.txt +++ b/BIN/ASM.S.txt @@ -244,6 +244,7 @@ CS.RUN.LOOP ldy #S.PS.hStdIn lda (pPS),y >SYSCALL FEOF bcs .99 + tay bne .13 diff --git a/BIN/CMP.S.txt b/BIN/CMP.S.txt index 6c7fd739..02514cb0 100644 --- a/BIN/CMP.S.txt +++ b/BIN/CMP.S.txt @@ -341,8 +341,7 @@ MSG.DIFF .AZ "%H%h:%h %h\r\n" .DUMMY .OR 0 DS.START -DS.END - .ED +DS.END .ED *-------------------------------------- MAN SAVE usr/src/bin/cmp.s diff --git a/BIN/FORTH.S.CP.txt b/BIN/FORTH.S.CP.txt index 41eca26c..92ee9073 100644 --- a/BIN/FORTH.S.CP.txt +++ b/BIN/FORTH.S.CP.txt @@ -55,7 +55,7 @@ CP.PRINT ldy #$ff inc ZPCLBufPtr+1 .3 pla - clc + sec include \0 adc ZPDataPtr sta ZPDataPtr bcc .4 diff --git a/BIN/FORTH.S.KW.txt b/BIN/FORTH.S.KW.txt index 1b6e6d13..0cb69a2e 100644 --- a/BIN/FORTH.S.KW.txt +++ b/BIN/FORTH.S.KW.txt @@ -588,8 +588,7 @@ KW.NEGATIVE inc pStack *-------------------------------------- KW.ZERO clc - ldy #1 - lda (pStack),y + >PULLA ora (pStack) bne .9 @@ -598,7 +597,6 @@ KW.ZERO clc .9 lda #0 ror - inc pStack sta (pStack) * clc @@ -703,7 +701,7 @@ KW.PRINT >LDYAI 256 sta (ZPPtr1),y eor #'" bne .1 - + sec .2 sta (ZPPtr1),y diff --git a/BIN/FORTH.S.txt b/BIN/FORTH.S.txt index 5fb9009c..0b84a036 100644 --- a/BIN/FORTH.S.txt +++ b/BIN/FORTH.S.txt @@ -1048,12 +1048,12 @@ CODE.RPDROP2.L .EQ *-CODE.RPDROP2 *-------------------------------------- CODE.TESTTRUE >PULLA tax -.1 bpl .1+5 +.1 bmi .1+5 CODE.TESTTRUE.L .EQ *-CODE.TESTTRUE *-------------------------------------- CODE.TESTFALSE >PULLA tax -.1 bmi .1+5 +.1 bpl .1+5 CODE.TESTFALSE.L .EQ *-CODE.TESTFALSE *-------------------------------------- CODE.PULLA >PULLA diff --git a/BIN/HTTPGET.S.txt b/BIN/HTTPGET.S.txt index 6287e522..71a685af 100644 --- a/BIN/HTTPGET.S.txt +++ b/BIN/HTTPGET.S.txt @@ -240,15 +240,15 @@ CS.RUN.ARGSOK >PUSHW L.MSG.CONNECT >PUSHBI 8 >SYSCALL PrintF -CS.RUN.OPENSKT >PUSHBI 0 no protocol - lda #S.SOCKET.T.SEQPKT +CS.RUN.OPENSKT >PUSHBI S.SOCKET.T.SEQPKT + >PUSHBI 0 no protocol >LIBCALL hLIBTCPIP,LIBTCPIP.Socket bcs .9 sta hSocket + >PUSHB hSocket >PUSHW L.SA.LOCAL - lda hSocket >LIBCALL hLIBTCPIP,LIBTCPIP.Bind bcc .1 @@ -263,8 +263,8 @@ CS.RUN.OPENSKT >PUSHBI 0 no protocol .2 >SLEEP + >PUSHB hSocket >PUSHW L.SA.REMOTE - lda hSocket >LIBCALL hLIBTCPIP,LIBTCPIP.Connect bcc .3 @@ -463,10 +463,11 @@ CS.RUN.REQUEST jsr Init.TimeOut >SYSCALL SPrintF bcs .90 - >PUSHYA Byte count + pha + >PUSHB hSocket >PUSHW ZPSendBufPtr - - lda hSocket + pla + >PUSHYA Byte count >LIBCALL hLIBTCPIP,LIBTCPIP.Send .90 php diff --git a/BIN/IPCONFIG.S.DHCP.txt b/BIN/IPCONFIG.S.DHCP.txt index 40858165..b0436740 100644 --- a/BIN/IPCONFIG.S.DHCP.txt +++ b/BIN/IPCONFIG.S.DHCP.txt @@ -1,6 +1,5 @@ NEW AUTO 3,1 - .LIST OFF *-------------------------------------- DHCP.INIT lda IPCFG+S.NETCFG.STATUS and #S.IPCFG.STATUS.OK @@ -9,7 +8,7 @@ DHCP.INIT lda IPCFG+S.NETCFG.STATUS stz IPCFG+S.NETCFG.STATUS ldx #3 - + .1 eor A2osX.TIMER16,x sta DHCP.DISC.XID,x sta DHCP.REQ.XID,x @@ -34,42 +33,43 @@ DHCP.INIT lda IPCFG+S.NETCFG.STATUS sec rts *-------------------------------------- -DHCP.RUN >PUSHBI 0 no protocol - lda #S.SOCKET.T.DGRAM +DHCP.RUN >PUSHBI S.SOCKET.T.DGRAM + >PUSHBI 0 no protocol >LIBCALL hLIBTCPIP,LIBTCPIP.Socket bcc .1 .9 jmp DHCP.RUN.KO .1 sta hSocket - pha + >PUSHA >PUSHW L.SA.LOCAL - pla >LIBCALL hLIBTCPIP,LIBTCPIP.Bind bcs .9 >SLEEP - >PUSHWI S.SOCKET.O.BROADCAST - lda hSocket + >PUSHB hSocket + >PUSHBI S.SOCKET.O.BROADCAST >LIBCALL hLIBTCPIP,LIBTCPIP.setsockopt + + >PUSHB hSocket >PUSHW L.SA.REMOTE - lda hSocket >LIBCALL hLIBTCPIP,LIBTCPIP.Connect bcs .9 >LDYA L.MSG.DHCP.CFG1 >SYSCALL PutS - + >SLEEP -DHCP.RUN.SDISC >PUSHW L.SA.DEST - >PUSHWI DHCP.DISC.LEN +DHCP.RUN.SDISC >PUSHB hSocket >PUSHW L.DHCP.DISC - lda hSocket + >PUSHWI DHCP.DISC.LEN + >PUSHW L.SA.DEST >LIBCALL hLIBTCPIP,LIBTCPIP.SendTo bcc .1 + jmp DHCP.RUN.KO .1 lda #S.IPCFG.STATUS.SDISC @@ -77,15 +77,15 @@ DHCP.RUN.SDISC >PUSHW L.SA.DEST DHCP.RUN.ROFFER jsr DHCP.RUN.SKT.RECV bcc .1 - + lda #1 jmp DHCP.RUN.KO - + .1 jsr CheckDHCPOffer bcs DHCP.RUN.ROFFER lda #S.IPCFG.STATUS.ROFFER sta IPCFG - + DHCP.RUN.SREQ >PUSHW L.MSG.DHCP.CFG2 ldx #0 @@ -97,19 +97,19 @@ DHCP.RUN.SREQ >PUSHW L.MSG.DHCP.CFG2 >PUSHBI 4 >SYSCALL PrintF - >PUSHW L.SA.DEST - >PUSHWI DHCP.REQ.LEN + >PUSHB hSocket >PUSHW L.DHCP.REQ - lda hSocket + >PUSHWI DHCP.REQ.LEN + >PUSHW L.SA.DEST >LIBCALL hLIBTCPIP,LIBTCPIP.SendTo bcs DHCP.RUN.KO lda #S.IPCFG.STATUS.SREQ sta IPCFG - + DHCP.RUN.RACK jsr DHCP.RUN.SKT.RECV bcc .1 - + lda #2 bra DHCP.RUN.KO @@ -122,7 +122,7 @@ DHCP.RUN.OK lda #S.IPCFG.STATUS.OK >LIBCALL hLIBTCPIP,LIBTCPIP.SETCFG >PUSHW L.MSG.DHCP.OK - + ldx #0 .1 lda IPCFG+S.IPCFG.IP,x @@ -130,7 +130,7 @@ DHCP.RUN.OK lda #S.IPCFG.STATUS.OK inx cpx #4 bne .1 - + ldx #0 .2 lda IPCFG+S.IPCFG.MASK,x @@ -138,7 +138,7 @@ DHCP.RUN.OK lda #S.IPCFG.STATUS.OK inx cpx #4 bne .2 - + >PUSHBI 8 >SYSCALL PrintF @@ -162,20 +162,20 @@ DHCP.RUN.SKT.RECV sta TimeOut .1 >SLEEP - + lda hSocket >LIBCALL hLIBTCPIP,LIBTCPIP.Recv bcc .8 - + cmp #E.NODATA bne .9 - + lda TimeOut bne .1 - + .9 sec rts - + .8 sta hFrame >SYSCALL GetMemPtr @@ -194,7 +194,7 @@ CheckDHCPOffer jsr CheckDHCPXID bcs .9 lda ZPFrameBase - clc + clc adc #S.DHCP.OPTIONS sta ZPFramePtr @@ -322,7 +322,7 @@ GetDHCPOption cmp #S.DHCP.OPTIONS.MASK sta IPCFG+S.IPCFG.DOMAIN-1,y dex bne .7 - + .9 rts *-------------------------------------- GetDHCPOption.CopyIP @@ -350,7 +350,7 @@ CheckDHCPAck jsr CheckDHCPXID bcs .9 lda ZPFrameBase - clc + clc adc #S.DHCP.OPTIONS sta ZPFramePtr diff --git a/BIN/IPCONFIG.S.ETC.txt b/BIN/IPCONFIG.S.ETC.txt index 0e30a203..b4d40a51 100644 --- a/BIN/IPCONFIG.S.ETC.txt +++ b/BIN/IPCONFIG.S.ETC.txt @@ -1,6 +1,5 @@ NEW AUTO 3,1 - .LIST OFF *-------------------------------------- ETC.ReadFiles >LDYAI 256 >SYSCALL GetMem @@ -20,7 +19,7 @@ ETC.ReadFiles >LDYAI 256 >PUSHW A2osX.TIMER16 >PUSHBI 2 >SYSCALL SPrintF - + .4 >LDYA L.TCPIP.CONF jsr CFG.Read.PrintF jsr CFG.Read.TCPIP.CONF @@ -80,25 +79,25 @@ CFG.Read.TCPIP.CONF jsr CFG.Read.Open jsr CFG.Read.Result bcs .9 - + .1 jsr CFG.Read.GetS bcs .8 - + lda (ZPTmpPtr1) beq .1 empty line... - + cmp #'#' beq .1 comment... - + ldy #$ff .2 iny lda (ZPTmpPtr1),y beq .3 - + cmp #C.SPACE bne .2 - + .3 lda L.CFG.Keywords sta ZPTmpPtr2 lda L.CFG.Keywords+1 @@ -111,36 +110,36 @@ CFG.Read.TCPIP.CONF tya cmp (ZPTmpPtr2) bne .6 - + .5 lda (ZPTmpPtr2),y dey cmp (ZPTmpPtr1),y bne .6 - + tya bne .5 - + ply discard keyword len - + jsr .80 bra .1 - + .6 lda (ZPTmpPtr2) sec adc ZPTmpPtr2 sta ZPTmpPtr2 bcc .7 - + inc ZPTmpPtr2+1 - + .7 inx inx ply reset keyword len lda (ZPTmpPtr2) bne .4 - + bra .1 - + .8 clc .HS B0 BCS .9 sec @@ -161,14 +160,14 @@ CFG.Read.nameserver ldx #S.IPCFG.DNS1 lda IPCFG,x beq CFG.Read.IP - + ldx #S.IPCFG.DNS2 lda IPCFG,x beq CFG.Read.IP - + clc rts - + CFG.Read.IP lda (ZPTmpPtr2) sec adc ZPTmpPtr1 @@ -229,7 +228,7 @@ CFG.Read.HOSTS stz CFG.hBuf2 >STYA ZPTmpPtr2 stx CFG.hBuf2 - + >LDYAI 256 >SYSCALL GetMem bcs .9 @@ -292,12 +291,12 @@ CFG.Read.HOSTS.Scan inx cpx #4 bne .2 - + >PUSHW ZPTmpPtr2 >PUSHW ZPTmpPtr3 - + >PUSHBI 12 6 PTRs on stack - + >SYSCALL SScanF rts *-------------------------------------- diff --git a/BIN/IPCONFIG.S.txt b/BIN/IPCONFIG.S.txt index 0857b4ec..085baf85 100644 --- a/BIN/IPCONFIG.S.txt +++ b/BIN/IPCONFIG.S.txt @@ -139,7 +139,7 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG lda #MLI.E.NODEV sec rts -CS.RUN.SETUP +CS.RUN.SETUP .1 inc ArgIndex lda ArgIndex >SYSCALL ArgV @@ -150,14 +150,14 @@ CS.RUN.SETUP cmp #'-' bne .99 - ldy #1 + ldy #1 lda (ZPTmpPtr1),y ldx #OptionVars-OptionList-1 - + .2 cmp OptionList,x beq .3 - + dex bpl .2 @@ -208,7 +208,7 @@ CS.RUN.SETUP CS.RUN.DUMP >PUSHB IPCFG+S.NETCFG.DevID >PUSHEA.G DIB >SYSCALL GetDevStatus - + >LEA.G DCB.NIC >STYA.G IOCTL+S.IOCTL.BUFPTR lda #S.IOCTL.S.GETDCB @@ -233,33 +233,33 @@ CS.RUN.DUMPNIC >PUSHW L.MSG1.DEV adc /S.FD.DEV >PUSHYA - >PUSHEA.G DIB+S.DIB.IDS + >PUSHEA.G DIB+S.DIB.IDS ldy #DCB.NIC+S.DCB.NIC.MAC ldx #6 .1 lda (pData),y >PUSHA iny - dex + dex bne .1 >PUSHBI 11 - + >SYSCALL PrintF >PUSHW L.MSG1.DEV.ARP - + >LDA.G DCB.NIC+S.DCB.NIC.FLAGS and #S.DCB.NIC.FLAGS.ARPOFFLOAD beq .2 lda #1 .2 >PUSHA - >PUSHBI 1 - + >PUSHBI 1 + >SYSCALL PrintF - + >PUSHW L.MSG1.DEV.IP - + >LDA.G DCB.NIC+S.DCB.NIC.FLAGS and #S.DCB.NIC.FLAGS.IPOFFLOAD @@ -267,9 +267,9 @@ CS.RUN.DUMPNIC >PUSHW L.MSG1.DEV lda #1 .3 - >PUSHA - >PUSHBI 1 - + >PUSHA + >PUSHBI 1 + >SYSCALL PrintF >LDA.G DCB.NIC+S.DCB.NIC.LINK @@ -281,11 +281,11 @@ CS.RUN.DUMPNIC >PUSHW L.MSG1.DEV CS.RUN.LINK >LDYA L.MSG1.LINK.OK >SYSCALL PutS - + >PUSHW L.MSG1.LINKSPEED >PUSHBI 0 >SYSCALL PrintF - + >LDA.G DCB.NIC+S.DCB.NIC.SPEED and #$0F tax @@ -316,30 +316,30 @@ CS.RUN.DUMPIP >PUSHW L.MSG2 .10 >SYSCALL PutS >PUSHW L.MSG2.DHCPSRVR - + ldx #0 .2 >PUSHB IPCFG+S.IPCFG.DHCPSRVR,x inx cpx #4 bne .2 - + >PUSHBI 4 - + >SYSCALL PrintF - + >PUSHW L.MSG2.IPMASK - + ldx #0 IP/MASK .3 >PUSHB IPCFG+S.IPCFG.IP,x inx cpx #8 bne .3 >PUSHBI 8 - + >SYSCALL PrintF - + >PUSHW L.MSG2.GW - + ldx #0 .4 >PUSHB IPCFG+S.IPCFG.GW,x inx @@ -347,25 +347,25 @@ CS.RUN.DUMPIP >PUSHW L.MSG2 bne .4 >PUSHBI 4 >SYSCALL PrintF - + >PUSHW L.MSG2.DNS - + ldx #0 .5 >PUSHB IPCFG+S.IPCFG.DNS1,x inx cpx #8 bne .5 >PUSHBI 8 - + >SYSCALL PrintF - + >PUSHW L.MSG2.HOSTNAME >PUSHW L.IPCFG.HOSTNAME >PUSHW L.IPCFG.DOMAIN - + >PUSHBI 4 >SYSCALL PrintF - lda #0 tell TSKMGR that all done ok, but + lda #0 tell TSKMGR that all done ok, but sec we do not want to stay in memory rts *-------------------------------------- @@ -478,7 +478,7 @@ DHCP.DISC.XID .BS 4 .HS 00000000 CIADDR DHCP.DISC.YIADDR .HS 00000000 .HS 00000000 SIADDR -DHCP.DISC.GIADDR .HS 00000000 +DHCP.DISC.GIADDR .HS 00000000 DHCP.DISC.CHADDR .HS 00000000.00000000.00000000.00000000 .BS 64 SNAME .BS 128 FILE diff --git a/BIN/IRC.S.txt b/BIN/IRC.S.txt index e8d586ee..1c0f7fa4 100644 --- a/BIN/IRC.S.txt +++ b/BIN/IRC.S.txt @@ -263,15 +263,15 @@ CS.RUN.CheckArgs >SYSCALL PrintF rts *-------------------------------------- -CS.RUN.Connect >PUSHBI 0 no protocol - lda #S.SOCKET.T.STREAM +CS.RUN.Connect >PUSHBI S.SOCKET.T.STREAM + >PUSHBI 0 no protocol >LIBCALL hLIBTCPIP,LIBTCPIP.Socket bcs .9 sta hSocket + >PUSHA >PUSHW L.SA.LOCAL - lda hSocket >LIBCALL hLIBTCPIP,LIBTCPIP.Bind bcs .9 @@ -280,8 +280,8 @@ CS.RUN.Connect >PUSHBI 0 no protocol .1 >SLEEP + >PUSHB hSocket >PUSHW L.SA.REMOTE - lda hSocket >LIBCALL hLIBTCPIP,LIBTCPIP.Connect bcc .8 @@ -370,9 +370,9 @@ CS.RUN.GetMsg bit bPendingMsg .10 ldy BufLen bne .2 -.1 >PUSHWI 255 +.1 >PUSHB hSocket >PUSHW ZPBufPtr - lda hSocket + >PUSHWI 255 >LIBCALL hLIBTCPIP,LIBTCPIP.Read bcs .7 @@ -700,9 +700,11 @@ CS.RUN.DUMPMSG >PUSHW L.SEQ.DUMPMSG >SYSCALL PrintF rts *-------------------------------------- -CS.RUN.SendMsg >PUSHYA +CS.RUN.SendMsg pha + >PUSHB hSocket >PUSHW ZPRespPtr - lda hSocket + pla + >PUSHYA >LIBCALL hLIBTCPIP,LIBTCPIP.Write rts *-------------------------------------- diff --git a/BIN/NTPDATE.S.txt b/BIN/NTPDATE.S.txt index 5e6382f8..426ff73d 100644 --- a/BIN/NTPDATE.S.txt +++ b/BIN/NTPDATE.S.txt @@ -204,7 +204,7 @@ CheckArgs.A lda iArg >SYSCALL AToL >PUSHWI 0 >PUSHWI 3600 - >FPU IMUL32 + >FPU uMUL >PULLL Adjust clc @@ -264,20 +264,20 @@ OpenSocket >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG is TCPIP loaded ? sec rts -.3 >PUSHBI S.IP.PROTOCOL.UDP - lda #S.SOCKET.T.DGRAM +.3 >PUSHBI S.SOCKET.T.DGRAM + >PUSHBI S.IP.PROTOCOL.UDP >LIBCALL hLIBTCPIP,LIBTCPIP.Socket bcs .9 sta hSocket + >PUSHA >PUSHW L.SA.LOCAL - lda hSocket >LIBCALL hLIBTCPIP,LIBTCPIP.Bind bcs .9 + >PUSHB hSocket >PUSHW L.SA.REMOTE - lda hSocket >LIBCALL hLIBTCPIP,LIBTCPIP.Connect bcc .8 @@ -289,10 +289,9 @@ OpenSocket >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG is TCPIP loaded ? sec .8 rts *-------------------------------------- -SendNTPRequest >PUSHWI NTP.Request.End-NTP.Request +SendNTPRequest >PUSHB hSocket >PUSHW L.NTP.Request - - lda hSocket + >PUSHWI NTP.Request.End-NTP.Request >LIBCALL hLIBTCPIP,LIBTCPIP.Send bcs .9 diff --git a/BIN/PING.S.txt b/BIN/PING.S.txt index 49d9ec73..f04bacca 100644 --- a/BIN/PING.S.txt +++ b/BIN/PING.S.txt @@ -191,20 +191,20 @@ CS.RUN.OPENSKT ldx #3 >STA.G SA.REMOTE+S.SOCKADDR.PORT+1 sta Identifier+1 + >PUSHBI S.SOCKET.T.RAW >PUSHBI S.IP.PROTOCOL.ICMP - lda #S.SOCKET.T.RAW >LIBCALL hLIBTCPIP,LIBTCPIP.Socket bcs .9 sta hSocket + >PUSHB hSocket >PUSHEA.G SA.LOCAL - lda hSocket >LIBCALL hLIBTCPIP,LIBTCPIP.Bind bcs .9 + >PUSHB hSocket >PUSHEA.G SA.REMOTE - lda hSocket >LIBCALL hLIBTCPIP,LIBTCPIP.Connect bcc CS.RUN.SEND.ECHO @@ -236,10 +236,9 @@ CS.RUN.SEND.ECHO dey sta (pData),y - >PUSHWI ICMP.RequestLen + >PUSHB hSocket >PUSHW pData - lda hSocket - + >PUSHWI ICMP.RequestLen >LIBCALL hLIBTCPIP,LIBTCPIP.Send bcs CS.RUN.ERR diff --git a/BIN/TELNET.S.txt b/BIN/TELNET.S.txt index 76824fb2..84545a02 100644 --- a/BIN/TELNET.S.txt +++ b/BIN/TELNET.S.txt @@ -41,7 +41,7 @@ CS.START cld *-------------------------------------- .1 .DA CS.INIT .DA CS.RUN - .DA CS.DOEVENT + .DA CS.DOEVENT .DA CS.QUIT L.LIBTCPIP .DA LIBTCPIP L.SA.LOCAL .DA SA.LOCAL @@ -69,7 +69,7 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG is TCPIP loaded ? >STYA ZPIPCfgPtr lda (ZPIPCfgPtr) Configured ? bmi CS.RUN.IPOK - + >LDYA L.MSG.IPKO >SYSCALL PutS lda #E.SYN @@ -92,7 +92,7 @@ CS.RUN.IPOK ldy #S.PS.ARGC sta TimeOut .2 >SLEEP - + >PUSHW L.SA.REMOTE.AD lda #1 >SYSCALL ArgV @@ -135,19 +135,19 @@ CS.RUN.PORTOK >PUSHW L.MSG.HOSTOK lda #1 >SYSCALL ArgV >PUSHYA - + >PUSHBI 8 >SYSCALL PrintF - -CS.RUN.OPENSKT >PUSHBI 0 no protocol - lda #S.SOCKET.T.STREAM + +CS.RUN.OPENSKT >PUSHBI S.SOCKET.T.STREAM + >PUSHBI 0 no protocol >LIBCALL hLIBTCPIP,LIBTCPIP.Socket bcs .9 sta hSocket + >PUSHA >PUSHW L.SA.LOCAL - lda hSocket >LIBCALL hLIBTCPIP,LIBTCPIP.Bind bcc .2 @@ -162,29 +162,29 @@ CS.RUN.OPENSKT >PUSHBI 0 no protocol sta TimeOut .3 >SLEEP - + + >PUSHB hSocket >PUSHW L.SA.REMOTE - lda hSocket >LIBCALL hLIBTCPIP,LIBTCPIP.Connect bcc .4 - + cmp #ERR.SKT.NOCONN bne .9 - + lda TimeOut bne .3 - + lda #ERR.SKT.NOCONN bra .9 - + .4 >PUSHW L.MSG.SKTOK >PUSHBI 0 >SYSCALL PrintF - + >LDYAI BUFSIZE >SYSCALL GetMem bcs .99 - + >STYA ZPBufPtr stx hBuf @@ -197,23 +197,20 @@ CS.RUN.LOOP >SLEEP tay bne .2 EOF, no char - >PUSHWI BUFSIZE + >PUSHB hSocket >PUSHW ZPBufPtr - lda hSocket + >PUSHWI BUFSIZE >LIBCALL hLIBTCPIP,LIBTCPIP.Read .98 bcs .99 - pha - phy - + >STYA ZPBufLen + ldy #S.PS.hStdOut lda (pPS),y >PUSHA >PUSHW ZPBufPtr - ply - pla - >PUSHYA len + >PUSHW ZPBufLen >SYSCALL FWrite bcs .11 @@ -229,7 +226,7 @@ CS.RUN.LOOP >SLEEP lda (pPS),y >PUSHA >PUSHW ZPBufPtr - >PUSHWI BUFSIZE + >PUSHWI BUFSIZE >SYSCALL FRead .11 bcc .3 @@ -237,13 +234,14 @@ CS.RUN.LOOP >SLEEP .99 bra CS.RUN.SKTERR .3 >STYA ZPBufLen + lda (ZPBufPtr) cmp #$14 Ctrl-T beq CS.RUN.USER - >PUSHW ZPBufLen + >PUSHB hSocket >PUSHW ZPBufPtr - lda hSocket + >PUSHW ZPBufLen >LIBCALL hLIBTCPIP,LIBTCPIP.Write .9 bcs CS.RUN.SKTERR diff --git a/BIN/TERM.S.txt b/BIN/TERM.S.txt index 2b4aea2c..dae81213 100644 --- a/BIN/TERM.S.txt +++ b/BIN/TERM.S.txt @@ -15,6 +15,7 @@ BUFSIZE .EQ 256 .OR ZPBIN ZS.START ZPBufPtr .BS 2 +ZPDataLen .BS 2 hBuf .BS 1 hDev .BS 1 TimeOut .BS 1 @@ -81,27 +82,19 @@ CS.RUN.LOOP >SLEEP lda hDev >SYSCALL FEOF - bcs CS.RUN.RTS + bcs .9 tay bne .1 EOF, no char - >PUSHB hDev - >PUSHW ZPBufPtr - >PUSHWI BUFSIZE - >SYSCALL FRead + lda hDev + jsr CS.Read bcs CS.RUN.RTS - pha - phy + >STYA ZPDataLen ldy #S.PS.hStdOut lda (pPS),y - >PUSHA - >PUSHW ZPBufPtr - ply - pla - >PUSHYA len - >SYSCALL FWrite + jsr CS.Write bcs .9 .1 ldy #S.PS.hStdIn @@ -114,33 +107,33 @@ CS.RUN.LOOP >SLEEP ldy #S.PS.hStdIn lda (pPS),y - >PUSHA + jsr CS.Read + bcs .9 + + >STYA ZPDataLen + + lda (ZPBufPtr) + eor #$14 Ctrl-T + clc + beq .9 exit with A=0,CC + + lda hDev + jsr CS.Write + bcc CS.RUN.LOOP + +.9 rts +*-------------------------------------- +CS.Read >PUSHA >PUSHW ZPBufPtr >PUSHWI BUFSIZE >SYSCALL FRead - bcs .9 - - tax - lda (ZPBufPtr) - eor #$14 Ctrl-T - beq .8 - - txa - - pha - phy - >PUSHB hDev + rts +*-------------------------------------- +CS.Write >PUSHA >PUSHW ZPBufPtr - ply - pla - >PUSHYA len + >PUSHW ZPDataLen >SYSCALL FWrite - bcs .9 - - jmp CS.RUN.LOOP - -.8 sec -.9 rts + rts *-------------------------------------- CS.DOEVENT lda (pEvent) bpl .9 is it a TIMER event? @@ -172,8 +165,7 @@ MSG.DEVOK .AZ "Connected (Exit key is Ctrl-T)" .DUMMY .OR 0 DS.START -DS.END - .ED +DS.END .ED *-------------------------------------- MAN SAVE usr/src/bin/term.s diff --git a/BIN/WC.S.txt b/BIN/WC.S.txt index 45113ef7..98f7a10b 100644 --- a/BIN/WC.S.txt +++ b/BIN/WC.S.txt @@ -96,9 +96,11 @@ CS.RUN inc ArgIndex .4 >LDA.G hSrcBasePath bne .9 + >LDYA ZPPtr1 jsr InitSrcDirYA bcc CS.RUN + .99 rts *-------------------------------------- .5 lda bChar @@ -129,6 +131,7 @@ CS.RUN inc ArgIndex .6 >LDYAI 256 >SYSCALL GetMem bcs .99 + >STYA ZPFullPath stx hSrcFullPath @@ -153,6 +156,7 @@ CS.RUN inc ArgIndex >LDYAI 256 >SYSCALL GetMem bcs .99 + >STYA ZPLineBuf stx hMem *-------------------------------------- @@ -160,12 +164,16 @@ CS.RUN.LOOP ldy #S.PS.hStdIn lda (pPS),y >SYSCALL FEOF bcs .99 + tay bne .10 + >SYSCALL GetChar bcs .99 + cmp #$03 Ctrl-C beq .99 Abort.... + cmp #$13 Ctrl-S bne .10 @@ -173,16 +181,20 @@ CS.RUN.LOOP ldy #S.PS.hStdIn eor #$ff sta bPause bne CS.RUN.LOOP + .10 lda bPause bne CS.RUN.LOOP Pause... jsr GetEntry bcs .9 + ldy #S.STAT.P.DRIVE lda (ZPFileStat),y ProDOS Device ? beq .5 + jsr CS.RUN.DEV bcc CS.RUN.LOOP + rts .5 ldy #S.STAT.MODE+1 @@ -193,9 +205,12 @@ CS.RUN.LOOP ldy #S.PS.hStdIn jsr CS.RUN.DIR bcs .99 + bra .8 + .6 jsr CS.RUN.FILE bcs .99 + bra .8 .9 jsr LeaveSubDir @@ -213,6 +228,7 @@ CS.RUN.LOOP ldy #S.PS.hStdIn CS.RUN.PIPE >LDYAI 256 >SYSCALL GetMem bcs .99 + >STYA ZPLineBuf stx hMem @@ -268,6 +284,7 @@ CS.RUN.FILE jsr FilterMatch jsr CS.RUN.AddFstat2Tstat lda bTotal bmi .8 + beq .61 lda #$fe @@ -283,6 +300,7 @@ CS.RUN.FILE jsr FilterMatch pla sec .9 jmp CS.RUN.CheckErr + .99 rts *-------------------------------------- CS.RUN.FILE.LOOP @@ -308,6 +326,7 @@ CS.RUN.FILE.LOOP .21 cmp #C.SPACE beq .3 + cmp #C.TAB bne .4 @@ -325,6 +344,7 @@ CS.RUN.FILE.LOOP .8 cmp #MLI.E.EOF bne .9 + clc rts @@ -332,6 +352,7 @@ CS.RUN.FILE.LOOP rts *-------------------------------------- CS.RUN.CheckErr bcc .9 + pha >PUSHW L.MSG.ERR >PUSHA @@ -341,6 +362,7 @@ CS.RUN.CheckErr bcc .9 eor #$80 asl pla + .9 rts *-------------------------------------- CS.RUN.GetFilePath @@ -413,17 +435,17 @@ CS.RUN.IncF lda (pData),y CS.RUN.AddFstat2Tstat >PUSHL.G fWordCount >PUSHL.G tWordCount - >FPU ADD32 + >FPU uADD >PULLL.G tWordCount >PUSHL.G fLineCount >PUSHL.G tLineCount - >FPU ADD32 + >FPU uADD >PULLL.G tLineCount >PUSHL.G fCharCount >PUSHL.G tCharCount - >FPU ADD32 + >FPU uADD >PULLL.G tCharCount rts *-------------------------------------- @@ -558,6 +580,7 @@ CS.RUN.CheckOpt ldy #1 .2 cmp OptionList,x beq .3 + dex bpl .2 diff --git a/INC/MACROS.I.txt b/INC/MACROS.I.txt index 7c44322a..9ad7d398 100644 --- a/INC/MACROS.I.txt +++ b/INC/MACROS.I.txt @@ -128,7 +128,7 @@ NEW .EM *-------------------------------------- * FPU Entry Point -*-------------------------------------- +*-------------------------------------- uint16 FPU.wMUL .EQ 0 FPU.wDIV .EQ 2 FPU.wMOD .EQ 4 @@ -152,7 +152,7 @@ FPU.wxOR .EQ 30 FPU.wLAND .EQ 32 FPU.wLOR .EQ 34 -*-------------------------------------- +*-------------------------------------- int16 FPU.iMUL .EQ 36 FPU.iDIV .EQ 38 FPU.iMOD .EQ 40 @@ -176,7 +176,7 @@ FPU.iXOR .EQ 66 FPU.iLAND .EQ 68 FPU.iLOR .EQ 70 -*-------------------------------------- +*-------------------------------------- uint32 FPU.uMUL .EQ 72 FPU.uDIV .EQ 74 FPU.uMOD .EQ 76 @@ -200,7 +200,7 @@ FPU.uXOR .EQ 102 FPU.uLAND .EQ 104 FPU.uLOR .EQ 106 -*-------------------------------------- +*-------------------------------------- int32 FPU.lMUL .EQ 108 FPU.lDIV .EQ 110 FPU.lMOD .EQ 112 @@ -224,7 +224,7 @@ FPU.lXOR .EQ 138 FPU.lLAND .EQ 140 FPU.lLOR .EQ 142 -*-------------------------------------- +*-------------------------------------- float FPU.fMUL .EQ 144 FPU.fDIV .EQ 146 FPU.fMOD .EQ 148 diff --git a/LIB/LIBCIFS.S.IO.txt b/LIB/LIBCIFS.S.IO.txt new file mode 100644 index 00000000..afafb627 --- /dev/null +++ b/LIB/LIBCIFS.S.IO.txt @@ -0,0 +1,571 @@ +NEW + AUTO 3,1 +*-------------------------------------- +CIFS.ChTyp +CIFS2.ChTyp +*-------------------------------------- +CIFS.ChMod +CIFS2.ChMod +*-------------------------------------- +CIFS.FStat +*-------------------------------------- +CIFS2.FStat lda #MLI.E.BADCALL + sec + rts +*-------------------------------------- +CIFS.Stat >STYA pPath resolved path + + jsr ClearSocket + jsr MakeTrans2Reg + + ldx #0 + +.1 lda SMB.QueryPathInfo,x + sta (ZPReqPtr),y + iny + inx + cpx #SMB.QueryPathInfo.Len + bne .1 + + jsr AppendPath + + lda #0 + sta (ZPReqPtr),y + iny + + jsr SetT2ReqLenYA + + pha + >PUSHB MountTable+3 hSocket + >PUSHW ZPReqPtr + + pla + >PUSHYA + + ldx #LIBTCPIP.Send + jsr GO.LIBTCPIP + bcs .9 + + jmp Sleep + +.9 >RET 4 +*-------------------------------------- +CIFS2.Stat jsr ReadSocket + bcs .9 + + jsr GetRespData + + ldy #S.NETBIOS+S.SMB.H.STATUS + lda (ZPRespPtr),y + beq .1 + + lda #MLI.E.FNOTFND + bra .99 + +.1 >PULLW ZPPtr2 Stat Buffer + + inc pStack Skip Filename + inc pStack + + jsr GetRespDataOffset + jsr FileInfo2StatBuf + jsr StatBuf2Ptr2 + + lda hResp + >SYSCALL2 FreeMem + + stz CIFS.Status + clc + rts + +.9 cmp #E.NODATA + bne .9 + + dec CIFS.Retries + beq .90 + + lda #0 + sec + rts + +.90 lda #MLI.E.IO + +.99 sec + stz CIFS.Status + >RET 4 +*-------------------------------------- +CIFS.MKDir >STYA pPath resolved path + + jsr MakeTrans2Reg + + ldx #0 + +.1 lda SMB.CreateDirectory,x + sta (ZPReqPtr),y + iny + inx + cpx #SMB.CreateDirectory.Len + bne .1 + + jsr AppendPath + + lda #0 + sta (ZPReqPtr),y + iny + + jsr SetT2ReqLenYA + + pha + >PUSHB MountTable+3 hSocket + >PUSHW ZPReqPtr + pla + >PUSHYA + + ldx #LIBTCPIP.Send + jsr GO.LIBTCPIP + bcs .9 + + jmp Sleep + +.9 >RET 4 +*-------------------------------------- +CIFS2.MKDir jsr ReadSocket + bcs .9 + + jsr GetRespData + + ldy #S.NETBIOS+S.SMB.H.STATUS + lda (ZPRespPtr),y + clc + beq .8 + + lda #MLI.E.DUPFILE + sec + +.8 jsr FreeRespData + + stz CIFS.Status + >RET 4 + +.9 cmp #E.NODATA + bne .99 + + dec CIFS.Retries + beq .98 + + lda #0 + sec + rts + +.98 lda #MLI.E.IO + +.99 sec + stz CIFS.Status + >RET 4 +*-------------------------------------- +CIFS.OpenDir >STYA pPath resolved path + + >LDYAI S.FD.DIR + >SYSCALL2 GetMem + bcs .9 + + >STYA ZPPtr2 + + lda #S.FD.T.DIR + sta (ZPPtr2) + + lda hHandler + ldy #S.FD.PFT + sta (ZPPtr2),y + + lda #0 + ldy #S.FD.DIR.EPB + sta (ZPPtr2),y EOF Flag + iny + sta (ZPPtr2),y + iny + sta (ZPPtr2),y + + >PUSHW pPath + >PUSHWI 0 + txa + >PUSHA + >SYSCALL2 mknod + +.9 rts +*-------------------------------------- +CIFS2.OpenDir lda #MLI.E.BADCALL + sec + rts +*-------------------------------------- +CIFS.ReadDir jsr GetPFD + + jsr ClearSocket + + ldy #S.FD.DIR.EPB + lda (pFD),y + beq .1 + + lda #MLI.E.EOF + sec + rts + +.1 iny + lda (pFD),y + iny + ora (pFD),y + bne CIFS.ReadDir.Next + + jsr MakeTrans2Reg + + ldx #0 + +.2 lda SMB.FindFirst2,x + sta (ZPReqPtr),y + iny + inx + cpx #SMB.FindFirst2.Len + bne .2 + + bra CIFS.ReadDir.Send + +CIFS.ReadDir.Next + jsr MakeTrans2Reg + + ldx #0 + +.2 lda SMB.FindNext2,x + sta (ZPReqPtr),y + iny + inx + cpx #SMB.FindNext2.Len + bne .2 + + phy + + ldy #S.FD.DIR.FC+1 + lda (pFD),y + tax + dey + lda (pFD),y + + ldy #S.NETBIOS+S.SMB.H+SMB.Trans2.H.Len+7 Search ID + sta (ZPReqPtr),y + txa + iny + sta (ZPReqPtr),y + + ply +CIFS.ReadDir.Send + lda (pPath) + beq .1 + + jsr AppendPath + + lda #'\' + sta (ZPReqPtr),y + iny + +.1 lda #'*' + sta (ZPReqPtr),y + iny + lda #0 + sta (ZPReqPtr),y + iny + + jsr SetT2ReqLenYA + + pha + + >PUSHB MountTable+3 hSocket + >PUSHW ZPReqPtr + pla + >PUSHYA + + ldx #LIBTCPIP.Send + jsr GO.LIBTCPIP + bcs .9 + + jmp Sleep + +.9 rts +*-------------------------------------- +CIFS2.ReadDir jsr GetPFD + + jsr ReadSocket + bcs .90 + + jsr GetRespData + + ldy #S.NETBIOS+S.SMB.H.STATUS + lda (ZPRespPtr),y + beq .1 + +.91 sec + lda #MLI.E.IO + bra .9 + +.1 ldy #S.FD.DIR.FC + lda (pFD),y + iny + ora (pFD),y + sta bFlag + bne .2 + + ldy #S.NETBIOS+S.SMB.H+S.TRANS2.H+1 Search ID + lda (ZPRespPtr),y + tax + dey + ora (ZPRespPtr),y + beq .91 + + lda (ZPRespPtr),y + + ldy #S.FD.DIR.FC + sta (pFD),y + iny + txa + sta (pFD),y + +.2 jsr GetRespDataOffset + jsr CIFS2.ReadDir.GetBuf + bcs .9 + + jsr GetRespDataOffset + jsr CIFS2.ReadDir.FillBuf + + lda hResp + >SYSCALL2 FreeMem + + >LDYA BufPtr + ldx hBuf + + stz CIFS.Status + clc + rts + +.9 stz CIFS.Status + + jmp FreeRespData + +.90 cmp #E.NODATA + bne .99 + + dec CIFS.Retries + beq .98 + + lda #0 + sec + rts + +.98 lda #MLI.E.IO + +.99 stz CIFS.Status + sec + rts +*-------------------------------------- +CIFS2.ReadDir.GetBuf + ldy #S.NETBIOS+S.SMB.H+S.TRANS2.H Search Count + lda bFlag + bne .10 + + iny + iny + +.10 iny + iny + lda (ZPRespPtr),y End Of Search + phy + ldy #S.FD.DIR.EPB + sta (pFD),y + ply + + dey + dey + + lda (ZPRespPtr),y Search Count + beq .99 + tax + + lda #1 +Ending 0 + sta ZPPtr2 + stz ZPPtr2+1 + +.1 lda ZPPtr2 + clc + adc #S.STAT + sta ZPPtr2 + bcc .2 + + inc ZPPtr2+1 + +.2 lda ZPPtr1 + clc + adc #22 + sta ZPPtr1 + bcc .3 + + inc ZPPtr1+1 + +.3 lda (ZPPtr1) Filename Len + pha + sec + adc ZPPtr2 + sta ZPPtr2 + bcc .4 + + inc ZPPtr2+1 + +.4 pla + inc + sec + adc ZPPtr1 + sta ZPPtr1 + bcc .5 + + inc ZPPtr1+1 + +.5 dex + bne .1 + + >LDYA ZPPtr2 + >SYSCALL2 GetMem + bcs .9 + + >STYA BufPtr + >STYA ZPPtr2 + stx hBuf + +.9 rts + +.99 lda #MLI.E.EOF + sec + rts +*-------------------------------------- +CIFS2.ReadDir.FillBuf + ldy #S.NETBIOS+S.SMB.H+S.TRANS2.H Search Count + lda bFlag + bne .10 + + iny + iny + +.10 lda (ZPRespPtr),y + tax + +.1 jsr FileInfo2StatBuf + + lda ZPPtr1 + sec skip Filename Len + adc #22 + sta ZPPtr1 + bcc .2 + + inc ZPPtr1+1 + +.2 ldy #$ff + +.3 iny + lda (ZPPtr1),y + sta (ZPPtr2),y + bne .3 + + tya + sec + adc ZPPtr1 + sta ZPPtr1 + bcc .4 + + inc ZPPtr1+1 + +.4 tya + sec + adc ZPPtr2 + sta ZPPtr2 + bcc .5 + + inc ZPPtr2+1 + +.5 jsr StatBuf2Ptr2 + + lda #S.STAT + clc + adc ZPPtr2 + sta ZPPtr2 + bcc .7 + + inc ZPPtr2+1 + +.7 dex + bne .1 + + lda #0 + sta (ZPPtr2) + + rts +*-------------------------------------- +CIFS.CloseDir tax + + lda Nod.Table.hName-2,x + beq .1 + + phx + + stz Nod.Table.hName-2,x + >SYSCALL2 FreeMem + + plx + +.1 lda Nod.Table.hFD-2,x + stz Nod.Table.hFD-2,x + >SYSCALL2 FreeMem + + stz CIFS.Status + clc + rts +*-------------------------------------- +CIFS2.CloseDir lda #MLI.E.INVPATH + sec + rts +*-------------------------------------- +CIFS.ChOwn +CIFS2.ChOwn + lda #MLI.E.BADCALL + sec + rts +*-------------------------------------- +CIFS.FOpen + + +CIFS2.FOpen + + lda #MLI.E.BADCALL + sec + rts +*-------------------------------------- +CIFS.FClose +CIFS2.FClose +CIFS.FRead +CIFS2.FRead +CIFS.FWrite +CIFS2.FWrite +CIFS.FFlush +CIFS2.FFlush +CIFS.FSeek +CIFS2.FSeek +CIFS.FTell +CIFS2.FTell +CIFS.FEOF +CIFS2.FEOF +CIFS.Remove +CIFS2.Remove +CIFS.Rename +CIFS2.Rename + lda #MLI.E.BADCALL + sec + rts +*-------------------------------------- +MAN +SAVE usr/src/lib/libcifs.io.s +LOAD usr/src/lib/libcifs.s +ASM diff --git a/LIB/LIBCIFS.S.txt b/LIB/LIBCIFS.S.txt index fd79653f..b46ce19e 100644 --- a/LIB/LIBCIFS.S.txt +++ b/LIB/LIBCIFS.S.txt @@ -62,33 +62,79 @@ J.CIFS .DA CIFS.ChTyp .DA CIFS.FStat .DA CIFS.Stat .DA CIFS.MKDir - .DA CIFS.MKNod - .DA CIFS.MKFIFO - .DA CIFS.Pipe + .DA CIFS.BADCALL MKNod + .DA CIFS.BADCALL MKFIFO + .DA CIFS.BADCALL Pipe + .DA CIFS.OpenDir .DA CIFS.ReadDir .DA CIFS.CloseDir - .DA CIFS.Open - .DA CIFS.Close - .DA CIFS.Read - .DA CIFS.Write + + .DA CIFS.BADCALL Open + .DA CIFS.BADCALL Close + .DA CIFS.BADCALL Read + .DA CIFS.BADCALL Write .DA CIFS.ChOwn + + .DA CIFS.BADCALL + .DA CIFS.BADCALL + .DA CIFS.BADCALL + .DA CIFS.BADCALL + .DA CIFS.BADCALL + .DA CIFS.BADCALL + .DA CIFS.BADCALL + .DA CIFS.BADCALL + + .DA CIFS.FOpen + .DA CIFS.FClose + .DA CIFS.FRead + .DA CIFS.FWrite + .DA CIFS.FFlush + .DA CIFS.FSeek + .DA CIFS.FTell + .DA CIFS.FEOF + .DA CIFS.Remove + .DA CIFS.Rename +*-------------------------------------- J.CIFS2 .DA CIFS2.ChTyp .DA CIFS2.ChMod .DA CIFS2.FStat .DA CIFS2.Stat .DA CIFS2.MKDir - .DA CIFS2.MKNod - .DA CIFS2.MKFIFO - .DA CIFS2.Pipe + .DA CIFS.BADCALL MKNod + .DA CIFS.BADCALL MKFIFO + .DA CIFS.BADCALL Pipe + .DA CIFS2.OpenDir .DA CIFS2.ReadDir .DA CIFS2.CloseDir - .DA CIFS2.Open - .DA CIFS2.Close - .DA CIFS2.Read - .DA CIFS2.Write + + .DA CIFS.BADCALL Open + .DA CIFS.BADCALL Close + .DA CIFS.BADCALL Read + .DA CIFS.BADCALL Write .DA CIFS2.ChOwn + + .DA CIFS.BADCALL FPutC... + .DA CIFS.BADCALL + .DA CIFS.BADCALL + .DA CIFS.BADCALL + .DA CIFS.BADCALL + .DA CIFS.BADCALL + .DA CIFS.BADCALL + .DA CIFS.BADCALL ...UngetC + + .DA CIFS2.FOpen + .DA CIFS2.FClose + .DA CIFS2.FRead + .DA CIFS2.FWrite + .DA CIFS2.FFlush + .DA CIFS2.FSeek + .DA CIFS2.FTell + .DA CIFS2.FEOF + .DA CIFS2.Remove + .DA CIFS2.Rename +*-------------------------------------- L.LIBTCPIP .DA LIBTCPIP L.NETBIOS .DA NETBIOS .DA 0 @@ -134,10 +180,11 @@ CIFS.Negotiate lda (pStack) dec sta (pStack) - >PUSHWI SMB.NegReq.end-NETBIOS - >PUSHW L.NETBIOS - ldy #1+4 hSocket + ldy #1 hSocket lda (pStack),y + >PUSHA + >PUSHW L.NETBIOS + >PUSHWI SMB.NegReq.end-NETBIOS ldx #LIBTCPIP.Send jsr GO.LIBTCPIP @@ -266,10 +313,17 @@ CIFS.SessionSetup jsr SetReqLenYAtA - >PUSHYA - >PUSHW ZPReqPtr - ldy #6+4 hSocket + phy + pha + + ldy #6 hSocket lda (pStack),y + >PUSHA + >PUSHW ZPReqPtr + + pla + ply + >PUSHYA ldx #LIBTCPIP.Send jsr GO.LIBTCPIP @@ -391,10 +445,17 @@ CIFS.TreeConnect jsr SetReqLenYAtA - >PUSHYA - >PUSHW ZPReqPtr - ldy #4+4 hSocket + phy + pha + + ldy #4 hSocket lda (pStack),y + >PUSHA + >PUSHW ZPReqPtr + + pla + ply + >PUSHYA ldx #LIBTCPIP.Send jsr GO.LIBTCPIP @@ -504,556 +565,7 @@ CIFS.CallBack bit CIFS.Status ply jmp (J.CIFS2,x) *-------------------------------------- -CIFS.ChTyp -CIFS2.ChTyp -*-------------------------------------- -CIFS.ChMod -CIFS2.ChMod -*-------------------------------------- -CIFS.FStat -*-------------------------------------- -CIFS2.FStat lda #MLI.E.BADCALL - sec - rts -*-------------------------------------- -CIFS.Stat >STYA pPath resolved path - - jsr ClearSocket - jsr MakeTrans2Reg - - ldx #0 - -.1 lda SMB.QueryPathInfo,x - sta (ZPReqPtr),y - iny - inx - cpx #SMB.QueryPathInfo.Len - bne .1 - - jsr AppendPath - - lda #0 - sta (ZPReqPtr),y - iny - - jsr SetT2ReqLenYA - - >PUSHYA - >PUSHW ZPReqPtr - lda MountTable+3 hSocket - - ldx #LIBTCPIP.Send - jsr GO.LIBTCPIP - bcs .9 - - jmp Sleep - -.9 >RET 4 -*-------------------------------------- -CIFS2.Stat jsr ReadSocket - bcs .9 - - jsr GetRespData - - ldy #S.NETBIOS+S.SMB.H.STATUS - lda (ZPRespPtr),y - beq .1 - - lda #MLI.E.FNOTFND - bra .99 - -.1 >PULLW ZPPtr2 Stat Buffer - - inc pStack Skip Filename - inc pStack - - jsr GetRespDataOffset - jsr FileInfo2StatBuf - jsr StatBuf2Ptr2 - - lda hResp - >SYSCALL2 FreeMem - - stz CIFS.Status - clc - rts - -.9 cmp #E.NODATA - bne .9 - - dec CIFS.Retries - beq .90 - - lda #0 - sec - rts - -.90 lda #MLI.E.IO - -.99 sec - stz CIFS.Status - >RET 4 -*-------------------------------------- -CIFS.MKDir >STYA pPath resolved path - - jsr MakeTrans2Reg - - ldx #0 - -.1 lda SMB.CreateDirectory,x - sta (ZPReqPtr),y - iny - inx - cpx #SMB.CreateDirectory.Len - bne .1 - - jsr AppendPath - - lda #0 - sta (ZPReqPtr),y - iny - - jsr SetT2ReqLenYA - - >PUSHYA - >PUSHW ZPReqPtr - lda MountTable+3 hSocket - - ldx #LIBTCPIP.Send - jsr GO.LIBTCPIP - bcs .9 - - jmp Sleep - -.9 >RET 4 -*-------------------------------------- -CIFS2.MKDir jsr ReadSocket - bcs .9 - - jsr GetRespData - - ldy #S.NETBIOS+S.SMB.H.STATUS - lda (ZPRespPtr),y - clc - beq .8 - - lda #MLI.E.DUPFILE - sec - -.8 jsr FreeRespData - - stz CIFS.Status - >RET 4 - -.9 cmp #E.NODATA - bne .99 - - dec CIFS.Retries - beq .98 - - lda #0 - sec - rts - -.98 lda #MLI.E.IO - -.99 sec - stz CIFS.Status - >RET 4 -*-------------------------------------- -CIFS.MKNod -CIFS2.MKNod -*-------------------------------------- -CIFS.MKFIFO -CIFS2.MKFIFO -*-------------------------------------- -CIFS.Pipe -CIFS2.Pipe lda #MLI.E.BADCALL - sec - rts -*-------------------------------------- -CIFS.OpenDir >STYA pPath resolved path - - >LDYAI S.FD.DIR - >SYSCALL2 GetMem - bcs .9 - - >STYA ZPPtr2 - - lda #S.FD.T.DIR - sta (ZPPtr2) - - lda hHandler - ldy #S.FD.HANDLER - sta (ZPPtr2),y - - lda #0 - ldy #S.FD.DIR.EPB - sta (ZPPtr2),y EOF Flag - iny - sta (ZPPtr2),y - iny - sta (ZPPtr2),y - - >PUSHW pPath - >PUSHWI 0 - txa - >PUSHA - >SYSCALL2 mknod - -.9 rts -*-------------------------------------- -CIFS2.OpenDir lda #MLI.E.BADCALL - sec - rts -*-------------------------------------- -CIFS.ReadDir jsr GetPFD - - jsr ClearSocket - - ldy #S.FD.DIR.EPB - lda (pFD),y - beq .1 - - lda #MLI.E.EOF - sec - rts - -.1 iny - lda (pFD),y - iny - ora (pFD),y - bne CIFS.ReadDir.Next - - jsr MakeTrans2Reg - - ldx #0 - -.2 lda SMB.FindFirst2,x - sta (ZPReqPtr),y - iny - inx - cpx #SMB.FindFirst2.Len - bne .2 - - bra CIFS.ReadDir.Send - -CIFS.ReadDir.Next - jsr MakeTrans2Reg - - ldx #0 - -.2 lda SMB.FindNext2,x - sta (ZPReqPtr),y - iny - inx - cpx #SMB.FindNext2.Len - bne .2 - - phy - - ldy #S.FD.DIR.FC+1 - lda (pFD),y - tax - dey - lda (pFD),y - - ldy #S.NETBIOS+S.SMB.H+SMB.Trans2.H.Len+7 Search ID - sta (ZPReqPtr),y - txa - iny - sta (ZPReqPtr),y - - ply -CIFS.ReadDir.Send - lda (pPath) - beq .1 - - jsr AppendPath - - lda #'\' - sta (ZPReqPtr),y - iny - -.1 lda #'*' - sta (ZPReqPtr),y - iny - lda #0 - sta (ZPReqPtr),y - iny - - jsr SetT2ReqLenYA - - >PUSHYA - >PUSHW ZPReqPtr - lda MountTable+3 hSocket - - ldx #LIBTCPIP.Send - jsr GO.LIBTCPIP - bcs .9 - - jmp Sleep - -.9 rts -*-------------------------------------- -CIFS2.ReadDir jsr GetPFD - - jsr ReadSocket - bcs .90 - - jsr GetRespData - - ldy #S.NETBIOS+S.SMB.H.STATUS - lda (ZPRespPtr),y - beq .1 - -.91 sec - lda #MLI.E.IO - bra .9 - -.1 ldy #S.FD.DIR.FC - lda (pFD),y - iny - ora (pFD),y - sta bFlag - bne .2 - - ldy #S.NETBIOS+S.SMB.H+S.TRANS2.H+1 Search ID - lda (ZPRespPtr),y - tax - dey - ora (ZPRespPtr),y - beq .91 - - lda (ZPRespPtr),y - - ldy #S.FD.DIR.FC - sta (pFD),y - iny - txa - sta (pFD),y - -.2 jsr GetRespDataOffset - jsr CIFS2.ReadDir.GetBuf - bcs .9 - - jsr GetRespDataOffset - jsr CIFS2.ReadDir.FillBuf - - lda hResp - >SYSCALL2 FreeMem - - >LDYA BufPtr - ldx hBuf - - stz CIFS.Status - clc - rts - -.9 stz CIFS.Status - - jmp FreeRespData - -.90 cmp #E.NODATA - bne .99 - - dec CIFS.Retries - beq .98 - - lda #0 - sec - rts - -.98 lda #MLI.E.IO - -.99 stz CIFS.Status - sec - rts -*-------------------------------------- -CIFS2.ReadDir.GetBuf - ldy #S.NETBIOS+S.SMB.H+S.TRANS2.H Search Count - lda bFlag - bne .10 - - iny - iny - -.10 iny - iny - lda (ZPRespPtr),y End Of Search - phy - ldy #S.FD.DIR.EPB - sta (pFD),y - ply - - dey - dey - - lda (ZPRespPtr),y Search Count - beq .99 - tax - - lda #1 +Ending 0 - sta ZPPtr2 - stz ZPPtr2+1 - -.1 lda ZPPtr2 - clc - adc #S.STAT - sta ZPPtr2 - bcc .2 - - inc ZPPtr2+1 - -.2 lda ZPPtr1 - clc - adc #22 - sta ZPPtr1 - bcc .3 - - inc ZPPtr1+1 - -.3 lda (ZPPtr1) Filename Len - pha - sec - adc ZPPtr2 - sta ZPPtr2 - bcc .4 - - inc ZPPtr2+1 - -.4 pla - inc - sec - adc ZPPtr1 - sta ZPPtr1 - bcc .5 - - inc ZPPtr1+1 - -.5 dex - bne .1 - - >LDYA ZPPtr2 - >SYSCALL2 GetMem - bcs .9 - - >STYA BufPtr - >STYA ZPPtr2 - stx hBuf - -.9 rts - -.99 lda #MLI.E.EOF - sec - rts -*-------------------------------------- -CIFS2.ReadDir.FillBuf - ldy #S.NETBIOS+S.SMB.H+S.TRANS2.H Search Count - lda bFlag - bne .10 - - iny - iny - -.10 lda (ZPRespPtr),y - tax - -.1 jsr FileInfo2StatBuf - - lda ZPPtr1 - sec skip Filename Len - adc #22 - sta ZPPtr1 - bcc .2 - - inc ZPPtr1+1 - -.2 ldy #$ff - -.3 iny - lda (ZPPtr1),y - sta (ZPPtr2),y - bne .3 - - tya - sec - adc ZPPtr1 - sta ZPPtr1 - bcc .4 - - inc ZPPtr1+1 - -.4 tya - sec - adc ZPPtr2 - sta ZPPtr2 - bcc .5 - - inc ZPPtr2+1 - -.5 jsr StatBuf2Ptr2 - - lda #S.STAT - clc - adc ZPPtr2 - sta ZPPtr2 - bcc .7 - - inc ZPPtr2+1 - -.7 dex - bne .1 - - lda #0 - sta (ZPPtr2) - - rts -*-------------------------------------- -CIFS.CloseDir tax - - lda Nod.Table.hName-2,x - beq .1 - - phx - - stz Nod.Table.hName-2,x - >SYSCALL2 FreeMem - - plx - -.1 lda Nod.Table.hFD-2,x - stz Nod.Table.hFD-2,x - >SYSCALL2 FreeMem - - stz CIFS.Status - clc - rts -*-------------------------------------- -CIFS2.CloseDir lda #MLI.E.INVPATH - sec - rts -*-------------------------------------- -CIFS.Open -CIFS2.Open -*-------------------------------------- -CIFS.Close -CIFS2.Close - lda #MLI.E.INVPATH - sec - rts -*-------------------------------------- -CIFS.Read -CIFS2.Read -*-------------------------------------- -CIFS.Write -CIFS2.Write -*-------------------------------------- -CIFS.ChOwn -CIFS2.ChOwn - lda #MLI.E.BADCALL - sec - rts + .INB usr/src/lib/libcifs.io.s *-------------------------------------- GetPFD tax phx @@ -1205,7 +717,7 @@ Sleep ldy #S.PS.PID dec CIFS.Status stz CIFS.Retries - + lda #0 sec rts @@ -1370,17 +882,21 @@ StatBuf2Ptr2 ldy #S.STAT-1 *-------------------------------------- ClearSocket jsr ReadSocket bcs .8 - + >SYSCALL2 FreeMem bra ClearSocket - -.8 clc + +.8 clc rts *-------------------------------------- ReadSocket lda MountTable+3 hSocket ldx #LIBTCPIP.Recv GO.LIBTCPIP jmp (pLIBTCPIP) *-------------------------------------- +CIFS.BADCALL lda #MLI.E.BADCALL + sec + rts +*-------------------------------------- CS.END *-------------------------------------- NETBIOS .DA #0 DIRECT TCP TRANSPORT @@ -1470,7 +986,7 @@ SMB.ComRead.H .DA #10 WORD COUNT .HS 00000000 Timeout .HS 0000 Remaining .HS 0000 ByteCount -SMB.ComRead.H.Len .EQ *-SMB.ComRead.H +SMB.ComRead.H.Len .EQ *-SMB.ComRead.H *-------------------------------------- #$2F SMB.ComWrite.H .DA #12 WORD COUNT .HS FF000000 NO MORE CMD @@ -1481,18 +997,18 @@ SMB.ComWrite.H .DA #12 WORD COUNT .BS 2 Remaining .HS 0000 Reserved .BS 2 DataLength - .BS 2 DataOffset + .BS 2 DataOffset SMB.ComWrite.H.Len .EQ *-SMB.ComWrite.H .BS 2 ByteCount SMB.ComWrite.T * DATA..... -SMB.ComWrite.T.Len .EQ *-SMB.ComWrite.T +SMB.ComWrite.T.Len .EQ *-SMB.ComWrite.T *-------------------------------------- #$04 SMB.ComClose.H .DA #3 WORD COUNT .BS 2 FID .HS 00000000 LastTimeModified .HS 0000 ByteCount -SMB.ComClose.H.Len .EQ *-SMB.ComClose.H +SMB.ComClose.H.Len .EQ *-SMB.ComClose.H *-------------------------------------- SMB.Trans2.H .DA #15 WORD COUNT .BS 2 TotalParamCount @@ -1518,11 +1034,11 @@ SMB.Open2 .DA 0 TRANS2_OPEN2 .HS 0000 Flags .BS 2 Access Mode .HS 0000 Reserved1 - .BS 2 FileAttributes - .HS 00000000 CreationTime + .BS 2 FileAttributes + .HS 00000000 CreationTime .BS 2 OpenMode .HS 00000000 AllocationSize - .HS 00000000000000000000 Reserved + .HS 00000000000000000000 Reserved * .AZ "filename" SMB.Open2.Len .EQ *-SMB.Open2 *-------------------------------------- diff --git a/LIB/LIBETALK.S.AARP.txt b/LIB/LIBETALK.S.AARP.txt index 361667b6..efcb01bf 100644 --- a/LIB/LIBETALK.S.AARP.txt +++ b/LIB/LIBETALK.S.AARP.txt @@ -1,6 +1,5 @@ NEW AUTO 3,1 - .LIST OFF */-------------------------------------- * # AARP.Clear * Clear AARP Cache @@ -328,6 +327,6 @@ AARP.Send >STYA IOCTL+S.IOCTL.BUFPTR jmp FRM.Send.IOCTL *-------------------------------------- MAN -SAVE USR/SRC/LIB/LIBETALK.S.AARP -LOAD USR/SRC/LIB/LIBETALK.S +SAVE usr/src/lib/libetalk.s.aarp +LOAD usr/src/lib/libetalk.s ASM diff --git a/LIB/LIBETALK.S.CFG.txt b/LIB/LIBETALK.S.CFG.txt index db4a3a03..94adcecd 100644 --- a/LIB/LIBETALK.S.CFG.txt +++ b/LIB/LIBETALK.S.CFG.txt @@ -1,6 +1,5 @@ NEW AUTO 3,1 - .LIST OFF *-------------------------------------- CFG.SET >PULLW ZPTmpPtr1 ETKCFG @@ -29,6 +28,6 @@ CFG.GET >LDYA L.ETKCFG rts *-------------------------------------- MAN -SAVE USR/SRC/LIB/LIBETALK.S.CFG -LOAD USR/SRC/LIB/LIBETALK.S +SAVE usr/src/lib/libetalk.s.cfg +LOAD usr/src/lib/libetalk.s ASM diff --git a/LIB/LIBETALK.S.DDP.txt b/LIB/LIBETALK.S.DDP.txt index f9ae7252..093b66cb 100644 --- a/LIB/LIBETALK.S.DDP.txt +++ b/LIB/LIBETALK.S.DDP.txt @@ -1,11 +1,10 @@ NEW AUTO 3,1 - .LIST OFF *-------------------------------------- DDP.IN clc rts *-------------------------------------- MAN -SAVE USR/SRC/LIB/LIBETALK.S.DDP -LOAD USR/SRC/LIB/LIBETALK.S +SAVE usr/src/lib/libetalk.s.ddp +LOAD usr/src/lib/libetalk.s ASM diff --git a/LIB/LIBETALK.S.ELAP.txt b/LIB/LIBETALK.S.ELAP.txt index c86d334e..d9b60fd7 100644 --- a/LIB/LIBETALK.S.ELAP.txt +++ b/LIB/LIBETALK.S.ELAP.txt @@ -1,10 +1,9 @@ NEW AUTO 3,1 - .LIST OFF *-------------------------------------- *-------------------------------------- MAN -SAVE USR/SRC/LIB/LIBETALK.S.ELAP -LOAD USR/SRC/LIB/LIBETALK.S +SAVE usr/src/lib/libetalk.s.elap +LOAD usr/src/lib/libetalk.s ASM diff --git a/LIB/LIBETALK.S.FRM.txt b/LIB/LIBETALK.S.FRM.txt index e046adae..4ac07692 100644 --- a/LIB/LIBETALK.S.FRM.txt +++ b/LIB/LIBETALK.S.FRM.txt @@ -1,7 +1,7 @@ NEW AUTO 3,1 - .LIST OFF *-------------------------------------- + *-------------------------------------- FRM.Send ldx #3 @@ -17,6 +17,6 @@ FRM.Send.IOCTL >PUSHB ETKCFG+S.NETCFG.DevID rts *-------------------------------------- MAN -SAVE USR/SRC/LIB/LIBETALK.S.FRM -LOAD USR/SRC/LIB/LIBETALK.S +SAVE usr/src/lib/libetalk.s.frm +LOAD usr/src/lib/libetalk.s ASM diff --git a/LIB/LIBETALK.S.RTMP.txt b/LIB/LIBETALK.S.RTMP.txt index 54515d01..b02746b4 100644 --- a/LIB/LIBETALK.S.RTMP.txt +++ b/LIB/LIBETALK.S.RTMP.txt @@ -1,10 +1,9 @@ NEW AUTO 3,1 - .LIST OFF *-------------------------------------- *-------------------------------------- MAN -SAVE USR/SRC/LIB/LIBETALK.S.RTMP -LOAD USR/SRC/LIB/LIBETALK.S +SAVE usr/src/lib/libetalk.s.rtmp +LOAD usr/src/lib/libetalk.s ASM diff --git a/LIB/LIBETALK.S.txt b/LIB/LIBETALK.S.txt index 539aaef6..99c35eb4 100644 --- a/LIB/LIBETALK.S.txt +++ b/LIB/LIBETALK.S.txt @@ -5,12 +5,12 @@ NEW .OR $2000 .TF lib/libetalk *-------------------------------------- - .INB INC/MACROS.I - .INB INC/A2OSX.I - .INB INC/NIC.I - .INB INC/ETH.I - .INB INC/LIB.NET.I - .INB INC/LIBETALK.I + .INB inc/macros.i + .INB inc/a2osx.i + .INB inc/nic.i + .INB inc/eth.i + .INB inc/lib.net.i + .INB inc/libetalk.i *-------------------------------------- ZPFrameInPtr .EQ ZPLIB ZPFrameInLen .EQ ZPLIB+2 @@ -117,12 +117,12 @@ PULSE and #S.EVT.F.T1SEC .9 rts *-------------------------------------- - .INB USR/SRC/LIB/LIBETALK.S.AARP - .INB USR/SRC/LIB/LIBETALK.S.CFG - .INB USR/SRC/LIB/LIBETALK.S.DDP - .INB USR/SRC/LIB/LIBETALK.S.ELAP - .INB USR/SRC/LIB/LIBETALK.S.FRM - .INB USR/SRC/LIB/LIBETALK.S.RTMP + .INB usr/src/lib/libetalk.s.aarp + .INB usr/src/lib/libetalk.s.cfg + .INB usr/src/lib/libetalk.s.ddp + .INB usr/src/lib/libetalk.s.elap + .INB usr/src/lib/libetalk.s.frm + .INB usr/src/lib/libetalk.s.rtmp *-------------------------------------- CS.END *-------------------------------------- @@ -169,5 +169,5 @@ TmpDWord .BS 4 TmpOffset .BS 2 *-------------------------------------- MAN -SAVE USR/SRC/LIB/LIBETALK.S +SAVE usr/src/lib/libetalk.s ASM diff --git a/LIB/LIBTCPIP.S.ARP.txt b/LIB/LIBTCPIP.S.ARP.txt index dc9edd31..3e0a7cf3 100644 --- a/LIB/LIBTCPIP.S.ARP.txt +++ b/LIB/LIBTCPIP.S.ARP.txt @@ -1,11 +1,10 @@ NEW AUTO 3,1 - .LIST OFF */-------------------------------------- * # ARP.Clear * Clear ARP Cache -* **In:** -* ## RETURN VALUE +* **In:** +* ## RETURN VALUE *\-------------------------------------- ARP.Clear jsr ARP.GetCache @@ -27,7 +26,7 @@ ARP.Clear.I lda #0 * PUSHW PTR to IP * ## RETURN VALUE * CC: hit: MAC filled -* CS: missed +* CS: missed *\-------------------------------------- ARP.Query jsr ARP.GetIP @@ -55,7 +54,7 @@ ARP.Query jsr ARP.GetIP ARP.Add jsr ARP.GetIP >PULLW ZPPtrMAC MAC - + ldy #5 .2 lda (ZPPtrMAC),y @@ -199,8 +198,8 @@ ARP.QUERY.I jsr ARP.FIND.BY.IP jsr ARP.ADD.I .9 lda #ERR.ARP.PENDING - sec -.99 rts + sec +.99 rts *-------------------------------------- ARP.FIND.BY.IP jsr ARP.GetCache @@ -215,7 +214,7 @@ ARP.FIND.BY.IP jsr ARP.GetCache bne .3 iny - cpy #S.ARPCACHE.IP+4 + cpy #S.ARPCACHE.IP+4 bne .2 clc @@ -308,18 +307,18 @@ ARP.NextCache lda ZPCachePtr sta ZPCachePtr bcc .8 inc ZPCachePtr+1 - + .8 rts *-------------------------------------- ARP.GetIP >PULLW ZPPtrIP - + ldy #3 .1 lda (ZPPtrIP),y sta ARP.TmpCache+S.ARPCACHE.IP,y dey bpl .1 - + rts *-------------------------------------- ARP.AddFromFrameInPtr @@ -328,7 +327,7 @@ ARP.AddFromFrameInPtr ldy #S.ETH.SRCMAC+5 jsr ARP.GetMacFromFrameInPtrY - + lda #K.ARP.TTL sta ARP.TmpCache+S.ARPCACHE.TTL lda /K.ARP.TTL @@ -355,7 +354,7 @@ ARP.GetMacFromFrameInPtrY dey dex bpl .1 - + rts *-------------------------------------- ARP.Send >STYA IOCTL+S.IOCTL.BUFPTR diff --git a/LIB/LIBTCPIP.S.CFG.txt b/LIB/LIBTCPIP.S.CFG.txt index 24822f3a..205705a5 100644 --- a/LIB/LIBTCPIP.S.CFG.txt +++ b/LIB/LIBTCPIP.S.CFG.txt @@ -1,6 +1,5 @@ NEW AUTO 3,1 - .LIST OFF *-------------------------------------- CFG.SET >PULLW ZPTmpPtr1 IPCFG @@ -43,7 +42,7 @@ CFG.SET >PULLW ZPTmpPtr1 IPCFG ldx #IOCTL.STATUS jsr CFG.SET.IOCTL bcs .9 - + ldx #11 IP/MASK/GW .4 lda IPCFG+S.IPCFG.IP,x @@ -61,8 +60,8 @@ CFG.SET >PULLW ZPTmpPtr1 IPCFG .5 stz SA.LOCAL+S.SOCKADDR.PORT stz SA.LOCAL+S.SOCKADDR.PORT+1 + >PUSHB hDNSSocket >PUSHW L.SA.LOCAL - lda hDNSSocket jmp SKT.Bind .9 rts diff --git a/LIB/LIBTCPIP.S.DNS.txt b/LIB/LIBTCPIP.S.DNS.txt index 4cd6db6d..8877a1f8 100644 --- a/LIB/LIBTCPIP.S.DNS.txt +++ b/LIB/LIBTCPIP.S.DNS.txt @@ -1,11 +1,10 @@ NEW AUTO 3,1 - .LIST OFF */-------------------------------------- * # DNS.Clear * Clear DNS Cache -* **In:** -* ## RETURN VALUE +* **In:** +* ## RETURN VALUE *\-------------------------------------- DNS.Clear ldx #K.DNSCACHE.SIZE*S.DNSCACHE @@ -20,10 +19,10 @@ DNS.Clear ldx #K.DNSCACHE.SIZE*S.DNSCACHE * Query DNS for specified host * **In:** * PUSHW = PTR to IP to fill with cached data -* PUSHW = hostname PTR to PSTR +* PUSHW = hostname PTR to PSTR * ## RETURN VALUE * CC: hit: IP filled with address -* CS: missed +* CS: missed *\-------------------------------------- DNS.Query >PULLW ZPPtrDNS Get host string >PULLW ZPPtrIP Get IP address to fill @@ -126,10 +125,10 @@ DNS.REQUEST.SEND dey bpl .2 -.4 >PUSHW L.SA.REMOTE - >PUSHW DNS.MSG.LEN +.4 >PUSHB hDNSSocket >PUSHW L.DNS.MSG - lda hDNSSocket + >PUSHW DNS.MSG.LEN + >PUSHW L.SA.REMOTE jmp SKT.SendTo .8 clc @@ -165,7 +164,7 @@ DNS.CSTR2DNS lda (ZPPtrDNS) cmp #'Z'+1 bcs .2 - + adc #$20 .2 inx @@ -248,13 +247,13 @@ DNS.ADD.I sta DNS.TmpCache *\-------------------------------------- DNS.GetCAche >LDYA L.DNS.CACHE >STYA ZPCachePtr - + clc rts *-------------------------------------- DNS.FIND.BY.NAME jsr DNS.GetCAche - + ldx #K.DNSCACHE.SIZE .1 lda (ZPCachePtr) @@ -271,7 +270,7 @@ DNS.FIND.BY.NAME bcc .8 .6 jsr DNS.NextCache - + dex bne .1 @@ -280,7 +279,7 @@ DNS.FIND.BY.NAME *-------------------------------------- DNS.UPDATE.BY.ID jsr DNS.GetCAche - + ldx #K.DNSCACHE.SIZE .1 lda (ZPCachePtr) @@ -299,13 +298,13 @@ DNS.UPDATE.BY.ID lda #S.DNSCACHE.STATUS.RESOLVED sta (ZPCachePtr) ldy #S.DNSCACHE.TTL - + .2 lda DNS.TmpCache,y sta (ZPCachePtr),y iny cpy #S.DNSCACHE bne .2 - + clc rts @@ -390,7 +389,7 @@ DNS.EXPIRE jsr DNS.GetCAche iny dex bne .2 - + bcs .6 jsr DNS.FREE .6 plx @@ -461,7 +460,7 @@ DNS.POLL lda hDNSSocket tay bra .1 -.2 iny +.2 iny iny iny Skip QTYPE & QCLASS iny @@ -473,11 +472,11 @@ DNS.POLL lda hDNSSocket .3 lda (ZPFrameInPtr),y beq .32 - bpl .31 Pointer ? + bpl .31 Pointer ? iny yes, skip 2 bytes iny bra .32 - + .31 tya sec adc (ZPFrameInPtr),y Skip LEN+1 bytes @@ -523,7 +522,7 @@ DNS.POLL lda hDNSSocket bne .5 jsr DNS.UPDATE.BY.ID - + .9 jmp FRM.DiscardIn *-------------------------------------- DNS.NextCache lda ZPCachePtr @@ -532,7 +531,7 @@ DNS.NextCache lda ZPCachePtr sta ZPCachePtr bcc .8 inc ZPCachePtr+1 - + .8 rts *-------------------------------------- MAN diff --git a/LIB/LIBTCPIP.S.FRM.txt b/LIB/LIBTCPIP.S.FRM.txt index 727095b2..a825b78e 100644 --- a/LIB/LIBTCPIP.S.FRM.txt +++ b/LIB/LIBTCPIP.S.FRM.txt @@ -1,6 +1,5 @@ NEW AUTO 3,1 - .LIST OFF *-------------------------------------- FRM.GetTargetSKT.TCPUDP ldy #S.TCPUDP.SRCPORT @@ -97,7 +96,7 @@ FRM.NewIP stx .8+1 ldy #S.ETH.EII.TYPE lda /S.ETH.EII.TYPE.IP - sta (ZPFrameOutPtr),y + sta (ZPFrameOutPtr),y iny lda #S.ETH.EII.TYPE.IP sta (ZPFrameOutPtr),y @@ -109,7 +108,7 @@ FRM.NewIP stx .8+1 * lda #$0 * sta (ZPFrameOutPtr),y -* ldy #S.IP.FRAGMENT.FLAGS +* ldy #S.IP.FRAGMENT.FLAGS * sta (ZPFrameOutPtr),y * iny * sta (ZPFrameOutPtr),y @@ -132,7 +131,7 @@ FRM.NewIP stx .8+1 ldy #S.IP.TTL lda #K.IP.TTL sta (ZPFrameOutPtr),y - + .7 ldy #S.IP.PROTOCOL .8 lda #$ff @@ -147,7 +146,7 @@ FRM.SendIP php ldy #S.IP.SRC+3 for proper UDP/TCP CRC calculation .1 lda IPCFG+S.IPCFG.IP,x - sta (ZPFrameOutPtr),y + sta (ZPFrameOutPtr),y dey dex bpl .1 @@ -236,7 +235,7 @@ FRM.SendIP php jsr IP.SetDestMAC bcs FRM.Queue - + .6 jsr FRM.Send bcs FRM.Queue @@ -256,7 +255,7 @@ FRM.Queue plp inx cpx #K.FRMQUEUE.SIZE bne .1 - + ldx #0 .1 cpx FRM.QUEUE.Tail @@ -309,9 +308,9 @@ FRM.Retry ldx FRM.QUEUE.Tail .3 ldx FRM.QUEUE.Tail sta FRM.QUEUE.State,x save error... - dec FRM.QUEUE.Retry,x + dec FRM.QUEUE.Retry,x bne .8 exit....until next run! - + .4 ldx FRM.QUEUE.Tail lda FRM.QUEUE.hMem,x Success,or max retry, discard entry inx @@ -331,7 +330,7 @@ FRM.Send ldx #3 sta IOCTL+S.IOCTL.BUFPTR,x dex bpl .1 - + FRM.Send.IOCTL >PUSHB IPCFG+S.NETCFG.DevID >PUSHBI IOCTL.WRITE >PUSHW L.IOCTL diff --git a/LIB/LIBTCPIP.S.HST.txt b/LIB/LIBTCPIP.S.HST.txt index 204a4934..dccf552d 100644 --- a/LIB/LIBTCPIP.S.HST.txt +++ b/LIB/LIBTCPIP.S.HST.txt @@ -1,13 +1,12 @@ NEW AUTO 3,1 - .LIST OFF *-------------------------------------- HST.GetByName >PULLW ZPPtrDNS >PULLW ZPPtrIP >PUSHW ZPPtrDNS >PUSHW L.HST.SScanF - + ldx #0 .1 txa diff --git a/LIB/LIBTCPIP.S.ICMP.txt b/LIB/LIBTCPIP.S.ICMP.txt index 1abcb929..a03e3b6b 100644 --- a/LIB/LIBTCPIP.S.ICMP.txt +++ b/LIB/LIBTCPIP.S.ICMP.txt @@ -1,6 +1,5 @@ NEW AUTO 3,1 - .LIST OFF *-------------------------------------- ICMP.IN ldy #S.ICMP.TYPE lda (ZPFrameInPtr),y @@ -30,18 +29,18 @@ ICMP.IN.ECHOREQ ldy #S.IP.DST+3 * stz hFrameIn DO NOT DISCARD this frame,it is SOURCE frame!!! sta hFrameOut - ldx #3 + ldx #3 .2 lda ZPFrameInPtr,x sta ZPFrameOutPtr,x dex bpl .2 - ldx #3 + ldx #3 ldy #S.IP.DST+3 .3 lda ARP.TmpCache+S.ARPCACHE.IP,x - sta (ZPFrameOutPtr),y + sta (ZPFrameOutPtr),y dey dex bpl .3 diff --git a/LIB/LIBTCPIP.S.IP.txt b/LIB/LIBTCPIP.S.IP.txt index 17e2df6b..757cc2ac 100644 --- a/LIB/LIBTCPIP.S.IP.txt +++ b/LIB/LIBTCPIP.S.IP.txt @@ -1,6 +1,5 @@ NEW AUTO 3,1 - .LIST OFF *-------------------------------------- IP.IN ldy #S.IP.PROTOCOL lda (ZPFrameInPtr),y @@ -202,7 +201,7 @@ IP.SetDestMAC ldy #S.IP.DST dex bpl .5 bra .8 - + .6 ldx #3 Not Same network, query ARP for GW .7 lda IPCFG+S.IPCFG.GW,x diff --git a/LIB/LIBTCPIP.S.SKT.txt b/LIB/LIBTCPIP.S.SKT.txt index 3a54e52b..320572d0 100644 --- a/LIB/LIBTCPIP.S.SKT.txt +++ b/LIB/LIBTCPIP.S.SKT.txt @@ -7,15 +7,18 @@ NEW * `hFD socket(short int type, short int protocol);` * ## ASM * **In:** +* `>PUSHB type` * `>PUSHB protocol` -* `lda type` * `>LIBCALL hLIBTCPIP,LIBTCPIP.socket` * ## RETURN VALUE * CC: A = hSOCKET * CS: A = EC *\-------------------------------------- -SKT.Socket tax - >PULLA get protocol (RAW) +SKT.Socket >PULLA get protocol (RAW) + pha + >PULLA + tax + pla SKT.Socket.I jmp (J.SKT.Socket,x) SKT.Socket.RAW ldy #S.SOCKET @@ -98,7 +101,7 @@ SKT.Socket.FindFree .8 ldy #$FF SELF MODIFIED sta SKT.TABLE,y - + * clc rts */-------------------------------------- @@ -108,16 +111,15 @@ SKT.Socket.FindFree * `int bind(hFD fd, const struct sockaddr *addr);` * ## ASM * **In:** +* `>PUSHB fd` * `>PUSHW addr` -* `lda fd` * `>LIBCALL hLIBTCPIP,LIBTCPIP.socket` * ## RETURN VALUE * CC: A = hSOCKET * CS: A = EC *\-------------------------------------- -SKT.bind >SYSCALL2 GetMemPtr - >STYA ZPPtrSKT - jsr SKT.PullLocAddr +SKT.bind jsr SKT.PullLocAddr + jsr SKT.PullhFD lda SKT.LOC.ADDR+S.SOCKADDR.PORT ora SKT.LOC.ADDR+S.SOCKADDR.PORT+1 @@ -168,17 +170,15 @@ SKT.bind >SYSCALL2 GetMemPtr * `int connect(hFD fd, const struct sockaddr *addr);` * ## ASM * **In:** +* `>PUSHB fd` * `>PUSHW addr` -* `lda fd` * `>LIBCALL hLIBTCPIP,LIBTCPIP.socket` * ## RETURN VALUE * CC: A = hSOCKET * CS: A = EC *\-------------------------------------- -SKT.connect >SYSCALL2 GetMemPtr - >STYA ZPPtrSKT - - jsr SKT.PullRemAddr +SKT.connect jsr SKT.PullRemAddr + jsr SKT.PullhFD ldy #S.SOCKET.T lda (ZPPtrSKT),y @@ -238,8 +238,7 @@ SKT.connect.SEQPKT * ## RETURN VALUE * CS: A = EC *\-------------------------------------- -SKT.listen >SYSCALL2 GetMemPtr - >STYA ZPPtrSKT +SKT.listen jsr SKT.GetFD ldy #S.SOCKET.T lda (ZPPtrSKT),y @@ -275,8 +274,7 @@ SKT.listen.RTS rts * ## RETURN VALUE * A = hSocket *\-------------------------------------- -SKT.Accept >SYSCALL2 GetMemPtr - >STYA ZPPtrSKT +SKT.Accept jsr SKT.GetFD ldy #S.SOCKET.O lda (ZPPtrSKT),y @@ -321,8 +319,7 @@ SKT.GetFromQueue * ## RETURN VALUE *\-------------------------------------- SKT.shutdown pha - >SYSCALL2 GetMemPtr - >STYA ZPPtrSKT + jsr SKT.GetFD ldy #S.SOCKET.O lda (ZPPtrSKT),y @@ -338,7 +335,7 @@ SKT.shutdown pha lda (ZPPtrSKT),y cmp #S.SOCKET.TCP.S.TIMEWT bcs .7 - + pla jsr SKT.GetTCB @@ -397,9 +394,9 @@ SKT.shutdown.RTS * `int skt.read(hFD fd, void *buf, int count);` * ## ASM * **In:** -* `>PUSHWI count` +* `>PUSHB fd` * `>PUSHW buf` -* `lda fd` +* `>PUSHW count` * `>LIBCALL hLIBTCPIP,LIBTCPIP.read` * ## RETURN VALUE * CC: Y,A = bytes read @@ -422,8 +419,8 @@ SKT.Read jsr SKT.PullhFDDataInPtrLen stx ZPDataInLen less data than INUSED, Get only INUSED data lda (ZPPtrSKT),y sta ZPDataInLen+1 - bra SKT.GetDataFromSktIn + .7 jsr SKT.CheckStream bcs .99 I/O error @@ -599,9 +596,9 @@ SKT.AddDataToSktIn * `int skt.write(hFD fd, const void *buf, int count);` * ## ASM * **In:** -* `>PUSHWI count` +* `>PUSHB fd` * `>PUSHW buf` -* `lda fd` +* `>PUSHW count` * `>LIBCALL hLIBTCPIP,LIBTCPIP.write` * ## RETURN VALUE * CC: Y,A = bytes written @@ -611,6 +608,7 @@ SKT.Write jsr SKT.PullhFDDataInPtrLen jsr SKT.CheckStream bcs .99 + jsr SKT.GetTCB ldx SKT.Cache+S.SOCKET.TCP.OUTFREE @@ -765,6 +763,7 @@ SKT.GetDataFromSktOut .1 inx bne .2 + pla inc beq .8 @@ -779,6 +778,7 @@ SKT.GetDataFromSktOut sta (ZPDataOutPtr) inc ZPDataOutPtr bne .3 + inc ZPDataOutPtr+1 .3 iny @@ -788,6 +788,7 @@ SKT.GetDataFromSktOut lda SKT.Cache+S.SOCKET.TCP.OUTTAILSENT+1 cmp /K.TCP.WSIZE bne .1 + stz SKT.Cache+S.SOCKET.TCP.OUTTAILSENT+1 lda ZPTmpPtr1+1 @@ -803,30 +804,37 @@ SKT.GetDataFromSktOut clc rts */-------------------------------------- -* # Recv (RAW,DGRAM,SEQPKT) * # RecvFrom (RAW,DGRAM,SEQPKT) * ## C -* `hMem recv(hFD fd);` * `hMem recvfrom(hFD fd, struct sockaddr *addr);` * ## ASM * **In:** +* `>PUSHB fd` * `>PUSHW addr` (RecvFrom) +* `>LIBCALL hLIBTCPIP,LIBTCPIP.Recv` +* ## RETURN VALUE +* CC: A = hMem +* CS: A = EC +*\-------------------------------------- +SKT.RecvFrom >PULLW ZPTmpPtr1 addr + >PULLA + sec + .HS 90 BCC +*/-------------------------------------- +* # Recv (RAW,DGRAM,SEQPKT) +* ## C +* `hMem recv(hFD fd);` +* ## ASM +* **In:** * `lda fd` * `>LIBCALL hLIBTCPIP,LIBTCPIP.Recv` * ## RETURN VALUE * CC: A = hMem * CS: A = EC *\-------------------------------------- -SKT.RecvFrom pha - >PULLW ZPTmpPtr1 addr - pla - sec - .HS 90 BCC - SKT.Recv clc php - >SYSCALL2 GetMemPtr - >STYA ZPPtrSKT + jsr SKT.GetFD ldy #S.SOCKET.T lda (ZPPtrSKT),y @@ -837,7 +845,7 @@ SKT.Recv clc jsr SKT.GetFromQueue SEQPKT bcc .1 - + jsr SKT.CheckTCP bcs .91 @@ -845,10 +853,10 @@ SKT.Recv clc plp sec rts - + .10 jsr SKT.GetFromQueue bcs .90 - + .1 plp if CS, RecvFrom bcc .9 CC, Recv : Exit with CC and A=hFrame @@ -902,33 +910,38 @@ SKT.Recv clc sec rts */-------------------------------------- -* # Send (RAW,DGRAM,SEQPKT) * # SendTo (RAW,DGRAM,SEQPKT) * ## C -* `int skt.send(hFD fd, const void *buf, int count);` * `int skt.sendto(hFD fd, const void *buf, int count, const struct sockaddr *addr);` * ## ASM * **In:** -* `>PUSHW addr` (SendTo) -* `>PUSHWI count` +* `>PUSHB fd` * `>PUSHW buf` -* `lda fd` +* `>PUSHWI count` +* `>PUSHW addr` +* `>LIBCALL hLIBTCPIP,LIBTCPIP.sendto` +* ## RETURN VALUE +* CC: Y,A = bytes written +* CS: A = EC +*\-------------------------------------- +SKT.SendTo jsr SKT.PullRemAddr +*/-------------------------------------- +* # Send (RAW,DGRAM,SEQPKT) +* ## C +* `int skt.send(hFD fd, const void *buf, int count);` +* ## ASM +* **In:** +* `>PUSHB fd` +* `>PUSHW buf` +* `>PUSHWI count` * `>LIBCALL hLIBTCPIP,LIBTCPIP.send` * ## RETURN VALUE * CC: Y,A = bytes written * CS: A = EC *\-------------------------------------- -SKT.SendTo sec - .HS 90 BCC -SKT.Send clc - php - jsr SKT.PullhFDDataInPtrLen - plp - bcc .1 +SKT.Send jsr SKT.PullhFDDataInPtrLen - jsr SKT.PullRemAddr - -.1 ldy #S.SOCKET.T + ldy #S.SOCKET.T lda (ZPPtrSKT),y tax jmp (J.SKT.send,x) @@ -979,8 +992,7 @@ SKT.Send.9 rts * `>LIBCALL hLIBTCPIP,LIBTCPIP.GetSockOpt` * ## RETURN VALUE *\-------------------------------------- -SKT.getsockopt >SYSCALL2 GetMemPtr - >STYA ZPPtrSKT +SKT.getsockopt jsr SKT.GetFD ldy #S.SOCKET.O lda (ZPPtrSKT),y * clc @@ -992,14 +1004,17 @@ SKT.getsockopt >SYSCALL2 GetMemPtr * `int setsockopt(hFD fd, short int opts);` * ## ASM * **In:** -* `>PUSHBI opts` -* `lda fd` +* `>PUSHB fd` +* `>PUSHB opts` * `>LIBCALL hLIBTCPIP,LIBTCPIP.SetSockOpt` * ## RETURN VALUE *\-------------------------------------- -SKT.setsockopt >SYSCALL2 GetMemPtr - >STYA ZPPtrSKT - >PULLA +SKT.setsockopt >PULLA + pha + + jsr SKT.PullhFD + + pla ldy #S.SOCKET.O sta (ZPPtrSKT),y * clc @@ -1017,10 +1032,9 @@ SKT.setsockopt >SYSCALL2 GetMemPtr * CC : A = 0 if some data, A = $ff if EOF * CS : A = Socket Error *\-------------------------------------- -SKT.EOF >SYSCALL2 GetMemPtr - >STYA ZPPtrSKT +SKT.EOF jsr SKT.GetFD -SKT.EOF.I ldy #S.SOCKET.TCP.INUSED + ldy #S.SOCKET.TCP.INUSED lda (ZPPtrSKT),y iny ora (ZPPtrSKT),y @@ -1034,7 +1048,8 @@ SKT.EOF.I ldy #S.SOCKET.TCP.INUSED rts .8 lda #0 ...EOF = false - clc + +* clc .9 rts *-------------------------------------- SKT.CheckStream lda #S.SOCKET.T.STREAM @@ -1085,10 +1100,13 @@ SKT.GetTable >LDYA L.SKT.Table rts *-------------------------------------- SKT.PullhFDDataInPtrLen - >SYSCALL2 GetMemPtr - >STYA ZPPtrSKT - >PULLW ZPDataInPtr !!!DataOut trashed when sending ACK in TCP.OUT >PULLW ZPDataInLen !!!use DataInPtr/Len + >PULLW ZPDataInPtr !!!DataOut trashed when sending ACK in TCP.OUT + +SKT.PullhFD >PULLA + +SKT.GetFD >SYSCALL2 GetMemPtr + >STYA ZPPtrSKT rts *-------------------------------------- SKT.PullLocAddr clc @@ -1100,6 +1118,7 @@ SKT.PullRemAddr sec ldx #S.SOCKADDR-1 bcc .1 + ldx #S.SOCKADDR+S.SOCKADDR-1 .1 lda (ZPTmpPtr1),y @@ -1140,8 +1159,7 @@ SKT.FindMatchingLocRem beq .8 phx - >SYSCALL2 GetMemPtr - >STYA ZPPtrSKT + jsr SKT.GetFD plx ldy #S.SOCKET.AF diff --git a/LIB/LIBTCPIP.S.TCP.txt b/LIB/LIBTCPIP.S.TCP.txt index 75ba7786..ed13c895 100644 --- a/LIB/LIBTCPIP.S.TCP.txt +++ b/LIB/LIBTCPIP.S.TCP.txt @@ -1,6 +1,5 @@ NEW AUTO 3,1 - .LIST OFF *-------------------------------------- TCP.IN jsr FRM.GetTargetSKT.TCPUDP jsr SKT.FindMatchingLocRem @@ -91,11 +90,12 @@ TCP.IN.JMP.SYNSENT jsr TCP.IN.ACKTheSYN - lda #S.TCP.OPTIONS.ACK - jsr TCP.OUT.SendOptA SYN.ACK received, Send, ACK + jsr TCP.OUT.SendACK SYN.ACK received, Send, ACK bcs .9 + lda #S.SOCKET.TCP.S.ESTBLSH jmp SKT.StoreTCB.S + .9 lda #S.TCP.OPTIONS.RST jsr TCP.OUT.SendOptA Send RST ldx SKT.Index @@ -120,9 +120,11 @@ TCP.IN.JMP.SYNRCVD sta SKT.Cache+S.SOCKET.TCP.OUTNEXTSEQ,x ...and update NEXTSEQ eor (ZPFrameInPtr),y bne .8 + dey dex bpl .1 + lda #S.SOCKET.TCP.S.ESTBLSH jmp SKT.StoreTCB.S @@ -266,9 +268,8 @@ TCP.IN.JMP.LASTACK lda (ZPFrameInPtr),y bit #S.TCP.OPTIONS.ACK beq .8 - - lda #S.TCP.OPTIONS.ACK - jsr TCP.OUT.SendOptA + + jsr TCP.OUT.SendACK ldy #S.SOCKET.TCP.S lda #S.SOCKET.TCP.S.TIMEWT @@ -296,8 +297,8 @@ TCP.IN.JMP.FINWT1 .1 jsr TCP.IN.ACKTheFIN FIN/ACK * lda #S.TCP.OPTIONS.FIN+S.TCP.OPTIONS.ACK - lda #S.TCP.OPTIONS.ACK - jsr TCP.OUT.SendOptA FIN received, Send ACK + + jsr TCP.OUT.SendACK FIN received, Send ACK bcs TCP.IN.JMP.TIMEWT.RTS lda #S.SOCKET.TCP.S.LASTACK @@ -313,9 +314,7 @@ TCP.IN.JMP.FINWT2 jsr TCP.IN.ACKTheFIN - lda #S.TCP.OPTIONS.ACK - - jsr TCP.OUT.SendOptA FIN received, Send ACK + jsr TCP.OUT.SendACK FIN received, Send ACK bcs TCP.IN.JMP.TIMEWT.RTS lda #S.SOCKET.TCP.S.TIMEWT @@ -409,8 +408,7 @@ TCP.SENDCLOSE ldx #0 lda SKT.TABLE,x beq .8 - >SYSCALL2 GetMemPtr - >STYA ZPPtrSKT + jsr SKT.GetFD ldy #S.SOCKET.AF lda (ZPPtrSKT),y @@ -450,10 +448,6 @@ TCP.SENDCLOSE ldx #0 lda #S.SOCKET.TCP.S.SYNSENT jsr SKT.StoreTCB.S bra .8 - - lda #S.TCP.OPTIONS.SYN - jsr TCP.OUT.SendOptA Send SYN - bra .8 *-------------------------------------- .4 cpx #S.SOCKET.T.SEQPKT bne .6 @@ -539,6 +533,8 @@ TCP.OUT.SEQSEND ldy #S.TCP.WINDOW jmp SKT.StoreTCB exits with CC *-------------------------------------- +TCP.OUT.SendACK lda #S.TCP.OPTIONS.ACK + TCP.OUT.SendOptA jsr TCP.SetSocketTCPO @@ -607,12 +603,14 @@ TCP.SetSocketTCPO TCP.NewFrame ldx #S.IP.PROTOCOL.TCP jsr FRM.NewIP bcs .9 + jsr SKT.SetFrameOutDstIP jsr SKT.SetFrameOutTCPUDPPorts ldy #S.TCP.DATAOFFSET lda #$50 Header size = 5 DWORDS sta (ZPFrameOutPtr),y + clc .9 rts *-------------------------------------- @@ -624,9 +622,12 @@ TCP.AddAYToSktCacheAtX adc SKT.Cache+2,x sta SKT.Cache+2,x bcc .8 + inc SKT.Cache+1,x bne .8 + inc SKT.Cache,x + .8 rts *-------------------------------------- MAN diff --git a/LIB/LIBTCPIP.S.txt b/LIB/LIBTCPIP.S.txt index 13ebe850..bd32c259 100644 --- a/LIB/LIBTCPIP.S.txt +++ b/LIB/LIBTCPIP.S.txt @@ -167,22 +167,22 @@ LIB.LOAD ldx RefCount jsr ARP.Clear.I + >PUSHBI S.SOCKET.T.DGRAM >PUSHBI 0 no protocol - lda #S.SOCKET.T.DGRAM jsr SKT.Socket bcs .9 sta hDNSSocket + >PUSHA >PUSHW L.SA.LOCAL IP/PORT=All ZERO - lda hDNSSocket jsr SKT.Bind >LDYAI UDP.PORT.DNS >STYA SA.REMOTE+S.SOCKADDR.PORT + >PUSHB hDNSSocket >PUSHW L.SA.REMOTE IP=All ZERO - lda hDNSSocket jsr SKT.Connect jsr DNS.CLEAR @@ -256,17 +256,20 @@ PULSE and #S.EVT.F.T1SEC *-------------------------------------- GetDynPort inc DYNPORT.LAST bne .1 + inc DYNPORT.LAST+1 lda DYNPORT.LAST cmp #K.DYNPORT.END lda DYNPORT.LAST+1 sbc /K.DYNPORT.END bcs .1 + lda #K.DYNPORT.START ldx /K.DYNPORT.START sta DYNPORT.LAST stx DYNPORT.LAST+1 rts CC + .1 lda DYNPORT.LAST ldx DYNPORT.LAST+1 clc @@ -303,13 +306,13 @@ SA.REMOTE .DA #AF.INET S.SOCKADDR.AF .BS 2 S.SOCKADDR.PORT *-------------------------------------- FD.DSOCK .DA #S.FD.T.DSOCK - .DA #0 S.FD.HANDLER - .BS 1 S.FD.DSOCK.IOHANDLER + .DA #0 S.FD.PFT + .BS 1 S.FD.DSOCK.IOH .DA #0 S.FD.DSOCK.OPEN .DA #LIBTCPIP.shutdown .DA #LIBTCPIP.Recv .DA #LIBTCPIP.Send - .DA #0 S.FD.DSOCK.STATUS + .DA #0 S.FD.DSOCK.EOF *-------------------------------------- .DA #AF.INET S.SOCKET.AF .BS 1 S.SOCKET.T @@ -317,8 +320,8 @@ FD.DSOCK .DA #S.FD.T.DSOCK FD.DSOCK.SIZE .EQ *-FD.DSOCK *-------------------------------------- FD.SSOCK .DA #S.FD.T.SSOCK - .DA #0 S.FD.HANDLER - .BS 1 S.FD.SSOCK.IOHANDLER + .DA #0 S.FD.PFT + .BS 1 S.FD.SSOCK.IOH .DA #0 S.FD.SSOCK.OPEN .DA #LIBTCPIP.shutdown .DA #LIBTCPIP.Read diff --git a/SBIN/CIFSD.S.txt b/SBIN/CIFSD.S.txt index f22cbc95..e5208582 100644 --- a/SBIN/CIFSD.S.txt +++ b/SBIN/CIFSD.S.txt @@ -128,17 +128,17 @@ CS.RUN lda hSocket bcs .9 sta hMount - + >PUSHW L.MSG.MOUNTED - + lda #2 >SYSCALL ArgV >PUSHYA - + lda #3 >SYSCALL ArgV >PUSHYA - + >PUSHBI 4 >SYSCALL PrintF @@ -233,15 +233,15 @@ CS.RUN.CheckArgs CS.RUN.CheckArgs.RTS rts *-------------------------------------- -CS.RUN.Connect >PUSHBI 0 no protocol - lda #S.SOCKET.T.SEQPKT +CS.RUN.Connect >PUSHBI S.SOCKET.T.SEQPKT + >PUSHBI 0 no protocol >LIBCALL hLIBTCPIP,LIBTCPIP.Socket bcs .9 sta hSocket + >PUSHA >PUSHEA.G SA.LOCAL - lda hSocket >LIBCALL hLIBTCPIP,LIBTCPIP.Bind bcs .9 @@ -250,8 +250,8 @@ CS.RUN.Connect >PUSHBI 0 no protocol .1 >SLEEP + >PUSHB hSocket >PUSHEA.G SA.REMOTE - lda hSocket >LIBCALL hLIBTCPIP,LIBTCPIP.Connect bcc .8 @@ -259,7 +259,7 @@ CS.RUN.Connect >PUSHBI 0 no protocol bne .1 .9 pha - + >PUSHW L.MSG.NOCONN lda #1 >SYSCALL ArgV diff --git a/SBIN/GETTY.S.txt b/SBIN/GETTY.S.txt index 99900e7f..ecb307ac 100644 --- a/SBIN/GETTY.S.txt +++ b/SBIN/GETTY.S.txt @@ -70,6 +70,7 @@ CS.RUN ldy #S.PS.ARGC lda ArgIndex >SYSCALL ArgV bcs .8 + >STYA ZPPtr1 jsr CkeckOption @@ -146,9 +147,9 @@ CS.RUN.LOOP1 >SLEEP ldy #S.PS.hStdIn lda (pPS),y - >SYSCALL FEOF bcs CS.RUN.9 I/O error + tay bne .1 no char @@ -239,6 +240,7 @@ CS.RUN.IAC.SB >SYSCALL GetChar Wait for IAC SB.IS or SEND cmp #IAC beq .4 end of DATA, go wait SE + ldy IAC.SB.LEN sta (pData),y iny @@ -247,15 +249,19 @@ CS.RUN.IAC.SB >SYSCALL GetChar Wait for IAC SB.IS or SEND sty IAC.SB.LEN cpy #IAC.BUF.MAX bne .2 + bra .8 + .4 >SYSCALL GetChar bcs .9 + cmp #SE bne .8 lda IAC.SUBCMD cmp #TN.O.TTYPE bne .8 + lda IAC.SB.CMD cmp #SB.IS bne .8 @@ -268,8 +274,7 @@ CS.RUN.IAC.SB >SYSCALL GetChar Wait for IAC SB.IS or SEND *-------------------------------------- CS.RUN.GREETINGS >PUSHW L.MSG.GREETINGS - >PUSHB #K.VER - >PUSHB /K.VER + >PUSHW A2osX.KVER lda ArgDev >SYSCALL ArgV >PUSHYA @@ -282,7 +287,9 @@ CS.DOEVENT lda (pEvent) lda TimeOut beq .9 + dec TimeOut + .9 sec do not discard TIMER event rts *-------------------------------------- @@ -290,6 +297,7 @@ CS.QUIT lda hFILE beq .8 >SYSCALL FClose + .8 clc rts *-------------------------------------- diff --git a/SBIN/HTTPD.S.txt b/SBIN/HTTPD.S.txt index 91c4fb6f..7ada3ce6 100644 --- a/SBIN/HTTPD.S.txt +++ b/SBIN/HTTPD.S.txt @@ -109,7 +109,7 @@ CS.RUN >LDYA L.MSG.TCPWAIT lda #TIMEOUT.MAX sta TimeOut - + .1 >SLEEP >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG is TCPIP loaded ? bcs .99 @@ -125,6 +125,7 @@ CS.RUN >LDYA L.MSG.TCPWAIT lda (pPS),y >SYSCALL FEOF bcs CS.RUN.RTS I/O err + tay bne .1 @@ -141,7 +142,7 @@ CS.RUN >LDYA L.MSG.TCPWAIT >SYSCALL PutS CS.RUN.SYN lda #E.SYN - sec + sec CS.RUN.RTS rts *-------------------------------------- CS.RUN.INIT ldx #3 @@ -156,32 +157,32 @@ CS.RUN.INIT ldx #3 >LDYAI 256 >SYSCALL GetMem bcs CS.RUN.RTS - + >STYA ZPLinePtr stx hLineBuf - + >PUSHW L.MSG.INITCONF >PUSHW L.ETCHTTPDCONF >PUSHBI 2 - + >SYSCALL PrintF bcs CS.RUN.RTS - + jsr CS.RUN.CONF bcs CS.RUN.RTS - + + >PUSHBI S.SOCKET.T.SEQPKT >PUSHBI 0 no protocol - lda #S.SOCKET.T.SEQPKT >LIBCALL hLIBTCPIP,LIBTCPIP.Socket bcs CS.RUN.RTS sta hSrvSocket + >PUSHB hSrvSocket >PUSHW L.SA.LOCAL - lda hSrvSocket >LIBCALL hLIBTCPIP,LIBTCPIP.Bind bcs CS.RUN.ERR - + lda hSrvSocket >LIBCALL hLIBTCPIP,LIBTCPIP.Listen bcs CS.RUN.ERR @@ -189,8 +190,8 @@ CS.RUN.INIT ldx #3 >PUSHW L.MSG.INITOK >PUSHW SA.LOCAL+S.SOCKADDR.PORT >PUSHW ZPRootDirPtr - >PUSHBI 4 - + >PUSHBI 4 + >SYSCALL PrintF *-------------------------------------- CS.RUN.LOOP >SLEEP @@ -201,7 +202,7 @@ CS.RUN.LOOP >SLEEP CS.RUN.ERR >LDYA L.MSG.SKTERR >SYSCALL PutS lda #E.SYN - sec + sec rts *-------------------------------------- CS.RUN.CONF >PUSHW L.ETCHTTPDCONF @@ -221,53 +222,53 @@ CS.RUN.CONF >PUSHW L.ETCHTTPDCONF tya beq .1 - + lda (ZPLinePtr) cmp #'#' beq .1 - + >LDYA L.KEYWORDS.CONF >STYA ZPPtr1 - + ldx #0 .2 ldy #0 - + .3 lda (ZPPtr1),y cmp (ZPLinePtr),y bne .4 - + iny cmp #C.SPACE bne .3 - + jsr CS.RUN.CONF.JMP bcc .1 - + bra .97 - + .4 inx inx - + ldy #0 - + .5 iny lda (ZPPtr1),y cmp #C.SPACE bne .5 - + tya sec adc ZPPtr1 sta ZPPtr1 bcc .6 inc ZPPtr1+1 - + .6 lda (ZPPtr1) bne .2 .97 lda #E.SYN - + .98 pha jsr .8 pla @@ -286,13 +287,13 @@ CS.RUN.CONF.JMP tya lda #0 adc ZPLinePtr+1 sta ZPPtr1+1 - - jmp (J.KEYWORDS.CONF,x) + + jmp (J.KEYWORDS.CONF,x) CS.RUN.CONF.SERVERNAME >SYSCALL StrDup bcs .9 - + >STYA ZPSrvNamePtr stx hSrvName @@ -309,7 +310,7 @@ CS.RUN.CONF.DOCUMENTROOT >PUSHWI 0 Allocate >SYSCALL RealPath bcs .9 - + >STYA ZPRootDirPtr stx hRootdir @@ -318,7 +319,7 @@ CS.RUN.CONF.DOCUMENTROOT CS.RUN.SERVER lda hSrvSocket >LIBCALL hLIBTCPIP,LIBTCPIP.Accept bcs .8 - + sta CLN.hSocket >SYSCALL GetMemPtr >STYA ZPSktPtr @@ -344,10 +345,10 @@ CS.RUN.SERVER lda hSrvSocket >PUSHB CLN.hSocket >PUSHBI 1 >SYSCALL PrintF - + lda CLN.hSocket >LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown - + .8 clc .9 CS.RUN.SERVER.RTS @@ -356,10 +357,10 @@ CS.RUN.SERVER.RTS CS.RUN.CLIENT >LDYAI 1024 >SYSCALL GetMem bcs CS.RUN.SERVER.RTS - + >STYA ZPRepPtr stx REP.hBuf - + .10 >STZ.G REQ.FullPath stz REQ.hReq stz REQ.KeepAlive @@ -380,84 +381,84 @@ CS.RUN.CLIENT >LDYAI 1024 .3 jsr CS.RUN.REQ.GetLine bcs .4 - + >LDYA ZPLinePtr >STYA ZPPtr2 >LDYA L.KEYWORDS.REQ jsr CS.RUN.GET.KW bcs .3 - + jsr CS.RUN.REQ.JMP bcc .3 bcs .98 - + .4 lda REQ.hReq >SYSCALL FreeMem - + stz REQ.hReq >LDA.G REQ.FullPath beq .9 - + jsr CS.RUN.OpenFile bcs .9 - + jsr CS.RUN.SendFile bcs .99 - + bra .8 -.9 >PUSHWI HTTP.404.len +.9 >PUSHB CLN.hSocket >PUSHW L.HTTP.404 - lda CLN.hSocket + >PUSHWI HTTP.404.len >LIBCALL hLIBTCPIP,LIBTCPIP.Send - + .8 bit REQ.KeepAlive bpl .99 jmp .10 .98 lda REQ.hReq beq .99 - + >SYSCALL FreeMem .99 lda REP.hBuf >SYSCALL FreeMem - + rts *-------------------------------------- CS.RUN.REQ.GetReq sta REQ.hReq >SYSCALL GetMemPtr >STYA ZPRequestPtr - + >PUSHW L.MSG.REQ >PUSHB REQ.hReq >PUSHB CLN.hSocket >PUSHBI 2 >SYSCALL PrintF - + ldy #S.IP.TOTAL.LENGTH+1 lda (ZPRequestPtr),y sec sbc #S.TCP-S.IP eor #$ff sta ZPnRequestLen - + dey - + lda (ZPRequestPtr),y sbc /S.TCP-S.IP eor #$ff sta ZPnRequestLen+1 - + lda ZPRequestPtr clc adc #S.TCP sta ZPRequestPtr bcc .8 - + inc ZPRequestPtr+1 .8 rts *-------------------------------------- @@ -473,15 +474,15 @@ CS.RUN.REQ.GetLine inc ZPRequestPtr bne .21 inc ZPRequestPtr+1 - + .21 cmp #C.CR bne .4 - + inc ZPnRequestLen bne .3 inc ZPnRequestLen+1 beq .9 - + .3 lda (ZPRequestPtr) inc ZPRequestPtr bne .31 @@ -493,11 +494,11 @@ CS.RUN.REQ.GetLine sta (ZPLinePtr),y Y,A = StrLen clc rts - + .4 sta (ZPLinePtr),y iny bra .1 - + .9 sec rts *-------------------------------------- @@ -506,58 +507,58 @@ CS.RUN.OpenFile >PUSHW L.MSG.FILE >PUSHEA.G REQ.FullPath >PUSHBI 3 >SYSCALL PrintF - + >PUSHEA.G REQ.FullPath >PUSHBI O.RDONLY >PUSHBI 0 type >PUSHWZ Aux type >SYSCALL FOpen bcs .9 - + stx REQ.hFile - + >PUSHA >PUSHEA.G REQ.Stat >SYSCALL FStat - + >LEA.G REQ.FullPath >STYA ZPPtr2 ldx #$ff ldy #$ff - + .1 iny lda (ZPPtr2),y beq .2 - + cmp #'.' bne .1 - + tya tax bra .1 .2 txa bpl .3 - + lda #MIME.DEFAULT.ID bra .8 - + .3 sec adc ZPPtr2 sta ZPPtr2 bcc .4 - + inc ZPPtr2+1 - + .4 >LDYA L.MIME.TYPES jsr CS.RUN.GET.KW - + txa - + .8 sta REQ.MimeType - + clc .9 rts *-------------------------------------- @@ -568,28 +569,28 @@ CS.RUN.SendFile >PUSHW ZPRepPtr >PUSHW T.MIME,x >PUSHL.G REQ.Stat+S.STAT.SIZE >PUSHBI 6 - + >SYSCALL SPrintF bcs .9 - + jsr CS.RUN.SendBuf Y,A = car count - + .1 >PUSHB REQ.hFile >PUSHW ZPRepPtr >PUSHWI 1024 >SYSCALL FRead bcs .8 - + jsr CS.RUN.SendBuf bcs .9 bra .1 - + .8 cmp #MLI.E.EOF bne .9 clc - + .9 php pha lda REQ.hFile @@ -598,9 +599,11 @@ CS.RUN.SendFile >PUSHW ZPRepPtr plp rts *-------------------------------------- -CS.RUN.SendBuf >PUSHYA +CS.RUN.SendBuf pha + >PUSHB CLN.hSocket >PUSHW ZPRepPtr - lda CLN.hSocket + pla + >PUSHYA >LIBCALL hLIBTCPIP,LIBTCPIP.Send rts *-------------------------------------- @@ -610,32 +613,32 @@ CS.RUN.REQ.GET ldy #0 .1 iny lda (ZPPtr2),y - + eor #C.SPACE bne .1 - + sta (ZPPtr2),y lda (ZPPtr2) cmp #'/' bne .4 - + >PUSHEA.G REQ.FullPath >PUSHW ZPRootDirPtr >SYSCALL StrCpy >PUSHEA.G REQ.FullPath - + ldy #1 lda (ZPPtr2),y bne .2 - + >LDYA L.INDEX.HTML bra .3 - + .2 >LDYA ZPPtr2 - + .3 >PUSHYA >SYSCALL StrCat rts @@ -649,11 +652,11 @@ CS.RUN.REQ.Connection lda (ZPPtr2) eor #'k' beq .1 - - + + lda #$ff - -.1 sta REQ.KeepAlive + +.1 sta REQ.KeepAlive clc rts @@ -663,18 +666,18 @@ CS.RUN.GET.KW >STYA ZPPtr1 ldx #0 .2 ldy #$ff - + .3 iny lda (ZPPtr1),y cmp (ZPPtr2),y bne .4 - + cmp #0 beq .33 - + cmp #C.SPACE bne .3 - + .33 tya sec adc ZPPtr2 @@ -684,23 +687,23 @@ CS.RUN.GET.KW >STYA ZPPtr1 .8 clc rts - + .4 inx inx - + ldy #0 - + .5 iny lda (ZPPtr1),y bne .5 - + tya sec adc ZPPtr1 sta ZPPtr1 bcc .6 inc ZPPtr1+1 - + .6 lda (ZPPtr1) bne .2 @@ -718,12 +721,12 @@ CS.DOEVENT lda (pEvent) *-------------------------------------- CS.QUIT lda hSrvSocket beq .1 - + >LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown .1 lda hLineBuf beq .2 - + >SYSCALL FreeMem diff --git a/SBIN/TELNETD.S.txt b/SBIN/TELNETD.S.txt index 484a08ef..58d29432 100644 --- a/SBIN/TELNETD.S.txt +++ b/SBIN/TELNETD.S.txt @@ -100,7 +100,7 @@ CS.RUN lda #TIMEOUT.MAX >LDYA L.MSG.TCPIPERR >SYSCALL PutS pla - sec + sec .9 rts CS.RUN.INIT ldx #3 @@ -118,15 +118,15 @@ CS.RUN.INIT ldx #3 >SYSCALL AToI >STYA SA.LOCAL+S.SOCKADDR.PORT -CS.RUN.PORTOK >PUSHBI 0 no protocol - lda #S.SOCKET.T.STREAM +CS.RUN.PORTOK >PUSHBI S.SOCKET.T.STREAM + >PUSHBI 0 no protocol >LIBCALL hLIBTCPIP,LIBTCPIP.Socket bcs .9 sta hSrvSocket + >PUSHA >PUSHW L.SA.LOCAL - lda hSrvSocket >LIBCALL hLIBTCPIP,LIBTCPIP.Bind bcs .9 @@ -146,7 +146,7 @@ CS.RUN.PORTOK >PUSHBI 0 no protocol pha jsr CS.RUN.CLIENT pla - + bcc .2 >LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown bra .2 @@ -155,7 +155,7 @@ CS.RUN.PORTOK >PUSHBI 0 no protocol >LDYA L.MSG.SKTERR >SYSCALL PutS pla - sec + sec rts *-------------------------------------- CS.RUN.CLIENT >SLEEP give some time for TCPIP SYN/ACK diff --git a/SYS/KERNEL.S.BLISTX.txt b/SYS/KERNEL.S.BLISTX.txt index 41534eb9..dd5719ce 100644 --- a/SYS/KERNEL.S.BLISTX.txt +++ b/SYS/KERNEL.S.BLISTX.txt @@ -41,7 +41,10 @@ BLISTX.Free pha .1 lda $ffff,x SELF MODIFIED beq .8 + phx jsr K.FreeMem + + plx inx bra .1 diff --git a/SYS/KERNEL.S.DEV.txt b/SYS/KERNEL.S.DEV.txt index b59413ac..edab5023 100644 --- a/SYS/KERNEL.S.DEV.txt +++ b/SYS/KERNEL.S.DEV.txt @@ -57,22 +57,17 @@ K.GetDevByName >STYA ZPPtr1 requested dev name bcs .7 lda Nod.Table.hFD-2,x - jsr K.GetMemPtr Y,A = pPD, X = hDevNod - - >STYA pFD for IO.Open - -* clc - rts + jmp K.GetMemPtr Y,A = pPD, X = hDevNod .7 inx inx cpx #K.NOD.MAX*2+2 bne .5 -.9 lda #MLI.E.NODEV - sec + lda #MLI.E.NODEV +* sec rts -*-------------------------------------- +*-------------------------------------- .8 >STYA ZPPtr2 ldy #$ff @@ -87,9 +82,9 @@ K.GetDevByName >STYA ZPPtr1 requested dev name clc rts - -.89 sec - + +.89 sec + K.GetDev.9 rts */-------------------------------------- * # GetDevStatus @@ -122,6 +117,37 @@ DEV.GetStatus sta K.S.IOCTL+S.IOCTL.S ldx #IOCTL.STATUS *-------------------------------------- DEV.pDrvJmp jmp (pDrv) +*-------------------------------------- +DEV.OPEN ldx #IOCTL.OPEN + lda IO.hDevNod + jsr DEV.pDrvJmp + bcs .9 + + lda IO.hDevNod + +.9 rts +*-------------------------------------- +DEV.CLOSE ldx #IOCTL.CLOSE + lda IO.hDevNod + jmp (pDrv) +*-------------------------------------- +DEV.READ ldx #IOCTL.READ + .HS 2C BIT ABS +*-------------------------------------- +DEV.WRITE ldx #IOCTL.WRITE + + >PULLW K.S.IOCTL+S.IOCTL.BYTECNT + >PULLW K.S.IOCTL+S.IOCTL.BUFPTR + + inc pStack pop hFD + + >LDYAI K.S.IOCTL + jsr DEV.pDrvJmp + bcs .9 + + >LDYA K.S.IOCTL+S.IOCTL.BYTECNT + +.9 rts */-------------------------------------- * # MKDev * Create a hDEV @@ -147,7 +173,7 @@ K.MKDev jsr SHARED.PullP2P1 ptr2=name,tr1=fd bne .10 bra .9 - + .11 stx IO.hDevNod ldy #$ff @@ -257,9 +283,9 @@ K.IOCTL ldy #3 hDev .9 >RET 4 *-------------------------------------- DEV.GetPFD sta IO.hDevNod - + tax - + lsr bcs .1 @@ -324,12 +350,12 @@ DEV.MkFD.T .DA #S.FD.T.REG,#S.FD.T.DIR,#S.FD.T.PIPE DEV.Destroy ldx IO.hDevNod lda Nod.Table.hName-2,x beq .1 - + stz Nod.Table.hName-2,x jsr K.FreeMem - + ldx IO.hDevNod - + .1 lda Nod.Table.hFD-2,x stz Nod.Table.hFD-2,x jmp K.FreeMem diff --git a/SYS/KERNEL.S.MEM.txt b/SYS/KERNEL.S.MEM.txt index 8ff1c165..aae693de 100644 --- a/SYS/KERNEL.S.MEM.txt +++ b/SYS/KERNEL.S.MEM.txt @@ -337,7 +337,7 @@ K.FreeMem.ERR >PUSHWI K.FreeMem.MSG tya hMem n Y >PUSHA - +* >DEBUG ldy #S.PS.PID lda (pPS),y >PUSHA diff --git a/SYS/KERNEL.S.PIPE.txt b/SYS/KERNEL.S.PIPE.txt index d7fa5cf8..d7b25dea 100644 --- a/SYS/KERNEL.S.PIPE.txt +++ b/SYS/KERNEL.S.PIPE.txt @@ -7,7 +7,6 @@ PIPE.CNT .EQ ZPDRV+4 PIPE.BASEH .EQ ZPDRV+6 PIPE.BUFH .EQ ZPDRV+7 PIPE.SIZEH .EQ ZPDRV+8 -PIPE.nCNT .EQ ZPDRV+10 *-------------------------------------- PIPE.OPEN ldy #S.FD.PIPE.S lda (pFD),y @@ -40,8 +39,8 @@ PIPE.CLOSE ldy #S.FD.PIPE.S *-------------------------------------- PIPE.WRITE ldy #S.FD.PIPE.S lda (pFD),y - bpl .10 + jmp PIPE.eEOF Remote PS closed the Pipe .10 ldy #S.FD.PIPE.Free @@ -233,7 +232,7 @@ PIPE.READ ldy #S.FD.PIPE.Used+1 jsr PIPE.SubCnt PIPE.EXIT >LDYA PIPE.CNT Y,A = bytes written - inc pStack + inc pStack Discard hFILE clc rts *-------------------------------------- diff --git a/SYS/KERNEL.S.SOCK.txt b/SYS/KERNEL.S.SOCK.txt new file mode 100644 index 00000000..9a78bf95 --- /dev/null +++ b/SYS/KERNEL.S.SOCK.txt @@ -0,0 +1,52 @@ +NEW + AUTO 3,1 +*-------------------------------------- +SOCK.OPEN lda IO.hDevNod + clc + rts +*-------------------------------------- +SOCK.CLOSE ldy #S.FD.SSOCK.CLOSE + .HS 2C BIT ABS +*-------------------------------------- +SOCK.EOF ldy #S.FD.SSOCK.EOF + jsr SOCK.SETUP +SOCK.JMP jmp (pDrv) +*-------------------------------------- +SOCK.READ ldy #S.FD.SSOCK.READ + .HS 2C BIT ABS +*-------------------------------------- +SOCK.WRITE ldy #S.FD.SSOCK.WRITE + jsr SOCK.SETUP + + >PUSHA hFD + + phx + + ldx #4 + ldy #4 + +.1 lda (pStack),y + >PUSHA + dex + bne .1 + + plx + jsr SOCK.JMP + + >RET 5 +*-------------------------------------- +SOCK.SETUP lda (pFD),y + tax Function Offset in LIB + + ldy #S.FD.SSOCK.IOH + lda (pFD),y + jsr K.GetMemPtr + >STYA pDrv + + lda IO.hFD + rts +*-------------------------------------- +MAN +SAVE usr/src/sys/kernel.s.sock +LOAD usr/src/sys/kernel.s +ASM diff --git a/SYS/KERNEL.S.STDIO.txt b/SYS/KERNEL.S.STDIO.txt index 0d333b12..f962701c 100644 --- a/SYS/KERNEL.S.STDIO.txt +++ b/SYS/KERNEL.S.STDIO.txt @@ -54,7 +54,7 @@ STDIO.Put1 >PUSHWI K.IOBuf buf inc write 1 byte >PUSHA - jsr K.FWrite +STDIO.Write jsr K.FWrite bcc .9 tay @@ -108,15 +108,7 @@ K.PutS >STYA .1+1 txa >PUSHA - jsr K.FWrite - bcc .99 - - tay - bne .99 - - >POP 5 pop hFile, buffer & len - -.99 rts + bra STDIO.Write */-------------------------------------- * # fputs (BLOCKING) * Write Str to hFILE @@ -166,14 +158,8 @@ K.FPutS lda (pStack) pla >PUSHA push len LO - jsr K.Write - bcc .8 - - tay - bne .8 - - >POP 5 - rts + jsr STDIO.Write + bcs K.FPutS.RTS .8 >POP 2 @@ -381,10 +367,10 @@ K.FOpen jsr PFT.CheckPath4 inc pStack discard filename inc pStack - jmp IO.Open + jmp UNISTD.Open .9 >POP 6 -.99 rts + rts */-------------------------------------- * # FClose * Close a file @@ -399,7 +385,7 @@ K.FOpen jsr PFT.CheckPath4 K.FClose jsr PFT.CheckNodeA bcs K.FRead.RTS - jmp IO.Close + jmp UNISTD.Close */-------------------------------------- * # FRead (BLOCKING) * Read bytes from file @@ -577,7 +563,7 @@ K.FEOF jsr PFT.CheckNodeA .DA STDIO.IOERR BDEV .DA STDIO.IOERR LNK .DA STDIO.IOERR DSOCK - .DA IO.EOF.SSOCK + .DA SOCK.EOF .DA PIPE.EOF */-------------------------------------- * # FTell diff --git a/SYS/KERNEL.S.UNISTD.txt b/SYS/KERNEL.S.UNISTD.txt index a7bfec0b..514b490c 100644 --- a/SYS/KERNEL.S.UNISTD.txt +++ b/SYS/KERNEL.S.UNISTD.txt @@ -21,13 +21,14 @@ K.Open jsr PFT.CheckPath1 stz IO.Open.AUXTYPE stz IO.Open.AUXTYPE+1 *-------------------------------------- -IO.Open ldx #5 /dev/ +UNISTD.Open ldx #5 /dev/ cpx K.MLI.PATH bcs .8 .1 lda K.MLI.PATH,x cmp IO.DEV-1,x bne .8 + dex bne .1 *-------------------------------------- @@ -37,8 +38,10 @@ IO.Open ldx #5 /dev/ jsr K.GetDevByName bcs .9 -*-------------------------------------- - stx IO.hDevNod pFD set by GetDevByName + + >STYA pFD + + stx IO.hDevNod lda (pFD) #S.FD.T tax @@ -47,11 +50,11 @@ IO.Open ldx #5 /dev/ .2 * .DA STDIO.IOERR REG .DA STDIO.IOERR DIR - .DA IO.OPEN.DEV - .DA IO.OPEN.DEV + .DA DEV.OPEN + .DA DEV.OPEN .DA STDIO.IOERR LNK - .DA IO.OPEN.SOCK - .DA IO.OPEN.SOCK + .DA SOCK.OPEN + .DA SOCK.OPEN .DA PIPE.OPEN .8 jmp FS.OPEN.REG @@ -68,16 +71,16 @@ IO.Open ldx #5 /dev/ *\-------------------------------------- K.Close jsr DEV.GetPFD -IO.Close lda (pFD) #S.FD.T +UNISTD.Close lda (pFD) #S.FD.T tax jmp (.1,x) .1 .DA FS.CLOSE.REG .DA FS.CLOSE.DIR - .DA IO.CLOSE.DEV - .DA IO.CLOSE.DEV + .DA DEV.CLOSE + .DA DEV.CLOSE .DA STDIO.IOERR LNK - .DA IO.CLOSE.SOCK - .DA IO.CLOSE.SOCK + .DA SOCK.CLOSE + .DA SOCK.CLOSE .DA PIPE.CLOSE */-------------------------------------- * # read @@ -103,11 +106,11 @@ UNISTD.Read lda (pFD) #S.FD.T jmp (.1,x) .1 .DA FS.READ.REG .DA STDIO.IOERR DIR - .DA IO.READ.CDEV + .DA DEV.READ .DA STDIO.IOERR BDEV .DA STDIO.IOERR LNK .DA STDIO.IOERR DSOCK - .DA IO.READ.SSOCK + .DA SOCK.READ .DA PIPE.READ */-------------------------------------- * # write @@ -133,65 +136,12 @@ UNISTD.Write lda (pFD) #S.FD.T jmp (.1,x) .1 .DA FS.WRITE.REG .DA STDIO.IOERR DIR - .DA IO.WRITE.CDEV + .DA DEV.WRITE .DA STDIO.IOERR BDEV .DA STDIO.IOERR LNK .DA STDIO.IOERR DSOCK - .DA IO.WRITE.SSOCK + .DA SOCK.WRITE .DA PIPE.WRITE -*-------------------------------------- -IO.OPEN.DEV ldx #IOCTL.OPEN - lda IO.hDevNod - jsr DEV.pDrvJmp - bcs IO.RTS -*-------------------------------------- -IO.OPEN.SOCK lda IO.hDevNod - clc - -IO.RTS rts -*-------------------------------------- -IO.CLOSE.DEV ldx #IOCTL.CLOSE - lda IO.hDevNod - jmp DEV.pDrvJmp -*-------------------------------------- -IO.READ.CDEV ldx #IOCTL.READ - .HS 2C BIT ABS -*-------------------------------------- -IO.WRITE.CDEV ldx #IOCTL.WRITE - - >PULLW K.S.IOCTL+S.IOCTL.BYTECNT - >PULLW K.S.IOCTL+S.IOCTL.BUFPTR - - inc pStack pop hFD - - >LDYAI K.S.IOCTL - jsr DEV.pDrvJmp - bcs .9 - - >LDYA K.S.IOCTL+S.IOCTL.BYTECNT - -.9 rts -*-------------------------------------- -IO.CLOSE.SOCK ldy #S.FD.SSOCK.CLOSE - .HS 2C BIT ABS -*-------------------------------------- -IO.EOF.SSOCK ldy #S.FD.SSOCK.EOF - .HS 2C BIT ABS -*-------------------------------------- -IO.READ.SSOCK ldy #S.FD.SSOCK.READ - .HS 2C BIT ABS -*-------------------------------------- -IO.WRITE.SSOCK ldy #S.FD.SSOCK.WRITE - - lda (pFD),y - tax Function Offset in LIB - - ldy #S.FD.SSOCK.IOH - lda (pFD),y - jsr K.GetMemPtr - >STYA .1+1 - lda IO.hFD -.1 jmp $FFFF SELF MODIFIED */------------------------------------- * # LSeek * Set the file-position indicator for hFD @@ -204,7 +154,7 @@ IO.WRITE.SSOCK ldy #S.FD.SSOCK.WRITE * `>PUSHB whence` * `>SYSCALL fseek` *\------------------------------------- -K.LSeek +*K.LSeek */-------------------------------------- * # ChOwn diff --git a/SYS/KERNEL.S.txt b/SYS/KERNEL.S.txt index 561be899..5d31ee32 100644 --- a/SYS/KERNEL.S.txt +++ b/SYS/KERNEL.S.txt @@ -81,6 +81,7 @@ D1.B .PH $D000 .INB usr/src/sys/kernel.s.unistd .INB usr/src/sys/kernel.s.stdio .INB usr/src/sys/kernel.s.dev + .INB usr/src/sys/kernel.s.sock .INB usr/src/sys/kernel.s.pipe .EP D1.S .EQ *-D1.B