A Java framework for building highly customizable PETSCII and ASCII -enabled BBS, accessible from terminals and Commodore 64/128

Public Chat
Similar projects worth following

This framework provides base classes for build your own BBS in PETSCII mode, accessibile through:

- a Commodore 64 with a RR-NET compatible card, running KipperTerm
- a Commodore 64 with a WiFi modem card, running CCGMS
- a Commodore 64/128 with a 1541Ultimate, running UltimateTerm
- an Ultimate 64, running UltimateTerm
- a Commodore 64 with an Easy Flash 3 (with CCGMS-EF) + a PC running EF3USB
- a common PC/Mac running SyncTerm (ConnectionType=Telnet, ScreenMode=C64)
- C64 Forever, running CCGMS (included)

GitHub url:

System requirements
- Java Development Kit (JDK) and JRE version 1.8+
- A machine that will act as server

Required skills
- Knowledge of Java language (compiler version 1.8+)
- BASIC TCP/IP concepts
- Knowledge of PETSCII encoding

Sample BBS:
Port: 6510 (for C64), 23 (for all systems)

This is the GitHub project:

  • 1
    Getting started

    Let's suppose to build a very simple BBS that asks your name and welcomes you. The basic operation is to extend PetsciiThread class (or AsciiThread for ASCII BBS) implementing doLoop() method, such as:

    public class WelcomeBBS extends PetsciiThread {
        // NEVER forget default (empty) constructor
        public WelcomeBBS() {
            super(); // Recommended
        public void doLoop() throws Exception {
            // clear screen
            println("This is your brand-new BBS");
            println();        print("Enter your name: ");
            // flush output
            // clear input buffer
            String name = readLine();
            println("Welcome, " + name + "!");
            println("Press a key to exit");
  • 2
    Building the server process

    Once you have written your own BBS as an extension of PetsciiThread (or AsciiThread, as per previous documentation) class, simply build the fat jar with this command:

    mvn clean package

    The build process will result in the file petscii-bbs.jar, it will be found in the target directory. So you can run it with:

    java -jar target/petscii-bbs.jar

  • 3
    Running the BBS Server

    Running the server with no parameters, a help screen will be displayed:

    usage: target/petscii-bbs.jar   
         --bbs <bbsName:port>   Run specific BBSes (mandatory - see list below)
                                in the form <name1>:<port1> <name2>:<port2> ...
      -h,--help                 Displays help
      -s,--serviceport <arg>    TCP port used by service process, 0 for
                                no-service (default 0)
      -t,--timeout <arg>        Socket timeout in millis (default 60 minutes)
    List of available BBS:
     * ...
     * WelcomeBBS

    So we can rename the -jar file in bbs.jar, and the basic syntax for running our sample BBS is:

    java -jar bbs.jar --bbs WelcomeBBS:6510

    the port where the service will run is 6510 and the timeout is 3600000 milliseconds by default (1 hour). We can change the timeout parameter with -t switch:

    java -jar bbs.jar --bbs WelcomeBBS:8088 -t 7200000

    It's possible to run multiple BBSes, each one on a different port:

    java -jar bbs.jar --bbs WelcomeBBS:6510 NewsBBS:8400 SportsBBS:9100 -t 7200000

    (so the port will be 8088 with a timeout of 2 hours)

    It's possibile to specify a "Service Port", which makes accessible (via web browser) the inspection of JVM running BBSes:

    java -jar bbs.jar --bbs WelcomeBBS:6510 NewsBBS:8400 SportsBBS:9100 -s 8080

View all 5 instructions

Enjoy this project?



Francesco Sblendorio wrote 02/02/2023 at 16:37 point

Good! Let me know if you build some service somewhere. You can also use plain Ascii using the "AsciiThread" base class.

  Are you sure? yes | no

jsavidan wrote 02/02/2023 at 11:49 point

I just tried the example bbs with my IPhone and Muffinterm and I had a blast. Did not try to settle my own server, but will certainly, thumbs up for this project

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates