Skip to content

MBASIC Interpreter Documentation

Documentation for the MBASIC 5.21 interpreter implementation.

Getting Started

Implementation Details

For Developers

Looking to understand or modify the MBASIC interpreter?

  • Design Documents: docs/dev/ - Implementation notes and design decisions
  • Project Rules: .claude/CLAUDE.md - Development guidelines
  • Installation Guide: docs/dev/INSTALLATION_FOR_DEVELOPERS.md - Developer setup

By Topic

Installation & Setup - Getting Started → Installation instructions - Compatibility → What works, what doesn't

Using MBASIC - Features → What you can do - UI Guides → How to use the interface

Language Reference - Statements → BASIC-80 statements - Functions → Built-in functions - Operators → Arithmetic, logical, relational

Advanced Topics - Architecture → How it works - File I/O → Working with files - Error Handling → ON ERROR GOTO/RESUME

About This Implementation

This is a complete Python implementation of MBASIC-80 (MBASIC) version 5.21 for CP/M.

Key Features: - 100% MBASIC 5.21 language compatibility - Choice of user interfaces (CLI, Curses, Tkinter) - Advanced semantic analyzer with 18 optimizations - Cross-platform (Linux, macOS, Windows) - Zero dependencies for core functionality

Version Information: - Target compatibility: MBASIC 5.21 for CP/M - Implementation language: Python 3.8+ - License: See project repository

Documentation Structure

This documentation is organized in three tiers:

  1. 📗 MBASIC Implementation (this section)
  2. How to install and use the interpreter
  3. What features are supported
  4. Compatibility information

  5. 📕 BASIC-80 Language Reference (Language Docs)

  6. Language syntax and semantics
  7. Statements and functions
  8. Common to all MBASIC interpreters

  9. 📘 UI-Specific Guides

  10. Interface-specific help
  11. Keyboard shortcuts
  12. UI features and workflows

Contributing

This is an open-source project. For contributing: - Report issues on GitHub - Follow coding guidelines in .claude/CLAUDE.md - See developer documentation in docs/dev/

See Also