From b8e761fdbb23d6c56cddafbc07b8b46645ea9b31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Tue, 1 Sep 2020 12:47:39 +0200 Subject: [PATCH] Kernel 0.94 --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes BIN/HTTPGET.S.txt | 105 ++++++++++++++++++++++++++++++--------- BIN/IPCONFIG.S.DHCP.txt | 55 ++++++++++---------- LIB/LIBTCPIP.S.SKT.txt | 3 +- SBIN/CIFSD.S.txt | 8 +-- SBIN/HTTPD.S.txt | 3 +- 6 files changed, 119 insertions(+), 55 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 3babe06597a85d90e0883e2cf62d6dc32bfebe35..a963b58cf21e7ad95a1a76d03ab7d6c8c03fbe81 100644 GIT binary patch delta 35609 zcmZ@h30&00_w)VkE_~T9*Rm(~axd2ks0gMAA}Wc3fSOhYA}XeUilzN5SQ4_#tIWwt zQxf`FQko?lR@z}|7yW+S_w_To49o7+|9dmD%L4xSd}i34^Ua(0-n@A;^S0%mi$N_A z_J609E&g}@puJlglbqvs=Q>>+e8|$@`KWFcWE@QPvH11`*BA6jcLw`++B8Rq=TCay z{jo}W@P{Djc(C3;Zj2ok+;Z_NVvkAA)E_+m-VPtu?!ld(c1XcZeq>%^x`q5B^6xDB ze6;DJpO*ZnBd0-~lfzlH?-SXrOE0XE5nLZKzK5Ngk z{nY+rRp;q_OX-a!sa9G_zcNXwlb0rTWY{%_H~XHr*!N?}rZ_u|vwst}KWxvr&R^Gl z+4j}G9D8@J-L6gCf7-q}Ve?n}Cw89i_{~lZ&p*G59Qd%$-yRXa-`D;Done+@q0v=l z>6R{wG*{AYYm(lQwDdns(iCYnjan(i!N2h7@MEcQBa+H+Z^Vd(ZpJjG^ zLfdzfyK8y7^Vz>e`;t>SVgVcbzt~H#zr8HE^E*r*4e8wrdGQ5a>G4?pz`n)y?rZHG zDF6yx;G=Pj=9RJ$wVIOpguT*+txo%vgw49W5`48EPuPEUuMBD3OL>z^*gqHgDyj&m@QwLi20#eCPNVACnkw5`hi68*?m zlVG@*v7^Je4$!-+;J^>P@~+4(MI-xlXb$|aW2bY6j)v(qk?M%VmapxH6QR~&I$p0y z9IMNOD!*5q2B{lR2hQx+>O6jW z(dgcD*m0*`6CKK%OJp!28CLDe#9lu!(a-dnc;AL3`_`oHLsYM7#-+lS7n8a>oP9cm zu6>j3-Nkl0q(0;rj5^w+YDVY0l5D>_d4Hsxr0lmm_GRDiC*t~k0V@A;`ypuK_>rLA zbGH3CB|j(cn`rNzWViF;Wp+YOshSZ|0uA@qgh%|Gyk?HQBe2ER5z=Dnu(Sksggv{} z+2_|0_3Tz!?ytEz@)&$OlHYr7FWG*~SvCLM{9grV*dTq)Uz1n>5X8A5u-lXOpE;r1 z{9T{#o>QIQ*q0^m`MUFe@UP{407seJ`71C1;-d4M_)u~#nGO%oER&LHXMpC)=KXTp zZ>6H^|R|f{Pqg@2?5AS4%Rn>vKrHm5>|k>+QSay5sCA*(sl%MV%IeXKHt98xi0vR?z`v%ff}c8N=l#oWbhw!_egD6-m09c!x<@iFK#EKv=r_4S2yo()YcHwVfa6<#uZoLtSl@`uW%NZk$`8V?X?ZdU2*XX77)vG+uF2d4 zeO=mKNB;{z1iv9UbLjG>6-0ScN;#64-qo&^ClO1pR9N9GpD_)Q>6}#CR8m)8OVqaz zj@7QX3}XAQb9m-9HqC|3 zl8Hq9UKGkDaX-=xw`yaH&hR-=ev-B$PIZ0IkL|4F96@n%9dpVMk1%`5X{(9yGj_b1 zsJ}on%d1^ZnC){=Uf*-!R;{cJb>>neH|00pmhwBBACm9~4ce%UxBcm+T9-F5hyO)4 zY}AGZ2mbBOE_Mwkrhhn5pNHndFJOr<=^}M?1Q^XmB6IE;U+l_Q+qAl|mY5~lyHRUu zmLaENc12-9Nr`J>X=80YQ8hBq(F&YPomSpXLUb}v?JCY<6YG}L5}gkutG=Sm0%BFf z$D#t~Bv!7Xsk(_6{k+>|Njg2$w5gC@!pk-TT|5%a1MhJhrRMRX?UHNY%yXY`fi zOd_fUGLeE!FdtUPRc!M1rq$I%35EY%o3%bE)vJga2Br9<=_6!k7HwKpP1Hz8Y+T}U z4kx-Os2Lhf?c21rX1gd0+!q7M`dHaHoXu@eyv%r4j43Dq(TRM{hNvb&J>*&-^dzWf zaL9shFdKzKGIo+819|0@OaR<~{41VXpaM5SUK!!{_43|+nkhl>vkZNP4ku;NP z%_*b!EDUJDlq2SRmaCEhl(ve*=F�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 E4*@pEt^fc4 delta 34279 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 diff --git a/BIN/HTTPGET.S.txt b/BIN/HTTPGET.S.txt index 5929f028..67718fb1 100644 --- a/BIN/HTTPGET.S.txt +++ b/BIN/HTTPGET.S.txt @@ -21,17 +21,20 @@ ZS.START ZPIPCfgPtr .BS 2 ZPHostPtr .BS 2 ZPPtr .BS 2 -ZPReqBufPtr .BS 2 +hReqBuf .BS 1 +ZPReqBufPtr .BS 2 ZPReqBufLen .BS 2 + +hEncodedBuf .BS 1 ZPEncodedBufPtr .BS 2 ZPEncodedBufLen .BS 2 + ZPRespBufPtr .BS 2 +ZPRespBufLen .BS 2 ArgIndex .BS 1 hSocket .BS 1 -hReqBuf .BS 1 -hEncodedBuf .BS 1 hSendBuf .BS 1 ZPSendBufPtr .BS 2 @@ -136,13 +139,13 @@ CS.RUN.IPOK ldy #S.IPCFG.IP+3 CS.RUN.ESYN lda #E.SYN sec CS.RUN.RTS rts - +*-------------------------------------- CS.RUN.HOSTOK inc ArgIndex lda ArgIndex >SYSCALL ArgV bcc .10 - jmp CS.RUN.PORTOK +.8 jmp CS.RUN.ARGSOK .10 >STYA ZPPtr lda (ZPPtr) @@ -154,6 +157,7 @@ CS.RUN.HOSTOK inc ArgIndex bcs CS.RUN.RTS >STYA SA.REMOTE+S.SOCKADDR.PORT + inc ArgIndex lda ArgIndex >SYSCALL ArgV @@ -176,6 +180,9 @@ CS.RUN.HOSTOK inc ArgIndex .11 cmp #'U' bne .2 + bit bURI + bmi CS.RUN.ESYN + inc ArgIndex lda ArgIndex >SYSCALL ArgV @@ -185,11 +192,16 @@ CS.RUN.HOSTOK inc ArgIndex >STYA ZPReqBufPtr >SYSCALL StrLen >STYA ZPReqBufLen -.8 bra CS.RUN.PORTOK + sec + ror bURI + bra CS.RUN.HOSTOK .2 cmp #'F' bne .3 + bit bURI + bmi CS.RUN.ESYN + inc ArgIndex lda ArgIndex >SYSCALL ArgV @@ -209,7 +221,7 @@ CS.RUN.HOSTOK inc ArgIndex sec ror bURI - bra CS.RUN.PORTOK + jmp CS.RUN.HOSTOK .3 cmp #'O' bcs .9 @@ -220,8 +232,9 @@ CS.RUN.HOSTOK inc ArgIndex bcs .9 >STYA ZPFileName - -CS.RUN.PORTOK >PUSHW L.MSG.CONNECT + jmp CS.RUN.HOSTOK +*-------------------------------------- +CS.RUN.ARGSOK >PUSHW L.MSG.CONNECT ldx #0 .1 >PUSHB SA.REMOTE+S.SOCKADDR.ADDR,x @@ -459,9 +472,6 @@ CS.RUN.RESPONSE jsr Init.TimeOut .1 >SLEEP - lda #'?' - >SYSCALL putchar - lda hSocket >LIBCALL hLIBTCPIP,LIBTCPIP.Recv bcc .2 @@ -474,25 +484,74 @@ CS.RUN.RESPONSE jsr Init.TimeOut bra .80 -.2 lda #'!' - >SYSCALL putchar - - >SYSCALL GetMemPtr +.2 >SYSCALL GetMemPtr >STYA ZPRespBufPtr + ldy #S.IP.TOTAL.LENGTH+1 + lda (ZPRespBufPtr),y + sec + sbc #S.TCP-S.IP + sta ZPRespBufLen + + dey + + lda (ZPRespBufPtr),y + sbc /S.TCP-S.IP + sta ZPRespBufLen+1 + + lda ZPRespBufPtr + clc + adc #S.TCP + sta ZPRespBufPtr + bcc .3 + + inc ZPRespBufPtr+1 + +.3 bit bResponse + bmi .6 + +.30 ldx #0 + +.4 dex + + lda (ZPRespBufPtr) + inc ZPRespBufPtr + bne .5 + + inc ZPRespBufPtr+1 + +.5 cmp #C.LF + bne .4 + + txa +* sec + adc ZPRespBufLen + sta ZPRespBufLen + + lda ZPRespBufLen+1 + adc #$ff + sta ZPRespBufLen+1 + + inx + inx + bne .30 + + sec + ror bResponse + +.6 >PUSHW ZPRespBufLen >PUSHW ZPRespBufPtr lda hFile - bne .3 + bne .7 ldy #S.PS.hStdOut lda (pPS),y -.3 >SYSCALL FWrite + +.7 >SYSCALL FWrite bcs .9 - sec - ror bResponse - bra CS.RUN.RESPONSE + jmp CS.RUN.RESPONSE .8 cmp #MLI.E.IO SKT Close ? bne .9 @@ -504,8 +563,8 @@ CS.RUN.RESPONSE jsr Init.TimeOut rts .99 lda #MLI.E.IO -.9 sec - rts + sec +.9 rts *-------------------------------------- CS.DOEVENT lda (pEvent) bpl .9 is it a TIMER event? diff --git a/BIN/IPCONFIG.S.DHCP.txt b/BIN/IPCONFIG.S.DHCP.txt index d1e7e265..66559862 100644 --- a/BIN/IPCONFIG.S.DHCP.txt +++ b/BIN/IPCONFIG.S.DHCP.txt @@ -36,29 +36,26 @@ DHCP.RUN >PUSHBI 0 no protocol >LIBCALL hLIBTCPIP,LIBTCPIP.Socket bcc .1 .9 jmp DHCP.RUN.KO -.1 >STA.G hSocket +.1 sta hSocket pha >PUSHW L.SA.LOCAL pla >LIBCALL hLIBTCPIP,LIBTCPIP.Bind bcs .9 >PUSHWI S.SOCKET.O.BROADCAST - >LDA.G hSocket + lda hSocket >LIBCALL hLIBTCPIP,LIBTCPIP.setsockopt >PUSHW L.SA.REMOTE - >LDA.G hSocket + lda hSocket >LIBCALL hLIBTCPIP,LIBTCPIP.Connect bcs .9 >LDYA L.MSG.DHCP.CFG1 >SYSCALL PutS - lda #TIMEOUT.MAX - sta TimeOut - DHCP.RUN.SDISC >PUSHW L.SA.DEST >PUSHWI DHCP.DISC.LEN >PUSHW L.DHCP.DISC - >LDA.G hSocket + lda hSocket >LIBCALL hLIBTCPIP,LIBTCPIP.SendTo bcc .1 @@ -67,15 +64,12 @@ DHCP.RUN.SDISC >PUSHW L.SA.DEST .1 lda #S.IPCFG.STATUS.SDISC sta IPCFG -DHCP.RUN.ROFFER >SLEEP - jsr DHCP.RUN.SKT.RCVD +DHCP.RUN.ROFFER jsr DHCP.RUN.SKT.RECV bcc .1 - lda TimeOut - bne DHCP.RUN.ROFFER - lda #1 jmp DHCP.RUN.KO + .1 jsr CheckDHCPOffer bcs DHCP.RUN.ROFFER lda #S.IPCFG.STATUS.ROFFER @@ -94,20 +88,16 @@ DHCP.RUN.SREQ >PUSHW L.MSG.DHCP.CFG2 >PUSHW L.SA.DEST >PUSHWI DHCP.REQ.LEN >PUSHW L.DHCP.REQ - >LDA.G hSocket + lda hSocket >LIBCALL hLIBTCPIP,LIBTCPIP.SendTo bcs DHCP.RUN.KO lda #S.IPCFG.STATUS.SREQ sta IPCFG -DHCP.RUN.RACK >SLEEP - jsr DHCP.RUN.SKT.RCVD +DHCP.RUN.RACK jsr DHCP.RUN.SKT.RECV bcc .1 - lda TimeOut - bne DHCP.RUN.RACK - lda #2 bra DHCP.RUN.KO @@ -153,17 +143,32 @@ DHCP.RUN.KO pha sec rts *-------------------------------------- -DHCP.RUN.SKT.RCVD - >LDA.G hSocket +DHCP.RUN.SKT.RECV + lda #TIMEOUT.MAX + sta TimeOut + +.1 >SLEEP + + lda hSocket >LIBCALL hLIBTCPIP,LIBTCPIP.Recv - bcs .9 - >STA.G hFrame + bcc .8 + + cmp #E.NODATA + bne .9 + + lda TimeOut + bne .1 + +.9 sec + rts + +.8 sta hFrame >SYSCALL GetMemPtr >STYA ZPFrameBase -.9 rts + rts *-------------------------------------- -DHCP.QUIT >LDA.G hSocket +DHCP.QUIT lda hSocket beq .1 >LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown @@ -317,7 +322,7 @@ CheckDHCPAck jsr CheckDHCPXID sec rts *-------------------------------------- -CS.RUN.DISCARD >LDA.G hFrame +CS.RUN.DISCARD sta hFrame >SYSCALL FreeMem rts *-------------------------------------- diff --git a/LIB/LIBTCPIP.S.SKT.txt b/LIB/LIBTCPIP.S.SKT.txt index 686973b7..26958f29 100644 --- a/LIB/LIBTCPIP.S.SKT.txt +++ b/LIB/LIBTCPIP.S.SKT.txt @@ -1,6 +1,5 @@ NEW AUTO 3,1 - .LIST OFF */-------------------------------------- * # Socket * Create a new socket @@ -948,7 +947,7 @@ SKT.Recv clc sec rts -.90 lda #0 no data +.90 lda #E.NODATA plp sec rts diff --git a/SBIN/CIFSD.S.txt b/SBIN/CIFSD.S.txt index 1834debd..a069a824 100644 --- a/SBIN/CIFSD.S.txt +++ b/SBIN/CIFSD.S.txt @@ -220,7 +220,7 @@ CS.RUN.Negotiate >LIBCALL hLIBTCPIP,LIBTCPIP.Recv bcc .3 - tay + cmp #E.NODATA beq .2 bra .99 @@ -273,7 +273,7 @@ CS.RUN.SessSetup >LIBCALL hLIBTCPIP,LIBTCPIP.Recv bcc .3 - tay + cmp #E.NODATA beq .2 bra .99 @@ -338,7 +338,7 @@ CS.RUN.TreeConn lda #TIMEOUT.MAX >LIBCALL hLIBTCPIP,LIBTCPIP.Recv bcc .3 - tay + cmp #E.NODATA beq .2 bra .99 @@ -419,7 +419,7 @@ CIFS.OpenDir lda #TIMEOUT.MAX >LIBCALL hLIBTCPIP,LIBTCPIP.Recv bcc .3 - tay + cmp #E.NODATA beq .2 bra .99 diff --git a/SBIN/HTTPD.S.txt b/SBIN/HTTPD.S.txt index ff92e933..9de36314 100644 --- a/SBIN/HTTPD.S.txt +++ b/SBIN/HTTPD.S.txt @@ -371,8 +371,9 @@ CS.RUN.CLIENT >LDYAI 1024 >LIBCALL hLIBTCPIP,LIBTCPIP.Recv bcc .2 - tay + cmp #E.NODATA beq .1 + jmp .99 .2 jsr CS.RUN.REQ.GetReq