1001Ferramentas
๐Ÿ–ฅ๏ธ Calculators

TRS-80 Model I Charset Calculator

Computes the 5x7 bytes of each TRS-80 Model I character given its ASCII code presenting the 7 bytes forming the character rows.

โ€”

TRS-80 Model I charset: 6ร—12 character cells on a 64ร—16 grid

The Tandy/Radio Shack TRS-80 Model I (1977) ran a Z80 at 1.77 MHz with 4โ€“16 KB of RAM, and drove its monitor as a 64ร—16 character grid. Each character sat in a 6ร—12 pixel cell, which works out to an effective 384ร—192 mosaic block resolution for "graphics" once you bring in the upper-128 block-graphic characters. The visible ASCII range (32โ€“127), along with 64 chunky graphics chars (128โ€“191), lived in mask ROM. Later boards added a CG-RAM (Character Generator RAM) mod that let you redefine glyphs. Every glyph took 8 bytes (stock ROM used the top 8 of 12 rows), 1 bit per pixel, MSB-left. Example: 'A' (65) โ†’ rows like 001100, 010010, 100001, 111111, 100001โ€ฆ.

Applications

Retrocomputing hobbyists and vintage-computer collectors, museum tech exhibits, teaching TRS-80 BASIC, patching custom characters into ROM, emulator work (trs80gp, sdltrs), and recreating the look of late-1970s home computing for documentaries and software preservation projects.

FAQ

Why 6ร—12 and not 8ร—8? Tandy's designers laid a 64ร—16 grid over a 384ร—192 visible area, and dividing one by the other gives 6ร—12 cells. The narrower 6 px width packs more text per line on the cheap NTSC monitors of the day.

What's a block graphic? Each of characters 128โ€“191 splits into 2ร—3 chunky pixels (6 mini-cells), so BASIC's SET/RESET commands could plot a 128ร—48 pseudo-graphics canvas with no bitmap hardware at all.

Can I redefine characters? Not on a stock Model I, since the charset sits in mask ROM. The Model III and later CG-RAM mods (Programma 80, custom EPROM boards) do let you.

Why does the display flicker? The Model I's video circuit shares the RAM bus with the CPU, so writing to video RAM during the visible scanline throws up that "snow" or flicker. The usual fix is to wait for vertical blank before writing.

Related Tools