Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.sys.apple2.programmer > #3260

Re: Uthernet II manual - sample code

Newsgroups comp.sys.apple2.programmer
Date 2017-02-06 17:20 -0800
References <878838ba-6367-4afb-b045-0b6bdb53ec65@googlegroups.com> <o79j3j$dsm$1@news.albasani.net>
Message-ID <52456f9a-dfac-4c2b-adbf-e459915ededd@googlegroups.com> (permalink)
Subject Re: Uthernet II manual - sample code
From Chris Torrence <gorthmog@gmail.com>

Show all headers | View raw


Okay, so I made the code even smaller by just letting the W5100 handle the wraparound automatically. It worked like a charm. I'll paste in my sample code here, and also email it to DF in case you want to include some of it in the next manual update. Thanks for the help!
-Chris

                1    * TCP SOCKET DEMO FOR W5100/UTHERNET II
                2    * BY D. FINNIGAN
                3    * OCTOBER 2015
                4    *
                5    * UPDATE 09 JAN 2016
                6    *
                7    * UPDATE 05 FEB 2017, C. TORRENCE
                8    *  -REMOVED SEPARATE PATH FOR WRAP, ADD DEBUG PRINT
                9    *
                10   *
                11   * SLOT 3 I/O ADDRESSES FOR THE W5100
                12   *
                13   WMODE    EQU   $C0B4      
                14   WADRH    EQU   $C0B5      
                15   WADRL    EQU   $C0B6      
                16   WDATA    EQU   $C0B7      
                17   *
                18   *
                19   * W5100 LOCATIONS
                20   *
                21   MACADDR  EQU   $0009      ; MAC ADDRESS
                22   SRCIP    EQU   $000F      ; SOURCE IP ADDRESS
                23   RMSR     EQU   $001A      ; RECEIVE BUFFER SIZE
                24   *
                25   * SOCKET 0 LOCATIONS
                26   *
                27   S0MR     EQU   $0400      ; SOCKET 0 MODE REGISTER
                28   S0CR     EQU   $0401      ; COMMAND REGISTER
                29   S0IR     EQU   $0402      ; INTERRUPT REGISTER
                30   S0SR     EQU   $0403      ; STATUS REGISTER
                31   S0LOCALPORT EQU $0404     ; LOCAL PORT
                32   S0FORADDR EQU  $040C      ; FOREIGN ADDRESS
                33   S0FORPORT EQU  $0410      ; FOREIGN PORT
                34   S0MSS    EQU   $0412      ; MAX SEGMENT SIZE
                35   S0PROTO  EQU   $0414      ; IP PROTOCOL
                36   S0TOS    EQU   $0415      ; DS/ECN (FORMER TOS)
                37   S0TTL    EQU   $0416      ; IP TIME TO LIVE
                38   S0TXFSR  EQU   $0420      ; TX FREE SIZE REGISTER
                39   S0TXRR   EQU   $0422      ; TX READ POINTER REGISTER
                40   S0TXWR   EQU   $0424      ; TX WRITE POINTER REGISTER
                41   S0RXRSR  EQU   $0426      ; RX RECEIVED SIZE REGISTER
                42   S0RXRD   EQU   $0428      ; RX READ POINTER REGISTER
                43   *
                44   * SOCKET 0 PARAMETERS
                45   *
                46   RXBASE   EQU   $6000      ; SOCKET 0 RX BASE ADDR
                47   RXMASK   EQU   $1FFF      ; SOCKET 0 8KB ADDRESS MASK
                48   TXBASE   EQU   $4000      ; SOCKET 0 TX BASE ADDR
                49   TXMASK   EQU   RXMASK     ; SOCKET 0 TX MASK
                50   *
                51   *
                52   * SOCKET COMMANDS
                53   *
                54   SCOPEN   EQU   $01        ; OPEN
                55   SCLISTEN EQU   $02        ; LISTEN
                56   SCCONNECT EQU  $04        ; CONNECT
                57   SCDISCON EQU   $08        ; DISCONNECT
                58   SCCLOSE  EQU   $10        ; CLOSE
                59   SCSEND   EQU   $20        ; SEND
                60   SCSENDMAC EQU  $21        ; SEND MAC
                61   SCSENDKEEP EQU $22        ; SEND KEEP ALIVE
                62   SCRECV   EQU   $40        ; RECV
                63   *
                64   * SOCKET STATUS
                65   *
                66   STCLOSED EQU   $00        
                67   STINIT   EQU   $13        
                68   STLISTEN EQU   $14        
                69   STESTABLISHED EQU $17     
                70   STCLOSEWAIT EQU $1C       
                71   STUDP    EQU   $22        
                72   STIPRAW  EQU   $32        
                73   STMAXRAW EQU   $42        
                74   STPPOE   EQU   $5F        
                75   *
                76   * MONITOR SUBROUTINES
                77   *
                78   KBD      EQU   $C000      
                79   KBDSTRB  EQU   $C010      
                80   COUT     EQU   $FDED      
                81   PRBYTE   EQU   $FDDA      
                82   PRNTAX   EQU   $F941      
                83   *
                84   * ZERO-PAGE STORAGE
                85   *
                86   PTR      EQU   $06        ; 2 BYTES FOR APPLE BUFFER
                87   GETSIZE  EQU   $08        ; 2 BYTES FOR RX_RSR
                88   GETOFFSET EQU  $0A        ; 2 BYTES FOR OFFSET ADDR
                89   GETSTARTADR EQU $0C       ; 2 BYTES FOR PHYSICAL ADDR
                90   *
                91   *
                92   * RESET AND CONFIGURE W5100
                93   *
                94   *
8000: A9 06     95            LDA   #6         
8002: 85 06     96            STA   PTR        ; RETRIES
                97   RESET                     
8004: A9 80     98            LDA   #$80       ; RESET
8006: 8D B4 C0  99            STA   WMODE      
8009: A9 03     100           LDA   #3         ; CONFIGURE WITH AUTO-INCREMENT
800B: 8D B4 C0  101           STA   WMODE      
                102  *
                103  * ASSIGN MAC ADDRESS
                104  *
800E: A9 00     105           LDA   #>MACADDR  
8010: 8D B5 C0  106           STA   WADRH      
8013: A9 09     107           LDA   #<MACADDR  
8015: 8D B6 C0  108           STA   WADRL      
8018: A2 00     109           LDX   #0         
801A: BD 28 80  110  :L       LDA   MAC,X      
801D: 8D B7 C0  111           STA   WDATA      ; USING AUTO-INCREMENT
8020: E8        112           INX              
8021: E0 06     113           CPX   #6         ; COMPLETED?
8023: D0 F5     114           BNE   :L         
8025: 4C 2E 80  115           JMP   SETSRCADDR 
                116  *
8028: 00 08 DC  117  MAC      HEX   0008DC010203 ; MAC ADDRESS
802B: 01 02 03 
                118  *
                119  *
                120  * ASSIGN A SOURCE IP ADDRESS
                121  *
                122  SETSRCADDR                
802E: A9 0F     123           LDA   #<SRCIP    
8030: 8D B6 C0  124           STA   WADRL      
8033: A2 00     125           LDX   #0         
8035: BD 43 80  126  :L       LDA   SRCADDR,X  
8038: 8D B7 C0  127           STA   WDATA      
803B: E8        128           INX              
803C: E0 04     129           CPX   #4         
803E: D0 F5     130           BNE   :L         
8040: 4C 47 80  131           JMP   SETBUFFERS 
                132  *
8043: 0A 00 01  133  SRCADDR  HEX   0A0001FC   ; 10.0.1.252
8046: FC 
                134  *
                135  *
                136  * CONFIGURE BUFFER SIZES
                137  *
                138  SETBUFFERS                
8047: A9 1A     139           LDA   #<RMSR     
8049: 8D B6 C0  140           STA   WADRL      
804C: A9 03     141           LDA   #3         ; 8KB TO SOCKET 0
804E: 8D B7 C0  142           STA   WDATA      ; SET RECEIVE BUFFER
8051: 8D B7 C0  143           STA   WDATA      ; SET TRANSMIT BUFFER
                144  *
                145  * CONFIGURE SOCKET 0 FOR TCP
                146  *
8054: A9 04     147           LDA   #>S0MR     
8056: 8D B5 C0  148           STA   WADRH      
8059: A9 00     149           LDA   #<S0MR     
805B: 8D B6 C0  150           STA   WADRL      
805E: A9 01     151           LDA   #1         ; TCP MODE
8060: 8D B7 C0  152           STA   WDATA      
                153  *
                154  * SET LOCAL PORT NUMBER
                155  *
8063: A9 04     156           LDA   #<S0LOCALPORT 
8065: 8D B6 C0  157           STA   WADRL      
8068: A9 C0     158           LDA   #$C0       ; HIGH BYTE OF LOCAL PORT
806A: 8D B7 C0  159           STA   WDATA      
806D: A9 00     160           LDA   #0         ; LOW BYTE
806F: 8D B7 C0  161           STA   WDATA      
                162  *
                163  * SET FOREIGN ADDRESS
                164  *
8072: A9 0C     165           LDA   #<S0FORADDR 
8074: 8D B6 C0  166           STA   WADRL      
8077: A2 00     167           LDX   #0         
8079: BD 87 80  168  :L2      LDA   FADDR,X    
807C: 8D B7 C0  169           STA   WDATA      
807F: E8        170           INX              
8080: E0 04     171           CPX   #4         
8082: D0 F5     172           BNE   :L2        
8084: 4C 8B 80  173           JMP   SETFORPORT 
                174  *
8087: 0A 00 01  175  FADDR    HEX   0A000111   ; 10.0.1.17
808A: 11 
                176  *
                177  *
                178  * SET FOREIGN PORT
                179  *
                180  SETFORPORT                
808B: A9 4E     181           LDA   #$4E       ; HIGH BYTE OF FOREIGN PORT
808D: 8D B7 C0  182           STA   WDATA      ; ADDR PTR IS AT FOREIGN PORT
8090: A9 20     183           LDA   #$20       ; LOW BYTE OF PORT
8092: 8D B7 C0  184           STA   WDATA      
                185  *
                186  * OPEN SOCKET
                187  *
8095: A9 01     188           LDA   #<S0CR     
8097: 8D B6 C0  189           STA   WADRL      
809A: A9 01     190           LDA   #SCOPEN    ; OPEN COMMAND
809C: 8D B7 C0  191           STA   WDATA      
                192  *
                193  * CHECK STATUS REGISTER TO SEE IF SUCCEEDED
                194  *
809F: A9 03     195           LDA   #<S0SR     
80A1: 8D B6 C0  196           STA   WADRL      
80A4: AD B7 C0  197           LDA   WDATA      
80A7: C9 13     198           CMP   #STINIT    ; IS IT SOCK_INIT?
80A9: F0 33     199           BEQ   OPENED     
80AB: A0 00     200           LDY   #0         
80AD: B9 B9 80  201  :L       LDA   :SOCKERR,Y 
80B0: F0 06     202           BEQ   :LDONE     
80B2: 20 ED FD  203           JSR   COUT       
80B5: C8        204           INY              
80B6: D0 F5     205           BNE   :L         
80B8: 00        206  :LDONE   BRK              
80B9: D5 D4 C8  207  :SOCKERR ASC   "UTHERNET II: COULD NOT OPEN SOCKET!" 
80BC: C5 D2 CE C5 
80C0: D4 A0 C9 C9 
80C4: BA A0 C3 CF 
80C8: D5 CC C4 A0 
80CC: CE CF D4 A0 
80D0: CF D0 C5 CE 
80D4: A0 D3 CF C3 
80D8: CB C5 D4 A1 
80DC: 8D 00     208           HEX   8D00       ; CR+NULL
                209  *
                210  * TCP SOCKET WAITING FOR NEXT COMMAND
                211  *
                212  OPENED                    
80DE: A9 01     213           LDA   #<S0CR     
80E0: 8D B6 C0  214           STA   WADRL      
80E3: A9 04     215           LDA   #SCCONNECT 
80E5: 8D B7 C0  216           STA   WDATA      
                217  *
                218  * WAIT FOR TCP TO CONNECT AND BECOME ESTABLISHED
                219  *
                220  CHECKTEST                 
80E8: A9 03     221           LDA   #<S0SR     
80EA: 8D B6 C0  222           STA   WADRL      
80ED: AD B7 C0  223           LDA   WDATA      ; GET SOCKET STATUS
80F0: F0 06     224           BEQ   FAILED     ; 0 = SOCKET CLOSED, ERROR
80F2: C9 17     225           CMP   #STESTABLISHED 
80F4: F0 4A     226           BEQ   CHECKRECV  ; SUCCESS
80F6: D0 F0     227           BNE   CHECKTEST  
                228  *
                229  FAILED                    
80F8: C6 06     230           DEC   PTR        
80FA: F0 08     231           BEQ   ERRDONE    ; TOO MANY FAILURES
80FC: A9 AE     232           LDA   #"."       
80FE: 20 ED FD  233           JSR   COUT       
8101: 4C 04 80  234           JMP   RESET      ; TRY AGAIN
                235  *
                236  ERRDONE                   
8104: A0 00     237           LDY   #0         
8106: B9 12 81  238  :L       LDA   ERRMSG,Y   
8109: F0 06     239           BEQ   :DONE      
810B: 20 ED FD  240           JSR   COUT       
810E: C8        241           INY              
810F: D0 F5     242           BNE   :L         
8111: 00        243  :DONE    BRK              
                244  *
8112: D3 CF C3  245  ERRMSG   ASC   "SOCKET COULD NOT CONNECT - CHECK REMOTE HOST" 
8115: CB C5 D4 A0 
8119: C3 CF D5 CC 
811D: C4 A0 CE CF 
8121: D4 A0 C3 CF 
8125: CE CE C5 C3 
8129: D4 A0 AD A0 
812D: C3 C8 C5 C3 
8131: CB A0 D2 C5 
8135: CD CF D4 C5 
8139: A0 C8 CF D3 
813D: D4 
813E: 8D 00     246           HEX   8D00       
                247  *
                248  *
                249  * CHECK FOR ANY RECEIVED DATA
                250  *
                251  CHECKRECV                 
8140: 2C 00 C0  252           BIT   KBD        ; KEYPRESS?
8143: 10 06     253           BPL   :NEXT      
8145: AD 10 C0  254           LDA   KBDSTRB    
8148: 4C FB 81  255           JMP   CLOSECONN  ; CLOSE CONNECTION
                256  :NEXT                     
814B: A9 26     257           LDA   #<S0RXRSR  ; S0 RECEIVED SIZE REGISTER
814D: 8D B6 C0  258           STA   WADRL      
8150: AD B7 C0  259           LDA   WDATA      ; HIGH BYTE OF RECEIVED SIZE
8153: 0D B7 C0  260           ORA   WDATA      ; LOW BYTE
8156: F0 03     261           BEQ   NORECV     ; NO DATA TO READ
8158: 4C 60 81  262           JMP   RECV       ; THERE IS DATA
                263  *
                264  NORECV                    
815B: EA        265           NOP              ; LITTLE DELAY...
815C: EA        266           NOP              
815D: 4C 40 81  267           JMP   CHECKRECV  ; CHECK AGAIN
                268  *
                269  * THERE IS DATA TO READ - COMPUTE THE PHYSICAL ADDRESS
                270  *
                271  RECV                      
8160: A9 26     272           LDA   #<S0RXRSR  ; GET RECEIVED SIZE AGAIN
8162: 8D B6 C0  273           STA   WADRL      
8165: AD B7 C0  274           LDA   WDATA      
8168: 85 09     275           STA   GETSIZE+1  ; HIGH BYTE
816A: AD B7 C0  276           LDA   WDATA      
816D: 85 08     277           STA   GETSIZE    ; LOW BYTE
                278  *
                279  * CALCULATE OFFSET ADDRESS USING READ POINTER AND RX MASK
                280  *
816F: A9 28     281           LDA   #<S0RXRD   
8171: 8D B6 C0  282           STA   WADRL      
8174: AD B7 C0  283           LDA   WDATA      ; HIGH BYTE
8177: 29 1F     284           AND   #>RXMASK   
8179: 85 0B     285           STA   GETOFFSET+1 
817B: AD B7 C0  286           LDA   WDATA      ; LOW BYTE
817E: 29 FF     287           AND   #<RXMASK   
8180: 85 0A     288           STA   GETOFFSET  
                289  *
                290  * CALCULATE PHYSICAL ADDRESS WITHIN W5100 RX BUFFER
                291  *
8182: 18        292           CLC              
8183: A5 0A     293           LDA   GETOFFSET  
8185: 69 00     294           ADC   #<RXBASE   
8187: 85 0C     295           STA   GETSTARTADR 
8189: A5 0B     296           LDA   GETOFFSET+1 
818B: 69 60     297           ADC   #>RXBASE   
818D: 85 0D     298           STA   GETSTARTADR+1 
                299  *
                300  * SET BUFFER ADDRESS ON APPLE
                301  *
818F: A9 00     302           LDA   #0         ; LOW BYTE OF BUFFER
8191: 85 06     303           STA   PTR        
8193: A9 50     304           LDA   #$50       ; HIGH BYTE
8195: 85 07     305           STA   PTR+1      
                306  *
                307  * SET BUFFER ADDRESS ON W5100
                308  *
                309  * JSR   DEBUG   ; UNCOMMENT FOR W5100 DEBUG INFO
8197: A5 0D     310           LDA   GETSTARTADR+1 ; HIGH BYTE FIRST
8199: 8D B5 C0  311           STA   WADRH      
819C: A5 0C     312           LDA   GETSTARTADR 
819E: 8D B6 C0  313           STA   WADRL      
                314  *
                315  * BEGIN COPY
                316  *
81A1: A0 00     317           LDY   #0         
81A3: A6 09     318           LDX   GETSIZE+1  
81A5: F0 10     319           BEQ   :LAST      ; LESS THAN 256 BYTES
81A7: AD B7 C0  320  :L       LDA   WDATA      
81AA: 91 06     321           STA   (PTR),Y    
                322  *
81AC: 20 1D 82  323           JSR   CLEANOUT   ; DEBUG PRINT
                324  *
81AF: C8        325           INY              
81B0: D0 F5     326           BNE   :L         
81B2: E6 07     327           INC   PTR+1      ; Y WRAPPED TO 0, GO TO NEXT PAGE
81B4: CA        328           DEX              
81B5: D0 F0     329           BNE   :L         
                330  :LAST                     
81B7: A6 08     331           LDX   GETSIZE    
81B9: AD B7 C0  332  :L2      LDA   WDATA      
81BC: 91 06     333           STA   (PTR),Y    
                334  *
81BE: 20 1D 82  335           JSR   CLEANOUT   ; DEBUG PRINT
                336  *
81C1: C8        337           INY              
81C2: CA        338           DEX              
81C3: D0 F4     339           BNE   :L2        
                340  *
81C5: A9 8D     341           LDA   #$8D       ; <CR>
81C7: 20 ED FD  342           JSR   COUT       ; DEBUG PRINT
                343  *
                344  *
                345  * UPDATE RXRD TO REFLECT DATA WE JUST READ
                346  *
                347  UPDATERXRD                
81CA: 18        348           CLC              
81CB: A9 04     349           LDA   #>S0RXRD   ; NEED HIGH BYTE HERE
81CD: 8D B5 C0  350           STA   WADRH      
81D0: A9 28     351           LDA   #<S0RXRD   
81D2: 8D B6 C0  352           STA   WADRL      
81D5: AD B7 C0  353           LDA   WDATA      ; HIGH BYTE
81D8: A8        354           TAY              ; SAVE
81D9: AD B7 C0  355           LDA   WDATA      ; LOW BYTE
81DC: 65 08     356           ADC   GETSIZE    ; ADD LOW BYTE OF RECEIVED SIZE
81DE: AA        357           TAX              ; SAVE
81DF: 98        358           TYA              ; GET HIGH BYTE BACK
81E0: 65 09     359           ADC   GETSIZE+1  ; ADD HIGH BYTE OF RECEIVED SIZE _
81E2: A8        360           TAY              ; SAVE
81E3: A9 28     361           LDA   #<S0RXRD   
81E5: 8D B6 C0  362           STA   WADRL      
81E8: 8C B7 C0  363           STY   WDATA      ; SEND HIGH BYTE
81EB: 8E B7 C0  364           STX   WDATA      ; SEND LOW BYTE
                365  *
                366  * SEND THE RECV COMMAND
                367  *
81EE: A9 01     368           LDA   #<S0CR     
81F0: 8D B6 C0  369           STA   WADRL      
81F3: A9 40     370           LDA   #SCRECV    
81F5: 8D B7 C0  371           STA   WDATA      
                372  *
                373  *
                374  *
81F8: 4C 40 81  375           JMP   CHECKRECV  
                376  *
                377  *
                378  * CLOSE TCP CONNECTION
                379  *
                380  CLOSECONN                 
81FB: A9 04     381           LDA   #>S0CR     ; HIGH BYTE NEEDED
81FD: 8D B5 C0  382           STA   WADRH      
8200: A9 01     383           LDA   #<S0CR     
8202: 8D B6 C0  384           STA   WADRL      
8205: A9 08     385           LDA   #SCDISCON  ; DISCONNECT
8207: 8D B7 C0  386           STA   WDATA      ; SEND COMMAND
                387  *
                388  * CHECK FOR CLOSED STATUS
                389  *
                390  CHECKCLOSED               
820A: A2 00     391           LDX   #0         
820C: A9 03     392  :L       LDA   #<S0SR     
820E: 8D B6 C0  393           STA   WADRL      
8211: AD B7 C0  394           LDA   WDATA      
8214: F0 06     395           BEQ   ISCLOSED   
8216: EA        396           NOP              
8217: EA        397           NOP              
8218: EA        398           NOP              
8219: E8        399           INX              
821A: D0 F0     400           BNE   :L         ; DON'T WAIT FOREVER
                401  ISCLOSED                  
821C: 60        402           RTS              ; SOCKET IS CLOSED
                403  *
                404  *
                405  * SUPPORT SUBROUTINE: CLEANOUT
                406  * "CLEANS UP" OUTPUT FOR THE APPLE BY
                407  * SETTING THE HIGH BIT AND DOING SOME SUBSTITUTIONS
                408  CLEANOUT                  
821D: 09 80     409           ORA   #%10000000 ; SET HIGH BIT
821F: C9 8A     410           CMP   #$8A       ; NEWLINE?
8221: D0 02     411           BNE   :OUT       
8223: A9 8D     412           LDA   #$8D       ; CONVERT TO <CR>
                413  :OUT                      
8225: 4C ED FD  414           JMP   COUT       ; THIS WILL DO THE RTS
                415  *
                416  * DEBUG - PRINT W5100 STARTADR AND SIZE
                417  *
                418  DEBUG                     
8228: A9 A0     419           LDA   #" "       
822A: 20 ED FD  420           JSR   COUT       
822D: A9 A4     421           LDA   #"$"       
822F: 20 ED FD  422           JSR   COUT       
8232: A5 0D     423           LDA   GETSTARTADR+1 
8234: A6 0C     424           LDX   GETSTARTADR 
8236: 20 41 F9  425           JSR   PRNTAX     
8239: A9 A0     426           LDA   #" "       
823B: 20 ED FD  427           JSR   COUT       
823E: A9 A4     428           LDA   #"$"       
8240: 20 ED FD  429           JSR   COUT       
8243: A5 09     430           LDA   GETSIZE+1  
8245: A6 08     431           LDX   GETSIZE    
8247: 20 41 F9  432           JSR   PRNTAX     
824A: A9 8D     433           LDA   #$8D       
824C: 4C ED FD  434           JMP   COUT       ; THIS WILL DO THE RTS
                435  *
 
 
--End assembly, 591 bytes, Errors: 0 

Back to comp.sys.apple2.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Uthernet II manual - sample code Chris Torrence <gorthmog@gmail.com> - 2017-02-05 14:16 -0800
  Re: Uthernet II manual - sample code D Finnigan <dog_cow@macgui.com> - 2017-02-06 03:41 +0000
    Re: Uthernet II manual - sample code Oliver Schmidt <ol.sc@web.de> - 2017-02-06 10:20 +0000
  Re: Uthernet II manual - sample code Oliver Schmidt <ol.sc@web.de> - 2017-02-06 10:28 +0000
    Re: Uthernet II manual - sample code Chris Torrence <gorthmog@gmail.com> - 2017-02-06 17:20 -0800
      Re: Uthernet II manual - sample code D Finnigan <dog_cow@macgui.com> - 2017-02-07 02:59 +0000
        Re: Uthernet II manual - sample code "Mark D. Overholser" <marko@markoverholser.com> - 2017-02-07 10:33 -0800
          Re: Uthernet II manual - sample code D Finnigan <dog_cow@macgui.com> - 2017-02-07 21:42 +0000
  Re: Uthernet II manual - sample code D Finnigan <dog_cow@macgui.com> - 2017-02-12 20:49 +0000
    Re: Uthernet II manual - sample code D Finnigan <dog_cow@macgui.com> - 2017-02-25 23:29 +0000
      Re: Uthernet II manual - sample code "Mark D. Overholser" <marko@markoverholser.com> - 2017-02-25 21:12 -0800
        Re: Uthernet II manual - sample code D Finnigan <dog_cow@macgui.com> - 2017-02-26 20:03 +0000
          Re: Uthernet II manual - sample code "Mark D. Overholser" <marko@markoverholser.com> - 2017-02-26 16:26 -0800
            Re: Uthernet II manual - sample code D Finnigan <dog_cow@macgui.com> - 2017-02-27 01:38 +0000
              Re: Uthernet II manual - sample code "Mark D. Overholser" <marko@markoverholser.com> - 2017-02-27 09:58 -0800

csiph-web