Sorry, but this app needs Javascript to run :/

How this App works

Hello. In order for you to understand what this App does, I want to show you some basics of this app.

Control Buttons

At the top of the application you can see a row of control buttons:

Blocks

This computer is made up by multiple blocks like any other neumann-maschiene. Every block has it's own unique set of functions. A normal computer is much more complex than this, but the principle is the same.

RAM

The current programm is stored in the RAM. Every entry is seperated as mentioned in entry.

Control Unit

As the name suggests, the control unit manages everything that is done. To know what needs to be done it has a list of µCodes that gets executed when a instruction is requested.

These µCodes can be found in the table. Every instruction consists of up to 10 µCodes.
When a entry is executed, the first three digits (the instruction) gets multiplied by 10. This now is written into the µCounter and the µCodes for it get's executed.

Example:
When the entry 001 00000 gets executed, the µCounter would be set to 0010. Now every µCode starting at location 0010 in the µCodes gets executed.

ALU

The Arithmetic Logic Unit is pretty simple in this case.

The ALU can only increment or decrement the accumulator. But it can read numbers from databus.

Databus

Via the Databus values and entrys can be transported between RAM, Control Unit and ALU.

Addressbus

With the addressbus the Control Unit can control which value is selected in RAM. On a normal computer there are a lot mor things attached to this bus.

Entry

Each entry consits of a instruction and an argument. That's why the entrys in RAM and in µCodes are displayed seperatly.

          
            0 0 0   0 0 0 0 0
            Instr   Argument
          
        

µCodes

Every instruction consists of a list of µCodes. Here is an explanaition for all of them:

µCode Description
ProgCounter -> AddrBus Load the value from programm counter to addressbus
InstrReg -> ProgCounter Load the argument from instruction register to programm counter
ProgCounter ++ Increment programm counter by 1
Acc == 0 => InstReg -> ProgCounter If the accumulator is 0 then write the argument from instruction register to programm counter
Ram -> DataBus Load selected value from RAM to databus
DataBus -> Ram Write value from databus to selected value in RAM
DataBus -> InstReg Write entry from databus to instruction register
DataBus -> Acc Write value from databus to accumulator
Acc -> DataBus Load value from accumulator to databus
Acc ++ Increment accumulator by 1
Acc -- Decrement accumulator by 1
InstReg -> µCounter Take the instruction from instruction register, add a 0 at the tail and write it to µCounter
InstReg -> AddrBus Write the argument from instruction register to addressbus
µCounter = 0 Set µCounter to 0

Source

At the moment the code for this project isn't good enough to share it online.

This project is my take on Johnny-Simulator.