can do without DMux4Way and Mux4Way16

This commit is contained in:
2021-12-24 00:47:21 +05:30
parent 0be22ea1ea
commit 845ed74aeb
2 changed files with 11 additions and 16 deletions

View File

@@ -35,19 +35,15 @@ CHIP Memory {
// 10 11111 1111 1111 <- Last SCREEN Register
// 11 00000 0000 0000 <- One Keyboard Register
DMux4Way(in=load, sel=address[13..14], a=toRAM1,
b=toRAM2,
c=toScreen,
d=notNeeded);
// Keyboard doesn't require load bit
DMux(in=load, sel=address[14], a=toRAM, b=toSCR);
Or(a=toRAM1, b=toRAM2, out=toRAM);
// 14 bit address for RAM (16384 registers)
// 13 bit address for SCR (8192 registers)
RAM16K(in=in, load=toRAM, address=address[0..13], out=fromRAM);
Screen(in=in, load=toScreen, address=address[0..12], out=fromScreen);
Keyboard(out=fromKeyboard);
Mux4Way16(sel=address[13..14], out=out, a=fromRAM,
b=fromRAM,
c=fromScreen,
d=fromKeyboard);
Screen(in=in, load=toSCR, address=address[0..12], out=fromSCR);
Keyboard(out=fromKBD);
Mux16(a=fromSCR, b=fromKBD, sel=address[13], out=fromDEV);
Mux16(a=fromRAM, b=fromDEV, sel=address[14], out=out);
}