Simon Wistow > CPU-Emulator-DCPU16-0.3 > CPU::Emulator::DCPU16

Download:
CPU-Emulator-DCPU16-0.3.tar.gz

Dependencies

Annotate this POD

View/Report Bugs
Module Version: 0.3   Source  

NAME ^

CPU::Emulator::DCPU16 - an emulator for Notch's DCPU-16 virtual CPU for the game 0x10c

SYNOPSIS ^

    open(my $fh, ">:raw", $file) || die "Couldn't read file $file: $!";
    my $program = do { local $/=undef; <$fh> };
    $program    = CPU::Emulator::DCPU16::Assembler->assemble($program) if $file =~ /\.dasm(16)?$/;  

    # Create a new CPU and load a file
    my $cpu = CPU::Emulator::DCPU16->new();
    $cpu->load($program);
    
    # Run it ...
    $cpu->run;
    # ... which is basically the same as
    do { $cpu->step } until $cpu->halt;

DESCRIPTION ^

DCPU-16 is a spec for a virtual CPU by Notch from Mojang (of Minecraft fame).

The spec is available here

http://0x10c.com/doc/dcpu-16.txt

METHODS ^

new

Create a new CPU.

load <program> [opt[s]]

Load a program. Forces as re-init of the CPU.

You can also do

    my $cpu = CPU::Emulator::DCPU16->load($program, %opts);

which is exactly the same as

    my $cpu = CPU::Emulator::DCPU16->new(%opts);
    $cpu->load($program);

bytes_to_array <bytes>

Turn a scalar of bytes into an array of words

map_device <class> <start address> <end address> [opt[s]]

Map a device of the given class to these addresses

run [opt[s]]

Run CPU until completion.

Options available are:

debug

Whether or not we should print debug information and at what level.

Default is 0 (no debug output).

limit

Maxinum number of instructions to execute.

Default is 0 (no limit).

cycle_penalty

The time penalty for each instruction cycle in milliseconds.

Default is 0 (no penalty)

full_memory

Allow the PC to continue past the last instruction of the program (i.e the program_top).

This would allow programs to rewrite themselves into a larger program.

Default is 0 (no access)

step [opt[s]]

Run a single clock cycle of the CPU.

Takes the same options as run.

METHODS TO GET THE STATE OF THE CPU ^

pc

The current program counter.

sp

The current stack pointer.

o

The current overflow.

halt [halt state]

Halt the CPU or check to see whether it's halted.

program_top

The address of the first memory location after the loaded program.

register <location>

Get or set the value of a register.

memory <location>

Get or set the value of a memory location.

SEE ALSO ^

CPU::Emulator::DCPU16::Assembler

CPU::Emulator::DCPU16::Disassembler

ACKNOWLEDGEMENTS ^

Implementation inspiration came from:

Matt Bell's Javascript implementation (https://github.com/mappum/DCPU-16)
Brian Swetland's C Implementation (https://github.com/swetland/dcpu16)
Jesse Luehrs's Perl Implementation (https://github.com/doy/games-emulation-dcpu16)

AUTHOR ^

Simon Wistow <simon@thegestalt.org>

COPYRIGHT ^

Copyright 2011 - Simon Wistow

Released under the same terms as Perl itself.

DEVELOPMENT ^

Latest development version available from

https://github.com/simonwistow/CPU-Emulator-DCPU16

syntax highlighting: