debugging word

owah
This commit is contained in:
MallocNull 2015-01-27 14:11:57 -06:00
parent 76c27be5b3
commit a9d85f7d60
18 changed files with 156 additions and 41 deletions

View file

@ -1,6 +1,6 @@
var Byte = (function () {
function Byte(init) {
if (init === void 0) { init = 0; }
if (typeof init === "undefined") { init = 0; }
this.value = init & 0xFF | (init < 0 ? 0x80 : 0);
}
Byte.prototype.Add = function (val) {
@ -9,56 +9,68 @@ var Byte = (function () {
this.value = hold & 0xFF;
return new Byte(hold > 255 ? hold - 255 : 0);
};
Byte.prototype.Sub = function (val) {
val = typeof val == "number" ? new Byte(val) : val;
return this.Add(val.Neg());
};
Byte.prototype.Get = function () {
return this.value;
};
Byte.prototype.Set = function (val) {
this.value = typeof val == "number" ? val & 0xFF : val.Get();
};
Byte.prototype.Neg = function (bind) {
if (bind === void 0) { bind = false; }
if (typeof bind === "undefined") { bind = false; }
var tmp = new Byte(~this.value + 1);
this.value = bind ? tmp.Get() : this.value;
return tmp;
};
Byte.prototype.And = function (val) {
val = typeof val == "number" ? new Byte(val) : val;
this.value = this.value & val.Get();
};
Byte.prototype.Or = function (val) {
val = typeof val == "number" ? new Byte(val) : val;
this.value = this.value | val.Get();
};
Byte.prototype.Xor = function (val) {
val = typeof val == "number" ? new Byte(val) : val;
this.value = this.value ^ val.Get();
};
Byte.prototype.Not = function () {
this.value = ~this.value;
};
Byte.prototype.Bit = function (pos, val) {
pos = pos % 8;
this.Set(val ? (this.value | Math.pow(2, pos)) : (this.value & ~Math.pow(2, pos)));
};
Byte.prototype.Test = function (pos) {
pos = pos % 8;
return (this.value & Math.pow(2, pos)) != 0;
};
Byte.prototype.ShiftLeft = function (carry, value) {
if (carry === void 0) { carry = false; }
if (value === void 0) { value = false; }
if (typeof carry === "undefined") { carry = false; }
if (typeof value === "undefined") { value = false; }
var ret = (this.value & 0x80) != 0;
this.Set(this.value << 1);
this.Bit(0, carry ? ret : value);
return ret;
};
Byte.prototype.ShiftRight = function (carry, value) {
if (carry === void 0) { carry = false; }
if (value === void 0) { value = false; }
if (typeof carry === "undefined") { carry = false; }
if (typeof value === "undefined") { value = false; }
var ret = (this.value & 0x80) != 0;
this.Set(this.value >>> 1);
this.Bit(7, carry ? ret : value);
@ -66,35 +78,48 @@ var Byte = (function () {
};
return Byte;
})();
var Word = (function () {
function Word(high, low) {
this.Set(high, low);
}
Word.prototype.Get = function () {
return (this.value[0].Get() << 8) | this.value[1].Get();
};
Word.prototype.High = function () {
return this.value[0];
};
Word.prototype.Low = function () {
return this.value[1];
};
Word.prototype.Set = function (high, low) {
this.value = typeof high == "number" ? [new Byte((high & ~0xFF) >> 8), new Byte(high & 0xFF)] : [high, low];
};
Word.prototype.SetHigh = function (value) {
this.value[0] = typeof value == "number" ? new Byte(value) : value;
};
Word.prototype.SetLow = function (value) {
this.value[1] = typeof value == "number" ? new Byte(value) : value;
};
Word.prototype.Add = function (value) {
value = typeof value == "number" ? new Word(value) : value;
var overflow = [this.value[0].Add(value.High()), this.value[1].Add(value.Low())];
var hold = this.Get() + value.Get();
this.Set(hold);
return new Word(hold > 0xFFFF ? hold - 0xFFFF : 0);
//var overflow = [this.value[0].Add(value.High()), this.value[1].Add(value.Low())];
//return new Word(overflow[0].Get() + this.value[0].Add(overflow[1]).Get());
};
Word.prototype.AddByte = function (value) {
value = typeof value == "number" ? new Byte(value) : value;
var over = this.value[1].Add(value);
over = this.value[0].Add(over);
return new Word(over.Get());
value = typeof value != "number" ? value.Get() : value;
return this.Add(value);
};
return Word;
})();
//# sourceMappingURL=Byte.js.map
//# sourceMappingURL=Byte.js.map

File diff suppressed because one or more lines are too long

View file

@ -96,6 +96,10 @@ class Word {
this.Set(high, low);
}
public Get(): number {
return (this.value[0].Get() << 8) | this.value[1].Get();
}
public High(): Byte {
return this.value[0];
}
@ -126,16 +130,17 @@ class Word {
public Add(value: Word): Word;
public Add(value: any): Word {
value = typeof value == "number" ? new Word(value) : value;
var overflow = [this.value[0].Add(value.High()), this.value[1].Add(value.Low())];
var hold = this.Get() + value.Get();
this.Set(hold);
return new Word(hold > 0xFFFF ? hold - 0xFFFF : 0);
//var overflow = [this.value[0].Add(value.High()), this.value[1].Add(value.Low())];
//return new Word(overflow[0].Get() + this.value[0].Add(overflow[1]).Get());
}
public AddByte(value: number): Word;
public AddByte(value: Byte): Word;
public AddByte(value: any): Word {
value = typeof value == "number" ? new Byte(value) : value;
var over = this.value[1].Add(value);
over = this.value[0].Add(over);
return new Word(over.Get());
value = typeof value != "number" ? value.Get() : value;
return this.Add(value);
}
}

View file

@ -6,6 +6,7 @@ var Direction;
Direction[Direction["DOWN"] = 2] = "DOWN";
Direction[Direction["LEFT"] = 3] = "LEFT";
})(Direction || (Direction = {}));
var LCD = (function () {
function LCD() {
}
@ -19,25 +20,31 @@ var LCD = (function () {
if (x == 95)
cell.style.borderRight = "4px solid white";
}
LCD.vram[y] = [];
for (var x = 0; x < 15; x++)
LCD.vram[y][x] = new Byte(0);
}
};
LCD.GetCell = function (x, y) {
return LCD.screen.rows[y % 64].cells[x % 120];
};
LCD.SetCellX = function (cell, x) {
cell.style.backgroundPosition = -x + "px " + cell.style.backgroundPosition.split(" ")[1];
};
LCD.SetCellY = function (cell, y) {
cell.style.backgroundPosition = cell.style.backgroundPosition.split(" ")[0] + " " + -y + "px";
};
LCD.SetPixel = function (x, y, value) {
if (value === void 0) { value = true; }
if (typeof value === "undefined") { value = true; }
if (LCD.enabled)
LCD.SetCellY(LCD.GetCell(x, y), value ? 2 : 0);
};
LCD.IncrementCursor = function () {
switch (LCD.inc) {
case 0 /* UP */:
@ -54,6 +61,7 @@ var LCD = (function () {
break;
}
};
LCD.SetContrast = function (value) {
LCD.contrast = Math.floor((value % 64) * (23 / 64));
for (var y = 0; y < 64; y++) {
@ -61,15 +69,19 @@ var LCD = (function () {
LCD.SetCellX(LCD.GetCell(x, y), LCD.contrast * 2);
}
};
LCD.Disable = function () {
LCD.enabled = false;
for (var y = 0; y < 64; y++) {
for (var x = 0; x < 120; x++)
LCD.SetCellY(LCD.GetCell(x, y), 4);
}
};
LCD.Enable = function () {
LCD.enabled = true;
for (var y = 0; y < 64; y++) {
for (var x = 0; x < 15; x++) {
for (var bit = 0; bit < 8; bit++)
@ -77,6 +89,7 @@ var LCD = (function () {
}
}
};
LCD.Read = function () {
var value = new Byte(0);
if ((LCD.mode && LCD.cursor[1] < 15) || (!LCD.mode && LCD.cursor[1] < 20)) {
@ -91,14 +104,14 @@ var LCD = (function () {
LCD.IncrementCursor();
return value;
};
LCD.Write = function (value) {
if ((LCD.mode && LCD.cursor[1] < 15) || (!LCD.mode && LCD.cursor[1] < 20)) {
if (LCD.mode) {
LCD.vram[LCD.cursor[0]][LCD.cursor[1]] = value;
for (var bit = 0; bit < 8; bit++)
LCD.SetPixel(8 * LCD.cursor[1] + bit, LCD.cursor[0], value.Test(7 - bit));
}
else {
} else {
for (var bit = 0; bit < 6; bit++) {
LCD.SetPixel(6 * LCD.cursor[1] + bit, LCD.cursor[0], value.Test(5 - bit));
LCD.vram[LCD.cursor[0]][Math.floor((6 * LCD.cursor[1] + bit) / 8)].Bit(7 - ((6 * LCD.cursor[1] + bit) % 8), value.Test(5 - bit));
@ -107,24 +120,28 @@ var LCD = (function () {
}
LCD.IncrementCursor();
};
LCD.SetRow = function (row) {
LCD.cursor[0] = row % 64;
};
LCD.SetColumn = function (col) {
LCD.cursor[1] = col % 32;
};
LCD.SetMode = function (mode) {
LCD.mode = mode;
};
LCD.SetDirection = function (dir) {
LCD.inc = dir;
};
LCD.contrast = 12;
LCD.vram = [];
LCD.cursor = [0, 0]; // row ; column
LCD.mode = true; // false: 6 bit ; true: 8 bit
LCD.cursor = [0, 0];
LCD.mode = true;
LCD.inc = 2 /* DOWN */;
LCD.enabled = true;
return LCD;
})();
//# sourceMappingURL=LCD.js.map
//# sourceMappingURL=LCD.js.map

File diff suppressed because one or more lines are too long

View file

@ -1,11 +1,12 @@
/// <reference path="Byte.ts" />
var Bank = (function () {
function Bank(fill) {
if (fill === void 0) { fill = 0; }
if (typeof fill === "undefined") { fill = 0; }
this.data = [];
}
return Bank;
})();
var MemoryMap = (function () {
function MemoryMap(type, index) {
this.Set(type, index);
@ -16,17 +17,20 @@ var MemoryMap = (function () {
};
return MemoryMap;
})();
var Memory = (function () {
function Memory() {
}
Memory.Init = function () {
};
Memory.Get = function (location) {
return new Byte(0);
};
Memory.Set = function (location, value) {
};
Memory.romLock = true;
return Memory;
})();
//# sourceMappingURL=Memory.js.map
//# sourceMappingURL=Memory.js.map

View file

@ -1 +1 @@
{"version":3,"file":"Memory.js","sourceRoot":"","sources":["Memory.ts"],"names":["Bank","Bank.constructor","MemoryMap","MemoryMap.constructor","MemoryMap.Set","Memory","Memory.constructor","Memory.Init","Memory.Get","Memory.Set"],"mappings":"AAAA,gCAAgC;AAEhC,IAAM,IAAI;IAGNA,SAHEA,IAAIA,CAGaA,IAAgBA;QAAhBC,oBAAgBA,GAAhBA,QAAgBA;QAF5BA,SAAIA,GAAWA,EAAEA,CAACA;IAIzBA,CAACA;IACLD,WAACA;AAADA,CAACA,AAND,IAMC;AAED,IAAM,SAAS;IASXE,SATEA,SAASA,CASQA,IAAaA,EAAEA,KAAaA;QAC3CC,IAAIA,CAACA,GAAGA,CAACA,IAAIA,EAAEA,KAAKA,CAACA,CAACA;IAC1BA,CAACA;IAPMD,uBAAGA,GAAVA,UAAWA,IAAaA,EAAEA,KAAaA;QACnCE,IAAIA,CAACA,IAAIA,GAAGA,IAAIA,CAACA;QACjBA,IAAIA,CAACA,KAAKA,GAAGA,KAAKA,CAACA;IACvBA,CAACA;IAKLF,gBAACA;AAADA,CAACA,AAZD,IAYC;AAED,IAAM,MAAM;IAAZG,SAAMA,MAAMA;IAgBZC,CAACA;IAXUD,WAAIA,GAAXA;IAEAE,CAACA;IAEMF,UAAGA,GAAVA,UAAWA,QAAcA;QACrBG,MAAMA,CAACA,IAAIA,IAAIA,CAACA,CAACA,CAACA,CAACA;IACvBA,CAACA;IAEMH,UAAGA,GAAVA,UAAWA,QAAcA,EAAEA,KAAWA;IAEtCI,CAACA;IAZMJ,cAAOA,GAAYA,IAAIA,CAACA;IAanCA,aAACA;AAADA,CAACA,AAhBD,IAgBC"}
{"version":3,"file":"Memory.js","sourceRoot":"","sources":["Memory.ts"],"names":["Bank","Bank.constructor","MemoryMap","MemoryMap.constructor","MemoryMap.Set","Memory","Memory.constructor","Memory.Init","Memory.Get","Memory.Set"],"mappings":"AAAA,gCAAgC;AAEhC;IAGIA,cAAmBA,IAAgBA;QAAhBC,mCAAAA,IAAIA,GAAWA,CAACA;AAAAA,QAFnCA,KAAOA,IAAIA,GAAWA,EAAEA,CAACA;IAIzBA,CAACA;IACLD,YAACA;AAADA,CAACA,IAAA;;AAED;IASIE,mBAAmBA,IAAaA,EAAEA,KAAaA;QAC3CC,IAAIA,CAACA,GAAGA,CAACA,IAAIA,EAAEA,KAAKA,CAACA;IACzBA,CAACA;IAPDD,0BAAAA,UAAWA,IAAaA,EAAEA,KAAaA;QACnCE,IAAIA,CAACA,IAAIA,GAAGA,IAAIA;QAChBA,IAAIA,CAACA,KAAKA,GAAGA,KAAKA;IACtBA,CAACA;IAKLF,iBAACA;AAADA,CAACA,IAAA;;AAED;IAAAG;IAgBAC,CAACA;AAAAD,IAXGA,cAAAA;IAEAE,CAACA;;IAEDF,aAAAA,UAAWA,QAAcA;QACrBG,OAAOA,IAAIA,IAAIA,CAACA,CAACA,CAACA;IACtBA,CAACA;;IAEDH,aAAAA,UAAWA,QAAcA,EAAEA,KAAWA;IAEtCI,CAACA;IAZDJ,iBAA0BA,IAAIA;IAalCA,cAACA;AAADA,CAACA,IAAA"}

View file

@ -10,6 +10,7 @@ var Flags;
Flags[Flags["ZERO"] = 6] = "ZERO";
Flags[Flags["SIGN"] = 7] = "SIGN";
})(Flags || (Flags = {}));
var Registers = (function () {
function Registers() {
}
@ -18,30 +19,37 @@ var Registers = (function () {
Registers.byteRegisters["IXL"] = new Byte(0);
Registers.byteRegisters["IYH"] = new Byte(0);
Registers.byteRegisters["IYL"] = new Byte(0);
var tmp = "ABCDEFHLIR";
for (var i; i < tmp.length; i++)
Registers.byteRegisters[tmp[i]] = new Byte(0);
Registers.shadowRegisters["AF"] = new Word(0);
Registers.shadowRegisters["BC"] = new Word(0);
Registers.shadowRegisters["DE"] = new Word(0);
Registers.shadowRegisters["HL"] = new Word(0);
};
Registers.GenerateWord = function (high, low) {
return new Word(Registers.byteRegisters[high], Registers.byteRegisters[low]);
};
Registers.SetFlag = function (flag, value) {
if (flag != 3 /* UNUSED1 */ && flag != 5 /* UNUSED2 */)
Registers.byteRegisters["F"].Bit(flag, value);
};
Registers.GetFlag = function (flag) {
return Registers.byteRegisters["F"].Test(flag);
};
Registers.ExchangeAFShadow = function () {
var tmp = Registers.shadowRegisters["AF"];
Registers.shadowRegisters["AF"].Set(Registers.byteRegisters["A"], Registers.byteRegisters["F"]);
Registers.byteRegisters["A"] = tmp.High();
Registers.byteRegisters["F"] = tmp.Low();
};
Registers.ExchangeShadow = function () {
var regs = ["BC", "DE", "HL"];
for (var reg in regs) {
@ -51,6 +59,7 @@ var Registers = (function () {
Registers.byteRegisters[regs[reg][1]] = tmp.Low();
}
};
Registers.Exchange = function (a, b) {
};
Registers.byteRegisters = [];
@ -59,4 +68,4 @@ var Registers = (function () {
Registers.stackPointer = new Word(0);
return Registers;
})();
//# sourceMappingURL=Registers.js.map
//# sourceMappingURL=Registers.js.map

View file

@ -1 +1 @@
{"version":3,"file":"Registers.js","sourceRoot":"","sources":["Registers.ts"],"names":["Flags","Registers","Registers.constructor","Registers.Init","Registers.GenerateWord","Registers.SetFlag","Registers.GetFlag","Registers.ExchangeAFShadow","Registers.ExchangeShadow","Registers.Exchange"],"mappings":"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,CAACA,eAAeA,CAACA,IAAIA,CAACA,GAAGA,CAACA,CAACA,CAACA,GAAGA,CAACA,SAASA,CAACA,aAAaA,CAACA,IAAIA,CAACA,GAAGA,CAACA,CAACA,CAACA,CAACA,CAACA,EAAEA,SAASA,CAACA,aAAaA,CAACA,IAAIA,CAACA,GAAGA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;YACvHA,SAASA,CAACA,aAAaA,CAACA,IAAIA,CAACA,GAAGA,CAACA,CAACA,CAACA,CAACA,CAACA,GAAGA,GAAGA,CAACA,IAAIA,EAAEA,CAACA;YACnDA,SAASA,CAACA,aAAaA,CAACA,IAAIA,CAACA,GAAGA,CAACA,CAACA,CAACA,CAACA,CAACA,GAAGA,GAAGA,CAACA,GAAGA,EAAEA,CAACA;QACtDA,CAACA;IACLA,CAACA;IAEaP,kBAAQA,GAAtBA,UAAuBA,CAASA,EAAEA,CAASA;IAE3CQ,CAACA;IArDaR,uBAAaA,GAAWA,EAAEA,CAACA;IAC3BA,yBAAeA,GAAWA,EAAEA,CAACA;IAC7BA,wBAAcA,GAASA,IAAIA,IAAIA,CAACA,CAACA,CAACA,CAACA;IACnCA,sBAAYA,GAASA,IAAIA,IAAIA,CAACA,CAACA,CAACA,CAACA;IAmDnDA,gBAACA;AAADA,CAACA,AAvDD,IAuDC"}
{"version":3,"file":"Registers.js","sourceRoot":"","sources":["Registers.ts"],"names":["Flags","Registers","Registers.constructor","Registers.Init","Registers.GenerateWord","Registers.SetFlag","Registers.GetFlag","Registers.ExchangeAFShadow","Registers.ExchangeShadow","Registers.Exchange"],"mappings":"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"}

View file

@ -3,19 +3,25 @@
/// <reference path="Memory.ts" />
/// <reference path="Registers.ts" />
/// <reference path="ops/0x0.ts" />
var TI = (function () {
function TI() {
}
TI.PerformOperation = function (data) {
this.Opcodes[data[0].Get()](data);
};
TI.Init = function () {
LCD.Init();
var a = new Byte(0xF0);
var b = new Byte(10);
//a.Sub(b);
alert(a.Get());
//alert(a.Get());
a.ShiftLeft(true);
alert(a.Get());
//alert(a.Get());
};
TI.Opcodes = [];
return TI;
})();
//# sourceMappingURL=TI.js.map
//# sourceMappingURL=TI.js.map

View file

@ -1 +1 @@
{"version":3,"file":"TI.js","sourceRoot":"","sources":["TI.ts"],"names":["TI","TI.constructor","TI.Init"],"mappings":"AAAA,gCAAgC;AAChC,+BAA+B;AAC/B,kCAAkC;AAClC,qCAAqC;AACrC,mCAAmC;AAUnC,IAAM,EAAE;IAARA,SAAMA,EAAEA;IAYRC,CAACA;IATUD,OAAIA,GAAXA;QACIE,GAAGA,CAACA,IAAIA,EAAEA,CAACA;QACXA,IAAIA,CAACA,GAAGA,IAAIA,IAAIA,CAACA,IAAIA,CAACA,CAACA;QACvBA,IAAIA,CAACA,GAAGA,IAAIA,IAAIA,CAACA,EAAEA,CAACA,CAACA;QAErBA,AADAA,WAAWA;QACXA,KAAKA,CAACA,CAACA,CAACA,GAAGA,EAAEA,CAACA,CAACA;QACfA,CAACA,CAACA,SAASA,CAACA,IAAIA,CAACA,CAACA;QAClBA,KAAKA,CAACA,CAACA,CAACA,GAAGA,EAAEA,CAACA,CAACA;IACnBA,CAACA;IAVaF,UAAOA,GAAaA,EAAEA,CAACA;IAWzCA,SAACA;AAADA,CAACA,AAZD,IAYC"}
{"version":3,"file":"TI.js","sourceRoot":"","sources":["TI.ts"],"names":["TI","TI.constructor","TI.PerformOperation","TI.Init"],"mappings":"AAAA,gCAAgC;AAChC,+BAA+B;AAC/B,kCAAkC;AAClC,qCAAqC;AACrC,mCAAmC;;AAUnC;IAAAA;IAgBAC,CAACA;AAAAD,IAbGA,sBAAAA,UAAwBA,IAAYA;QAChCE,IAAIA,CAACA,OAAOA,CAACA,IAAIA,CAACA,CAACA,CAACA,CAACA,GAAGA,CAACA,CAACA,CAACA,CAACA,IAAIA,CAACA;IACrCA,CAACA;;IAEDF,UAAAA;QACIG,GAAGA,CAACA,IAAIA,CAACA,CAACA;QACVA,IAAIA,CAACA,GAAGA,IAAIA,IAAIA,CAACA,IAAIA,CAACA;QACtBA,IAAIA,CAACA,GAAGA,IAAIA,IAAIA,CAACA,EAAEA,CAACA;;QACpBA,WAAWA;QACXA,iBAAiBA;QACjBA,CAACA,CAACA,SAASA,CAACA,IAAIA,CAACA;QACjBA,iBAAiBA;IACrBA,CAACA;IAdDH,aAAkCA,EAAEA;IAexCA,UAACA;AAADA,CAACA,IAAA"}

View file

@ -15,14 +15,18 @@ interface opcode {
class TI {
public static Opcodes: opcode[] = [];
static PerformOperation(data: Byte[]) {
this.Opcodes[data[0].Get()](data);
}
static Init() {
LCD.Init();
var a = new Byte(0xF0);
var b = new Byte(10);
//a.Sub(b);
alert(a.Get());
//alert(a.Get());
a.ShiftLeft(true);
alert(a.Get());
//alert(a.Get());
}
}

View file

@ -6,19 +6,23 @@
TI.Opcodes[0x00] = function (args) {
return [1, 4];
};
TI.Opcodes[0x01] = function (args) {
Registers.byteRegisters["B"] = args[2];
Registers.byteRegisters["C"] = args[1];
return [3, 10];
};
TI.Opcodes[0x02] = function (args) {
Memory.Set(Registers.GenerateWord("B", "C"), Registers.byteRegisters["A"]);
return [1, 7];
};
TI.Opcodes[0x03] = function (args) {
// inc bc
return [1, 4];
};
TI.Opcodes[0x04] = function (args) {
var tmp = Registers.byteRegisters["B"];
var over = Registers.byteRegisters["B"].Add(1);
@ -29,34 +33,52 @@ TI.Opcodes[0x04] = function (args) {
Registers.SetFlag(7 /* SIGN */, Registers.byteRegisters["B"].Test(7));
return [1, 4];
};
TI.Opcodes[0x05] = function (args) {
// dec b
return [1, 4];
};
TI.Opcodes[0x06] = function (args) {
Registers.byteRegisters["B"] = args[1];
return [1, 7];
};
TI.Opcodes[0x07] = function (args) {
Registers.SetFlag(0 /* CARRY */, Registers.byteRegisters["A"].ShiftLeft(true));
Registers.SetFlag(1 /* ADDSUB */, false);
Registers.SetFlag(4 /* HALF */, false);
return [1, 4];
};
TI.Opcodes[0x08] = function (args) {
Registers.ExchangeAFShadow();
return [1, 4];
};
TI.Opcodes[0x09] = function (args) {
// add hl, bc
return [1, 11];
};
TI.Opcodes[0x0A] = function (args) {
Registers.byteRegisters["A"] = Memory.Get(Registers.GenerateWord("B", "C"));
return [1, 7];
};
TI.Opcodes[0x0B] = function (args) {
// dec b
// dec bc
return [1, 4];
};
//# sourceMappingURL=0x0.js.map
TI.Opcodes[0x0C] = function (args) {
var tmp = Registers.byteRegisters["C"];
var over = Registers.byteRegisters["C"].Add(1);
Registers.SetFlag(1 /* ADDSUB */, false);
Registers.SetFlag(6 /* ZERO */, over.Get() != 0);
Registers.SetFlag(2 /* PARITY */, tmp.Test(7) == false && Registers.byteRegisters["C"].Test(7) == true);
Registers.SetFlag(4 /* HALF */, (tmp.Get() & 0x0F) == 0x0F);
Registers.SetFlag(7 /* SIGN */, Registers.byteRegisters["C"].Test(7));
return [1, 4];
};
//# sourceMappingURL=0x0.js.map

View file

@ -1 +1 @@
{"version":3,"file":"0x0.js","sourceRoot":"","sources":["0x0.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"0x0.js","sourceRoot":"","sources":["0x0.ts"],"names":[],"mappings":"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"}

View file

@ -68,6 +68,17 @@ TI.Opcodes[0x0A] = function(args: Byte[]): number[] {
};
TI.Opcodes[0x0B] = function(args: Byte[]): number[] {
// dec b
// dec bc
return [1, 4];
};
TI.Opcodes[0x0C] = function(args: Byte[]): number[] {
var tmp = Registers.byteRegisters["C"];
var over = Registers.byteRegisters["C"].Add(1);
Registers.SetFlag(Flags.ADDSUB, false);
Registers.SetFlag(Flags.ZERO, over.Get() != 0);
Registers.SetFlag(Flags.PARITY, tmp.Test(7) == false && Registers.byteRegisters["C"].Test(7) == true);
Registers.SetFlag(Flags.HALF, (tmp.Get() & 0x0F) == 0x0F);
Registers.SetFlag(Flags.SIGN, Registers.byteRegisters["C"].Test(7))
return [1, 4];
};

6
js/ops/0x1.js Normal file
View file

@ -0,0 +1,6 @@
/// <reference path="../Byte.ts" />
/// <reference path="../LCD.ts" />
/// <reference path="../Memory.ts" />
/// <reference path="../Registers.ts" />
/// <reference path="../TI.ts" />
//# sourceMappingURL=0x1.js.map

1
js/ops/0x1.js.map Normal file
View file

@ -0,0 +1 @@
{"version":3,"file":"0x1.js","sourceRoot":"","sources":["0x1.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,kCAAkC;AAClC,qCAAqC;AACrC,wCAAwC;AACxC,iCAAiC"}

5
js/ops/0x1.ts Normal file
View file

@ -0,0 +1,5 @@
/// <reference path="../Byte.ts" />
/// <reference path="../LCD.ts" />
/// <reference path="../Memory.ts" />
/// <reference path="../Registers.ts" />
/// <reference path="../TI.ts" />