From 132294a2b0ca60fb06ff27d9d129a870ed8611fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Tue, 11 Sep 2018 15:32:56 +0200 Subject: [PATCH] Kernel 0.9.2 --- .Floppies/A2OSX.BUILD.po | Bin 819200 -> 819200 bytes .Floppies/A2OSX.SRC.po | Bin 819200 -> 819200 bytes BIN/PING.S.txt | 158 ++++++++++++++++++++++----------------- INC/KERNEL.I.txt | 6 +- README.md | 2 +- SYS/KERNEL.S.BIN.txt | 2 +- 6 files changed, 94 insertions(+), 74 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index beb2371f677c17e4795e713319ec26889e94dcb9..062425a1be98fbaedc6614bb13ae2e0bd564fa20 100644 GIT binary patch delta 961 zcmXw0T}TvB6uxtJ_D@%L{Hx8}T%vrq2-(_8FSbz>1w!}E+RHg-zI)F3zVl5a5{N_s z$yYqzbin70z2;xif-jDZ+HcYV7N@uEK}Sr0_H@YecA|_2Z9KRmHVP8h1c;8L%V$Gw zYb4$NEORedHVMxAPhYs?zdG)3?YMgkluhjb=Pckj*!^$^ICI5+57Y3x>m4_n9fqLDCV-PX0Dg219TPu_MN*|K%T>}5saqP7 zV$uicsRY2h4;g!qK7l|cSro01Q)_NGzUB+hSID{p*)sPxMn0!DTDncM%tHH z4Tdo=Nwr4w6q_5mpBvds<(8YXdoX9_@&n5)!q|=FP_nndi#d%%-lM;<$j{1nXN}7< z%r@_%o5w^XWDqBftCK>$|u`@n61M7~^ zGXwO@L0$qz=2NzhCGO za~E}s$y)59cjhR9T?tA|y(W2kC~v3!Jg5tXQy&C3E}@t$q>*4)=dr^i1p~6b61-(V zBQlx_#)T90L0s~k;8JUsS0hjJyK$*We0|-+xKtx!PVBXQ@=EqAtE^3hgm;eu^t%>JB&B|kAH(UnCvYJ?^B8ue1vta0icM8`Rk5pzLsgur R;!+j2suZb8@toq3{{e!5lJEck delta 829 zcmYjNO-NKx6u$3obbiz^2AeeN&byA}1cM9~lbfQNP!P=wiFk{VYT=?qv}hGhq>q7^ z@Hyb9Azq%1G%&B`%}_!zhT4xBl|;C>xv(FMeyFJyu8Qt;g4*13&Ufzl&i9>2BoK)N zGIOH1$6N1=KN25^4PKWu9+fUo#N*2Sl7bda%ikp=4xmOWT~T$e-s^Wx_dMg0D}4Yg@MYjoDFA+W4F2#8$qRB0 zEuiP}7g<1V6hIeID*_;b73p2j z*bQ|b{g-+X4C8WhwQv&VE!rm08XKA0MiR<&CrIK>&q#T3I(3yw#<-wPU z)QI5ei`df;8lHb_{|%0?X)Nf1NyhVt713qq&ywgjA&Kp^>;W!I$k7HG(ZBi9JD!^j$=_G-#4u zppn=TL$*!=ac6?}oTnTC%8}`!81rV0|`Bp*tgndHZZPYXT6 p4|(gf^(Mc0car0IRS{H0R24~8EUHqXDy6DoRTZ16*ryan-5(0GR~!HU diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index 293ca09f59d6edce05dbfc999316d75dc4ff99ff..4bf83dd8c764a3017578752ee0baf66cb265c018 100644 GIT binary patch delta 4564 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 delta 4078 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 hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ? sec rts -CS.RUN.IPOK ldy #S.PS.ARGC - lda (pPs),y +CS.RUN.IPOK +.1 >INC.G ArgIndex + >SYSCALL GetArg + bcs .8 + >STYA ZPTmpPtr + + lda (ZPTmpPtr) + cmp #'-' + bne .2 + ldy #1 + lda (ZPTmpPtr),y beq .9 + + cmp #'0' + bcc .9 + cmp #'9'+1 + bcs .9 + + and #$0F + >STA.G PingCount + bra .1 jsr Init.Timeout - -.2 >PUSHW pData DST.IP - lda #1 - >SYSCALL GetArg - >PUSHYA + +.2 >PUSHEA.G DST.IP + >PUSHW ZPTmpPtr >LIBCALL hLIBTCPIP,LIBTCPIP.HST.GETBYNAME - bcc CS.RUN.HOSTOK + bcc .3 >SLEEP jsr Wait.Timeout bcc .2 - lda #1 - >SYSCALL GetArg - >PUSHYA + >PUSHW ZPTmpPtr >PUSHBI 2 >LDYA L.MSG.UNKNOWN - >SYSCALL printf bra .99 -.9 >LDYA L.MSG.USAGE - >SYSCALL puts +.3 >LDA.G ArgIndex + >STA.G ArgHostName + jmp .1 + +.8 >LDA.G DST.IP + bne CS.RUN.ARGSOK + +.9 >PUSHBI 0 + >LDYA L.MSG.USAGE + +.99 >SYSCALL printf -.99 lda #K.E.SYN + lda #K.E.SYN sec rts -CS.RUN.HOSTOK lda #1 +CS.RUN.ARGSOK >LDA.G ArgHostName >SYSCALL GetArg >PUSHYA @@ -151,8 +172,7 @@ CS.RUN.OPENSKT ldx #3 rts .2 txa - ldy #hSocket - sta (pData),y + >STA.G hSocket CS.RUN.SEND.ECHO ldy #Identifier @@ -177,8 +197,7 @@ CS.RUN.SEND.ECHO jsr Init.Timeout - ldy #hSocket - >PUSHB (pData),y + >PUSHB.G hSocket >PUSHW L.ICMP.Request >PUSHWI ICMP.RequestLen @@ -192,47 +211,44 @@ CS.RUN.WAIT.REPLY >SYSCALL GetChar bcs .1 cmp #3 Ctrl-C - beq .9 + beq CS.RUN.ERR CS -.1 ldy #hSocket - lda (pData),y +.1 >LDA.G hSocket >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.Rcvd - bcs .2 + bcc .2 + jsr Wait.Timeout + bcc CS.RUN.WAIT.REPLY + + jsr CS.Print.UNREACH + bcs CS.RUN.ERR + bra .7 - ldy #hFrame - sta (pData),y +.2 >STA.G hFrame >SYSCALL GetMemPtr - >STYA ZPFrameBase + >STYA ZPTmpPtr jsr CS.Print.REPLY bcs CS.RUN.ERR - ldy #hFrame - lda (pData),y + >LDA.G hFrame >SYSCALL FreeMem - ldy #hFrame - lda #0 + >STZ.G hFrame + +.7 >LDA.G PingCount + beq .8 + dec + beq .9 A=0 sta (pData),y - jmp CS.RUN.SEND.ECHO +.8 jmp CS.RUN.SEND.ECHO -.2 jsr Wait.Timeout - bcc CS.RUN.WAIT.REPLY - - jsr CS.Print.UNREACH - bcs CS.RUN.ERR - - jmp CS.RUN.SEND.ECHO - -.9 lda #0 - sec +.9 sec CS.RUN.ERR rts *-------------------------------------- CS.DOEVENT lda (pEvent) bpl .9 is it a TIMER event? - ldy #TimeOut - lda (pData),y + >LDA.G TimeOut beq .9 dec @@ -263,7 +279,7 @@ CS.Print.REPLY lda #TIMEOUT.MAX >STZ.G TimeOut.ms >STA.G TimeOut.ms+1 - tay + tax beq .3 .1 >LDA.G TimeOut.ms @@ -273,23 +289,23 @@ CS.Print.REPLY lda #TIMEOUT.MAX bcc .2 >INC.G TimeOut.ms+1 -.2 dey +.2 dex bne .1 .3 >PUSHW.G TimeOut.ms ldy #S.IP.TTL - >PUSHB (ZPFrameBase),y + >PUSHB (ZPTmpPtr),y ldy #S.ICMP.SEQUENCE+1 - >PUSHB (ZPFrameBase),y + >PUSHB (ZPTmpPtr),y dey - >PUSHB (ZPFrameBase),y + >PUSHB (ZPTmpPtr),y ldx #4 ldy #S.IP.SRC+3 -.4 >PUSHB (ZPFrameBase),y +.4 >PUSHB (ZPTmpPtr),y dey dex bne .4 @@ -299,30 +315,30 @@ CS.Print.REPLY lda #TIMEOUT.MAX >SYSCALL printf rts *-------------------------------------- -CS.QUIT ldy #hFrame - lda (pData),y +CS.QUIT >LDA.G hFrame beq .1 >SYSCALL FreeMem -.1 ldy #hSocket - lda (pData),y +.1 >LDA.G hSocket + beq .2 >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.Close - lda hLIBTCPIP +.2 lda hLIBTCPIP + beq .8 + >SYSCALL UnloadLib - clc + +.8 clc rts *-------------------------------------- -Init.Timeout ldy #TimeOut - lda #TIMEOUT.MAX - sta (pData),y +Init.Timeout lda #TIMEOUT.MAX + >STA.G TimeOut rts *-------------------------------------- Wait.TimeOut sec - ldy #TimeOut - lda (pData),y + >LDA.G TimeOut beq .9 clc @@ -331,7 +347,8 @@ Wait.TimeOut sec CS.END LIBTCPIP .AZ "libtcpip.o" MSG.IPKO .AZ "TCP/IP Not Loaded/Configured." -MSG.USAGE .AZ "Usage : PING " +MSG.USAGE .AS "Usage : PING \r\n" + .AZ " -1-9 : Ping Count\r\n" MSG.UNKNOWN .AZ "%s: Unknown host\r\n" MSG.HOSTOK .AZ "PING %d.%d.%d.%d (%s)\r\n" MSG.SKTKO .AZ "Failed to Open Socket." @@ -360,6 +377,9 @@ ICMP.RequestLen .EQ *-ICMP.Request .DUMMY .OR 0 DS.START +ArgIndex .BS 1 +PingCount .BS 1 +ArgHostName .BS 1 DST.IP .BS 4 hSocket .BS 1 hFrame .BS 1 diff --git a/INC/KERNEL.I.txt b/INC/KERNEL.I.txt index 3ac87f44..e2201860 100644 --- a/INC/KERNEL.I.txt +++ b/INC/KERNEL.I.txt @@ -150,9 +150,9 @@ H.BIN.CPU.6502 .EQ $60 H.BIN.CPU.65C02 .EQ $61 H.BIN.CPU.65R02 .EQ $62 H.BIN.CPU.65816 .EQ $63 -*H.BIN.VERSION .EQ 5 -H.BIN.CODE.LEN .EQ 8 -* +H.BIN.V .EQ 5 +H.BIN.F .EQ 6 +H.BIN.CS.SIZE .EQ 8 H.BIN.DS.SIZE .EQ 10 H.BIN.SS.SIZE .EQ 12 H.BIN.ZP.SIZE .EQ 13 diff --git a/README.md b/README.md index e290d259..524ea0ac 100644 --- a/README.md +++ b/README.md @@ -347,7 +347,7 @@ note : '$VAR' does NOT expand Variable | NETSTAT | Working | | 0.92 | | ARP | Working | dump ARP cache, setup a static ARP entry | 0.92 | | DNSINFO | Working | dump DNS cache, setup a static DNS entry | 0.92 | -| PING | Working | | 0.92 | +| PING | Working | -1..9 : Ping Count | 0.92 | | TELNET | Working | | 0.92 | ## DEV tools: diff --git a/SYS/KERNEL.S.BIN.txt b/SYS/KERNEL.S.BIN.txt index 57f0c39a..0587f907 100644 --- a/SYS/KERNEL.S.BIN.txt +++ b/SYS/KERNEL.S.BIN.txt @@ -242,7 +242,7 @@ BIN.Load.1 >PUSHWI K.S.STAT sbc BIN.R.CS.Start+1 sta BIN.R.Offset+1 - ldy #H.BIN.CODE.LEN get Code Len + ldy #H.BIN.CS.SIZE get Code Len lda (ZPPtr1),y clc adc BIN.R.CS.Start