Tridora-CPU/README.md
2024-09-11 23:52:25 +02:00

2.2 KiB

Tridora

  • the Tridora CPU and the Tridora System
  • creating everything from the ground up (except soldering stuff)
  • make it useful, but as simple as possible

Overview

  • Homebrew CPU
  • Verilog/FPGA SoC
  • 32-bit word-oriented stack machine architecture
  • has its own instruction set architecture, compatible with nothing
  • additional IO controllers on FPGA: UART (serial console), SD-Card, VGA
  • Pascal compiler written from zero
  • CPU and compiler were designed together
  • minimal operating system
  • editor, compiler, assembler run natively
  • so you can develop programs directly on the machine
  • small: CPU has 760 lines of verilog, compiler ~9000 LoC
  • Compiler written in Pascal and can compile itself
  • Cross-compiler/-assembler can be compiled with FPC
  • Compiler does its own Pascal dialect with some restrictions and some extensions
  • Emulator available

Demo

  • (Video hello world)
  • (Video lines)
  • (Screenshot mandelbrot)
  • (Screenshot conway)
  • (Screenshot image viewer)

Supported Boards

  • Arty A7
  • Nexys A7?

Pascal Language

  • Wirth Pascal
  • no function types/parameters
  • arbitrary length strings (2GB)
  • safe strings (runtime information about max/current size)
  • tiny sets (machine word sized), that means no SET OF CHAR
  • array literals with IN-operator, which can replace most uses of SET OF CHAR
  • nested procedures with some limitations
  • 32 bit software floating point with low precision (5-6 digits)
  • break and exit statements, no continue yet
  • static variable initialization for global variables
  • non-standard file i/o (because the standard sucks, obl. XKCD reference)

Standard Library

  • everything from Wirth Pascal
  • some things from TP3.0
  • some graphics functionality (to be expanded in the future)

Operating System

  • not a real operating system, more of a program loader
  • some assembly routines for I/O resident in memory
  • one program image loaded at a time at a fixed address
  • most parts of the operating system are contained in the program image
  • file system is very primitive: only contiguous blocks, no subdirectories
  • Simple shell reminiscent of TP3.0, edit, compile, run programs