NETBOOT FOR THE C64

There are 2 major 'flavours' of clients, the major difference being whether the cart supports UDP only (but allows access to BASIC), or UDP + TCP (but loses access to BASIC). The reason for this is the UDP only version of the client fits into an 8KB cartridge, whereas the TCP code pushes the cartridge size up to 16KB, and the upper half of a 16KB cartridge sits in the same 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:

filenameflavourmediacommand to use in VICE
netboot.binUDP only (+ BASIC)standard 8KB cartx64.exe -cart8 netboot.bin
kipperkart.binUDP/TCP (no BASIC)standard 16KB cartx64.exe -cart16 kipperkart.bin
kipperterm.bintelnet & gopher clientstandard 16KB cartx64.exe -cart16 kipperterm.bin
kipperkart_rr.binUDP/TCP (no BASIC)Retro Replay cart imagex64.exe -cartrr kipperkart_rr.bin

USING THE CARTRIDGE

When the cartridge starts, it will attempt to configure the IP stack via DHCP. If the DHCP config fails (either by timing out, or the user press RUN/STOP) then the IP stack will fall back to using the IP configuration built into the cartridge. See the section "IP CONFIGURATION" for info on how to modify the cartridge defaults prior to burning an image.

NETBOOT - UDP only cart

Once the IP stack is initialised, an attempt to boot from the network will take place. a TFTP server will be queried for a list of PRG files, and then a menu appears allowing the selection of a file to be downloaded and executed. Most 'single load' applications should work

KIPPERKART - UDP/TCP cart

AUTOEXEC

Once the 16KB cartridge image has initialised the IP stack, it will look for a file called "autoexec.prg" on the default drive. If this file is found it will be loaded (using the load address specified by the first 2 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.

KIPPERTERM cart

Gopher Client

Once a gopher resource is loaded, the following keys are active: If the page currently being displayed has links to further resources in it, each link will be displayed starting with a highlighted letter (e.g. the first link on a page will have an inverse "A" next to it, 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.

IP CONFIGURATION

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 it is burned. For example, to set the MAC address and DNS servers, use this command:
set_ip_config.rb nb65_std_cart.bin mac ab:cd:ef:12:34:56 dns 10.5.1.1
run "set_ip_config.rb" with no parameters to see all the options for what can be configured.

STARTING THE SERVER

  1. unzip the archive somewhere on your local hard drive
  2. start the bin/tftp_server.rb script (e.g. by double-clicking on it)

ADDING MORE FILES

Only single-load files can be used. The files need to be in "PRG" format, i.e.the first 2 bytes of the file must be the load address (little-endian, i.e. low/high). The files also need to have a file extension of ".PRG" (in upper case, if your operating system of choice is case sensitive).

Files need to be placed in the 'boot/' folder.

Due to a limitation in the menu selection code, only the first 128 PRG files in the boot/ folder can be selected.

ERROR CODES

Most network functions will return an 8 bit error code if things go wrong.
ERROR CODEDESCRIPTION
$80PORT IN USE
$81TIMEOUT ON RECEIVE
$82TRANSMIT FAILED
$83TRANSMISSION REJECTED BY PEER
$84INPUT TOO LARGE
$85DEVICE FAILURE
$86ABORTED BY USER
$87LISTENER NOT AVAILABLE
$88NO SUCH LISTENER
$89CONNECTION RESET BY PEER
$8ACONNECTION CLOSED
$90FILE ACCESS FAILURE
$A0MALFORMED URL
$A1DNS LOOKUP FAILED
$FEOPTION NOT SUPPORTED
$FFFUNCTION NOT SUPPORTED

REQUIREMENTS

  1. RR-NET or compatible adaptor (to use under VICE, you will need pcap or winpcap installed)
  2. (RECOMMENDED) a DHCP server on your network
  3. a working ruby installation

LICENSE

NETBOOT65 is licensed under the same terms as IP65, the Mozilla Public License Version 1.1.

SOURCE CODE

Browse online at http://netboot65.svn.sourceforge.net/viewvc/netboot65/ or else download the whole tree through SVN with the following instruction set:
svn co https://netboot65.svn.sourceforge.net/svnroot/netboot65 netboot65 

AUTHOR

Jonno Downes - jonno@jamtronix.com