#!/usr/bin/env perl use strict; use warnings; use Test::More; use Games::Emulation::DCPU16; =begin assembly_code ; Try some basic stuff SET A, 0x30 ; 7c01 0030 SET [0x1000], 0x20 ; 7de1 1000 0020 SUB A, [0x1000] ; 7803 1000 IFN A, 0x10 ; c00d SET PC, crash ; 7dc1 001a [*] ; Do a loopy thing SET I, 10 ; a861 SET A, 0x2000 ; 7c01 2000 :loop SET [0x2000+I], [A] ; 2161 2000 SUB I, 1 ; 8463 IFN I, 0 ; 806d SET PC, loop ; 7dc1 000d [*] ; Call a subroutine SET X, 0x4 ; 9031 JSR testsub ; 7c10 0018 [*] SET PC, crash ; 7dc1 001a [*] :testsub SHL X, 4 ; 9037 SET PC, POP ; 61c1 ; Hang forever. X should now be 0x40 if everything went right. :crash SET PC, crash ; 7dc1 001a [*] ; [*]: Note that these can be one word shorter and one cycle faster by using the short form (0x00-0x1f) of literals, ; but my assembler doesn't support short form labels yet. =end assembly_code =cut my $bytecode = "\x7c\x01\x00\x30\x7d\xe1\x10\x00\x00\x20\x78\x03\x10\x00\xc0\x0d\x7d\xc1\x00\x1a\xa8\x61\x7c\x01\x20\x00\x21\x61\x20\x00\x84\x63\x80\x6d\x7d\xc1\x00\x0d\x90\x31\x7c\x10\x00\x18\x7d\xc1\x00\x1a\x90\x37\x61\xc1\x7d\xc1\x00\x1a"; my $cpu = Games::Emulation::DCPU16->new; isa_ok($cpu, 'Games::Emulation::DCPU16'); is_deeply($cpu->memory, [(0) x 0x10000]); is_deeply($cpu->registers, [ (0x0000) x 8 ]); is($cpu->PC, 0x0000); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 0); $cpu->load($bytecode); is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x10000 - 28) ] ); is_deeply( $cpu->registers, [ (0x0000) x 8 ], ); is($cpu->PC, 0x0000); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 0); $cpu->step; # load 0x0030 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x10000 - 28) ] ); is_deeply( $cpu->registers, [ (0x0000) x 8 ], ); is($cpu->PC, 0x0000); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 1); $cpu->step; # execute SET A, 0x30 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x10000 - 28) ] ); is_deeply( $cpu->registers, [ 0x0030, (0x0000) x 7 ], ); is($cpu->PC, 0x0002); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 2); $cpu->step; # load 0x1000 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x10000 - 28) ] ); is_deeply( $cpu->registers, [ 0x0030, (0x0000) x 7 ], ); is($cpu->PC, 0x0002); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 3); $cpu->step; # load 0x0020 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x10000 - 28) ] ); is_deeply( $cpu->registers, [ 0x0030, (0x0000) x 7 ], ); is($cpu->PC, 0x0002); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 4); $cpu->step; # execute SET [0x1000], 0x20 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x0030, (0x0000) x 7 ], ); is($cpu->PC, 0x0005); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 5); $cpu->step; # load 0x1000 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x0030, (0x0000) x 7 ], ); is($cpu->PC, 0x0005); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 6); $cpu->step; # execution delay is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x0030, (0x0000) x 7 ], ); is($cpu->PC, 0x0005); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 7); $cpu->step; # execute SUB A, [0x1000] is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x0010, (0x0000) x 7 ], ); is($cpu->PC, 0x0007); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 8); $cpu->step; # execution delay is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x0010, (0x0000) x 7 ], ); is($cpu->PC, 0x0007); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 9); $cpu->step; # execution delay is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x0010, (0x0000) x 7 ], ); is($cpu->PC, 0x0007); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 10); $cpu->step; # execute IFN A, 0x10 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x0010, (0x0000) x 7 ], ); is($cpu->PC, 0x000a); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 11); $cpu->step; # execute SET I, 10 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x0010, (0x0000) x 5, 0x000a, 0x0000 ], ); is($cpu->PC, 0x000b); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 12); $cpu->step; # load 0x2000 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x0010, (0x0000) x 5, 0x000a, 0x0000 ], ); is($cpu->PC, 0x000b); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 13); $cpu->step; # execute SET A, 0x2000 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x000a, 0x0000 ], ); is($cpu->PC, 0x000d); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 14); $cpu->step; # load 0x2000 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x000a, 0x0000 ], ); is($cpu->PC, 0x000d); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 15); $cpu->step; # execute SET [0x2000+I], [A] is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x000a, 0x0000 ], ); is($cpu->PC, 0x000f); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 16); $cpu->step; # execution delay is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x000a, 0x0000 ], ); is($cpu->PC, 0x000f); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 17); $cpu->step; # execute SUB I, 1 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0009, 0x0000 ], ); is($cpu->PC, 0x0010); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 18); $cpu->step; # execution delay is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0009, 0x0000 ], ); is($cpu->PC, 0x0010); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 19); $cpu->step; # execute IFN I, 0 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0009, 0x0000 ], ); is($cpu->PC, 0x0011); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 20); $cpu->step; # load 0x000d is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0009, 0x0000 ], ); is($cpu->PC, 0x0011); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 21); $cpu->step; # execute SET PC, loop is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0009, 0x0000 ], ); is($cpu->PC, 0x000d); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 22); $cpu->step; # load 0x2000 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0009, 0x0000 ], ); is($cpu->PC, 0x000d); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 23); $cpu->step; # execute SET [0x2000+I], [A] is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0009, 0x0000 ], ); is($cpu->PC, 0x000f); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 24); $cpu->step; # execution delay is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0009, 0x0000 ], ); is($cpu->PC, 0x000f); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 25); $cpu->step; # execute SUB I, 1 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0008, 0x0000 ], ); is($cpu->PC, 0x0010); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 26); $cpu->step; # execution delay is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0008, 0x0000 ], ); is($cpu->PC, 0x0010); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 27); $cpu->step; # execute IFN I, 0 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0008, 0x0000 ], ); is($cpu->PC, 0x0011); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 28); $cpu->step; # load 0x000d is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0008, 0x0000 ], ); is($cpu->PC, 0x0011); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 29); $cpu->step; # execute SET PC, loop is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0008, 0x0000 ], ); is($cpu->PC, 0x000d); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 30); $cpu->step; # load 0x2000 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0008, 0x0000 ], ); is($cpu->PC, 0x000d); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 31); $cpu->step; # execute SET [0x2000+I], [A] is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0008, 0x0000 ], ); is($cpu->PC, 0x000f); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 32); $cpu->step; # execution delay is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0008, 0x0000 ], ); is($cpu->PC, 0x000f); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 33); $cpu->step; # execute SUB I, 1 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0007, 0x0000 ], ); is($cpu->PC, 0x0010); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 34); $cpu->step; # execution delay is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0007, 0x0000 ], ); is($cpu->PC, 0x0010); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 35); $cpu->step; # execute IFN I, 0 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0007, 0x0000 ], ); is($cpu->PC, 0x0011); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 36); $cpu->step; # load 0x000d is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0007, 0x0000 ], ); is($cpu->PC, 0x0011); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 37); $cpu->step; # execute SET PC, loop is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0007, 0x0000 ], ); is($cpu->PC, 0x000d); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 38); $cpu->step; # load 0x2000 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0007, 0x0000 ], ); is($cpu->PC, 0x000d); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 39); $cpu->step; # execute SET [0x2000+I], [A] is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0007, 0x0000 ], ); is($cpu->PC, 0x000f); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 40); $cpu->step; # execution delay is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0007, 0x0000 ], ); is($cpu->PC, 0x000f); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 41); $cpu->step; # execute SUB I, 1 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0006, 0x0000 ], ); is($cpu->PC, 0x0010); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 42); $cpu->step; # execution delay is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0006, 0x0000 ], ); is($cpu->PC, 0x0010); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 43); $cpu->step; # execute IFN I, 0 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0006, 0x0000 ], ); is($cpu->PC, 0x0011); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 44); $cpu->step; # load 0x000d is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0006, 0x0000 ], ); is($cpu->PC, 0x0011); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 45); $cpu->step; # execute SET PC, loop is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0006, 0x0000 ], ); is($cpu->PC, 0x000d); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 46); $cpu->step; # load 0x2000 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0006, 0x0000 ], ); is($cpu->PC, 0x000d); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 47); $cpu->step; # execute SET [0x2000+I], [A] is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0006, 0x0000 ], ); is($cpu->PC, 0x000f); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 48); $cpu->step; # execution delay is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0006, 0x0000 ], ); is($cpu->PC, 0x000f); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 49); $cpu->step; # execute SUB I, 1 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0005, 0x0000 ], ); is($cpu->PC, 0x0010); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 50); $cpu->step; # execution delay is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0005, 0x0000 ], ); is($cpu->PC, 0x0010); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 51); $cpu->step; # execute IFN I, 0 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0005, 0x0000 ], ); is($cpu->PC, 0x0011); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 52); $cpu->step; # load 0x000d is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0005, 0x0000 ], ); is($cpu->PC, 0x0011); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 53); $cpu->step; # execute SET PC, loop is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0005, 0x0000 ], ); is($cpu->PC, 0x000d); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 54); $cpu->step; # load 0x2000 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0005, 0x0000 ], ); is($cpu->PC, 0x000d); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 55); $cpu->step; # execute SET [0x2000+I], [A] is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0005, 0x0000 ], ); is($cpu->PC, 0x000f); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 56); $cpu->step; # execution delay is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0005, 0x0000 ], ); is($cpu->PC, 0x000f); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 57); $cpu->step; # execute SUB I, 1 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0004, 0x0000 ], ); is($cpu->PC, 0x0010); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 58); $cpu->step; # execution delay is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0004, 0x0000 ], ); is($cpu->PC, 0x0010); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 59); $cpu->step; # execute IFN I, 0 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0004, 0x0000 ], ); is($cpu->PC, 0x0011); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 60); $cpu->step; # load 0x000d is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0004, 0x0000 ], ); is($cpu->PC, 0x0011); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 61); $cpu->step; # execute SET PC, loop is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0004, 0x0000 ], ); is($cpu->PC, 0x000d); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 62); $cpu->step; # load 0x2000 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0004, 0x0000 ], ); is($cpu->PC, 0x000d); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 63); $cpu->step; # execute SET [0x2000+I], [A] is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0004, 0x0000 ], ); is($cpu->PC, 0x000f); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 64); $cpu->step; # execution delay is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0004, 0x0000 ], ); is($cpu->PC, 0x000f); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 65); $cpu->step; # execute SUB I, 1 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0003, 0x0000 ], ); is($cpu->PC, 0x0010); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 66); $cpu->step; # execution delay is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0003, 0x0000 ], ); is($cpu->PC, 0x0010); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 67); $cpu->step; # execute IFN I, 0 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0003, 0x0000 ], ); is($cpu->PC, 0x0011); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 68); $cpu->step; # load 0x000d is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0003, 0x0000 ], ); is($cpu->PC, 0x0011); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 69); $cpu->step; # execute SET PC, loop is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0003, 0x0000 ], ); is($cpu->PC, 0x000d); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 70); $cpu->step; # load 0x2000 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0003, 0x0000 ], ); is($cpu->PC, 0x000d); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 71); $cpu->step; # execute SET [0x2000+I], [A] is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0003, 0x0000 ], ); is($cpu->PC, 0x000f); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 72); $cpu->step; # execution delay is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0003, 0x0000 ], ); is($cpu->PC, 0x000f); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 73); $cpu->step; # execute SUB I, 1 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0002, 0x0000 ], ); is($cpu->PC, 0x0010); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 74); $cpu->step; # execution delay is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0002, 0x0000 ], ); is($cpu->PC, 0x0010); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 75); $cpu->step; # execute IFN I, 0 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0002, 0x0000 ], ); is($cpu->PC, 0x0011); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 76); $cpu->step; # load 0x000d is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0002, 0x0000 ], ); is($cpu->PC, 0x0011); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 77); $cpu->step; # execute SET PC, loop is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0002, 0x0000 ], ); is($cpu->PC, 0x000d); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 78); $cpu->step; # load 0x2000 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0002, 0x0000 ], ); is($cpu->PC, 0x000d); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 79); $cpu->step; # execute SET [0x2000+I], [A] is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0002, 0x0000 ], ); is($cpu->PC, 0x000f); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 80); $cpu->step; # execution delay is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0002, 0x0000 ], ); is($cpu->PC, 0x000f); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 81); $cpu->step; # execute SUB I, 1 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0001, 0x0000 ], ); is($cpu->PC, 0x0010); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 82); $cpu->step; # execution delay is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0001, 0x0000 ], ); is($cpu->PC, 0x0010); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 83); $cpu->step; # execute IFN I, 0 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0001, 0x0000 ], ); is($cpu->PC, 0x0011); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 84); $cpu->step; # load 0x000d is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0001, 0x0000 ], ); is($cpu->PC, 0x0011); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 85); $cpu->step; # execute SET PC, loop is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0001, 0x0000 ], ); is($cpu->PC, 0x000d); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 86); $cpu->step; # load 0x2000 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0001, 0x0000 ], ); is($cpu->PC, 0x000d); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 87); $cpu->step; # execute SET [0x2000+I], [A] is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0001, 0x0000 ], ); is($cpu->PC, 0x000f); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 88); $cpu->step; # execution delay is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 5, 0x0001, 0x0000 ], ); is($cpu->PC, 0x000f); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 89); $cpu->step; # execute SUB I, 1 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 7 ], ); is($cpu->PC, 0x0010); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 90); $cpu->step; # execution delay is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 7 ], ); is($cpu->PC, 0x0010); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 91); $cpu->step; # execution delay is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 7 ], ); is($cpu->PC, 0x0010); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 92); $cpu->step; # execute IFN I, 0 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 7 ], ); is($cpu->PC, 0x0013); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 93); $cpu->step; # execute SET X, 0x4 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 2, 0x0004, (0x0000) x 4 ], ); is($cpu->PC, 0x0014); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 94); $cpu->step; # load 0x0018 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 2, 0x0004, (0x0000) x 4 ], ); is($cpu->PC, 0x0014); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 95); $cpu->step; # execution delay is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 1), ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 2, 0x0004, (0x0000) x 4 ], ); is($cpu->PC, 0x0014); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 96); $cpu->step; # execute JSR testsub is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 2), 0x0016, ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 2, 0x0004, (0x0000) x 4 ], ); is($cpu->PC, 0x0018); is($cpu->SP, 0xffff); is($cpu->O, 0x0000); is($cpu->clock, 97); $cpu->step; # execution delay is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 2), 0x0016, ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 2, 0x0004, (0x0000) x 4 ], ); is($cpu->PC, 0x0018); is($cpu->SP, 0xffff); is($cpu->O, 0x0000); is($cpu->clock, 98); $cpu->step; # execute SHL X, 4 is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 2), 0x0016, ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 2, 0x0040, (0x0000) x 4 ], ); is($cpu->PC, 0x0019); is($cpu->SP, 0xffff); is($cpu->O, 0x0000); is($cpu->clock, 99); $cpu->step; # execute SET PC, POP is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 2), 0x0016, ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 2, 0x0040, (0x0000) x 4 ], ); is($cpu->PC, 0x0016); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 100); $cpu->step; # load 0x001a is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 2), 0x0016, ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 2, 0x0040, (0x0000) x 4 ], ); is($cpu->PC, 0x0016); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 101); $cpu->step; # execute SET PC, crash is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 2), 0x0016, ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 2, 0x0040, (0x0000) x 4 ], ); is($cpu->PC, 0x001a); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 102); $cpu->step; # load 0x001a is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 2), 0x0016, ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 2, 0x0040, (0x0000) x 4 ], ); is($cpu->PC, 0x001a); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 103); $cpu->step; # execute SET PC, crash is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 2), 0x0016, ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 2, 0x0040, (0x0000) x 4 ], ); is($cpu->PC, 0x001a); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 104); $cpu->step; # load 0x001a is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 2), 0x0016, ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 2, 0x0040, (0x0000) x 4 ], ); is($cpu->PC, 0x001a); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 105); $cpu->step; # execute SET PC, crash is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 2), 0x0016, ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 2, 0x0040, (0x0000) x 4 ], ); is($cpu->PC, 0x001a); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 106); $cpu->step; # load 0x001a is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 2), 0x0016, ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 2, 0x0040, (0x0000) x 4 ], ); is($cpu->PC, 0x001a); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 107); $cpu->step; # execute SET PC, crash is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 2), 0x0016, ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 2, 0x0040, (0x0000) x 4 ], ); is($cpu->PC, 0x001a); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 108); $cpu->step; # load 0x001a is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 2), 0x0016, ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 2, 0x0040, (0x0000) x 4 ], ); is($cpu->PC, 0x001a); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 109); $cpu->step; # execute SET PC, crash is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 2), 0x0016, ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 2, 0x0040, (0x0000) x 4 ], ); is($cpu->PC, 0x001a); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 110); $cpu->step; # load 0x001a is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 2), 0x0016, ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 2, 0x0040, (0x0000) x 4 ], ); is($cpu->PC, 0x001a); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 111); $cpu->step; # execute SET PC, crash is_deeply( $cpu->memory, [ 0x7c01, 0x0030, 0x7de1, 0x1000, 0x0020, 0x7803, 0x1000, 0xc00d, 0x7dc1, 0x001a, 0xa861, 0x7c01, 0x2000, 0x2161, 0x2000, 0x8463, 0x806d, 0x7dc1, 0x000d, 0x9031, 0x7c10, 0x0018, 0x7dc1, 0x001a, 0x9037, 0x61c1, 0x7dc1, 0x001a, (0) x (0x1000 - 28), 0x0020, (0) x (0x10000 - 0x1000 - 2), 0x0016, ] ); is_deeply( $cpu->registers, [ 0x2000, (0x0000) x 2, 0x0040, (0x0000) x 4 ], ); is($cpu->PC, 0x001a); is($cpu->SP, 0x0000); is($cpu->O, 0x0000); is($cpu->clock, 112); done_testing;