Skip to content
Simple virtual machine of a "one instruction set" cpu.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
OISC_Asm
OISC_VM
TestPrograms
.gitignore
LICENSE
OISC_Asm.sln
OISC_VM.sln
README
gpl.txt

README

Simple virtual machine of a "one instruction set" cpu written in C#.

Based on the single instruction SUBLEQ (Subtract and 
branch if less than or equal to 0).

The virtual machine loads a program into memory and executes it.
Includes a memory mapped console output device for displaying results.

Project includes an assembler for building binary files from assembly source.

Assembler has support for comment lines, source and binary mode addressing, labeled addressing, labeled memory and auto branching to next instruction.

===

All code in this project is covered under the terms 
of the GNU General Public License a copy of which 
is available in the same directory under the file 
name LICENSE

===

This program is Copyright 2010 Simon P Stevens

==

TODO:

Input device: Somehow have keyboard input written to memory locations.
Interupts: 
    Hardware - User registerable interrupts to run specific code on hardware events (such as keyboard events?)
               Also, registerable by hardware (E.g. Console device could use a memory address to trigger a display update. This could be an interruppted address)
    Software - Triggered by changes to specific memory addresses. User can register code to be run when address is set to a flag value.
Disk device: A mapped memory location that can be written to to send commands to a disk controller. Then have the disk controller load the requested memory from disk into main memory. The disk controller could either be for emulated binary disks, or for host disk access.
You can’t perform that action at this time.