Code Monkey home page Code Monkey logo

drom's Introduction

Daterad Rekreationell Övnings-Mikrodator

DRÖM ("DREAM" in Swedish) is an emulator for the CHIP-8-based DREAM 6800 home computer, powered by LÖVE and Moon6800.

You can read about the development of DRÖM in these blog posts, and about the DREAM's history on the official DREAM 6800 Archive Site.

Screenshot of CHIPOS in DRÖM

Features

  • Faithful emulation of the DREAM
  • 4K of RAM
  • Can quickload and play CHIP-8 games
  • Includes software:
    • Michael J. Bauer's original CHIPOS monitor program
    • Michael J. Bauer's DREAM INVADERS game
  • A comprehensive debug interface, powered by love-imgui
  • CRT shaders!

A very special thanks to Michael J. Bauer who permitted me to include the original software.

Memory map

Address range Contents
0000 - 03FF RAM
8010 - 8011 PIA A (keypad)
8012 - 8013 PIA B (speaker & cassette)
C000 - C3FF EPROM
C400 - FFFF Mirrored EPROM

CHIPOS

When CHIPOS starts up, it will display an address at the bottom of the screen.

First, type a 4-digit hexadecimal number to enter a memory address.

Then execute one of the following commands:

  • FN, 0: MEMOD (MEMory MODify): The contents of the address will be displayed as a 2-digit hexadecimal number. Type a new 2-digit number to replace the memory contents. The memory address will automatically advance by one. You can also press FN to advance one byte without modifying anyting.
  • FN, 3: Run: Executes a program starting at the current address. To run a CHIP-8 program (which is loaded at address 0200), run the CHIP-8 interpreter at C000.

Loading (FN, 1) and dumping (FN, 2) cassettes isn't supported yet, but instead you can use the "File" menu to quickload CHIP-8 games or DREAM INVADERS.

At any time, press RESET to return to the monitor program.

History

The DREAM 6800 (Domestic Recreational Educational and Adaptive Microcomputer) was a Motorola 6800-based microcomputer created by Michael J. Bauer. Its construction was detailed in Electronics Australia in 1979, and it included a monitor program called CHIPOS (Compact Hexadecimal Interpretive Programming and Operating System) and a CHIP-8 interpreter.

It had its own newsletter, DREAMER, published between 1980 and 1982.

You can read more about the DREAM's history on Michael's official DREAM 6800 Archive Site.

drom's People

Contributors

tobiasvl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

drom's Issues

JR Extension Board

Replaces the on-board RAM (?) and adds

  • 8K of RAM
  • 1K/2K EPROM (one chip, 2708 or 2716), replaces RAM
  • 2 PIAs

"Components" menu

  • RAM
    • 1K (0000–03FF)
    • 2K (0000–07FF)
    • 4K (0000–0FFF)
  • EPROM
    • Dreamsoft 1 (1800–1FFF), PROM 0 on Dreamsoft/EA Expansion Board
    • CHIPOS (C000–C3FF)
    • Dreamsoft 2 (C000-C7FF)
  • ASCII keyboard?

Dream Invaders checksum is inconsistent

After loading Dream Invaders from $0200 to $06FF, and then loading the following checksum program from the Dream Invaders manual afterwards:

    CPU.memory[0x700] = 0xCE
    CPU.memory[0x701] = 0x02
    CPU.memory[0x702] = 0x00
    CPU.memory[0x703] = 0x4F
    CPU.memory[0x704] = 0xE6
    CPU.memory[0x705] = 0x00
    CPU.memory[0x706] = 0x1B
    CPU.memory[0x707] = 0x08
    CPU.memory[0x708] = 0x8C
    CPU.memory[0x709] = 0x07
    CPU.memory[0x70A] = 0x00
    CPU.memory[0x70B] = 0x26
    CPU.memory[0x70C] = 0xF7
    CPU.memory[0x70D] = 0x97
    CPU.memory[0x70E] = 0xFF
    CPU.memory[0x70F] = 0x7E
    CPU.memory[0x710] = 0xC3
    CPU.memory[0x711] = 0x60

The checksum at location $00FF will sometimes be $AA (the correct sum) and sometimes $83.

Fullscreen mode

  • LÖVE fullscreen mode
  • All windows are hidden except Display
  • Display window is scaled up to fill the screen

Emulate VDG

Right now, the main loop runs the CPU at 1 MHz, and draws to the screen at 50 Hz.

Instead, the VDG should be emulated. It should request an interrupt from the CPU and then draw the screen (using DMA).

Timer is not properly decremented in some cases

The TIME and TONE variables in CHIPOS are not properly decremented in some cases. When?

This is the cause of several current bugs:

  • Dream Invaders freezes when either an invader or the player is hit
  • Mini Lights Out only inverts the title screen once

Toggle randomized memory

  • Remember setting in INI file
  • If setting is on, init RAM with random. Otherwise, init with 0.
  • When turning setting on and off, change RAM values of uninitialized RAM, but not the initialization flag

Debug object

Make a debug object that can access all components.

One special case for the address bus: It should not acknowledge the PIA's IRQ when reading off the PIA's data pins.

Fix Dream Invaders loading

The release apparently has a bug: It crashes when attempting to load Dream Invaders.

Not sure why, since it works on master.

Create a "glue" object for the emulator/M6800

There's way too little separation between parts right now. memory shouldn't belong to the cpu, and I need somewhere to store stuff like the number of cycles (right now it's a global…).

Mirrored memory

The EPROM should be mirrored all the way up to $FFFF (which is the actual location of the interrupt vectors).

Deflicker

Consider using a CRT fade out effect to mitigate flicker

The player dies suddenly in Dream Invaders

While playing Dream Invaders, sometimes an alien on the front row will suddenly die (without being shot) and be vertically displaced, and the game is lost (presumably because the game thinks the alien managed to reach the bottom of the screen).

image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.