git-svn-id: http://svn.code.sf.net/p/netboot65/code@237 93682198-c243-4bdb-bd91-e943c89aac3b

This commit is contained in:
jonnosan 2009-12-30 02:00:21 +00:00
parent caacc876fb
commit 0df937be7c
8 changed files with 95 additions and 26 deletions

View File

@ -1,4 +0,0 @@
- telnet now supports vt100 emulation (thanks to Lars Stollenwerk)
- gopher: fixed bug preventing connection to jamtronix.com

View File

@ -1 +1 @@
.byte "1.0.25" .byte "1.0.27"

View File

@ -102,13 +102,13 @@ getc_timeout_seconds: .res 1
buffer_length: .res 2 buffer_length: .res 2
.code .code
xmodem_send:
;send a file via XMODEM (checksum mode only, not CRC) ;send a file via XMODEM (checksum mode only, not CRC)
;assumes that a tcp connection has already been set up, and that the other end is waiting to start receiving ;assumes that a tcp connection has already been set up, and that the other end is waiting to start receiving
;inputs: AX points to routine to call once for each byte in file to send (e.g. save to disk, print to screen, whatever) - byte will be in A, carry flag set means EOF ;inputs: AX points to routine to call once for each byte in file to send (e.g. save to disk, print to screen, whatever) - byte will be in A, carry flag set means EOF
; xmodem_iac_escape should be set to non-zero if the remote end escapes $FF bytes (i.e. if it is a real telnet server) ; xmodem_iac_escape should be set to non-zero if the remote end escapes $FF bytes (i.e. if it is a real telnet server)
;outputs: none ;outputs: none
xmodem_send:
stax get_byte+1 stax get_byte+1
jsr xmodem_transfer_setup jsr xmodem_transfer_setup
lda #0 lda #0
@ -262,13 +262,13 @@ xmodem_transfer_setup:
stax tcp_callback stax tcp_callback
rts rts
xmodem_receive:
;recieve a file via XMODEM (checksum mode only, not CRC) ;recieve a file via XMODEM (checksum mode only, not CRC)
;assumes that a tcp connection has already been set up, and that the other end is waiting to start sending ;assumes that a tcp connection has already been set up, and that the other end is waiting to start sending
;inputs: AX points to routine to call once for each byte in downloaded file (e.g. save to disk, print to screen, whatever) - byte will be in A ;inputs: AX points to routine to call once for each byte in downloaded file (e.g. save to disk, print to screen, whatever) - byte will be in A
; xmodem_iac_escape should be set to non-zero if the remote end escapes $FF bytes (i.e. if it is a real telnet server) ; xmodem_iac_escape should be set to non-zero if the remote end escapes $FF bytes (i.e. if it is a real telnet server)
;outputs: none ;outputs: none
xmodem_receive:
stax got_byte+1 stax got_byte+1
jsr xmodem_transfer_setup jsr xmodem_transfer_setup
@ -294,6 +294,7 @@ xmodem_receive:
bcc @got_block_start bcc @got_block_start
lda user_abort lda user_abort
beq @no_user_abort beq @no_user_abort
sec
jmp xmodem_transfer_exit jmp xmodem_transfer_exit
@no_user_abort: @no_user_abort:
jsr send_nak jsr send_nak
@ -314,18 +315,32 @@ xmodem_receive:
@got_block_start: @got_block_start:
cmp #EOT cmp #EOT
bne :+ bne :+
ldax #got_eot
jsr print_ascii_as_native
jsr send_ack jsr send_ack
clc clc
jmp xmodem_transfer_exit jmp xmodem_transfer_exit
: :
cmp #$81 ;jamming signal BBS seems to use $81 not $01 as SOH
beq @got_soh
cmp #SOH cmp #SOH
bne @wait_for_block_start beq @got_soh
jsr print_hex
lda #'!' ;we got an unexpected character
jsr print_a
jsr print_a
jmp @wait_for_block_start
@got_soh:
;now get block number ;now get block number
lda #XMODEM_TIMEOUT_SECONDS lda #XMODEM_TIMEOUT_SECONDS
jsr getc jsr getc
bcc :+ bcc :+
jsr send_nak jsr send_nak
lda #'.'
jmp print_a
jmp @wait_for_block_start jmp @wait_for_block_start
: :
sta actual_block_number sta actual_block_number
@ -334,12 +349,18 @@ xmodem_receive:
lda #XMODEM_TIMEOUT_SECONDS lda #XMODEM_TIMEOUT_SECONDS
jsr getc jsr getc
bcc :+ bcc :+
lda #'.'
jmp print_a
jsr send_nak jsr send_nak
jmp @wait_for_block_start jmp @wait_for_block_start
: :
adc actual_block_number adc actual_block_number
cmp #$ff cmp #$ff
bne @wait_for_block_start beq :+
lda #'?'
jsr print_a
jmp @wait_for_block_start
:
ldax #receiving ldax #receiving
jsr print_ascii_as_native jsr print_ascii_as_native
@ -527,6 +548,7 @@ block_number_msg: .byte " block $",0
expecting: .byte "expecting",0 expecting: .byte "expecting",0
receiving: .byte "receiving",0 receiving: .byte "receiving",0
sending: .byte "sending",0 sending: .byte "sending",0
got_eot: .byte "end of transmission",10,0
bad_block_number: .byte "bad block number",0 bad_block_number: .byte "bad block number",0
checksum_msg: .byte "checksum $",0 checksum_msg: .byte "checksum $",0

8
dist/make_dist.rb vendored
View File

@ -26,8 +26,12 @@ end
["client/carts/kipperkart_rr.bin","c64/"], ["client/carts/kipperkart_rr.bin","c64/"],
["client/carts/kipperterm.bin","c64/"], ["client/carts/kipperterm.bin","c64/"],
["client/carts/kipperterm_rr.bin","c64/"], ["client/carts/kipperterm_rr.bin","c64/"],
["client/carts/kipperterm.prg","c64/"],
["client/carts/kippergo.bin","c64/"],
["client/carts/kippergo_rr.bin","c64/"],
["client/carts/kippergo.prg","c64/"],
["client/carts/netboot.bin","c64/"], ["client/carts/netboot.bin","c64/"],
["client/nb65/d64_upload.prg","boot/"], #["client/nb65/d64_upload.prg","boot/"],
["client/examples/upnatom.prg","boot/"], ["client/examples/upnatom.prg","boot/"],
["server/lib/tftp_server.rb","lib"], ["server/lib/tftp_server.rb","lib"],
["server/lib/file_list.rb","lib"], ["server/lib/file_list.rb","lib"],
@ -41,7 +45,7 @@ end
["doc/README.C64.html","doc"], ["doc/README.C64.html","doc"],
["doc/CONTRIBUTORS.txt","doc/"], ["doc/CONTRIBUTORS.txt","doc/"],
["doc/LICENSE.txt","doc/"], ["doc/LICENSE.txt","doc/"],
["doc/CHANGES.txt","doc/"],
["doc/kipper_api_technical_reference.doc","doc"], ["doc/kipper_api_technical_reference.doc","doc"],
["client/inc/common.i","inc"], ["client/inc/common.i","inc"],
["client/inc/kipper_constants.i","inc"], ["client/inc/kipper_constants.i","inc"],

View File

@ -1 +1 @@
1.0.25 1.0.27

25
doc/CHANGES.txt Normal file
View File

@ -0,0 +1,25 @@
v1.0.27
- ADD: change border colour to indicate telnet connect/disconnect
v1.0.26
- FIX: telnet often failed to notice disconnect by remote server
v1.0.25
- FIX: vt100 emulation was leaving a cursor after a "clear to end of line" command ( ]J )
- ADD: XMODEM upload support
- CHANGE: removed 'line mode' from telnet
v1.0.24
- CHANGE: split KipperTerm (telnet + gopher) into KipperTerm (enhanced telnet) and KipperGo (basic telnet + gopher)
- ADD: XMODEM download support for KipperTerm
- FIX: tell remote server screen size (40x25)
- FIX: vt100 no longer does line wrap & scroll when writing to bottom right hand corner
- FIX: telnet sessions now send 'keep alive' (stops my broadband router from losing NAT state)
- FIX: tcp was sending wrong seq number when ACKing inbound data just after sending data out
- FIX: telnet packets > 256 bytes not completely processed
- ADD: can change default disk drive
v1.0.23
- telnet now supports vt100 emulation (thanks to Lars Stollenwerk)
- gopher: fixed bug preventing connection to jamtronix.com

View File

@ -7,18 +7,19 @@ memory location as BASIC.
Within the major flavours, there are also variations in media - the majority of code is identical between the different media but there are different headers etc. The supported media are: Within the major flavours, there are also variations in media - the majority of code is identical between the different media but there are different headers etc. The supported media are:
<p> <p>
<ul> <ul>
<li> A prg that can be loaded from disk </li> <li> A program that can be loaded from disk (filename will end with .prg)</li>
<li>'ordinary' cartridge images (that can be burned into an eeprom on e.g. a 64NIC+ card)</li> <li>'ordinary' cartridge images (that can be burned into an eeprom on e.g. a 64NIC+ card) (filename will end with .bin)</li>
<li>'Retro Replay' cartridge images - these are actually 'ordinary' cartridge images that have been converted into a form suitable for use in a Retro Replay using Doc Bacardi's <li>'Retro Replay' cartridge images - these are actually 'ordinary' cartridge images that have been converted into a form suitable for use in a Retro Replay using Doc Bacardi's
<a href=http://freenet-homepage.de/LittleDreamLand/CRT8040.html>CRT8040</a> tool</li> <a href=http://freenet-homepage.de/LittleDreamLand/CRT8040.html>CRT8040</a> tool (filename will end with _rr.bin)</li>
</ul> </ul>
<table> <table>
<tr><th>filename</th><th>flavour</th><th>media</th><th>command to use in VICE</th></tr> <tr><th>filename</th><th>flavour</th><th>cartidge size</th></tr>
<tr><td>netboot.bin</td><td>UDP only (+ BASIC)</td><td>standard 8KB cart</td><td>x64.exe -cart8 netboot.bin</td></tr> <tr><td>netboot.bin</td><td>UDP only (+ BASIC)</td><td>8KB cart</td></tr>
<tr><td>kipperkart.bin</td><td>UDP/TCP (no BASIC)</td><td>standard 16KB cart</td><td>x64.exe -cart16 kipperkart.bin</td></tr> <tr><td>kipperkart.bin</td><td>UDP/TCP (no BASIC)</td><td>16KB cart</td></tr>
<tr><td>kipperterm.bin</td><td>telnet &amp; gopher client</td><td>standard 16KB cart</td><td>x64.exe -cart16 kipperterm.bin</td></tr> <tr><td>kippergo.bin</td><td>basic telnet &amp; gopher client</td><td>16KB cart</td></tr>
<tr><td>kipperkart_rr.bin</td><td>UDP/TCP (no BASIC)</td><td>Retro Replay cart image</td><td>x64.exe -cartrr kipperkart_rr.bin</td></tr> <tr><td>kipperterm.bin</td><td>enhanced telnet</td><td>16KB cart</td></tr>
</table> </table>
@ -54,13 +55,12 @@ Once the 16KB cartridge image has initialised the IP stack, it will look for a f
bytes of the file) and executed. NB - since BASIC is not available only 100% Machine Language programs can be executed, although if there is a BASIC stub consisting of a single line that does a SYS bytes of the file) and executed. NB - since BASIC is not available only 100% Machine Language programs can be executed, although if there is a BASIC stub consisting of a single line that does a SYS
call, the target of the SYS call will be used as the address to start execution from. call, the target of the SYS call will be used as the address to start execution from.
<h2>KIPPERTERM cart</h2> <h2>KIPPERGO cart</h2>
<ul> <ul>
<li>F1 : TELNET. You will be prompted to enter a hostname, a port number, and a connection mode. Connection mode is either <li>F1 : TELNET. You will be prompted to enter a hostname, a port number, and a connection mode. Connection mode is either
<ul> <ul>
<li>VT100 - keypresses are converted to ASCII before being sent out, and incoming data is converted to PETSCII before being displayed. Many common VT100 escape codes are interpreted, and keystrokes are sent a character at a time.</li> <li>VT100 - keypresses are converted to ASCII before being sent out, and incoming data is converted to PETSCII before being displayed. Many common VT100 escape codes are interpreted, and keystrokes are sent a character at a time.</li>
<li>PETSCII - no translation is done on data coming in or out. This mode is suitable for connecting to PETSCII BBSs</li> <li>PETSCII - no translation is done on data coming in or out. This mode is suitable for connecting to PETSCII BBSs</li>
<li>Line - Data is converted to/from ASCII, but each line of input can be edited and is not sent until the RETURN key is pressed.</li>
</ul> </ul>
Once a connection is made, it can be terminated by hitting RUN/STOP Once a connection is made, it can be terminated by hitting RUN/STOP
<li>F3 : GOPHER. You will be prompted to enter the hostname (only - no port number can be specified) of a gopher server, and the gopher client will be launched connecting to the specified server. <li>F3 : GOPHER. You will be prompted to enter the hostname (only - no port number can be specified) of a gopher server, and the gopher client will be launched connecting to the specified server.
@ -83,6 +83,26 @@ starting with a highlighted letter (e.g. the first link on a page will have an i
the 2nd link on a page will have an inverse "B" next to it etc). Press the letter assigned to the link the 2nd link on a page will have an inverse "B" next to it etc). Press the letter assigned to the link
to load up that resource. to load up that resource.
<h2>KIPPERTERM cart</h2>
<ul>
<li>F1 : TELNET. You will be prompted to enter a hostname, a port number, and a connection mode. Connection mode is either
<ul>
<li>VT100 - keypresses are converted to ASCII before being sent out, and incoming data is converted to PETSCII before being displayed. Many common VT100 escape codes are interpreted, and keystrokes are sent a character at a time.</li>
<li>PETSCII - no translation is done on data coming in or out. This mode is suitable for connecting to PETSCII BBSs</li>
</ul>
</ul>
Once a connection is made, it can be terminated by hitting RUN/STOP
<h3>File Transfer</h3>
While connected, you can hit F1 to bring up a file transfer menu. This menu presents the following options:
<ul>
<li>F1 : D/L File (XMODEM). Select this option after you have started the file download process on the remote server. You will be prompted for a filename for the file to be saved as after the download has completed.
<li>F3 : U/L File (XMODEM). Select this option after you have started the file upload process on the remote server. You will be given a menu of files on the local disk to transfer.
<li>F7 : Return. Selecting this option will restore the screen return you to your connection
</ul>
<h2>IP CONFIGURATION</h2> <h2>IP CONFIGURATION</h2>
There is a script in the "bin" folder called "set_ip_config.rb" that can be used to modify the MAC address and IP config details in the cart image before There is a script in the "bin" folder called "set_ip_config.rb" that can be used to modify the MAC address and IP config details in the cart image before
@ -120,6 +140,7 @@ Most network functions will return an 8 bit error code if things go wrong.
<tr><td>$88</td><td>NO SUCH LISTENER</td></tr> <tr><td>$88</td><td>NO SUCH LISTENER</td></tr>
<tr><td>$89</td><td>CONNECTION RESET BY PEER</td></tr> <tr><td>$89</td><td>CONNECTION RESET BY PEER</td></tr>
<tr><td>$8A</td><td>CONNECTION CLOSED</td></tr> <tr><td>$8A</td><td>CONNECTION CLOSED</td></tr>
<tr><td>$8B</td><td>TOO MANY ERRORS</td></tr>
<tr><td>$90</td><td>FILE ACCESS FAILURE</td></tr> <tr><td>$90</td><td>FILE ACCESS FAILURE</td></tr>
<tr><td>$A0</td><td>MALFORMED URL</td></tr> <tr><td>$A0</td><td>MALFORMED URL</td></tr>
<tr><td>$A1</td><td>DNS LOOKUP FAILED</td></tr> <tr><td>$A1</td><td>DNS LOOKUP FAILED</td></tr>
@ -143,8 +164,8 @@ NETBOOT65 is licensed under the same terms as IP65, the <a href=http://www.mozil
Package is maintained by Jonno Downes - jonno@jamtronix.com Package is maintained by Jonno Downes - jonno@jamtronix.com
<h3>Contributors</h3> <h3>Contributors</h3>
<ul> <ul>
<li>Jonno Downes - current maintainer of ip65, layers 4-7 (dhcp,dns,tcp,telnet, http, gopher)</li> <li>Jonno Downes - current maintainer of ip65, original developer of layers 4-7 (dhcp,dns,tcp,telnet, http, gopher)</li>
<li>Glenn Holmer - icmp enhancements, bugfixes</li> <li>Glenn Holmer - icmp enhancements, bugfixes</li>
<li>Per Olofsson - initial creator of ip65, layers 1-3 (eth,arp,ip,icmp,udp)</li> <li>Per Olofsson - initial creator of ip65, original developer of layers 1-3 (eth,arp,ip,icmp,udp)</li>
<li>Lars Stollenwerk - vt100 emulation </li> <li>Lars Stollenwerk - vt100 emulation </li>
</ul> </ul>

View File

@ -162,6 +162,7 @@ IP65 is a TCP/IP stack for 6502 based computers.
<pre> <pre>
Release Maintainer Changes Release Maintainer Changes
------- ---------- ------- ------- ---------- -------
2009-12-23 Jonno Downes TCP and telnet bugfixes, vt100 emulation, XMODEM support
2009-10-31 Jonno Downes Added Web Application Server functions 2009-10-31 Jonno Downes Added Web Application Server functions
2009-08-02 Jonno Downes More TCP functionality, includes telnet 2009-08-02 Jonno Downes More TCP functionality, includes telnet
2009-07-12 Jonno Downes Initial TCP implementation (use -DTCP to include) 2009-07-12 Jonno Downes Initial TCP implementation (use -DTCP to include)