Emulator for the agon light 8-bit computer

Overview

agon-light-emulator

This will be an emulator for the agon light (https://www.thebyteattic.com/p/agon.html) by Bernardo Kastrup.

The ez80 emulation is done by tomm (https://github.com/tomm/ez80).

The VDP emulation is now a crate (https://github.com/astralaster/agon-light-vdp)

The original firmware for the agon light is done by Dean Belfield (https://github.com/breakintoprogram).

Screenshot of the emulator running bbcbasic.

How to build

cargo build

How to run

cargo run

Missing features

  • Complete keyboard support.
  • Color Redefinition
  • Sprites
  • Audio
Comments
  • Make RST be less picky about .LIS vs .LIL suffixes

    Make RST be less picky about .LIS vs .LIL suffixes

    This is one for the upstream component, but you probably know how to pass it on.

    My FORTH for Agon uses RST.LIL in 16-bit mode (ADL=0) and this is rejected by the eZ80 interpreter. The hardware just works. There may be other programs that refuse to run just because the wrong instruction suffix (in fact a prefix byte in the binary machine code) is used on RST.

    bug 
    opened by lennart-benschop 5
  • Better handle keys with shift

    Better handle keys with shift

    The current logic to convert the keycode in case the SHIFT key is pressed does not work for most symbols. There is probably a better way to obtain the ASCII code from a key in SDL that does not depend on the keyboard layout.

    enhancement 
    opened by lennart-benschop 4
  • Redesign text rendering.

    Redesign text rendering.

    I'm less than happy with the way the entire canvas is re-rendered each frame from the text data. As soon as we add line drawing and whatnot, we cannot store the parameters of all lines drawn and re-render them each time. Think of the triangles.bas demo that keeps drawing triangles indefinitely, where each triangle overwrites parts of previous ones.

    So I would like to draw all characters, lines etc. onto one 'surface' (which may or may not be the window's own canvas) and then possibly blit this into the window's canvas each frame. This way we may be able to draw sprites on top of this when we get to that (or the cursor possibly). When scrolling we move part of the 'surface' using an appropriate blit function. Characters can be drawn by plotting each pixel (first clear the rectangle to the background colour). The real Agon hardware draws each character as a bitmap into the frame buffer. When you update a character in the font using VDU 23, future instances will be redrawn with the updated pattern, but previously drawn characters will stay as-is.

    enhancement 
    opened by lennart-benschop 2
  • Redesign text rendering.

    Redesign text rendering.

    I'm less than happy with the way the entire canvas is re-rendered each frame from the text data. As soon as we add line drawing and whatnot, we cannot store the parameters of all lines drawn and re-render them each time. Think of the triangles.bas demo that keeps drawing triangles indefinitely, where each triangle overwrites parts of previous ones.

    So I would like to draw all characters, lines etc. onto one 'surface' (which may or may not be the window's own canvas) and then possibly blit this into the window's canvas each frame. This way we may be able to draw sprites on top of this when we get to that (or the cursor possibly). When scrolling we move part of the 'surface' using an appropriate blit function. Characters can be drawn by plotting each pixel (first clear the rectangle to the background colour). The real Agon hardware draws each character as a bitmap into the frame buffer. When you update a character in the font using VDU 23, future instances will be redrawn with the updated pattern, but previously drawn characters will stay as-is.

    opened by lennart-benschop 1
  • Please add the required version of BBC Basic to the repo

    Please add the required version of BBC Basic to the repo

    Thank you for creating this emulator! I'm loving it!

    It can be quite confusing to get the correct version of BBC Basic from other repos...

    Pleas add the version working with the current state of the emulator as you did for MOS.bin

    opened by euneuber 1
  • Initial implementation of PLOT

    Initial implementation of PLOT

    Still not complete: CIRCLE (ugly polygon outline), TRIANGLE (only outline not filled). MOVETO, plot dot, line work OK. Also implemented character bitmap redefine with VDU 23,, grafix origin with VDU 29

    opened by lennart-benschop 0
  • MacBook Pro gets hot after a few mins of running the emulator

    MacBook Pro gets hot after a few mins of running the emulator

    Hi,

    great work with the Agon emulator, it looks great for now and I was able to build it without problems on my MacBook Pro M1. I noticed that after a few minutes of usage my Mac gets super hot and I have to stop the emulator. Any idea what could cause this problem ? (BTW, same problem with the emulator built in debug and release mode)

    Thanks, Jean

    opened by ijean 0
Owner
null
Basic computer emulator

BasePC 2.0 Наиболее приближенный к реальности эмулятор БЭВМ сделанный по вот этой книге Отличается от других реализацией кол-вом полезных фич и близос

null 22 Nov 21, 2022
Nes-emulator - A NES emulator made to learn the Rust programming language

nes-emulator Building $ rustc --version rustc 1.32.0 (9fda7c223 2019-01-16) $ cargo --version cargo 1.32.0 (8610973aa 2019-01-02) $ cargo build --rel

Michael Burge 225 Dec 23, 2022
Commodore 64 emulator written in Rust

Rust64 - a C64 emulator written in Rust This is my attempt to study the Rust programming language and have fun at the same time. The goal is to presen

Krzysztof Kondrak 214 Dec 27, 2022
A Flash Player emulator written in Rust

website | demo | nightly builds | wiki Ruffle Ruffle is an Adobe Flash Player emulator written in the Rust programming language. Ruffle targets both t

Ruffle 11.2k Jan 8, 2023
A Game Boy research project and emulator written in Rust

Mooneye GB Mooneye GB is a Game Boy research project and emulator written in Rust. The main goals of this project are accuracy and documentation. Some

Joonas Javanainen 802 Dec 28, 2022
A Gameboy Emulator in Rust

RBoy A Gameboy Color Emulator written in Rust Implemented CPU All instructions correct All timings correct Double speed mode GPU Normal mode Color mod

Mathijs van de Nes 512 Dec 23, 2022
RGB (Rust Game Boy) is a simple emulator for the original game boy

RGB RGB (Rust Game Boy) is a simple emulator for the original game boy and the color game boy. Warning: This no longer compiles in the latest versions

Niven Achenjang 18 Dec 2, 2022
Full featured Cross-platform GameBoy emulator by Rust. Forever boys!.

Gameboy Full featured Cross-platform GameBoy emulator. Forever boys!. You can start a game with the following command, here with a built-in game "Boxe

Mohanson 1.2k Jan 2, 2023
RustBoyAdvance-NG is a Nintendo™ Game Boy Advance emulator and debugger, written in the rust programming language.

RustBoyAdvance-NG Nintendo GameBoy Advance ™ emulator and debugger, written in rust. WebAssembly Demo: https://michelhe.github.io/rustboyadvance-ng/ P

MishMish 510 Dec 30, 2022
NES emulator written in Rust to learn Rust

OxideNES A NES emulator in Rust. CPU should be accurate, PPU is mostly accurate, timing between the 2 is off for some corner cases and hardware qui

null 37 Nov 7, 2022
An NES emulator written in Rust

Pinky Pinky is an NES emulator written in Rust completely from scratch based only on publicly available documentation. You can run it in your Web brow

Koute 709 Dec 23, 2022
NES emulator written in Rust

sprocketnes is an emulator for the Nintendo Entertainment System written in the Rust programming language. Its purpose is to serve as a technology dem

Patrick Walton 725 Dec 27, 2022
NES emulator in rust

NES emulator in Rust plastic is a NES emulator built from scratch using Rust. This is a personal project for fun and to experience emulating hardware

Amjad Alsharafi 27 Dec 15, 2022
ZX Spectrum emulator written in Rust

rustzx ZX Spectrum emulator which I writing in rust. I develop this project just for fun and for learning the basics of computer architecture. License

Vladislav Nikonov 162 Dec 27, 2022
R.A.Z.E. A ZX Spectrum Emulator

R.A.Z.E. A ZX Spectrum emulator This project is part of a friendly competition to build an emulator using Rust and WebAssembly. Check the live version

Rodrigo Rivas Costa 37 Nov 25, 2022
Rustual Boy - A Virtual Boy emulator.

Rustual Boy Description Rustual Boy is a Virtual Boy emulator. It can be used to play existing Virtual Boy games, as well as be a helpful development/

null 224 Nov 9, 2022
Intel 8080 cpu emulator by Rust

i8080 i8080 is a emulator for Intel 8080 cpu. 8080 Programmers Manual 8080 opcodes [dependencies] i8080 = { git = "https://github.com/mohanson/i8080"

Mohanson 83 Dec 27, 2022
Learn emulator and programming languages, target chip8, nes, gbc, gba ...

[WIP]learn emulator go-chip8 go run main.go source https://en.wikipedia.org/wiki/CHIP-8 http://devernay.free.fr/hacks/chip8/C8TECH10.HTM https://githu

早晨海风 4 Apr 30, 2021
CHIP-8 emulator written in Rust

CHIP-8 emulator written in Rust. This is intended to be a project for gaining experience writing emulators and practice Rust.

Pedro Rodrigues 4 May 21, 2021