From 6da3053e172e95132f10cb1e1ba289274135e4b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Sat, 7 Dec 2019 18:53:45 +0100 Subject: [PATCH] Kernel 0.93+ --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes BIN/NETSTAT.S.txt | 2 +- BIN/PING.S.txt | 90 ++++++++++++++++++++++++--------------- LIB/LIBTCPIP.S.FRM.txt | 4 ++ LIB/LIBTCPIP.S.ICMP.txt | 5 ++- LIB/LIBTCPIP.S.SKT.txt | 4 +- SBIN/TELNETD.S.txt | 2 +- SYS/KERNEL.S.INIT.txt | 4 +- SYS/KERNEL.S.STDIO.txt | 4 +- SYS/KERNEL.S.TERM.txt | 7 +-- SYS/KERNEL.S.TERMLC.txt | 3 +- 11 files changed, 77 insertions(+), 48 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 7e7e92b79772d5eafeb5cb8ac05740c9fb2cb736..87d36f4ec23995d529ec968f7be09010d4ce46fc 100644 GIT binary patch delta 34261 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 Ee}%6TT>t<8 delta 34517 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 HY2WpKU79Lt diff --git a/BIN/NETSTAT.S.txt b/BIN/NETSTAT.S.txt index bc07d945..e535d002 100644 --- a/BIN/NETSTAT.S.txt +++ b/BIN/NETSTAT.S.txt @@ -162,7 +162,7 @@ CS.END libtcpip .az "libtcpip" hLIBTCPIP .BS 1 MSG0 .AZ "Type Prot Local Remote Options Status" -MSG1 .AZ "%s %s %03d.%03d.%03d.%03d:%05D %03d.%03d.%03d.%03d:%05D %b %s\r\n" +MSG1 .AZ "%s %s %3d.%3d.%3d.%3d:%5D %3d.%3d.%3d.%3d:%5D %b %s\r\n" MSG1.T.RAW .AZ "RAW " MSG1.T.DGRAM .AZ "DGRAM " MSG1.T.SEQPKT .AZ "SEQPKT" diff --git a/BIN/PING.S.txt b/BIN/PING.S.txt index 1779e70a..af803567 100644 --- a/BIN/PING.S.txt +++ b/BIN/PING.S.txt @@ -28,6 +28,8 @@ hFrame .BS 1 PingCount .BS 1 TimeOut .BS 1 +IP.Remote .BS 4 + ZS.END .ED *-------------------------------------- * File Header (16 Bytes) @@ -49,9 +51,6 @@ CS.START cld .DA CS.DOEVENT .DA CS.QUIT L.LIBTCPIP .DA LIBTCPIP -L.SA.LOCAL .DA SA.LOCAL -L.SA.REMOTE .DA SA.REMOTE -L.SA.REMOTE.AD .DA SA.REMOTE+S.SOCKADDR.ADDR L.MSG.IPKO .DA MSG.IPKO L.MSG.USAGE .DA MSG.USAGE L.MSG.UNKNOWN .DA MSG.UNKNOWN @@ -71,7 +70,7 @@ CS.INIT >LDYA L.LIBTCPIP CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG is TCPIP loaded ? >STYA ZPIPCfgPtr lda (ZPIPCfgPtr) Configured ? - bmi CS.RUN.IPOK + bmi .1 >LDYA L.MSG.IPKO >SYSCALL puts @@ -79,6 +78,14 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG is TCPIP loaded ? sec rts +.1 ldy #DATA.Len-1 + +.2 lda ICMP.Request,y + sta (pData),y + dey + bpl .2 + + CS.RUN.IPOK inc ArgIndex lda ArgIndex >SYSCALL ArgV @@ -106,7 +113,7 @@ CS.RUN.IPOK inc ArgIndex .1 lda #TIMEOUT.MAX sta Timeout -.2 >PUSHW L.SA.REMOTE.AD +.2 >PUSHEA.G SA.REMOTE+S.SOCKADDR.ADDR >PUSHW ZPTmpPtr >LIBCALL hLIBTCPIP,LIBTCPIP.HST.GETBYNAME bcc .3 @@ -124,7 +131,7 @@ CS.RUN.IPOK inc ArgIndex sta ArgHostName bra CS.RUN.IPOK -.8 lda SA.REMOTE+S.SOCKADDR.ADDR +.8 >LDA.G SA.REMOTE+S.SOCKADDR.ADDR bne CS.RUN.ARGSOK .9 >PUSHBI 0 @@ -140,9 +147,11 @@ CS.RUN.ARGSOK lda ArgHostName >PUSHYA ldx #3 + ldy #SA.REMOTE+S.SOCKADDR.ADDR+3 -.1 lda SA.REMOTE+S.SOCKADDR.ADDR,x +.1 lda (pData),y >PUSHA + dey dex bpl .1 @@ -154,19 +163,30 @@ CS.RUN.OPENSKT ldx #3 ldy #S.IPCFG.IP+3 .1 lda (ZPIPCfgPtr),y - sta SA.LOCAL+S.SOCKADDR.ADDR,x + sta IP.Remote,x dey dex bpl .1 + ldx #3 + ldy #SA.LOCAL+S.SOCKADDR.ADDR+3 + +.2 lda IP.Remote,x + sta (pData),y + dey + dex + bpl .2 + lda A2OSX.RANDOM16 - sta SA.LOCAL+S.SOCKADDR.PORT - sta SA.REMOTE+S.SOCKADDR.PORT + eor A2osX.TIMER16+1 + >STA.G SA.LOCAL+S.SOCKADDR.PORT + >STA.G SA.REMOTE+S.SOCKADDR.PORT sta Identifier lda A2OSX.RANDOM16+1 - sta SA.LOCAL+S.SOCKADDR.PORT+1 - sta SA.REMOTE+S.SOCKADDR.PORT+1 + eor A2osX.TIMER16 + >STA.G SA.LOCAL+S.SOCKADDR.PORT+1 + >STA.G SA.REMOTE+S.SOCKADDR.PORT+1 sta Identifier+1 >PUSHBI S.IP.PROTOCOL.ICMP @@ -176,30 +196,25 @@ CS.RUN.OPENSKT ldx #3 sta hSocket - >PUSHW L.SA.LOCAL + >PUSHEA.G SA.LOCAL lda hSocket >LIBCALL hLIBTCPIP,LIBTCPIP.Bind bcs .9 - >PUSHW L.SA.REMOTE + >PUSHEA.G SA.REMOTE lda hSocket >LIBCALL hLIBTCPIP,LIBTCPIP.Connect - bcc CS.RUN.SEND + bcc CS.RUN.SEND.ECHO .9 >LDYA L.MSG.SKTKO >SYSCALL puts lda #E.SYN sec rts - -CS.RUN.SEND ldy #ICMP.RequestLen-1 - -.1 lda ICMP.Request,y - sta (pData),y - dey - bpl .1 CS.RUN.SEND.ECHO + >SLEEP + lda Identifier >STA.G Request-S.IP+S.ICMP.IDENTIFIER+1 @@ -288,8 +303,11 @@ CS.DOEVENT lda (pEvent) *-------------------------------------- CS.Print.UNREACH ldx #3 + ldy #SA.REMOTE+S.SOCKADDR.ADDR+3 -.1 >PUSHB SA.REMOTE+S.SOCKADDR.ADDR,x +.1 lda (pData),y + >PUSHA + dey dex bpl .1 @@ -367,16 +385,6 @@ MSG.UNREACH .AZ "%d.%d.%d.%d: TimeOut/Host unreachable\r\n" MSG.REPLY .AZ "32 bytes from %d.%d.%d.%d, icmp_seq=%D, ttl=%d, time=%D ms\r\n" hLIBTCPIP .BS 1 *-------------------------------------- -SA.LOCAL .DA #AF.INET S.SOCKADDR.AF - .BS 1 - .BS 4 S.SOCKADDR.ADDR - .BS 2 S.SOCKADDR.PORT -*-------------------------------------- -SA.REMOTE .DA #AF.INET S.SOCKADDR.AF - .BS 1 - .BS 4 S.SOCKADDR.ADDR - .BS 2 -*-------------------------------------- ICMP.Request .DA #S.ICMP.TYPE.ECHOREQ .DA #0 CODE .DA 0 CHECKSUM @@ -385,13 +393,25 @@ ICMP.Request .DA #S.ICMP.TYPE.ECHOREQ .AS "ABCDEFGHIJKLMNOP" .AS "QRSTUVWXYZ012345" ICMP.RequestLen .EQ *-ICMP.Request +*-------------------------------------- + .DA #AF.INET S.SOCKADDR.AF + .BS 1 + .BS 4 S.SOCKADDR.ADDR + .BS 2 S.SOCKADDR.PORT +*-------------------------------------- + .DA #AF.INET S.SOCKADDR.AF + .BS 1 + .BS 4 S.SOCKADDR.ADDR + .BS 2 +DATA.Len .EQ *-ICMP.Request *-------------------------------------- .DUMMY .OR 0 DS.START Request .BS ICMP.RequestLen -DS.END - .ED +SA.LOCAL .BS S.SOCKADDR +SA.REMOTE .BS S.SOCKADDR +DS.END .ED *-------------------------------------- MAN SAVE USR/SRC/BIN/PING.S diff --git a/LIB/LIBTCPIP.S.FRM.txt b/LIB/LIBTCPIP.S.FRM.txt index e308f750..f8d0cd36 100644 --- a/LIB/LIBTCPIP.S.FRM.txt +++ b/LIB/LIBTCPIP.S.FRM.txt @@ -19,18 +19,22 @@ FRM.GetTargetSKT.TCPUDP FRM.GetTargetSKT.RAW ldy #S.IP.SRC+3 ldx #3 + .1 lda (ZPFrameInPtr),y sta SKT.REM.ADDR+S.SOCKADDR.ADDR,x dey dex bpl .1 + ldy #S.IP.DST+3 ldx #3 + .2 lda (ZPFrameInPtr),y sta SKT.LOC.ADDR+S.SOCKADDR.ADDR,x dey dex bpl .2 + rts *-------------------------------------- * FRM.NewIP diff --git a/LIB/LIBTCPIP.S.ICMP.txt b/LIB/LIBTCPIP.S.ICMP.txt index b684ed2f..96fc1aa2 100644 --- a/LIB/LIBTCPIP.S.ICMP.txt +++ b/LIB/LIBTCPIP.S.ICMP.txt @@ -41,12 +41,13 @@ ICMP.IN.ECHOREQ ldy #S.IP.DST+3 ICMP.IN.EXIT jmp FRM.DiscardIn *-------------------------------------- ICMP.IN.ECHOREP jsr FRM.GetTargetSKT.RAW + ldy #S.ICMP.IDENTIFIER lda (ZPFrameInPtr),y - sta SKT.LOC.ADDR+S.SOCKADDR.PORT+1 + sta SKT.REM.ADDR+S.SOCKADDR.PORT+1 iny lda (ZPFrameInPtr),y - sta SKT.LOC.ADDR+S.SOCKADDR.PORT + sta SKT.REM.ADDR+S.SOCKADDR.PORT jsr SKT.FindMatchingLocRem bcs ICMP.IN.EXIT diff --git a/LIB/LIBTCPIP.S.SKT.txt b/LIB/LIBTCPIP.S.SKT.txt index 8cd69c86..71b75dc2 100644 --- a/LIB/LIBTCPIP.S.SKT.txt +++ b/LIB/LIBTCPIP.S.SKT.txt @@ -1235,12 +1235,14 @@ SKT.FindMatchingLocRem lda (ZPPtrSKT),y bne .44 + .43 ldy #S.SOCKET.REM.PORT Frame is Broadcast, or listening is 0.0.0.0 check port only .42 lda (ZPPtrSKT),y .44 cmp SKT.REM.ADDR+S.SOCKADDR.ADDR-S.SOCKET.REM.ADDR,y bne .8 wrong remote host, exit.... + iny cpy #S.SOCKET.REM.PORT+2 bne .42 @@ -1253,7 +1255,7 @@ SKT.FindMatchingLocRem cpx #K.SKTTABLE.SIZE bne .1 -.9 sec +* sec rts *-------------------------------------- SKT.AddToQueueA pha diff --git a/SBIN/TELNETD.S.txt b/SBIN/TELNETD.S.txt index 40af3d04..a5fa0f9e 100644 --- a/SBIN/TELNETD.S.txt +++ b/SBIN/TELNETD.S.txt @@ -243,7 +243,7 @@ MSG.INCOMING .AZ "TELNETD:Incoming Connection [SKT=%h] From : %d.%d.%d.%d\r\n" MSG.EXECERR .AZ "TELNETD:ExecL failed $%h." *-------------------------------------- NOD.Template .AZ "/dev/tty%h" -CMD.Template .AZ "${ROOT}SBIN/GETTY -E %s ${ROOT}SBIN/LOGIN" +CMD.Template .AZ "${ROOT}sbin/getty -E %s ${ROOT}sbin/login" *-------------------------------------- SA.LOCAL .DA #AF.INET S.SOCKADDR.AF .BS 1 diff --git a/SYS/KERNEL.S.INIT.txt b/SYS/KERNEL.S.INIT.txt index 248b349c..cd973f9e 100644 --- a/SYS/KERNEL.S.INIT.txt +++ b/SYS/KERNEL.S.INIT.txt @@ -971,9 +971,9 @@ EvtMgrInit >LDYAI MSG.EVT >SYSCALL2 puts stz CORE.EvtCount lda #$A5 - sta A2osX.TIMER16 + sta A2osX.RANDOM16 lda #$9B - sta A2osX.TIMER16+1 + sta A2osX.RANDOM16+1 lda /Evt.Table sta pEvent+1 diff --git a/SYS/KERNEL.S.STDIO.txt b/SYS/KERNEL.S.STDIO.txt index 5a1be2ae..5ceb14bc 100644 --- a/SYS/KERNEL.S.STDIO.txt +++ b/SYS/KERNEL.S.STDIO.txt @@ -404,9 +404,9 @@ PrintF.ESC jmp (.1,x) *-------------------------------------- PrintFTBL1 .AS "bdDuefhHiILsS" PrintFTBL1.Cnt .EQ *-PrintFTBL1 -PrintFTBL2 .AS "befnrtv\%" +PrintFTBL2 .AS "abefnrtv\%" PrintFTBL2.Cnt .EQ *-PrintFTBL2 -PrintFTBL2.OUT .HS 08.1B.0C.0A.0D.09.0B \b\e\f\n\r\t\v +PrintFTBL2.OUT .HS 07.08.1B.0C.0A.0D.09.0B \a\b\e\f\n\r\t\v .DA #'\' \\ .DA #'%' \% *-------------------------------------- diff --git a/SYS/KERNEL.S.TERM.txt b/SYS/KERNEL.S.TERM.txt index aacf6a18..c80b53f7 100644 --- a/SYS/KERNEL.S.TERM.txt +++ b/SYS/KERNEL.S.TERM.txt @@ -180,14 +180,15 @@ DRV.TERM.READ jsr DRV.TERM.GetIOCTLBufCntDCB lda OPENAPPLE bpl .1 - lda KBD - bmi .6 Open apple key, not for us... jsr DRV.TERM.Title.ON - bra .6 + + bra .6 Open apple key, not for us... + .1 jsr DRV.TERM.Title.OFF lda KBD + sta A2osX.RANDOM16 bpl .6 sta KBDSTROBE diff --git a/SYS/KERNEL.S.TERMLC.txt b/SYS/KERNEL.S.TERMLC.txt index d495c40b..ccbf4e71 100644 --- a/SYS/KERNEL.S.TERMLC.txt +++ b/SYS/KERNEL.S.TERMLC.txt @@ -149,7 +149,8 @@ SetCharAtCurPos pha cpy #80 bcs SetCharAtYX.8 *-------------------------------------- -SetCharAtYX cmp #$40 +SetCharAtYX ror A2osX.RANDOM16+1 + cmp #$40 bcc .1 cmp #$60 bcs .1