diff --git a/ethernet/webserver.bas b/ethernet/webserver.bas index 512a8b96..31b3500a 100644 --- a/ethernet/webserver.bas +++ b/ethernet/webserver.bas @@ -25,6 +25,7 @@ 36 POKE DP,15 40 PRINT "UTHERNET II READY: 192.168.8.15" 100 REM *** Setup Socket +102 PRINT "** Setting up Socket 0" 105 POKE HA,0:POKE LA,26: REM RX MEMSIZE 110 POKE DP,3: REM 8kB RX buffer 115 POKE DP,3: REM 8kB TX buffer @@ -32,12 +33,71 @@ 205 POKE HA,4: POKE LA,0: REM *** 0x400 mode 210 POKE DP,65 : REM *** 0x41 MAC FILTER (non-promisc) TCP 300 REM ** Setup Source PORT -305 POKE HA,4: POKE LA,3: REM *** 0x404 port -310 POKE DP, 80: REM *** http port 80 +303 PRINT "** Setting up to use TCP port 80" +305 POKE HA,4: POKE LA,4: REM *** 0x404 port +310 POKE DP,0:POKE DP, 80: REM *** http port 80 400 REM *** OPEN socket +404 PRINT "** OPENing socket" 405 POKE HA,4: POKE LA,1: REM *** 0x401 command register 410 POKE DP, 1: REM *** OPEN +' 500 REM *** Check if opened -'if (Sn_SR != SOCK_INIT) Sn_CR = CLOSE; goto START; -'If (Sn_SR == SOCK_ESTABLISHED) goto ESTABLISHED stage; -' CALL LISTEN +505 POKE HA,4: POKE LA,3: REM *** 0x403 status register +510 RE=PEEK(DP) +515 PRINT "** STATUS IS ";RE; +520 IF RE=19 THEN PRINT " OPENED":GOTO 600 +530 IF RE=0 THEN PRINT " CLOSED, ERROR" +540 POKE HA,4: POKE LA,1: REM *** 0x401 command register +550 POKE DP, 16: REM *** CLOSE +560 END +' +600 REM *** Connection opened, Listen +605 POKE HA,4: POKE LA,1: REM *** 0x401 command register +610 POKE DP, 2: REM *** LISTEN +620 REM *** Check if successful +625 POKE HA,4: POKE LA,3: REM *** 0x403 status register +630 RE=PEEK(DP) +635 PRINT "** STATUS IS ";RE; +640 IF RE=20 THEN PRINT " LISTENING":GOTO 700 +650 IF RE=0 THEN PRINT " CLOSED, ERROR" +655 PRINT "UNKNOWN" +660 POKE HA,4: POKE LA,1: REM *** 0x401 command register +670 POKE DP, 16: REM *** CLOSE +675 END +' +700 REM *** Wait for incoming connection +705 POKE HA,4: POKE LA,1: REM *** 0x401 command register +710 POKE DP, 2: REM *** LISTEN +720 REM *** Check if successful +725 POKE HA,4: POKE LA,3: REM *** 0x403 status register +730 RE=PEEK(DP) +740 IF RE=23 THEN GOTO 800 +745 IF RE<>20 THEN PRINT "WAITING: STATUS=";RE +750 GOTO 700: REM *** Repeat until connected +' +800 PRINT "CONNECTED" +802 POKE HA,4: POKE LA,38: REM *** 0x426 Received Size +805 SH=PEEK(DP):SL=PEEK(DP) +810 SI=(SH*256)+SL +820 IF SI<>0 THEN GOTO 900 +830 REM DELAY? +840 GOTO 800 +' +900 POKE HA,4: POKE LA,40: REM *** 0x428 Received ptr +905 OL=PEEK(DP):OH=PEEK(DP) +910 RO=(OH*256)+OL +920 REM *** SHOULD MASK WITH 0x1ff but how? +930 RA=RO+24576:REM $6000 +940 PRINT "READ OFFSET=";RO;" READ ADDRESS=";RA;" READ SIZE=";SI +' +1000 REM *** PRINT PACKET +1005 POKE HA,RA/256: POKE LA,RA-((RA/256)*256) +1010 FOR I=1 TO SI +1020 C=PEEK(DP) +1030 IF C<>13 THEN PRINT CHR$(C); +1040 NEXT I +' +2000 REM *** CLOSE + + +