can do without DMux4Way and Mux4Way16
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
Reference in New Issue
Block a user