Skip to content

TRS-80 hardware ​

The screen, colour, graphics and sound hardware of each machine that runs TRS-80 Level II BASIC, and where machine-code and data blocks live in its memory.

TRS-80 Model I ​

Screen modes ​

The Model I has a single 64×16 character screen. PRINT @ <cell>, positions output at any of the 1024 screen cells (0–1023), and CLS clears the whole screen and homes the cursor to cell 0.

Colour ​

The TRS-80 has no colour hardware — the display is monochrome.

Graphics ​

Block graphics divide each character cell into a 2×3 group, giving a 128×48 grid: SET(<x>, <y>) lights a block, RESET(<x>, <y>) clears it and the POINT(<x>, <y>) function tests one — the classic tools for game screens and collision detection. The same sextant patterns can be printed directly as characters (see the escape codes page).

Sound ​

The Model I has no sound hardware — games that made sound pulsed the cassette output port (OUT 255, <byte>) into an external amplifier. OUT is accepted here and does nothing, so nothing is audible.

Memory ​

A TRS-80 program can carry fixed-address machine code or data — memory blocks — that load into RAM alongside the BASIC program before it runs. On the TRS-80 a block may sit from 0x4000 to 0x7FFF; new blocks default to 0x7000, high in RAM clear of a typical program.

A block here is data, not code. This machine runs on a BASIC interpreter rather than an emulated Z80 (see what it does not run), so a block loads into the address space and PEEK and POKE reach it, but nothing can execute it: there is no USR to call one with. Blocks are still worth carrying — they travel with the document, and a SYSTEM-format .cas round-trips through them — but a machine-code routine will not run until this dialect is switched to its Z80 backend.

There is no memory map for this machine, because the interpreter has no ROM, no memory-mapped hardware and no fixed layout to draw: what it has is 64K of bytes with the video RAM at 0x3C00. Every other machine's map is on its own hardware page.

Blocks travel with the document through the project bundle and through share links, and can arrive on import: a machine-language SYSTEM-format .cas brings each of its address records in as a block. An ordinary BASIC .cas is unaffected.

On Run the IDE refuses to start if a block would overlap the BASIC program. See the machine code guide and the cross-dialect Machine code & data blocks overview. Every mnemonic, directive and operand form the assembly editor accepts is in the Z80 assembly reference.

Released under GNU GPL v3.0. Some ROM images are third-party copyrighted works, separate to this project, strictly for personal/educational purposes.