Thanks to Eric and Will, here is a 'general purpose calculator' program, squeezed into the one hundred available memory locations of the LMC.

The program can perform

**Square root**,

**DIV**,

**addition**,

**square numbers**,

**Integer powers**and

**multiplication**.

In order to use the calculator the two operands are entered into the keypad first, and then lastly the operation is entered by selecting the corresponding operation code (listed in the comments).

For example, in order to perform the operation 13 DIV 2,

firstly enter 13 then 2, then 0 to select DIV.

You can download the source code from these pages, or find it listed below.

```
```

`#Will`

```
```

#Modified by Eric
Rodriguez for more than just add and divide

#A general purpose
calculator which works with the limitations of the little man computer

#

#KEY:

#1 or above for SUBTRACT

#0 for DIVIDE

#-1 for ADDITION

#-2 for SQUARE

#-3 for POW

#-4 for SQRT

#5 or below for MULT

#Input 1 is the first
number

#Input 2 is the second

#Input 3 is the selection

INP #Enter the first
number, this is the number that all the functions will be done to

STA A

INP #With square and
power, due to limitations of little man computer size, does nothing but is the
operating number

STA B

INP

BRZ DIVIDE #case 0

BRP SUBTRACT #case 1+

ADD ONE

BRZ ADDITION #case -1

ADD ONE

BRZ SQUARE #case -2

ADD ONE

BRZ POW #case -3

ADD ONE

BRZ SQRT #case -4

#else fall through to mult

MULT LDA B #Multiply
Function

SUB ONE

STA B

LOOP LDA C

ADD A

STA C

LDA B

SUB ONE

STA B

BRP LOOP

LDA C

BRA MULTOUT

DIVIDE LDA A #Divide
function

STA A

LOOPD LDA COUNT

ADD ONE

STA COUNT

LDA A

SUB B

STA A

BRZ ZEROD

BRP LOOPD

LDA COUNT

SUB ONE

STA COUNT

ZEROD LDA COUNT

BRA OUTPUT

ADDITION LDA A #Addition
Function

ADD B

BRA OUTPUT

SUBTRACT LDA A #Subtract
Function

SUB B

BRA OUTPUT

SQRT LDA A #Square root
function

STA A

LOOPS LDA COUNT #SQRT loop

ADD ONE

STA COUNT

LDA A

SUB X

STA A

LDA X

ADD TWO

STA X

LDA A

BRP LOOPS

LDA COUNT

SUB ONE

BRA OUTPUT

SQUARE LDA A #Square
function (set A = B and let multiply do the rest)

STA B

BRA MULT

POW LDA POWOUT

STA MULTOUT

LDA B

SUB TWO

STA POWC

LDA A

STA B

STA POWNUM

BRA MULT

MULTRTN STA A

LDA ZERO

STA C

LDA POWNUM

STA B

LDA POWC

SUB ONE

STA POWC

BRP MULT

LDA A

OUTPUT OUT

HLT

MULTOUT DAT 684 #default
out - to OUTPUT

POWOUT DAT 674 #power out
- to MULTRTN

A DAT

B DAT

C DAT

POWC DAT

COUNT DAT

X DAT 001

ONE DAT 001

TWO DAT 002

POWNUM DAT

ZERO DAT 000
_{}^{}