# Big Man Computer

There are one thousand memory cells in each bank, each storing a decimal number from 0000 to 9999. The accumulator also stores number from 0000 to 9999 and also has a negative flag and zero flag and carry flag.

Instructions:

• 0xxx: Halt. The xxx is irrelevant.
• 1xxx: Add value from memory cell xxx to accumulator. Zero and negative and carry flags set according to result.
• 2xxx: Subtract value from memory cell xxx from accumulator. Zero and negative and carry flags set according to result.
• 3xxx: Store value of accumulator in memory cell xxx.
• 4xxx: Branch to xxx if carry flag is clear.
• 5xxx: Load value in memory cell xxx into accumulator. Zero flag set according to result.
• 6xxx: Unconditional branch to xxx.
• 7xxx: Branch to xxx if zero flag is set.
• 8xxx: Branch to xxx if negative flag is clear.
• 9xx0: Swap low three digits of accumulator with program counter, and swap data in bank xx with the data in the current program bank. Flags are not affected.
• 9xx1: Read input from port xx into accumulator. Zero flag set according to result.
• 9xx2: Output value of accumulator to port xx.
• 9xx3: Select program bank xx. Program counter remains unchanged.
• 9xx4: Select data bank xx.
• 9xx5: Swap memory of bank xx with the memory of the current data bank.
• 9xy6: Swap program bank selection with data bank selection if either digit x or y is in the accumulator.
• 9xx7: Multiply accumulator by ten and add xx. Flags are not affected.
• 9xx8: Divide accumulator by one hundred and shift in xx. Zero flag is set according to shifted out digits.
• 9xy9: If x is zero, set carry flag. If y is zero, complement carry flag. If x is one, set zero flag. If y is one, complement zero flag. If x is four, set negative flag. If y is four, complement negative flag.