project ICE   

Internet Connectivity for Eight-bit ataris
If those of other 6502 based platforms wish to contribute I may consider making it cross platform and maybe even open source.


Project ICE is an attempt to provide better Internet connectivity for Atari 8-bit computers.  Currently, internet connectivity is primary limited to shell accounts utilizing a text interface.  The hope of this project it to provide true PPP connectivity through almost any ISP.  Telnet, primitive browsers, and mail/news clients could then be developed.  The first step is to receive a web page via TCP/IP/PPP to aid in getting the TCP/IP routines perfected.

Step 1: Get PPP connection working.  Completed
This includes getting the basic communication routines, the PPP packet handling and connection negotiation working (IPCP & LCP).
This portion is basically done.  I am able to establish a connection and get through the IPCP and LCP phases, get an IP, reject protocols I don't want, etc.

Step 2: Get TCP/IP working. Complete!
Actually transmit a SYN (connection) packet somewhere and get a SYNACK (response).
This portion seem to work ok.

Step 3: Send and Receive Data. Mostly Complete.
Send and receive real data.
The program will now download a specific web page and dump it to the screen.  I am currently working on a stable API other applications can use if this program seems to work for most people.  I now dump irrelevant TCP packets, reject duplicate packets, fill an input buffer and use it as the windows size sent to the server.  I now need to add some retry code in case my ACK's don't make it to the server.

Step 4: Develop programs to use the routines. A dream?
Write a basic vt100 telnet client (or a handler that could be used by existing terminal programs), a text web browser, etc.


Progress

December 16,1999 - New version released to test new interrupt driven packet receive routines.  Note:  This version will not download a web page or anything useful, it will just establish a PPP connection.  I need this tested on real Atari's and different R: handlers.

November 11,1999 - Fixed bug in connection negotiation logic.  If CHAP authentication protocol was request the program would appear to lock up instead of attempting to request PAP protocol.  This is now fixed and the downloads section has been updated.  I can now log onto my one ISP using the manual login or immediately engaging PPP and letting PAP authorize me.  The tcp/ip portion still needs some work and this is on my list soon.

November 8,1999 - Making slow progress and some code rewrites.  Added an Information section at the bottom of the page with a link to a page with TCP/IP/PPP links.  Also added a link to a page with commented PPP negotiation traces to my Internet Providers for those interested.

November 1,1999 - Things are progressing slowly due to limited time.  I have made some changes to the connection routines (it is now more state driven with retries built in) and am in the process of partially rewriting some of the PPP code to make it a little more generic (modules not dependent on each other).  I am considering adapting tcp/ip code at  http://www.heilbronn.netsurf.de/~dallmann/lunix/lng.html (for C64 and using SLIP) to work with my PPP code.  And lastly, I am also going to experiment with making the receive packet routines interupt driven (during vbi) to see if it is feasable.

October 13,1999 (2nd update) - Updated both test program.  TCPTEST.ARC hold TCPTEST.EXE which should function practically identically to the last version.  It is just built with the new assembler.  TCPDEBUG.ARC is now current with TCPTEST and displays diagnostic information.  After hangup, it should write an ASCII log to D1: called PPP.LOG.
 


FAQ

Q. Can ICE be used to get on the internet?
A. Yes and No.  It in theory should be possible to establish a PPP connection to your ISP.  The program is hardcoded to try and pull a specific URL down via HTTP (web) - My Atari page actually.  It should dump the page to the screen as it downloads and hangup when done.

Q. Are you going to release source code?
A. I intend to more than likely eventually release some source code.  I would like to have something to release that is useful on the Atari before releasing source so these programs actually appear on an Atari first and not other 6502 based machines :-).  Also I need to do a lot of cleanup in the code.  I might still consider putting up the code with conditions that any deritive work must have source code published then maybe programmers of other 6502 computers could be an asset.

Q. Are you going to release interface specifiications so other programs can be written?
A. That would probably need to be a necessity since I will not have the time or knowledge to write some of the applications that use tcp/ip.  Since nothing is currently finalized this is not possible yet.

Q. Will the routines be separate from the applications that use them?
A. That would be the most useful possibility.  One real problem on the Atari 8-bit is that most interfaces can not do disk i/o and serial communication at the same time.  Being idle for too long would drop connections or disconnect from a server - probably wouldn't be a problem for most programs though.  Don't be expecting to run more than one program at a time though, these routines more than likely will only handle one connection at a time.

Q. How can I help?
A. Download the software and try it.  Let me know if you are able to dial.  Let me know if you get PPP connected and if you logged in manually or used the authentication protocol.  Let me know if you get the entire page (you see the </HTML> tag at the end) or if you at least get part of it.

Q. When will it be done?
A. Don't know.

Q. What applications will there be.
A. Telnet would be good for telnetable BBS's.  A simple text web browser (or even limited graphics) would be possible.  Probably SMTP, POP3 should be doable.  Maybe even IRC.  Concerning a web browser how about having Atari specific tag options like <IMG SRC="title.gif" A8SRC="title.a8g" ALT="My Page"> or something like that where title.a8g might be an atari specific graphic format?


Downloads

READ THIS: Always read the instructions with each new download since there may be changes made each time as the program progresses.  Baud rate in the program is fixed at 9600.  The server it will connect to is 207.211.212.45 (in hex... CF.D3.D4.2D  or host name.... home.columbus.rr.com) on the normal HTTP port of 80.  It will download my Atari page from /ksiders/atari.htm.  The file is provided for download is in ARC format.  It only contains one file: TCPTEST.EXE.

Warning:  A general knowledge of modem and handler usage is assumed.  I can only provide basic information and you are on your own.  The first download is the test program.  This program also does not perform any completely useful function other than negotiating and establishing the PPP connection and trying to download a page (it almost works).  A handler for your interface/modem must be loaded before the program will work.  This is usually established by making a copy of your R: handler and appending this program to it.  Loading the combined file should then, in theory, work.  Before downloading here are the basic steps to testing the program:

Method 1 - (Tested with my GTE.NET account)  This is if you get a login and a password prompt when you connect (try this first)
1. Load the file (duh)
2. Some text should display.  You don't need to answer the "User:" and "Pass:" prompts, just press RETURN.
3. Type 'AT' and hit RETURN and see if your modem is working.  It should respond with OK.  (The AT you type may or not display depending on your modem settings)
3. Type ATDTxxxxxxx and hit RETURN  xxxxxxx is your ISP phone number (you may need to type blindly, use ATDP for pulse dialing)
4. After connection you will hopefully get some kind of login prompt.  If you don't try hitting RETURN.  If you get no response then try method two below.
5. Answer the login and password prompts.
6. After this you may get some info displayed.  Type a ! to send the first configuration packet.  PPP mode should automatically engage and you will see all kind of interesting info (or not so interesting) as the negotiation takes place.  If it fails, please try reloading the program and trying again.  There is not much in the way of retries built into the program yet.
7. Eventually you should see that a PPP connection was established.  If so, that is great and progress is made.  If it gets stuck in the negotiation part then there is more work to do.
8. The program will then try to connect to home.columbus.rr.com ( 207.211.212.45 or in hex CF.D3.D4.2D )  Hopefully, it will say a SYN was sent and then after a second a SYN-ACK was recieved.  Afterwards it will send an ACK and the a GET /ksiders/atari.htm request.
9. If all goes well, you will see the html from my web page streaming by.  When done and all goes well it will hangup.  If all doesn't go well then it will probably retry and fail.

Method 2 - (Tested with a work account)  This is if you do not get a login and a password prompt when you connect (or you know you have to use PAP protocol)
1. Load the file (duh)
2. Some text should display.  Answer the "User:" prompt with your username and the "Pass:" prompt with your password.  It is probably case sensitive so be sure to get that right.
3. Type 'AT' and hit RETURN and see if your modem is working.  It should respond with OK.  (The AT you type may or not display depending on your modem settings)
3. Type ATDTxxxxxxx and hit RETURN  xxxxxxx is your ISP phone number (you may need to type blindly, use ATDP for pulse dialing)
4. After you see the CONNECT xxxx prompt, type a ! to send the first configuration packet.  PPP mode should automatically engage and you will see all kind of interesting info (or not so interesting) as the negotiation takes place.  If it fails, please try reloading the program and trying again.  There is not much in the way of retries built into the program yet.
5. Eventually you should see that a PPP connection was established.  If so, that is great and progress is made.  If it gets stuck in the negotiation part then there is more work to do.
6. The program will then try to connect to home.columbus.rr.com ( 207.211.212.45 or in hex CF.D3.D4.2D )  Hopefully, it will say a SYN was sent and then after a second a SYN-ACK was recieved.  Afterwards it will send an ACK and the a GET /ksiders/atari.htm request.
7. If all goes well, you will see the html from my web page streaming by.  When done and all goes well it will hangup.  If all doesn't go well then it will probably retry and fail.

If your ISP requires a script under windows to connect then the method to connect may differ.  Usually you would just follow method 1 with some alterations.  With CompuServe (classic) you should use host name CIS and add a /go:pppconnect after your user name. (not tested)
NOTE: In reading PPP newsgroups with  messages on Linux users trying to get PPP working it seems lots of ISP's do things differently.  Don't be afraid to try other things.  For instance if the above methods fail, try filling in the username and password and also log in if you get prompts.  Try filling in the user name and password and don't log in and just press ! immediately after connect.  Good luck.

If you receive some page data please let me know.  If you recieve all of the data ( </HTML> tag will be last), let me know.  If you receive no data let me know if you get connected or not and how far that you do get.
 

A new downloadable version is available.  It actually does LESS than the prior versions but is to test the new interrupt driven receive packet routines.  I need this to be test with as many R: handlers as possible. This version will establish a PPP connection and then hang up.  It doesn't do anything else yet until the TCP/IP portion is rewritten.  So far it has only been tested under emulation.  Note: This version also adds a debug status line at the screen top.  S: is a spinner that moves for every packet sent.  R: is a spinner that moves for every packet received.  B: Is the number of free buffers (always 4 in this version).  In this version you are also prompted for baud rate since this has been requested by a couple of people.

Click to download  tcptest2.arc  6688 bytes.  Last Updated 16-Dec-1999

There are two older downloads.  The first is the main version.  The second is the "debug/logging version".  This version displays more messages and after
hanging up will write a log file to D:PPP.LOG (be sure to have space).  It shouldn't grow past 10K.  Use it if you are having problems in the negotiation
phase and want to provide it to me for diagnosis.  Note: the log may have your username and password in it if you answered the prompts and the negotiation got that far.  If you are concerned find them in hex and xx them out.  The log is in ASCII not ATASCII.

Click to download  tcptest.arc   6235 bytes.  Last Updated 11-Nov-1999
Click to download the debug/logging version:  tcpdebug.arc   7409 bytes.  Last Updated 11-Nov-1999.  (Note: this writes a log to D2:PPP.LOG, I forgot to change it from D1:.)

Click here to send me email.  (atari@columbus.rr.com)


Information


 TCP/IP, PPP, related links
 Commented trace of PPP negotiation phase to one of my internet connections using PAP authentication
 Commented trace of PPP negotiation phase to another one of my internet connections not needed PAP authentication


  Click here to send me email.
 
 

Hit Counter