From 853194a2922ca31944456cafcccc9538d10928e3 Mon Sep 17 00:00:00 2001 From: jonnosan Date: Tue, 28 Dec 2010 11:59:56 +0000 Subject: [PATCH] w5100 works in MAC RAW mode git-svn-id: http://svn.code.sf.net/p/netboot65/code@294 93682198-c243-4bdb-bd91-e943c89aac3b --- client/basic/bails.d64 | Bin 174848 -> 174848 bytes client/basic/kipperbas.d64 | Bin 174848 -> 174848 bytes client/drivers/Makefile | 2 +- client/drivers/w5100.s | 416 ++++++++++++++++++++++++++++++------- client/inc/commonprint.i | 2 +- client/ip65/Makefile | 18 +- client/ip65/arp.s | 5 +- client/test/test_wiznet.s | 371 ++++++++++----------------------- 8 files changed, 469 insertions(+), 345 deletions(-) diff --git a/client/basic/bails.d64 b/client/basic/bails.d64 index 093b2f96568c558ffd768f9d90c9c1f521d8f414..bd7db887fdfc9eed610e62217d36dcd2b54b3525 100644 GIT binary patch delta 2179 zcmb7FYiJZ#6y7_liB*wZ+2}?Souo#qNqpqxCeeVw#-NKPo5yZ^#G!<;Bb5o3K#H{+ z#RO`(L!`o(A6w(bh*!Nsgkq2q{BtUyl zlU1neq4Q*gKMO4Pgb%n6%q*aVnqH(0x^9fO8iVIaw()y2Sr!Z4YGN+x1NrBc{x!0C zkS+mzDai6Jz68vrpqBKLaoMaNc`gDn*a^C~OPLO1j}xub+pRC|W-j?y3l_?1O&F|4 z6A{3aWTwX*{3C)L5z=u)9#BNE%fi)QRSAfRC1xbyl8=TE4&tam94}BnjB=+k?L@!A zY7+Lki%3)lgPE6>dfi9`Zxn)VlX1AzLcCy_(bNB66nlk|-PF>jcuWW$PiFDB);605 zEe3tPgUWS@ZUDLwt_@j4xi*x_nAiZftw~-C=6Z1A96k%#DO&@q69GZW=Fc~PxzQ%& z$LTo#98yyi)`GrHOzX8_dFTAEaV@Zy$0nh$okG$WsxP!fQ<3vSsq_dfLH+Al)KBc4 zO!Yib}zn!(1u%SOE+aYq#%seq#-Elg3MdmS`-4=3`L8<(+Hf zog+&suk>Bzh2U3xbd`3A7lG=cZ)=y&`qhQv*)MLU<(giB4Fr@t1o1*1Xu<@u$ml#r zaqK^nrIYK7tBqt$EC9n7u)UQz zJY?tkhZm}O6un19y*3M2=?w0?SdNBd>_wbjzr5Nj-DNVJ!|G->311;IT$#(8iLhBL z4QKi>=4FubrPpc72bd?AXlGvh5fVu$cko<052*Lb!P<)hxK{yI2>lP;FGFxA%8X)T z#cDicGw0=CRsgjPkyof_k-S`u(MGTZoJQ<84_l1Q(p3r^-3wlo-DmseEVIE*xx%Wj zEX@JYVmTl>ipCjG(LvEN6@_`G)4cOQFMG|VY8>NzqfG^?_8FgDAzh<9OwKGCt$Cl^ M^!9a=i``P`zrOm@Pyhe` delta 1430 zcmZ`(U1%It6y9^EO=??pCylZ(S$gx^zeHo2P4i<`8q#EAw@FO0*|^E3qvFrdhX`S9 zAVR8W)Ra367`XIdlkK*Vj_C}clq{mH4<5xWD63*ALLO>c2w2O4Qt=_^o!x9wL1CE7 z&i&4JzVn@P_SE(5r^Is^CR+H!2T-*0<#>d8+vv?vdTAsPZGjRXcLMygXW$q6oSy+V z`DuV(oq^qar4>$a-)Z=WTpUcScww8AzsdrU8C6Q$Jq%wE5)E^+9mdJ+FfTg-OApnK z>Yx~eg}J3e<#GoU0I412g`E(yvCEzC`i|RS#qd}!MW_hc=Yu%`NF;sGPHH^E^!ow& zN?4(5eL87WXrO=TFLS?|gp}lO8BXSjERGZ5MDtPj8Tg$j6#EY%U44$#qvk<+ zBS7g<`tET(&zNSRh+@FEPE7ymPX-j`L#-c+iZ6d}ocr{wnr1goHan}wW(kw(Ra zJ5r(`qb`o`otr*yK-@tm`{L4-I*c~pHRqqM3`k1nXChs@6r*7iD&z??chAAIt^Xm+ zrk7IMx|(~onp+R3**dtPhM$>(<|f%8d=X;o%5!PVJ!tKZx^vJ{V^@;OXu85+4{bEK;QLEeYUD~i#7xaXG+m3 z%lg(7ALGjx#DvPgf4l%SoXmqqTAaSfo9CgpxMqNP#$yckc06T4XEU=1%OV~;=*~smC9c@mw~tzcB-Z9Ni@%w|U6^al z`t%x3|NW35i?{=V zH@o49K{?O=b-xfFK-xB+hKTe=jF8}}l diff --git a/client/basic/kipperbas.d64 b/client/basic/kipperbas.d64 index 34e96ff06a08daf3cb2c765d2fb11cc206e70935..f7c4f27dab22919adcf6dc0722396012311e9abf 100644 GIT binary patch delta 2341 zcmbtVYfKbZ6y7@vOI57925?2KSL>rHh!0Tkfk*)nw*o7VT|gZZwM7Zxe*Y)HkndS}x%_(drGCfdCzpvA7Y$TZp zD?weQJ=%zIH)L%_K6$Gk3tasry|)aj>*r$K!m@y^fZn0VCL>w5G!5}8rRhu8m3sQ) zvy0KGt(UUkOnKu7=A03Zk#*7R*CV@pktXkj!azQyU~W zHJnIMvF-x0k0kA7*N?O+mVx9#a-K-_UhR`t$zdtz)fN34YPiN=UZ| z__TyHP6>KtJtuVQ2*t={TS%vf9NI!!%o0^w$*R<#H&>1%7%x(rJ3J|<@O?)`?Afj4 zv?!KSMtmZtuZ*Zt=A#<->dAkxJIHIRD5gT4k?TR??vcx;E z=QZ*j(LSyw)tXd84oVK99jYPQa2Y$=au0UFcNjbQnj14WP>Jo1UIX8$U{_3@{*l?`HhvpazI@J807?n^*9oM zWdmCWY(3D#ZEORm8-e!KBNf`W2U~9zt?Oji3DE~GtzKpopjMip+d(Y{T^cR)4`uLd zwE$TLECYhpLBAUUb6{{C1m?jV`)_s2c(1xAd0}5fafGpJ- zq0G2mxDz6hu?UZTse$OduWG^gcEkgi5=pXKUCH%`h}?u=xv~hh7`PGox*+(Q@S)L3 z&_V-M*berQk9{~2pP+geXN@MAsZLqX4?;W^)xmJxVNwYSGO9@?#-$Jf3&$8e_zy<@ z36xAoLmlNYB6!>z$K&e>JXj{E%VRxR`eS}`xyK;#<({Ywo#nRim}f$0ImF^(Y?Ad> zQv)RB0YS;+&$A%3!ldLxO6D(z4PvxLYb*hEshHRQ8`l(bbxcKNy-Wz|NA-oWXkxUe zDjFZ5A*g>bj{1d$@go$I6T=v59H+GeLQ7+6bOn8;DK3Lh2GEvLYW9*D_-l{ZdKkOh*e=hW1V0mC9_4b&h zoW03P3q#XU6boA`T8tOq;teL2ks>sSK}+%kXcN>iX+qD>VWUJIrEZor_3)3Q7JGVm zHbhh6dlYAEciohA2mTXsNl~lobD4K4!#QBo;XH=dfZ>kWo=x;aCQ-6Y_HkdLvHQ&nm&xGtM%OI32;_RTjpkuyEoOQvT{Ph%^U1>IrvDKC7_VAV6jT w_Q%jOI~6ofbW0h>HZC#yZ~l}YbKHORCs)JHf!$u>nA&n+KN&c%UurM<6YyLl&j0`b delta 2346 zcmbtWT}%{L6yCcFOI5792o$Z9Dn-Ejdhpw#w zQshpzrFAsAh>IA;INLQfp^YIuXw`xmre=<(V>)Y5uxv>X$O|1zFV)1X@z*Cjxz?nwEIv&v%gg zxJ@8EE#KXNxYSPhiE{F0g#(TbmAha3!KOVTKZUNRJ zs)h2CJ4rrPsH$HF%aiK!_jh*C$tp^NI1kk&Py_AFUwe*$$8vo`o~UOiog_sY1_DOc;lnV&(3uAo;7BjozTZ zmEm}b9UH44`$@trcIn`dXqif^B&Uh_vu^pL=SZ*FD#%$?By4UGrmk0!a)N)zsWoJb z13sxCJu9q&pp=9zAEb!PttF!zIa5mp4T{!!Qj}s9N`*+A_Bge+gqHa8ZUp_twIGRyi`DV#H3++l%gQ``f-C45;W03D;9*6Y{N?Krx_@Vo?rx~3Cgx0#E{q>1S@t! zN|1|@=EZO=+aZv?py>90D)KFo#0#@%(!7c}uHwcb6^{1BD%eJlvZFPbCh_Rm&A6x+ z#x){b7}u?M%&utn)Qu3zhA7e?*AtZ?qX)?30xrtXuR0);H^vg|Rw@2tlcgHq>Wy7SA)SYSm){)VTC77fJtPiF7_UK8%I3aa!vkWVd8S`*AAh zH5_6CgtCAR*5O=JAaK|_y+;iAynN5>z=pkQ60jp%z3OUUl2=Uz#=Jqxm}zk9eV& zD#qnaih3UXaCbOcJt9VmwdLxt7)ioIo!S}Qkauv#$^(Y}S?B}$n_EyPIiMJ0{1)f; zd-yJxwM?$|(^Fz#JD|9G%Jyhi=MRHoVK(55HcW@yKfD-=Hp0fmKqc_tavrQN1eY(U z)0)&Fv0pywA!)uXFmZ+z+T%e>m>4(6(k2qcL58LyiYB(17a5~axt;T6q?nvUle_mU zNghl4u;zzpbt245H%N_h?^`4-dV1A7(34|(6jN+-rgbWI{Kea4)-BGIPIXkA%?E8a zPGhzJw3evtS$Q=?c-X(`5i!tUG(ydXPysN*3DuJ#dLz!)$Lhi8r`;M;8Oxc3>0&(T z(K)0qokQ|JeFk%-aF0S_mJB?}YQXv!dgiEz=80~JZx!33u;PFD)3&JNKGL6@;SRa1 ziL{yR39`S5ye6AnWEcLM(C8vhWxGMM%(a2q1|c`F_q@{kURtAQt(_Ejm*dzQX}l1000 + adc #>ARP_TIMEOUT_MS sta arptimeout + 1 @notimeout: diff --git a/client/test/test_wiznet.s b/client/test/test_wiznet.s index 0629b6f..2b0592f 100644 --- a/client/test/test_wiznet.s +++ b/client/test/test_wiznet.s @@ -6,23 +6,19 @@ .import exit_to_basic .import cfg_get_configuration_ptr - .import copymem - .importzp copy_src - .importzp copy_dest + .import copymem + .importzp copy_src + .importzp copy_dest .import icmp_echo_ip .import icmp_ping .import get_key - .import w5100_read_register - .import w5100_write_register - .import w5100_select_register - .import w5100_get_current_register - .import w5100_read_next_byte - .import w5100_write_next_byte + .import w5100_ip65_init - .import __CODE_LOAD__ - .import __CODE_SIZE__ - .import __RODATA_SIZE__ - .import __DATA_SIZE__ + .import dns_set_hostname + .import dns_resolve + .import dns_ip + .import dns_status + .segment "STARTUP" ;this is what gets put at the start of the file on the C64 @@ -43,72 +39,79 @@ basicstub: .code init: + ; jsr wait_for_keypress - init_ip_via_dhcp -; jsr wait_for_keypress + ldax #$DE00 + jsr probe_for_w5100 + bcc @found + ldax #$DF00 + jsr probe_for_w5100 + bcc @found + ldax #$DF20 + jsr probe_for_w5100 + bcc @found + ldax #no_wiznet + jmp print + rts + +@found: + jsr dhcp_init + +@skip: + jsr print_ip_config +; jsr wait_for_keypress +; +; rts ; ; jsr wait_for_keypress ; jsr dhcp_init - rts ; jsr print_ip_config - print_driver_init - jsr ip65_init - jsr print_cr +; print_driver_init +; jsr ip65_init +; jsr print_cr -; jsr wiznet_dump + jsr ping_test + jsr ping_test_2 -; ldax #W5100_S0_RX_RSR0 -; jsr dump_current_register -; jsr wait_for_keypress -; jsr dump_current_register - - ldax #sending - jsr print - jsr wait_for_keypress - jsr send_frame - jsr wiznet_dump - jsr dump_current_register - - -@wait_for_frame: - ldax #W5100_S0_RX_RSR0 - jsr w5100_read_register - bne :+ - jsr w5100_read_next_byte - bne :+ - inc $d020 -; jsr dump_current_register -; jsr wiznet_dump - - jmp @wait_for_frame + ldax #hostname_1 + jsr do_dns_query + bcs :+ + jsr ping_test_3 : + rts + - jsr dump_frame - - - - ldx #$0 +ping_test: + ldx #$3 : - lda ping_dest,x - lda #5 - jsr w5100_write_next_byte - inx - inc $d021 - cpx #$4 - bne :- - - jsr dump_current_register - - jsr wiznet_dump + lda dhcp_server,x + sta icmp_echo_ip,x + dex + bpl :- + jmp do_ping +ping_test_2: ldx #$3 : lda cfg_gateway,x sta icmp_echo_ip,x dex bpl :- + jmp do_ping + +ping_test_3: + ldx #$3 +: + lda dns_ip,x + sta icmp_echo_ip,x + dex + bpl :- + jmp do_ping + + +do_ping: ldax #pinging jsr print @@ -124,176 +127,20 @@ init: @error: jmp print_errorcode -dump_current_register: - jsr w5100_get_current_register -print_ax_hex: - pha - txa + rts + + +probe_for_w5100: + stax w5100_addr + ldax #probing + jsr print + lda w5100_addr+1 + jsr print_hex + lda w5100_addr jsr print_hex - pla - jmp print_hex - -send_frame: - - ldax #test_frame_length - stax tx_length - - lda #0 - sta byte_count - sta byte_count+1 - - ldax #$4000 - stax tx_ptr - -@write_one_byte: - ldy tx_ptr - lda test_frame,y - tay - ldax tx_ptr - - jsr w5100_write_register - - inc byte_count - bne :+ - inc byte_count+1 - : - - inc tx_ptr - bne :+ - inc tx_ptr+1 - : - - lda byte_count - cmp tx_length - bne @write_one_byte - - tay - ldax #W5100_S0_TX_WR1 - jsr w5100_write_register - - ldax #W5100_S0_CR - ldy #W5100_CMD_SEND_MAC - jsr w5100_write_register - - lda #$40 - sta register_page - jsr dump_wiznet_register_page - - jmp wait_for_keypress - - - - -dump_frame: jsr print_cr - jsr wiznet_dump - - ldax #W5100_S0_RX_RSR0 - jsr w5100_read_register - sta rx_length+1 - jsr w5100_read_next_byte - sta rx_length - ldx rx_length+1 - jsr print_ax_hex - - ; jsr wait_for_keypress - - jsr print_cr - - lda #0 - sta byte_count - sta byte_count+1 - - ldax #$6000 - stax rx_ptr - -@read_one_byte: - ldax rx_ptr - jsr w5100_read_register - jsr print_hex - - inc byte_count - bne :+ - inc byte_count+1 - : - - inc rx_ptr - bne :+ - inc rx_ptr+1 - : - - lda byte_count - cmp rx_length - bne @read_one_byte - lda byte_count+1 - cmp #4 - beq @done - cmp rx_length+1 - bne @read_one_byte - - @done: - - - jsr print_cr - jsr dump_current_register - jsr print_cr - ldax rx_length - jsr print_hex - - jmp wait_for_keypress - -wiznet_dump: - lda #0 - sta register_page - jsr dump_wiznet_register_page - lda #$4 - sta register_page - jsr dump_wiznet_register_page - - jsr wait_for_keypress - - jmp print_cr - -dump_wiznet_register_page: - sta register_page - lda #0 - sta current_register - jsr print_cr - -@one_row: - lda current_register - cmp #$40 - beq @done - lda register_page - jsr print_hex - lda current_register - jsr print_hex - lda #':' - jsr print_a - lda #' ' - jsr print_a - - lda #0 - sta current_byte_in_row - -@dump_byte: - lda current_register - ldx register_page - jsr w5100_read_register - jsr print_hex - lda #' ' - jsr print_a - inc current_register - inc current_byte_in_row - lda current_byte_in_row - cmp #08 - bne @dump_byte - - jsr print_cr - jmp @one_row -@done: - jsr print_cr - rts + ldax w5100_addr + jmp w5100_ip65_init wait_for_keypress: lda #0 @@ -302,46 +149,44 @@ wait_for_keypress: jsr print jsr get_key rts + + + +do_dns_query: + pha + jsr print + lda #' ' + jsr print_a + lda #':' + jsr print_a + lda #' ' + jsr print_a + pla + jsr dns_set_hostname + jsr dns_resolve + bcc :+ + ldax #dns_lookup_failed_msg + jsr print + sec + rts +: + ldax #dns_ip + jsr print_dotted_quad + jsr print_cr + clc + rts + .rodata ms: .byte " MS",13,0 -pinging: .byte "PINGING ",13,10,0 -sending: .byte "SENDING ",13,10,0 +pinging: .byte "PINGING ",0 hello: .byte "HELLO WORLD!",13,10,0 -sock_0: .byte "SOCKET 0 ",0 -read: .byte "READ",0 -write_addr: .byte "WRITE" -addr: .byte " ADDRESS : ",0 - -ping_dest: .byte 10,5,1,1 - - -test_frame: -.byte $ff,$ff,$ff,$ff,$ff,$ff -.byte $01,$02,$03,$04,$05,$06,$07,$08 -.byte $11,$12,$13,$14,$15,$16,$17,$18 -.byte $21,$22,$23,$24,$25,$26,$27,$28 -.byte $31,$32,$33,$34,$35,$36,$37,$38 -.byte $ff,$ff,$ff,$ff,$ff,$ff -.byte $ff,$ff,$ff,$ff,$ff,$ff -.byte $01,$02,$03,$04,$05,$06,$07,$08 -.byte $11,$12,$13,$14,$15,$16,$17,$18 -.byte $21,$22,$23,$24,$25,$26,$27,$28 -.byte $31,$32,$33,$34,$35,$36,$37,$38 - -test_frame_length=*-test_frame +no_wiznet: .byte "NO W5100 FOUND",13,10,0 +probing: .byte "LOOKING FOR W5100 AT $",0 +ping_ip: .byte 10,5,1,84 +hostname_1: .byte "JAMTRONIX.COM",0 .bss -rx_length: .res 2 -rx_ptr: .res 2 -byte_count: .res 2 - -tx_length: .res 2 -tx_ptr: .res 2 - -current_register:.res 1 -current_byte_in_row: .res 1 -register_page: .res 1 - +w5100_addr: .res 2 ;-- LICENSE FOR test_ping.s --