TRS-80 Color Computer Tools
Project description
coco-tools
This is a simple collection of tools to assist with developing software for the TRS-80 Color Computer.
Installation
# To install via pip
pip install coco-tools
# To install from source
git clone https://github.com/jamieleecho/coco-tools.git
cd coco-tools
make install-pre-commit
make install
Tools
decb-to-b09
usage: decb-to-b09 [-h] [--version] [-l] [-z] [-s DEFAULT_STRING_STORAGE] [-D] [-w]
[-c CONFIG_FILE]
program.bas program.b09
Convert a Color BASIC program to a BASIC09 program
Copyright (c) 2023 by Jamie Cho
Version: 0.18
positional arguments:
program.bas input DECB text program file
program.b09 output BASIC09 text program file
optional arguments:
-h, --help show this help message and exit
--version show program's version number and exit
-l, --filter-unused-linenum
Filter out line numbers not referenced by the program
-z, --dont-initialize-vars
Don't pre-initialize all variables
-s DEFAULT_STRING_STORAGE, --default-string-storage DEFAULT_STRING_STORAGE
Bytes to allocate for each string
-D, --dont-output-dependencies
Don't output required dependencies
-w, --dont-run-width-32
if set don't run the default width 32
-c CONFIG_FILE, --config-file CONFIG_FILE
Optional compiler configuration file
cm3toppm
usage: cm3toppm [-h] [--version] [image.cm3] [image.ppm]
Convert RS-DOS CM3 images to PPM
Copyright (c) 2017 by Mathieu Bouchard
Copyright (c) 2018-2020 by Jamie Cho
Version: 0.6
positional arguments:
image.cm3 input CM3 image file
image.ppm output PPM image file
options:
-h, --help show this help message and exit
--version show program's version number and exit
hrstoppm
usage: hrstoppm [-h] [-w width] [-r height] [-s bytes] [--version]
[image.hrs] [image.ppm]
Convert RS-DOS HRS images to PPM
Copyright (c) 2018 by Mathieu Bouchard
Copyright (c) 2018-2020 by Jamie Cho
Version: 0.6
positional arguments:
image.hrs input HRS image file
image.ppm output PPM image file
options:
-h, --help show this help message and exit
-w width choose different width (this does not assume bigger pixels)
-r height choose height not computed from header divided by width
-s bytes skip some number of bytes
--version show program's version number and exit
maxtoppm
usage: maxtoppm [-h] [--version]
[-br | -rb | -br2 | -rb2 | -br3 | -rb3 | -s10 | -s11] [-i]
[-w width] [-r height] [-s bytes] [-newsroom]
[image] [image.ppm]
Convert RS-DOS MAX and ART images to PPM
Copyright (c) 2018 by Mathieu Bouchard
Copyright (c) 2018-2020 by Mathieu Bouchard, Jamie Cho
Version: 0.6
positional arguments:
image input image file
image.ppm output PPM image file
options:
-h, --help show this help message and exit
--version show program's version number and exit
pixel mode:
Default pixel mode is no artifact (PMODE 4 on monitor). The 6 other modes:
-br PMODE 4 artifacts, cyan-blue first
-rb PMODE 4 artifacts, orange-red first
-br2 PMODE 3 Coco 3 cyan-blue first
-rb2 PMODE 3 Coco 3 orange-red first
-br3 PMODE 3 Coco 3 primary, blue first
-rb3 PMODE 3 Coco 3 primary, red first
-s10 PMODE 3 SCREEN 1,0
-s11 PMODE 3 SCREEN 1,1
Format and size options::
Default file format is CocoMax 1/2's .MAX, which is also Graphicom's
.PIC and SAVEM of 4 or 8 pages of PMODE 3/4.
Also works with any other height of SAVEM (including fractional pages).
-i ignore header errors (but read header anyway)
-w width choose different width (this does not assume bigger pixels)
-r height choose height not computed from header divided by width
-s bytes skip header and assume it has the specified length
-newsroom read Coco Newsroom / The Newspaper .ART header instead
mgetoppm
usage: mgetoppm [-h] [--version] [image.mge] [image.ppm]
Convert RS-DOS MGE images to PPM
Copyright (c) 2017 by Mathieu Bouchard
Copyright (c) 2018-2020 by Jamie Cho
Version: 0.6
positional arguments:
image.mge input MGE image file
image.ppm output PPM image file
options:
-h, --help show this help message and exit
--version show program's version number and exit
mge_viewer2
usage: mge_viewer2 [-h] [--version] [image.mge]
View ColorMax 3 MGE files
Copyright (c) 2022 by R. Allen Murphey
Version: 0.6
positional arguments:
image.mge input MGE image file
optional arguments:
-h, --help show this help message and exit
--version show program's version number and exit
pixtopgm
usage: pixtopgm [-h] [--version] image.pix [image.pgm]
Convert RS-DOS PIX images to PGM
Copyright (c) 2018-2020 by Mathieu Bouchard, Jamie Cho
Version: 0.6
positional arguments:
image.pix input PIX image file
image.pgm output PGM image file
options:
-h, --help show this help message and exit
--version show program's version number and exit
png-to-cocopng
usage: png-to-coco-png [-h] [--bits-per-pixel BITS_PER_PIXEL] input_png input_palette output_png
Convert a PNG image to a CoCo 3 palette PNG.
positional arguments:
input_png Path to the input PNG image file.
input_palette Path to the input palette file is in the Multi Vue env.file format.
output_png Path to the output PNG file.
optional arguments:
-h, --help show this help message and exit
--bits-per-pixel BITS_PER_PIXEL
Number of bits per pixel.
png-to-mvicon
usage: png-to-mvicon [-h] input_png input_palette output_icon
Convert a 24x24 PNG image to a Multi Vue icon file.
positional arguments:
input_png Path to the input PNG image file.
input_palette Path to the input palette file is in the Multi Vue env.file format.
output_icon Path to the output icon file.
optional arguments:
-h, --help show this help message and exit
png-to-os9-image
usage: png-to-os9-image [-h] [--mask-index MASK_INDEX] [--bits-per-pixel BITS_PER_PIXEL]
input_png input_palette output_os9_image
Convert an PNG image to an OS-9 image.
positional arguments:
input_png Path to the input PNG image file.
input_palette Path to the input palette file is in the Multi Vue env.file format.
output_os9_image Path to the output OS-9 image file.
optional arguments:
-h, --help show this help message and exit
--mask-index MASK_INDEX
--bits-per-pixel BITS_PER_PIXEL
Number of bits per pixel.
rattoppm
usage: rattoppm [-h] [--version] [image.rat] [image.ppm]
Convert RS-DOS RAT images to PPM
Copyright (c) 2018-2020 by Mathieu Bouchard, Jamie Cho
Version: 0.6
positional arguments:
image.rat input RAT image file
image.ppm output PPM image file
options:
-h, --help show this help message and exit
--version show program's version number and exit
veftopng
usage: veftopng [-h] [--version] image.vef image.png
Convert OS-9 VEF images to PNG
Copyright (c) 2018-2020 Travis Poppe <tlp@lickwid.net>
Copyright (c) 2020 Jamie Cho
Version: 0.6
positional arguments:
image.vef input VEF image file
image.png output PNG image file
options:
-h, --help show this help message and exit
--version show program's version number and exit
Developing and Testing
You will need a fairly modern python environment with uv installed.
You can begin by entering:
make install-pre-commit
make sync
make run-tests
The Makefile makes it easy to perform the most common operations:
make alltranspiles several example ECB programs to Basic09make basic.dsk os9boot.dskbuilds ECB and OS-9 disks with examplesmake check-allruns linting anduv.lockchecksmake check-lintchecks for linting issuesmake check-lockverifies theuv.lockis aligned topyproject.tomlmake cleancleans the virtual environment and cachesmake defaultruns a default set of checks on the codemake fix-allformats the code, fixes lint errors and runs locksuv.locktopyproject.tomlmake fix-formatformats the codemake fix-lintfixes linting issuesmake fix-lint-unsafefixes linting issues potentially adding inadvertant bugsmake helpoutputs the different make optionsmake installbuild install the distributionmake install-pre-commitinstalls pre-commit hooksmake locklocksuv.locktopyproject.tomlmake install-pre-commitinstalls pre-commit hooksmake run-testsruns the unit testsmake syncsyncs the python environment withuv.lock
.vscode/settings.json is set so that unit tests can be run without further configuration.
You can use Docker to run tests in a Linux environment:
# Build the docker image
docker compose build test
# Run tests using the source on the docker image
docker compose run test
# Run tests using the source on the host computer
docker compose run testv
Credits
The programs in the examples/decb and examples/other-decb-examples-to-try directories are from the following sources:
- alien4k0.bas -- https://github.com/jggames/trs80mc10/blob/9df4c9578250009d68a03101d626faa3c22e7445/quicktype/Arcade/4K/Alien4K/ALIEN4K0.TXT#L4
- bach.bas -- https://colorcomputerarchive.com/repo/MC-10/Software/Books/TRS-80%20Color%20Computer%20%26%20MC-10%20Programs/bach.c10
- banner.bas -- https://colorcomputerarchive.com/repo/MC-10/Software/Books/TRS-80%20Color%20Computer%20%26%20MC-10%20Programs/banner.c10
- cadnza.bas -- https://colorcomputerarchive.com/repo/MC-10/Software/Books/TRS-80%20Color%20Computer%20%26%20MC-10%20Programs/cadnza.c10
- cflip.bas -- https://colorcomputerarchive.com/repo/MC-10/Software/Books/TRS-80%20Color%20Computer%20%26%20MC-10%20Programs/cflip.c10
- flip.bas -- https://github.com/daftspaniel/RetroCornerRedux/blob/main/Dragon/Originals/FlipBits/flip.bas
- loops.bas -- https://colorcomputerarchive.com/repo/Documents/Manuals/Hardware/Color%20Computer%203%20Extended%20Basic%20(Tandy).pdf
- f15eagle.bas -- https://colorcomputerarchive.com/repo/Disks/Magazines/Rainbow%20On%20Disk.zip
- mars.bas -- https://github.com/jggames/trs80mc10/tree/9df4c9578250009d68a03101d626faa3c22e7445/quicktype/Text%20Adventures/WorkInProgress/Mars
- saints.bas -- https://colorcomputerarchive.com/repo/Documents/Manuals/Hardware/Color%20Computer%203%20Extended%20Basic%20(Tandy).pdf
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file coco_tools-0.26.tar.gz.
File metadata
- Download URL: coco_tools-0.26.tar.gz
- Upload date:
- Size: 69.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ca4399ab4cd8e77586488833fb3b6fec58770531adbe80950c99572c98d92c04
|
|
| MD5 |
a4064a001999997fcf77f4da25761948
|
|
| BLAKE2b-256 |
445d7a54625ad248e72e68f394db70fd43e53c3b37005ebf3cd510592e2da0b1
|
Provenance
The following attestation bundles were made for coco_tools-0.26.tar.gz:
Publisher:
make-release.yml on jamieleecho/coco-tools
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
coco_tools-0.26.tar.gz -
Subject digest:
ca4399ab4cd8e77586488833fb3b6fec58770531adbe80950c99572c98d92c04 - Sigstore transparency entry: 910048247
- Sigstore integration time:
-
Permalink:
jamieleecho/coco-tools@78251cdf52b6b8fc65c235dc3bdc9832a4f4dbcd -
Branch / Tag:
refs/tags/0.26 - Owner: https://github.com/jamieleecho
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
make-release.yml@78251cdf52b6b8fc65c235dc3bdc9832a4f4dbcd -
Trigger Event:
workflow_dispatch
-
Statement type: