Tillek Posted August 2, 2014 Share Posted August 2, 2014 Nice! This will be fun to watch evolve. Ultimately, what would I need in order to connect an Atari 8-bit to the Internet so I could put a BBS online? I assume there are Windows and OS X ATASCII terminal emulators that can connect to 8-bit BBSs via the internet? I actually use SyncTerm on my PC to call out. Runs fine in Win8.1 and it does support ATASCII in 40 col. It supports just about everything else too, so I don't have to switch programs. Once I get all my Ataris set up I'll probably go ahead and use them for BBSing, but for now, SyncTerm does the job well. As for what you'd need to run one, there are a few ways depending on how "old-school" you want to go. I'm sure when you're ready people will come out of the woodwork to offer suggestions. Quote Link to comment Share on other sites More sharing options...
Android8675 Posted August 2, 2014 Share Posted August 2, 2014 Got your code running on my Atari 800 with an Incognito board. Can you tell me the git command to just update all the files (already cloned the repo), I want to run Cygwin, update the source, make, exit like real fast. I'm not the best at doing bash scripts. In other thoughts, have you considered at least a codename for this project? Come on dude, I'm getting tired of ataribbs. Quote Link to comment Share on other sites More sharing options...
tschak909 Posted August 2, 2014 Author Share Posted August 2, 2014 Got your code running on my Atari 800 with an Incognito board. Can you tell me the git command to just update all the files (already cloned the repo), I want to run Cygwin, update the source, make, exit like real fast. I'm not the best at doing bash scripts. In other thoughts, have you considered at least a codename for this project? Come on dude, I'm getting tired of ataribbs. a git pull will get the latest from the master branch. As for a name... I _really_ wanna use Bender (complete with ASCII art), but, that's a copyright violation... -Thom Quote Link to comment Share on other sites More sharing options...
Android8675 Posted August 2, 2014 Share Posted August 2, 2014 Blender BBS? Also getting Fatal Error, can't find interface when loading on my real hardware. Using APE via SIO2PC, so you may not have a solution for that setup yet, but just letting you know. Quote Link to comment Share on other sites More sharing options...
tschak909 Posted August 2, 2014 Author Share Posted August 2, 2014 Blender BBS? Also getting Fatal Error, can't find interface when loading on my real hardware. Using APE via SIO2PC, so you may not have a solution for that setup yet, but just letting you know. Have you tried loading an RS232 handler, e.g. RS232.COM from the SpartaDOS 3.2 disk? It is required for real hardware. You'll run into an issue where the modem initialization will hang after the sanity check, because the device flips out of concurrent mode (due to the fact that concurrent mode stops simultaneous SIO access with other devices. The emulated Altirra handler does not have this problem.)... I will try to fix this. -Thom Quote Link to comment Share on other sites More sharing options...
Android8675 Posted August 3, 2014 Share Posted August 3, 2014 Have you tried loading an RS232 handler, e.g. RS232.COM from the SpartaDOS 3.2 disk? It is required for real hardware. You'll run into an issue where the modem initialization will hang after the sanity check, because the device flips out of concurrent mode (due to the fact that concurrent mode stops simultaneous SIO access with other devices. The emulated Altirra handler does not have this problem.)... I will try to fix this. -Thom Yeah, loaded rs232, then the bbs and it got to port open. and just sat there waiting. So, cool. I'll leave it at that until sometime next week. Party! Quote Link to comment Share on other sites More sharing options...
tschak909 Posted August 3, 2014 Author Share Posted August 3, 2014 I added some open/close port functionality to the terminal_* functions in terminal_c, and now it's getting further...it's sending ATZ...but not getting a response. Need to test with ICE-T to see if the TCP/IP Handler is only available for the bare R: handler... -Thom Quote Link to comment Share on other sites More sharing options...
tschak909 Posted August 3, 2014 Author Share Posted August 3, 2014 ICE-T exhibits same behavior, so I wonder if I fixed it? Code has been pushed, can try to rebuild, Android. -Thom Quote Link to comment Share on other sites More sharing options...
tschak909 Posted August 3, 2014 Author Share Posted August 3, 2014 Did some refactoring, and I'm seeing some odd behavior, where all of a sudden it can no longer write to the printer, or to the disk. The fopen() calls literally fail. Shawn, or anyone: is there a way I can ask for the most recent error? Am digging through the code to see if I can just drop down into CIO and query, but..no idea yet... ugh. In some cases with careful removing of certain open/close calls, I can do roughly 10 rings/answers in a row, before the problem exhibits itself. -Thom Quote Link to comment Share on other sites More sharing options...
evilmoo Posted August 3, 2014 Share Posted August 3, 2014 Did some refactoring, and I'm seeing some odd behavior, where all of a sudden it can no longer write to the printer, or to the disk. The fopen() calls literally fail. Shawn, or anyone: is there a way I can ask for the most recent error? Check errno? Quote Link to comment Share on other sites More sharing options...
tschak909 Posted August 3, 2014 Author Share Posted August 3, 2014 ....derp -Thom Quote Link to comment Share on other sites More sharing options...
tschak909 Posted August 4, 2014 Author Share Posted August 4, 2014 Ok, so, after much debugging, the problem was, too many open files. the open/close serial routines in CC65 don't actually properly close the IOCB. Will have to postpone any working on real hardware until I can rewrite some parts of the driver, and add ioctl support. Code pushed. Continuing onward. -Thom 1 Quote Link to comment Share on other sites More sharing options...
Android8675 Posted August 4, 2014 Share Posted August 4, 2014 ICE-T exhibits same behavior, so I wonder if I fixed it? Code has been pushed, can try to rebuild, Android. -Thom I will in the evening Thom, don't have access to my hardware at the office, I'll try to check in by 6pm PST m-th. Maybe I'll bring an Atari to the office, this place needs some style. Quote Link to comment Share on other sites More sharing options...
tschak909 Posted August 4, 2014 Author Share Posted August 4, 2014 I will in the evening Thom, don't have access to my hardware at the office, I'll try to check in by 6pm PST m-th. Maybe I'll bring an Atari to the office, this place needs some style. I rolled back the open/close changes, so it may not work anymore. Right now, all I can do is work on the serial drivers, and clean things up, until I can get things sane enough to run on real hardware. If you want to test in emulation, I am using the latest Altirra. -Thom Quote Link to comment Share on other sites More sharing options...
Android8675 Posted August 5, 2014 Share Posted August 5, 2014 Works fine in Altirra. Quote Link to comment Share on other sites More sharing options...
tschak909 Posted August 5, 2014 Author Share Posted August 5, 2014 Fantastic. The weirdness you're seeing is because the connect string isn't being completely matched. When testing in altirra, I would set the DTE rate to 115200, and disable serial port throttling. -Thom Quote Link to comment Share on other sites More sharing options...
tschak909 Posted August 5, 2014 Author Share Posted August 5, 2014 Another status report: * Character input primitives added to terminal.c (get character, get character with echo character, e.g. for passwords) * Line input primitives added to input.c (line input, line input with hidden characters (for passwords) * subsequently debugged And a matching youtube video Enjoy, -Thom 2 Quote Link to comment Share on other sites More sharing options...
Albert Posted August 5, 2014 Share Posted August 5, 2014 Awesome, thanks for the update! Quote Link to comment Share on other sites More sharing options...
Android8675 Posted August 5, 2014 Share Posted August 5, 2014 * Line input primitives added to input.c (line input, line input with hidden characters (for passwords) Feature consideration... Password Digesting (one-way encryption passwords). Dunno how difficult it is for an 8-bit Atari to do SHA-1 or MD5 encryption, but some simple random checksum generator would probably work just fine. You'd think modern password security would of made it to bbs design by now... Found this page on DES Encryption and Password Handling in GNU C. Reminder, Android8675 is not an expert coder, and may not know what he's talking about. Quote Link to comment Share on other sites More sharing options...
tschak909 Posted August 5, 2014 Author Share Posted August 5, 2014 Feature consideration... Password Digesting (one-way encryption passwords). Dunno how difficult it is for an 8-bit Atari to do SHA-1 or MD5 encryption, but some simple random checksum generator would probably work just fine. You'd think modern password security would of made it to bbs design by now... Found this page on DES Encryption and Password Handling in GNU C. Reminder, Android8675 is not an expert coder, and may not know what he's talking about. Yeah, password hashing will be wanted, for sure. Traditionally in the past on smaller machines, you would use something like a 16 or 32 bit CRC as a hash. This may still be sufficient for this, as calculating an md5 hash on a 6502 does multiplies/shifts over a 128-bit quantity, (hash calculation would easily take double digit seconds). -Thom Quote Link to comment Share on other sites More sharing options...
doctorclu Posted August 5, 2014 Share Posted August 5, 2014 Was not able to read all of this but I love the concept and look forward to seeing this! Quote Link to comment Share on other sites More sharing options...
tschak909 Posted August 5, 2014 Author Share Posted August 5, 2014 as an example, here is a classic md5 hashing algorithm in plain C: unsigned *md5( const char *msg, int mlen) { static Digest h0 = { 0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476 }; // static Digest h0 = { 0x01234567, 0x89ABCDEF, 0xFEDCBA98, 0x76543210 }; static DgstFctn ff[] = { &f0, &f1, &f2, &f3 }; static short M[] = { 1, 5, 3, 7 }; static short O[] = { 0, 1, 5, 0 }; static short rot0[] = { 7,12,17,22}; static short rot1[] = { 5, 9,14,20}; static short rot2[] = { 4,11,16,23}; static short rot3[] = { 6,10,15,21}; static short *rots[] = {rot0, rot1, rot2, rot3 }; static unsigned kspace[64]; static unsigned *k; static Digest h; Digest abcd; DgstFctn fctn; short m, o, g; unsigned f; short *rotn; union { unsigned w[16]; char b[64]; }mm; int os = 0; int grp, grps, q, p; unsigned char *msg2; if (k==NULL) k= calcKs(kspace); for (q=0; q<4; q++) h[q] = h0[q]; // initialize { grps = 1 + (mlen+8)/64; msg2 = malloc( 64*grps); memcpy( msg2, msg, mlen); msg2[mlen] = (unsigned char)0x80; q = mlen + 1; while (q < 64*grps){ msg2[q] = 0; q++ ; } { // unsigned char t; WBunion u; u.w = 8*mlen; // t = u.b[0]; u.b[0] = u.b[3]; u.b[3] = t; // t = u.b[1]; u.b[1] = u.b[2]; u.b[2] = t; q -= 8; memcpy(msg2+q, &u.w, 4 ); } } for (grp=0; grp<grps; grp++) { memcpy( mm.b, msg2+os, 64); for(q=0;q<4;q++) abcd[q] = h[q]; for (p = 0; p<4; p++) { fctn = ff[p]; rotn = rots[p]; m = M[p]; o= O[p]; for (q=0; q<16; q++) { g = (m*q + o) % 16; f = abcd[1] + rol( abcd[0]+ fctn(abcd) + k[q+16*p] + mm.w[g], rotn[q%4]); abcd[0] = abcd[3]; abcd[3] = abcd[2]; abcd[2] = abcd[1]; abcd[1] = f; } } for (p=0; p<4; p++) h[p] += abcd[p]; os += 64; } if( msg2 ) free( msg2 ); return h; } The saving grace here is that this is all done with adds and shifts, but the sheer number of local variables would make this a pig on the 6502. I dunno... I'll try it and see what happens. I have been wrong before, and will continue being wrong long after. -Thom Quote Link to comment Share on other sites More sharing options...
tschak909 Posted August 5, 2014 Author Share Posted August 5, 2014 Pushed another commit to git. This is the start of keyboard control commands during wait for call. For now Control-X exits the BBS package. -Thom Quote Link to comment Share on other sites More sharing options...
tschak909 Posted August 6, 2014 Author Share Posted August 6, 2014 Is there _any_ tool that I can use to create ATASCII screens? I'm needing to do some stuff to test the terminal detection code, and would like to do so without having to bootstrap a tool -Thom Quote Link to comment Share on other sites More sharing options...
Shawn Jefferson Posted August 6, 2014 Share Posted August 6, 2014 Password hashing is a waste of time, and here's why I think so: 1. Any hash you can calculate on the Atari will be broken by a modern PC very easily. 2. The risk is low that someone will steal your Atari BBS password list, and not worth the time. 3. The password will be sent over the wire in cleartext anyway (telnet is cleartext.) I would just obfuscate the passwords with a simple XOR or even store them in cleartext on the Atari side. 2 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.