Terminal compatible with ansi-bbs. Meant to be a prototype, but published because why not.

Overview

pybbsterm: Terminal emulator for calling BBSs.

The Quantum Wormhole screenshot

Use cases (non-exhaustive)

  • Explore terminal protocols.
  • Connect to BBSs.

Highlights

  • Python 3.8+ code.
  • Built with pygame.
  • Targets ANSI-BBS compatibility.
    • Already has great compatibility with a range of BBSs.
  • cp437 translation.
  • Multiple connectivity options.
    • EndpointTCP connects the terminal to a remote host:port.
      • Call internet-exposed BBSs.
    • EndpointReplay allows for playing stored logs.
      • Useful for debugging.
    • EndpointSerial attaches terminal to a serial port.
      • Null-modem direct connections.
      • Interface with modems, call remote computers.
      • Requires pySerial.
  • Terminal font is settable.
  • Multiple color schemes.
  • Easy to use.
  • MIT License. See LICENSE file.

Usage

  • Ensure Python 3.8+, pygame 2.0+, pySerial 3.1+ are installed.
  • Run pybbsterm.py -h for verbose usage help.
  • Run pybbsterm.py -t bbs.erb.pw to connect to The Quantum Wormhole.
  • Run pybbsterm.py --scheme help for list of available color schemes.
  • Use of bitmap fonts is recommended.
    • Open Type Bitmap (.otb) fonts preferred
    • A good set is oldschool-pc-fonts found at: https://int10h.org
  • Keyboard shortcuts
    • Alt-x will exit.
    • PrtScn and Shift-F12 will start/finish capture of incoming bytes into file.
    • Control +/- will integer-scale the output window.
    • Shift-Esc will close connection.
    • Shift-F1 to Shift-F4 will call functions specific to the endpoint.

Caveats

  • File transfers are not yet implemented.
  • Encoding is always cp437.
  • Keyboard translation is still poor. A hardcoded UK layout is provided.
  • ANSI-BBS specification isn't yet 100% implemented.

Author

Roc Vallès Domènech

Owner
Roc Vallès i Domènech
Roc Vallès i Domènech
Team10 backend - A service which accepts a VRM (Vehicle Registration Mark)

GreenShip - API A service which accepts a VRM (Vehicle Registration Mark) and re

3D Hack 1 Jan 21, 2022
Python module to work with Magneto Database directly without using broken Magento 2 core

Python module to work with Magneto Database directly without using broken Magento 2 core

Egor Shitikov 13 Nov 10, 2022
Notebooks for computing approximations to the prime counting function using Riemann's formula.

Notebooks for computing approximations to the prime counting function using Riemann's formula.

Tom White 2 Aug 02, 2022
Repo to store back end infrastructure for Message in a Bottle

Message in a Bottle Backend API RESTful API for Message in a Bottle frontend application consumption. About The Project • Tools Used • Local Set Up •

4 Dec 05, 2021
Margin Calculator - Personally tailored investment tool

Margin Calculator - Personally tailored investment tool

1 Jul 19, 2022
Feapder的管道扩展

FEAPDER 管道扩展 简介 此模块为feapder的pipelines扩展,感谢广大开发者对feapder的贡献 随着feapder支持的pipelines越来越多,为减少feapder的体积,特将pipelines提出,使用者可按需安装 管道 PostgreSQL 贡献者:沈瑞祥 联系方式:r

boris 9 Dec 07, 2022
Курс про техническое совершенство для нетехнарей

Technical Excellence 101 Курс про техническое совершенство для нетехнарей. Этот курс представлят из себя серию воркшопов, при помощи которых можно объ

Anton Bevzuk 11 Nov 13, 2022
Robotic hamster to give you financial advice

hampp Robotic hamster to give you financial advice. I am not liable for any advice that the hamster gives. Follow at your own peril. Description Hampp

1 Nov 17, 2021
Scripts for hosting urbit in production-ish

Urbit Sysops Contains some helpful scripts for hosting Urbit. There are two variants included in this repo: one using docker, and one using plain syst

Jōshin 12 Sep 25, 2022
A water drinking notification every hour to keep you healthy while coding :)

Water_Notification A water drinking notification every hour to keep you healthy while coding. 💧 💧 Stay Hydrated Stay Healthy 💧 💧 Authors @CrazyCat

Arghya Banerjee 1 Dec 22, 2021
nbsafety adds a layer of protection to computational notebooks by solving the stale dependency problem when executing cells out-of-order

nbsafety adds a layer of protection to computational notebooks by solving the stale dependency problem when executing cells out-of-order

150 Jan 07, 2023
A competition for forecasting electricity demand at the country-level using a standard backtesting framework

A competition for forecasting electricity demand at the country-level using a standard backtesting framework

5 Jul 12, 2022
Play tic-tac-toe in PowerPoint

The presentation has around 6,000 slides representing every possible game state (and some impossible ones, since I didn't check for wins or ties). You play by clicking on the squares, which are hyper

Jesse Li 3 Dec 18, 2021
This is a simple SV calling package for diploid assemblies.

dipdiff This is a simple SV calling package for diploid assemblies. It uses a modified version of svim-asm. The package includes its own version minim

Mikhail Kolmogorov 11 Jan 05, 2023
CaskDB is a disk-based, embedded, persistent, key-value store based on the Riak's bitcask paper, written in Python.

CaskDB - Disk based Log Structured Hash Table Store CaskDB is a disk-based, embedded, persistent, key-value store based on the Riak's bitcask paper, w

886 Dec 27, 2022
A dashboard for your code. A build system.

NOTICE: THIS REPO IS NO LONGER UPDATED Changes Changes is a build coordinator and reporting solution written in Python. The project is primarily built

Dropbox 763 Sep 09, 2022
FBChecker Account using python , package requests and web old facebook

fbcek FBChecker Account using python , package requests and web old facebook using python 3.x apt upgrade -y apt update -y pkg install bash -y pkg ins

XnuxersXploitXen 5 Dec 24, 2022
Some shitty programs just to brush up on my understanding of binary conversions.

Binary Converters Some shitty programs just to brush up on my understanding of binary conversions. Supported conversions formats = "unsigned-binary" |

Tim 2 Jan 09, 2022
Imports an object based on a string import_string('package.module:function_name')() - Based on werkzeug.utils

DEPRECATED don't use it. Please do: import importlib foopath = 'src.apis.foo.Foo' module_name = '.'.join(foopath.split('.')[:-1]) # to get src.apis.f

Bruno Rocha Archived Projects 11 Nov 12, 2022
Nag0mi ctf problem 2021 writeup

Nag0mi ctf problem 2021 writeup

3 Apr 04, 2022