**What is the Simple As Possible (SAP)-1 computer?**
The SAP-1 computer is *a bus-organized computer that uses of the von Neumann architecture.*
> **What does the Simple As Possible (SAP)-1 computer make use of?**
> The SAP-1 computer makes use of *an 8-bit central bus and ten main components.*
>
> **What is a diagram of the Simple As Possible (SAP)-1 computer?**
> A diagram of the SAP-1 computer is:
> 
# SAP-1 Components
**What are the ten components of the Simple As Possible (SAP)-1 computer?**
The ten components of the SAP-1 computer are:
1. Program Counter.
2. Input and Memory Address Register (MAR).
3. Random-Access Memory (RAM).
4. Instruction Register.
5. Controller-Sequencer.
6. Accumulator.
7. Adder-Subtractor.
8. B-Register.
9. Output Register.
10. Binary Display.
**What does the Program Counter (PC) do?**
The PC *stores and sends out the memory address of the next instruction to be fetched and executed.*
**What does the Memory Address Register (MAR) do?**
The MAR *stores the 4-bit address of data or an instruction which is placed in memory.*
> **Where does the Memory Address Register (MAR) get the 4-bit address of data or an instruction when the Simple As Possible (SAP)-1 computer is running?**
> When the SAP-1 computer is running, the MAR gets the 4-bit address of data or an instruction *from the Program Counter through the W-bus.*
>
> **Where is the 4-bit address stored in the Memory Address Register (MAR) sent?**
> The 4-bit address stored in the MAR is sent *to the RAM.*
**How many memory locations does the Random Access Memory (RAM) of the Simple As Possible (SAP)-1 computer have?**
The RAM of the SAP-1 computer has *16 memory locations.*
> **How many bytes is each memory location in the Random Access Memory (RAM) of the Simple As Possible (SAP)-1 computer have?**
> Each memory location in the RAM of the SAP-1 computer has *8 bytes.*
>
> ...
**What does the Instruction Register of the Simple As Possible (SAP)-1 computer do?**
The Instruction Register of the SAP-1 computer *receives and stores the instruction placed on the bus from the RAM.*
> **What happens to the content of the Instruction Register?**
> The content of the Instruction Register *splits into two nibbles called the upper and lower nibble.*
> > **What is the upper nibble and where does it go?**
> > The upper nibble is *a two-state output that goes into the Controller-Sequencer.*
> >
> > **What is the lower nibble and where does it go?**
> > The lower nibble is *a three-state output that is read from the bus when needed.*
**What does the Controller-Sequencer do in the Simple As Possible (SAP)-1 computer?**
In the SAP-1 computer, the Controller-Sequencer *sends out signals that control the computer and makes sure things happen only when they're supposed to.*
> **What is the 12-bit output signal of the Controller-Sequencer called?**
> The 12-bit output signal of the Controller-Sequencer is called *the control word.*
>
>> **What does the control word determine?**
>> The control word determines *how the registers will react to the next positive clock edge.*
>>
> > **What is the format of the control word?**
> > The format of the control word is *`CON = Cp Ep ~Lm ~CE ~Li ~Ei ~La Eu Su Eu ~Lb ~Lo`.*
**What is the Accumulator in the Simple As Possible (SAP)-1 computer?**
In the SAP-1 computer, the Accumulator is *an 8-bit buffer register that stores intermediate answers during a computer run.*
> **What are the two outputs of the Accumulator in the Simple As Possible (SAP)-1 computer?**
> The two outputs of the Accumulator in the SAP-1 computer are:
> 1. The two-state output.
> 2. The three-state output.
>
> > **Where does the two-state output of the Accumulator go?**
> > The two-state output of the Accumulator goes *to the Adder-Subtractor.*
> >
> > **Where does the three-state output of the Accumulator go?**
> > The three-state output of the Accumulator goes *to the bus.*
**What does the Adder-Subtractor do in the Simple As Possible (SAP)-1 computer?**
In the SAP-1 computer, the Adder-Subtractor *asynchronously adds to or subtracts a value from the Accumulator depending on the value of `Su`.*
> **What does the Adder-Subtractor make use of in order to perform addition or subtraction?**
> In order to perform addition or subtraction, the Adder-Subtractor makes use of *Two's Complement.*
>
> **What does the Adder-Subtractor do when `Su` is low?**
> When `Su` is low, the Adder-Subtractor *adds the values in the Accumulator and the B-Register.*
>
> **What does the Adder-Subtractor do when `Su` is high?**
> When `Su` is high, the Adder-Subtractor *subtracts the values in the Accumulator and the B-Register.*
**What does the B-Register in the Simple As Possible (SAP)-1 computer do?**
The B-Register in the SAP-1 computer *supplies the number to be added or subtracted from the contents of the Accumulator and the Adder-Subtractor.*
> **When does the B-Register retrieve and store data?**
> The B-Register retrieves and stores data *when its available at the bus while `Lb` is low at the positive clock edge.*
**What does the Output Register of the Simple As Possible (SAP)-1 computer do?**
The Output Register of the SAP-1 computer *retrieves and stores the value stored in the Accumulator, typically after an arithmetic operation is performed.*
> **Through what is the answer stored in the Accumulator loaded into the Output Register and when?**
> The answer stored in the Accumulator is loaded into the Output Register through *the W-bus during the next positive clock edge when `Ea` is high and `Lo` is low.*
**What does the Binary Display of the Simple As Possible (SAP)-1 computer do?**
The Binary Display of the SAP-1 computer *displays the contents of the Output Register.*
# SAP-1 Instruction Set
**What is the instruction set of a computer?**
The instruction set of a computer is *the basic operations it can perform.*
**What is the instruction set of the Simple As Possible (SAP)-1 computer?**
The instruction set of the SAP-1 computer is:
* Load - Load data from memory to the Accumulator.
* Add - Add data from memory to the value in the Accumulator.
* Subtract - Subtract data from memory from the value in the Accumulator.
* Output - Load data from the Accumulator to the Output Register.
* Halt - Stop processing.
...