diff --git a/basilio.webm b/basilio.webm
new file mode 100644
index 0000000..1c0371d
Binary files /dev/null and b/basilio.webm differ
diff --git a/js/Byte.js b/js/Byte.js
index 8a91f50..0af1c38 100644
--- a/js/Byte.js
+++ b/js/Byte.js
@@ -1,32 +1,72 @@
var Byte = (function () {
function Byte(init) {
- if (typeof init === "undefined") { init = 0; }
- this.value = init & 0xFF;
+ if (init === void 0) { init = 0; }
+ this.value = init & 0xFF | (init < 0 ? 0x80 : 0);
}
Byte.prototype.Add = function (val) {
- var ret = new Byte(((this.value + val.Get()) & ~0xFF) >> 8);
- this.value = (this.value + val.Get()) & 0xFF;
- alert(this.value + val.Get());
- return ret;
+ val = typeof val == "number" ? new Byte(val) : val;
+ var hold = this.value + val.Get();
+ this.value = hold & 0xFF;
+ return new Byte(hold > 255 ? hold - 255 : 0);
};
-
Byte.prototype.Sub = function (val) {
- return this.Add(new Byte(-val.Get()));
+ 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 = val & 0xFF;
+ this.value = typeof val == "number" ? val & 0xFF : val.Get();
+ };
+ Byte.prototype.Neg = function (bind) {
+ if (bind === void 0) { 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.ShiftLeft = function (carry, value) {
+ if (carry === void 0) { carry = false; }
+ if (value === void 0) { 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; }
+ var ret = (this.value & 0x80) != 0;
+ this.Set(this.value >>> 1);
+ this.Bit(7, carry ? ret : value);
+ return ret;
};
return Byte;
})();
-
var Word = (function () {
- function Word() {
+ function Word(init) {
+ if (init === void 0) { init = 0; }
+ this.value = [new Byte((init & ~0xFF) >> 8), new Byte(init & 0xFF)];
}
return Word;
})();
-//# sourceMappingURL=Byte.js.map
+//# sourceMappingURL=Byte.js.map
\ No newline at end of file
diff --git a/js/Byte.js.map b/js/Byte.js.map
index 4836c46..f625dae 100644
--- a/js/Byte.js.map
+++ b/js/Byte.js.map
@@ -1 +1 @@
-{"version":3,"file":"Byte.js","sourceRoot":"","sources":["Byte.ts"],"names":["Byte","Byte.constructor","Byte.Add","Byte.Sub","Byte.Get","Byte.Set","Word","Word.constructor"],"mappings":"AAAA;IAGIA,cAAmBA,IAAgBA;QAAhBC,mCAAAA,IAAIA,GAAWA,CAACA;AAAAA,QAC/BA,IAAIA,CAACA,KAAKA,GAAGA,IAAIA,GAAGA,IAAIA;IAC5BA,CAACA;IAEDD,qBAAAA,UAAWA,GAASA;QAChBE,IAAIA,GAAGA,GAAGA,IAAIA,IAAIA,CAACA,CAACA,CAACA,IAAIA,CAACA,KAAKA,GAAGA,GAAGA,CAACA,GAAGA,CAACA,CAACA,CAACA,GAAGA,CAACA,IAAIA,CAACA,IAAIA,CAACA,CAACA;QAC3DA,IAAIA,CAACA,KAAKA,GAAGA,CAACA,IAAIA,CAACA,KAAKA,GAAGA,GAAGA,CAACA,GAAGA,CAACA,CAACA,CAACA,GAAGA,IAAIA;QAC5CA,KAAKA,CAACA,IAAIA,CAACA,KAAKA,GAAGA,GAAGA,CAACA,GAAGA,CAACA,CAACA,CAACA;QAC7BA,OAAOA,GAAGA;IACdA,CAACA;;IAEDF,qBAAAA,UAAWA,GAASA;QAChBG,OAAOA,IAAIA,CAACA,GAAGA,CAACA,IAAIA,IAAIA,CAACA,CAACA,GAAGA,CAACA,GAAGA,CAACA,CAACA,CAACA,CAACA;IACzCA,CAACA;;IAEDH,qBAAAA;QACII,OAAOA,IAAIA,CAACA,KAAKA;IACrBA,CAACA;;IAEDJ,qBAAAA,UAAWA,GAAWA;QAClBK,IAAIA,CAACA,KAAKA,GAAGA,GAAGA,GAAGA,IAAIA;IAC3BA,CAACA;IACLL,YAACA;AAADA,CAACA,IAAA;;AAED;IAAAM;IAIAC,CAACA;AAAAD,IAADA,YAACA;AAADA,CAACA,IAAA"}
\ No newline at end of file
+{"version":3,"file":"Byte.js","sourceRoot":"","sources":["Byte.ts"],"names":["Byte","Byte.constructor","Byte.Add","Byte.Sub","Byte.Get","Byte.Set","Byte.Neg","Byte.And","Byte.Or","Byte.Xor","Byte.Not","Byte.Bit","Byte.ShiftLeft","Byte.ShiftRight","Word","Word.constructor"],"mappings":"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"}
\ No newline at end of file
diff --git a/js/Byte.ts b/js/Byte.ts
index bdf2bdd..8ecea4c 100644
--- a/js/Byte.ts
+++ b/js/Byte.ts
@@ -2,26 +2,83 @@ class Byte {
private value: number;
public constructor(init: number = 0) {
- this.value = init & 0xFF;
+ this.value = init & 0xFF | (init < 0 ? 0x80 : 0);
}
- public Add(val: Byte): Byte {
- var ret = new Byte(((this.value + val.Get()) & ~0xFF) >> 8);
- this.value = (this.value + val.Get()) & 0xFF;
- alert(this.value + val.Get());
- return ret;
+ public Add(val: Byte): Byte;
+ public Add(val: number): Byte;
+ public Add(val: any): Byte {
+ val = typeof val == "number" ? new Byte(val) : val;
+ var hold = this.value + val.Get();
+ this.value = hold & 0xFF;
+ return new Byte(hold > 255 ? hold - 255 : 0);
}
- public Sub(val: Byte): Byte {
- return this.Add(new Byte(-val.Get()));
+ public Sub(val: Byte): Byte;
+ public Sub(val: number): Byte;
+ public Sub(val: any): Byte {
+ val = typeof val == "number" ? new Byte(val) : val;
+ return this.Add(val.Neg());
}
public Get(): number {
return this.value;
}
- public Set(val: number) {
- this.value = val & 0xFF;
+ public Set(val: Byte);
+ public Set(val: number);
+ public Set(val: any) {
+ this.value = typeof val == "number" ? val & 0xFF : val.Get();
+ }
+
+ public Neg(bind: boolean = false) {
+ var tmp = new Byte(~this.value + 1);
+ this.value = bind ? tmp.Get() : this.value;
+ return tmp;
+ }
+
+ public And(val: Byte);
+ public And(val: number);
+ public And(val: any) {
+ val = typeof val == "number" ? new Byte(val) : val;
+ this.value = this.value & val.Get();
+ }
+
+ public Or(val: Byte);
+ public Or(val: number);
+ public Or(val: any) {
+ val = typeof val == "number" ? new Byte(val) : val;
+ this.value = this.value | val.Get();
+ }
+
+ public Xor(val: Byte);
+ public Xor(val: number);
+ public Xor(val: any) {
+ val = typeof val == "number" ? new Byte(val) : val;
+ this.value = this.value ^ val.Get();
+ }
+
+ public Not() {
+ this.value = ~this.value;
+ }
+
+ public Bit(pos: number, val: boolean) {
+ pos = pos % 8;
+ this.Set(val ? (this.value | Math.pow(2, pos)) : (this.value & ~Math.pow(2, pos)));
+ }
+
+ public ShiftLeft(carry: boolean = false, value: boolean = false): boolean {
+ var ret = (this.value & 0x80) != 0;
+ this.Set(this.value << 1);
+ this.Bit(0, carry ? ret : value);
+ return ret;
+ }
+
+ public ShiftRight(carry: boolean = false, value: boolean = false): boolean {
+ var ret = (this.value & 0x80) != 0;
+ this.Set(this.value >>> 1);
+ this.Bit(7, carry ? ret : value);
+ return ret;
}
}
@@ -29,4 +86,7 @@ class Word {
private value: Byte[];
+ public constructor(init: number = 0) {
+ this.value = [new Byte((init & ~0xFF) >> 8), new Byte(init & 0xFF)];
+ }
}
\ No newline at end of file
diff --git a/js/Memory.js b/js/Memory.js
new file mode 100644
index 0000000..2e96e00
--- /dev/null
+++ b/js/Memory.js
@@ -0,0 +1,26 @@
+///
+var Bank = (function () {
+ function Bank(fill) {
+ if (fill === void 0) { fill = 0; }
+ }
+ return Bank;
+})();
+var MemoryMap = (function () {
+ function MemoryMap(type, index) {
+ this.Set(type, index);
+ }
+ MemoryMap.prototype.Set = function (type, index) {
+ this.type = type;
+ this.index = index;
+ };
+ return MemoryMap;
+})();
+var Memory = (function () {
+ function Memory() {
+ }
+ Memory.Init = function () {
+ };
+ Memory.romLock = true;
+ return Memory;
+})();
+//# sourceMappingURL=Memory.js.map
\ No newline at end of file
diff --git a/js/Memory.js.map b/js/Memory.js.map
new file mode 100644
index 0000000..4cddaf8
--- /dev/null
+++ b/js/Memory.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"Memory.js","sourceRoot":"","sources":["Memory.ts"],"names":["Bank","Bank.constructor","MemoryMap","MemoryMap.constructor","MemoryMap.Set","Memory","Memory.constructor","Memory.Init"],"mappings":"AAAA,gCAAgC;AAEhC,IAAM,IAAI;IAGNA,SAHEA,IAAIA,CAGaA,IAAgBA;QAAhBC,oBAAgBA,GAAhBA,QAAgBA;IAEnCA,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;IAQZC,CAACA;IAHUD,WAAIA,GAAXA;IAEAE,CAACA;IAJMF,cAAOA,GAAYA,IAAIA,CAACA;IAKnCA,aAACA;AAADA,CAACA,AARD,IAQC"}
\ No newline at end of file
diff --git a/js/Memory.ts b/js/Memory.ts
new file mode 100644
index 0000000..0100262
--- /dev/null
+++ b/js/Memory.ts
@@ -0,0 +1,33 @@
+///
+
+class Bank {
+ public data: Byte[];
+
+ public constructor(fill: number = 0) {
+
+ }
+}
+
+class MemoryMap {
+ public type: boolean; // false - ROM ; true - RAM
+ public index: number; // page index
+
+ public Set(type: boolean, index: number) {
+ this.type = type;
+ this.index = index;
+ }
+
+ public constructor(type: boolean, index: number) {
+ this.Set(type, index);
+ }
+}
+
+class Memory {
+ static rom: Bank[];
+ static ram: Bank[];
+ static romLock: boolean = true;
+
+ static Init() {
+
+ }
+}
\ No newline at end of file
diff --git a/js/TI.js b/js/TI.js
index 387392a..2fa7d38 100644
--- a/js/TI.js
+++ b/js/TI.js
@@ -3,10 +3,12 @@ var TI = (function () {
function TI() {
}
TI.Init = function () {
- var a = new Byte(40);
+ var a = new Byte(10);
var b = new Byte(40);
- alert(a.Get());
+ //a.Add(b);
+ //a.Sub(b);
+ alert(a.Neg().Get());
};
return TI;
})();
-//# sourceMappingURL=TI.js.map
+//# sourceMappingURL=TI.js.map
\ No newline at end of file
diff --git a/js/TI.js.map b/js/TI.js.map
index 6d9cc67..01a7ff3 100644
--- a/js/TI.js.map
+++ b/js/TI.js.map
@@ -1 +1 @@
-{"version":3,"file":"TI.js","sourceRoot":"","sources":["TI.ts"],"names":["TI","TI.constructor","TI.Init"],"mappings":"AAAA,gCAAgC;AAEhC;IAAAA;IAYAC,CAACA;AAAAD,IALGA,UAAAA;QACIE,IAAIA,CAACA,GAAGA,IAAIA,IAAIA,CAACA,EAAEA,CAACA;QACpBA,IAAIA,CAACA,GAAGA,IAAIA,IAAIA,CAACA,EAAEA,CAACA;QACpBA,KAAKA,CAACA,CAACA,CAACA,GAAGA,CAACA,CAACA,CAACA;IAClBA,CAACA;IACLF,UAACA;AAADA,CAACA,IAAA"}
\ No newline at end of file
+{"version":3,"file":"TI.js","sourceRoot":"","sources":["TI.ts"],"names":["TI","TI.constructor","TI.Init"],"mappings":"AAAA,gCAAgC;AAEhC,IAAM,EAAE;IAARA,SAAMA,EAAEA;IAWRC,CAACA;IAPUD,OAAIA,GAAXA;QACIE,IAAIA,CAACA,GAAGA,IAAIA,IAAIA,CAACA,EAAEA,CAACA,CAACA;QACrBA,IAAIA,CAACA,GAAGA,IAAIA,IAAIA,CAACA,EAAEA,CAACA,CAACA;QAGrBA,AAFAA,WAAWA;QACXA,WAAWA;QACXA,KAAKA,CAACA,CAACA,CAACA,GAAGA,EAAEA,CAACA,GAAGA,EAAEA,CAACA,CAACA;IACzBA,CAACA;IACLF,SAACA;AAADA,CAACA,AAXD,IAWC"}
\ No newline at end of file
diff --git a/js/TI.ts b/js/TI.ts
index 1705e2d..e7971fd 100644
--- a/js/TI.ts
+++ b/js/TI.ts
@@ -1,15 +1,14 @@
///
class TI {
- static rom: Byte[][];
- static ram: Byte[][];
- static mmap: any[];
static registers: any[];
static Init() {
- var a = new Byte(40);
+ var a = new Byte(10);
var b = new Byte(40);
- alert(a.Get());
+ //a.Add(b);
+ //a.Sub(b);
+ alert(a.Neg().Get());
}
}
\ No newline at end of file