How do you use the ROM? I am using the Demo version. I have seen the 7bit display but it is not clear enough.
A ROM is a combinational component (i.e. it has no clock input). Whenever addr changes the output is updated with the data at the specified address.
If you are referring to level 2.03, you have a 4-bit input and an 7-bit output (the 7-segment display; the dp input can be hardwired to a 0 constant input port). So you need 16 7-bit numbers to cover all the input numbers. Create a 7-bit by 16 words ROM, right click on it and select Edit values. At each byte (since the "words" are 7-bit long, 1 word = 1 byte) write the value it is expected by the 7-segment display to show the correct digit for the corresponding number. E.g. if the input number is 0, the ROM address would be 0, meaning the first byte. So at the first byte you should write 3F (or 0111111b where each bit is connected to a specific segment of the display). Take a look at the truth table to figure out the correct values.
Hope it clears things up a bit. If you need more details please ask again :)
sorry, but do you type numbers which, on the right, match the letters in the output? the 7x16 does not have enough space...
or do you take the output and type that? although I do not know what to do with the h. this seemed to me the wrong way because on the right it was just either periods or random letters.
> sorry, but do you type numbers which, on the right, match the letters in the output? the 7x16 does not have enough space...
No! You just write the the output values to each byte of the ROM. The first ROM byte should read 3F. The 2nd 06, the 3rd 5B, etc. Ignore the ASCII view (right part of the ROM editor). The ASCII view just shows the corresponding ASCII character for the byte value you have typed. But in this case this is irrelevant.
> although I do not know what to do with the h.
The 'h' next to every output value is used for showing that the value is in hexadecimal format. It's not part of the number.
I suggest you try creating some constant input ports or switches from the I/O dialog and connect them to the various inputs of the 7-segment display. Change their values and try to make the 7-segment display show the expected numbers (0, 1, 2...). Then take the bits of those inputs in turn and build 7-bit numbers. Those numbers in hexadecimal should match the expected output.
E.g. In order to show 0 on the 7-segment display, all segments should be turned on except from the middle one. Create 7 1-bit constant input ports and connect each one to A, B, C, etc. Try to make all the segments lit up except from the middle one, by manually changing each port's values. You'll get the following:
A=1, B=1, C=1, D=1, E=1, F=1, G=0.
So, the output of the ROM for address 0 (i.e. the number you want to show on the display), should be 011111 in binary, or 3F in hex.
Hope it's more clear now.
Thanks so much!
I'm thinking of buying the game, but Itch.io doesn't accept steam money :C
also have you though of different-bit inputs? I remember there was a level where you had to compare 2 4bit inputs with a 1bit input.
I thought I had to split the wires to add them together. for example, an and gate has 1 imput require 4 bit and the other 1 bit, so it compares the 1 bit with the other bits. as if the 1 bit wire was 4 bits of 1's or 0's.