RM Nimbus GUI for Python
RM Nimbus GUI for Python
Nimbusinator is a graphical user-interface package for Python that mimicks the graphics and text drivers of the RM Nimbus PC186. It is not an emulation of the Nimbus itself. This means you get the best of both worlds: Cutting-edge Python computing power, beautifully presented in up to 16 colours!
Disclaimer: Nimbusinator is a tribute project and is in no way linked to or endorsed by RM plc.
To implement a Nimbus user interface all you need to do is import the
Command classes, like this:
from nimbusinator.nimbus import Nimbus from nimbusinator.command import Command
Then create one object of each, and bind the
Command object to the
nim = Nimbus() cmd = Command(nim)
To display the screen, call the
boot method on the
Nimbus object. By default, you'll see the famous blue "Welcome Screen" before control is released back to your program. To skip the Welcome Screen simply pass the argument
skip_welcome_screen=True when calling
boot, like this:
# Boot the Nimbus with Welcome Screen nim.boot() # Boot the Nimbus without Welcome Screen nim.boot(skip_welcome_screen=True)
Note that the original Welcome Screen reported the memory status of the computer (in kilobytes!), alongside the RM firmware version and machine serial number. Nimbusinator also displays memory status (but in units of Megabytes) and uses your Python version as the firmware version and your OS release number as the serial number. It also uses information from your runtime environment to simulate a short DOS-like boot sequence before finally releasing control back to your application. All the while you can enjoy the dulcet tones of an imaginary floppy drive.
To bring the Nimbus programming experience into the 21st century, the API - although Pythonic - has been modelled on the syntax of RM Basic. For example, in RM Basic to write a greeting in big, red letters in the bottom-left corner of the screen you would use the
PLOT "Hi kittens!", 10, 10 BRUSH 2 SIZE 4
And in Python with Nimbusinator you can write the same instruction like this:
cmd.plot('Hi kittens!', (10, 10), brush=2, size=4)
It is recommended to read the RM Basic manual to get familiar with the original commands and how graphics and text were handled on the Nimbus (see links below).
To cleanly exit your application, call the
shutdown method on the
# Always do this before your app quits: nim.shutdown()
Nimbusinator is technically cross-platform but there are differences in the way PyGame's dependencies are installed between operating systems. So far I have only tested installation on Ubuntu 19.04 (see below). If you have tested PyGame successfully on other platforms please drop the magic formula in the issues and I'll add it below.
# Install dependencies for pygame and simpleaudio: sudo apt-get install -y python3-dev libasound2-dev python3-setuptools python3-numpy python3-opengl libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libsmpeg-dev libsdl1.2-dev libportmidi-dev libswscale-dev libavformat-dev libavcodec-dev libtiff5-dev libx11-6 libx11-dev fluid-soundfont-gm timgm6mb-soundfont xfonts-base xfonts-100dpi xfonts-75dpi xfonts-cyrillic fontconfig fonts-freefont-ttf libfreetype6-dev # Then activate your Python env and install: pip install nimbusinator
from nimbusinator.nimbus import Nimbus from nimbusinator.command import Command if __name__ == '__main__': # Create and bind nimbusinator objects: nim = Nimbus() cmd = Command(nim) nim.boot() # Boot the Nimbus cmd.set_mode(40) # Low resolution mode cmd.set_border(1) # Dark blue border cmd.set_paper(9) # Light blue paper cmd.cls() # Clear screen cmd.plonk_logo((8, 110)) # Show Nimbus logo # Display a message in cyan with shadowing cmd.plot('Greetings!!!', (65, 155), size=2, brush=0) cmd.plot('Greetings!!!', (66, 156), size=2, brush=13) # Wait 5 seconds then shutdown nim.sleep(5) nim.shutdown()
- Read the Docs - Full documentation
- Center for Computing History - original RM Nimbus manuals and technical data
- Center for Computing History - RM Nimbus PC (Later Beige Model) - online exhibit
- The Nimbus Museum - online museum that looks like the Welcome Disk!
- RM Nimbus - Wikipedia article
- mame - comprehensive retro computer emulation project
- Freesound pack: Floppy disk drive - source of the floppy drive sounds
- Ironstone Innovation - what I do for a living
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|Filename, size||File type||Python version||Upload date||Hashes|
|Filename, size nimbusinator-0.2.1-py3-none-any.whl (572.9 kB)||File type Wheel||Python version py3||Upload date||Hashes View hashes|
|Filename, size nimbusinator-0.2.1.tar.gz (557.4 kB)||File type Source||Python version None||Upload date||Hashes View hashes|
Hashes for nimbusinator-0.2.1-py3-none-any.whl