32 lines
796 B
JavaScript
32 lines
796 B
JavaScript
/** Blinkenlights on outx register */
|
|
export class BlinkenLights {
|
|
/** Create a new BlinkenLights
|
|
* @param {Gigatron} cpu
|
|
*/
|
|
constructor(cpu) {
|
|
this.cpu = cpu;
|
|
this.outx = cpu.outx & 0x0f;
|
|
this.timer = null;
|
|
|
|
for (let i = 0; i < 4; i++) {
|
|
$(`.led-${i}`).addClass(
|
|
`led-${(this.outx & (1<<i)) ? 'on' : 'off'}`);
|
|
}
|
|
}
|
|
|
|
/** advance simulation by one tick */
|
|
tick() {
|
|
let outx = this.cpu.outx & 0x0f;
|
|
let changed = this.outx ^ outx;
|
|
|
|
if (changed) {
|
|
for (let i = 0; i < 4; i++) {
|
|
if (changed & (1 << i)) {
|
|
$(`.led-${i}`).toggleClass('led-on led-off');
|
|
}
|
|
}
|
|
this.outx = outx;
|
|
}
|
|
}
|
|
}
|