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