All Projects → sblendorio → petscii-bbs

sblendorio / petscii-bbs

Licence: MPL-2.0 license
A Java framework for building highly customizable PETSCII-enabled BBS, accessible from Commodore 64/128

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to petscii-bbs

retro-computing
🤓🕹💾 This hobby project contains software implementations of old microprocessors and complete computer systems. I'm very interested in retrocomputing and this is how I learn about the inner workings of these old, classic and amazing computers and game consoles.
Stars: ✭ 15 (-82.14%)
Mutual labels:  commodore, c64, commodore-64
sbbs
Mirror of gitlab.synchro.net/sbbs (don't submit pull requests here)
Stars: ✭ 25 (-70.24%)
Mutual labels:  bbs, telnet, petscii
vicii-kawari
Commodore 64 VIC-II 6567/6569 Replacement Project
Stars: ✭ 43 (-48.81%)
Mutual labels:  commodore, commodore-64
C64-WiFi-Modem-User-Port
A NodeMCU (ESP8266) based WiFi modem for the C64's user port
Stars: ✭ 49 (-41.67%)
Mutual labels:  commodore, c64
cbmtapepi
Use a Raspberry Pi as fast mass storage solution for your Commodore 8-bit computer using just the datassette port.
Stars: ✭ 41 (-51.19%)
Mutual labels:  commodore, c64
Pi1541io
Raspberry Pi extension board for the PI1541 project.
Stars: ✭ 69 (-17.86%)
Mutual labels:  commodore, c64
basicv2
A Commodore (CBM) BASIC V2 interpreter/compiler written in Java
Stars: ✭ 73 (-13.1%)
Mutual labels:  commodore, c64
Pi1541-HAT
A HAT for the Raspberry Pi, that allows to emulate the Commodore C64 floppy disk drive 1541. Switches and IEC-Bus detachable.
Stars: ✭ 26 (-69.05%)
Mutual labels:  commodore, c64
iniquity
A re-imagining of the iconic BBS software.
Stars: ✭ 35 (-58.33%)
Mutual labels:  bbs, telnet
C64-Keyboard-Controlled-Kernal-Switch
No description or website provided.
Stars: ✭ 23 (-72.62%)
Mutual labels:  commodore, c64
SIDKick
SIDKick -- the first complete SID 6581/8580-drop-in-replacement that you can build yourself
Stars: ✭ 70 (-16.67%)
Mutual labels:  c64, commodore-64
Enigma Bbs
ENiGMA½ BBS Software
Stars: ✭ 294 (+250%)
Mutual labels:  bbs, telnet
VolksForth
volksFORTH is a 16bit Forth System maintained by the German Forth Gesellschaft e.V.
Stars: ✭ 41 (-51.19%)
Mutual labels:  c64, commodore-64
vchar64
editor for the Commodore 64
Stars: ✭ 81 (-3.57%)
Mutual labels:  commodore, c64
convertron3000
Convertron3000 commodore 64 graphics converter
Stars: ✭ 24 (-71.43%)
Mutual labels:  c64, commodore-64
virtualc64web
vc64web - web based Commodore 64 Emulation with CSDb access for thousands of demos at your fingertip
Stars: ✭ 23 (-72.62%)
Mutual labels:  c64, commodore-64
c64adventures
Adventures into retro 8 bit Commodore 64 programming
Stars: ✭ 14 (-83.33%)
Mutual labels:  c64, commodore-64
6502-npp-syntax
Notepad++ Syntax Highlighting for 6502 Assembly (and NESASM)
Stars: ✭ 21 (-75%)
Mutual labels:  c64, commodore-64
C64-replacement-PSU-230VAC-
This is a replacement PSU (230VAC input) for the Commodore C64.
Stars: ✭ 43 (-48.81%)
Mutual labels:  commodore, c64
dankdomain
🏰 Ɗaɳƙ Ɗoɱaiɳ :: the return of Hack & Slash
Stars: ✭ 25 (-70.24%)
Mutual labels:  bbs, telnet

PETSCII BBS Builder

A Java framework for building highly customizable PETSCII (and ASCII) enabled BBSes, accessible from 8-bit Commodore computers

Purpose

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

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

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
    }
    
    @Override
    public void doLoop() throws Exception {
    
        // clear screen
        cls();
        
        println("This is your brand-new BBS");
        println();
        print("Enter your name: ");

        // flush output 
        flush();
        
        // clear input buffer
        resetInput();
        
        String name = readLine();
        println();
        println("Welcome, " + name + "!");
        println("Press a key to exit");
        flush();
        readKey();

    }
}

this piece of code is enough to create a fully-functional but pretty simple BBS. The result will look like this:

BBS sample screenshot

All you have to do now is to build and run the BBS on your server, ready to be called by a PETSCII-enabled terminal client. Let's see how to do it in the following sections.

Building the server

Once you have written your own BBS as an extension of PetsciiThread 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

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

Keep it running

This .jar is intended to be a server process: it has to run all time. So, it's a good thing to run it in background if you use a UNIX shell using nohup command with bash "&" operator:

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

It's VERY important not to forget the final & symbol to keep it running. After launching that, you can logoff from your server.

Stopping it

It's a plain process, so use plain ps and kill commands. If this jar is the only one running on your server, this command will do the work:

killall java

Sample BBSes in the package

You can study the sample BBSes (all classes that extend PetsciiThread) in the package eu.sblendorio.bbs.tenants as example of complete task. The package includes some proxies for accessing WordPress sites through Commodore 64 and a two classic strategy games (tic-tac-toe and connect-4)

Sample online BBSes

  • bbs.sblendorio.eu - port 6510
  • bbs.retrocampus.com - port 6510 (included in C64 Forever version of CCGMS)

Credits

Thanks to:

Sample screenshot of the demo pack

bbs1

bbs2

bbs3

bbs4

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].