From a4c15ff86adba3d5995e2fbd80645ec99c1fa281 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Fri, 15 Nov 2019 08:17:31 +0100 Subject: [PATCH] Kernel 0.93+ --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes BIN/PING.S.txt | 211 +++++++++++++++++++++++---------------- 2 files changed, 123 insertions(+), 88 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index d37829b6c783f7769de52b1a06a06d99b135101f..35f86ddb375ef6dc14943b2a728b20970003e356 100644 GIT binary patch delta 6538 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 WLjFrGl3&Sh zlhP%vv|@)H*4ka|vb&|r(c0bGU4LD_@5@VYw10f^UhX*O+;h)8=e|{c{u8wdZ2uxG zY*9*7^aJ07Wh-ILDWjquNY&X7_}^B0j$Gk6qU`h>2|0gk^vW=C&T#ucAr1@Mf|LPK zJKwQ{X6CeIhenF2LWoS8+cqaT%${v`ISL&`j&jE|d#%0QewTfZU2(i?7h;>$))Qyz zy51&sZ4ccz)ls``s-sJ13*B}3fi(wr97vDamTc>>+qyhj$#>o3=luQ|Uc)v}tep=El8~w@22cMs+IfeXHKErP}4j%Fu*1NKJ&)&B?at zUAA=l=C|%V{QQSoKD_gg`r93%{%#v#>q)V#N>o*JhP3w;&$jgxIrdw+g}>Kf>ltqA zni;esq*pUS?Ymz6=?ZX18PQzUbdN!+XBl zy)oahvCPrl_hQfYyEhg%HhS>ht*G<5h3W(w%-ue@Gqk<0peMnmw)e#QAM@1SWVJW3 z=QOP&(f{ZS?d?7x7!==p4}7m(?WN`!>#0Tl{a; z4tPsjZ1+gNz9db$?Ih`$s^%sPg(o`=y>E2os9P~}>wZJm2=%RWZ|Kn(K~vIIQzC8Y zZT8Kt+m$%8HVlq6eHEmvt6CMeQ0MGe0c;donhTD30v8BG<@>WaBRVSNm;c! z-ijXBIS_53liT~UYESZWnBUJ%ThCa{&$ZnRS)Bua= zGorn3^8nbaM$o?fU#f5F{I%MnGp5%c4V|glbFI9MLKAYv*m}|e!c{|$hHIw6*GKiL zw?|=#JyRWMzX40I!h+6$?R~W{10$53M<{e}2-k#iP1wUV;l=0r57ti4BjHMD^p|mB z>F|+yyEq(MvmiwmwX^Q=@C|K~twvGfDfGDK%=NUktaIj-`)WMX3QL96g!alsOVGNZ zzjbt`7;F|bUT0ou?k1_rscsKBEm7V!#+WD{$*CT7*A!idJeV;kR(^aeJXuD+93Ca3 z{tPdW7k25ALd+xNZQsY4@0Mb zc$^iDOP4n;Yh`Dy%XeafNJx|AD@x-PryMd>m#B=Ddwv-_EM!=^ESstus$|G!wKY?& zS0Cf#)~Pz1e!S>V#iYygo98!$oOy8 zIcjHo@Gg}Pu2B)Q`2t%c+v|eqGstUGer;N@J1`3#i z8P%eruDQWyccf1jmYIIrT+V!-r>S|ad-3w-RuMT1gInr+&WzQba|70l6Nd9tHN|;(9$~4K zO19DLtP6Bz3UmFxMGS5Tv`s7YWeRJfd@8dbW_skDfMMC$B4(~|j*~gXxvK4Od0}%y z;|dWwPgPVIXe(H}thKamQKK+4iH`Yjt}{b8=F7TVojqj%M8U&>-E>vtd&`PM^g`jx zmj3lXak_|EBwgl2b4YBnd@5HLvuKI7ZT38;cUGy;FBKij8ta9=MRc^ZE)$N{U~p*S zt~hR8za_@ys(~j)O62*0rOt8*!v(5>6+ZhoF=B;u<>`i}tqkGm z=AG%RaFynkm1Im5Nmr`E;^p?ABEv(H*Gb=Woo#|~JzUp{1F$5wuC*?843umT9Zk(E zMcl^!l7bMnZ|av57LNapt5i|LV)1I+e5$lz?Q(R!ZfM*VO_<&5^p?4c@+zH`Fsxdn zT&+gvP`N5!r%$;Ct5Q#DwlH0*ZjL{C=6M&_FKBEP`s+l;l6iF^MoQNnojF2(J^nAO z6T>_F5{%QDnj3`ShJF#TH_CtVbry^1CWz94Gbn20&6?8mi3NIV+%4*q`e6Kdkwu+( z?t(H|`)B^-HhothvToNR%Y0{W8~X=}n7jHloUjS;cWbUVF-tlNbKxZYR?Wf2Zp|mh zU2nbTlsRq4wU{K#_x7vssu{SszESA6X{H%^kVYEnefD%=yic2dTw?tFr$|%6w{0U8gAShCs8=4!?<7sJXZgp0bR^++d1;X^^zf3Z`g(kJSOcLg| zQCwv3#7%EeQ+4b+(p54c#`CV~jFXCH?0csu(Hv`f|6eMM9|U*OH&2sl`B371Vrnyf zRg#MtK{^~{4p+Hmi8rK-q#xCCg#HIjiup%X{>j^5_(=^le_cuaS&sFUj-32UAgBL| zMFon@4x-_wT6rnDqT_HOa0611$26Qr*zDzhD^FHRNwq z2kt5A6`>5L(D)BJX4jvP<70%PZmR12z#!+MWx}fXTh*F8M{=?-PS`ik6l#(owz#{D)*=&_kXU+17y=P+00dRdqy!g240_ zTLT9B&zXpiRMZ=XKd+oHAr9(|gB5MU+ z)SZVFT89J%4H{@v)KcriT|3Z}WH77quxI0i*>YS21XQ?Ds^eqi6pt=$RIGoZ&|B3f zoD~69}_StO*1OVDR=&AvbBvpbxValJuosu8)?o| zs_Oz*Rm9<1H8@S8C5Q?p|G5h;xc8PuE%HkL5axa)#7b=xiZ5itP0)ObKzGDZLfCG<-|=Ds-v% zmbkY99~#r-R~5SQM7PrKhxN{BULV3eS5ujiC(m9HF(Puh(xG+4=POdVInt^W$mTyx zaRUpraU*BQ&3~9uB8&RR75m4d7i$Tkl;@aLOJE?utv2aQ^b2u?(mjt9hZrON=R{eeaWtA?%cfT`2~eDii%50 z%RI>(;uPuKw`TFy}i1#jD%v~feuRRWQ@MQeyYPtmeJ z2Gpy*H`gl1?@;Ts1sm&>;HAf}FH;PetptK6Aje!EY(NeQOp9nxO;#gD--u=8;WTDq$*RDr536 zl`~Z^d6_Dis+fqWnrSA}ET$T!vzX3iI)~|8rt_F;nd+EkGu1OSFf}sGVVcV{kEw}i zKGOoGg-nZ>nwb_eEn!;9)WWoksg-Ft)A>vnFs)!($#fypMNAhnUBYxJQybGNCLhyf zOsknLXIjI=Ojj_iWxA4S9n*TI4NM!EHZfhrw3(@$X$#ZUOxG}7%XA%+WV)WIgXspQ z8<}omx|!(~rdydhnQmk1V!EB_4yHSq?qa%|X)9AV(>+Z0GHqk(VY-j$ex~hAy-Yip z9$_vnRYTg!t^N9V@!`T?P7X@X*bi8OnaD~VtShC8K!5Mo@08R=>?`2nf5a6 zV|t0{Wu{k{US)cXX+P8JOm8r~$@CV}+f45;z033-)B8+)Odl|P$n+7@$4s9v9bh`h zbcpFN)2B?IF&$z0oaqauFPXk#`kLt*rf-?PWBQ)yDANy2KQjHq^fS{hOusVy#`HVW zF{b}9{lWAn(_c(~GySuUlue|75D*H&KseBW0YDE1f(T#$kzf!Q45C0Z7y^vI1kAt! zVn8ggf;bQl51*5=dFb1RnCm0LTK?cYKvp@|v3!Dwk0q27AKrN^Pvq3#*0F7V{m<#5CCNLi?01Lq)&N8ta4*;f zdcb|)ey|<%f*s%i@E~{yJPdY%N5G@tG4MFp1)c!A!INMQcnUlXo&nE-=fLye1@I!+ z3-*DRz{}tj@G5u>><6!dH^7_VE$}vY2fPd31Mh=A@B#P`d;~rQpMV44AUFgLgHOR{ z;0X8}d;z`$UxBZ|H{e_F9rzv`1wViv!B604@C*1A{04pp$H4!rnsz diff --git a/BIN/PING.S.txt b/BIN/PING.S.txt index 591b7dcf..4947bf2a 100644 --- a/BIN/PING.S.txt +++ b/BIN/PING.S.txt @@ -15,8 +15,19 @@ TIMEOUT.MAX .EQ 100 10 sec. .DUMMY .OR ZPBIN ZS.START -ZPIPCfgPtr .EQ ZPBIN -ZPTmpPtr .EQ ZPBIN+2 +ZPIPCfgPtr .BS 2 +ZPTmpPtr .BS 2 +Identifier .BS 2 +Sequence .BS 2 + +TimeOut.ms .BS 2 +ArgIndex .BS 1 +ArgHostName .BS 1 +hSocket .BS 1 +hFrame .BS 1 +PingCount .BS 1 +TimeOut .BS 1 + ZS.END .ED *-------------------------------------- * File Header (16 Bytes) @@ -41,7 +52,6 @@ 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.ICMP.Request .DA ICMP.Request L.MSG.IPKO .DA MSG.IPKO L.MSG.USAGE .DA MSG.USAGE L.MSG.UNKNOWN .DA MSG.UNKNOWN @@ -62,19 +72,22 @@ 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 sec rts -CS.RUN.IPOK -.1 >INC.G ArgIndex + +CS.RUN.IPOK inc ArgIndex + lda ArgIndex >SYSCALL ArgV bcs .8 + >STYA ZPTmpPtr lda (ZPTmpPtr) cmp #'-' - bne .21 + bne .1 ldy #1 lda (ZPTmpPtr),y @@ -82,29 +95,38 @@ CS.RUN.IPOK cmp #'0' bcc .9 + cmp #'9'+1 bcs .9 + and #$0F - >STA.G PingCount - bra .1 -.21 jsr Init.Timeout + sta PingCount + bra CS.RUN.IPOK + +.1 lda #TIMEOUT.MAX + sta Timeout + .2 >PUSHW L.SA.REMOTE.AD >PUSHW ZPTmpPtr >LIBCALL hLIBTCPIP,LIBTCPIP.HST.GETBYNAME bcc .3 + >SLEEP - jsr Wait.Timeout - bcc .2 + lda Timeout + bne .2 >PUSHW ZPTmpPtr >PUSHBI 2 >LDYA L.MSG.UNKNOWN bra .99 -.3 >LDA.G ArgIndex - >STA.G ArgHostName - jmp .1 + +.3 lda ArgIndex + sta ArgHostName + bra CS.RUN.IPOK + .8 lda SA.REMOTE+S.SOCKADDR.ADDR bne CS.RUN.ARGSOK + .9 >PUSHBI 0 >LDYA L.MSG.USAGE .99 >SYSCALL printf @@ -113,81 +135,99 @@ CS.RUN.IPOK sec rts -CS.RUN.ARGSOK >LDA.G ArgHostName +CS.RUN.ARGSOK lda ArgHostName >SYSCALL ArgV >PUSHYA + ldx #3 + .1 lda SA.REMOTE+S.SOCKADDR.ADDR,x >PUSHA dex bpl .1 + >PUSHBI 6 >LDYA L.MSG.HOSTOK >SYSCALL printf CS.RUN.OPENSKT ldx #3 ldy #S.IPCFG.IP+3 + .1 lda (ZPIPCfgPtr),y sta SA.LOCAL+S.SOCKADDR.ADDR,x dey dex bpl .1 - ldy #Identifier + lda A2OSX.RANDOM16 sta SA.LOCAL+S.SOCKADDR.PORT sta SA.REMOTE+S.SOCKADDR.PORT - sta (pData),y - iny + sta Identifier + lda A2OSX.RANDOM16+1 sta SA.LOCAL+S.SOCKADDR.PORT+1 sta SA.REMOTE+S.SOCKADDR.PORT+1 - sta (pData),y + sta Identifier+1 + >PUSHBI S.IP.PROTOCOL.ICMP lda #S.SOCKET.T.RAW >LIBCALL hLIBTCPIP,LIBTCPIP.socket bcs .9 - >STA.G hSocket - pha + + sta hSocket + >PUSHW L.SA.LOCAL - pla + lda hSocket >LIBCALL hLIBTCPIP,LIBTCPIP.Bind bcs .9 + >PUSHW L.SA.REMOTE - >LDA.G hSocket + lda hSocket >LIBCALL hLIBTCPIP,LIBTCPIP.Connect - bcc CS.RUN.SEND.ECHO + bcc CS.RUN.SEND + .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 - >LDA.G Identifier - sta ICMP.Request.ID+1 - iny - lda (pData),y - sta ICMP.Request.ID - >LDA.G Sequence - sec - adc #0 - sta (pData),y - sta ICMP.Request.SQ+1 + lda Identifier + >STA.G Request-S.IP+S.ICMP.IDENTIFIER+1 - iny - lda (pData),y - adc #0 + lda Identifier+1 + dey + sta (pData),y + + inc Sequence + bne .1 + + inc Sequence+1 + +.1 lda Sequence + >STA.G Request-S.IP+S.ICMP.SEQUENCE+1 + + lda Sequence+1 + dey sta (pData),y - sta ICMP.Request.SQ - jsr Init.Timeout >PUSHWI ICMP.RequestLen - >PUSHW L.ICMP.Request - >LDA.G hSocket + >PUSHW pData + lda hSocket >LIBCALL hLIBTCPIP,LIBTCPIP.send bcs CS.RUN.ERR - jsr Init.Timeout + + lda #TIMEOUT.MAX + sta Timeout CS.RUN.WAIT.REPLY >SLEEP ldy #S.PS.hStdIn @@ -196,35 +236,38 @@ CS.RUN.WAIT.REPLY bcs CS.RUN.ERR tay bne .1 + >SYSCALL GetChar bcs CS.RUN.ERR + cmp #3 Ctrl-C beq CS.RUN.ERR CS -.1 >LDA.G hSocket +.1 lda hSocket >LIBCALL hLIBTCPIP,LIBTCPIP.Recv bcc .2 - jsr Wait.Timeout - bcc CS.RUN.WAIT.REPLY + + lda Timeout + bne CS.RUN.WAIT.REPLY jsr CS.Print.UNREACH bcs CS.RUN.ERR bra .7 -.2 >STA.G hFrame + +.2 sta hFrame >SYSCALL GetMemPtr >STYA ZPTmpPtr jsr CS.Print.REPLY bcs CS.RUN.ERR - >LDA.G hFrame + lda hFrame >SYSCALL FreeMem - >STZ.G hFrame + stz hFrame -.7 >LDA.G PingCount +.7 lda PingCount beq .8 - dec + dec PingCount beq .9 A=0 - sta (pData),y .8 jmp CS.RUN.SEND.ECHO .9 sec @@ -232,18 +275,22 @@ CS.RUN.ERR rts *-------------------------------------- CS.DOEVENT lda (pEvent) bpl .9 is it a TIMER event? - >LDA.G TimeOut + + lda TimeOut beq .9 - dec - sta (pData),y + + dec TimeOut + .9 sec do not discard TIMER event rts *-------------------------------------- CS.Print.UNREACH ldx #3 + .1 >PUSHB SA.REMOTE+S.SOCKADDR.ADDR,x dex bpl .1 + >PUSHBI 4 >LDYA L.MSG.UNREACH >SYSCALL printf @@ -251,44 +298,51 @@ CS.Print.UNREACH *-------------------------------------- CS.Print.REPLY lda #TIMEOUT.MAX sec - ldy #TimeOut - sbc (pData),y - >STZ.G TimeOut.ms - >STA.G TimeOut.ms+1 + sbc TimeOut + + stz TimeOut.ms + stz TimeOut.ms+1 tax beq .3 -.1 >LDA.G TimeOut.ms + +.1 lda TimeOut.ms clc adc #100 - >STA.G TimeOut.ms + sta TimeOut.ms bcc .2 - >INC.G TimeOut.ms+1 + + inc TimeOut.ms+1 + .2 dex bne .1 -.3 >PUSHW.G TimeOut.ms + +.3 >PUSHW TimeOut.ms ldy #S.IP.TTL >PUSHB (ZPTmpPtr),y - ldy #S.ICMP.SEQUENCE+1 + ldy #S.ICMP.SEQUENCE >PUSHB (ZPTmpPtr),y - dey + iny >PUSHB (ZPTmpPtr),y + ldx #4 ldy #S.IP.SRC+3 + .4 >PUSHB (ZPTmpPtr),y dey dex bne .4 + >PUSHBI 9 >LDYA L.MSG.REPLY >SYSCALL printf rts *-------------------------------------- -CS.QUIT >LDA.G hFrame +CS.QUIT lda hFrame beq .1 >SYSCALL FreeMem -.1 >LDA.G hSocket +.1 lda hSocket beq .2 >LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown @@ -299,17 +353,6 @@ CS.QUIT >LDA.G hFrame .8 clc rts *-------------------------------------- -Init.Timeout lda #TIMEOUT.MAX - >STA.G TimeOut - rts -*-------------------------------------- -Wait.TimeOut sec - >LDA.G TimeOut - beq .9 - - clc -.9 rts -*-------------------------------------- CS.END LIBTCPIP .AZ "LIBTCPIP" MSG.IPKO .AZ "TCP/IP Not Loaded/Configured." @@ -335,8 +378,8 @@ SA.REMOTE .DA #AF.INET S.SOCKADDR.AF ICMP.Request .DA #S.ICMP.TYPE.ECHOREQ .DA #0 CODE .DA 0 CHECKSUM -ICMP.Request.ID .BS 2 -ICMP.Request.SQ .BS 2 + .BS 2 ID + .BS 2 DQ .AS "ABCDEFGHIJKLMNOP" .AS "QRSTUVWXYZ012345" ICMP.RequestLen .EQ *-ICMP.Request @@ -344,15 +387,7 @@ ICMP.RequestLen .EQ *-ICMP.Request .DUMMY .OR 0 DS.START -ArgIndex .BS 1 -PingCount .BS 1 -ArgHostName .BS 1 -hSocket .BS 1 -hFrame .BS 1 -Identifier .BS 2 -Sequence .BS 2 -TimeOut .BS 1 -TimeOut.ms .BS 2 +Request .BS ICMP.RequestLen DS.END .ED *--------------------------------------