Home » Archimedes archive » Acorn User » AU 1994-Xmas.adf » Programs » StarInfo/Bagnall/!QuickType/SourceCode

StarInfo/Bagnall/!QuickType/SourceCode

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Archimedes archive » Acorn User » AU 1994-Xmas.adf » Programs
Filename: StarInfo/Bagnall/!QuickType/SourceCode
Read OK:
File size: 40C3 bytes
Load address: 0000
Exec address: 0000
File contents
    1ON ERROR PRINT REPORT$,ERL:END
    2length%=4000
    3DIM code% length%
    4FOR pass%=12 TO 15 STEP 3
    5P%=0:O%=code%:L%=code%+length%
    6PROCasm
    7NEXT
    8end=P%
    9OSCLI("save <quicktype$dir>.QuickType "+STR$~code%+" +"+STR$~end)
   10OSCLI("settype <quicktype$dir>.QuickType module")
   11END
   12
   13DEFFNdatablock
   14FOR a%=0 TO &67
   15[ OPT pass% : EQUD 0 : ]
   16NEXT
   17=0
   18
   19DEFFNindex
   20RESTORE
   21datapt=data+code%
   22FOR a%=0 TO &67
   23 READ name$
   24 datapt!(a%*4)=P%
   25 [:OPT pass%:EQUS name$:EQUB 0:]
   26NEXT
   27=0
   28
   29DEFFNe(a%)
   30=CHR$(27)+CHR$(a%)
   31
   32DATA "ESC","F1","F2","F3","F4","F5","F6","F7"
   33DATA "F8","F9","F10","F11","F12","Print","Scroll","Break"
   34DATA "`","1","2","3","4","5","6","7"
   35DATA "8","9","0","-","=","�","Back","Insert"
   36DATA "Home","PageUp","Num","n/","n*","n#","Tab","Q"
   37DATA "W","E","R","T","Y","U","I","O"
   38DATA "P","[","]","\","Delete","Copy","PageDown","n7"
   39DATA "n8","n9","n-","Ctrl-L","A","S","D","F"
   40DATA "G","H","J","K","L",";","'","Return"
   41DATA "n4","n5","n6","n+","Shift-L","Extra","Z","X"
   42DATA "C","V","B","N","M" , "," , "." , "/"
   43DATA "Shift-R","Up","n1","n2","n3","Caps","Alt","Space"
   44DATA "Alt","Ctrl-R","Left","Down","Right","n0","n.","Enter"
   45
   46DEFPROCasm
   47RESTORE
   48[
   49OPT pass%
   50.module             EQUD 0        :ALIGN
   51                    EQUD init     :ALIGN
   52                    EQUD finish   :ALIGN
   53                    EQUD 0        :ALIGN
   54                    EQUD title    :ALIGN
   55                    EQUD help     :ALIGN
   56                    EQUD commands :ALIGN
   57                    
   58.title              EQUS "QuickType":EQUB 0          :ALIGN
   59.help               EQUS "QuickType":EQUB 9
   60                    EQUS "0.00 (08 Aug 1994)":EQUB 0 :ALIGN
   61                    
   62.init               STMFD   R13!,{R7-R11,R14}
   63                    MOV     R0,#16
   64                    ADR     R1,event
   65                    MOV     R2,R12
   66                    SWI     "XOS_Claim"
   67                    BVS     clmerror
   68                    MOV     R0,#14
   69                    MOV     R1,#11
   70                    SWI     "XOS_Byte"
   71                    BVS     evterror
   72                    MOV     R0,#6
   73                    MOV     R3,#2048
   74                    SWI     "XOS_Module"
   75                    BVS     workerr
   76                    STR     R2,[R12]
   77                    MOV     R1,#604
   78                    ADD     R1,R1,#1024
   79                    STR     R1,[R2],#4
   80                    MOV     R0,#&68
   81                    MVN     R1,#0
   82.reset              STR     R1,[R2],#4
   83                    SUBS    R0,R0,#1
   84                    BNE     reset
   85                    LDMFD   R13!,{R7-R11,PC}^
   86                    
   87.finish             STMFD   R13!,{R7-R11,R14}
   88                    MOV     R0,#13
   89                    MOV     R1,#11
   90                    SWI     "XOS_Byte"
   91                    MOV     R0,#16
   92                    ADR     R1,event
   93                    MOV     R2,R12
   94                    SWI     "XOS_Release"
   95                    MOV     R0,#7
   96                    LDR     R12,[R12]
   97                    LDR     R2,[R12]
   98                    SWI     "XOS_Module"
   99                    LDMFD   R13!,{R7-R11,PC}^
  100                    
  101.workerr            MOV     R0,#13
  102                    MOV     R1,#11
  103                    SWI     "XOS_Byte"
  104.evterror           MOV     R4,R0
  105                    MOV     R0,#16
  106                    ADR     R1,event
  107                    MOV     R2,R12
  108                    SWI     "XOS_Release"
  109                    MOV     R0,R4
  110.clmerror           MOV     R1,#1
  111                    ADR     R2,title
  112                    SWI     "XWimp_ReportError"
  113                    LDMFD   R13!,{R7-R11,PC}^
  114                    
  115.event              STMFD   R13!,{R1-R11,R14}
  116                    CMP     R0,#11
  117                    LDMNEFD R13!,{R1-R11,PC}^
  118                    LDR     R12,[R12]
  119                    CMP     R1,#0
  120                    BEQ     keyup
  121                    LDR     R4,[R12]
  122                    CMP     R2,#&5E:ORREQ   R4,R4,#%01
  123                    CMP     R2,#&60:ORREQ   R4,R4,#%10
  124                    CMPNE   R2,#&5E:BNE     firmkey
  125                    TST     R4,#%11
  126                    STR     R4,[R12]
  127                    LDMEQFD R13!,{R1-R11,PC}^
  128                    MOV     R9,PC
  129                    ORR     R8,R9,#3
  130                    TEQP    R8,#0
  131                    MOVNV   R0,R0
  132                    STMFD   R13!,{R14}
  133                    MOV     R0,#201
  134                    MOV     R1,#1
  135                    MOV     R2,#0
  136                    SWI     "XOS_Byte"
  137                    LDMFD   R13!,{R14}
  138                    TEQP    R9,#0
  139                    MOVNV   R0,R0
  140                    LDMFD   R13!,{R1-R11,PC}^
  141                    
  142.keyup              LDR     R4,[R12]
  143                    CMP     R2,#&5E
  144                    BICEQ   R4,R4,#%01
  145                    CMP     R2,#&60
  146                    BICEQ   R4,R4,#%10
  147                    STR     R4,[R12]
  148                    TST     R4,#%11
  149                    LDMNEFD R13!,{R1-R11,PC}^
  150                    MOV     R9,PC
  151                    ORR     R8,R9,#3
  152                    TEQP    R8,#0
  153                    MOVNV   R0,R0
  154                    STMFD   R13!,{R14}
  155                    MOV     R0,#201
  156                    MOV     R1,#0
  157                    MOV     R2,#0
  158                    SWI     "XOS_Byte"
  159                    LDMFD   R13!,{R14}
  160                    TEQP    R9,#0
  161                    MOVNV   R0,R0
  162.outofhere          LDMFD   R13!,{R1-R11,PC}^
  163                    
  164.firmkey            TST     R4,#%11
  165                    LDMEQFD R13!,{R1-R11,PC}^
  166                    CMP     R2,#&67
  167                    LDMHIFD R13!,{R1-R11,PC}^
  168                    MOV     R9,PC
  169                    ORR     R8,R9,#3
  170                    TEQP    R8,#0
  171                    MOVNV   R0,R0
  172                    STMFD   R13!,{R14}
  173                    ADD     R12,R12,#4
  174                    ADD     R4,R12,R2,LSL#2
  175                    LDR     R4,[R4]
  176                    CMN     R4,#1
  177                    BEQ     out
  178.bufloop            LDRB    R2,[R4],#1
  179                    CMP     R2,#0
  180                    BEQ     out
  181                    MOV     R0,#138
  182                    MOV     R1,#0
  183                    SWI     "XOS_Byte"
  184                    B       bufloop
  185.out                LDMFD   R13!,{R14}
  186                    TEQP    R9,#0
  187                    MOVNV   R0,R0
  188                    LDMFD   R13!,{R1-R11,PC}^
  189                    
  190.commands           EQUS    "Expand"      :EQUB    0             :ALIGN   :EQUD    expand
  191                    EQUD    &00030002     :EQUD    Expand_Syntax          :EQUD    Expand_Help
  192                    EQUS    "KeyNames"    :EQUB    0             :ALIGN   :EQUD    0
  193                    EQUD    &20020002     :EQUD    0                      :EQUD    KeyNames
  194                    EQUS    "QuickTyping" :EQUB    0             :ALIGN   :EQUD    0
  195                    EQUD    &00030002     :EQUD    0                      :EQUD    QuickTyping
  196                    EQUB    0
  197                    
  198.Expand_Help        EQUS    "*"+FNe(0)+" "+FNe(19)+" "+FNe(2)+"key expansion definitions."+CHR$(13)
  199.Expand_Syntax      EQUS    FNe(14)+"KeyName> <expansion>":EQUB 0
  200.QuickTyping        EQUS    "Use either Alt key with any other key to produce a predefined string"
  201                    EQUS    ". Eg Alt-P could be defined as PRINT etc. "+CHR$(0) : ALIGN
  202.KeyNames           STMFD   R13!,{R14}
  203                    ADR     R0,KeyText
  204                    ADR     R1,0
  205                    ADR     R2,0
  206                    SWI     "XOS_PrettyPrint"
  207                    MOV     R0,#0
  208                    LDMFD   R13!,{PC}
  209                    ALIGN
  210.KeyText            EQUS    "Each key has a name, for most this is the name"
  211                    EQUS    " marked on the key. For keys with shifted and "
  212                    EQUS    "unshifted markings use unshifted. Function keys are "
  213                    EQUS    "named F1 etc, Numeric keypad keys are n0-n9, n#, n*,"
  214                    EQUS    " etc, Num and Enter. Other keys are ..."+CHR$13
  215                    EQUS    CHR$9+"Shift-L, Shift-R"+CHR$9+" - Left/Right Hand Shift"+CHR$13
  216                    EQUS    CHR$9+"Up, Down, Left, Right"+CHR$9+" - Cursor keys"+CHR$13
  217                    EQUS    CHR$9+"Caps, Num, Scroll"+CHR$9+" - Caps, Num, Scroll Lock"+CHR$13
  218                    EQUS    CHR$9+"PageUp, PageDown"+CHR$9+" - Page Up/Down"+CHR$13
  219                    EQUS    CHR$9+"Ctrl-L, Ctrl-R"+CHR$9+CHR$9+" - Left/Right hand Ctrl"+CHR$13
  220                    EQUS    CHR$9+"Back"+CHR$9+CHR$9+CHR$9+" - Backspace" : EQUB 0
  221ALIGN
  222.expand             STMFD   R13!,{R7-R11,R14}
  223                    MOV     R5,R0
  224                    MOV     R0,#6
  225                    MOV     R3,#256
  226                    SWI     "XOS_Module"
  227                    MOV     R3,R2
  228                    
  229.copystr            LDRB    R0,[R5],#1
  230                    CMP     R0,#0
  231                    STRB    R0,[R3],#1
  232                    BNE     copystr
  233                    MOV     R3,R2
  234.terminate1         LDRB    R0,[R3],#1
  235                    CMP     R0,#32
  236                    BNE     terminate1
  237                    SUB     R4,R3,#1
  238                    MOV     R0,#0
  239                    STRB    R0,[R4],#1
  240                    
  241                    ADR     R5,data
  242                    MOV     R6,#0
  243.findkey            LDR     R1,[R5,R6]
  244.addpc              ADD     R1,PC,R1
  245                    SUB     R1,R1,#8
  246                    SUB     R1,R1,#addpc AND (255<<8)
  247                    SUB     R1,R1,#addpc AND 255
  248                    MVN     R0,#0
  249                    MOV     R3,#1
  250                    SWI     "XTerritory_Collate"
  251                    BEQ     setkey
  252                    ADD     R6,R6,#4
  253                    CMP     R6,#&68<<2
  254                    BLT     findkey
  255                    
  256.nokey              MOV     R0,#7
  257                    SWI     "XOS_Module"
  258                    ADR     R0,badkey
  259.expanderror        LDMFD   R13!,{R7-R11,R14}
  260                    ORR     R14,R14,#1<<28
  261                    MOVS    PC,R14
  262.badkey             EQUD    0
  263                    EQUS    "Illegal Keyname - see ""help KeyNames"" for proper names":EQUB 0
  264.sillyalt           EQUD    0
  265                    EQUS    "Can't define the Alt keys. Silly!":EQUB 0
  266.already            EQUD    0
  267                    EQUS    "Already defined":EQUB 0
  268                    
  269.setkey             CMP     R6,#&60<<2
  270                    CMPNE   R6,#&5E<<2
  271                    ADREQ   R0,sillyalt
  272                    BEQ     expanderror
  273                    LDR     R12,[R12]
  274                    ADD     R12,R12,#4
  275                    LDR     R0,[R12,R6]
  276                    CMN     R0,#1
  277                    BEQ     insert
  278
  279.delete             MOV     R5,R0
  280.dloop              LDRB    R1,[R5],#1
  281                    CMP     R1,#32
  282                    BGT     dloop
  283                    SUB     R5,R5,R0
  284                    TST     R5,#%11
  285                    BICNE   R5,R5,#%11
  286                    ADDNE   R5,R5,#4 ; R5=length (ALIGNed)
  287                    
  288                    ADD     R5,R0,R5
  289                    ADD     R9,R12,#2048
  290.movelp             LDR     R3,[R5],#4
  291                    STR     R3,[R0],#4
  292                    CMP     R5,R9
  293                    BLT     movelp
  294                    SUB     R0,R5,R0 ; R0=length
  295                    ADD     R5,R6,#4  ; R5=pointer to next string pointer
  296.delloop            LDR     R3,[R12,R5]
  297                    CMN     R3,#1
  298                    SUBNE   R3,R3,R0
  299                    STRNE   R3,[R12,R5]
  300                    ADD     R5,R5,#4
  301                    CMP     R5,#&67<<2
  302                    BLT     delloop
  303                    MVN     R0,#0
  304                    STR     R0,[R12,R6]
  305                    
  306.insert             ADD     R5,R6,#4
  307                    CMP     R5,#&67<<2
  308                    BGT     lookback
  309.floopf             LDR     R0,[R12,R5]
  310                    CMN     R0,#1
  311                    BNE     forward
  312                    ADDEQ   R5,R5,#4
  313                    CMP     R5,#&68<<2
  314                    BNE     floopf
  315.lookback           SUBS    R5,R6,#4
  316                    BMI     whatthehell
  317.floopb             LDR     R0,[R12,R5]
  318                    CMN     R0,#1
  319                    BNE     backwards
  320                    SUBEQ   R5,R5,#4
  321                    CMP     R5,#0
  322                    BPL     floopb
  323.whatthehell        ADD     R0,R12,#&68<<2
  324                    B       copystring
  325
  326.spaceerr           EQUD    0
  327                    EQUS    "Not enough space for definition":EQUB 0
  328
  329.forward            MOV     R2,R4
  330.nextbyte           LDRB    R1,[R2],#1
  331                    CMP     R1,#32
  332                    BGT     nextbyte
  333                    SUB     R2,R2,R4
  334                    TST     R2,#%11
  335                    BEQ     modfour
  336                    BIC     R2,R2,#%11
  337                    ADD     R2,R2,#4
  338.modfour            LDR     R1,[R12,#-4]
  339                    BIC     R1,R1,#%11
  340                    CMP     R1,R2
  341                    ADRLT   R0,spaceerr
  342                    BLT     expanderror
  343                    STR     R0,[R12,R6]
  344                    ADD     R9,R12,#2048
  345                    SUB     R9,R9,#8
  346.moveloop           LDR     R3,[R9,-R2]
  347                    STR     R3,[R9],#-4
  348                    CMP     R0,R9
  349                    BMI     moveloop
  350                    ADD     R9,R6,#4
  351.cngaddr            LDR     R8,[R12,R9]
  352                    CMN     R8,#1
  353                    ADDNE   R8,R2,R8
  354                    STRNE   R8,[R12,R9]
  355                    ADD     R9,R9,#4
  356                    CMP     R9,#&68<<2
  357                    BLT     cngaddr
  358                    B       copystring
  359                    
  360.backwards          MOV     R2,R4
  361.nextbyte2          LDRB    R1,[R2],#1
  362                    CMP     R1,#32
  363                    BGT     nextbyte2
  364                    SUB     R2,R2,R4
  365                    TST     R2,#%11
  366                    BICNE     R2,R2,#%11
  367                    ADDNE     R2,R2,#4
  368                    LDR     R1,[R12,#-4]
  369                    BIC     R1,R1,#%11
  370                    CMP     R1,R2
  371                    ADRLT   R0,spaceerr
  372                    BLT     expanderror
  373
  374.nextbyte3          LDRB    R1,[R0],#1
  375                    CMP     R1,#32
  376                    BGT     nextbyte3
  377                    TST     R0,#%11
  378                    BICNE   R0,R0,#%11
  379                    ADDNE   R0,R0,#4
  380                    
  381                    STR     R0,[R12,R6]
  382                    ADD     R9,R12,#2048
  383                    SUB     R9,R9,#8
  384.moveloop5          LDR     R3,[R9,-R2]
  385                    STR     R3,[R9],#-4
  386                    CMP     R0,R9
  387                    BMI     moveloop5
  388                    
  389.copystring         STR     R0,[R12,R6]
  390                    LDRB    R1,[R4],#1
  391                    CMP     R1,#32
  392                    BEQ     copystring
  393                    MOV     R9,R0
  394.cloop              STRB    R1,[R0],#1
  395                    LDRB    R1,[R4],#1
  396                    CMP     R1,#32
  397                    BGT     cloop
  398                    MOV     R1,#0
  399                    STRB    R1,[R0],#1
  400                    SUB     R0,R0,R9
  401                    TST     R0,#%11
  402                    ANDNE   R0,R0,#255<<2
  403                    ADDNE   R0,R0,#4
  404                    LDR     R1,[R12,#-4]
  405                    SUB     R1,R1,R0
  406                    STR     R1,[R12,#-4]
  407                    LDMFD   R13!,{R7-R11,PC}^
  408                    
  409.data               :FNdatablock
  410.index              :FNindex
  411]
  412ENDPROC
� � � �$,�:�
length%=4000
� code% length%
� pass%=12 � 15 � 3
"P%=0:O%=code%:L%=code%+length%
�asm
�

end=P%
	;�("save <quicktype$dir>.QuickType "+�~code%+" +"+�~end)

1�("settype <quicktype$dir>.QuickType module")
�


ݤdatablock
� a%=0 � &67
[ OPT pass% : EQUD 0 : ]
�
=0

ݤindex
�
datapt=data+code%
� a%=0 � &67
 � name$
 datapt!(a%*4)=P%
$ [:OPT pass%:EQUS name$:EQUB 0:]
�
=0

ݤe(a%)
=�(27)+�(a%)

 .� "ESC","F1","F2","F3","F4","F5","F6","F7"
!:� "F8","F9","F10","F11","F12","Print","Scroll","Break"
"%� "`","1","2","3","4","5","6","7"
#-� "8","9","0","-","=","�","Back","Insert"
$4� "Home","PageUp","Num","n/","n*","n#","Tab","Q"
%%� "W","E","R","T","Y","U","I","O"
&5� "P","[","]","\","Delete","Copy","PageDown","n7"
'-� "n8","n9","n-","Ctrl-L","A","S","D","F"
(*� "G","H","J","K","L",";","'","Return"
)3� "n4","n5","n6","n+","Shift-L","Extra","Z","X"
*+� "C","V","B","N","M" , "," , "." , "/"
+8� "Shift-R","Up","n1","n2","n3","Caps","Alt","Space"
,<� "Alt","Ctrl-R","Left","Down","Right","n0","n.","Enter"
-
.	��asm
/�
0[
1
OPT pass%
2,.module             EQUD 0        :ALIGN
3,                    EQUD init     :ALIGN
4,                    EQUD finish   :ALIGN
5,                    EQUD 0        :ALIGN
6,                    EQUD title    :ALIGN
7,                    EQUD help     :ALIGN
8,                    EQUD commands :ALIGN
9                    
:?.title              EQUS "QuickType":EQUB 0          :ALIGN
;/.help               EQUS "QuickType":EQUB 9
<?                    EQUS "0.00 (08 Aug 1994)":EQUB 0 :ALIGN
=                    
>1.init               STMFD   R13!,{R7-R11,R14}
?&                    MOV     R0,#16
@(                    ADR     R1,event
A&                    MOV     R2,R12
B+                    SWI     "XOS_Claim"
C(                    BVS     clmerror
D&                    MOV     R0,#14
E&                    MOV     R1,#11
F*                    SWI     "XOS_Byte"
G(                    BVS     evterror
H%                    MOV     R0,#6
I(                    MOV     R3,#2048
J,                    SWI     "XOS_Module"
K'                    BVS     workerr
L(                    STR     R2,[R12]
M'                    MOV     R1,#604
N+                    ADD     R1,R1,#1024
O*                    STR     R1,[R2],#4
P'                    MOV     R0,#&68
Q%                    MVN     R1,#0
R*.reset              STR     R1,[R2],#4
S(                    SUBS    R0,R0,#1
T%                    BNE     reset
U1                    LDMFD   R13!,{R7-R11,PC}^
V                    
W1.finish             STMFD   R13!,{R7-R11,R14}
X&                    MOV     R0,#13
Y&                    MOV     R1,#11
Z*                    SWI     "XOS_Byte"
[&                    MOV     R0,#16
\(                    ADR     R1,event
]&                    MOV     R2,R12
^-                    SWI     "XOS_Release"
_%                    MOV     R0,#7
`)                    LDR     R12,[R12]
a(                    LDR     R2,[R12]
b,                    SWI     "XOS_Module"
c1                    LDMFD   R13!,{R7-R11,PC}^
d                    
e&.workerr            MOV     R0,#13
f&                    MOV     R1,#11
g*                    SWI     "XOS_Byte"
h%.evterror           MOV     R4,R0
i&                    MOV     R0,#16
j(                    ADR     R1,event
k&                    MOV     R2,R12
l-                    SWI     "XOS_Release"
m%                    MOV     R0,R4
n%.clmerror           MOV     R1,#1
o(                    ADR     R2,title
p3                    SWI     "XWimp_ReportError"
q1                    LDMFD   R13!,{R7-R11,PC}^
r                    
s1.event              STMFD   R13!,{R1-R11,R14}
t&                    CMP     R0,#11
u1                    LDMNEFD R13!,{R1-R11,PC}^
v)                    LDR     R12,[R12]
w%                    CMP     R1,#0
x%                    BEQ     keyup
y(                    LDR     R4,[R12]
z9                    CMP     R2,#&5E:�REQ   R4,R4,#%01
{9                    CMP     R2,#&60:�REQ   R4,R4,#%10
|7                    CMPNE   R2,#&5E:BNE     firmkey
}'                    TST     R4,#%11
~(                    STR     R4,[R12]
1                    LDMEQFD R13!,{R1-R11,PC}^
�%                    MOV     R9,PC
�'                    �R     R8,R9,#3
�%                    TEQP    R8,#0
�%                    MOVNV   R0,R0
�*                    STMFD   R13!,{R14}
�'                    MOV     R0,#201
�%                    MOV     R1,#1
�%                    MOV     R2,#0
�*                    SWI     "XOS_Byte"
�*                    LDMFD   R13!,{R14}
�%                    TEQP    R9,#0
�%                    MOVNV   R0,R0
�1                    LDMFD   R13!,{R1-R11,PC}^
�                    
�(.keyup              LDR     R4,[R12]
�'                    CMP     R2,#&5E
�*                    BICEQ   R4,R4,#%01
�'                    CMP     R2,#&60
�*                    BICEQ   R4,R4,#%10
�(                    STR     R4,[R12]
�'                    TST     R4,#%11
�1                    LDMNEFD R13!,{R1-R11,PC}^
�%                    MOV     R9,PC
�'                    �R     R8,R9,#3
�%                    TEQP    R8,#0
�%                    MOVNV   R0,R0
�*                    STMFD   R13!,{R14}
�'                    MOV     R0,#201
�%                    MOV     R1,#0
�%                    MOV     R2,#0
�*                    SWI     "XOS_Byte"
�*                    LDMFD   R13!,{R14}
�%                    TEQP    R9,#0
�%                    MOVNV   R0,R0
�1.outofhere          LDMFD   R13!,{R1-R11,PC}^
�                    
�'.firmkey            TST     R4,#%11
�1                    LDMEQFD R13!,{R1-R11,PC}^
�'                    CMP     R2,#&67
�1                    LDMHIFD R13!,{R1-R11,PC}^
�%                    MOV     R9,PC
�'                    �R     R8,R9,#3
�%                    TEQP    R8,#0
�%                    MOVNV   R0,R0
�*                    STMFD   R13!,{R14}
�*                    ADD     R12,R12,#4
�/                    ADD     R4,R12,R2,LSL#2
�'                    LDR     R4,[R4]
�%                    CMN     R4,#1
�#                    BEQ     out
�*.bufloop            LDRB    R2,[R4],#1
�%                    CMP     R2,#0
�#                    BEQ     out
�'                    MOV     R0,#138
�%                    MOV     R1,#0
�*                    SWI     "XOS_Byte"
�'                    B       bufloop
�*.out                LDMFD   R13!,{R14}
�%                    TEQP    R9,#0
�%                    MOVNV   R0,R0
�1                    LDMFD   R13!,{R1-R11,PC}^
�                    
�].commands           EQUS    "Expand"      :EQUB    0             :ALIGN   :EQUD    expand
�b                    EQUD    &00030002     :EQUD    Expand_Syntax          :EQUD    Expand_Help
�X                    EQUS    "KeyNames"    :EQUB    0             :ALIGN   :EQUD    0
�_                    EQUD    &20020002     :EQUD    0                      :EQUD    KeyNames
�X                    EQUS    "QuickTyping" :EQUB    0             :ALIGN   :EQUD    0
�b                    EQUD    &00030002     :EQUD    0                      :EQUD    QuickTyping
�!                    EQUB    0
�                    
�a.Expand_Help        EQUS    "*"+�e(0)+" "+�e(19)+" "+�e(2)+"key expansion definitions."+�(13)
�D.Expand_Syntax      EQUS    �e(14)+"KeyName> <expansion>":EQUB 0
�f.QuickTyping        EQUS    "Use either Alt key with any other key to produce a predefined string"
�Y                    EQUS    ". Eg Alt-P could be defined as PRINT etc. "+�(0) : ALIGN
�*.KeyNames           STMFD   R13!,{R14}
�*                    ADR     R0,KeyText
�$                    ADR     R1,0
�$                    ADR     R2,0
�1                    SWI     "XOS_PrettyPrint"
�%                    MOV     R0,#0
�)                    LDMFD   R13!,{PC}
�                    ALIGN
�P.KeyText            EQUS    "Each key has a name, for most this is the name"
�P                    EQUS    " marked on the key. For keys with shifted and "
�V                    EQUS    "unshifted markings use unshifted. Function keys are "
�V                    EQUS    "named F1 etc, Numeric keypad keys are n0-n9, n#, n*,"
�M                    EQUS    " etc, Num and Enter. Other keys are ..."+�13
�W                    EQUS    �9+"Shift-L, Shift-R"+�9+" - Left/Right Hand Shift"+�13
�R                    EQUS    �9+"Up, Down, Left, Right"+�9+" - Cursor keys"+�13
�Y                    EQUS    �9+"Caps, Num, Scroll"+�9+" - Caps, Num, Scroll Lock"+�13
�N                    EQUS    �9+"PageUp, PageDown"+�9+" - Page Up/Down"+�13
�W                    EQUS    �9+"Ctrl-L, Ctrl-R"+�9+�9+" - Left/Right hand Ctrl"+�13
�J                    EQUS    �9+"Back"+�9+�9+�9+" - Backspace" : EQUB 0
�	ALIGN
�1.expand             STMFD   R13!,{R7-R11,R14}
�%                    MOV     R5,R0
�%                    MOV     R0,#6
�'                    MOV     R3,#256
�,                    SWI     "XOS_Module"
�%                    MOV     R3,R2
�                    
�*.copystr            LDRB    R0,[R5],#1
�%                    CMP     R0,#0
�*                    STRB    R0,[R3],#1
�'                    BNE     copystr
�%                    MOV     R3,R2
�*.terminate1         LDRB    R0,[R3],#1
�&                    CMP     R0,#32
�*                    BNE     terminate1
�(                    SUB     R4,R3,#1
�%                    MOV     R0,#0
�*                    STRB    R0,[R4],#1
�                    
�'                    ADR     R5,data
�%                    MOV     R6,#0
�*.findkey            LDR     R1,[R5,R6]
�(.addpc              ADD     R1,PC,R1
�(                    SUB     R1,R1,#8
�7                    SUB     R1,R1,#addpc � (255<<8)
�2                    SUB     R1,R1,#addpc � 255
�%                    MVN     R0,#0
�%                    MOV     R3,#1
�4                    SWI     "XTerritory_Collate"
�&                    BEQ     setkey
�(                    ADD     R6,R6,#4
�*                    CMP     R6,#&68<<2
�'                    BLT     findkey
�                    
%.nokey              MOV     R0,#7
,                    SWI     "XOS_Module"
)                    ADR     R0,badkey
1.expanderror        LDMFD   R13!,{R7-R11,R14}
-                    �R     R14,R14,#1<<28
&                    MOVS    PC,R14
!.badkey             EQUD    0
a                    EQUS    "Illegal Keyname - see ""help KeyNames"" for proper names":EQUB 0
!.sillyalt           EQUD    0
	J                    EQUS    "Can't define the Alt keys. Silly!":EQUB 0

!.already            EQUD    0
8                    EQUS    "Already defined":EQUB 0
                    

*.setkey             CMP     R6,#&60<<2
*                    CMPNE   R6,#&5E<<2
+                    ADREQ   R0,sillyalt
+                    BEQ     expanderror
)                    LDR     R12,[R12]
*                    ADD     R12,R12,#4
+                    LDR     R0,[R12,R6]
%                    CMN     R0,#1
&                    BEQ     insert

%.delete             MOV     R5,R0
*.dloop              LDRB    R1,[R5],#1
&                    CMP     R1,#32
%                    BGT     dloop
(                    SUB     R5,R5,R0
'                    TST     R5,#%11
*                    BICNE   R5,R5,#%11
>                    ADDNE   R5,R5,#4 ; R5=length (ALIGNed)
                    
 (                    ADD     R5,R0,R5
!,                    ADD     R9,R12,#2048
"*.movelp             LDR     R3,[R5],#4
#*                    STR     R3,[R0],#4
$%                    CMP     R5,R9
%&                    BLT     movelp
&4                    SUB     R0,R5,R0 ; R0=length
'M                    ADD     R5,R6,#4  ; R5=pointer to next string pointer
(+.delloop            LDR     R3,[R12,R5]
)%                    CMN     R3,#1
*(                    SUBNE   R3,R3,R0
++                    STRNE   R3,[R12,R5]
,(                    ADD     R5,R5,#4
-*                    CMP     R5,#&67<<2
.'                    BLT     delloop
/%                    MVN     R0,#0
0+                    STR     R0,[R12,R6]
1                    
2(.insert             ADD     R5,R6,#4
3*                    CMP     R5,#&67<<2
4(                    BGT     lookback
5+.floopf             LDR     R0,[R12,R5]
6%                    CMN     R0,#1
7'                    BNE     forward
8(                    ADDEQ   R5,R5,#4
9*                    CMP     R5,#&68<<2
:&                    BNE     floopf
;(.lookback           SUBS    R5,R6,#4
<+                    BMI     whatthehell
=+.floopb             LDR     R0,[R12,R5]
>%                    CMN     R0,#1
?)                    BNE     backwards
@(                    SUBEQ   R5,R5,#4
A%                    CMP     R5,#0
B&                    BPL     floopb
C..whatthehell        ADD     R0,R12,#&68<<2
D*                    B       copystring
E
F!.spaceerr           EQUD    0
GH                    EQUS    "Not enough space for definition":EQUB 0
H
I%.forward            MOV     R2,R4
J*.nextbyte           LDRB    R1,[R2],#1
K&                    CMP     R1,#32
L(                    BGT     nextbyte
M(                    SUB     R2,R2,R4
N'                    TST     R2,#%11
O'                    BEQ     modfour
P*                    BIC     R2,R2,#%11
Q(                    ADD     R2,R2,#4
R,.modfour            LDR     R1,[R12,#-4]
S*                    BIC     R1,R1,#%11
T%                    CMP     R1,R2
U+                    ADRLT   R0,spaceerr
V+                    BLT     expanderror
W+                    STR     R0,[R12,R6]
X,                    ADD     R9,R12,#2048
Y(                    SUB     R9,R9,#8
Z+.moveloop           LDR     R3,[R9,-R2]
[+                    STR     R3,[R9],#-4
\%                    CMP     R0,R9
](                    BMI     moveloop
^(                    ADD     R9,R6,#4
_+.cngaddr            LDR     R8,[R12,R9]
`%                    CMN     R8,#1
a(                    ADDNE   R8,R2,R8
b+                    STRNE   R8,[R12,R9]
c(                    ADD     R9,R9,#4
d*                    CMP     R9,#&68<<2
e'                    BLT     cngaddr
f*                    B       copystring
g                    
h%.backwards          MOV     R2,R4
i*.nextbyte2          LDRB    R1,[R2],#1
j&                    CMP     R1,#32
k)                    BGT     nextbyte2
l(                    SUB     R2,R2,R4
m'                    TST     R2,#%11
n,                    BICNE     R2,R2,#%11
o*                    ADDNE     R2,R2,#4
p,                    LDR     R1,[R12,#-4]
q*                    BIC     R1,R1,#%11
r%                    CMP     R1,R2
s+                    ADRLT   R0,spaceerr
t+                    BLT     expanderror
u
v*.nextbyte3          LDRB    R1,[R0],#1
w&                    CMP     R1,#32
x)                    BGT     nextbyte3
y'                    TST     R0,#%11
z*                    BICNE   R0,R0,#%11
{(                    ADDNE   R0,R0,#4
|                    
}+                    STR     R0,[R12,R6]
~,                    ADD     R9,R12,#2048
(                    SUB     R9,R9,#8
�+.moveloop5          LDR     R3,[R9,-R2]
�+                    STR     R3,[R9],#-4
�%                    CMP     R0,R9
�)                    BMI     moveloop5
�                    
�+.copystring         STR     R0,[R12,R6]
�*                    LDRB    R1,[R4],#1
�&                    CMP     R1,#32
�*                    BEQ     copystring
�%                    MOV     R9,R0
�*.cloop              STRB    R1,[R0],#1
�*                    LDRB    R1,[R4],#1
�&                    CMP     R1,#32
�%                    BGT     cloop
�%                    MOV     R1,#0
�*                    STRB    R1,[R0],#1
�(                    SUB     R0,R0,R9
�'                    TST     R0,#%11
�+                    �NE   R0,R0,#255<<2
�(                    ADDNE   R0,R0,#4
�,                    LDR     R1,[R12,#-4]
�(                    SUB     R1,R1,R0
�,                    STR     R1,[R12,#-4]
�1                    LDMFD   R13!,{R7-R11,PC}^
�                    
�#.data               :�datablock
�.index              :�index
�]
��
�
00000000  0d 00 01 10 ee 20 85 20  f1 20 f6 24 2c 9e 3a e0  |..... . . .$,.:.|
00000010  0d 00 02 10 6c 65 6e 67  74 68 25 3d 34 30 30 30  |....length%=4000|
00000020  0d 00 03 13 de 20 63 6f  64 65 25 20 6c 65 6e 67  |..... code% leng|
00000030  74 68 25 0d 00 04 17 e3  20 70 61 73 73 25 3d 31  |th%..... pass%=1|
00000040  32 20 b8 20 31 35 20 88  20 33 0d 00 05 22 50 25  |2 . 15 . 3..."P%|
00000050  3d 30 3a 4f 25 3d 63 6f  64 65 25 3a 4c 25 3d 63  |=0:O%=code%:L%=c|
00000060  6f 64 65 25 2b 6c 65 6e  67 74 68 25 0d 00 06 08  |ode%+length%....|
00000070  f2 61 73 6d 0d 00 07 05  ed 0d 00 08 0a 65 6e 64  |.asm.........end|
00000080  3d 50 25 0d 00 09 3b ff  28 22 73 61 76 65 20 3c  |=P%...;.("save <|
00000090  71 75 69 63 6b 74 79 70  65 24 64 69 72 3e 2e 51  |quicktype$dir>.Q|
000000a0  75 69 63 6b 54 79 70 65  20 22 2b c3 7e 63 6f 64  |uickType "+.~cod|
000000b0  65 25 2b 22 20 2b 22 2b  c3 7e 65 6e 64 29 0d 00  |e%+" +"+.~end)..|
000000c0  0a 31 ff 28 22 73 65 74  74 79 70 65 20 3c 71 75  |.1.("settype <qu|
000000d0  69 63 6b 74 79 70 65 24  64 69 72 3e 2e 51 75 69  |icktype$dir>.Qui|
000000e0  63 6b 54 79 70 65 20 6d  6f 64 75 6c 65 22 29 0d  |ckType module").|
000000f0  00 0b 05 e0 0d 00 0c 04  0d 00 0d 0f dd a4 64 61  |..............da|
00000100  74 61 62 6c 6f 63 6b 0d  00 0e 10 e3 20 61 25 3d  |tablock..... a%=|
00000110  30 20 b8 20 26 36 37 0d  00 0f 1c 5b 20 4f 50 54  |0 . &67....[ OPT|
00000120  20 70 61 73 73 25 20 3a  20 45 51 55 44 20 30 20  | pass% : EQUD 0 |
00000130  3a 20 5d 0d 00 10 05 ed  0d 00 11 06 3d 30 0d 00  |: ].........=0..|
00000140  12 04 0d 00 13 0b dd a4  69 6e 64 65 78 0d 00 14  |........index...|
00000150  05 f7 0d 00 15 15 64 61  74 61 70 74 3d 64 61 74  |......datapt=dat|
00000160  61 2b 63 6f 64 65 25 0d  00 16 10 e3 20 61 25 3d  |a+code%..... a%=|
00000170  30 20 b8 20 26 36 37 0d  00 17 0c 20 f3 20 6e 61  |0 . &67.... . na|
00000180  6d 65 24 0d 00 18 15 20  64 61 74 61 70 74 21 28  |me$.... datapt!(|
00000190  61 25 2a 34 29 3d 50 25  0d 00 19 24 20 5b 3a 4f  |a%*4)=P%...$ [:O|
000001a0  50 54 20 70 61 73 73 25  3a 45 51 55 53 20 6e 61  |PT pass%:EQUS na|
000001b0  6d 65 24 3a 45 51 55 42  20 30 3a 5d 0d 00 1a 05  |me$:EQUB 0:]....|
000001c0  ed 0d 00 1b 06 3d 30 0d  00 1c 04 0d 00 1d 0b dd  |.....=0.........|
000001d0  a4 65 28 61 25 29 0d 00  1e 10 3d bd 28 32 37 29  |.e(a%)....=.(27)|
000001e0  2b bd 28 61 25 29 0d 00  1f 04 0d 00 20 2e dc 20  |+.(a%)...... .. |
000001f0  22 45 53 43 22 2c 22 46  31 22 2c 22 46 32 22 2c  |"ESC","F1","F2",|
00000200  22 46 33 22 2c 22 46 34  22 2c 22 46 35 22 2c 22  |"F3","F4","F5","|
00000210  46 36 22 2c 22 46 37 22  0d 00 21 3a dc 20 22 46  |F6","F7"..!:. "F|
00000220  38 22 2c 22 46 39 22 2c  22 46 31 30 22 2c 22 46  |8","F9","F10","F|
00000230  31 31 22 2c 22 46 31 32  22 2c 22 50 72 69 6e 74  |11","F12","Print|
00000240  22 2c 22 53 63 72 6f 6c  6c 22 2c 22 42 72 65 61  |","Scroll","Brea|
00000250  6b 22 0d 00 22 25 dc 20  22 60 22 2c 22 31 22 2c  |k".."%. "`","1",|
00000260  22 32 22 2c 22 33 22 2c  22 34 22 2c 22 35 22 2c  |"2","3","4","5",|
00000270  22 36 22 2c 22 37 22 0d  00 23 2d dc 20 22 38 22  |"6","7"..#-. "8"|
00000280  2c 22 39 22 2c 22 30 22  2c 22 2d 22 2c 22 3d 22  |,"9","0","-","="|
00000290  2c 22 a3 22 2c 22 42 61  63 6b 22 2c 22 49 6e 73  |,".","Back","Ins|
000002a0  65 72 74 22 0d 00 24 34  dc 20 22 48 6f 6d 65 22  |ert"..$4. "Home"|
000002b0  2c 22 50 61 67 65 55 70  22 2c 22 4e 75 6d 22 2c  |,"PageUp","Num",|
000002c0  22 6e 2f 22 2c 22 6e 2a  22 2c 22 6e 23 22 2c 22  |"n/","n*","n#","|
000002d0  54 61 62 22 2c 22 51 22  0d 00 25 25 dc 20 22 57  |Tab","Q"..%%. "W|
000002e0  22 2c 22 45 22 2c 22 52  22 2c 22 54 22 2c 22 59  |","E","R","T","Y|
000002f0  22 2c 22 55 22 2c 22 49  22 2c 22 4f 22 0d 00 26  |","U","I","O"..&|
00000300  35 dc 20 22 50 22 2c 22  5b 22 2c 22 5d 22 2c 22  |5. "P","[","]","|
00000310  5c 22 2c 22 44 65 6c 65  74 65 22 2c 22 43 6f 70  |\","Delete","Cop|
00000320  79 22 2c 22 50 61 67 65  44 6f 77 6e 22 2c 22 6e  |y","PageDown","n|
00000330  37 22 0d 00 27 2d dc 20  22 6e 38 22 2c 22 6e 39  |7"..'-. "n8","n9|
00000340  22 2c 22 6e 2d 22 2c 22  43 74 72 6c 2d 4c 22 2c  |","n-","Ctrl-L",|
00000350  22 41 22 2c 22 53 22 2c  22 44 22 2c 22 46 22 0d  |"A","S","D","F".|
00000360  00 28 2a dc 20 22 47 22  2c 22 48 22 2c 22 4a 22  |.(*. "G","H","J"|
00000370  2c 22 4b 22 2c 22 4c 22  2c 22 3b 22 2c 22 27 22  |,"K","L",";","'"|
00000380  2c 22 52 65 74 75 72 6e  22 0d 00 29 33 dc 20 22  |,"Return"..)3. "|
00000390  6e 34 22 2c 22 6e 35 22  2c 22 6e 36 22 2c 22 6e  |n4","n5","n6","n|
000003a0  2b 22 2c 22 53 68 69 66  74 2d 4c 22 2c 22 45 78  |+","Shift-L","Ex|
000003b0  74 72 61 22 2c 22 5a 22  2c 22 58 22 0d 00 2a 2b  |tra","Z","X"..*+|
000003c0  dc 20 22 43 22 2c 22 56  22 2c 22 42 22 2c 22 4e  |. "C","V","B","N|
000003d0  22 2c 22 4d 22 20 2c 20  22 2c 22 20 2c 20 22 2e  |","M" , "," , ".|
000003e0  22 20 2c 20 22 2f 22 0d  00 2b 38 dc 20 22 53 68  |" , "/"..+8. "Sh|
000003f0  69 66 74 2d 52 22 2c 22  55 70 22 2c 22 6e 31 22  |ift-R","Up","n1"|
00000400  2c 22 6e 32 22 2c 22 6e  33 22 2c 22 43 61 70 73  |,"n2","n3","Caps|
00000410  22 2c 22 41 6c 74 22 2c  22 53 70 61 63 65 22 0d  |","Alt","Space".|
00000420  00 2c 3c dc 20 22 41 6c  74 22 2c 22 43 74 72 6c  |.,<. "Alt","Ctrl|
00000430  2d 52 22 2c 22 4c 65 66  74 22 2c 22 44 6f 77 6e  |-R","Left","Down|
00000440  22 2c 22 52 69 67 68 74  22 2c 22 6e 30 22 2c 22  |","Right","n0","|
00000450  6e 2e 22 2c 22 45 6e 74  65 72 22 0d 00 2d 04 0d  |n.","Enter"..-..|
00000460  00 2e 09 dd f2 61 73 6d  0d 00 2f 05 f7 0d 00 30  |.....asm../....0|
00000470  05 5b 0d 00 31 0d 4f 50  54 20 70 61 73 73 25 0d  |.[..1.OPT pass%.|
00000480  00 32 2c 2e 6d 6f 64 75  6c 65 20 20 20 20 20 20  |.2,.module      |
00000490  20 20 20 20 20 20 20 45  51 55 44 20 30 20 20 20  |       EQUD 0   |
000004a0  20 20 20 20 20 3a 41 4c  49 47 4e 0d 00 33 2c 20  |     :ALIGN..3, |
000004b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000004c0  20 20 20 45 51 55 44 20  69 6e 69 74 20 20 20 20  |   EQUD init    |
000004d0  20 3a 41 4c 49 47 4e 0d  00 34 2c 20 20 20 20 20  | :ALIGN..4,     |
000004e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 45  |               E|
000004f0  51 55 44 20 66 69 6e 69  73 68 20 20 20 3a 41 4c  |QUD finish   :AL|
00000500  49 47 4e 0d 00 35 2c 20  20 20 20 20 20 20 20 20  |IGN..5,         |
00000510  20 20 20 20 20 20 20 20  20 20 20 45 51 55 44 20  |           EQUD |
00000520  30 20 20 20 20 20 20 20  20 3a 41 4c 49 47 4e 0d  |0        :ALIGN.|
00000530  00 36 2c 20 20 20 20 20  20 20 20 20 20 20 20 20  |.6,             |
00000540  20 20 20 20 20 20 20 45  51 55 44 20 74 69 74 6c  |       EQUD titl|
00000550  65 20 20 20 20 3a 41 4c  49 47 4e 0d 00 37 2c 20  |e    :ALIGN..7, |
00000560  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000570  20 20 20 45 51 55 44 20  68 65 6c 70 20 20 20 20  |   EQUD help    |
00000580  20 3a 41 4c 49 47 4e 0d  00 38 2c 20 20 20 20 20  | :ALIGN..8,     |
00000590  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 45  |               E|
000005a0  51 55 44 20 63 6f 6d 6d  61 6e 64 73 20 3a 41 4c  |QUD commands :AL|
000005b0  49 47 4e 0d 00 39 18 20  20 20 20 20 20 20 20 20  |IGN..9.         |
000005c0  20 20 20 20 20 20 20 20  20 20 20 0d 00 3a 3f 2e  |           ..:?.|
000005d0  74 69 74 6c 65 20 20 20  20 20 20 20 20 20 20 20  |title           |
000005e0  20 20 20 45 51 55 53 20  22 51 75 69 63 6b 54 79  |   EQUS "QuickTy|
000005f0  70 65 22 3a 45 51 55 42  20 30 20 20 20 20 20 20  |pe":EQUB 0      |
00000600  20 20 20 20 3a 41 4c 49  47 4e 0d 00 3b 2f 2e 68  |    :ALIGN..;/.h|
00000610  65 6c 70 20 20 20 20 20  20 20 20 20 20 20 20 20  |elp             |
00000620  20 20 45 51 55 53 20 22  51 75 69 63 6b 54 79 70  |  EQUS "QuickTyp|
00000630  65 22 3a 45 51 55 42 20  39 0d 00 3c 3f 20 20 20  |e":EQUB 9..<?   |
00000640  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000650  20 45 51 55 53 20 22 30  2e 30 30 20 28 30 38 20  | EQUS "0.00 (08 |
00000660  41 75 67 20 31 39 39 34  29 22 3a 45 51 55 42 20  |Aug 1994)":EQUB |
00000670  30 20 3a 41 4c 49 47 4e  0d 00 3d 18 20 20 20 20  |0 :ALIGN..=.    |
00000680  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000690  0d 00 3e 31 2e 69 6e 69  74 20 20 20 20 20 20 20  |..>1.init       |
000006a0  20 20 20 20 20 20 20 20  53 54 4d 46 44 20 20 20  |        STMFD   |
000006b0  52 31 33 21 2c 7b 52 37  2d 52 31 31 2c 52 31 34  |R13!,{R7-R11,R14|
000006c0  7d 0d 00 3f 26 20 20 20  20 20 20 20 20 20 20 20  |}..?&           |
000006d0  20 20 20 20 20 20 20 20  20 4d 4f 56 20 20 20 20  |         MOV    |
000006e0  20 52 30 2c 23 31 36 0d  00 40 28 20 20 20 20 20  | R0,#16..@(     |
000006f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 41  |               A|
00000700  44 52 20 20 20 20 20 52  31 2c 65 76 65 6e 74 0d  |DR     R1,event.|
00000710  00 41 26 20 20 20 20 20  20 20 20 20 20 20 20 20  |.A&             |
00000720  20 20 20 20 20 20 20 4d  4f 56 20 20 20 20 20 52  |       MOV     R|
00000730  32 2c 52 31 32 0d 00 42  2b 20 20 20 20 20 20 20  |2,R12..B+       |
00000740  20 20 20 20 20 20 20 20  20 20 20 20 20 53 57 49  |             SWI|
00000750  20 20 20 20 20 22 58 4f  53 5f 43 6c 61 69 6d 22  |     "XOS_Claim"|
00000760  0d 00 43 28 20 20 20 20  20 20 20 20 20 20 20 20  |..C(            |
00000770  20 20 20 20 20 20 20 20  42 56 53 20 20 20 20 20  |        BVS     |
00000780  63 6c 6d 65 72 72 6f 72  0d 00 44 26 20 20 20 20  |clmerror..D&    |
00000790  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000007a0  4d 4f 56 20 20 20 20 20  52 30 2c 23 31 34 0d 00  |MOV     R0,#14..|
000007b0  45 26 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |E&              |
000007c0  20 20 20 20 20 20 4d 4f  56 20 20 20 20 20 52 31  |      MOV     R1|
000007d0  2c 23 31 31 0d 00 46 2a  20 20 20 20 20 20 20 20  |,#11..F*        |
000007e0  20 20 20 20 20 20 20 20  20 20 20 20 53 57 49 20  |            SWI |
000007f0  20 20 20 20 22 58 4f 53  5f 42 79 74 65 22 0d 00  |    "XOS_Byte"..|
00000800  47 28 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |G(              |
00000810  20 20 20 20 20 20 42 56  53 20 20 20 20 20 65 76  |      BVS     ev|
00000820  74 65 72 72 6f 72 0d 00  48 25 20 20 20 20 20 20  |terror..H%      |
00000830  20 20 20 20 20 20 20 20  20 20 20 20 20 20 4d 4f  |              MO|
00000840  56 20 20 20 20 20 52 30  2c 23 36 0d 00 49 28 20  |V     R0,#6..I( |
00000850  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000860  20 20 20 4d 4f 56 20 20  20 20 20 52 33 2c 23 32  |   MOV     R3,#2|
00000870  30 34 38 0d 00 4a 2c 20  20 20 20 20 20 20 20 20  |048..J,         |
00000880  20 20 20 20 20 20 20 20  20 20 20 53 57 49 20 20  |           SWI  |
00000890  20 20 20 22 58 4f 53 5f  4d 6f 64 75 6c 65 22 0d  |   "XOS_Module".|
000008a0  00 4b 27 20 20 20 20 20  20 20 20 20 20 20 20 20  |.K'             |
000008b0  20 20 20 20 20 20 20 42  56 53 20 20 20 20 20 77  |       BVS     w|
000008c0  6f 72 6b 65 72 72 0d 00  4c 28 20 20 20 20 20 20  |orkerr..L(      |
000008d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 53 54  |              ST|
000008e0  52 20 20 20 20 20 52 32  2c 5b 52 31 32 5d 0d 00  |R     R2,[R12]..|
000008f0  4d 27 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |M'              |
00000900  20 20 20 20 20 20 4d 4f  56 20 20 20 20 20 52 31  |      MOV     R1|
00000910  2c 23 36 30 34 0d 00 4e  2b 20 20 20 20 20 20 20  |,#604..N+       |
00000920  20 20 20 20 20 20 20 20  20 20 20 20 20 41 44 44  |             ADD|
00000930  20 20 20 20 20 52 31 2c  52 31 2c 23 31 30 32 34  |     R1,R1,#1024|
00000940  0d 00 4f 2a 20 20 20 20  20 20 20 20 20 20 20 20  |..O*            |
00000950  20 20 20 20 20 20 20 20  53 54 52 20 20 20 20 20  |        STR     |
00000960  52 31 2c 5b 52 32 5d 2c  23 34 0d 00 50 27 20 20  |R1,[R2],#4..P'  |
00000970  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000980  20 20 4d 4f 56 20 20 20  20 20 52 30 2c 23 26 36  |  MOV     R0,#&6|
00000990  38 0d 00 51 25 20 20 20  20 20 20 20 20 20 20 20  |8..Q%           |
000009a0  20 20 20 20 20 20 20 20  20 4d 56 4e 20 20 20 20  |         MVN    |
000009b0  20 52 31 2c 23 30 0d 00  52 2a 2e 72 65 73 65 74  | R1,#0..R*.reset|
000009c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 53 54  |              ST|
000009d0  52 20 20 20 20 20 52 31  2c 5b 52 32 5d 2c 23 34  |R     R1,[R2],#4|
000009e0  0d 00 53 28 20 20 20 20  20 20 20 20 20 20 20 20  |..S(            |
000009f0  20 20 20 20 20 20 20 20  53 55 42 53 20 20 20 20  |        SUBS    |
00000a00  52 30 2c 52 30 2c 23 31  0d 00 54 25 20 20 20 20  |R0,R0,#1..T%    |
00000a10  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000a20  42 4e 45 20 20 20 20 20  72 65 73 65 74 0d 00 55  |BNE     reset..U|
00000a30  31 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |1               |
00000a40  20 20 20 20 20 4c 44 4d  46 44 20 20 20 52 31 33  |     LDMFD   R13|
00000a50  21 2c 7b 52 37 2d 52 31  31 2c 50 43 7d 5e 0d 00  |!,{R7-R11,PC}^..|
00000a60  56 18 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |V.              |
00000a70  20 20 20 20 20 20 0d 00  57 31 2e 66 69 6e 69 73  |      ..W1.finis|
00000a80  68 20 20 20 20 20 20 20  20 20 20 20 20 20 53 54  |h             ST|
00000a90  4d 46 44 20 20 20 52 31  33 21 2c 7b 52 37 2d 52  |MFD   R13!,{R7-R|
00000aa0  31 31 2c 52 31 34 7d 0d  00 58 26 20 20 20 20 20  |11,R14}..X&     |
00000ab0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 4d  |               M|
00000ac0  4f 56 20 20 20 20 20 52  30 2c 23 31 33 0d 00 59  |OV     R0,#13..Y|
00000ad0  26 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |&               |
00000ae0  20 20 20 20 20 4d 4f 56  20 20 20 20 20 52 31 2c  |     MOV     R1,|
00000af0  23 31 31 0d 00 5a 2a 20  20 20 20 20 20 20 20 20  |#11..Z*         |
00000b00  20 20 20 20 20 20 20 20  20 20 20 53 57 49 20 20  |           SWI  |
00000b10  20 20 20 22 58 4f 53 5f  42 79 74 65 22 0d 00 5b  |   "XOS_Byte"..[|
00000b20  26 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |&               |
00000b30  20 20 20 20 20 4d 4f 56  20 20 20 20 20 52 30 2c  |     MOV     R0,|
00000b40  23 31 36 0d 00 5c 28 20  20 20 20 20 20 20 20 20  |#16..\(         |
00000b50  20 20 20 20 20 20 20 20  20 20 20 41 44 52 20 20  |           ADR  |
00000b60  20 20 20 52 31 2c 65 76  65 6e 74 0d 00 5d 26 20  |   R1,event..]& |
00000b70  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000b80  20 20 20 4d 4f 56 20 20  20 20 20 52 32 2c 52 31  |   MOV     R2,R1|
00000b90  32 0d 00 5e 2d 20 20 20  20 20 20 20 20 20 20 20  |2..^-           |
00000ba0  20 20 20 20 20 20 20 20  20 53 57 49 20 20 20 20  |         SWI    |
00000bb0  20 22 58 4f 53 5f 52 65  6c 65 61 73 65 22 0d 00  | "XOS_Release"..|
00000bc0  5f 25 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |_%              |
00000bd0  20 20 20 20 20 20 4d 4f  56 20 20 20 20 20 52 30  |      MOV     R0|
00000be0  2c 23 37 0d 00 60 29 20  20 20 20 20 20 20 20 20  |,#7..`)         |
00000bf0  20 20 20 20 20 20 20 20  20 20 20 4c 44 52 20 20  |           LDR  |
00000c00  20 20 20 52 31 32 2c 5b  52 31 32 5d 0d 00 61 28  |   R12,[R12]..a(|
00000c10  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000c20  20 20 20 20 4c 44 52 20  20 20 20 20 52 32 2c 5b  |    LDR     R2,[|
00000c30  52 31 32 5d 0d 00 62 2c  20 20 20 20 20 20 20 20  |R12]..b,        |
00000c40  20 20 20 20 20 20 20 20  20 20 20 20 53 57 49 20  |            SWI |
00000c50  20 20 20 20 22 58 4f 53  5f 4d 6f 64 75 6c 65 22  |    "XOS_Module"|
00000c60  0d 00 63 31 20 20 20 20  20 20 20 20 20 20 20 20  |..c1            |
00000c70  20 20 20 20 20 20 20 20  4c 44 4d 46 44 20 20 20  |        LDMFD   |
00000c80  52 31 33 21 2c 7b 52 37  2d 52 31 31 2c 50 43 7d  |R13!,{R7-R11,PC}|
00000c90  5e 0d 00 64 18 20 20 20  20 20 20 20 20 20 20 20  |^..d.           |
00000ca0  20 20 20 20 20 20 20 20  20 0d 00 65 26 2e 77 6f  |         ..e&.wo|
00000cb0  72 6b 65 72 72 20 20 20  20 20 20 20 20 20 20 20  |rkerr           |
00000cc0  20 4d 4f 56 20 20 20 20  20 52 30 2c 23 31 33 0d  | MOV     R0,#13.|
00000cd0  00 66 26 20 20 20 20 20  20 20 20 20 20 20 20 20  |.f&             |
00000ce0  20 20 20 20 20 20 20 4d  4f 56 20 20 20 20 20 52  |       MOV     R|
00000cf0  31 2c 23 31 31 0d 00 67  2a 20 20 20 20 20 20 20  |1,#11..g*       |
00000d00  20 20 20 20 20 20 20 20  20 20 20 20 20 53 57 49  |             SWI|
00000d10  20 20 20 20 20 22 58 4f  53 5f 42 79 74 65 22 0d  |     "XOS_Byte".|
00000d20  00 68 25 2e 65 76 74 65  72 72 6f 72 20 20 20 20  |.h%.evterror    |
00000d30  20 20 20 20 20 20 20 4d  4f 56 20 20 20 20 20 52  |       MOV     R|
00000d40  34 2c 52 30 0d 00 69 26  20 20 20 20 20 20 20 20  |4,R0..i&        |
00000d50  20 20 20 20 20 20 20 20  20 20 20 20 4d 4f 56 20  |            MOV |
00000d60  20 20 20 20 52 30 2c 23  31 36 0d 00 6a 28 20 20  |    R0,#16..j(  |
00000d70  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000d80  20 20 41 44 52 20 20 20  20 20 52 31 2c 65 76 65  |  ADR     R1,eve|
00000d90  6e 74 0d 00 6b 26 20 20  20 20 20 20 20 20 20 20  |nt..k&          |
00000da0  20 20 20 20 20 20 20 20  20 20 4d 4f 56 20 20 20  |          MOV   |
00000db0  20 20 52 32 2c 52 31 32  0d 00 6c 2d 20 20 20 20  |  R2,R12..l-    |
00000dc0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000dd0  53 57 49 20 20 20 20 20  22 58 4f 53 5f 52 65 6c  |SWI     "XOS_Rel|
00000de0  65 61 73 65 22 0d 00 6d  25 20 20 20 20 20 20 20  |ease"..m%       |
00000df0  20 20 20 20 20 20 20 20  20 20 20 20 20 4d 4f 56  |             MOV|
00000e00  20 20 20 20 20 52 30 2c  52 34 0d 00 6e 25 2e 63  |     R0,R4..n%.c|
00000e10  6c 6d 65 72 72 6f 72 20  20 20 20 20 20 20 20 20  |lmerror         |
00000e20  20 20 4d 4f 56 20 20 20  20 20 52 31 2c 23 31 0d  |  MOV     R1,#1.|
00000e30  00 6f 28 20 20 20 20 20  20 20 20 20 20 20 20 20  |.o(             |
00000e40  20 20 20 20 20 20 20 41  44 52 20 20 20 20 20 52  |       ADR     R|
00000e50  32 2c 74 69 74 6c 65 0d  00 70 33 20 20 20 20 20  |2,title..p3     |
00000e60  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 53  |               S|
00000e70  57 49 20 20 20 20 20 22  58 57 69 6d 70 5f 52 65  |WI     "XWimp_Re|
00000e80  70 6f 72 74 45 72 72 6f  72 22 0d 00 71 31 20 20  |portError"..q1  |
00000e90  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000ea0  20 20 4c 44 4d 46 44 20  20 20 52 31 33 21 2c 7b  |  LDMFD   R13!,{|
00000eb0  52 37 2d 52 31 31 2c 50  43 7d 5e 0d 00 72 18 20  |R7-R11,PC}^..r. |
00000ec0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000ed0  20 20 20 0d 00 73 31 2e  65 76 65 6e 74 20 20 20  |   ..s1.event   |
00000ee0  20 20 20 20 20 20 20 20  20 20 20 53 54 4d 46 44  |           STMFD|
00000ef0  20 20 20 52 31 33 21 2c  7b 52 31 2d 52 31 31 2c  |   R13!,{R1-R11,|
00000f00  52 31 34 7d 0d 00 74 26  20 20 20 20 20 20 20 20  |R14}..t&        |
00000f10  20 20 20 20 20 20 20 20  20 20 20 20 43 4d 50 20  |            CMP |
00000f20  20 20 20 20 52 30 2c 23  31 31 0d 00 75 31 20 20  |    R0,#11..u1  |
00000f30  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000f40  20 20 4c 44 4d 4e 45 46  44 20 52 31 33 21 2c 7b  |  LDMNEFD R13!,{|
00000f50  52 31 2d 52 31 31 2c 50  43 7d 5e 0d 00 76 29 20  |R1-R11,PC}^..v) |
00000f60  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000f70  20 20 20 4c 44 52 20 20  20 20 20 52 31 32 2c 5b  |   LDR     R12,[|
00000f80  52 31 32 5d 0d 00 77 25  20 20 20 20 20 20 20 20  |R12]..w%        |
00000f90  20 20 20 20 20 20 20 20  20 20 20 20 43 4d 50 20  |            CMP |
00000fa0  20 20 20 20 52 31 2c 23  30 0d 00 78 25 20 20 20  |    R1,#0..x%   |
00000fb0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000fc0  20 42 45 51 20 20 20 20  20 6b 65 79 75 70 0d 00  | BEQ     keyup..|
00000fd0  79 28 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |y(              |
00000fe0  20 20 20 20 20 20 4c 44  52 20 20 20 20 20 52 34  |      LDR     R4|
00000ff0  2c 5b 52 31 32 5d 0d 00  7a 39 20 20 20 20 20 20  |,[R12]..z9      |
00001000  20 20 20 20 20 20 20 20  20 20 20 20 20 20 43 4d  |              CM|
00001010  50 20 20 20 20 20 52 32  2c 23 26 35 45 3a 84 52  |P     R2,#&5E:.R|
00001020  45 51 20 20 20 52 34 2c  52 34 2c 23 25 30 31 0d  |EQ   R4,R4,#%01.|
00001030  00 7b 39 20 20 20 20 20  20 20 20 20 20 20 20 20  |.{9             |
00001040  20 20 20 20 20 20 20 43  4d 50 20 20 20 20 20 52  |       CMP     R|
00001050  32 2c 23 26 36 30 3a 84  52 45 51 20 20 20 52 34  |2,#&60:.REQ   R4|
00001060  2c 52 34 2c 23 25 31 30  0d 00 7c 37 20 20 20 20  |,R4,#%10..|7    |
00001070  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001080  43 4d 50 4e 45 20 20 20  52 32 2c 23 26 35 45 3a  |CMPNE   R2,#&5E:|
00001090  42 4e 45 20 20 20 20 20  66 69 72 6d 6b 65 79 0d  |BNE     firmkey.|
000010a0  00 7d 27 20 20 20 20 20  20 20 20 20 20 20 20 20  |.}'             |
000010b0  20 20 20 20 20 20 20 54  53 54 20 20 20 20 20 52  |       TST     R|
000010c0  34 2c 23 25 31 31 0d 00  7e 28 20 20 20 20 20 20  |4,#%11..~(      |
000010d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 53 54  |              ST|
000010e0  52 20 20 20 20 20 52 34  2c 5b 52 31 32 5d 0d 00  |R     R4,[R12]..|
000010f0  7f 31 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.1              |
00001100  20 20 20 20 20 20 4c 44  4d 45 51 46 44 20 52 31  |      LDMEQFD R1|
00001110  33 21 2c 7b 52 31 2d 52  31 31 2c 50 43 7d 5e 0d  |3!,{R1-R11,PC}^.|
00001120  00 80 25 20 20 20 20 20  20 20 20 20 20 20 20 20  |..%             |
00001130  20 20 20 20 20 20 20 4d  4f 56 20 20 20 20 20 52  |       MOV     R|
00001140  39 2c 50 43 0d 00 81 27  20 20 20 20 20 20 20 20  |9,PC...'        |
00001150  20 20 20 20 20 20 20 20  20 20 20 20 84 52 20 20  |            .R  |
00001160  20 20 20 52 38 2c 52 39  2c 23 33 0d 00 82 25 20  |   R8,R9,#3...% |
00001170  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001180  20 20 20 54 45 51 50 20  20 20 20 52 38 2c 23 30  |   TEQP    R8,#0|
00001190  0d 00 83 25 20 20 20 20  20 20 20 20 20 20 20 20  |...%            |
000011a0  20 20 20 20 20 20 20 20  4d 4f 56 4e 56 20 20 20  |        MOVNV   |
000011b0  52 30 2c 52 30 0d 00 84  2a 20 20 20 20 20 20 20  |R0,R0...*       |
000011c0  20 20 20 20 20 20 20 20  20 20 20 20 20 53 54 4d  |             STM|
000011d0  46 44 20 20 20 52 31 33  21 2c 7b 52 31 34 7d 0d  |FD   R13!,{R14}.|
000011e0  00 85 27 20 20 20 20 20  20 20 20 20 20 20 20 20  |..'             |
000011f0  20 20 20 20 20 20 20 4d  4f 56 20 20 20 20 20 52  |       MOV     R|
00001200  30 2c 23 32 30 31 0d 00  86 25 20 20 20 20 20 20  |0,#201...%      |
00001210  20 20 20 20 20 20 20 20  20 20 20 20 20 20 4d 4f  |              MO|
00001220  56 20 20 20 20 20 52 31  2c 23 31 0d 00 87 25 20  |V     R1,#1...% |
00001230  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001240  20 20 20 4d 4f 56 20 20  20 20 20 52 32 2c 23 30  |   MOV     R2,#0|
00001250  0d 00 88 2a 20 20 20 20  20 20 20 20 20 20 20 20  |...*            |
00001260  20 20 20 20 20 20 20 20  53 57 49 20 20 20 20 20  |        SWI     |
00001270  22 58 4f 53 5f 42 79 74  65 22 0d 00 89 2a 20 20  |"XOS_Byte"...*  |
00001280  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001290  20 20 4c 44 4d 46 44 20  20 20 52 31 33 21 2c 7b  |  LDMFD   R13!,{|
000012a0  52 31 34 7d 0d 00 8a 25  20 20 20 20 20 20 20 20  |R14}...%        |
000012b0  20 20 20 20 20 20 20 20  20 20 20 20 54 45 51 50  |            TEQP|
000012c0  20 20 20 20 52 39 2c 23  30 0d 00 8b 25 20 20 20  |    R9,#0...%   |
000012d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000012e0  20 4d 4f 56 4e 56 20 20  20 52 30 2c 52 30 0d 00  | MOVNV   R0,R0..|
000012f0  8c 31 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.1              |
00001300  20 20 20 20 20 20 4c 44  4d 46 44 20 20 20 52 31  |      LDMFD   R1|
00001310  33 21 2c 7b 52 31 2d 52  31 31 2c 50 43 7d 5e 0d  |3!,{R1-R11,PC}^.|
00001320  00 8d 18 20 20 20 20 20  20 20 20 20 20 20 20 20  |...             |
00001330  20 20 20 20 20 20 20 0d  00 8e 28 2e 6b 65 79 75  |       ...(.keyu|
00001340  70 20 20 20 20 20 20 20  20 20 20 20 20 20 20 4c  |p              L|
00001350  44 52 20 20 20 20 20 52  34 2c 5b 52 31 32 5d 0d  |DR     R4,[R12].|
00001360  00 8f 27 20 20 20 20 20  20 20 20 20 20 20 20 20  |..'             |
00001370  20 20 20 20 20 20 20 43  4d 50 20 20 20 20 20 52  |       CMP     R|
00001380  32 2c 23 26 35 45 0d 00  90 2a 20 20 20 20 20 20  |2,#&5E...*      |
00001390  20 20 20 20 20 20 20 20  20 20 20 20 20 20 42 49  |              BI|
000013a0  43 45 51 20 20 20 52 34  2c 52 34 2c 23 25 30 31  |CEQ   R4,R4,#%01|
000013b0  0d 00 91 27 20 20 20 20  20 20 20 20 20 20 20 20  |...'            |
000013c0  20 20 20 20 20 20 20 20  43 4d 50 20 20 20 20 20  |        CMP     |
000013d0  52 32 2c 23 26 36 30 0d  00 92 2a 20 20 20 20 20  |R2,#&60...*     |
000013e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 42  |               B|
000013f0  49 43 45 51 20 20 20 52  34 2c 52 34 2c 23 25 31  |ICEQ   R4,R4,#%1|
00001400  30 0d 00 93 28 20 20 20  20 20 20 20 20 20 20 20  |0...(           |
00001410  20 20 20 20 20 20 20 20  20 53 54 52 20 20 20 20  |         STR    |
00001420  20 52 34 2c 5b 52 31 32  5d 0d 00 94 27 20 20 20  | R4,[R12]...'   |
00001430  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001440  20 54 53 54 20 20 20 20  20 52 34 2c 23 25 31 31  | TST     R4,#%11|
00001450  0d 00 95 31 20 20 20 20  20 20 20 20 20 20 20 20  |...1            |
00001460  20 20 20 20 20 20 20 20  4c 44 4d 4e 45 46 44 20  |        LDMNEFD |
00001470  52 31 33 21 2c 7b 52 31  2d 52 31 31 2c 50 43 7d  |R13!,{R1-R11,PC}|
00001480  5e 0d 00 96 25 20 20 20  20 20 20 20 20 20 20 20  |^...%           |
00001490  20 20 20 20 20 20 20 20  20 4d 4f 56 20 20 20 20  |         MOV    |
000014a0  20 52 39 2c 50 43 0d 00  97 27 20 20 20 20 20 20  | R9,PC...'      |
000014b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 84 52  |              .R|
000014c0  20 20 20 20 20 52 38 2c  52 39 2c 23 33 0d 00 98  |     R8,R9,#3...|
000014d0  25 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |%               |
000014e0  20 20 20 20 20 54 45 51  50 20 20 20 20 52 38 2c  |     TEQP    R8,|
000014f0  23 30 0d 00 99 25 20 20  20 20 20 20 20 20 20 20  |#0...%          |
00001500  20 20 20 20 20 20 20 20  20 20 4d 4f 56 4e 56 20  |          MOVNV |
00001510  20 20 52 30 2c 52 30 0d  00 9a 2a 20 20 20 20 20  |  R0,R0...*     |
00001520  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 53  |               S|
00001530  54 4d 46 44 20 20 20 52  31 33 21 2c 7b 52 31 34  |TMFD   R13!,{R14|
00001540  7d 0d 00 9b 27 20 20 20  20 20 20 20 20 20 20 20  |}...'           |
00001550  20 20 20 20 20 20 20 20  20 4d 4f 56 20 20 20 20  |         MOV    |
00001560  20 52 30 2c 23 32 30 31  0d 00 9c 25 20 20 20 20  | R0,#201...%    |
00001570  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001580  4d 4f 56 20 20 20 20 20  52 31 2c 23 30 0d 00 9d  |MOV     R1,#0...|
00001590  25 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |%               |
000015a0  20 20 20 20 20 4d 4f 56  20 20 20 20 20 52 32 2c  |     MOV     R2,|
000015b0  23 30 0d 00 9e 2a 20 20  20 20 20 20 20 20 20 20  |#0...*          |
000015c0  20 20 20 20 20 20 20 20  20 20 53 57 49 20 20 20  |          SWI   |
000015d0  20 20 22 58 4f 53 5f 42  79 74 65 22 0d 00 9f 2a  |  "XOS_Byte"...*|
000015e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000015f0  20 20 20 20 4c 44 4d 46  44 20 20 20 52 31 33 21  |    LDMFD   R13!|
00001600  2c 7b 52 31 34 7d 0d 00  a0 25 20 20 20 20 20 20  |,{R14}...%      |
00001610  20 20 20 20 20 20 20 20  20 20 20 20 20 20 54 45  |              TE|
00001620  51 50 20 20 20 20 52 39  2c 23 30 0d 00 a1 25 20  |QP    R9,#0...% |
00001630  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001640  20 20 20 4d 4f 56 4e 56  20 20 20 52 30 2c 52 30  |   MOVNV   R0,R0|
00001650  0d 00 a2 31 2e 6f 75 74  6f 66 68 65 72 65 20 20  |...1.outofhere  |
00001660  20 20 20 20 20 20 20 20  4c 44 4d 46 44 20 20 20  |        LDMFD   |
00001670  52 31 33 21 2c 7b 52 31  2d 52 31 31 2c 50 43 7d  |R13!,{R1-R11,PC}|
00001680  5e 0d 00 a3 18 20 20 20  20 20 20 20 20 20 20 20  |^....           |
00001690  20 20 20 20 20 20 20 20  20 0d 00 a4 27 2e 66 69  |         ...'.fi|
000016a0  72 6d 6b 65 79 20 20 20  20 20 20 20 20 20 20 20  |rmkey           |
000016b0  20 54 53 54 20 20 20 20  20 52 34 2c 23 25 31 31  | TST     R4,#%11|
000016c0  0d 00 a5 31 20 20 20 20  20 20 20 20 20 20 20 20  |...1            |
000016d0  20 20 20 20 20 20 20 20  4c 44 4d 45 51 46 44 20  |        LDMEQFD |
000016e0  52 31 33 21 2c 7b 52 31  2d 52 31 31 2c 50 43 7d  |R13!,{R1-R11,PC}|
000016f0  5e 0d 00 a6 27 20 20 20  20 20 20 20 20 20 20 20  |^...'           |
00001700  20 20 20 20 20 20 20 20  20 43 4d 50 20 20 20 20  |         CMP    |
00001710  20 52 32 2c 23 26 36 37  0d 00 a7 31 20 20 20 20  | R2,#&67...1    |
00001720  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001730  4c 44 4d 48 49 46 44 20  52 31 33 21 2c 7b 52 31  |LDMHIFD R13!,{R1|
00001740  2d 52 31 31 2c 50 43 7d  5e 0d 00 a8 25 20 20 20  |-R11,PC}^...%   |
00001750  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001760  20 4d 4f 56 20 20 20 20  20 52 39 2c 50 43 0d 00  | MOV     R9,PC..|
00001770  a9 27 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.'              |
00001780  20 20 20 20 20 20 84 52  20 20 20 20 20 52 38 2c  |      .R     R8,|
00001790  52 39 2c 23 33 0d 00 aa  25 20 20 20 20 20 20 20  |R9,#3...%       |
000017a0  20 20 20 20 20 20 20 20  20 20 20 20 20 54 45 51  |             TEQ|
000017b0  50 20 20 20 20 52 38 2c  23 30 0d 00 ab 25 20 20  |P    R8,#0...%  |
000017c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000017d0  20 20 4d 4f 56 4e 56 20  20 20 52 30 2c 52 30 0d  |  MOVNV   R0,R0.|
000017e0  00 ac 2a 20 20 20 20 20  20 20 20 20 20 20 20 20  |..*             |
000017f0  20 20 20 20 20 20 20 53  54 4d 46 44 20 20 20 52  |       STMFD   R|
00001800  31 33 21 2c 7b 52 31 34  7d 0d 00 ad 2a 20 20 20  |13!,{R14}...*   |
00001810  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001820  20 41 44 44 20 20 20 20  20 52 31 32 2c 52 31 32  | ADD     R12,R12|
00001830  2c 23 34 0d 00 ae 2f 20  20 20 20 20 20 20 20 20  |,#4.../         |
00001840  20 20 20 20 20 20 20 20  20 20 20 41 44 44 20 20  |           ADD  |
00001850  20 20 20 52 34 2c 52 31  32 2c 52 32 2c 4c 53 4c  |   R4,R12,R2,LSL|
00001860  23 32 0d 00 af 27 20 20  20 20 20 20 20 20 20 20  |#2...'          |
00001870  20 20 20 20 20 20 20 20  20 20 4c 44 52 20 20 20  |          LDR   |
00001880  20 20 52 34 2c 5b 52 34  5d 0d 00 b0 25 20 20 20  |  R4,[R4]...%   |
00001890  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000018a0  20 43 4d 4e 20 20 20 20  20 52 34 2c 23 31 0d 00  | CMN     R4,#1..|
000018b0  b1 23 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.#              |
000018c0  20 20 20 20 20 20 42 45  51 20 20 20 20 20 6f 75  |      BEQ     ou|
000018d0  74 0d 00 b2 2a 2e 62 75  66 6c 6f 6f 70 20 20 20  |t...*.bufloop   |
000018e0  20 20 20 20 20 20 20 20  20 4c 44 52 42 20 20 20  |         LDRB   |
000018f0  20 52 32 2c 5b 52 34 5d  2c 23 31 0d 00 b3 25 20  | R2,[R4],#1...% |
00001900  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001910  20 20 20 43 4d 50 20 20  20 20 20 52 32 2c 23 30  |   CMP     R2,#0|
00001920  0d 00 b4 23 20 20 20 20  20 20 20 20 20 20 20 20  |...#            |
00001930  20 20 20 20 20 20 20 20  42 45 51 20 20 20 20 20  |        BEQ     |
00001940  6f 75 74 0d 00 b5 27 20  20 20 20 20 20 20 20 20  |out...'         |
00001950  20 20 20 20 20 20 20 20  20 20 20 4d 4f 56 20 20  |           MOV  |
00001960  20 20 20 52 30 2c 23 31  33 38 0d 00 b6 25 20 20  |   R0,#138...%  |
00001970  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001980  20 20 4d 4f 56 20 20 20  20 20 52 31 2c 23 30 0d  |  MOV     R1,#0.|
00001990  00 b7 2a 20 20 20 20 20  20 20 20 20 20 20 20 20  |..*             |
000019a0  20 20 20 20 20 20 20 53  57 49 20 20 20 20 20 22  |       SWI     "|
000019b0  58 4f 53 5f 42 79 74 65  22 0d 00 b8 27 20 20 20  |XOS_Byte"...'   |
000019c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000019d0  20 42 20 20 20 20 20 20  20 62 75 66 6c 6f 6f 70  | B       bufloop|
000019e0  0d 00 b9 2a 2e 6f 75 74  20 20 20 20 20 20 20 20  |...*.out        |
000019f0  20 20 20 20 20 20 20 20  4c 44 4d 46 44 20 20 20  |        LDMFD   |
00001a00  52 31 33 21 2c 7b 52 31  34 7d 0d 00 ba 25 20 20  |R13!,{R14}...%  |
00001a10  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001a20  20 20 54 45 51 50 20 20  20 20 52 39 2c 23 30 0d  |  TEQP    R9,#0.|
00001a30  00 bb 25 20 20 20 20 20  20 20 20 20 20 20 20 20  |..%             |
00001a40  20 20 20 20 20 20 20 4d  4f 56 4e 56 20 20 20 52  |       MOVNV   R|
00001a50  30 2c 52 30 0d 00 bc 31  20 20 20 20 20 20 20 20  |0,R0...1        |
00001a60  20 20 20 20 20 20 20 20  20 20 20 20 4c 44 4d 46  |            LDMF|
00001a70  44 20 20 20 52 31 33 21  2c 7b 52 31 2d 52 31 31  |D   R13!,{R1-R11|
00001a80  2c 50 43 7d 5e 0d 00 bd  18 20 20 20 20 20 20 20  |,PC}^....       |
00001a90  20 20 20 20 20 20 20 20  20 20 20 20 20 0d 00 be  |             ...|
00001aa0  5d 2e 63 6f 6d 6d 61 6e  64 73 20 20 20 20 20 20  |].commands      |
00001ab0  20 20 20 20 20 45 51 55  53 20 20 20 20 22 45 78  |     EQUS    "Ex|
00001ac0  70 61 6e 64 22 20 20 20  20 20 20 3a 45 51 55 42  |pand"      :EQUB|
00001ad0  20 20 20 20 30 20 20 20  20 20 20 20 20 20 20 20  |    0           |
00001ae0  20 20 3a 41 4c 49 47 4e  20 20 20 3a 45 51 55 44  |  :ALIGN   :EQUD|
00001af0  20 20 20 20 65 78 70 61  6e 64 0d 00 bf 62 20 20  |    expand...b  |
00001b00  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001b10  20 20 45 51 55 44 20 20  20 20 26 30 30 30 33 30  |  EQUD    &00030|
00001b20  30 30 32 20 20 20 20 20  3a 45 51 55 44 20 20 20  |002     :EQUD   |
00001b30  20 45 78 70 61 6e 64 5f  53 79 6e 74 61 78 20 20  | Expand_Syntax  |
00001b40  20 20 20 20 20 20 20 20  3a 45 51 55 44 20 20 20  |        :EQUD   |
00001b50  20 45 78 70 61 6e 64 5f  48 65 6c 70 0d 00 c0 58  | Expand_Help...X|
00001b60  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001b70  20 20 20 20 45 51 55 53  20 20 20 20 22 4b 65 79  |    EQUS    "Key|
00001b80  4e 61 6d 65 73 22 20 20  20 20 3a 45 51 55 42 20  |Names"    :EQUB |
00001b90  20 20 20 30 20 20 20 20  20 20 20 20 20 20 20 20  |   0            |
00001ba0  20 3a 41 4c 49 47 4e 20  20 20 3a 45 51 55 44 20  | :ALIGN   :EQUD |
00001bb0  20 20 20 30 0d 00 c1 5f  20 20 20 20 20 20 20 20  |   0..._        |
00001bc0  20 20 20 20 20 20 20 20  20 20 20 20 45 51 55 44  |            EQUD|
00001bd0  20 20 20 20 26 32 30 30  32 30 30 30 32 20 20 20  |    &20020002   |
00001be0  20 20 3a 45 51 55 44 20  20 20 20 30 20 20 20 20  |  :EQUD    0    |
00001bf0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001c00  20 20 3a 45 51 55 44 20  20 20 20 4b 65 79 4e 61  |  :EQUD    KeyNa|
00001c10  6d 65 73 0d 00 c2 58 20  20 20 20 20 20 20 20 20  |mes...X         |
00001c20  20 20 20 20 20 20 20 20  20 20 20 45 51 55 53 20  |           EQUS |
00001c30  20 20 20 22 51 75 69 63  6b 54 79 70 69 6e 67 22  |   "QuickTyping"|
00001c40  20 3a 45 51 55 42 20 20  20 20 30 20 20 20 20 20  | :EQUB    0     |
00001c50  20 20 20 20 20 20 20 20  3a 41 4c 49 47 4e 20 20  |        :ALIGN  |
00001c60  20 3a 45 51 55 44 20 20  20 20 30 0d 00 c3 62 20  | :EQUD    0...b |
00001c70  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001c80  20 20 20 45 51 55 44 20  20 20 20 26 30 30 30 33  |   EQUD    &0003|
00001c90  30 30 30 32 20 20 20 20  20 3a 45 51 55 44 20 20  |0002     :EQUD  |
00001ca0  20 20 30 20 20 20 20 20  20 20 20 20 20 20 20 20  |  0             |
00001cb0  20 20 20 20 20 20 20 20  20 3a 45 51 55 44 20 20  |         :EQUD  |
00001cc0  20 20 51 75 69 63 6b 54  79 70 69 6e 67 0d 00 c4  |  QuickTyping...|
00001cd0  21 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |!               |
00001ce0  20 20 20 20 20 45 51 55  42 20 20 20 20 30 0d 00  |     EQUB    0..|
00001cf0  c5 18 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |..              |
00001d00  20 20 20 20 20 20 0d 00  c6 61 2e 45 78 70 61 6e  |      ...a.Expan|
00001d10  64 5f 48 65 6c 70 20 20  20 20 20 20 20 20 45 51  |d_Help        EQ|
00001d20  55 53 20 20 20 20 22 2a  22 2b a4 65 28 30 29 2b  |US    "*"+.e(0)+|
00001d30  22 20 22 2b a4 65 28 31  39 29 2b 22 20 22 2b a4  |" "+.e(19)+" "+.|
00001d40  65 28 32 29 2b 22 6b 65  79 20 65 78 70 61 6e 73  |e(2)+"key expans|
00001d50  69 6f 6e 20 64 65 66 69  6e 69 74 69 6f 6e 73 2e  |ion definitions.|
00001d60  22 2b bd 28 31 33 29 0d  00 c7 44 2e 45 78 70 61  |"+.(13)...D.Expa|
00001d70  6e 64 5f 53 79 6e 74 61  78 20 20 20 20 20 20 45  |nd_Syntax      E|
00001d80  51 55 53 20 20 20 20 a4  65 28 31 34 29 2b 22 4b  |QUS    .e(14)+"K|
00001d90  65 79 4e 61 6d 65 3e 20  3c 65 78 70 61 6e 73 69  |eyName> <expansi|
00001da0  6f 6e 3e 22 3a 45 51 55  42 20 30 0d 00 c8 66 2e  |on>":EQUB 0...f.|
00001db0  51 75 69 63 6b 54 79 70  69 6e 67 20 20 20 20 20  |QuickTyping     |
00001dc0  20 20 20 45 51 55 53 20  20 20 20 22 55 73 65 20  |   EQUS    "Use |
00001dd0  65 69 74 68 65 72 20 41  6c 74 20 6b 65 79 20 77  |either Alt key w|
00001de0  69 74 68 20 61 6e 79 20  6f 74 68 65 72 20 6b 65  |ith any other ke|
00001df0  79 20 74 6f 20 70 72 6f  64 75 63 65 20 61 20 70  |y to produce a p|
00001e00  72 65 64 65 66 69 6e 65  64 20 73 74 72 69 6e 67  |redefined string|
00001e10  22 0d 00 c9 59 20 20 20  20 20 20 20 20 20 20 20  |"...Y           |
00001e20  20 20 20 20 20 20 20 20  20 45 51 55 53 20 20 20  |         EQUS   |
00001e30  20 22 2e 20 45 67 20 41  6c 74 2d 50 20 63 6f 75  | ". Eg Alt-P cou|
00001e40  6c 64 20 62 65 20 64 65  66 69 6e 65 64 20 61 73  |ld be defined as|
00001e50  20 50 52 49 4e 54 20 65  74 63 2e 20 22 2b bd 28  | PRINT etc. "+.(|
00001e60  30 29 20 3a 20 41 4c 49  47 4e 0d 00 ca 2a 2e 4b  |0) : ALIGN...*.K|
00001e70  65 79 4e 61 6d 65 73 20  20 20 20 20 20 20 20 20  |eyNames         |
00001e80  20 20 53 54 4d 46 44 20  20 20 52 31 33 21 2c 7b  |  STMFD   R13!,{|
00001e90  52 31 34 7d 0d 00 cb 2a  20 20 20 20 20 20 20 20  |R14}...*        |
00001ea0  20 20 20 20 20 20 20 20  20 20 20 20 41 44 52 20  |            ADR |
00001eb0  20 20 20 20 52 30 2c 4b  65 79 54 65 78 74 0d 00  |    R0,KeyText..|
00001ec0  cc 24 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.$              |
00001ed0  20 20 20 20 20 20 41 44  52 20 20 20 20 20 52 31  |      ADR     R1|
00001ee0  2c 30 0d 00 cd 24 20 20  20 20 20 20 20 20 20 20  |,0...$          |
00001ef0  20 20 20 20 20 20 20 20  20 20 41 44 52 20 20 20  |          ADR   |
00001f00  20 20 52 32 2c 30 0d 00  ce 31 20 20 20 20 20 20  |  R2,0...1      |
00001f10  20 20 20 20 20 20 20 20  20 20 20 20 20 20 53 57  |              SW|
00001f20  49 20 20 20 20 20 22 58  4f 53 5f 50 72 65 74 74  |I     "XOS_Prett|
00001f30  79 50 72 69 6e 74 22 0d  00 cf 25 20 20 20 20 20  |yPrint"...%     |
00001f40  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 4d  |               M|
00001f50  4f 56 20 20 20 20 20 52  30 2c 23 30 0d 00 d0 29  |OV     R0,#0...)|
00001f60  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001f70  20 20 20 20 4c 44 4d 46  44 20 20 20 52 31 33 21  |    LDMFD   R13!|
00001f80  2c 7b 50 43 7d 0d 00 d1  1d 20 20 20 20 20 20 20  |,{PC}....       |
00001f90  20 20 20 20 20 20 20 20  20 20 20 20 20 41 4c 49  |             ALI|
00001fa0  47 4e 0d 00 d2 50 2e 4b  65 79 54 65 78 74 20 20  |GN...P.KeyText  |
00001fb0  20 20 20 20 20 20 20 20  20 20 45 51 55 53 20 20  |          EQUS  |
00001fc0  20 20 22 45 61 63 68 20  6b 65 79 20 68 61 73 20  |  "Each key has |
00001fd0  61 20 6e 61 6d 65 2c 20  66 6f 72 20 6d 6f 73 74  |a name, for most|
00001fe0  20 74 68 69 73 20 69 73  20 74 68 65 20 6e 61 6d  | this is the nam|
00001ff0  65 22 0d 00 d3 50 20 20  20 20 20 20 20 20 20 20  |e"...P          |
00002000  20 20 20 20 20 20 20 20  20 20 45 51 55 53 20 20  |          EQUS  |
00002010  20 20 22 20 6d 61 72 6b  65 64 20 6f 6e 20 74 68  |  " marked on th|
00002020  65 20 6b 65 79 2e 20 46  6f 72 20 6b 65 79 73 20  |e key. For keys |
00002030  77 69 74 68 20 73 68 69  66 74 65 64 20 61 6e 64  |with shifted and|
00002040  20 22 0d 00 d4 56 20 20  20 20 20 20 20 20 20 20  | "...V          |
00002050  20 20 20 20 20 20 20 20  20 20 45 51 55 53 20 20  |          EQUS  |
00002060  20 20 22 75 6e 73 68 69  66 74 65 64 20 6d 61 72  |  "unshifted mar|
00002070  6b 69 6e 67 73 20 75 73  65 20 75 6e 73 68 69 66  |kings use unshif|
00002080  74 65 64 2e 20 46 75 6e  63 74 69 6f 6e 20 6b 65  |ted. Function ke|
00002090  79 73 20 61 72 65 20 22  0d 00 d5 56 20 20 20 20  |ys are "...V    |
000020a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000020b0  45 51 55 53 20 20 20 20  22 6e 61 6d 65 64 20 46  |EQUS    "named F|
000020c0  31 20 65 74 63 2c 20 4e  75 6d 65 72 69 63 20 6b  |1 etc, Numeric k|
000020d0  65 79 70 61 64 20 6b 65  79 73 20 61 72 65 20 6e  |eypad keys are n|
000020e0  30 2d 6e 39 2c 20 6e 23  2c 20 6e 2a 2c 22 0d 00  |0-n9, n#, n*,"..|
000020f0  d6 4d 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.M              |
00002100  20 20 20 20 20 20 45 51  55 53 20 20 20 20 22 20  |      EQUS    " |
00002110  65 74 63 2c 20 4e 75 6d  20 61 6e 64 20 45 6e 74  |etc, Num and Ent|
00002120  65 72 2e 20 4f 74 68 65  72 20 6b 65 79 73 20 61  |er. Other keys a|
00002130  72 65 20 2e 2e 2e 22 2b  bd 31 33 0d 00 d7 57 20  |re ..."+.13...W |
00002140  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002150  20 20 20 45 51 55 53 20  20 20 20 bd 39 2b 22 53  |   EQUS    .9+"S|
00002160  68 69 66 74 2d 4c 2c 20  53 68 69 66 74 2d 52 22  |hift-L, Shift-R"|
00002170  2b bd 39 2b 22 20 2d 20  4c 65 66 74 2f 52 69 67  |+.9+" - Left/Rig|
00002180  68 74 20 48 61 6e 64 20  53 68 69 66 74 22 2b bd  |ht Hand Shift"+.|
00002190  31 33 0d 00 d8 52 20 20  20 20 20 20 20 20 20 20  |13...R          |
000021a0  20 20 20 20 20 20 20 20  20 20 45 51 55 53 20 20  |          EQUS  |
000021b0  20 20 bd 39 2b 22 55 70  2c 20 44 6f 77 6e 2c 20  |  .9+"Up, Down, |
000021c0  4c 65 66 74 2c 20 52 69  67 68 74 22 2b bd 39 2b  |Left, Right"+.9+|
000021d0  22 20 2d 20 43 75 72 73  6f 72 20 6b 65 79 73 22  |" - Cursor keys"|
000021e0  2b bd 31 33 0d 00 d9 59  20 20 20 20 20 20 20 20  |+.13...Y        |
000021f0  20 20 20 20 20 20 20 20  20 20 20 20 45 51 55 53  |            EQUS|
00002200  20 20 20 20 bd 39 2b 22  43 61 70 73 2c 20 4e 75  |    .9+"Caps, Nu|
00002210  6d 2c 20 53 63 72 6f 6c  6c 22 2b bd 39 2b 22 20  |m, Scroll"+.9+" |
00002220  2d 20 43 61 70 73 2c 20  4e 75 6d 2c 20 53 63 72  |- Caps, Num, Scr|
00002230  6f 6c 6c 20 4c 6f 63 6b  22 2b bd 31 33 0d 00 da  |oll Lock"+.13...|
00002240  4e 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |N               |
00002250  20 20 20 20 20 45 51 55  53 20 20 20 20 bd 39 2b  |     EQUS    .9+|
00002260  22 50 61 67 65 55 70 2c  20 50 61 67 65 44 6f 77  |"PageUp, PageDow|
00002270  6e 22 2b bd 39 2b 22 20  2d 20 50 61 67 65 20 55  |n"+.9+" - Page U|
00002280  70 2f 44 6f 77 6e 22 2b  bd 31 33 0d 00 db 57 20  |p/Down"+.13...W |
00002290  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000022a0  20 20 20 45 51 55 53 20  20 20 20 bd 39 2b 22 43  |   EQUS    .9+"C|
000022b0  74 72 6c 2d 4c 2c 20 43  74 72 6c 2d 52 22 2b bd  |trl-L, Ctrl-R"+.|
000022c0  39 2b bd 39 2b 22 20 2d  20 4c 65 66 74 2f 52 69  |9+.9+" - Left/Ri|
000022d0  67 68 74 20 68 61 6e 64  20 43 74 72 6c 22 2b bd  |ght hand Ctrl"+.|
000022e0  31 33 0d 00 dc 4a 20 20  20 20 20 20 20 20 20 20  |13...J          |
000022f0  20 20 20 20 20 20 20 20  20 20 45 51 55 53 20 20  |          EQUS  |
00002300  20 20 bd 39 2b 22 42 61  63 6b 22 2b bd 39 2b bd  |  .9+"Back"+.9+.|
00002310  39 2b bd 39 2b 22 20 2d  20 42 61 63 6b 73 70 61  |9+.9+" - Backspa|
00002320  63 65 22 20 3a 20 45 51  55 42 20 30 0d 00 dd 09  |ce" : EQUB 0....|
00002330  41 4c 49 47 4e 0d 00 de  31 2e 65 78 70 61 6e 64  |ALIGN...1.expand|
00002340  20 20 20 20 20 20 20 20  20 20 20 20 20 53 54 4d  |             STM|
00002350  46 44 20 20 20 52 31 33  21 2c 7b 52 37 2d 52 31  |FD   R13!,{R7-R1|
00002360  31 2c 52 31 34 7d 0d 00  df 25 20 20 20 20 20 20  |1,R14}...%      |
00002370  20 20 20 20 20 20 20 20  20 20 20 20 20 20 4d 4f  |              MO|
00002380  56 20 20 20 20 20 52 35  2c 52 30 0d 00 e0 25 20  |V     R5,R0...% |
00002390  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000023a0  20 20 20 4d 4f 56 20 20  20 20 20 52 30 2c 23 36  |   MOV     R0,#6|
000023b0  0d 00 e1 27 20 20 20 20  20 20 20 20 20 20 20 20  |...'            |
000023c0  20 20 20 20 20 20 20 20  4d 4f 56 20 20 20 20 20  |        MOV     |
000023d0  52 33 2c 23 32 35 36 0d  00 e2 2c 20 20 20 20 20  |R3,#256...,     |
000023e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 53  |               S|
000023f0  57 49 20 20 20 20 20 22  58 4f 53 5f 4d 6f 64 75  |WI     "XOS_Modu|
00002400  6c 65 22 0d 00 e3 25 20  20 20 20 20 20 20 20 20  |le"...%         |
00002410  20 20 20 20 20 20 20 20  20 20 20 4d 4f 56 20 20  |           MOV  |
00002420  20 20 20 52 33 2c 52 32  0d 00 e4 18 20 20 20 20  |   R3,R2....    |
00002430  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002440  0d 00 e5 2a 2e 63 6f 70  79 73 74 72 20 20 20 20  |...*.copystr    |
00002450  20 20 20 20 20 20 20 20  4c 44 52 42 20 20 20 20  |        LDRB    |
00002460  52 30 2c 5b 52 35 5d 2c  23 31 0d 00 e6 25 20 20  |R0,[R5],#1...%  |
00002470  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002480  20 20 43 4d 50 20 20 20  20 20 52 30 2c 23 30 0d  |  CMP     R0,#0.|
00002490  00 e7 2a 20 20 20 20 20  20 20 20 20 20 20 20 20  |..*             |
000024a0  20 20 20 20 20 20 20 53  54 52 42 20 20 20 20 52  |       STRB    R|
000024b0  30 2c 5b 52 33 5d 2c 23  31 0d 00 e8 27 20 20 20  |0,[R3],#1...'   |
000024c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000024d0  20 42 4e 45 20 20 20 20  20 63 6f 70 79 73 74 72  | BNE     copystr|
000024e0  0d 00 e9 25 20 20 20 20  20 20 20 20 20 20 20 20  |...%            |
000024f0  20 20 20 20 20 20 20 20  4d 4f 56 20 20 20 20 20  |        MOV     |
00002500  52 33 2c 52 32 0d 00 ea  2a 2e 74 65 72 6d 69 6e  |R3,R2...*.termin|
00002510  61 74 65 31 20 20 20 20  20 20 20 20 20 4c 44 52  |ate1         LDR|
00002520  42 20 20 20 20 52 30 2c  5b 52 33 5d 2c 23 31 0d  |B    R0,[R3],#1.|
00002530  00 eb 26 20 20 20 20 20  20 20 20 20 20 20 20 20  |..&             |
00002540  20 20 20 20 20 20 20 43  4d 50 20 20 20 20 20 52  |       CMP     R|
00002550  30 2c 23 33 32 0d 00 ec  2a 20 20 20 20 20 20 20  |0,#32...*       |
00002560  20 20 20 20 20 20 20 20  20 20 20 20 20 42 4e 45  |             BNE|
00002570  20 20 20 20 20 74 65 72  6d 69 6e 61 74 65 31 0d  |     terminate1.|
00002580  00 ed 28 20 20 20 20 20  20 20 20 20 20 20 20 20  |..(             |
00002590  20 20 20 20 20 20 20 53  55 42 20 20 20 20 20 52  |       SUB     R|
000025a0  34 2c 52 33 2c 23 31 0d  00 ee 25 20 20 20 20 20  |4,R3,#1...%     |
000025b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 4d  |               M|
000025c0  4f 56 20 20 20 20 20 52  30 2c 23 30 0d 00 ef 2a  |OV     R0,#0...*|
000025d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000025e0  20 20 20 20 53 54 52 42  20 20 20 20 52 30 2c 5b  |    STRB    R0,[|
000025f0  52 34 5d 2c 23 31 0d 00  f0 18 20 20 20 20 20 20  |R4],#1....      |
00002600  20 20 20 20 20 20 20 20  20 20 20 20 20 20 0d 00  |              ..|
00002610  f1 27 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.'              |
00002620  20 20 20 20 20 20 41 44  52 20 20 20 20 20 52 35  |      ADR     R5|
00002630  2c 64 61 74 61 0d 00 f2  25 20 20 20 20 20 20 20  |,data...%       |
00002640  20 20 20 20 20 20 20 20  20 20 20 20 20 4d 4f 56  |             MOV|
00002650  20 20 20 20 20 52 36 2c  23 30 0d 00 f3 2a 2e 66  |     R6,#0...*.f|
00002660  69 6e 64 6b 65 79 20 20  20 20 20 20 20 20 20 20  |indkey          |
00002670  20 20 4c 44 52 20 20 20  20 20 52 31 2c 5b 52 35  |  LDR     R1,[R5|
00002680  2c 52 36 5d 0d 00 f4 28  2e 61 64 64 70 63 20 20  |,R6]...(.addpc  |
00002690  20 20 20 20 20 20 20 20  20 20 20 20 41 44 44 20  |            ADD |
000026a0  20 20 20 20 52 31 2c 50  43 2c 52 31 0d 00 f5 28  |    R1,PC,R1...(|
000026b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000026c0  20 20 20 20 53 55 42 20  20 20 20 20 52 31 2c 52  |    SUB     R1,R|
000026d0  31 2c 23 38 0d 00 f6 37  20 20 20 20 20 20 20 20  |1,#8...7        |
000026e0  20 20 20 20 20 20 20 20  20 20 20 20 53 55 42 20  |            SUB |
000026f0  20 20 20 20 52 31 2c 52  31 2c 23 61 64 64 70 63  |    R1,R1,#addpc|
00002700  20 80 20 28 32 35 35 3c  3c 38 29 0d 00 f7 32 20  | . (255<<8)...2 |
00002710  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002720  20 20 20 53 55 42 20 20  20 20 20 52 31 2c 52 31  |   SUB     R1,R1|
00002730  2c 23 61 64 64 70 63 20  80 20 32 35 35 0d 00 f8  |,#addpc . 255...|
00002740  25 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |%               |
00002750  20 20 20 20 20 4d 56 4e  20 20 20 20 20 52 30 2c  |     MVN     R0,|
00002760  23 30 0d 00 f9 25 20 20  20 20 20 20 20 20 20 20  |#0...%          |
00002770  20 20 20 20 20 20 20 20  20 20 4d 4f 56 20 20 20  |          MOV   |
00002780  20 20 52 33 2c 23 31 0d  00 fa 34 20 20 20 20 20  |  R3,#1...4     |
00002790  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 53  |               S|
000027a0  57 49 20 20 20 20 20 22  58 54 65 72 72 69 74 6f  |WI     "XTerrito|
000027b0  72 79 5f 43 6f 6c 6c 61  74 65 22 0d 00 fb 26 20  |ry_Collate"...& |
000027c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000027d0  20 20 20 42 45 51 20 20  20 20 20 73 65 74 6b 65  |   BEQ     setke|
000027e0  79 0d 00 fc 28 20 20 20  20 20 20 20 20 20 20 20  |y...(           |
000027f0  20 20 20 20 20 20 20 20  20 41 44 44 20 20 20 20  |         ADD    |
00002800  20 52 36 2c 52 36 2c 23  34 0d 00 fd 2a 20 20 20  | R6,R6,#4...*   |
00002810  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002820  20 43 4d 50 20 20 20 20  20 52 36 2c 23 26 36 38  | CMP     R6,#&68|
00002830  3c 3c 32 0d 00 fe 27 20  20 20 20 20 20 20 20 20  |<<2...'         |
00002840  20 20 20 20 20 20 20 20  20 20 20 42 4c 54 20 20  |           BLT  |
00002850  20 20 20 66 69 6e 64 6b  65 79 0d 00 ff 18 20 20  |   findkey....  |
00002860  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002870  20 20 0d 01 00 25 2e 6e  6f 6b 65 79 20 20 20 20  |  ...%.nokey    |
00002880  20 20 20 20 20 20 20 20  20 20 4d 4f 56 20 20 20  |          MOV   |
00002890  20 20 52 30 2c 23 37 0d  01 01 2c 20 20 20 20 20  |  R0,#7...,     |
000028a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 53  |               S|
000028b0  57 49 20 20 20 20 20 22  58 4f 53 5f 4d 6f 64 75  |WI     "XOS_Modu|
000028c0  6c 65 22 0d 01 02 29 20  20 20 20 20 20 20 20 20  |le"...)         |
000028d0  20 20 20 20 20 20 20 20  20 20 20 41 44 52 20 20  |           ADR  |
000028e0  20 20 20 52 30 2c 62 61  64 6b 65 79 0d 01 03 31  |   R0,badkey...1|
000028f0  2e 65 78 70 61 6e 64 65  72 72 6f 72 20 20 20 20  |.expanderror    |
00002900  20 20 20 20 4c 44 4d 46  44 20 20 20 52 31 33 21  |    LDMFD   R13!|
00002910  2c 7b 52 37 2d 52 31 31  2c 52 31 34 7d 0d 01 04  |,{R7-R11,R14}...|
00002920  2d 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |-               |
00002930  20 20 20 20 20 84 52 20  20 20 20 20 52 31 34 2c  |     .R     R14,|
00002940  52 31 34 2c 23 31 3c 3c  32 38 0d 01 05 26 20 20  |R14,#1<<28...&  |
00002950  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002960  20 20 4d 4f 56 53 20 20  20 20 50 43 2c 52 31 34  |  MOVS    PC,R14|
00002970  0d 01 06 21 2e 62 61 64  6b 65 79 20 20 20 20 20  |...!.badkey     |
00002980  20 20 20 20 20 20 20 20  45 51 55 44 20 20 20 20  |        EQUD    |
00002990  30 0d 01 07 61 20 20 20  20 20 20 20 20 20 20 20  |0...a           |
000029a0  20 20 20 20 20 20 20 20  20 45 51 55 53 20 20 20  |         EQUS   |
000029b0  20 22 49 6c 6c 65 67 61  6c 20 4b 65 79 6e 61 6d  | "Illegal Keynam|
000029c0  65 20 2d 20 73 65 65 20  22 22 68 65 6c 70 20 4b  |e - see ""help K|
000029d0  65 79 4e 61 6d 65 73 22  22 20 66 6f 72 20 70 72  |eyNames"" for pr|
000029e0  6f 70 65 72 20 6e 61 6d  65 73 22 3a 45 51 55 42  |oper names":EQUB|
000029f0  20 30 0d 01 08 21 2e 73  69 6c 6c 79 61 6c 74 20  | 0...!.sillyalt |
00002a00  20 20 20 20 20 20 20 20  20 20 45 51 55 44 20 20  |          EQUD  |
00002a10  20 20 30 0d 01 09 4a 20  20 20 20 20 20 20 20 20  |  0...J         |
00002a20  20 20 20 20 20 20 20 20  20 20 20 45 51 55 53 20  |           EQUS |
00002a30  20 20 20 22 43 61 6e 27  74 20 64 65 66 69 6e 65  |   "Can't define|
00002a40  20 74 68 65 20 41 6c 74  20 6b 65 79 73 2e 20 53  | the Alt keys. S|
00002a50  69 6c 6c 79 21 22 3a 45  51 55 42 20 30 0d 01 0a  |illy!":EQUB 0...|
00002a60  21 2e 61 6c 72 65 61 64  79 20 20 20 20 20 20 20  |!.already       |
00002a70  20 20 20 20 20 45 51 55  44 20 20 20 20 30 0d 01  |     EQUD    0..|
00002a80  0b 38 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.8              |
00002a90  20 20 20 20 20 20 45 51  55 53 20 20 20 20 22 41  |      EQUS    "A|
00002aa0  6c 72 65 61 64 79 20 64  65 66 69 6e 65 64 22 3a  |lready defined":|
00002ab0  45 51 55 42 20 30 0d 01  0c 18 20 20 20 20 20 20  |EQUB 0....      |
00002ac0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 0d 01  |              ..|
00002ad0  0d 2a 2e 73 65 74 6b 65  79 20 20 20 20 20 20 20  |.*.setkey       |
00002ae0  20 20 20 20 20 20 43 4d  50 20 20 20 20 20 52 36  |      CMP     R6|
00002af0  2c 23 26 36 30 3c 3c 32  0d 01 0e 2a 20 20 20 20  |,#&60<<2...*    |
00002b00  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002b10  43 4d 50 4e 45 20 20 20  52 36 2c 23 26 35 45 3c  |CMPNE   R6,#&5E<|
00002b20  3c 32 0d 01 0f 2b 20 20  20 20 20 20 20 20 20 20  |<2...+          |
00002b30  20 20 20 20 20 20 20 20  20 20 41 44 52 45 51 20  |          ADREQ |
00002b40  20 20 52 30 2c 73 69 6c  6c 79 61 6c 74 0d 01 10  |  R0,sillyalt...|
00002b50  2b 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |+               |
00002b60  20 20 20 20 20 42 45 51  20 20 20 20 20 65 78 70  |     BEQ     exp|
00002b70  61 6e 64 65 72 72 6f 72  0d 01 11 29 20 20 20 20  |anderror...)    |
00002b80  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002b90  4c 44 52 20 20 20 20 20  52 31 32 2c 5b 52 31 32  |LDR     R12,[R12|
00002ba0  5d 0d 01 12 2a 20 20 20  20 20 20 20 20 20 20 20  |]...*           |
00002bb0  20 20 20 20 20 20 20 20  20 41 44 44 20 20 20 20  |         ADD    |
00002bc0  20 52 31 32 2c 52 31 32  2c 23 34 0d 01 13 2b 20  | R12,R12,#4...+ |
00002bd0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002be0  20 20 20 4c 44 52 20 20  20 20 20 52 30 2c 5b 52  |   LDR     R0,[R|
00002bf0  31 32 2c 52 36 5d 0d 01  14 25 20 20 20 20 20 20  |12,R6]...%      |
00002c00  20 20 20 20 20 20 20 20  20 20 20 20 20 20 43 4d  |              CM|
00002c10  4e 20 20 20 20 20 52 30  2c 23 31 0d 01 15 26 20  |N     R0,#1...& |
00002c20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002c30  20 20 20 42 45 51 20 20  20 20 20 69 6e 73 65 72  |   BEQ     inser|
00002c40  74 0d 01 16 04 0d 01 17  25 2e 64 65 6c 65 74 65  |t.......%.delete|
00002c50  20 20 20 20 20 20 20 20  20 20 20 20 20 4d 4f 56  |             MOV|
00002c60  20 20 20 20 20 52 35 2c  52 30 0d 01 18 2a 2e 64  |     R5,R0...*.d|
00002c70  6c 6f 6f 70 20 20 20 20  20 20 20 20 20 20 20 20  |loop            |
00002c80  20 20 4c 44 52 42 20 20  20 20 52 31 2c 5b 52 35  |  LDRB    R1,[R5|
00002c90  5d 2c 23 31 0d 01 19 26  20 20 20 20 20 20 20 20  |],#1...&        |
00002ca0  20 20 20 20 20 20 20 20  20 20 20 20 43 4d 50 20  |            CMP |
00002cb0  20 20 20 20 52 31 2c 23  33 32 0d 01 1a 25 20 20  |    R1,#32...%  |
00002cc0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002cd0  20 20 42 47 54 20 20 20  20 20 64 6c 6f 6f 70 0d  |  BGT     dloop.|
00002ce0  01 1b 28 20 20 20 20 20  20 20 20 20 20 20 20 20  |..(             |
00002cf0  20 20 20 20 20 20 20 53  55 42 20 20 20 20 20 52  |       SUB     R|
00002d00  35 2c 52 35 2c 52 30 0d  01 1c 27 20 20 20 20 20  |5,R5,R0...'     |
00002d10  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 54  |               T|
00002d20  53 54 20 20 20 20 20 52  35 2c 23 25 31 31 0d 01  |ST     R5,#%11..|
00002d30  1d 2a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.*              |
00002d40  20 20 20 20 20 20 42 49  43 4e 45 20 20 20 52 35  |      BICNE   R5|
00002d50  2c 52 35 2c 23 25 31 31  0d 01 1e 3e 20 20 20 20  |,R5,#%11...>    |
00002d60  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002d70  41 44 44 4e 45 20 20 20  52 35 2c 52 35 2c 23 34  |ADDNE   R5,R5,#4|
00002d80  20 3b 20 52 35 3d 6c 65  6e 67 74 68 20 28 41 4c  | ; R5=length (AL|
00002d90  49 47 4e 65 64 29 0d 01  1f 18 20 20 20 20 20 20  |IGNed)....      |
00002da0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 0d 01  |              ..|
00002db0  20 28 20 20 20 20 20 20  20 20 20 20 20 20 20 20  | (              |
00002dc0  20 20 20 20 20 20 41 44  44 20 20 20 20 20 52 35  |      ADD     R5|
00002dd0  2c 52 30 2c 52 35 0d 01  21 2c 20 20 20 20 20 20  |,R0,R5..!,      |
00002de0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 41 44  |              AD|
00002df0  44 20 20 20 20 20 52 39  2c 52 31 32 2c 23 32 30  |D     R9,R12,#20|
00002e00  34 38 0d 01 22 2a 2e 6d  6f 76 65 6c 70 20 20 20  |48.."*.movelp   |
00002e10  20 20 20 20 20 20 20 20  20 20 4c 44 52 20 20 20  |          LDR   |
00002e20  20 20 52 33 2c 5b 52 35  5d 2c 23 34 0d 01 23 2a  |  R3,[R5],#4..#*|
00002e30  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002e40  20 20 20 20 53 54 52 20  20 20 20 20 52 33 2c 5b  |    STR     R3,[|
00002e50  52 30 5d 2c 23 34 0d 01  24 25 20 20 20 20 20 20  |R0],#4..$%      |
00002e60  20 20 20 20 20 20 20 20  20 20 20 20 20 20 43 4d  |              CM|
00002e70  50 20 20 20 20 20 52 35  2c 52 39 0d 01 25 26 20  |P     R5,R9..%& |
00002e80  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002e90  20 20 20 42 4c 54 20 20  20 20 20 6d 6f 76 65 6c  |   BLT     movel|
00002ea0  70 0d 01 26 34 20 20 20  20 20 20 20 20 20 20 20  |p..&4           |
00002eb0  20 20 20 20 20 20 20 20  20 53 55 42 20 20 20 20  |         SUB    |
00002ec0  20 52 30 2c 52 35 2c 52  30 20 3b 20 52 30 3d 6c  | R0,R5,R0 ; R0=l|
00002ed0  65 6e 67 74 68 0d 01 27  4d 20 20 20 20 20 20 20  |ength..'M       |
00002ee0  20 20 20 20 20 20 20 20  20 20 20 20 20 41 44 44  |             ADD|
00002ef0  20 20 20 20 20 52 35 2c  52 36 2c 23 34 20 20 3b  |     R5,R6,#4  ;|
00002f00  20 52 35 3d 70 6f 69 6e  74 65 72 20 74 6f 20 6e  | R5=pointer to n|
00002f10  65 78 74 20 73 74 72 69  6e 67 20 70 6f 69 6e 74  |ext string point|
00002f20  65 72 0d 01 28 2b 2e 64  65 6c 6c 6f 6f 70 20 20  |er..(+.delloop  |
00002f30  20 20 20 20 20 20 20 20  20 20 4c 44 52 20 20 20  |          LDR   |
00002f40  20 20 52 33 2c 5b 52 31  32 2c 52 35 5d 0d 01 29  |  R3,[R12,R5]..)|
00002f50  25 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |%               |
00002f60  20 20 20 20 20 43 4d 4e  20 20 20 20 20 52 33 2c  |     CMN     R3,|
00002f70  23 31 0d 01 2a 28 20 20  20 20 20 20 20 20 20 20  |#1..*(          |
00002f80  20 20 20 20 20 20 20 20  20 20 53 55 42 4e 45 20  |          SUBNE |
00002f90  20 20 52 33 2c 52 33 2c  52 30 0d 01 2b 2b 20 20  |  R3,R3,R0..++  |
00002fa0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002fb0  20 20 53 54 52 4e 45 20  20 20 52 33 2c 5b 52 31  |  STRNE   R3,[R1|
00002fc0  32 2c 52 35 5d 0d 01 2c  28 20 20 20 20 20 20 20  |2,R5]..,(       |
00002fd0  20 20 20 20 20 20 20 20  20 20 20 20 20 41 44 44  |             ADD|
00002fe0  20 20 20 20 20 52 35 2c  52 35 2c 23 34 0d 01 2d  |     R5,R5,#4..-|
00002ff0  2a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |*               |
00003000  20 20 20 20 20 43 4d 50  20 20 20 20 20 52 35 2c  |     CMP     R5,|
00003010  23 26 36 37 3c 3c 32 0d  01 2e 27 20 20 20 20 20  |#&67<<2...'     |
00003020  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 42  |               B|
00003030  4c 54 20 20 20 20 20 64  65 6c 6c 6f 6f 70 0d 01  |LT     delloop..|
00003040  2f 25 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |/%              |
00003050  20 20 20 20 20 20 4d 56  4e 20 20 20 20 20 52 30  |      MVN     R0|
00003060  2c 23 30 0d 01 30 2b 20  20 20 20 20 20 20 20 20  |,#0..0+         |
00003070  20 20 20 20 20 20 20 20  20 20 20 53 54 52 20 20  |           STR  |
00003080  20 20 20 52 30 2c 5b 52  31 32 2c 52 36 5d 0d 01  |   R0,[R12,R6]..|
00003090  31 18 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |1.              |
000030a0  20 20 20 20 20 20 0d 01  32 28 2e 69 6e 73 65 72  |      ..2(.inser|
000030b0  74 20 20 20 20 20 20 20  20 20 20 20 20 20 41 44  |t             AD|
000030c0  44 20 20 20 20 20 52 35  2c 52 36 2c 23 34 0d 01  |D     R5,R6,#4..|
000030d0  33 2a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |3*              |
000030e0  20 20 20 20 20 20 43 4d  50 20 20 20 20 20 52 35  |      CMP     R5|
000030f0  2c 23 26 36 37 3c 3c 32  0d 01 34 28 20 20 20 20  |,#&67<<2..4(    |
00003100  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00003110  42 47 54 20 20 20 20 20  6c 6f 6f 6b 62 61 63 6b  |BGT     lookback|
00003120  0d 01 35 2b 2e 66 6c 6f  6f 70 66 20 20 20 20 20  |..5+.floopf     |
00003130  20 20 20 20 20 20 20 20  4c 44 52 20 20 20 20 20  |        LDR     |
00003140  52 30 2c 5b 52 31 32 2c  52 35 5d 0d 01 36 25 20  |R0,[R12,R5]..6% |
00003150  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00003160  20 20 20 43 4d 4e 20 20  20 20 20 52 30 2c 23 31  |   CMN     R0,#1|
00003170  0d 01 37 27 20 20 20 20  20 20 20 20 20 20 20 20  |..7'            |
00003180  20 20 20 20 20 20 20 20  42 4e 45 20 20 20 20 20  |        BNE     |
00003190  66 6f 72 77 61 72 64 0d  01 38 28 20 20 20 20 20  |forward..8(     |
000031a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 41  |               A|
000031b0  44 44 45 51 20 20 20 52  35 2c 52 35 2c 23 34 0d  |DDEQ   R5,R5,#4.|
000031c0  01 39 2a 20 20 20 20 20  20 20 20 20 20 20 20 20  |.9*             |
000031d0  20 20 20 20 20 20 20 43  4d 50 20 20 20 20 20 52  |       CMP     R|
000031e0  35 2c 23 26 36 38 3c 3c  32 0d 01 3a 26 20 20 20  |5,#&68<<2..:&   |
000031f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00003200  20 42 4e 45 20 20 20 20  20 66 6c 6f 6f 70 66 0d  | BNE     floopf.|
00003210  01 3b 28 2e 6c 6f 6f 6b  62 61 63 6b 20 20 20 20  |.;(.lookback    |
00003220  20 20 20 20 20 20 20 53  55 42 53 20 20 20 20 52  |       SUBS    R|
00003230  35 2c 52 36 2c 23 34 0d  01 3c 2b 20 20 20 20 20  |5,R6,#4..<+     |
00003240  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 42  |               B|
00003250  4d 49 20 20 20 20 20 77  68 61 74 74 68 65 68 65  |MI     whatthehe|
00003260  6c 6c 0d 01 3d 2b 2e 66  6c 6f 6f 70 62 20 20 20  |ll..=+.floopb   |
00003270  20 20 20 20 20 20 20 20  20 20 4c 44 52 20 20 20  |          LDR   |
00003280  20 20 52 30 2c 5b 52 31  32 2c 52 35 5d 0d 01 3e  |  R0,[R12,R5]..>|
00003290  25 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |%               |
000032a0  20 20 20 20 20 43 4d 4e  20 20 20 20 20 52 30 2c  |     CMN     R0,|
000032b0  23 31 0d 01 3f 29 20 20  20 20 20 20 20 20 20 20  |#1..?)          |
000032c0  20 20 20 20 20 20 20 20  20 20 42 4e 45 20 20 20  |          BNE   |
000032d0  20 20 62 61 63 6b 77 61  72 64 73 0d 01 40 28 20  |  backwards..@( |
000032e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000032f0  20 20 20 53 55 42 45 51  20 20 20 52 35 2c 52 35  |   SUBEQ   R5,R5|
00003300  2c 23 34 0d 01 41 25 20  20 20 20 20 20 20 20 20  |,#4..A%         |
00003310  20 20 20 20 20 20 20 20  20 20 20 43 4d 50 20 20  |           CMP  |
00003320  20 20 20 52 35 2c 23 30  0d 01 42 26 20 20 20 20  |   R5,#0..B&    |
00003330  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00003340  42 50 4c 20 20 20 20 20  66 6c 6f 6f 70 62 0d 01  |BPL     floopb..|
00003350  43 2e 2e 77 68 61 74 74  68 65 68 65 6c 6c 20 20  |C..whatthehell  |
00003360  20 20 20 20 20 20 41 44  44 20 20 20 20 20 52 30  |      ADD     R0|
00003370  2c 52 31 32 2c 23 26 36  38 3c 3c 32 0d 01 44 2a  |,R12,#&68<<2..D*|
00003380  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00003390  20 20 20 20 42 20 20 20  20 20 20 20 63 6f 70 79  |    B       copy|
000033a0  73 74 72 69 6e 67 0d 01  45 04 0d 01 46 21 2e 73  |string..E...F!.s|
000033b0  70 61 63 65 65 72 72 20  20 20 20 20 20 20 20 20  |paceerr         |
000033c0  20 20 45 51 55 44 20 20  20 20 30 0d 01 47 48 20  |  EQUD    0..GH |
000033d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000033e0  20 20 20 45 51 55 53 20  20 20 20 22 4e 6f 74 20  |   EQUS    "Not |
000033f0  65 6e 6f 75 67 68 20 73  70 61 63 65 20 66 6f 72  |enough space for|
00003400  20 64 65 66 69 6e 69 74  69 6f 6e 22 3a 45 51 55  | definition":EQU|
00003410  42 20 30 0d 01 48 04 0d  01 49 25 2e 66 6f 72 77  |B 0..H...I%.forw|
00003420  61 72 64 20 20 20 20 20  20 20 20 20 20 20 20 4d  |ard            M|
00003430  4f 56 20 20 20 20 20 52  32 2c 52 34 0d 01 4a 2a  |OV     R2,R4..J*|
00003440  2e 6e 65 78 74 62 79 74  65 20 20 20 20 20 20 20  |.nextbyte       |
00003450  20 20 20 20 4c 44 52 42  20 20 20 20 52 31 2c 5b  |    LDRB    R1,[|
00003460  52 32 5d 2c 23 31 0d 01  4b 26 20 20 20 20 20 20  |R2],#1..K&      |
00003470  20 20 20 20 20 20 20 20  20 20 20 20 20 20 43 4d  |              CM|
00003480  50 20 20 20 20 20 52 31  2c 23 33 32 0d 01 4c 28  |P     R1,#32..L(|
00003490  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000034a0  20 20 20 20 42 47 54 20  20 20 20 20 6e 65 78 74  |    BGT     next|
000034b0  62 79 74 65 0d 01 4d 28  20 20 20 20 20 20 20 20  |byte..M(        |
000034c0  20 20 20 20 20 20 20 20  20 20 20 20 53 55 42 20  |            SUB |
000034d0  20 20 20 20 52 32 2c 52  32 2c 52 34 0d 01 4e 27  |    R2,R2,R4..N'|
000034e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000034f0  20 20 20 20 54 53 54 20  20 20 20 20 52 32 2c 23  |    TST     R2,#|
00003500  25 31 31 0d 01 4f 27 20  20 20 20 20 20 20 20 20  |%11..O'         |
00003510  20 20 20 20 20 20 20 20  20 20 20 42 45 51 20 20  |           BEQ  |
00003520  20 20 20 6d 6f 64 66 6f  75 72 0d 01 50 2a 20 20  |   modfour..P*  |
00003530  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00003540  20 20 42 49 43 20 20 20  20 20 52 32 2c 52 32 2c  |  BIC     R2,R2,|
00003550  23 25 31 31 0d 01 51 28  20 20 20 20 20 20 20 20  |#%11..Q(        |
00003560  20 20 20 20 20 20 20 20  20 20 20 20 41 44 44 20  |            ADD |
00003570  20 20 20 20 52 32 2c 52  32 2c 23 34 0d 01 52 2c  |    R2,R2,#4..R,|
00003580  2e 6d 6f 64 66 6f 75 72  20 20 20 20 20 20 20 20  |.modfour        |
00003590  20 20 20 20 4c 44 52 20  20 20 20 20 52 31 2c 5b  |    LDR     R1,[|
000035a0  52 31 32 2c 23 2d 34 5d  0d 01 53 2a 20 20 20 20  |R12,#-4]..S*    |
000035b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000035c0  42 49 43 20 20 20 20 20  52 31 2c 52 31 2c 23 25  |BIC     R1,R1,#%|
000035d0  31 31 0d 01 54 25 20 20  20 20 20 20 20 20 20 20  |11..T%          |
000035e0  20 20 20 20 20 20 20 20  20 20 43 4d 50 20 20 20  |          CMP   |
000035f0  20 20 52 31 2c 52 32 0d  01 55 2b 20 20 20 20 20  |  R1,R2..U+     |
00003600  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 41  |               A|
00003610  44 52 4c 54 20 20 20 52  30 2c 73 70 61 63 65 65  |DRLT   R0,spacee|
00003620  72 72 0d 01 56 2b 20 20  20 20 20 20 20 20 20 20  |rr..V+          |
00003630  20 20 20 20 20 20 20 20  20 20 42 4c 54 20 20 20  |          BLT   |
00003640  20 20 65 78 70 61 6e 64  65 72 72 6f 72 0d 01 57  |  expanderror..W|
00003650  2b 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |+               |
00003660  20 20 20 20 20 53 54 52  20 20 20 20 20 52 30 2c  |     STR     R0,|
00003670  5b 52 31 32 2c 52 36 5d  0d 01 58 2c 20 20 20 20  |[R12,R6]..X,    |
00003680  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00003690  41 44 44 20 20 20 20 20  52 39 2c 52 31 32 2c 23  |ADD     R9,R12,#|
000036a0  32 30 34 38 0d 01 59 28  20 20 20 20 20 20 20 20  |2048..Y(        |
000036b0  20 20 20 20 20 20 20 20  20 20 20 20 53 55 42 20  |            SUB |
000036c0  20 20 20 20 52 39 2c 52  39 2c 23 38 0d 01 5a 2b  |    R9,R9,#8..Z+|
000036d0  2e 6d 6f 76 65 6c 6f 6f  70 20 20 20 20 20 20 20  |.moveloop       |
000036e0  20 20 20 20 4c 44 52 20  20 20 20 20 52 33 2c 5b  |    LDR     R3,[|
000036f0  52 39 2c 2d 52 32 5d 0d  01 5b 2b 20 20 20 20 20  |R9,-R2]..[+     |
00003700  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 53  |               S|
00003710  54 52 20 20 20 20 20 52  33 2c 5b 52 39 5d 2c 23  |TR     R3,[R9],#|
00003720  2d 34 0d 01 5c 25 20 20  20 20 20 20 20 20 20 20  |-4..\%          |
00003730  20 20 20 20 20 20 20 20  20 20 43 4d 50 20 20 20  |          CMP   |
00003740  20 20 52 30 2c 52 39 0d  01 5d 28 20 20 20 20 20  |  R0,R9..](     |
00003750  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 42  |               B|
00003760  4d 49 20 20 20 20 20 6d  6f 76 65 6c 6f 6f 70 0d  |MI     moveloop.|
00003770  01 5e 28 20 20 20 20 20  20 20 20 20 20 20 20 20  |.^(             |
00003780  20 20 20 20 20 20 20 41  44 44 20 20 20 20 20 52  |       ADD     R|
00003790  39 2c 52 36 2c 23 34 0d  01 5f 2b 2e 63 6e 67 61  |9,R6,#4.._+.cnga|
000037a0  64 64 72 20 20 20 20 20  20 20 20 20 20 20 20 4c  |ddr            L|
000037b0  44 52 20 20 20 20 20 52  38 2c 5b 52 31 32 2c 52  |DR     R8,[R12,R|
000037c0  39 5d 0d 01 60 25 20 20  20 20 20 20 20 20 20 20  |9]..`%          |
000037d0  20 20 20 20 20 20 20 20  20 20 43 4d 4e 20 20 20  |          CMN   |
000037e0  20 20 52 38 2c 23 31 0d  01 61 28 20 20 20 20 20  |  R8,#1..a(     |
000037f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 41  |               A|
00003800  44 44 4e 45 20 20 20 52  38 2c 52 32 2c 52 38 0d  |DDNE   R8,R2,R8.|
00003810  01 62 2b 20 20 20 20 20  20 20 20 20 20 20 20 20  |.b+             |
00003820  20 20 20 20 20 20 20 53  54 52 4e 45 20 20 20 52  |       STRNE   R|
00003830  38 2c 5b 52 31 32 2c 52  39 5d 0d 01 63 28 20 20  |8,[R12,R9]..c(  |
00003840  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00003850  20 20 41 44 44 20 20 20  20 20 52 39 2c 52 39 2c  |  ADD     R9,R9,|
00003860  23 34 0d 01 64 2a 20 20  20 20 20 20 20 20 20 20  |#4..d*          |
00003870  20 20 20 20 20 20 20 20  20 20 43 4d 50 20 20 20  |          CMP   |
00003880  20 20 52 39 2c 23 26 36  38 3c 3c 32 0d 01 65 27  |  R9,#&68<<2..e'|
00003890  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000038a0  20 20 20 20 42 4c 54 20  20 20 20 20 63 6e 67 61  |    BLT     cnga|
000038b0  64 64 72 0d 01 66 2a 20  20 20 20 20 20 20 20 20  |ddr..f*         |
000038c0  20 20 20 20 20 20 20 20  20 20 20 42 20 20 20 20  |           B    |
000038d0  20 20 20 63 6f 70 79 73  74 72 69 6e 67 0d 01 67  |   copystring..g|
000038e0  18 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
000038f0  20 20 20 20 20 0d 01 68  25 2e 62 61 63 6b 77 61  |     ..h%.backwa|
00003900  72 64 73 20 20 20 20 20  20 20 20 20 20 4d 4f 56  |rds          MOV|
00003910  20 20 20 20 20 52 32 2c  52 34 0d 01 69 2a 2e 6e  |     R2,R4..i*.n|
00003920  65 78 74 62 79 74 65 32  20 20 20 20 20 20 20 20  |extbyte2        |
00003930  20 20 4c 44 52 42 20 20  20 20 52 31 2c 5b 52 32  |  LDRB    R1,[R2|
00003940  5d 2c 23 31 0d 01 6a 26  20 20 20 20 20 20 20 20  |],#1..j&        |
00003950  20 20 20 20 20 20 20 20  20 20 20 20 43 4d 50 20  |            CMP |
00003960  20 20 20 20 52 31 2c 23  33 32 0d 01 6b 29 20 20  |    R1,#32..k)  |
00003970  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00003980  20 20 42 47 54 20 20 20  20 20 6e 65 78 74 62 79  |  BGT     nextby|
00003990  74 65 32 0d 01 6c 28 20  20 20 20 20 20 20 20 20  |te2..l(         |
000039a0  20 20 20 20 20 20 20 20  20 20 20 53 55 42 20 20  |           SUB  |
000039b0  20 20 20 52 32 2c 52 32  2c 52 34 0d 01 6d 27 20  |   R2,R2,R4..m' |
000039c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000039d0  20 20 20 54 53 54 20 20  20 20 20 52 32 2c 23 25  |   TST     R2,#%|
000039e0  31 31 0d 01 6e 2c 20 20  20 20 20 20 20 20 20 20  |11..n,          |
000039f0  20 20 20 20 20 20 20 20  20 20 42 49 43 4e 45 20  |          BICNE |
00003a00  20 20 20 20 52 32 2c 52  32 2c 23 25 31 31 0d 01  |    R2,R2,#%11..|
00003a10  6f 2a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |o*              |
00003a20  20 20 20 20 20 20 41 44  44 4e 45 20 20 20 20 20  |      ADDNE     |
00003a30  52 32 2c 52 32 2c 23 34  0d 01 70 2c 20 20 20 20  |R2,R2,#4..p,    |
00003a40  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00003a50  4c 44 52 20 20 20 20 20  52 31 2c 5b 52 31 32 2c  |LDR     R1,[R12,|
00003a60  23 2d 34 5d 0d 01 71 2a  20 20 20 20 20 20 20 20  |#-4]..q*        |
00003a70  20 20 20 20 20 20 20 20  20 20 20 20 42 49 43 20  |            BIC |
00003a80  20 20 20 20 52 31 2c 52  31 2c 23 25 31 31 0d 01  |    R1,R1,#%11..|
00003a90  72 25 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |r%              |
00003aa0  20 20 20 20 20 20 43 4d  50 20 20 20 20 20 52 31  |      CMP     R1|
00003ab0  2c 52 32 0d 01 73 2b 20  20 20 20 20 20 20 20 20  |,R2..s+         |
00003ac0  20 20 20 20 20 20 20 20  20 20 20 41 44 52 4c 54  |           ADRLT|
00003ad0  20 20 20 52 30 2c 73 70  61 63 65 65 72 72 0d 01  |   R0,spaceerr..|
00003ae0  74 2b 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |t+              |
00003af0  20 20 20 20 20 20 42 4c  54 20 20 20 20 20 65 78  |      BLT     ex|
00003b00  70 61 6e 64 65 72 72 6f  72 0d 01 75 04 0d 01 76  |panderror..u...v|
00003b10  2a 2e 6e 65 78 74 62 79  74 65 33 20 20 20 20 20  |*.nextbyte3     |
00003b20  20 20 20 20 20 4c 44 52  42 20 20 20 20 52 31 2c  |     LDRB    R1,|
00003b30  5b 52 30 5d 2c 23 31 0d  01 77 26 20 20 20 20 20  |[R0],#1..w&     |
00003b40  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 43  |               C|
00003b50  4d 50 20 20 20 20 20 52  31 2c 23 33 32 0d 01 78  |MP     R1,#32..x|
00003b60  29 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |)               |
00003b70  20 20 20 20 20 42 47 54  20 20 20 20 20 6e 65 78  |     BGT     nex|
00003b80  74 62 79 74 65 33 0d 01  79 27 20 20 20 20 20 20  |tbyte3..y'      |
00003b90  20 20 20 20 20 20 20 20  20 20 20 20 20 20 54 53  |              TS|
00003ba0  54 20 20 20 20 20 52 30  2c 23 25 31 31 0d 01 7a  |T     R0,#%11..z|
00003bb0  2a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |*               |
00003bc0  20 20 20 20 20 42 49 43  4e 45 20 20 20 52 30 2c  |     BICNE   R0,|
00003bd0  52 30 2c 23 25 31 31 0d  01 7b 28 20 20 20 20 20  |R0,#%11..{(     |
00003be0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 41  |               A|
00003bf0  44 44 4e 45 20 20 20 52  30 2c 52 30 2c 23 34 0d  |DDNE   R0,R0,#4.|
00003c00  01 7c 18 20 20 20 20 20  20 20 20 20 20 20 20 20  |.|.             |
00003c10  20 20 20 20 20 20 20 0d  01 7d 2b 20 20 20 20 20  |       ..}+     |
00003c20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 53  |               S|
00003c30  54 52 20 20 20 20 20 52  30 2c 5b 52 31 32 2c 52  |TR     R0,[R12,R|
00003c40  36 5d 0d 01 7e 2c 20 20  20 20 20 20 20 20 20 20  |6]..~,          |
00003c50  20 20 20 20 20 20 20 20  20 20 41 44 44 20 20 20  |          ADD   |
00003c60  20 20 52 39 2c 52 31 32  2c 23 32 30 34 38 0d 01  |  R9,R12,#2048..|
00003c70  7f 28 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.(              |
00003c80  20 20 20 20 20 20 53 55  42 20 20 20 20 20 52 39  |      SUB     R9|
00003c90  2c 52 39 2c 23 38 0d 01  80 2b 2e 6d 6f 76 65 6c  |,R9,#8...+.movel|
00003ca0  6f 6f 70 35 20 20 20 20  20 20 20 20 20 20 4c 44  |oop5          LD|
00003cb0  52 20 20 20 20 20 52 33  2c 5b 52 39 2c 2d 52 32  |R     R3,[R9,-R2|
00003cc0  5d 0d 01 81 2b 20 20 20  20 20 20 20 20 20 20 20  |]...+           |
00003cd0  20 20 20 20 20 20 20 20  20 53 54 52 20 20 20 20  |         STR    |
00003ce0  20 52 33 2c 5b 52 39 5d  2c 23 2d 34 0d 01 82 25  | R3,[R9],#-4...%|
00003cf0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00003d00  20 20 20 20 43 4d 50 20  20 20 20 20 52 30 2c 52  |    CMP     R0,R|
00003d10  39 0d 01 83 29 20 20 20  20 20 20 20 20 20 20 20  |9...)           |
00003d20  20 20 20 20 20 20 20 20  20 42 4d 49 20 20 20 20  |         BMI    |
00003d30  20 6d 6f 76 65 6c 6f 6f  70 35 0d 01 84 18 20 20  | moveloop5....  |
00003d40  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00003d50  20 20 0d 01 85 2b 2e 63  6f 70 79 73 74 72 69 6e  |  ...+.copystrin|
00003d60  67 20 20 20 20 20 20 20  20 20 53 54 52 20 20 20  |g         STR   |
00003d70  20 20 52 30 2c 5b 52 31  32 2c 52 36 5d 0d 01 86  |  R0,[R12,R6]...|
00003d80  2a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |*               |
00003d90  20 20 20 20 20 4c 44 52  42 20 20 20 20 52 31 2c  |     LDRB    R1,|
00003da0  5b 52 34 5d 2c 23 31 0d  01 87 26 20 20 20 20 20  |[R4],#1...&     |
00003db0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 43  |               C|
00003dc0  4d 50 20 20 20 20 20 52  31 2c 23 33 32 0d 01 88  |MP     R1,#32...|
00003dd0  2a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |*               |
00003de0  20 20 20 20 20 42 45 51  20 20 20 20 20 63 6f 70  |     BEQ     cop|
00003df0  79 73 74 72 69 6e 67 0d  01 89 25 20 20 20 20 20  |ystring...%     |
00003e00  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 4d  |               M|
00003e10  4f 56 20 20 20 20 20 52  39 2c 52 30 0d 01 8a 2a  |OV     R9,R0...*|
00003e20  2e 63 6c 6f 6f 70 20 20  20 20 20 20 20 20 20 20  |.cloop          |
00003e30  20 20 20 20 53 54 52 42  20 20 20 20 52 31 2c 5b  |    STRB    R1,[|
00003e40  52 30 5d 2c 23 31 0d 01  8b 2a 20 20 20 20 20 20  |R0],#1...*      |
00003e50  20 20 20 20 20 20 20 20  20 20 20 20 20 20 4c 44  |              LD|
00003e60  52 42 20 20 20 20 52 31  2c 5b 52 34 5d 2c 23 31  |RB    R1,[R4],#1|
00003e70  0d 01 8c 26 20 20 20 20  20 20 20 20 20 20 20 20  |...&            |
00003e80  20 20 20 20 20 20 20 20  43 4d 50 20 20 20 20 20  |        CMP     |
00003e90  52 31 2c 23 33 32 0d 01  8d 25 20 20 20 20 20 20  |R1,#32...%      |
00003ea0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 42 47  |              BG|
00003eb0  54 20 20 20 20 20 63 6c  6f 6f 70 0d 01 8e 25 20  |T     cloop...% |
00003ec0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00003ed0  20 20 20 4d 4f 56 20 20  20 20 20 52 31 2c 23 30  |   MOV     R1,#0|
00003ee0  0d 01 8f 2a 20 20 20 20  20 20 20 20 20 20 20 20  |...*            |
00003ef0  20 20 20 20 20 20 20 20  53 54 52 42 20 20 20 20  |        STRB    |
00003f00  52 31 2c 5b 52 30 5d 2c  23 31 0d 01 90 28 20 20  |R1,[R0],#1...(  |
00003f10  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00003f20  20 20 53 55 42 20 20 20  20 20 52 30 2c 52 30 2c  |  SUB     R0,R0,|
00003f30  52 39 0d 01 91 27 20 20  20 20 20 20 20 20 20 20  |R9...'          |
00003f40  20 20 20 20 20 20 20 20  20 20 54 53 54 20 20 20  |          TST   |
00003f50  20 20 52 30 2c 23 25 31  31 0d 01 92 2b 20 20 20  |  R0,#%11...+   |
00003f60  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00003f70  20 80 4e 45 20 20 20 52  30 2c 52 30 2c 23 32 35  | .NE   R0,R0,#25|
00003f80  35 3c 3c 32 0d 01 93 28  20 20 20 20 20 20 20 20  |5<<2...(        |
00003f90  20 20 20 20 20 20 20 20  20 20 20 20 41 44 44 4e  |            ADDN|
00003fa0  45 20 20 20 52 30 2c 52  30 2c 23 34 0d 01 94 2c  |E   R0,R0,#4...,|
00003fb0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00003fc0  20 20 20 20 4c 44 52 20  20 20 20 20 52 31 2c 5b  |    LDR     R1,[|
00003fd0  52 31 32 2c 23 2d 34 5d  0d 01 95 28 20 20 20 20  |R12,#-4]...(    |
00003fe0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00003ff0  53 55 42 20 20 20 20 20  52 31 2c 52 31 2c 52 30  |SUB     R1,R1,R0|
00004000  0d 01 96 2c 20 20 20 20  20 20 20 20 20 20 20 20  |...,            |
00004010  20 20 20 20 20 20 20 20  53 54 52 20 20 20 20 20  |        STR     |
00004020  52 31 2c 5b 52 31 32 2c  23 2d 34 5d 0d 01 97 31  |R1,[R12,#-4]...1|
00004030  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00004040  20 20 20 20 4c 44 4d 46  44 20 20 20 52 31 33 21  |    LDMFD   R13!|
00004050  2c 7b 52 37 2d 52 31 31  2c 50 43 7d 5e 0d 01 98  |,{R7-R11,PC}^...|
00004060  18 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00004070  20 20 20 20 20 0d 01 99  23 2e 64 61 74 61 20 20  |     ...#.data  |
00004080  20 20 20 20 20 20 20 20  20 20 20 20 20 3a a4 64  |             :.d|
00004090  61 74 61 62 6c 6f 63 6b  0d 01 9a 1f 2e 69 6e 64  |atablock.....ind|
000040a0  65 78 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |ex              |
000040b0  3a a4 69 6e 64 65 78 0d  01 9b 05 5d 0d 01 9c 05  |:.index....]....|
000040c0  e1 0d ff                                          |...|
000040c3