From 55c54ac5df2c1f61f5e34b42d99cdfdd282a0c9c Mon Sep 17 00:00:00 2001 From: jonnosan Date: Fri, 30 Jul 2010 14:54:34 +0000 Subject: [PATCH] git-svn-id: http://svn.code.sf.net/p/netboot65/code@259 93682198-c243-4bdb-bd91-e943c89aac3b --- client/basic/basml.bas | Bin 215 -> 404 bytes client/basic/basml.d64 | Bin 174848 -> 174848 bytes client/basic/mlstub.s | 90 ++++++++++++++++++++++++++++++------ client/kipperterm2/TODO.txt | 9 ++++ 4 files changed, 85 insertions(+), 14 deletions(-) create mode 100644 client/kipperterm2/TODO.txt diff --git a/client/basic/basml.bas b/client/basic/basml.bas index 5e589f33de4f36a6bd267117b45a3766de37a3ac..04efa7be5f2c617586d74ceaf8f50ab45eec3c51 100644 GIT binary patch delta 199 zcmcc4IE8t_)%vd-(-^uHT!U0M8YnDRn5m%T=da)ypb#A5=KX(OxKZOAQpb#Z%paKR>&N~eA49$!!%o%(*pP?G+8WiLo zq~PrD;;Li~vffq?-4E7&y1 delta 9 QcmbQje4TN^RVD@o01;*a*8l(j diff --git a/client/basic/basml.d64 b/client/basic/basml.d64 index 09af1d947c748f6f674b32e9ba7d6920c1cc41b5..44aa2ed3dab91f04c111d54c1ddf1b995b437e2e 100644 GIT binary patch delta 5816 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 delta 5345 zcmai23se+Wny%`Gwh@H}(P<-&Ws-?T#o!BB6(cWs6(B*7=_00T5_9`z#l&c4%&ew; zVF=0XgLBSK%VhhA4X78XUdZMoi?eNN@}!yIsr5DLMn)%*Au2tkCyq&WcG>?{gPKgv z**=`Ad;jozId0IaF4j_E;0EY@t{ehRRL+*sKKVYVpHyl`94|6 zKR9FNI^opFV5@Enw&^$I`qq7Ilq)>i-5TJ8IoXa_pZ#(E5znFQUd^Uom&qcRcd_eh z%8?~5lHnptT>(eJBG>%IE_I2k4rohUYKE&0I2kT=sjF@&6Y0}G1Euo;3p|61U7;ne z!eaOd_1W%66XAJsvCHviIm{X3Ba2*4oDT8G!9_0pD-hPLK$AU%rbb8T5f&_Hjg4eF zU@lDk5DAB}#bA}QJq=syA8VhFx%zY(A8@e+wWl4PU*Ep(Fr5sGs>z`VV1&MHDmrY! z`vqO&h5spNN`_I>MEZU-Q^6|Xc((B1Dls*u#W6L&fd_GRPD@;2_x`kKrk42* zt>T@YWk91YAd+QL3wN0_61rRWxA*Gb47Lp(?$d9n%OqpGN&0k|r2kc>%L9^Arq;kJ zGv6>X!xI9WSd&xOSSVyv6PM(bBzK29bJ!&{4oi|O*s3Wfe4cwbK`+ss)(a@lCY-*K zW;F(?S~%gWT)I0D+cJ?2I)lrl&J_|Hs=+L&bEP>91|8!bmpWIOlh*>LO(oyYv-z3x zo|HON`v9qx==%C2RH{E}u459=_8;k0lmK3)~zq;f)!1BX&Rz#L^LenbPO@7KWkal7B6X@5n?_sGYbJnR0=0 ze*pqM9U%u%z#7VzibldCaCilKgK1dkErMfn+rorRAZte3Z5tfzbGX&7Z}T zopSIX3gvpxbRW9(Cema39JkWr!5XONg1{XiHoq&rCAOP3XQ2ki*Rr|-g?S@hZ9&09 zNcfkWt|}omPjKW3*41!Bex`uCrT(2aN;4-f*P@v9AbGb2%vhpuOnb@v2{};wVPhZ@-^o2(>yOqdc3+t zf=Fy(i{Z+Y!NXqZQnsXveU967Yd{h{%7-YnN{~Z{fhF)6a2&ZmQVWaJ8v3OKF-7D1 zeq>H_xfcE4sKsb5g;)>ENnB4B+D}2A^b`yq+cKDTUgItk4*uustUy zU@K1`k1@HUFZ2%T-y`Yv&~eni8}3@4W0*FW=P?vSWWFo(79x+igfy2^ChsAyhB{9m zBUOtr(p$J5(0vc-_8!pHkn!W*PfsBITI2+3eg`!+A4h5cH3yN}ikja-aA{v0;26%74-}0!>%h(Qj-Gd!t)AZ^u-5ah%v#UCF>Aej`WGipAV<72T1~dW z4S_PHcA}t)pisevv?0IS+z_^7H`SwvY*ti?$P0?vfyfp`J?25=MTI7jI+miJE94gn z*{INGz|^sQonXp|?c^neJg*#8RfIXRRUw;{jss3SfdRp)B6 zzN7@VDo&gNB9L}3qQz|`nU9H@{XH2ChjKhx@jf(cQ+7v+{`CAio6uj zTo`pA?=e^i%Z2b}A>9df1972}BL8u>hgq{ifox+g=r@b;*{d>5hZEqVsjeX0D7?veAZf@P*+Dp0n zUUG*aw6~H|xV?>>#(hSzv%R%0s#td#*SCprB~TFR+t?ZZ43kTk3}Es{EWA=FWRwcC zR?EWAN}4R0vT(el>l^hYDE+Wwdn>~>cqLVYli-!MI#X6RN}h1OUZ6fNIdK9xht*9I z=ExtgS}SD^!}LjM_zyUJminS(#DrJrKL!-hr_znkjX>$3DR9$%C5AcO22F;=DMvoT z0H~KR9Dk0S$Le;eA28+tb%)fSBk9TND^h>1q>ooUQh%OgDxAk2b-TkMrR|W?UXju~ zQh3C;9vNU}{>aSavkK3#3cre>B?lM;BL=CR!iWrj z#Z9^74ECPI5WxjZE@Jg8W)R`*K2`_w3%C~s7a5~hzcJW(@+{V`suwWmUcl-__P&U_ zBI+4j-1I=_8Qjoabg5$urn#2e!r;Q)f3c{GIIvyZEg*`v>e^ z#6=?=K=-{}!p|&fEg*|E?-ET|T=u$`^Qkz|Q@}KW8+O40r>$3a=I$V~aS; z7SVU#A{Lh4?{I7p>MSkjNSUp{LZAtnsRbX5u5GUg*Pg@bLt5}*EsEEZweR3{lE&~l zSz~xTNn?1Oq5)h7tSwwe+owx z>fF7=M6)%va9B6oVz8sm(~Oj{!%9cf;Se9Mq)G5#$+Q?&aYd!NN9s@0^eT0?Z$Sk= z$z$d+v`z9Cn>kU_wBUR#S}4?A5|j?uYf_|{nT6n!toL7Onhdtbwq$yAOQw%*$!G{E zWG)mNi1H!L`>+OQ5L`{xpqMkeDcWS_WRj-tmPoP&v5_QAxLWQzSHaKmCBOyuh*#Nl z9K!6(h3&>HbqE`Y!6Doi8pQoOB?G?CZfDA&KVh=K75V~`g)Si-8hrIUW(O6ZU_JX% z3_ZiXd!Ts^OkjjEW#~q&loX?X6%A;k651Zc7=Q|PO?LxW+To5id8`q*ueB1xhbJXK z2jH8q^n=I)-)`{z2oWY-wiq)5+@(QmJTP=)2+D}rBGnpzOqHfqX~AkO+T6pv`R6Lb#;S{c8#@0~=;@PUK^6M?7osQ%RJ)1y zV9UFOeRpl}DDWi!jXua#X~OGkn`S}nC+jqC4MPTXoffRo@Iv+x0bjnuOu$BWvwr)o z7=1NRMJ{9S6~I$r&RQ^3ZK_sl&~eX*S{NGrF(aRw=mE0TYXL&0us7Js9A2jtHV)Tl z9d6j%eZDzs`JxAsY^j7lL$gWD8P#@)e2F7pVi@#)iG8oH<)8Av2SCnE<7>J7_uNaA2JB8#geyhP~GzEE2&&PBj_E;S{4ZJkeOHMsWWPY+O^X;ox=X<@Q0V z(B5WD>~1yA^$%ksrdRw;wK|MDBe?l582*tIiC}SSHB60o$^pqq{}RA6V1vPuZcQ2o z%##r&ZgOb~sEAvA4ORR<*y4XGcZA}7pTO8>spdCZlI*@M)jaW8*0D*PZ_7G1seuXi zoNr4FUp=WXUlhxQb>&Zpc{4e2WJKgR-<2AEhR>+s9smEsc8HJv^#(rA7SH`{M$+GW lWgGY@K6wM*HjT^4t}GQ>?)|v2AOGr%XZd$$JZrg<_kSwjklX+O diff --git a/client/basic/mlstub.s b/client/basic/mlstub.s index b9fcb84..c475915 100644 --- a/client/basic/mlstub.s +++ b/client/basic/mlstub.s @@ -14,15 +14,20 @@ CLEAR=$A65E ;clears BASIC variables .import dhcp_init .import ip65_init .import cfg_get_configuration_ptr - +.import tcp_listen +.import tcp_callback +.import tcp_connect_ip +.import tcp_send +.import tcp_send_data_len .zeropage temp_buff: .res 2 .segment "STARTUP" ;this is what gets put at the start of the file on the C64 .word jump_table ; load address jump_table: - jmp init ; this should be at $4000 ie SYS(16384) - + jmp init ; this should be at $4000 ie SYS 16384 + jmp listen_on_port ; this should be at $4003 ie SYS 16387 + jmp send_data ; this should be at $4006 ie SYS 16390 .code init: @@ -52,22 +57,54 @@ init: ldax #init_msg+1 jsr print_ascii_as_native - jsr ip65_init + jsr ip65_init bcs @init_failed - jsr dhcp_init - bcc @init_ok - jsr ip65_init ;if DHCP failed, then reinit the IP stack (which will reset IP address etc that DHCP messed with to cartridge default values) - bcc @init_ok + jsr dhcp_init + bcc @init_ok + jsr ip65_init ;if DHCP failed, then reinit the IP stack (which will reset IP address etc that DHCP messed with to cartridge default values) + bcc @init_ok @init_failed: - print_failed - jsr print_errorcode - + print_failed + jsr print_errorcode + jmp set_error_var @init_ok: jsr print_ip_config exit_to_basic: - jmp set_error_var + rts + +listen_on_port: + ldax #tcp_data_arrived + stax tcp_callback + lda #0 + sta ip65_error + + jsr get_io_var + jsr tcp_listen + bcs @error + ldax #connected + jsr print_ascii_as_native + ldax #tcp_connect_ip + jsr print_dotted_quad + jsr print_cr +@error: + jmp set_error_var + +send_data: + jsr get_io_string_ptr + sty tcp_send_data_len + ldy #0 + sty tcp_send_data_len+1 + + jsr tcp_send + bcs @error + lda #0 + sta ip65_error +@error: + jmp set_error_var + + set_error_var: ldy #16 ;we want to set 3rd & 4th byte of 3rd entry in variable table entry ldx #0 @@ -85,6 +122,27 @@ set_var: sta (VARTAB),y ; set low byte rts +get_io_var: + ldy #9 ;we want to read 3rd & 4th byte of 2nd entry in variable table entry + lda (VARTAB),y ; set high byte + tax + iny + lda (VARTAB),y ; set low byte + rts + +get_io_string_ptr: + ldy #4 ;we want to read 1st entry in variable table entry + lda (VARTAB),y ; ptr high byte + tax + dey + lda (VARTAB),y ; ptr low byte + pha + dey + + lda (VARTAB),y ; length + tay + pla + rts set_io_string: stax copy_src @@ -110,6 +168,10 @@ set_io_string: rts +tcp_data_arrived: + + rts + .data basic_vartable_entries: @@ -128,8 +190,8 @@ basic_vartable_entries: .byte 0,0,0 ;3 dummy bytes basic_vartable_entries_length=*-basic_vartable_entries -hello_world: - .byte "HELLO WORLD!",0 +connected: + .byte "connected - ",0 .bss transfer_buffer: .res $100 diff --git a/client/kipperterm2/TODO.txt b/client/kipperterm2/TODO.txt new file mode 100644 index 0000000..18fba8f --- /dev/null +++ b/client/kipperterm2/TODO.txt @@ -0,0 +1,9 @@ +redo directory listing code (not hardcoded to 1541 disk format) +scrollback buffer +log session to disk +punter protocol +tftp individual files +allow changing of default drive from telnet menu +send dos command to current drive + +