25 lines
700 B
C++
25 lines
700 B
C++
#include <cstdio>
|
|
#include <execute/interrupts.hpp>
|
|
|
|
namespace Execute
|
|
{
|
|
std::vector<InterruptFn> GetInterrupts()
|
|
{
|
|
return std::vector<InterruptFn>
|
|
{
|
|
// 0 print char
|
|
[](Execute::Registers & registers, std::vector<std::uint8_t> & memory) { std::putc(registers.A, stdout); },
|
|
// 1 print decimal integer
|
|
[](Execute::Registers & registers, std::vector<std::uint8_t> & memory) { std::printf("%i", registers.A); },
|
|
// 2 print string from memory
|
|
[](Execute::Registers & registers, std::vector<std::uint8_t> & memory)
|
|
{
|
|
unsigned const end = registers.A + registers.B;
|
|
for(unsigned i = registers.A; i < end; ++i)
|
|
{
|
|
std::putc(memory[i], stdout);
|
|
}
|
|
}
|
|
};
|
|
}
|
|
} |