Basilio/js/ops/0x0.ts
2015-01-25 14:06:11 -06:00

58 lines
1.7 KiB
TypeScript

/// <reference path="../Byte.ts" />
/// <reference path="../LCD.ts" />
/// <reference path="../Memory.ts" />
/// <reference path="../Registers.ts" />
/// <reference path="../TI.ts" />
TI.Opcodes[0x00] = function(args: Byte[]): number[] {
return [1, 4];
};
TI.Opcodes[0x01] = function(args: Byte[]): number[] {
Registers.byteRegisters["B"] = args[2];
Registers.byteRegisters["C"] = args[1];
return [3, 10];
};
TI.Opcodes[0x02] = function(args: Byte[]): number[] {
Memory.Set(Registers.GenerateWord("B","C"), Registers.byteRegisters["A"]);
return [1, 7];
};
TI.Opcodes[0x03] = function(args: Byte[]): number[] {
// inc bc
return [1, 4];
};
TI.Opcodes[0x04] = function(args: Byte[]): number[] {
var tmp = Registers.byteRegisters["B"];
var over = Registers.byteRegisters["B"].Add(1);
Registers.SetFlag(Flags.ADDSUB, false);
Registers.SetFlag(Flags.ZERO, over.Get() != 0);
Registers.SetFlag(Flags.PARITY, tmp.Test(7) == false && Registers.byteRegisters["B"].Test(7) == true);
Registers.SetFlag(Flags.HALF, (tmp.Get() & 0x0F) == 0x0F);
Registers.SetFlag(Flags.SIGN, Registers.byteRegisters["B"].Test(7))
return [1, 4];
};
TI.Opcodes[0x05] = function(args: Byte[]): number[] {
// dec b
return [1, 4];
};
TI.Opcodes[0x06] = function(args: Byte[]): number[] {
Registers.byteRegisters["B"] = args[1];
return [1, 7];
};
TI.Opcodes[0x07] = function(args: Byte[]): number[] {
Registers.SetFlag(Flags.CARRY, Registers.byteRegisters["A"].ShiftLeft(true));
Registers.SetFlag(Flags.ADDSUB, false);
Registers.SetFlag(Flags.HALF, false);
return [1, 4];
};
TI.Opcodes[0x08] = function(args: Byte[]): number[] {
return []
};