Jump to content

Photo

New Atari BBS software.

bbs software cc65 github

390 replies to this topic

#51 Tillek OFFLINE  

Tillek

    Dragonstomper

  • 634 posts
  • Location:NE Ohio, USA

Posted Sat Aug 2, 2014 4:26 AM

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. ;)



#52 Android8675 OFFLINE  

Android8675

    Moonsweeper

  • 426 posts
  • Incognito'N
  • Location:Prunedale, CA, USA

Posted Sat Aug 2, 2014 12:39 PM

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.



#53 tschak909 OFFLINE  

tschak909

    Stargunner

  • Topic Starter
  • 1,926 posts
  • Location:USA

Posted Sat Aug 2, 2014 1:16 PM

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... :P

-Thom

#54 Android8675 OFFLINE  

Android8675

    Moonsweeper

  • 426 posts
  • Incognito'N
  • Location:Prunedale, CA, USA

Posted Sat Aug 2, 2014 1:35 PM

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.



#55 tschak909 OFFLINE  

tschak909

    Stargunner

  • Topic Starter
  • 1,926 posts
  • Location:USA

Posted Sat Aug 2, 2014 1:45 PM

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

#56 Android8675 OFFLINE  

Android8675

    Moonsweeper

  • 426 posts
  • Incognito'N
  • Location:Prunedale, CA, USA

Posted Sat Aug 2, 2014 6:14 PM

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!



#57 tschak909 OFFLINE  

tschak909

    Stargunner

  • Topic Starter
  • 1,926 posts
  • Location:USA

Posted Sat Aug 2, 2014 6:16 PM

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

#58 tschak909 OFFLINE  

tschak909

    Stargunner

  • Topic Starter
  • 1,926 posts
  • Location:USA

Posted Sat Aug 2, 2014 7:44 PM

ICE-T exhibits same behavior, so I wonder if I fixed it?

Code has been pushed, can try to rebuild, Android.

-Thom

#59 tschak909 OFFLINE  

tschak909

    Stargunner

  • Topic Starter
  • 1,926 posts
  • Location:USA

Posted Sat Aug 2, 2014 11:48 PM

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

#60 evilmoo OFFLINE  

evilmoo

    Chopper Commander

  • 121 posts

Posted Sun Aug 3, 2014 1:19 PM

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?



#61 tschak909 OFFLINE  

tschak909

    Stargunner

  • Topic Starter
  • 1,926 posts
  • Location:USA

Posted Sun Aug 3, 2014 1:23 PM

....derp :)

-Thom

#62 tschak909 OFFLINE  

tschak909

    Stargunner

  • Topic Starter
  • 1,926 posts
  • Location:USA

Posted Sun Aug 3, 2014 7:05 PM

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

#63 Android8675 OFFLINE  

Android8675

    Moonsweeper

  • 426 posts
  • Incognito'N
  • Location:Prunedale, CA, USA

Posted Mon Aug 4, 2014 10:01 AM

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.

#64 tschak909 OFFLINE  

tschak909

    Stargunner

  • Topic Starter
  • 1,926 posts
  • Location:USA

Posted Mon Aug 4, 2014 12:52 PM

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

#65 Android8675 OFFLINE  

Android8675

    Moonsweeper

  • 426 posts
  • Incognito'N
  • Location:Prunedale, CA, USA

Posted Mon Aug 4, 2014 9:45 PM

mwOaG6b.png

 

Works fine in Altirra. :)



#66 tschak909 OFFLINE  

tschak909

    Stargunner

  • Topic Starter
  • 1,926 posts
  • Location:USA

Posted Mon Aug 4, 2014 10:19 PM

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

#67 tschak909 OFFLINE  

tschak909

    Stargunner

  • Topic Starter
  • 1,926 posts
  • Location:USA

Posted Mon Aug 4, 2014 10:51 PM

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

#68 Albert OFFLINE  

Albert

    Quadrunner

  • 34,112 posts

Posted Mon Aug 4, 2014 11:49 PM

Awesome, thanks for the update!

#69 Android8675 OFFLINE  

Android8675

    Moonsweeper

  • 426 posts
  • Incognito'N
  • Location:Prunedale, CA, USA

Posted Tue Aug 5, 2014 9:02 AM

* 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. ;)



#70 tschak909 OFFLINE  

tschak909

    Stargunner

  • Topic Starter
  • 1,926 posts
  • Location:USA

Posted Tue Aug 5, 2014 9:12 AM

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

#71 doctorclu OFFLINE  

doctorclu

    ******Blue Max****** *****Class 4***** **Moon Master**

  • 7,162 posts
  • Captain - Class 2
  • Location:Dallas, TX - U.S.A.

Posted Tue Aug 5, 2014 9:13 AM

Was not able to read all of this but I love the concept and look forward to seeing this!



#72 tschak909 OFFLINE  

tschak909

    Stargunner

  • Topic Starter
  • 1,926 posts
  • Location:USA

Posted Tue Aug 5, 2014 9:21 AM

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

#73 tschak909 OFFLINE  

tschak909

    Stargunner

  • Topic Starter
  • 1,926 posts
  • Location:USA

Posted Tue Aug 5, 2014 1:48 PM

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

#74 tschak909 OFFLINE  

tschak909

    Stargunner

  • Topic Starter
  • 1,926 posts
  • Location:USA

Posted Tue Aug 5, 2014 7:05 PM

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 :P :)

-Thom

#75 Shawn Jefferson OFFLINE  

Shawn Jefferson

    Stargunner

  • 1,986 posts
  • Location:Victoria, Canada

Posted Tue Aug 5, 2014 8:16 PM

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.







Also tagged with one or more of these keywords: bbs, software, cc65, github

0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users