

;  Example BASIC source file to demonstrate !Whizz. All supported commands
;  are included here along with some notes on there use. Please read through
;  this file before using !Whizz on your own code. To look up a command do
;  a search for *<command>*.
;  =========================================================================
;  *PRINT* command (print to screen, see PRINT# for file printing). Nice and
;  easy one to start with. Print is partially supported in that no TABs or
;  semi-colons can be used in a PRINT statement. Strings can be concatenated
;  using a '+'.
STMFD   R13!,{1-11,14}
MOV     R0,#0
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
;  A simple string
STMFD   R13!,{1-11,14}
MOV     R0,#16
ADD     R0,R11,R0
MOV     R1,#32
ADD     R1,R11,R1
MOV     R2,#40
ADD     R2,R11,R2
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#4
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R2
MOV     R2,#8
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
;  Some joined strings
STMFD   R13!,{1-11,14}
MOV     R0,#44
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#12
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
BL      library_routine_place_string_in_buffer
;  A string var
STMFD   R13!,{1-11,14}
MOV     R0,#12
LDR     R0,[R12,R0]
MOV     R1,#52
ADD     R1,R11,R1
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#4
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
;  Joining a string var to a str
STMFD   R13!,{1-11,14}
MOV     R0,#64
ADD     R0,R11,R0
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#210
MOV     R1,#4
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
MOV     R2,#12
SWI     "OS_ConvertInteger4"
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#8
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
;  Using the STR$ command
STMFD   R13!,{1-11,14}
MOV     R0,#84
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#210
MOV     R1,#4
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
BL      library_routine_convert_integer_to_decimal_string
MOV     R0,#4
LDR     R0,[R12,R0]
SWI     "OS_Write0"
SWI     "OS_NewLine"
;  Printing an immediate integer
STMFD   R13!,{1-11,14}
MOV     R0,#100
ADD     R0,R11,R0
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#210
MOV     R1,#4
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
MOV     R2,#12
SWI     "OS_ConvertHex8"
.str_loop2
LDRB    R3,[R0]
CMP     R3,#48
ADDEQ   R0,R0,#1
BEQ     str_loop2
CMP     R3,#0
SUBEQ   R0,R0,#1
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#8
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
;  Printing a hex number
;  End of *PRINT* command.
;  =========================================================================
;  Different methods for specifying numbers (denary, hex and binary)
STMFD   R13!,{1-11,14}
MOV     R0,#100
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#16
STR     R0,[R12,R1]
;  A denary number
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#35
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#20
STR     R0,[R12,R1]
;  A hex number
STMFD   R13!,{1-11,14}
MOV     R0,#51
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#24
STR     R0,[R12,R1]
;  A binary number
STMFD   R13!,{1-11,14}
MOV     R0,#4
MOV     R1,#8
MOV     R0,R0,ASLR1
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#28
STR     R0,[R12,R1]
;  A shifted number
STMFD   R13!,{1-11,14}
MOV     R0,#16
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
BL      library_routine_convert_integer_to_decimal_string
MOV     R0,#4
LDR     R0,[R12,R0]
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
MOV     R0,#20
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
BL      library_routine_convert_integer_to_decimal_string
MOV     R0,#4
LDR     R0,[R12,R0]
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
MOV     R0,#24
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
BL      library_routine_convert_integer_to_decimal_string
MOV     R0,#4
LDR     R0,[R12,R0]
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
MOV     R0,#28
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
BL      library_routine_convert_integer_to_decimal_string
MOV     R0,#4
LDR     R0,[R12,R0]
SWI     "OS_Write0"
SWI     "OS_NewLine"
;  =========================================================================
;  *ABS* command (in-built BASIC function which returns the ABSolute value
;  of a number, eg ABS(-3) = 3).
STMFD   R13!,{1-11,14}
MOV     R0,#3
RSB     R0,R0,#0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#32
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#32
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
CMP     R0,#0
RSBLT   R0,R0,#0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#36
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
MOV     R0,#124
ADD     R0,R11,R0
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#32
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
MOV     R2,#12
SWI     "OS_ConvertInteger4"
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#8
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
MOV     R0,#152
ADD     R0,R11,R0
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#36
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
MOV     R2,#12
SWI     "OS_ConvertInteger4"
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#8
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
MOV     R0,#172
ADD     R0,R11,R0
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#32
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
CMP     R0,#0
RSBLT   R0,R0,#0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
MOV     R2,#12
SWI     "OS_ConvertInteger4"
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
MOV     R2,#192
ADD     R2,R11,R2
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#8
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R2
MOV     R2,#40
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
;  End of *ABS* command
;  =========================================================================
;  *ASC* command (returns the ASCII character of the first character in a
;  string). *CHR$* (returns the ASCII character with the given code)
STMFD   R13!,{1-11,14}
MOV     R0,#196
ADD     R0,R11,R0
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#224
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
LDRB    R0,[R0]
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
MOV     R2,#12
SWI     "OS_ConvertInteger4"
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#8
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
MOV     R0,#228
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#12
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
BL      library_routine_place_string_in_buffer
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#12
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
LDRB    R0,[R0]
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#44
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
MOV     R0,#12
LDR     R0,[R12,R0]
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#44
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
MOV     R2,#12
SWI     "OS_ConvertInteger4"
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#8
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#36
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#65
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R2,[R12,R1]
STRB    R0,[R2]
MOV     R0,#0
STRB    R0,[R2,#1]
LDR     R1,[R12,R1]
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#8
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#80
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#224
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
LDRB    R0,[R0]
LDMFD   R13!,{1-11,14}
MOV     R1,#1
ADD     R0,R0,R1
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R2,[R12,R1]
STRB    R0,[R2]
MOV     R0,#0
STRB    R0,[R2,#1]
LDR     R1,[R12,R1]
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#8
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
;  End of *ASC* and *CHR$* commands
;  ========================================================================
;  *DIV* and *MOD* (return the whole number (DIV) and the remainder (MOD)
;  after a division).
STMFD   R13!,{1-11,14}
MOV     R0,#14
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#48
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
MOV     R0,#6
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#20
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#108
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#48
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
MOV     R2,#12
SWI     "OS_ConvertInteger4"
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{0-1,3-11,14}
MOV     R0,#120
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R2,R0
LDMFD   R13!,{0-1,3-11,14}
ADD     R2,R11,R2
STMFD   R13!,{0-2,4-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#20
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#8
LDR     R1,[R12,R1]
MOV     R2,#12
SWI     "OS_ConvertInteger4"
MOV     R3,R0
LDMFD   R13!,{0-2,4-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#40
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R2
MOV     R2,#52
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R3
MOV     R2,#56
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#128
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#48
LDR     R0,[R12,R0]
MOV     R1,#20
LDR     R1,[R12,R1]
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
BL      library_routine_divide
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
MOV     R2,#12
SWI     "OS_ConvertInteger4"
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{0-1,3-11,14}
MOV     R0,#136
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R2,R0
LDMFD   R13!,{0-1,3-11,14}
ADD     R2,R11,R2
STMFD   R13!,{0-2,4-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#20
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#8
LDR     R1,[R12,R1]
MOV     R2,#12
SWI     "OS_ConvertInteger4"
MOV     R3,R0
LDMFD   R13!,{0-2,4-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#40
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R2
MOV     R2,#52
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R3
MOV     R2,#56
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
;  End of *DIV* and *MOD*
;  ========================================================================
;  *FOR* *TO* *STEP* *NEXT* (FOR..NEXT loops)
STMFD   R13!,{1-11,14}
MOV     R0,#1
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#68
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
MOV     R0,#10
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R2,#60
ADD     R2,R12,R2
STR     R0,[R2]
STMFD   R13!,{0,2-11,14}
MOV     R0,#1
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
MOV     R2,#64
ADD     R2,R12,R2
STR     R1,[R2]
.loop1
STMFD   R13!,{1-11,14}
MOV     R0,#68
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
BL      library_routine_convert_integer_to_decimal_string
MOV     R0,#4
LDR     R0,[R12,R0]
SWI     "OS_Write0"
SWI     "OS_NewLine"
;  A simple loop
MOV     R0,#68
ADD     R0,R12,R0
LDR     R1,[R0]
MOV     R2,#64
ADD     R2,R12,R2
LDR     R3,[R2]
ADD     R4,R1,R3
STR     R4,[R0]
MOV     R5,#60
ADD     R5,R12,R5
LDR     R6,[R5]
CMP     R3,#0
BGT     loop_next_skip1
CMP     R4,R6
BGE     loop1
B       end_of_loop1
.loop_next_skip1
CMP     R4,R6
BLE     loop1
.end_of_loop1
STMFD   R13!,{1-11,14}
MOV     R0,#5
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#72
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
MOV     R0,#50
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#76
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
MOV     R0,#5
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#80
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
MOV     R0,#72
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#68
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
MOV     R0,#76
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R2,#84
ADD     R2,R12,R2
STR     R0,[R2]
STMFD   R13!,{0,2-11,14}
MOV     R0,#80
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
MOV     R2,#88
ADD     R2,R12,R2
STR     R1,[R2]
.loop2
STMFD   R13!,{1-11,14}
MOV     R0,#68
LDR     R0,[R12,R0]
MOV     R1,#10
MOV     R2,#0
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
BL      library_routine_divide
MOV     R0,R1
LDMFD   R13!,{1-11,14}
CMP     R0,R2
MVNEQ   R0,#0
MOVNE   R0,#0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
CMP     R0,#0
BEQ     else1
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#68
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
MOV     R2,#12
SWI     "OS_ConvertInteger4"
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#148
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
ADD     R1,R11,R1
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#8
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
.else1
.endif1
MOV     R0,#68
ADD     R0,R12,R0
LDR     R1,[R0]
MOV     R2,#88
ADD     R2,R12,R2
LDR     R3,[R2]
ADD     R4,R1,R3
STR     R4,[R0]
MOV     R5,#84
ADD     R5,R12,R5
LDR     R6,[R5]
CMP     R3,#0
BGT     loop_next_skip2
CMP     R4,R6
BGE     loop2
B       end_of_loop2
.loop_next_skip2
CMP     R4,R6
BLE     loop2
.end_of_loop2
;  End of FOR..NEXT loops
;  ========================================================================
;  *LEFT$(* *RIGHT$(* *MID$(* (string manipulation)
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#168
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#12
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
BL      library_routine_place_string_in_buffer
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#12
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#2
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
MOV     R2,#4
LDR     R2,[R12,R2]
BL      library_routine_LEFT_function
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
;  Leftmost 2 characters of the string
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#12
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#1
RSB     R0,R0,#0
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
MOV     R2,#4
LDR     R2,[R12,R2]
BL      library_routine_LEFT_function
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
;  Leftmost LEN-1 characters of the string
STMFD   R13!,{1-11,14}
MOV     R0,#12
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#176
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
BL      library_routine_set_left_part_of_string
STMFD   R13!,{1-11,14}
MOV     R0,#12
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#168
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#12
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
BL      library_routine_place_string_in_buffer
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#12
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#2
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
MOV     R2,#4
LDR     R2,[R12,R2]
BL      library_routine_RIGHT_function
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
;  Rightmost 2 characters of the string
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#12
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#1
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
MOV     R2,#4
LDR     R2,[R12,R2]
BL      library_routine_RIGHT_function
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
;  Rightmost character
STMFD   R13!,{1-11,14}
MOV     R0,#12
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#180
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
BL      library_routine_set_right_part_of_string
STMFD   R13!,{1-11,14}
MOV     R0,#12
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#168
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#12
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
BL      library_routine_place_string_in_buffer
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#12
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#2
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{0-1,3-11,14}
MOV     R0,#3
MOV     R2,R0
LDMFD   R13!,{0-1,3-11,14}
MOV     R3,#4
LDR     R3,[R12,R3]
BL      library_routine_MID_function
MOV     R0,R3
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
;  Starting from second char prints 3 chars
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#12
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#4
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{0-1,3-11,14}
MOV     R0,#4
MOV     R2,R0
LDMFD   R13!,{0-1,3-11,14}
MOV     R3,#4
LDR     R3,[R12,R3]
BL      library_routine_MID_function
MOV     R0,R3
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
;  Gives rest of string after 3rd character
STMFD   R13!,{1-11,14}
MOV     R0,#12
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#4
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{0-1,3-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#180
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R2,R0
LDMFD   R13!,{0-1,3-11,14}
BL      library_routine_set_middle_part_of_string
;  Alters the 4th and 5th characters
STMFD   R13!,{1-11,14}
MOV     R0,#12
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
;  End of string manipulation functions
;  ========================================================================
;  *INSTR(* *LEN* (string info functions)
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#184
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#12
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
BL      library_routine_place_string_in_buffer
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#204
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R1,#12
LDR     R1,[R12,R1]
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#4
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#220
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#12
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
BL      library_routine_LEN_function
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
MOV     R2,#12
SWI     "OS_ConvertInteger4"
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{0-1,3-11,14}
MOV     R0,#252
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R2,R0
LDMFD   R13!,{0-1,3-11,14}
ADD     R2,R11,R2
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#8
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R2
MOV     R2,#40
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#8
MOV     R1,#2
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#12
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#36
MOV     R1,#2
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
MOV     R2,#1
BL      library_routine_INSTR_function
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
MOV     R2,#12
SWI     "OS_ConvertInteger4"
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#8
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#12
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#44
MOV     R1,#2
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{0-1,3-11,14}
MOV     R0,#9
MOV     R2,R0
LDMFD   R13!,{0-1,3-11,14}
BL      library_routine_INSTR_function
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#92
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#48
MOV     R1,#2
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#92
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
MOV     R2,#12
SWI     "OS_ConvertInteger4"
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#8
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
;  End of *INSTR(* and *LEN*
;  ========================================================================
;  *STR$* (converting numbers into text)
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#0
MOV     R1,#4
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#16
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#104
MOV     R1,#2
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#16
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
MOV     R2,#12
SWI     "OS_ConvertInteger4"
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#8
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#128
MOV     R1,#2
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#16
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
MOV     R2,#12
SWI     "OS_ConvertHex8"
.str_loop17
LDRB    R3,[R0]
CMP     R3,#48
ADDEQ   R0,R0,#1
BEQ     str_loop17
CMP     R3,#0
SUBEQ   R0,R0,#1
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#8
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
;  ========================================================================
;  *SWAP* (swapping the contents of two variables)
STMFD   R13!,{1-11,14}
MOV     R0,#10
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#48
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
MOV     R0,#20
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#20
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#152
MOV     R1,#2
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#48
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
MOV     R2,#12
SWI     "OS_ConvertInteger4"
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#8
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#164
MOV     R1,#2
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#20
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
MOV     R2,#12
SWI     "OS_ConvertInteger4"
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#8
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#176
MOV     R1,#2
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
MOV     R0,#48
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#96
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
MOV     R0,#20
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#48
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
MOV     R0,#96
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#20
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#152
MOV     R1,#2
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#48
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
MOV     R2,#12
SWI     "OS_ConvertInteger4"
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#8
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#164
MOV     R1,#2
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#20
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
MOV     R2,#12
SWI     "OS_ConvertInteger4"
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#8
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
;  ========================================================================
;  *CASE* *OF* *WHEN* *OTHERWISE* *ENDCASE (CASE construct)
STMFD   R13!,{1-11,14}
MOV     R0,#1
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#68
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
MOV     R0,#10
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R2,#100
ADD     R2,R12,R2
STR     R0,[R2]
STMFD   R13!,{0,2-11,14}
MOV     R0,#1
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
MOV     R2,#104
ADD     R2,R12,R2
STR     R1,[R2]
.loop3
STMFD   R13!,{1-11,14}
MOV     R0,#68
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#108
STR     R0,[R12,R1]
MOV     R0,#0
MOV     R1,#112
STR     R0,[R12,R1]
.when1_1
STMFD   R13!,{0,2-11,14}
MOV     R0,#1
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
MOV     R0,#108
LDR     R0,[R12,R0]
CMP     R0,R1
MVNEQ   R0,#0
MOV     R1,#112
STREQ   R0,[R12,R1]
BEQ     case_action1_1
STMFD   R13!,{0,2-11,14}
MOV     R0,#2
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
MOV     R0,#108
LDR     R0,[R12,R0]
CMP     R0,R1
MVNEQ   R0,#0
MOV     R1,#112
STREQ   R0,[R12,R1]
BEQ     case_action1_1
STMFD   R13!,{0,2-11,14}
MOV     R0,#3
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
MOV     R0,#108
LDR     R0,[R12,R0]
CMP     R0,R1
MVNEQ   R0,#0
MOV     R1,#112
STREQ   R0,[R12,R1]
BEQ     case_action1_1
STMFD   R13!,{0,2-11,14}
MOV     R0,#4
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
MOV     R0,#108
LDR     R0,[R12,R0]
CMP     R0,R1
MVNEQ   R0,#0
MOV     R1,#112
STREQ   R0,[R12,R1]
BEQ     case_action1_1
STMFD   R13!,{0,2-11,14}
MOV     R0,#5
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
MOV     R0,#108
LDR     R0,[R12,R0]
CMP     R0,R1
MVNEQ   R0,#0
MOV     R1,#112
STREQ   R0,[R12,R1]
BEQ     case_action1_1
B       when1_2
.case_action1_1
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#208
MOV     R1,#2
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
.when1_2
STMFD   R13!,{0,2-11,14}
MOV     R0,#6
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
MOV     R0,#108
LDR     R0,[R12,R0]
CMP     R0,R1
MVNEQ   R0,#0
MOV     R1,#112
STREQ   R0,[R12,R1]
BEQ     case_action1_2
B       when1_3
.case_action1_2
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#224
MOV     R1,#2
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
.when1_3
MOV     R1,#112
LDR     R0,[R12,R1]
CMN     R0,#1
BEQ     endcase1
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#236
MOV     R1,#2
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
.when1_4
.endcase1
MOV     R0,#68
ADD     R0,R12,R0
LDR     R1,[R0]
MOV     R2,#104
ADD     R2,R12,R2
LDR     R3,[R2]
ADD     R4,R1,R3
STR     R4,[R0]
MOV     R5,#100
ADD     R5,R12,R5
LDR     R6,[R5]
CMP     R3,#0
BGT     loop_next_skip3
CMP     R4,R6
BGE     loop3
B       end_of_loop3
.loop_next_skip3
CMP     R4,R6
BLE     loop3
.end_of_loop3
;  End of CASE construct
;  ========================================================================
;  *DIM*. Dimensioning arrays and areas of memory. Note   the size of all
;  arrays and areas of memory MUST be an absolute value (eg. you can't have
;  DIM array%(size%) or DIM block% size%)
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#168
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#148
LDR     R1,[R12,R1]
MOV     R2,#256
MUL     R3,R0,R2
ADD     R0,R1,R3
LDMFD   R13!,{1-11,14}
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
BL      library_routine_place_string_in_buffer
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#252
MOV     R1,#2
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#65
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R2,[R12,R1]
STRB    R0,[R2]
MOV     R0,#0
STRB    R0,[R2,#1]
LDR     R1,[R12,R1]
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{0-1,3-11,14}
MOV     R0,#12
MOV     R1,#3
ADD     R0,R0,R1,ASL#8
MOV     R2,R0
LDMFD   R13!,{0-1,3-11,14}
ADD     R2,R11,R2
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#8
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R2
MOV     R2,#40
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#2
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#2
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
MOV     R2,#152
MOV     R3,#160
BL      library_routine_retrieve_string_array_value
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
BL      library_routine_place_string_in_buffer
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#2
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#2
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
MOV     R2,#152
MOV     R3,#160
BL      library_routine_retrieve_string_array_value
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#44
MOV     R1,#3
ADD     R0,R0,R1,ASL#8
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
ADD     R1,R11,R1
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#4
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#2
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#2
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
MOV     R2,#152
MOV     R3,#160
BL      library_routine_retrieve_string_array_value
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
BL      library_routine_place_string_in_buffer
STMFD   R13!,{0-2,4-11,14}
MOV     R0,#50
MOV     R3,R0
LDMFD   R13!,{0-2,4-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#1
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R0,R0,ASL#2
MOV     R1,#124
LDR     R1,[R12,R1]
ADD     R0,R1,R0
STR     R3,[R0]
STMFD   R13!,{0-2,4-11,14}
MOV     R0,#100
MOV     R3,R0
LDMFD   R13!,{0-2,4-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#5
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#1
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
MOV     R2,#128
MOV     R4,#136
BL      library_routine_address_of_integer_array_element
STR     R3,[R0]
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#1
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R0,R0,ASL#2
MOV     R1,#124
LDR     R1,[R12,R1]
LDR     R0,[R1,R0]
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#5
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#1
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
MOV     R2,#128
MOV     R3,#136
BL      library_routine_retrieve_integer_array_value
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
ADD     R0,R0,R1
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
MOV     R2,#12
SWI     "OS_ConvertInteger4"
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#148
LDR     R1,[R12,R1]
MOV     R2,#256
MUL     R3,R0,R2
ADD     R0,R1,R3
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#2
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#2
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
MOV     R2,#152
MOV     R3,#160
BL      library_routine_retrieve_string_array_value
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#4
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{0-1,3-11,14}
MOV     R0,#128
MOV     R2,R0
LDMFD   R13!,{0-1,3-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#164
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#0
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STRB    R2,[R0,R1]
STMFD   R13!,{0-1,3-11,14}
MOV     R0,#64
MOV     R2,R0
LDMFD   R13!,{0-1,3-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#164
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#1
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STRB    R2,[R0,R1]
STMFD   R13!,{0-1,3-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#0
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R2,R0
LDMFD   R13!,{0-1,3-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#164
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#4
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STR     R2,[R0,R1]
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#56
MOV     R1,#3
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#164
LDR     R0,[R12,R0]
MOV     R1,#8
ADD     R0,R0,R1
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
BL      library_routine_place_string_in_buffer
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#112
MOV     R1,#3
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#164
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
MOV     R2,#12
SWI     "OS_ConvertHex8"
.str_loop23
LDRB    R3,[R0]
CMP     R3,#48
ADDEQ   R0,R0,#1
BEQ     str_loop23
CMP     R3,#0
SUBEQ   R0,R0,#1
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{0-1,3-11,14}
MOV     R0,#144
MOV     R1,#3
ADD     R0,R0,R1,ASL#8
MOV     R2,R0
LDMFD   R13!,{0-1,3-11,14}
ADD     R2,R11,R2
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#8
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R2
MOV     R2,#40
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#156
MOV     R1,#3
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#164
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
LDRB    R0,[R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
MOV     R2,#12
SWI     "OS_ConvertInteger4"
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#8
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#192
MOV     R1,#3
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#164
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#1
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
LDRB    R0,[R0,R1]
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
MOV     R2,#12
SWI     "OS_ConvertInteger4"
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#8
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#224
MOV     R1,#3
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#164
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#4
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
LDR     R0,[R0,R1]
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
MOV     R2,#12
SWI     "OS_ConvertInteger4"
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#8
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#8
MOV     R1,#4
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#164
LDR     R0,[R12,R0]
MOV     R1,#8
ADD     R0,R0,R1
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
;  End of *DIM*
;  ========================================================================
;  *OSCLI*. Performing CLI (*) commands from a BASIC program.
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#40
MOV     R1,#4
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_CLI"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#40
MOV     R1,#4
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#12
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
BL      library_routine_place_string_in_buffer
STMFD   R13!,{1-11,14}
MOV     R0,#12
LDR     R0,[R12,R0]
STMFD   R13!,{0,2-11,14}
MOV     R0,#48
MOV     R1,#4
ADD     R0,R0,R1,ASL#8
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
ADD     R1,R11,R1
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#4
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_CLI"
;  End of *OSCLI*
;  ========================================================================
;  *SYS* (calling SWI routines).
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#56
MOV     R1,#4
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#0
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{0-1,3-11,14}
MOV     R0,#0
MOV     R2,R0
LDMFD   R13!,{0-1,3-11,14}
STMFD   R13!,{0-2,4-11,14}
MOV     R0,#0
MOV     R3,R0
LDMFD   R13!,{0-2,4-11,14}
STMFD   R13!,{0-3,5-11,14}
MOV     R0,#0
MOV     R4,R0
LDMFD   R13!,{0-3,5-11,14}
STMFD   R13!,{0-4,6-11,14}
MOV     R0,#0
MOV     R5,R0
LDMFD   R13!,{0-4,6-11,14}
STMFD   R13!,{0-5,7-11,14}
MOV     R0,#0
MOV     R6,R0
LDMFD   R13!,{0-5,7-11,14}
STMFD   R13!,{0-6,8-11,14}
MOV     R0,#0
MOV     R7,R0
LDMFD   R13!,{0-6,8-11,14}
STMFD   R13!,{0-7,9-11,14}
MOV     R0,#0
MOV     R8,R0
LDMFD   R13!,{0-7,9-11,14}
STMFD   R13!,{0-8,10-11,14}
MOV     R0,#0
MOV     R9,R0
LDMFD   R13!,{0-8,10-11,14}
SWI     "OS_CLI"
;  A simple SWI call
STMFD   R13!,{1-11,14}
MOV     R0,#0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#0
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{0-1,3-11,14}
MOV     R0,#0
MOV     R2,R0
LDMFD   R13!,{0-1,3-11,14}
STMFD   R13!,{0-2,4-11,14}
MOV     R0,#0
MOV     R3,R0
LDMFD   R13!,{0-2,4-11,14}
STMFD   R13!,{0-3,5-11,14}
MOV     R0,#0
MOV     R4,R0
LDMFD   R13!,{0-3,5-11,14}
STMFD   R13!,{0-4,6-11,14}
MOV     R0,#0
MOV     R5,R0
LDMFD   R13!,{0-4,6-11,14}
STMFD   R13!,{0-5,7-11,14}
MOV     R0,#0
MOV     R6,R0
LDMFD   R13!,{0-5,7-11,14}
STMFD   R13!,{0-6,8-11,14}
MOV     R0,#0
MOV     R7,R0
LDMFD   R13!,{0-6,8-11,14}
STMFD   R13!,{0-7,9-11,14}
MOV     R0,#0
MOV     R8,R0
LDMFD   R13!,{0-7,9-11,14}
STMFD   R13!,{0-8,10-11,14}
MOV     R0,#0
MOV     R9,R0
LDMFD   R13!,{0-8,10-11,14}
SWI     "OS_ReadMonotonicTime"
STMFD   R13!,{R0-R11,R14}
MOV     R0,R0
MOV     R1,#168
STR     R0,[R12,R1]
LDMFD   R13!,{R0-R11,R14}
STMFD   R13!,{1-11,14}
MOV     R0,#168
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
BL      library_routine_convert_integer_to_decimal_string
MOV     R0,#4
LDR     R0,[R12,R0]
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#64
MOV     R1,#4
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#0
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{0-1,3-11,14}
MOV     R0,#0
MOV     R2,R0
LDMFD   R13!,{0-1,3-11,14}
STMFD   R13!,{0-2,4-11,14}
MOV     R0,#0
MOV     R3,R0
LDMFD   R13!,{0-2,4-11,14}
STMFD   R13!,{0-3,5-11,14}
MOV     R0,#0
MOV     R4,R0
LDMFD   R13!,{0-3,5-11,14}
STMFD   R13!,{0-4,6-11,14}
MOV     R0,#0
MOV     R5,R0
LDMFD   R13!,{0-4,6-11,14}
STMFD   R13!,{0-5,7-11,14}
MOV     R0,#0
MOV     R6,R0
LDMFD   R13!,{0-5,7-11,14}
STMFD   R13!,{0-6,8-11,14}
MOV     R0,#0
MOV     R7,R0
LDMFD   R13!,{0-6,8-11,14}
STMFD   R13!,{0-7,9-11,14}
MOV     R0,#0
MOV     R8,R0
LDMFD   R13!,{0-7,9-11,14}
STMFD   R13!,{0-8,10-11,14}
MOV     R0,#0
MOV     R9,R0
LDMFD   R13!,{0-8,10-11,14}
SWI     "XOS_CLI"
STMFD   R13!,{R0-R11,R14}
MOV     R0,R0
MOV     R1,#172
STR     R0,[R12,R1]
LDMFD   R13!,{R0-R11,R14}
STMFD   R13!,{R0-R11,R14}
MOV     R0,R1
MOV     R1,#176
STR     R0,[R12,R1]
LDMFD   R13!,{R0-R11,R14}
STMFD   R13!,{R0-R11,R14}
MOV     R0,R2
MOV     R1,#180
STR     R0,[R12,R1]
LDMFD   R13!,{R0-R11,R14}
STMFD   R13!,{R0-R11,R14}
MOV     R0,R15,ASR#28
MOV     R1,#184
STR     R0,[R12,R1]
LDMFD   R13!,{R0-R11,R14}
STMFD   R13!,{1-11,14}
MOV     R0,#184
LDR     R0,[R12,R0]
MOV     R1,#1
AND     R0,R0,R1
MOV     R0,R0
LDMFD   R13!,{1-11,14}
CMP     R0,#0
BEQ     else2
;  File 'wibble' doesn't exist
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#76
MOV     R1,#4
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#128
MOV     R1,#4
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
MOV     R0,#4
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#68
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#164
MOV     R1,#4
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#188
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
BL      library_routine_place_string_in_buffer
.repeat_loop1
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#172
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#68
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
LDRB    R0,[R0,R1]
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#192
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
MOV     R0,#192
LDR     R0,[R12,R0]
MOV     R1,#0
CMP     R0,R1
MVNNE   R0,#0
MOVEQ   R0,#0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
CMP     R0,#0
BEQ     else3
STMFD   R13!,{1-11,14}
MOV     R0,#188
LDR     R0,[R12,R0]
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#192
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R2,[R12,R1]
STRB    R0,[R2]
MOV     R0,#0
STRB    R0,[R2,#1]
LDR     R1,[R12,R1]
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#8
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#188
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
BL      library_routine_place_string_in_buffer
STMFD   R13!,{1-11,14}
MOV     R0,#68
LDR     R0,[R12,R0]
MOV     R1,#1
ADD     R0,R0,R1
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#68
STR     R0,[R12,R1]
.else3
.endif3
STMFD   R13!,{1-11,14}
MOV     R0,#192
LDR     R0,[R12,R0]
MOV     R1,#0
CMP     R0,R1
MVNEQ   R0,#0
MOVNE   R0,#0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
CMP     R0,#0
BEQ     repeat_loop1
STMFD   R13!,{1-11,14}
MOV     R0,#188
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
.else2
.endif2
;  ========================================================================
;  *WHILE* *ENDWHILE*
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#168
MOV     R1,#4
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
MOV     R0,#0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#68
STR     R0,[R12,R1]
.while_loop1
STMFD   R13!,{1-11,14}
MOV     R0,#68
LDR     R0,[R12,R0]
MOV     R1,#10
CMP     R0,R1
MVNLT   R0,#0
MOVGE   R0,#0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
CMP     R0,#0
BEQ     end_of_while_loop1
STMFD   R13!,{1-11,14}
MOV     R0,#68
LDR     R0,[R12,R0]
MOV     R1,#1
ADD     R0,R0,R1
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#68
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
MOV     R0,#0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#196
STR     R0,[R12,R1]
.while_loop2
STMFD   R13!,{1-11,14}
MOV     R0,#196
LDR     R0,[R12,R0]
MOV     R1,#2
CMP     R0,R1
MVNLT   R0,#0
MOVGE   R0,#0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
CMP     R0,#0
BEQ     end_of_while_loop2
STMFD   R13!,{1-11,14}
MOV     R0,#196
LDR     R0,[R12,R0]
MOV     R1,#1
ADD     R0,R0,R1
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#196
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
MOV     R0,#196
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
BL      library_routine_convert_integer_to_decimal_string
MOV     R0,#4
LDR     R0,[R12,R0]
SWI     "OS_Write0"
SWI     "OS_NewLine"
;  Nested WHILE loop
B       while_loop2
.end_of_while_loop2
B       while_loop1
.end_of_while_loop1
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#196
MOV     R1,#4
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
;  ========================================================================
;  *REPEAT* *UNTIL*
STMFD   R13!,{1-11,14}
MOV     R0,#0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#68
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#168
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#12
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
BL      library_routine_place_string_in_buffer
.repeat_loop2
STMFD   R13!,{1-11,14}
MOV     R0,#68
LDR     R0,[R12,R0]
MOV     R1,#1
ADD     R0,R0,R1
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#68
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#12
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#68
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{0-1,3-11,14}
MOV     R0,#1
MOV     R2,R0
LDMFD   R13!,{0-1,3-11,14}
MOV     R3,#4
LDR     R3,[R12,R3]
BL      library_routine_MID_function
MOV     R0,R3
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#200
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
BL      library_routine_place_string_in_buffer
STMFD   R13!,{1-11,14}
MOV     R0,#200
LDR     R0,[R12,R0]
STMFD   R13!,{0,2-11,14}
MOV     R0,#224
MOV     R1,#4
ADD     R0,R0,R1,ASL#8
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
ADD     R1,R11,R1
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
BL      library_routine_compare_strings_for_equivalence
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
CMP     R0,#0
BEQ     repeat_loop2
;  ========================================================================
;  *IF* *THEN* *ELSE* *ENDIF*. All IF constructs must be in the form IF,
;  THEN, [ELSE], ENDIF.
STMFD   R13!,{1-11,14}
MOV     R0,#100
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#48
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
MOV     R0,#200
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#20
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
MOV     R0,#48
LDR     R0,[R12,R0]
MOV     R1,#100
CMP     R0,R1
MVNEQ   R0,#0
MOVNE   R0,#0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
CMP     R0,#0
BEQ     else4
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#228
MOV     R1,#4
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
.else4
.endif4
STMFD   R13!,{1-11,14}
MOV     R0,#48
LDR     R0,[R12,R0]
MOV     R1,#20
LDR     R1,[R12,R1]
CMP     R0,R1
MVNGT   R0,#0
MOVLE   R0,#0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
CMP     R0,#0
BEQ     else5
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#252
MOV     R1,#4
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
B       endif5
.else5
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#40
MOV     R1,#5
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
.endif5
STMFD   R13!,{1-11,14}
MOV     R0,#48
LDR     R0,[R12,R0]
MOV     R1,#20
LDR     R1,[R12,R1]
MOV     R2,#48
LDR     R2,[R12,R2]
MOV     R3,#100
MOV     R4,#20
LDR     R4,[R12,R4]
MOV     R5,#3
STMFD   R13!,{0-5,7-11,14}
MOV     R0,#88
MOV     R1,#2
ADD     R0,R0,R1,ASL#8
MOV     R6,R0
LDMFD   R13!,{0-5,7-11,14}
MUL     R4,R5,R4
CMP     R0,R1
MVNLE   R0,#0
MOVGT   R0,#0
CMP     R2,R3
MVNEQ   R2,#0
MOVNE   R2,#0
CMP     R4,R6
MVNEQ   R4,#0
MOVNE   R4,#0
AND     R0,R0,R2
AND     R0,R0,R4
MOV     R0,R0
LDMFD   R13!,{1-11,14}
CMP     R0,#0
BEQ     else6
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#96
MOV     R1,#5
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
B       endif6
.else6
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#120
MOV     R1,#5
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
.endif6
STMFD   R13!,{1-11,14}
MOV     R0,#48
LDR     R0,[R12,R0]
MOV     R1,#100
CMP     R0,R1
MVNEQ   R0,#0
MOVNE   R0,#0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
CMP     R0,#0
BEQ     else7
STMFD   R13!,{1-11,14}
MOV     R0,#20
LDR     R0,[R12,R0]
MOV     R1,#200
CMP     R0,R1
MVNEQ   R0,#0
MOVNE   R0,#0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
CMP     R0,#0
BEQ     else8
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#144
MOV     R1,#5
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
B       endif8
.else8
STMFD   R13!,{1-11,14}
MOV     R0,#20
LDR     R0,[R12,R0]
STMFD   R13!,{0,2-11,14}
MOV     R0,#144
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
CMP     R0,R1
MVNEQ   R0,#0
MOVNE   R0,#0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
CMP     R0,#0
BEQ     else9
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#172
MOV     R1,#5
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
.else9
.endif9
.endif8
.else7
.endif7
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#48
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#20
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
BL      multiply_two_numbers
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#32
MOV     R1,#78
ADD     R0,R0,R1,ASL#8
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
CMP     R0,R1
MVNEQ   R0,#0
MOVNE   R0,#0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
CMP     R0,#0
BEQ     else10
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#192
MOV     R1,#5
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
.else10
.endif10
;  End of *IF* *THEN* *ELSE* *ENDIF*
;  ========================================================================
;  *OPENOUT* *OPENIN* *OPENUP* *CLOSE* *PTR#* *EXT#* *EOF#* *PRINT#*
;  *INPUT#* *BGET#* *BPUT#* (ie. file handling).
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#204
MOV     R1,#5
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#12
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
BL      library_routine_place_string_in_buffer
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#240
MOV     R1,#5
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#204
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
BL      library_routine_place_string_in_buffer
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#&83
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#12
MOV     R1,#6
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
MOV     R2,#0
SWI     "OS_Find"
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#208
STR     R0,[R12,R1]
STMFD   R13!,{0,2-11,14}
MOV     R0,#208
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{0-1,3-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#24
MOV     R1,#6
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R2,R0
LDMFD   R13!,{0-1,3-11,14}
.loop4
LDRB    R0,[R2],#1
CMP     R0,#0
SWINE   "OS_BPut"
BNE     loop4
MOV     R0,#10
SWI     "OS_BPut"
STMFD   R13!,{0,2-11,14}
MOV     R0,#208
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{0-1,3-11,14}
MOV     R0,#12
LDR     R0,[R12,R0]
MOV     R2,R0
LDMFD   R13!,{0-1,3-11,14}
.loop5
LDRB    R0,[R2],#1
CMP     R0,#0
SWINE   "OS_BPut"
BNE     loop5
MOV     R0,#10
SWI     "OS_BPut"
STMFD   R13!,{0,2-11,14}
MOV     R0,#208
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{0-1,3-11,14}
MOV     R0,#204
LDR     R0,[R12,R0]
MOV     R2,R0
LDMFD   R13!,{0-1,3-11,14}
.loop6
LDRB    R0,[R2],#1
CMP     R0,#0
SWINE   "OS_BPut"
BNE     loop6
STMFD   R13!,{0,2-11,14}
MOV     R0,#208
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{0-1,3-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#224
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
LDRB    R0,[R0]
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
MOV     R2,#12
SWI     "OS_ConvertInteger4"
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R2,R0
LDMFD   R13!,{0-1,3-11,14}
.loop7
LDRB    R0,[R2],#1
CMP     R0,#0
SWINE   "OS_BPut"
BNE     loop7
MOV     R0,#10
SWI     "OS_BPut"
MOV     R0,#0
STMFD   R13!,{0,2-11,14}
MOV     R0,#208
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
SWI     "OS_Find"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#164
MOV     R1,#4
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#212
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
BL      library_routine_place_string_in_buffer
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#&43
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#12
MOV     R1,#6
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
MOV     R2,#0
SWI     "OS_Find"
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#208
STR     R0,[R12,R1]
.while_loop3
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#5
STMFD   R13!,{0,2-11,14}
MOV     R0,#208
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
SWI     "OS_Args"
CMP     R2,#0
MVNNE   R0,#0
MOVEQ   R0,#0
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
CMP     R0,#0
MVNEQ   R0,#0
MOVNE   R0,#0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
CMP     R0,#0
BEQ     end_of_while_loop3
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#208
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
SWI     "OS_BGet"
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#216
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
MOV     R0,#216
LDR     R0,[R12,R0]
MOV     R1,#10
CMP     R0,R1
MVNEQ   R0,#0
MOVNE   R0,#0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
CMP     R0,#0
BEQ     else11
STMFD   R13!,{1-11,14}
MOV     R0,#212
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#164
MOV     R1,#4
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#212
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
BL      library_routine_place_string_in_buffer
B       endif11
.else11
STMFD   R13!,{1-11,14}
MOV     R0,#212
LDR     R0,[R12,R0]
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#216
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R2,[R12,R1]
STRB    R0,[R2]
MOV     R0,#0
STRB    R0,[R2,#1]
LDR     R1,[R12,R1]
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#8
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#212
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
BL      library_routine_place_string_in_buffer
.endif11
B       while_loop3
.end_of_while_loop3
MOV     R0,#0
STMFD   R13!,{0,2-11,14}
MOV     R0,#208
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
SWI     "OS_Find"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#12
MOV     R1,#6
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#220
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
BL      library_routine_place_string_in_buffer
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#&C3
STMFD   R13!,{0,2-11,14}
MOV     R0,#220
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
MOV     R2,#0
SWI     "OS_Find"
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#208
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#60
MOV     R1,#6
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#2
STMFD   R13!,{0,2-11,14}
MOV     R0,#208
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
SWI     "OS_Args"
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
MOV     R2,#12
SWI     "OS_ConvertInteger4"
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{0-1,3-11,14}
MOV     R0,#76
MOV     R1,#6
ADD     R0,R0,R1,ASL#8
MOV     R2,R0
LDMFD   R13!,{0-1,3-11,14}
ADD     R2,R11,R2
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#8
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R2
MOV     R2,#40
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
MOV     R0,#1
STMFD   R13!,{0,2-11,14}
MOV     R0,#208
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{0-1,3-11,14}
MOV     R0,#10
MOV     R2,R0
LDMFD   R13!,{0-1,3-11,14}
SWI     "OS_Args"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#88
MOV     R1,#6
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#208
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
SWI     "OS_BGet"
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
MOV     R2,#12
SWI     "OS_ConvertInteger4"
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#8
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
MOV     R0,#0
STMFD   R13!,{0,2-11,14}
MOV     R0,#208
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
SWI     "OS_Find"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#&83
STMFD   R13!,{0,2-11,14}
MOV     R0,#220
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
MOV     R2,#0
SWI     "OS_Find"
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#208
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
MOV     R0,#1
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#68
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
MOV     R0,#10
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R2,#224
ADD     R2,R12,R2
STR     R0,[R2]
STMFD   R13!,{0,2-11,14}
MOV     R0,#1
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
MOV     R2,#228
ADD     R2,R12,R2
STR     R1,[R2]
.loop8
STMFD   R13!,{0,2-11,14}
MOV     R0,#208
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{0-1,3-11,14}
MOV     R0,#68
LDR     R0,[R12,R0]
MOV     R2,R0
LDMFD   R13!,{0-1,3-11,14}
BL      library_routine_PRINT_integer_to_file
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#116
MOV     R1,#6
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#68
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
MOV     R2,#12
SWI     "OS_ConvertInteger4"
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#8
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
BL      library_routine_PRINT_string_to_file
MOV     R0,#68
ADD     R0,R12,R0
LDR     R1,[R0]
MOV     R2,#228
ADD     R2,R12,R2
LDR     R3,[R2]
ADD     R4,R1,R3
STR     R4,[R0]
MOV     R5,#224
ADD     R5,R12,R5
LDR     R6,[R5]
CMP     R3,#0
BGT     loop_next_skip8
CMP     R4,R6
BGE     loop8
B       end_of_loop8
.loop_next_skip8
CMP     R4,R6
BLE     loop8
.end_of_loop8
MOV     R0,#0
STMFD   R13!,{0,2-11,14}
MOV     R0,#208
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
SWI     "OS_Find"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#&43
STMFD   R13!,{0,2-11,14}
MOV     R0,#220
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
MOV     R2,#0
SWI     "OS_Find"
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#208
STR     R0,[R12,R1]
.while_loop4
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#5
STMFD   R13!,{0,2-11,14}
MOV     R0,#208
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
SWI     "OS_Args"
CMP     R2,#0
MVNNE   R0,#0
MOVEQ   R0,#0
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
CMP     R0,#0
MVNEQ   R0,#0
MOVNE   R0,#0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
CMP     R0,#0
BEQ     end_of_while_loop4
STMFD   R13!,{0,2-11,14}
MOV     R0,#208
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
BL      library_routine_INPUT_integer_from_file
MOV     R1,#16
STR     R0,[R12,R1]
STMFD   R13!,{0,2-11,14}
MOV     R0,#208
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
MOV     R2,#4
BL      library_routine_INPUT_string_from_file
STMFD   R13!,{0,2-11,14}
MOV     R0,#12
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
BL      library_routine_place_string_in_buffer
STMFD   R13!,{1-11,14}
MOV     R0,#16
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
BL      library_routine_convert_integer_to_decimal_string
MOV     R0,#4
LDR     R0,[R12,R0]
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
MOV     R0,#12
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
B       while_loop4
.end_of_while_loop4
MOV     R0,#0
STMFD   R13!,{0,2-11,14}
MOV     R0,#208
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
SWI     "OS_Find"
;  End of file handling
;  =========================================================================
;  *TIME* *TIME$*
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
SWI     "OS_ReadMonotonicTime"
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
BL      library_routine_convert_integer_to_decimal_string
MOV     R0,#4
LDR     R0,[R12,R0]
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#14
MOV     R3,#4
LDR     R1,[R12,R3]
MOV     R2,#0
STR     R2,[R1]
SWI     "OS_Word"
.no_read_times1
LDRB    R4,[R1],#1
CMP     R4,#13
BNE     no_read_times1
STRB    R2,[R1,#-1]
LDR     R0,[R12,R3]
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
SWI     "OS_ReadMonotonicTime"
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#168
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#14
MOV     R3,#4
LDR     R1,[R12,R3]
MOV     R2,#0
STR     R2,[R1]
SWI     "OS_Word"
.no_read_times2
LDRB    R4,[R1],#1
CMP     R4,#13
BNE     no_read_times2
STRB    R2,[R1,#-1]
LDR     R0,[R12,R3]
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#232
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
BL      library_routine_place_string_in_buffer
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#124
MOV     R1,#6
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R1,#232
LDR     R1,[R12,R1]
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#4
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#136
MOV     R1,#6
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#168
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
MOV     R2,#12
SWI     "OS_ConvertInteger4"
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#8
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
;  We could have just done  
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#124
MOV     R1,#6
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
STMFD   R13!,{0,2-11,14}
MOV     R0,#14
MOV     R3,#4
LDR     R1,[R12,R3]
MOV     R2,#0
STR     R2,[R1]
SWI     "OS_Word"
.no_read_times3
LDRB    R4,[R1],#1
CMP     R4,#13
BNE     no_read_times3
STRB    R2,[R1,#-1]
LDR     R1,[R12,R3]
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#8
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#136
MOV     R1,#6
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
SWI     "OS_ReadMonotonicTime"
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
MOV     R2,#12
SWI     "OS_ConvertInteger4"
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#8
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
;  =========================================================================
;  *PROC* *DEFPROC* *ENDPROC* (calling, defining and exiting functions and
;  procedures). *LOCAL* variables are covered also.
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#160
MOV     R1,#6
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#12
LDR     R0,[R12,R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
BL      library_routine_place_string_in_buffer
STMFD   R13!,{1-11,14}
MOV     R0,#100
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#16
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
MOV     R0,#44
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#1
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#244
LDR     R1,[R12,R1]
MOV     R2,#256
MUL     R3,R0,R2
ADD     R0,R1,R3
LDMFD   R13!,{1-11,14}
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
BL      library_routine_place_string_in_buffer
STMFD   R13!,{0-2,4-11,14}
MOV     R0,#200
MOV     R3,R0
LDMFD   R13!,{0-2,4-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#5
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R0,R0,ASL#2
STMFD   R13!,{0,2-11,14}
MOV     R0,#0
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
LDR     R1,[R12,R1]
ADD     R0,R1,R0
STR     R3,[R0]
BL      our_procedure
;  Calling the procedure (no parameters).
STMFD   R13!,{1-11,14}
MOV     R0,#12
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#10
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{0-1,3-11,14}
MOV     R0,#16
LDR     R0,[R12,R0]
MOV     R2,R0
LDMFD   R13!,{0-1,3-11,14}
STMFD   R13!,{0-2,4-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#1
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#244
LDR     R1,[R12,R1]
MOV     R2,#256
MUL     R3,R0,R2
ADD     R0,R1,R3
LDMFD   R13!,{1-11,14}
MOV     R3,R0
LDMFD   R13!,{0-2,4-11,14}
STMFD   R13!,{0-3,5-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#5
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R0,R0,ASL#2
STMFD   R13!,{0,2-11,14}
MOV     R0,#0
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
LDR     R1,[R12,R1]
LDR     R0,[R1,R0]
LDMFD   R13!,{1-11,14}
MOV     R4,R0
LDMFD   R13!,{0-3,5-11,14}
BL      our_new_procedure
STMFD   R13!,{1-11,14}
MOV     R0,#12
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
;  Just to prove the LOCAL 'string$' has gone out of scope
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
BL      our_function
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#4
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#168
MOV     R1,#6
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#4
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
MOV     R2,#12
SWI     "OS_ConvertInteger4"
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#8
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#16
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#5
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R0,R0,ASL#2
STMFD   R13!,{0,2-11,14}
MOV     R0,#0
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
LDR     R1,[R12,R1]
LDR     R0,[R1,R0]
LDMFD   R13!,{1-11,14}
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
BL      multiply_two_numbers
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#4
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#208
MOV     R1,#6
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#4
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
LDR     R0,[R12,R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
MOV     R1,#4
LDR     R1,[R12,R1]
MOV     R2,#12
SWI     "OS_ConvertInteger4"
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
MOV     R2,#8
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
;  Don't forget the END (doesn't have to go at the end of the file).

LDR     R15,[R12,#-4]

;  ================== EXAMPLE PROCEDURES / FUNCTIONS =======================

.our_procedure
STMFD   R13!,{R0-R11,R14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#248
MOV     R1,#6
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
LDMFD   R13!,{R0-R11,R15}^


.our_new_procedure
STMFD   R13!,{R0-R11,R14}
STMFD   R13!,{R0,R1}
MOV     R0,R0
STMFD   R13!,{0,2-11,14}
MOV     R0,#8
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
LDR     R1,[R12,R1]
BL      library_routine_place_string_in_buffer
LDMFD   R13!,{R0,R1}
STMFD   R13!,{R0,R1}
MOV     R0,R1
STMFD   R13!,{0,2-11,14}
MOV     R0,#12
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STR     R0,[R12,R1]
LDMFD   R13!,{R0,R1}
STMFD   R13!,{R0,R1}
MOV     R0,R2
STMFD   R13!,{0,2-11,14}
MOV     R0,#16
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STR     R0,[R12,R1]
LDMFD   R13!,{R0,R1}
STMFD   R13!,{R0,R1}
MOV     R0,R3
STMFD   R13!,{0,2-11,14}
MOV     R0,#20
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
LDR     R1,[R12,R1]
BL      library_routine_place_string_in_buffer
LDMFD   R13!,{R0,R1}
STMFD   R13!,{R0,R1}
MOV     R0,R4
STMFD   R13!,{0,2-11,14}
MOV     R0,#24
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STR     R0,[R12,R1]
LDMFD   R13!,{R0,R1}
MOV     R0,#0
STMFD   R13!,{0,2-11,14}
MOV     R0,#28
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STR     R0,[R12,R1]
MOV     R0,#0
STMFD   R13!,{0,2-11,14}
MOV     R0,#32
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
LDR     R2,[R12,R1]
STRB    R0,[R2]
STMFD   R13!,{1-11,14}
MOV     R0,#10
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#28
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#20
MOV     R1,#7
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
STMFD   R13!,{0,2-11,14}
MOV     R0,#8
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
ADD     R1,R12,R1
LDR     R1,[R1]
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
STMFD   R13!,{0-1,3-11,14}
MOV     R0,#36
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R2,R0
LDMFD   R13!,{0-1,3-11,14}
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#32
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R12,R0
LDR     R0,[R0]
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
BL      library_routine_place_string_in_buffer
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#32
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R12,R0
LDR     R0,[R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#64
MOV     R1,#7
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#10
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#36
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
LDR     R1,[R12,R1]
MOV     R2,#12
SWI     "OS_ConvertInteger4"
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
STMFD   R13!,{0-1,3-11,14}
MOV     R0,#40
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R2,R0
LDMFD   R13!,{0-1,3-11,14}
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#64
MOV     R1,#7
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
STMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#28
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R12,R0
LDR     R0,[R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#36
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
LDR     R1,[R12,R1]
MOV     R2,#12
SWI     "OS_ConvertInteger4"
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,R0
MOV     R1,R1
STMFD   R13!,{0-1,3-11,14}
MOV     R0,#40
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R2,R0
LDMFD   R13!,{0-1,3-11,14}
LDR     R2,[R12,R2]
BL      concatenate_strings
MOV     R0,R2
LDMFD   R13!,{1-11,14}
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#104
MOV     R1,#7
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R11,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#12
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R12,R0
LDR     R0,[R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#36
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
LDR     R1,[R12,R1]
BL      library_routine_convert_integer_to_decimal_string
STMFD   R13!,{1-11,14}
MOV     R0,#36
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
LDR     R0,[R12,R0]
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#16
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R12,R0
LDR     R0,[R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#36
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
LDR     R1,[R12,R1]
BL      library_routine_convert_integer_to_decimal_string
STMFD   R13!,{1-11,14}
MOV     R0,#36
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
LDR     R0,[R12,R0]
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#20
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R12,R0
LDR     R0,[R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
SWI     "OS_Write0"
SWI     "OS_NewLine"
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#24
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R12,R0
LDR     R0,[R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#36
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
LDR     R1,[R12,R1]
BL      library_routine_convert_integer_to_decimal_string
STMFD   R13!,{1-11,14}
MOV     R0,#36
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
LDR     R0,[R12,R0]
SWI     "OS_Write0"
SWI     "OS_NewLine"
LDMFD   R13!,{R0-R11,R15}^


.our_function
STMFD   R13!,{R1-R11,R14}
MOV     R0,#0
STMFD   R13!,{0,2-11,14}
MOV     R0,#44
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STR     R0,[R12,R1]
MOV     R0,#0
STMFD   R13!,{0,2-11,14}
MOV     R0,#48
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
MOV     R0,#10
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#44
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
MOV     R0,#100
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#48
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#44
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R12,R0
LDR     R0,[R0]
STMFD   R13!,{0,2-11,14}
MOV     R0,#48
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
ADD     R1,R12,R1
LDR     R1,[R1]
MUL     R0,R1,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
LDMFD   R13!,{R1-R11,R15}^


.multiply_two_numbers
STMFD   R13!,{R1-R11,R14}
STMFD   R13!,{R0,R1}
MOV     R0,R0
STMFD   R13!,{0,2-11,14}
MOV     R0,#52
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STR     R0,[R12,R1]
LDMFD   R13!,{R0,R1}
STMFD   R13!,{R0,R1}
MOV     R0,R1
STMFD   R13!,{0,2-11,14}
MOV     R0,#56
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STR     R0,[R12,R1]
LDMFD   R13!,{R0,R1}
MOV     R0,#0
STMFD   R13!,{0,2-11,14}
MOV     R0,#60
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#52
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R12,R0
LDR     R0,[R0]
STMFD   R13!,{0,2-11,14}
MOV     R0,#56
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
ADD     R1,R12,R1
LDR     R1,[R1]
MUL     R0,R1,R0
MOV     R0,R0
LDMFD   R13!,{1-11,14}
STMFD   R13!,{0,2-11,14}
MOV     R0,#60
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R1,R0
LDMFD   R13!,{0,2-11,14}
STR     R0,[R12,R1]
STMFD   R13!,{1-11,14}
STMFD   R13!,{1-11,14}
MOV     R0,#60
MOV     R1,#1
ADD     R0,R0,R1,ASL#8
MOV     R0,R0
LDMFD   R13!,{1-11,14}
ADD     R0,R12,R0
LDR     R0,[R0]
MOV     R0,R0
LDMFD   R13!,{1-11,14}
LDMFD   R13!,{R1-R11,R15}^

