The goal of this document is to explain the colorforth tftpd code. This code can be found at http://www.dnd.utwente.nl/~tim/colorforth/tftp Thanks: I would like to thank everyone that has contributed to this project. I hope I haven't forgotten anyone this time... Dirk Harms-Merbitz: He gets credit for making the ether-ip-udp code written by Dr. Moore happen. Dr. Moore: Gets credit for inventing Forth and ColorForth, and also wrote the ether-ip-udp code. Mark Slicker: Gets credit for helping me conceptually get a start in colorforth. Peter Appelman: Gets credit for his wonderfull smallfont colorforth kernel written in nasm. This image is based on that kernel. Robert Patten: He gets credit for pointing out that the word empty needs to disable interrupts before executing empt. This has been corrected. Oninshiko (A. Hettinger): It was his suggestion to write tftpd. #c4th: Lot's of these guys helped in several ways, Thanks for the support! Terry Loveall: gets credit for his nice colorforth web index page. Several people: have helped by converting the block files to html, Thanks for the web work! Backround: tftpd has been chosen for the name because this name is familiar to the unix platform. It stands for trivial file tranfer protocol daemon. This protocol works over udp and does not require tcp. It is not really a daemon. What it achieves: This allows us to transfer files (blocks) to and from non colorforth machines. This helps reduce floppy swapping, as well as let us use larger data files. Limitations: There is almost no error checking done, requiring one to use the tftp client correctly. The server also does not support concurrent connections, and does not itself generate retry packets. It requires the client to use a blocksize of 1024 bytes. It is not completely RFC compliant. Concepts: The data storage area is outside of colorforth's 32 MB, It therefore is expecting a machine to have 96MB of ram, the data store is then blocks 32768-98303. Usage: This is how I use it when transfering files to and from my unix machine. I use the tftp client called atftp. It is a Debian based machine. start: download the image (at the moment called 96mb-bs-server+tftpd-ver.2.0.blk). 1. put this on a floppy. 2. boot the machine. 3. adjust the ether-ip-udp code for your network (blocks 132 & 140). 4. load block 130. By starting the editor on the colorforth machine and looking at block 160, one can see what is happening during a transfer. This is acomplished by making use of the persistant variables concept in colorforth. Now one should be able to use a tftp client to get and put files. Below is how I do It on my Debian machine. My colorforth machine has the ip address 192.168.3.2 atftp -T 10 -d -v -b 1024 -g -l 00000-00200 192.168.3.2 This command gets 200 server blocks, starting from server block 0. atftp -T 10 -v -b 1024 -p -l 00000-00200 192.168.3.2 This command puts the file named 00000-00200 from the unix machine, to the server starting at block 0. Thus the filename holds a start block and block count. leading zeros are required. some usefull server words: sd (server-dump) dumps data from a server block. It takes 1 argument. 0 sd will dump the start of server block zero. ed (edit server data block) takes one argument and will start the editor on that block. 0 ed starts the editor at cf block 32768, server block 0. et (edit tftp code) starts the editor at block 160. esb (erase server blocks) erases all server blocks. fsb (fill server blocks) this word fills each of the server blocks with it's own block number. This was used for testing purposes. Known bugs: at this time server block 65535 is not handeled correctly, this is the last available block in the 65MB data store. You are welcome to mail me or chat with me over this code, below is how you can reach me. I am interested in helping anyone that wants to use this code. I also would like to hear about other clients that work. I have only used atftp at this point. With kind regards, Tim Neitz. tim@dnd.utwente.nl rj_cf on #c4th IRCnet