Home » Archimedes archive » Archimedes World » AW-1996-07.adf » !AcornAns/AcornAns

!AcornAns/AcornAns

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 » Archimedes World » AW-1996-07.adf
Filename: !AcornAns/AcornAns
Read OK:
File size: 22E55 bytes
Load address: FFF3FB46
Exec address: CB17B3C3
File contents
�Sound*.� sj*.F�� ���c4$� tj4$F��D���main	$� V��	$F������#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <math.h>

#define TRACE 0
#include "trace.h"

#include "wimpt.h"
#include "werr.h"
#include "bbc.h"
#include "os.h"
#include "akbd.h"

#include "swis.h"

extern int quickdiv_init(int divisor);
extern int quickdiv(int numerator);
extern int rbbcinc(int r, int k);
extern int div_frac16(int number, int divisor);
extern int mul_frac16(int x, int a);
extern int mul_frac16c(int x, int a);
extern int sqrt_frac16(unsigned int x);
extern int gauss16(void);
extern void sgauss16(int seed);
extern int cos16(int a);
extern int sin16(int a);
extern int exp16(int a);
extern int ln16(int a);
extern int pow16(int a, int b);
extern int acs16(int a);
extern int asn16(int a);
extern int pitch16(int a);

extern char *voice_base;
extern char *wave_base;
extern char *wave_end;

typedef enum {multi, nonmulti} monitor;
monitor monitortype;

#define diff(a,b) ((a)<(b) ? (b)-(a) : (a)-(b))
#define lone 16
#define one (1<<lone)
#define lwts 10
#define wtsize (1<<lwts)
#define sres 1024	/*pitch resolution (corresponds to vertical screen res of picture)*/
#define ltran 256	/*loop limit for transient behaviour*/
#define lasym 64	/*loop limit for asymptotic behaviour*/

int wavetable[wtsize];
int pitch[sres];
char *linlog;
int sampleperiod;

int oldvoice[8];
int voice;

/***********************************************************************************************************/

monitor read_monitor_type(void)
{
  int r2;
  os_swi3r(6, 161,133,0, 0,0,&r2);
  if ((r2/4 & 3) == 1) return multi;
  else return nonmulti;
}

void restore(void)
{
  int v;
  char *err;
  wimpt_complain(os_swi2r(Sound_RemoveVoice, 0, voice, (int *)&err, &v));
  if (v==0) {
    printf("error in restore\n");
    werr(0, err);
  }
  for (v=1; v<=8; v++) wimpt_complain(os_swi2(Sound_AttachVoice, v, oldvoice[v-1]));
  wimpt_complain(os_swi6(Sound_Configure, 1, 0, 0, 0, 0, 0));
  /*wimpt_complain(os_cli("Voices"));*/
}

/*takes a phase increment p and finds the note of closest phase increment from array l (of n elements,
  which stores phase accumulators for notes in last packet) returning the index of that note;
  this is needed to ensure new notes begin their phase from the end phase of the nearest similar note in
  the last packet of sound*/
int nearnote(int p, unsigned int *l, unsigned int n)
{
  int i=0;
  int j=i+n-1;
  int m;
  int p1, p2;
  if (n==0) return 0; /*this shouldn't ever happen!*/
  if (n==1) return i;
  for (;;) {
    if (n==2) {
      p1=(l[i]<<16)>>16;
      p2=(l[j]<<16)>>16;
      return diff(p1,p)<diff(p2,p) ? i : j;
    }
    m = i+n/2;
    p1 = (l[m]<<16)>>16;
    if (p1==p) return m;
    if (p1<p) i=m;
    else j=m;
    n=j+1-i;
  }
}

BOOL init_globals(void)
{
  int s, i;
  int *channel_handler;

  monitortype = read_monitor_type();

  for (s=0; s<wtsize; s++) wavetable[s] = sin16(s << lone+2-lwts);

  /*when converting graph to sound, let vertical component correspond to pitch and vary from
    0x2000 (2 octaves below middle C) to 0x8000 (4 octaves above middle C) - change 0x2000 or 0x6000 below to alter this relation*/
  for (s=0, i=0x2000; s<sres; s++, i+=0x6000/sres) pitch[s] = pitch16(i);

  wimpt_complain(os_swi6r(Sound_Configure, 0, 0, 0, 0, 0, 0, 0, 0, &sampleperiod, (int *)&channel_handler, 0, 0));
  linlog = (char *)channel_handler[2];

  return TRUE;
}

BOOL input_params(int *dur, int *size, int *dres, int *lmin, int *lmax)
{
  double dbl;
  BOOL ok;

  printf("\n\n");
  printf("                  T h e   S o u n d   o f   C h a o s\n\n\n");
  printf("After image/sample generation is complete the sample will play repeatedly.\n\n");
  printf("At that point, use:\n\n");
  printf("  Escape to end this program,\n");
  printf("  Return to re-run it,\n");
  printf("  Left/Right cursor (+shift) to seek out interesting new lambda regions\n");
  printf("  (followed by any other key to resume playing of current sample).\n\n\n");

  do {
    do {
      printf("Please enter sample duration in centiseconds (eg 3000 for a 30s sample; must be at least 100) ");
      scanf("%i", dur);
    } while (*dur<100);
    *size = (*dur*10000)/sampleperiod;
    if (wave_base=malloc(*size), wave_base==0) {
      printf("Can't allocate sample memory of %i bytes - try a shorter duration or quit & increase free memory, then run again!\n", *size);
      ok=FALSE;
    }
    else ok=TRUE;
  } while (!ok);
  wave_end = wave_base+*size;

  do {
    printf("Please enter sample resolution (100-10000, suggest 1000) ");
    scanf("%i", dres);
  } while (*dres<100 || *dres>10000);

  do {
    printf("Please enter lambda min (0-4) ");
    scanf("%Lf", &dbl);
  } while (dbl<0 || dbl>4);
  *lmin = (int)(dbl*one);

  do {
    printf("Please enter lambda max (0-4) ");
    scanf("%Lf", &dbl);
  } while (dbl<=*lmin/65536.0 || dbl>4);
  *lmax = (int)(dbl*one);

  return TRUE;
}

void add_voice(void)
{
  int v;
  wimpt_complain(os_swi2r(Sound_InstallVoice, (int)voice_base, 0, 0, &voice));
  for (v=1; v<=8; v++) wimpt_complain(os_swi2r(Sound_AttachVoice, v, voice, 0, oldvoice+v-1));
  atexit(restore);
  wimpt_complain(os_swi6(Sound_Configure, 1, 0, 0, 0, 0, 0));
  /*wimpt_complain(os_cli("Voices"));*/
}

int main(void)
{
  int size;
  int uservolume, s;
  int sample;
  int i;
  int dur = 6000;  /*total sample length in centiseconds*/
  int dres = 1000; /*sample duration resolution - make sample up of dres packets of sound (corresponds to horizontal screen res of picture)*/
  char selection[sres];
  unsigned int list1[sres], list2[sres], *list, *listold;
  int nnotes, nnotesold;
  int lmin, lmax, l, x;
  int li, le, ldif, lr;
  int q;
  char *p, *pt;
  int pi, pe, pr;
  int sx, si, se, sr;
  int start_time;

  if (!init_globals()) return 0;

  for (;;) {

    bbc_mode(monitortype==multi ? 20 : 12);
    if (!input_params(&dur, &size, &dres, &lmin, &lmax)) return 0;
    ldif	= lmax-lmin;

    list=list1;
    list2[0]=(0<<16)+pitch[0];
    nnotesold=1;
    listold=list2;

    bbc_cls();
    wimpt_complain(os_swi1r(Sound_Volume, 127, &uservolume));
    for (p=pt=wave_base,pi=size/dres,pr=size%dres,pe=-dres, q=0, l=lmin,li=ldif/dres,lr=ldif%dres,le=-dres, sx=0,si=1280/dres,sr=1280%dres,se=-dres;
         q<dres;
         q++, l+=li,le+=2*lr,le>0?(l++,le-=2*dres):0, sx+=si,se+=2*sr,se>0?(sx++,se-=2*dres):0) {
      memset(selection, 0, sres);
      x = one/2;
      for (s=0; s<ltran; s++) x = mul_frac16c(l, mul_frac16c(x, one-x));
      for (s=0; s<lasym; s++) {
        x = mul_frac16c(l, mul_frac16c(x, one-x));
        i = x*sres/one;
        if (i<0) i=0;
        if (i>=sres) i=sres-1;
        selection[i]=255;
        bbc_plot(69,sx,i);
      }
      nnotes=0; /*now we compile our list of pitches for the current value of lambda*/
      for (s=0; s<sres; s++) if (selection[s]) list[nnotes++]=(0<<16)+pitch[s];
      /*it then remains to set the initial phase of each such note from the end phase of the nearest note in the last packet*/
      for (s=0; s<nnotes; s++) list[s] += (listold[nearnote(list[s], listold, nnotesold)]>>16)<<16;
      if (quickdiv_init(nnotes)<0) werr(1, "unexpected quickdiv_init error");
      for (pt+=pi,pe+=2*pr,pe>0?(pt++,pe-=2*dres):0,pt=(pt>wave_end||q==dres-1)?wave_end:pt; p<pt; p++) {
        for (i=0, sample=0; i<nnotes; i++) sample += wavetable[(list[i]+=list[i]<<16) >> 32-lwts];
        sample = quickdiv(sample);
        sample >>= 4;
        if (sample>=4096) sample=4095;
        if (sample<=-4096) sample=-4095;
        *p = linlog[(unsigned int)(sample<<19)>>19];
      }
      nnotesold=nnotes;
      listold=list;
      list = list==list1 ? list2 : list1;
    }
    wimpt_complain(os_swi1(Sound_Volume, uservolume));

    add_voice();
    bbc_cursor(0);

    for (;;) {
      wimpt_complain(os_swi4(Sound_Control, 1, 0x17f, 0x4000, dur/5));
      start_time=clock();
      bbc_gcol(3, 7);
      for (s=0; s<1280; s+=2) {
        bbc_move(s-2, 0);
        bbc_drawby(0, 1024);
        bbc_move(s, 0);
        bbc_drawby(0, 1024);
        wimpt_complain(os_swi2(OS_Byte,4,1));
        if (akbd_pollkey(&i)) {
          wimpt_complain(os_swi4(Sound_Control, 1, 0, 0x4000, 1));
          sx=s;
          x=640;
          if (i!=13) for (;;) {
            if (x!=sx) {
              bbc_move(sx, 0);
              bbc_drawby(0, 1024);
              bbc_move(x, 0);
              bbc_drawby(0, 1024);
              sx=x;
              bbc_tab(0,0);
              printf("lambda = %f            ", ((int)(x*ldif)/1280.0+(int)lmin)/65536.0);
            }
            if (akbd_pollkey(&i)) {
              if (i==136 && x>0) x-=akbd_pollsh()?2:10;
              if (i==137 && x<1278) x+=akbd_pollsh()?2:10;
              if (i!=136 && i!=137) {
                bbc_move(sx, 0);
                bbc_drawby(0, 1024);
                bbc_tab(0,0);
                printf("                       ");
                break;
              }
            }
          }
          break;
        }
        else i=0;
        for (; clock()-start_time < dur*s/1280; );
      }
      if (s==1280) {
        bbc_move(s-2, 0);
        bbc_drawby(0, 1024);
      }
      if (i==13) break;
    }

    restore();
    if (wave_base) free(wave_base);

  }

  return 0;
}
��Demo1�i |��~�F����|N�

� >Demo1
�
.� Demo of how to add a new voice generator
(0� Mostly copyright Acorn (see PRM 4.74-4.76)
2�
<<� NB Strongly recommend you connect the headphone socket
F<�    on the computer to a hi-fi amplifier or at the very
P'�    least to a pair of headphones.
Z>�    The computer's own internal speaker/s are poor, quiet
d7�    and don't reproduce low frequency sounds well.
n�
x:
� � WaveTable% 255, Code% 4095
�:
�.� First we build our sample at full volume
�(ș "Sound_Volume", 127 � UserVolume%
�� s%=0 � 255
�A ș "Sound_SoundLog", &7fffffff*�(2*�*s%/256) � WaveTable%?s%
��
�"ș "Sound_Volume", UserVolume%
�:
�� pass%=0 � 2 � 2
�P%=Code%
�[ OPT pass%
� :
.VoiceBase%
 B        Fill%
 B        Fill%
" B        GateOn%
, B        GateOff%
6 B        Instance%
@ LDMFD    13!, {PC}
J LDMFD    13!, {PC}
T# EQUD     VoiceName%-VoiceBase%
^.VoiceName%
h EQUS "WaveVoice"
r EQUB 0
|
 ALIGN
� :
�.LogAmpPtr%
� EQUD 0
�.WaveBase%
� EQUD WaveTable%
� :
�2 :                       ;instantiation code -
�E :                       ;called when voice attached to a channel
�- :                       ;SVC mode in use
�B :                       ; r0  is physical channel # - 1 (0-7)
�.Instance%
�A STMFD    13!, {0-4}     ;all we do is note where the log amp
�F MOV      0, #0          ;table is for use by buffer fill routines
 MOV      1, #0
 MOV      2, #0
 MOV      3, #0
& MOV      4, #0
0  SWI      "XSound_Configure"
: LDRVC    0, [3, #12]
DF STRVC    0, LogAmpPtr%  ;ptr to volume scaled log amplitude table
ND STRVS    0, [13]        ;scaling log channel amp by overall vol
X LDMFD    13!, {0-4, PC}
b :
l4 :                       ;buffer fill routines -
vD :                       ;code must be re-entrant & is called in
�> :                       ;IRQ mode with interrupts enabled
�4 :                       ;(hence r14 not usable)
�. :                       ; r0-r8 available
�. :                       ; r9  is SCCB ptr
�7 :                       ; r10 DMA buffer limit + 1
�A :                       ; r11 DMA buffer interleaf increment
�6 :                       ; r12 DMA buffer base ptr
�5 :                       ; r13 Sound system stack
� :
�@.GateOn%                 ;called when a sound is initialised
� LDR      0, WaveBase%
�2 STR      0, [9, #16]    ;set up as work reg 5
� LDR      0, LogAmpPtr%
2 STR      0, [9, #20]    ;set up as work reg 6
 :
E.Fill%                   ;called during sounding or when starting
 2 LDMIA    9, {1-6}       ;a new sound smoothly
* �      1, 1, #&7f
4F                         ; r1 log amp (0-127),  r2 pitch phase acc
>?                         ; r3 timbre phase acc, r4 duration
HE                         ; r5 wavetable base,   r6 amp table base
RD                              ;convert r1 -> VIDC format log amp
\D                              ;(has sign bit in b0) and then get
fC LDRB     1, [6, 1, LSL #1]   ;log amp scaled by overall volume
p9 MOV      1, 1, LSR #1        ;now move sign bit back
z RSB      1, 1, #127
�.FillLoop%
�9 ADD      2, 2, 2, LSL #16    ;advance waveform phase
�2 LDRB     0, [5, 2, LSR #24]  ;get wave sample
�E SUBS     0, 0, 1, LSL #1     ;scale amp by channel & overall vol
�8 MOVMI    0, #0               ;correct for underflow
�2 STRB     0, [12], 11         ;generate output
�; ADD      2, 2, 2, LSL #16    ;repeat in line once more
�  LDRB     0, [5, 2, LSR #24]
� SUBS     0, 0, 1, LSL #1
� MOVMI    0, #0
� STRB     0, [12], 11
� CMP      12, 10
�: BLT      FillLoop%           ;loop if not buffer full
 :
; SUBS     4, 4, #1            ;decrement centisec count
> STMIB    9, {2-5}            ;save registers back to SCCB
$F MOVPL    0, #%00001000       ;voice active if still duration left
.3 MOVMI    0, #%00000010       ;else force flush
8 LDMFD    13!, {PC}
B :
LC.GateOff%                     ;called to end sounding of a note
V MOV      0, #0
`.FlushLoop%
j STRB     0, [12], 11
t STRB     0, [12], 11
~ CMP      12, 10
� BLT      FlushLoop%
�D MOV      0, #%00000001       ;set flag to flush one more buffer
� LDMFD    13!, {PC}
�]
��
�:
�� OldVoice%(8)
�3ș "Sound_InstallVoice", VoiceBase%,0 � ,Voice%
�� v%=1 � 8
�8 ș "Sound_AttachVoice", v%, Voice% � ,OldVoice%(v%)
��
�:
� � �RestoreSound:�

:
ș "Sound_Configure", 8
*Voices
(� 1, &17F, 53, 10
24�''"any key to make a noise, <ESCAPE> to finish"
<:
FC%=1
P�
Z K%=�(1)
d
 � K%>0 �
n  � �K%;" ";
x  � C%, &17F, K%, 100
�  C%+=1:� C%>8 C%=1
� �
�� 0
�:
�� �RestoreSound
�
 � � �
�
 �:� �
�# ș "Sound_RemoveVoice",,Voice%
� � v%=1 � 8
�/  ș "Sound_AttachVoice", v%, OldVoice%(v%)
� �
�ș "Sound_Configure", 1
�*Voices
�''
�
��Demo2�n �e�t�F���2���

� �mode
:
�
( � "lambda min (0-4)";lmin
2 � "lambda max (0-4)";lmax
< :
F
 x=0.5
P l=lmax
Z xmin=1:xmax=0
d � c%=1 � 100
n  x=l*x*(1-x)
x �
� � c%=1 � 100
�  x=l*x*(1-x)
�  � x<xmin xmin=x
�  � x>xmax xmax=x
� �
� linc=(lmax-lmin)/1280
� lscale=1280/(lmax-lmin)
� � xmax=xmin xmin=0:xmax=1
� xscale=1024/(xmax-xmin)
� :
� �
� � l=lmin � lmax � linc
�  u=(l-lmin)*lscale
  x=0.5
  � c%=1 � 100
   x=l*x*(1-x)
"  �
,  � c%=1 � 100
6   x=l*x*(1-x)
@   � 69, u, (x-xmin)*xscale
J  �
T �
^� �
h:
r�
|:
�� �mode
�� v%
�ș 6,161,133 � ,,v%
�v% = v%/4 � 3
�� (v%=0 � v%=2) � =12
�=20
��Demo3OV� �ROVF����.������a$��,�4"����������S����K����������� ��@����0S�������C�Y�DYEc�ӕ��,[�\���U�$Yňg��^[�^
��%�)r��.�_&�	����*��ɤg;�.�bf�i�ޡą�D��2]�h�@�C��˺��36�r_�>�o���g*�/��Ò��e��b,7�@aͣ���P$���\,X�-��|_�]UYNP��@E�"�t�U=P���i�bf�i��cf�@]ͤ��ţ����r"�|��8	�f4�a�CP6�%��
P�r꾼� qN[���u3t�3[���w3�$�N0CK�s�[��P�y[;������_+�:bJ��*��g��.����p�$cEn���|���c�T��~`�n���|��fi�PY�[i��bfݔ,�i�fi�]b�~�@\��\���-�4	�.t�ie#rK�����+��g��ϻ�˻/H�
�\�\	�\�\�\�\�\��\�P���E=��\�I�+��,"�JT�����\�U��(����\�,�8
�88� �8* �h�"n�o�"9 ��a�C�"sBrA�2�a��e<l3nH�:pV  3e�e#�y�a8l3te�2yCh�AR#tap$3sD�c� F#e�C*�tI�,�*� �r9C:tu#f� �" AiW3(s�2Ci�� `s3� Z� it3=��oEr#~�w�o,#n)b�2 lt;3rfC:lm33fcn(3t�*)Cy*f��v�>��t%k:cYB:oGr: � #r�0*#�3���l��a �2 �e^#%)C�X"l�t#atD3�z�%� �" Q�:�rޢ B�:n=�::��}��z ��,�:u�e7#!g##�-͌�OGB��Y)[o�ݸ�Ė3�6/g�+�U���˗2�5���o�.k��͗1�4���#��������-#ը�f\��v�>���r0�1�o�"0C1�2s�u�"0��vf����m�=*X��%"f��v�=��Xm��a�)	v���*��g���^�Y�fi�E����@\b�\�l]��4�T�,G�Pi�@Ẹ���|S����08Y�fiݓb�fi�]cݴ�@\BА^TX	"m#9������%b*L�f�	eTdDC_�D$�\@$��T�wϐ6�\Cf���o�,�*R���D��L�v̏	|�}D��̏6���\$&�S��L@&�]8&-]<&@�TL�&�E�vL@^���U�����PR@QU.�����o��p�4X`^-����݂((�,����]��.��bh�m/�;t���}[��������Lt��};������[�K��<���ʢ���H��K��Ϫ��H�C����HSUM�ۇl���@���,�����	��t�YI}p�mv���Lt��	��^8Wa^aU���3	���	����m�}[��<a��3HT�[S��'��S��L�������b�L��W\X����pUuk3ue53�d�o @#�,Ͷ����5"!�Et���1�QM΢H%�YM�P��Z��K�Ϊ��4�����^w�Uz��=�WU�8(�Z�<)�Afa+V@%��=��,T5_W��'��W��L����GQ�XP��'��P~�L���ۢV�TL�LR�Z@^��[�U,�ߢS��1DRյ*�j����DRc�@Ẹc��+��ĿK��/]'tͷ�b],e݂�쵱�b],e�g���2����:�UD���$�ȍIj��cf�ER�<�@\��\n	*�K���m��b~�e��՗�,]b}�e��Ց�,]b���,]��$T5��f�4T���o��)��D����Ţ��K�����[8��9K���}Ol4���Z8��9K��G�,�G�,b~�eP��Y�,],bݬ#��(�Zl�8 ��8�88�88�8��,�&����DQ�%\�Y_�����'��'�b],eݢ0��K�O�b�H��3F�,�'���r�.�i�# m����D�LӋɊD�E�LՉɈE�F�LׇɆF�G�LمɄG�H�LۃɁH�I�L��~I�J�L�|�zJ�K�L�y�xK�L�L�u�sL�M�L�r�qM�N�L�o�lN�O�L�j�hO��C�L�e�b@C� C�L�_�]C�C�L�Z�WC�C�L�pŒ��++�+����<��,���3���7?�)0�E���4$]�'�(D����%#�K;��뼐Ʋ9�dzn3�ߋ��l������Ӝ�'�&Щ�՜�%�$Ω�ל�#�"̩�ٜ�!� ʩ�ۜ��ȩ�ݜ��Ʃ�ߜ��ĩ����©r�,��r�r�,��r�r�,�
�
r�r�,�	�r�r�,��	r�
r�,��r�r�,��1
r"�
=�0�3Q�C$+�W�K�4V�M�^󬱴��Sˬ������˲��o�V2}��ۻ�Mʴ^�S���񜪬��������WoJ��V�M�^󬱴��Sˬ������˲��o�U}zD�Z�M�^󬱴��Sˬ������˲��o��W!L��YU4BI�@�ٳ��A;��ܳV����4��3���!޺�/;B�2;?A��@&�K��K�����J�ߪ��-!�
|�D�\�M�^󬱴��Sˬ������˲��o��~{D�ۻ�Mʴ^�S���񜪬�������go�\r��ۻ�Mʴ^�S���񜪬�������io�`l���P��32�J\Ңc��+�����C�i���.����.!�n���]�M�^󬱴��Sˬ������˲��o�$��ۻ�Mʴ^�S���񜪬�������"o� #��ۻ�Mʴ^�S���񜪬�������eo�ct��ۻ�Mʴ^�S���񜪬�������ho�Wk����s’���i��ἱ����.!�n���]�M�^󬱴��Sˬ������˲��o�$��ۻ�Mʴ^�S���񜪬�������"o� #��ۻ�Mʴ^�S���񜪬�������eo�ct��ۻ�Mʴ^�S���񜪬�������ho�Wk����aÒ�������4��]�ba�3�+�ڍ��8�,|�w�s��eN��Ū���Ns��e��˺��s��eN��Ū���Ns��e��˺��s��eN��Ū���Ns��e��˺��s��eN��Ū���Ns��e��˺��s��eN��Ū��	�Ns��e��˺
��s��eN��Ū���Ns��e��˺��s��eN��Ū����Ns��e��˺��s��eN��Ū�s��eN��Ū�eN��Ū�eN��Ū�eN��Ū�eN��Ū�eN��Ū�eN��Ū�eN��Ū�eN��Ū?/�<9��T�+��8�ao��ۻ�Mʴ^�S���񜪬�������mo��^�M�^󬱴��Sˬ������˲��o�_j��ۻ�Mʴ^�S���񜪬�������po��_�M�^󬱴��Sˬ������˲��o�sf��b�M�^󬱴��Sˬ������˲��o�qf̉X�.�`�,U�����=��J����a]�b��3�+�8��|��w,ݳ�Ns��e��˺��s��eN��Ū���Ns��e��˺��s��eN��Ū���Ns��e��˺��s��eN��Ū���Ns��e��˺��s��eN��Ū���Ns��e��˺	��s��eN��Ū��
�Ns��e��˺��s��eN��Ū����Ns��e��˺��s��eN��Ū����Ns��e��˺��Ns��e��˺N��e��˺N��e��˺N��e��˺N��e��˺N��e��˺N��e��˺N��e��˺N��e�/˺9?�T<���8+�o���a�M�^󬱴��Sˬ������˲��o�^m��ۻ�Mʴ^�S���񜪬�������jo��_�M�^󬱴��Sˬ������˲��o�_p��ۻ�Mʴ^�S���񜪬�������fo�bs��ۻ�Mʴ^�S���񜪬�������fo�Xq����Ɉ��sgP#���O���P���!/��M�P���L��M�P���L��M�P���L��M[%�۳��2;:J��!�CbSNRD�P����s�sb#��g h����qd���L�4��P�[]����Q�<\��N�\Q�N<�Q�<\��N�\Q�N<�Q�<\��N�\Q�N<�Q�<\��N�\Q�N<�Q�<\��N�\Q�N<�Q�<\��N�\Q�N<�Q�<\��N�\Q�N<�Q�<\��N�\Q�N<�Q�<\��N�\Q�N<�Q�<\��N�\Q�N<�Q�<\��N�\Q�N<�Q�<\��N�\Q�N<�Q�<\��N�\Q�N<�Q�<\��N�\Q�N<�Q�<\��N�\Q�N<�Q�<\��N�\Q�N<������c�q��9�O�L��]����;� /�:!&D�Kc�+�ɐ�3�;�n�qc�� �L�3�]򬱴��SK��]�� #���a�+n�ģ��c_�"���,x�i�j��]K��Ī�����Kj��]��˺��j��]K��Ī�����Kj��]��˺��j��]K��Ī�����Kj��]��˺��j��]K��Ī�����Kj��]��˺��j��]K��Ī����	�Kj��]��˺
��j��]K��Ī�����Kj��]��˺���j��]K��Ī������Kj��]��˺���j��]K��Ī���j��]K��Ī���]K��Ī���]K��Ī���]K��Ī���]K��Ī���]K��Ī���]K��Ī���]K��Ī���]K��Īs�_
�:�������fM�lM����<4żXɼ0p q3�ro3��T?�Ń�s�
��+>�x���]*$-,5U �� 2��OZ$�"��� x"'s"P0�*�{|3~3�����4��3��3�;UT"P0�U�#�S��#���9SU"�V��"�����P*�vds�8m�]T>-T�B��4��#��^�\0�(sE�w�sE�w���rE
��;�lZ0��l�YmKl ���l�]nKl�ބ�4w]�"���K��,�$�s��wu�Ԇ� hR+0�0�JԆ��R�/��C
�;����w��3� �3�_�,
e��q\/��䄒���'6�I^`I�B
L��Ȅ/)\�)������|1xkUx��ts�vd;z��Y9��,� ����ӳ(1�(.iY�(0����@qEtk�4qd3U`0q[k�T3t[tq�@3��g�dU��j�T����=��R����޼v�Z�=)lW��
����J�
D߄���(p���</)X�)v�Y�	�3
��/��4��YX"�ӹ˛��v	�n
�zg�y4/��u0/U(/z[$/y[zg�y/�/��uxfU�۸�/)����[Z"Xo�Y�ٵ1�"��ڠ���ԣ�n8o%�m���DXi�]om�
��M����ޠ0��ԣ��(��Z�)o�YDi�]om��n�]xv��Ԁt�eU�#�$�/�����ԣ���b2��nE�h�]w
�
�M�x�
D)$-n�]���,�,�7İ���C ��3  �C��3�\���2�sC#c��Ѫ.�K`O��0i"Pٸ!��q����|Z��/�ȴ����ؙCٙ������^���_/��b�uh��������X/���]�u���c���Zj,���
���q@�����]��N_J�Մ�A��e���߸�Ӊ��
���YB���<�]�	�^/�ӋY��v8ԭ���+�+������+�+������+�+������+�+������+�+������+�+������+�+������+�+������+�+������+�+������+�+������+�+������+�+������+�+������+�+������+�w�ۂ~����~����}~����{~����y~����w~����t~����r~����p~����m~����j~����g~����c~����_~����\~����X~�����ܴ�r�v9��+�KW�W��K�KW�W��K�KW�W��K�KW�W��K�KW�W��K�KW�W��K�KW�W��K�KW�W��K�KW�W��K�KW�W��K�KW�W��K�KW�W��K�KW�W��K�KW�W��K�KW�W��K�KW�`�+���Կ���e�V�"hL�Pb,�if�k��g���R#p�TD�#E��#E��#U��>T9��`��J�k`�`��J�k`��f�<�5\��",��kk�f��-�hp�"��O@%KJ��K/�;>����_}zD�Y�M�^󬱴��Sˬ������˲��o�rg��[�M�^󬱴��Sˬ������˲��o�lí�U<��3:���02DD��[ҝ[�q��ҵ*�Βi�fi�b�ޢ�*�Βi�fiݢ����i*�i�ޢ�����*��i��ޢ�*�ΚJ���7����,��ޢ�*��NKU�O�+�U,�6����,��ޣ�*����i|�bf�i���Ni�f�ޢ�*��0�K.Di6ޔf�i혡�i}ۣ����*�0�K��[�i�i�"�K~�������K*\?;�JA��*r��6rP�������������ަ����9+�<4K�D,L�I$M�ONU'�]�8�+�],�K��)KP*)6�����������������������*�|ܻ����b�N�2�۾A�ޢ�*��֘�3�ۢ��7�ۓ��4�5�ۓ��8���*�1�ۢ����*�ݘ�p��/�ݗϽ�#��<�,�?"8ڤ^���g*�� ��d��\a�]j�Pt�[y)���^16���^�b��y]6���1Z,|�\	�.d
��.��}����\YY�W�T.�[����~[�y�6�΁1�|�x�N�g�وU�y]6���1Z�������Կ���7����g*�/̢Ó�˭�������g*����C�D�0���O���1����5����a��6�ޥ�*�Υ�g;,]�,�6��G�0�۔��l���7�1M܅�ِ����[��N������K�����*��y�g;�4�ԍ/��L�TX��K�6�=d�Tޢ̵*��e�g;Y����b}�}��f����0]��*��S�g;,�۰�͓!���������b��,|�գ���t��*�i�e�����A�����%�y�"�a��t 3�m�h�I� �$t�T��*��!�g;r��b,U-�۰���E�����.]�����/],�M��0]�����1]�����2]}��)��:�)F�GȤ��K��$G�$8
"��M�
�$F�]���@S�^� P^�Q�4Y�_��%�U���\-�� F_��T���wt֢{�� >�:@ T�Ew�n�-#�?�s\�����*�λ�g;Q훙ށ�\{��P��L�^����b]��,]���it������e�����A�s�Q*Fn� eX3tme�2��P���+��f-�,����
E���7����ՙ������b]�4ν��)�٢^���*�J��T��}��Eϵ*���ϻ�ƻ�EN�;��8J))(��5J�2J')&��/J��*��U����*�=���#�� J*"-��J�
�*��J�J6)6��J�,��Ϗ^���*\,�ݗͽd5��Q����*��.�bfݡ��i��AG�hO�ޢ�*���d��ݢ��AF��BO���F���A���+��4.�6�����U���N]�]���O�	��pD�>���]V5���;��޽ε*���ϻ�ƻ��>])��I«I()'��I�}���Α^����*�@����řI')��}�ޔε*��Ļ���T'��I�}�Ώ^���M���A쓝��0퓝��,퓝��1퓝��-����*�����b���5���f���5���bn��5���f<܏5���*���ƻ��Ϟ�a��K�����*���~�����F��K�����*���~�����F��K���P� �7]���*�!����}��ε*�΢/�Q��P@����/*̗��>Q��P�ޢ�*��i��bfݔ,�fiݡ��ciݘ=�ޢ�*��Ļ��A]'���H�}��͏^.����A\���.*ܗ��EK��@\ޢ�*�Θ-�K��@E̢�����1*��b���ݗ��@]͢�����,*ܗ��EV͡�@\�����*ܗ��EV͕�@\�����*�V��@E̢�����,*ܗ��EU��@\�����*�U��@E̢t����*ܗֽEL�7@�ޢ�*��1JΌ���iی���\��,�ݗ̽ETͯ@�Q��@E̢L����*���.��)��	Nmp�,����K�i�.��)���N]�����/*��=��<�@��C�˽O��O��}->���4��]ص*��E�g;/�Z�ݢ˽O��P���O�-��,��ޢ�*��-�g;�/LZ�ݢ˽O��P����O�-��,��ޢ�*���g;/���pݢ�O��O���	��P��ڢ�O��O����P�E�ʬ��-��P��O���7��׵*���g;#`�R��}�	��CU0��,�ޤ�*��ӟg;�1���L](2�,�A“��J-��,�mک*e1n3d-g:n�n2#t�
��=��3��*�ί�g;ʿ����K��ҭ�3�IWY�U�#;��7�g�\-��!D_"�]�M?v��3�mթ*�w��{�s�C*T���t������I
��6��ڙ��*��s�g;���S�`�8U��|�����.~K1�N	�^�N�?�^�h�?E�X�=�,�]P�tz"9:"�|�މе*��E�g;|�[�2�U%��:*��ǽ�w�#��~��.q��̭�*ަ)�����:5+7�
�,.�2��[�fި	�+����*���g;ʿ�+�K}E��������D�eYb}���?L*"6�T�?�P��E}��-���ާ�*���g;����f�ޢ�*���g;���b�ۢ����g*��؞�q��}L�}j45����z�u=L��U/��P����Eo����D�A�!���3|�^��^�&A���΀�VY��\�U	����'���VN`ijMI��E��>�S�S�������]0V�,����FZi�>�$^f�0�u��=����E�/Z�<��=�-��,�����.���~X�TX�������� �}[�����A7))���O�)�,���g*��:����[�H�Y�vY���0��r���Q7�n���,^k��N[��E���VY��\�-]	������K������~�����ޙߵ*��f-�A�S6�Af>KB����ʿ�����g*�1��S6����g*�f��bݍ���E�6�����*�Z�[�ͼÉ��4�y~��Ϸ��5 �ޤ�*��Ļe���ͼ����2�y~���3 ��ܥ���V
bm0ddf�		��k�
�o	�o��\��cY��bY���	ޡֵ*��x��K���@S͌R�գ����*���MŚM-yUD�dܗֽ@S�X>��Y�����*��1�T��/�@\���ޣ�*��1�˗̽@�Č"�գ����1*��(���K�@\ޢ�*���0�΄���L	�@\ޢ�*���1�U���@\ޢ�*��(1̗̽@V͢����*��1���K�@\���ޣ�*��1�˗̽@�Č�գ����*��1���K�@\���ޣ�*�Ψ1ܗֽ@�Ģ����1*̗̽@�Ģ�����8*\�Ƶ���@�Ģ�����*��P�Ԅ���L��@\�0D��U}��ޣ�*��@d�K҄���L��@\�����U{��ޣ�*���1���K}�@\���@�ēx޵@���t޵*���1���Kk�@\ޢ�*�Ω1���Ka�@\ޢ�*�Ω1���KW�@\ޢ�*�Λ�����ݗֽ@�ĢH����*�̚���K=�@\���@���8޵*���1���K/�@\ޢ�*�Η1�@�Ģ&����K!�@\��K,�@\���1*�W���@\ޢ�*��[��-rFL�q�W���@\ޢ�*�Η��@�Ģ�����1*̗̽@�Ģ����1*̗̽@�Ģ����*��K�@\ޢ�*��1�˗�@�Ĝ���,Mx%��uN��Dp�=l����|���1*̗̽@�Ģ�����*��K��@\ޢ�*�Η1�@��P���ޢ�*������9�]	��'�]�߽@�Ģ��坶���K��B\���X�۩�B\���*읶�X�ۨ�B\ޢ�*�Ω1��Ku�@\ޢ�*�ζܻ���N��i��@�Ģ����J*쫘��,��KY�@\ޢ�*��ט�Y��O�@\���@Y͵Jݵb��B���dݵ*���1�V�w��;�^� ��z��#���ʪ{��
������'��K%�@\ޢ�*�Γ1�\�\��\��������-��,��K�@\Nբ^���ac*L6�f;,���ѻ`
,TJ��N����X���I#��N���I:��Nb��KO�0ܽD �uv�/��NO������Ku�-]Ob��K� 0�vD��+�mnT�2s��*Rt���B����d	���
�pIb��0O�D �O
w� 0�	��CM�-]0O�E �O�˨�.RT���������x���-��8��g�I�"a�c:#c�P*Bu����	����[},]#��K#�-]�b��wT�}[
��KW�G,\Ub]���h_�\=�,�6B���7&�bN�"��s�a��*t�D*�R����x����G�	�|oE�l6�:ne
3g�l*f�"<�"5$�M7)��5Eڳ���T,]�ކ��ON�����O��W��-]MO�>ni�2a�i�"f�n'#e�*�i�k��N?�WI�Q=��w\Y� ��]V�]���Y���Y��-�}���g*��.��}q�V��\���K���I�"����*^�V���|-}��WI�d&)�R���g*��
���\Q�
�����}�����}��Iϵ*���g;D�iTQ�}������}��7�U���g*����ʻ+sM�uM�	�î�-��0Y>�Ub�� [Z=\w¼. !�:njy3�	s"���(�XU�V!���4��7[7���թ7�(��b��t���AO[�^���Q����������<U	�=T��N���b����>���%h�QP����,핇-0��GB���<��H��K���T����*��i�g;�ĻH|U�����Y���S�-��7]S�-ަե�^��	�d�>E��|����ε@��*����g*��:�����QYޣ�*��/�g;���6y�ޢ�*��%�g;��\U�D�m]D��\���������������������������������f�f�kdI	}�"޺��/� �"!޵��3�,]�B���*�N*�NX���~��1�}(��G������*�0+�"�6B��6�T�=}[�仧-��ԡQ���K���,����*��fOc�k����T���#>!��JfhI��A�T! U�$UZ^@��.ݩ����Ux���[J��N$|��^�p¤^�
i]� ��D�S�a����P5�]�-��w<,��ތ�*��u�g;�Ļ`,dԯ�sT��r��-�����q�[LH��U��[�݂��z�$pSN$P�M�ͽ����U��[wƥ. /:[3m.u�2orS3�a�td�2tS���������g*�0�:�C���C;ͭr��6��m�����m�� �����5p��ݳ���g*����p�R��,��R�M��ޤ�*���g;�Ļ��$>���4�@���b��-��%d��6�R6��2����_��-��U܏^������I���D�; ��}�������������DI� ��*�;��}������g*��Ƙ�F�[$��$��?*�&�����^�%�(�G�Sp��Օ���}��͞�~��V���HܝbݠL��E0U��*�Γ�g;�Ļ�}�~����}���ߜ���ޤ�*���g;ſ���˪}�*��~��}������}���i���"T�
^���WI���
3��|E
~;U|
^y^�D�^��T��{Ǻ��*��C�g;ʿ���&@���@9)PG�}��Ϛ� s]]1p�D���V���d���6�^������^=��V��=��&����Α}����EI���1��d�E�1������&�΀���,ĜM�i��b����ٴ&�
�'�����ٟ(ݍ��i��j�
�������ٜܯ���i�� �E��٠Y�"���Dx�]���ޢ��ji�V�-�Z�M�ݍ��i��j���j��\�Z�X	����i��������i��j�X�	V�+ڜ����g*��z���B��N{�] ��E>��I_�a�[!��,�����~�]I,��}�����/�-�.��}����ޣ�*��M�g;d�K���ф���������	����m}���ۺ��Ʉ�s����
w"P�P���\T�}˳Ď�R�k{"Ru�{,ul"R�#W遡�T������`ٛV���^;�,7("������ާ�*��f,����2��v��~��������+�<]�훳��\-��,P�կ�݄��}y����������DI� ��*�;��}������g*��Ȗ�[���T����X�ˏ^c�ۣ����*��f,�����2��}���l��������o���g*�Ɯ����R��Z�R�J��.����K�D/��噤����g*�ƀ��=��S�Z�p��Mߜ(��M�)�pEP`�Eޥ�*��e�g;��R��Z�K������D��&��_�-�ޤ�*��f,��K��2��}�&H�[}�xZN^�WU>R�Q��p�݄��E���ͳ�~��_P���Y�������f����	�*���g;{��(��)��\�-�D�<�"�.�*���g;Pd�K�r��EXdJ�Z��,ݗ�����TX�cN
��L�
�B�\���<�[%	�>����g*���|d{KΗ�T&1]X&�[��T�TZ�;��)�,�TT��>dT���[�0a��Z����\���%�-]�,�rN�	2N�p�"ged3y1e?3d4j:�r��s�O*h-"�iMsh3�l���	+�7�+S�-�������,��ޥ�*�΍�g;��d�~t[�y΀ʄK��[�&.]�LK�@\���\�V�S��[,���Ϛ�ɹ-��	�.�8�����E���2ڵ*�Λ������ޢ�*�Κ�Ԅͽ���b-4�"��۝bݞd����*��1�4�ۄ����Z��[��\��]�����1*̓���5�̈́�ޢ�*��1�˓���7��⽣����*��1�
��K���ń�ޣ�*��1�˓���6��⽣�����*����1�8������ބ���EM�ޥ�*��Ż�1�9���߄罤�����*��ƻ�1�9���߄���EL�ޥ�*���ʻB��GM�1�;���������݄򽨥���+��ŻC L�HF�1�;����5�������ݡ��L�H����*��ƻEA�1�:�������*�]���ާ�����+���FC�1HΕ���:�)�]�5���ݕ������>�����IL���+5����#���ʪt�I���Eܫ���*��1�˝��C�ۄ߿��[��\��]��^�����1*̝��>�ۄԿ�����*��1�����>����L�E���1*̝����K�ǿ�����*��1�������㽣����*��1�������㽣����*��1�����?��(��|����*�=��1�����"����݄)��z����*�?��EA�1�����4�������݄*��u����*�>��1@Ν��G����,����݄ヲs���1*̝��0��K����q����*�1�˝��F���߄轤n����*�=��1�����2����݄)��k���*�(3�T����'�i��ޢ�*�ι1�����@�h��ޢ�*�ι1�������g��ޢ�*��1�˝��A����e��ޣ�*��1�˝��B����c��ޣ�*��1�˝��-��K��`��ޣ�*��1�˝��E����]��ޣ�*�ι1�����!��Z��ޢ�*�ι1�����/��V��ޢ�*��1�˝��C�ۄ��[T�\��]��^������*�=��1����)�����Q�����]��^�ޥ�*���ƻ1=Ν��*��K�{�+��,��ѽ�N����*�=��1����x+�����L��N�H����*�=��1����tD�����+�I��ޥ�*�Θ��̔�͓�Β�G��ޢ�*���ƻ�1����p<����F�X��Y��Z��[������*�1�˝��=��K�j�C����X޳Y޴Z޵[�ޤ�*��<�Kb�����A����X޳Y޴Z޵[�ޣ�*��1�˝��J�ۄf��?�EM�ޣ�*��J��,�݄ͽ�=�EM�ޣ�*�ι1����a6��<��ޢ�*��:��1�9q:-"�������\߄齤;���*�1�˝��H��W�6����݄뽤:���*�1�˝��H��S�6���%����9��ޤ�*���ƻ@>�1����RI����6�������8��ަ�*���ƻ@>�1����PI���%6������݄ヲ@��۰\E�kݠb�\<��ֹ��kΊ�x=�̪4��J:X�M�4,����p_� ]�:dj*���p_� ��*o�H*�!�i��[�k�;���~��Q��2��C-�M����N>t��^E�a��,��ͻ�������J�ŀ�U`��K�����_��,D�DHa�T<����h)�	)������h�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}}�}��)��0,"4	�#�""�O"�$��5			��� ��t,^�y%r�;kh\��2\`�T^�2_�gH|����0>���]`���l�����[����4s���l5\�{D��q���D?���>6{�N`���� �`�ܟ�����e�}�(^*J]�V�	












\�\� �2���
]����	� ]��_�^{�l\t*����߫d�o�d�
����߲�� � �/��a����	�����||�Xay���N`�����������������@/^�'^*J\�]V�	















LR��

���S  P������a4�b�_�밲��F��	��]�*����&������@d ���K>���RA��7'�����na �������eT�������mE��������a�M����K�D	���|���� \F������O�j������
�O������SS9\��N�������V�3������E��߈���te���m�M����bG\����
T���������V���T	�����8�A�����{��^E�d��
���`����j���	����a�aO^���*ړ�r ��E�I�
�����Ae_���C��i���?���0T����Q�]��5�X����	]������
M����5����]0(^�W�\�q��F\T~�C]&Jϋ���\����L��
�^]	��\��������[P��w�ʀʾ��lt���_������\x]�i�\\�]]]h������^bd\�]�\z\�\t\�y��}�\����\�z���l��� ���\�jt����]Xm����sɦ��R
��������������������������(�f��
^w]���g��|k�_�^y]�����o
\k]�]`�*)]@\�]�^]�c3\�*c�
]]]]]]]\�]]]]]\�*]\�[\�b�'
c�k�k�
aA^�c�w8`�\~f�l�_�kb\�\\�i]�lQk��~k�l\� k�k�lld��XcU�	��]�����\��.\�M]]]]]]]]]]]��T� ��_>\�s������ �?ddh��L�
\�b;]_]ʰ�����l���^\�j{�b1`���*����?d�~��������
b�]]�]\�_T\�Jk�jb}�
{���l

)
Nb]]�
\�\�K\h3o����^��{�k�����������_]�����`{����JFh�J^�.:kxg�`6�	��\b2z��
\�.j�li��^]xHp�*J\�\�\�\�\�\�\�\�\�\�\�\�����������������\W"\vc_���*H�������g�����d����)��h������*�������\g����	



E
A! dN^�]]q\�\�f�`�g`�eb�e`]g]�llll{�lg�o�k���_\���b�����|��o��l��.l��������� ��w��\�k(l��Rk�l{�{�������k����k���{�k����l��|���{�H����\�k]<j�lk�k�k�k�k�k���@k�k�k�{�{���k�k����l{���{����k�l���ܯk�"���l����|��k�|{�*k�k�k�k���Dk�g���k�"] z��`�VkX����,���������k��	�{���߯�������n���������?���l�������?��*Jː�*J\�������*J\�]^�0��*J\�]^�Tl��r			(<C{�\~F_ub\T]F\�


\�

(9
F'
IW\tRb1]�a$]Vk�%\n\� \�:3��\�"!!
















Q[���l�/��|Њ������?�������$\_���\_!>L
#d���=\�]\�h�J]
g���fo@*\_K�Шa�lᆠ^�]����gh�o>\_\Y|Pz�:�м���]�]]]*b�b_d^\Ű�$�W�=�b�.�7�	������1E�Ю�]]^��b�
^
^%m\`)���{�^`�_�^�]���^^�f�]�o_\��p\��@�^`�`^FD^_]c^@\b('�m�����}���j)m�s�]i^I\�O\�L\�T\�\�Q_�^\�Y^�\�?\�\�^O\��쯼*����/4�
���\�]]�>���l	�75����A�`�`����������3����
p�\���Oו�����r����A�����>�1��3*�ŻO��^_�b�^\��I�����c
f������iz��t���bqG`�
\�S^�^
]�

���V���E���eA���l\��`��bKa��_cd�]E\���]�����]A^g�W_�^����
��`I]��
�c�Ka����
��bG\�O]a\�Y�����R�D��h�`e�P^�^��ȪC��{N`�R^�]^]^�]��̪Q��^^�]`�\�(_�^
����;]�hN]^�{��e��	e��
����b�]���q��l��^�qB]^0e��@SJ\���简�^du]�����:��_
'��0����{�}z���|5�<�^�\��|�\ு\wRl0��_�p��7\��@�`�`���x����^]]���Z����}z�8\�]y�*:\�^0\�*``^`@] l]*^`�`o�
#)\�\�"\�\`\�]`,\�]�\�_�^�Ky��0�eo]]]]]]]]]]^^~^�]*\�a�(]�"

]�
Gm

*:"k'J**lX`@��]\�j@]bpd�	{�,\�\�*`0]_%]:\�]
]0]�`hB_a r�*J\�
\a\�^\�] J\�\v\�]�.]@*]�)*\�]!)\_\�]�i'] �q]\�x�{�\�\�]]^]]]^�^n\�]]d]`]e�]�o^
%*{@]_�w*\��`�d�c�Jl�*��\�_�"

))&i \oZ�VR***\�***\�^ \�\`\�]\`*\�*\�_\�****J*]6\mD**\�*\�**\�*J*\�J*\`J*\�]]_@**J**\�\`]�%%|.\�_d]]�]p\�J\�^ e��*]Je�*_]�\�]J*g`Z:^�\�*]`_���\�`]c]^]]b]_?]�^\�Z_�^@b�]�^P]�d�\|\��y�m�F��[_\�_]_c�e���
	���>	��i������pk�*~�|lk���]���@]����?���,O�?��
�@�	�J����o��V�`����q��
P��@�� ��0���[�)���
Q��Q�
����������T���0��0�����K����0��0��Q�����\Q�0��0�����Q����������0��0�����\Q�����0��0�����T������� ��@��������P��Mo��@������U�����
����H�	Z�5�`z�0�	S��z���A���S��z�����z�D���@��
z�z���z���z�L��&2��	S��z���Q��0(����S��z�����z�T��0(����P��0(	��
z�z���z���z�\��0(����]��
`I����
��������]��ʽ���|�H���rcc 4.01
  �h��� uj��F��\���RegNames^���F���d�h; h.RegNames
;
; This header file for GETting from assembler source defines register names
;
;**************************************************************************
;
; Use the RN directive to define ARM register names
;

r0      RN      0
r1      RN      1
r2      RN      2
r3      RN      3
r4      RN      4
r5      RN      5
r6      RN      6
r7      RN      7
r8      RN      8
r9      RN      9
r10     RN      10
r11     RN      11
r12     RN      12
r13     RN      13
r14     RN      14
r15     RN      15

a1      RN      r0
a2      RN      r1
a3      RN      r2
a4      RN      r3
v1      RN      r4
v2      RN      r5
v3      RN      r6
v4      RN      r7
v5      RN      r8
v6      RN      r9
sl      RN      r10
fp      RN      r11
ip      RN      r12
sp      RN      r13
lr      RN      r14
pc      RN      r15

; Use the FN directive to define floating point register names

f0      FN      0
f1      FN      1
f2      FN      2
f3      FN      3
f4      FN      4
f5      FN      5
f6      FN      6
f7      FN      7

        END

�SWINamesA^�~AF���h�h; h.swinames
;
; This header file for GETting from assembler source defines OS SWI names
;
;**************************************************************************
;
; SWI names are exported in two forms :
; 1)  with OS_  'OS_DoThingToOtherThing'  as N
; 2)  with XOS_ 'XOS_DoThingToOtherThing' as N + Auto_Error_SWI_bit
;

Auto_Error_SWI_bit_number * 17
Auto_Error_SWI_bit * 1 :SHL: Auto_Error_SWI_bit_number

;
; The following macro defines the SWI names using the '*' directive and the
; '#' directive to increment the SWI number
;

        GBLS    SWIClass
        MACRO
        AddSWI  $SWIName,$value
  [     "$value" = ""
$SWIClass._$SWIName # 1
  |
$SWIClass._$SWIName * $value
  ]
X$SWIClass._$SWIName * $SWIClass._$SWIName + Auto_Error_SWI_bit
        MEND

;
; Now for the SWI name table - using the '^' directive to build a table
; of SWI numbers
;

SWIClass SETS   "OS"

        ^       0                       ; Base for RISC OS SWIs
        AddSWI  WriteC                  ; &00
        AddSWI  WriteS                  ; &01
        AddSWI  Write0                  ; &02
        AddSWI  NewLine                 ; &03
        AddSWI  ReadC                   ; &04
        AddSWI  CLI                     ; &05
        AddSWI  Byte                    ; &06
        AddSWI  Word                    ; &07
        AddSWI  File                    ; &08
        AddSWI  Args                    ; &09
        AddSWI  BGet                    ; &0A
        AddSWI  BPut                    ; &0B
        AddSWI  GBPB                    ; &0C
        AddSWI  Find                    ; &0D
        AddSWI  ReadLine                ; &0E
        AddSWI  Control                 ; &0F
        AddSWI  GetEnv                  ; &10
        AddSWI  Exit                    ; &11
        AddSWI  SetEnv                  ; &12
        AddSWI  IntOn                   ; &13
        AddSWI  IntOff                  ; &14
        AddSWI  CallBack                ; &15
        AddSWI  EnterOS                 ; &16
        AddSWI  BreakPt                 ; &17
        AddSWI  BreakCtrl               ; &18
        AddSWI  UnusedSWI               ; &19
        AddSWI  UpdateMEMC              ; &1A
        AddSWI  SetCallBack             ; &1B
        AddSWI  Mouse                   ; &1C

        AddSWI  Heap                    ; &1D
        AddSWI  Module                  ; &1E
        AddSWI  Claim                   ; &1F
        AddSWI  Release                 ; &20
        AddSWI  ReadUnsigned            ; &21
        AddSWI  GenerateEvent           ; &22
        AddSWI  ReadVarVal              ; &23
        AddSWI  SetVarVal               ; &24
        AddSWI  GSInit                  ; &25
        AddSWI  GSRead                  ; &26
        AddSWI  GSTrans                 ; &27
        AddSWI  BinaryToDecimal         ; &28
        AddSWI  FSControl               ; &29
        AddSWI  ChangeDynamicArea       ; &2A
        AddSWI  GenerateError           ; &2B
        AddSWI  ReadEscapeState         ; &2C
        AddSWI  EvaluateExpression      ; &2D
        AddSWI  SpriteOp                ; &2E
        AddSWI  ReadPalette             ; &2F
        AddSWI  ServiceCall             ; &30
        AddSWI  ReadVduVariables        ; &31
        AddSWI  ReadPoint               ; &32
        AddSWI  UpCall                  ; &33
        AddSWI  CallAVector             ; &34
        AddSWI  ReadModeVariable        ; &35
        AddSWI  RemoveCursors           ; &36
        AddSWI  RestoreCursors          ; &37
        AddSWI  SWINumberToString       ; &38
        AddSWI  SWINumberFromString     ; &39
        AddSWI  ValidateAddress         ; &3A
        AddSWI  CallAfter               ; &3B
        AddSWI  CallEvery               ; &3C
        AddSWI  RemoveTickerEvent       ; &3D
        AddSWI  InstallKeyHandler       ; &3E
        AddSWI  CheckModeValid          ; &3F
        AddSWI  ChangeEnvironment       ; &40
        AddSWI  ClaimScreenMemory       ; &41
        AddSWI  ReadMonotonicTime       ; &42
        AddSWI  SubstituteArgs          ; &43
        AddSWI  PrettyPrint             ; &44
        AddSWI  Plot                    ; &45
        AddSWI  WriteN                  ; &46
        AddSWI  AddToVector             ; &47
        AddSWI  WriteEnv                ; &48
        AddSWI  ReadArgs                ; &49
        AddSWI  ReadRAMFsLimits         ; &4A
        AddSWI  ClaimDeviceVector       ; &4B
        AddSWI  ReleaseDeviceVector     ; &4C
        AddSWI  DelinkApplication       ; &4D
        AddSWI  RelinkApplication       ; &4E
        AddSWI  HeapSort                ; &4F
        AddSWI  ExitAndDie              ; &50
        AddSWI  ReadMemMapInfo          ; &51
        AddSWI  ReadMemMapEntries       ; &52
        AddSWI  SetMemMapEntries        ; &53
        AddSWI  AddCallBack             ; &54
        AddSWI  ReadDefaultHandler      ; &55
        AddSWI  SetECFOrigin            ; &56
        AddSWI  SerialOp                ; &57
        AddSWI  ReadSysInfo             ; &58
        AddSWI  Confirm                 ; &59
        AddSWI  ChangedBox              ; &5A
        AddSWI  CRC                     ; &5B
        AddSWI  ReadDynamicArea         ; &5C
        AddSWI  PrintChar               ; &5D
        AddSWI  ChangeRedirection       ; &5E
        AddSWI  RemoveCallBack          ; &5F
        AddSWI  FindMemMapEntries       ; &60
        AddSWI  ReadDefaultVector       ; &61

        ^       &C0
        AddSWI  ConvertStandardDateAndTime ; &C0
        AddSWI  ConvertDateAndTime         ; &C1

        ^       &D0
        AddSWI  ConvertHex1             ; &D0
        AddSWI  ConvertHex2             ; &D1
        AddSWI  ConvertHex4             ; &D2
        AddSWI  ConvertHex6             ; &D3
        AddSWI  ConvertHex8             ; &D4
        AddSWI  ConvertCardinal1        ; &D5
        AddSWI  ConvertCardinal2        ; &D6
        AddSWI  ConvertCardinal3        ; &D7
        AddSWI  ConvertCardinal4        ; &D8
        AddSWI  ConvertInteger1         ; &D9
        AddSWI  ConvertInteger2         ; &DA
        AddSWI  ConvertInteger3         ; &DB
        AddSWI  ConvertInteger4         ; &DC
        AddSWI  ConvertBinary1          ; &DD
        AddSWI  ConvertBinary2          ; &DE
        AddSWI  ConvertBinary3          ; &DF
        AddSWI  ConvertBinary4          ; &E0
        AddSWI  ConvertSpacedCardinal1  ; &E1
        AddSWI  ConvertSpacedCardinal2  ; &E2
        AddSWI  ConvertSpacedCardinal3  ; &E3
        AddSWI  ConvertSpacedCardinal4  ; &E4
        AddSWI  ConvertSpacedInteger1   ; &E5
        AddSWI  ConvertSpacedInteger2   ; &E6
        AddSWI  ConvertSpacedInteger3   ; &E7
        AddSWI  ConvertSpacedInteger4   ; &E8
        AddSWI  ConvertFixedNetStation  ; &E9
        AddSWI  ConvertNetStation       ; &EA
        AddSWI  ConvertFixedFileSize    ; &EB
        AddSWI  ConvertFileSize         ; &EC

        AddSWI  WriteI, &100

        END
�swis�c�c��cE���A�/*
  Title:      Swi numbers for RiscOs
  Copyright (C) 1989, Acorn Computers Ltd., Cambridge, England
  $Revision:  $ SWI_LIST 1.00 02-May-89 (Program generated)
*/

#ifndef __swis_h
#define __swis_h

#define XOS_Bit                        0x020000

#define OS_WriteI                      0x000100

#define OS_WriteC                      0x000000
#define OS_WriteS                      0x000001
#define OS_Write0                      0x000002
#define OS_NewLine                     0x000003
#define OS_ReadC                       0x000004
#define OS_CLI                         0x000005
#define OS_Byte                        0x000006
#define OS_Word                        0x000007
#define OS_File                        0x000008
#define OS_Args                        0x000009
#define OS_BGet                        0x00000a
#define OS_BPut                        0x00000b
#define OS_GBPB                        0x00000c
#define OS_Find                        0x00000d
#define OS_ReadLine                    0x00000e
#define OS_Control                     0x00000f
#define OS_GetEnv                      0x000010
#define OS_Exit                        0x000011
#define OS_SetEnv                      0x000012
#define OS_IntOn                       0x000013
#define OS_IntOff                      0x000014
#define OS_CallBack                    0x000015
#define OS_EnterOS                     0x000016
#define OS_BreakPt                     0x000017
#define OS_BreakCtrl                   0x000018
#define OS_UnusedSWI                   0x000019
#define OS_UpdateMEMC                  0x00001a
#define OS_SetCallBack                 0x00001b
#define OS_Mouse                       0x00001c
#define OS_Heap                        0x00001d
#define OS_Module                      0x00001e
#define OS_Claim                       0x00001f
#define OS_Release                     0x000020
#define OS_ReadUnsigned                0x000021
#define OS_GenerateEvent               0x000022
#define OS_ReadVarVal                  0x000023
#define OS_SetVarVal                   0x000024
#define OS_GSInit                      0x000025
#define OS_GSRead                      0x000026
#define OS_GSTrans                     0x000027
#define OS_BinaryToDecimal             0x000028
#define OS_FSControl                   0x000029
#define OS_ChangeDynamicArea           0x00002a
#define OS_GenerateError               0x00002b
#define OS_ReadEscapeState             0x00002c
#define OS_EvaluateExpression          0x00002d
#define OS_SpriteOp                    0x00002e
#define OS_ReadPalette                 0x00002f
#define OS_ServiceCall                 0x000030
#define OS_ReadVduVariables            0x000031
#define OS_ReadPoint                   0x000032
#define OS_UpCall                      0x000033
#define OS_CallAVector                 0x000034
#define OS_ReadModeVariable            0x000035
#define OS_RemoveCursors               0x000036
#define OS_RestoreCursors              0x000037
#define OS_SWINumberToString           0x000038
#define OS_SWINumberFromString         0x000039
#define OS_ValidateAddress             0x00003a
#define OS_CallAfter                   0x00003b
#define OS_CallEvery                   0x00003c
#define OS_RemoveTickerEvent           0x00003d
#define OS_InstallKeyHandler           0x00003e
#define OS_CheckModeValid              0x00003f
#define OS_ChangeEnvironment           0x000040
#define OS_ClaimScreenMemory           0x000041
#define OS_ReadMonotonicTime           0x000042
#define OS_SubstituteArgs              0x000043
#define OS_PrettyPrint                 0x000044
#define OS_Plot                        0x000045
#define OS_WriteN                      0x000046
#define OS_AddToVector                 0x000047
#define OS_WriteEnv                    0x000048
#define OS_ReadArgs                    0x000049
#define OS_ReadRAMFsLimits             0x00004a
#define OS_ClaimDeviceVector           0x00004b
#define OS_ReleaseDeviceVector         0x00004c
#define OS_DelinkApplication           0x00004d
#define OS_RelinkApplication           0x00004e
#define OS_HeapSort                    0x00004f
#define OS_ExitAndDie                  0x000050
#define OS_ReadMemMapInfo              0x000051
#define OS_ReadMemMapEntries           0x000052
#define OS_SetMemMapEntries            0x000053
#define OS_AddCallBack                 0x000054
#define OS_ReadDefaultHandler          0x000055
#define OS_SetECFOrigin                0x000056
#define OS_SerialOp                    0x000057
#define OS_ReadSysInfo                 0x000058
#define OS_Confirm                     0x000059
#define OS_ChangedBox                  0x00005a
#define OS_CRC                         0x00005b
#define OS_ReadDynamicArea             0x00005c
#define OS_PrintChar                   0x00005d
#define OS_ChangeRedirection           0x00005e
#define OS_RemoveCallBack              0x00005f
#define OS_FindMemMapEntries           0x000060
#define OS_SetColour                   0x000061
#define OS_ConvertStandardDateAndTime  0x0000c0
#define OS_ConvertDateAndTime          0x0000c1
#define OS_ConvertHex1                 0x0000d0
#define OS_ConvertHex2                 0x0000d1
#define OS_ConvertHex4                 0x0000d2
#define OS_ConvertHex6                 0x0000d3
#define OS_ConvertHex8                 0x0000d4
#define OS_ConvertCardinal1            0x0000d5
#define OS_ConvertCardinal2            0x0000d6
#define OS_ConvertCardinal3            0x0000d7
#define OS_ConvertCardinal4            0x0000d8
#define OS_ConvertInteger1             0x0000d9
#define OS_ConvertInteger2             0x0000da
#define OS_ConvertInteger3             0x0000db
#define OS_ConvertInteger4             0x0000dc
#define OS_ConvertBinary1              0x0000dd
#define OS_ConvertBinary2              0x0000de
#define OS_ConvertBinary3              0x0000df
#define OS_ConvertBinary4              0x0000e0
#define OS_ConvertSpacedCardinal1      0x0000e1
#define OS_ConvertSpacedCardinal2      0x0000e2
#define OS_ConvertSpacedCardinal3      0x0000e3
#define OS_ConvertSpacedCardinal4      0x0000e4
#define OS_ConvertSpacedInteger1       0x0000e5
#define OS_ConvertSpacedInteger2       0x0000e6
#define OS_ConvertSpacedInteger3       0x0000e7
#define OS_ConvertSpacedInteger4       0x0000e8
#define OS_ConvertFixedNetStation      0x0000e9
#define OS_ConvertNetStation           0x0000ea
#define OS_ConvertFixedFileSize        0x0000eb
#define OS_ConvertFileSize             0x0000ec
#define IIC_Control                    0x000240
#define Cache_Control                  0x000280
#define Cache_Cacheable                0x000281
#define Cache_Updateable               0x000282
#define Cache_Disruptive               0x000283
#define Cache_Flush                    0x000284
#define Font_CacheAddr                 0x040080
#define Font_FindFont                  0x040081
#define Font_LoseFont                  0x040082
#define Font_ReadDefn                  0x040083
#define Font_ReadInfo                  0x040084
#define Font_StringWidth               0x040085
#define Font_Paint                     0x040086
#define Font_Caret                     0x040087
#define Font_ConverttoOS               0x040088
#define Font_Converttopoints           0x040089
#define Font_SetFont                   0x04008a
#define Font_CurrentFont               0x04008b
#define Font_FutureFont                0x04008c
#define Font_FindCaret                 0x04008d
#define Font_CharBBox                  0x04008e
#define Font_ReadScaleFactor           0x04008f
#define Font_SetScaleFactor            0x040090
#define Font_ListFonts                 0x040091
#define Font_SetFontColours            0x040092
#define Font_SetPalette                0x040093
#define Font_ReadThresholds            0x040094
#define Font_SetThresholds             0x040095
#define Font_FindCaretJ                0x040096
#define Font_StringBBox                0x040097
#define Font_ReadColourTable           0x040098
#define Font_MakeBitmap                0x040099
#define Font_UnCacheFile               0x04009a
#define Font_SetFontMax                0x04009b
#define Font_ReadFontMax               0x04009c
#define Font_ReadFontPrefix            0x04009d
#define Font_SwitchOutputToBuffer      0x04009e
#define Font_ReadFontMetrics           0x04009f
#define Font_DecodeMenu                0x0400a0
#define Font_ScanString                0x0400a1
#define Font_SetColourTable            0x0400a2
#define Font_CurrentRGB                0x0400a3
#define Font_FutureRGB                 0x0400a4
#define Font_ReadEncodingFilename      0x0400a5
#define Font_FindField                 0x0400a6
#define Font_ApplyFields               0x0400a7
#define Font_LookupFont                0x0400a8
#define Wimp_Initialise                0x0400c0
#define Wimp_CreateWindow              0x0400c1
#define Wimp_CreateIcon                0x0400c2
#define Wimp_DeleteWindow              0x0400c3
#define Wimp_DeleteIcon                0x0400c4
#define Wimp_OpenWindow                0x0400c5
#define Wimp_CloseWindow               0x0400c6
#define Wimp_Poll                      0x0400c7
#define Wimp_RedrawWindow              0x0400c8
#define Wimp_UpdateWindow              0x0400c9
#define Wimp_GetRectangle              0x0400ca
#define Wimp_GetWindowState            0x0400cb
#define Wimp_GetWindowInfo             0x0400cc
#define Wimp_SetIconState              0x0400cd
#define Wimp_GetIconState              0x0400ce
#define Wimp_GetPointerInfo            0x0400cf
#define Wimp_DragBox                   0x0400d0
#define Wimp_ForceRedraw               0x0400d1
#define Wimp_SetCaretPosition          0x0400d2
#define Wimp_GetCaretPosition          0x0400d3
#define Wimp_CreateMenu                0x0400d4
#define Wimp_DecodeMenu                0x0400d5
#define Wimp_WhichIcon                 0x0400d6
#define Wimp_SetExtent                 0x0400d7
#define Wimp_SetPointerShape           0x0400d8
#define Wimp_OpenTemplate              0x0400d9
#define Wimp_CloseTemplate             0x0400da
#define Wimp_LoadTemplate              0x0400db
#define Wimp_ProcessKey                0x0400dc
#define Wimp_CloseDown                 0x0400dd
#define Wimp_StartTask                 0x0400de
#define Wimp_ReportError               0x0400df
#define Wimp_GetWindowOutline          0x0400e0
#define Wimp_PollIdle                  0x0400e1
#define Wimp_PlotIcon                  0x0400e2
#define Wimp_SetMode                   0x0400e3
#define Wimp_SetPalette                0x0400e4
#define Wimp_ReadPalette               0x0400e5
#define Wimp_SetColour                 0x0400e6
#define Wimp_SendMessage               0x0400e7
#define Wimp_CreateSubMenu             0x0400e8
#define Wimp_SpriteOp                  0x0400e9
#define Wimp_BaseOfSprites             0x0400ea
#define Wimp_BlockCopy                 0x0400eb
#define Wimp_SlotSize                  0x0400ec
#define Wimp_ReadPixTrans              0x0400ed
#define Wimp_ClaimFreeMemory           0x0400ee
#define Wimp_CommandWindow             0x0400ef
#define Wimp_TextColour                0x0400f0
#define Wimp_TransferBlock             0x0400f1
#define Wimp_ReadSysInfo               0x0400f2
#define Wimp_SetFontColours            0x0400f3
#define Wimp_GetMenuState              0x0400f4
#define Wimp_RegisterFilter            0x0400f5
#define Wimp_AddMessages               0x0400f6
#define Wimp_RemoveMessages            0x0400f7
#define Wimp_SetColourMapping          0x0400f8
#define Wimp_GetIconInfo               0x0400f9
#define Sound_Configure                0x040140
#define Sound_Enable                   0x040141
#define Sound_Stereo                   0x040142
#define Sound_Speaker                  0x040143
#define Sound_Volume                   0x040180
#define Sound_SoundLog                 0x040181
#define Sound_LogScale                 0x040182
#define Sound_InstallVoice             0x040183
#define Sound_RemoveVoice              0x040184
#define Sound_AttachVoice              0x040185
#define Sound_ControlPacked            0x040186
#define Sound_Tuning                   0x040187
#define Sound_Pitch                    0x040188
#define Sound_Control                  0x040189
#define Sound_AttachNamedVoice         0x04018a
#define Sound_ReadControlBlock         0x04018b
#define Sound_WriteControlBlock        0x04018c
#define Sound_QInit                    0x0401c0
#define Sound_QSchedule                0x0401c1
#define Sound_QRemove                  0x0401c2
#define Sound_QFree                    0x0401c3
#define Sound_QSDispatch               0x0401c4
#define Sound_QTempo                   0x0401c5
#define Sound_QBeat                    0x0401c6
#define Sound_QInterface               0x0401c7
#define ADFS_DiscOp                    0x040240
#define ADFS_HDC                       0x040241
#define ADFS_Drives                    0x040242
#define ADFS_FreeSpace                 0x040243
#define ADFS_Retries                   0x040244
#define ADFS_DescribeDisc              0x040245
#define ADFS_VetFormat                 0x040246
#define ADFS_FlpProcessDCB             0x040247
#define ADFS_ControllerType            0x040248
#define ADFS_PowerControl              0x040249
#define ADFS_SetIDEController          0x04024a
#define ADFS_IDEUserOp                 0x04024b
#define ADFS_MiscOp                    0x04024c
#define ADFS_ECCSAndRetries            0x040250
#define Podule_ReadID                  0x040280
#define Podule_ReadHeader              0x040281
#define Podule_EnumerateChunks         0x040282
#define Podule_ReadChunk               0x040283
#define Podule_ReadBytes               0x040284
#define Podule_WriteBytes              0x040285
#define Podule_CallLoader              0x040286
#define Podule_RawRead                 0x040287
#define Podule_RawWrite                0x040288
#define Podule_HardwareAddress         0x040289
#define Podule_EnumerateChunksWithInfo 0x04028a
#define Podule_HardwareAddresses       0x04028b
#define Podule_ReturnNumber            0x04028c
#define Debugger_Disassemble           0x040380
#define SCSI_Version                   0x0403c0
#define SCSI_Initialise                0x0403c1
#define SCSI_Control                   0x0403c2
#define SCSI_Op                        0x0403c3
#define SCSI_Status                    0x0403c4
#define SCSI_ReadControlLines          0x0403c5
#define SCSI_EEProm                    0x0403c6
#define SCSI_Reserve                   0x0403c7
#define SCSI_List                      0x0403c8
#define SCSI_TargetControl             0x0403c9
#define FPEmulator_Version             0x040480
#define FileCore_DiscOp                0x040540
#define FileCore_Create                0x040541
#define FileCore_Drives                0x040542
#define FileCore_FreeSpace             0x040543
#define FileCore_FloppyStructure       0x040544
#define FileCore_DescribeDisc          0x040545
#define FileCore_DiscardReadSectorsCache 0x040546
#define FileCore_DiscFormat            0x040547
#define FileCore_LayoutStructure       0x040548
#define FileCore_MiscOp                0x040549
#define Shell_Create                   0x0405c0
#define Shell_Destroy                  0x0405c1
#define Hourglass_On                   0x0406c0
#define Hourglass_Off                  0x0406c1
#define Hourglass_Smash                0x0406c2
#define Hourglass_Start                0x0406c3
#define Hourglass_Percentage           0x0406c4
#define Hourglass_LEDs                 0x0406c5
#define Hourglass_Colours              0x0406c6
#define Draw_ProcessPath               0x040700
#define Draw_ProcessPathFP             0x040701
#define Draw_Fill                      0x040702
#define Draw_FillFP                    0x040703
#define Draw_Stroke                    0x040704
#define Draw_StrokeFP                  0x040705
#define Draw_StrokePath                0x040706
#define Draw_StrokePathFP              0x040707
#define Draw_FlattenPath               0x040708
#define Draw_FlattenPathFP             0x040709
#define Draw_TransformPath             0x04070a
#define Draw_TransformPathFP           0x04070b
#define ColourTrans_SelectTable        0x040740
#define ColourTrans_SelectGCOLTable    0x040741
#define ColourTrans_ReturnGCOL         0x040742
#define ColourTrans_SetGCOL            0x040743
#define ColourTrans_ReturnColourNumber 0x040744
#define ColourTrans_ReturnGCOLForMode  0x040745
#define ColourTrans_ReturnColourNumberForMode 0x040746
#define ColourTrans_ReturnOppGCOL      0x040747
#define ColourTrans_SetOppGCOL         0x040748
#define ColourTrans_ReturnOppColourNumber 0x040749
#define ColourTrans_ReturnOppGCOLForMode 0x04074a
#define ColourTrans_ReturnOppColourNumberForMode 0x04074b
#define ColourTrans_GCOLToColourNumber 0x04074c
#define ColourTrans_ColourNumberToGCOL 0x04074d
#define ColourTrans_ReturnFontColours  0x04074e
#define ColourTrans_SetFontColours     0x04074f
#define ColourTrans_InvalidateCache    0x040750
#define ColourTrans_SetCalibration     0x040751
#define ColourTrans_ReadCalibration    0x040752
#define ColourTrans_ConvertDeviceColour 0x040753
#define ColourTrans_ConvertDevicePalette 0x040754
#define ColourTrans_ConvertRGBToCIE    0x040755
#define ColourTrans_ConvertCIEToRGB    0x040756
#define ColourTrans_WriteCalibrationToFile 0x040757
#define ColourTrans_ConvertRGBToHSV    0x040758
#define ColourTrans_ConvertHSVToRGB    0x040759
#define ColourTrans_ConvertRGBToCMYK   0x04075a
#define ColourTrans_ConvertCMYKToRGB   0x04075b
#define ColourTrans_ReadPalette        0x04075c
#define ColourTrans_WritePalette       0x04075d
#define ColourTrans_SetColour          0x04075e
#define ColourTrans_MiscOp             0x04075f
#define ColourTrans_WriteLoadingsToFile 0x040760
#define ColourTrans_SetTextColour      0x040761
#define ColourTrans_SetOppTextColour   0x040762
#define ColourTrans_GenerateTable      0x040763
#define SCSIFS_DiscOp                  0x040980
#define SCSIFS_Drives                  0x040982
#define SCSIFS_FreeSpace               0x040983
#define SCSIFS_DescribeDisc            0x040985
#define SCSIFS_TestReady               0x040986
#define Super_Sample90                 0x040d80
#define Super_Sample45                 0x040d81
#define FilerAction_SendSelectedDirectory 0x040f80
#define FilerAction_SendSelectedFile   0x040f81
#define FilerAction_SendStartOperation 0x040f82
#define MessageTrans_FileInfo          0x041500
#define MessageTrans_OpenFile          0x041501
#define MessageTrans_Lookup            0x041502
#define MessageTrans_MakeMenus         0x041503
#define MessageTrans_CloseFile         0x041504
#define MessageTrans_EnumerateTokens   0x041505
#define MessageTrans_ErrorLookup       0x041506
#define MessageTrans_GSLookup          0x041507
#define MessageTrans_CopyError         0x041508
#define Laser_Info                     0x0418c0
#define Laser_Reset                    0x0418c1
#define Laser_Status                   0x0418c2
#define Laser_PageSize                 0x0418c3
#define Laser_PrintJob                 0x0418c4
#define Laser_QueueJob                 0x0418c5
#define Laser_CancelJob                0x0418c6
#define Laser_EndJob                   0x0418c7
#define Laser_QueryJob                 0x0418c8
#define Laser_CurrentJob               0x0418c9
#define Laser_PauseQueue               0x0418ca
#define Laser_FlashLED                 0x0418cb
#define Laser_CMOS                     0x0418cc
#define Laser_Diagnostic               0x0418cd
#define PDumper_Info                   0x041b00
#define PDumper_Claim                  0x041b01
#define PDumper_Free                   0x041b02
#define PDumper_Find                   0x041b03
#define PDumper_StartJob               0x041b04
#define PDumper_TidyJob                0x041b05
#define PDumper_SetColour              0x041b06
#define PDumper_PrepareStrip           0x041b07
#define PDumper_LookupError            0x041b08
#define PDumper_CopyFilename           0x041b09
#define ResourceFS_RegisterFiles       0x041b40
#define ResourceFS_DeregisterFiles     0x041b41
#define DragASprite_Start              0x042400
#define DragASprite_Stop               0x042401
#define DDEUtils_Prefix                0x042580
#define DDEUtils_SetCLSize             0x042581
#define DDEUtils_SetCL                 0x042582
#define DDEUtils_GetCLSize             0x042583
#define DDEUtils_GetCl                 0x042584
#define DDEUtils_ThrowbackRegister     0x042585
#define DDEUtils_ThrowbackUnRegister   0x042586
#define DDEUtils_ThrowbackStart        0x042587
#define DDEUtils_ThrowbackSend         0x042588
#define DDEUtils_ThrowbackEnd          0x042589
#define Filter_RegisterPreFilter       0x042640
#define Filter_RegisterPostFilter      0x042641
#define Filter_DeRegisterPreFilter     0x042642
#define Filter_DeRegisterPostFilter    0x042643
#define TaskManager_TaskNameFromHandle 0x042680
#define TaskManager_EnumerateTasks     0x042681
#define TaskManager_Shutdown           0x042682
#define Squash_Compress                0x042700
#define Squash_Decompress              0x042701
#define DeviceFS_Register              0x042740
#define DeviceFS_Deregister            0x042741
#define DeviceFS_RegisterObjects       0x042742
#define DeviceFS_DeregisterObjects     0x042743
#define DeviceFS_CallDevice            0x042744
#define DeviceFS_Threshold             0x042745
#define DeviceFS_ReceivedCharacter     0x042746
#define DeviceFS_TransmitCharacter     0x042747
#define Buffer_Create                  0x042940
#define Buffer_Remove                  0x042941
#define Buffer_Register                0x042942
#define Buffer_Deregister              0x042943
#define Buffer_ModifyFlags             0x042944
#define Buffer_LinkDevice              0x042945
#define Buffer_UnlinkDevice            0x042946
#define Buffer_GetInfo                 0x042947
#define Buffer_Threshold               0x042948
#define BASICTrans_HELP                0x042c80
#define BASICTrans_Error               0x042c81
#define BASICTrans_Message             0x042c82
#define Parallel_HardwareAddress       0x042ec0
#define Parallel_Op                    0x042ec1
#define Territory_Number               0x043040
#define Territory_Register             0x043041
#define Territory_Deregister           0x043042
#define Territory_NumberToName         0x043043
#define Territory_Exists               0x043044
#define Territory_AlphabetNumberToName 0x043045
#define Territory_SelectAlphabet       0x043046
#define Territory_SetTime              0x043047
#define Territory_ReadCurrentTimeZone  0x043048
#define Territory_ConvertTimeToUTCOrdinals 0x043049
#define Territory_ReadTimeZones        0x04304a
#define Territory_ConvertDateAndTime   0x04304b
#define Territory_ConvertStandardDateAndTime 0x04304c
#define Territory_ConvertStandardDate  0x04304d
#define Territory_ConvertStandardTime  0x04304e
#define Territory_ConvertTimeToOrdinals 0x04304f
#define Territory_ConvertTimeStringToOrdinals 0x043050
#define Territory_ConvertOrdinalsToTime 0x043051
#define Territory_Alphabet             0x043052
#define Territory_AlphabetIdentifier   0x043053
#define Territory_SelectKeyboardHandler 0x043054
#define Territory_WriteDirection       0x043055
#define Territory_CharacterPropertyTable 0x043056
#define Territory_LowerCaseTable       0x043057
#define Territory_UpperCaseTable       0x043058
#define Territory_ControlTable         0x043059
#define Territory_PlainTable           0x04305a
#define Territory_ValueTable           0x04305b
#define Territory_RepresentationTable  0x04305c
#define Territory_Collate              0x04305d
#define Territory_ReadSymbols          0x04305e
#define Territory_ReadCalendarInformation 0x04305f
#define Territory_NameToNumber         0x043060
#define Territory_TransformString      0x043061
#define Territory_Reserved1            0x043062
#define Territory_Reserved2            0x043063
#define Territory_Reserved3            0x043064
#define Territory_Reserved4            0x043065
#define Territory_Reserved5            0x043066
#define Territory_Reserved6            0x043067
#define Territory_Reserved7            0x043068
#define Territory_Reserved8            0x043069
#define Territory_Reserved9            0x04306a
#define Territory_Reserved10           0x04306b
#define Territory_Reserved11           0x04306c
#define Territory_Reserved12           0x04306d
#define Territory_Reserved13           0x04306e
#define Territory_Reserved14           0x04306f
#define Territory_Reserved15           0x043070
#define Territory_Reserved16           0x043071
#define Territory_Reserved17           0x043072
#define Territory_Reserved18           0x043073
#define Territory_Reserved19           0x043074
#define Territory_ConvertTextToString  0x043075
#define ScreenBlanker_Control          0x043100
#define TaskWindow_TaskInfo            0x043380
#define ScanMan_Reset                  0x043780
#define ScanMan_Claim                  0x043781
#define ScanMan_Feeder                 0x043782
#define ScanMan_Modes                  0x043783
#define ScanMan_Poll                   0x043784
#define ScanMan_Release                0x043785
#define ScanMan_AbortScan              0x043786
#define ScanMan_Resolution             0x043787
#define ScanMan_Size                   0x043788
#define ScanMan_Scanners               0x043789
#define ScanMan_Start                  0x04378a
#define ScanMan_Stop                   0x04378b
#define Free_Register                  0x0444c0
#define Free_DeRegister                0x0444c1
#define DOSFS_DiscFormat               0x044b00
#define DOSFS_LayoutStructure          0x044b01

#endif
��MakefileK� a�KF�ǹ��# Project:   Chaos


# Toolflags:
CCflags = -c -depend !Depend -throwback -IC:
Linkflags = -o $@
ObjAsmflags = -depend !Depend -ThrowBack -Stamp -quit -CloseExec
CMHGflags = 
LibFileflags = -c -o $@
Squeezeflags = -o $@
AAsmflags = -depend !Depend -quit -CloseExec -To $@ -From


# Final targets:
@.Demo3:   @.^.^.^.^.Clib.o.Stubs @.^.^.^.^.RISC_OSLib.o.RISC_OSlib @.o.main \
        @.o.main_asse 
        Link $(Linkflags) @.^.^.^.^.Clib.o.Stubs \
        @.^.^.^.^.RISC_OSLib.o.RISC_OSlib @.o.main @.o.main_asse 


# User-editable dependencies:

# Static dependencies:
@.o.main:   @.c.main
        cc $(ccflags) -o @.o.main @.c.main 
@.o.main_asse:   @.s.main_asse
        objasm $(objasmflags) -from @.s.main_asse -to @.o.main_asse


# Dynamic dependencies:
@.o.main_asse: h.RegNames
@.o.main_asse: h.SWInames
@.o.main_asse: s.macros1
@.o.main_asse: s.subrouts1
@.o.main_asse: s.generatorc
@.o.main_asse: s.sound
o.main:	c.main
o.main:	C:h.trace
o.main:	C:h.wimpt
o.main:	C:h.wimp
o.main:	C:h.os
o.main:	C:h.sprite
o.main:	C:h.werr
o.main:	C:h.bbc
o.main:	C:h.os
o.main:	C:h.akbd
o.main:	h.swis
�o�K� vj�KF��j���mainx� ]��xF���`�������OBJ_HEAD$TOBJ_AREA\�OBJ_IDFN80OBJ_SYMTh�OBJ_STRT�<�read_monitor_type�
����-��L�
]���M�
0�� ����-�0�� ���������P���@���P��Ѝ�Ѝ�[�restore�
����-��L�
]���M�0��-�0����, ����a�����Ѝ����P�!������������|@����A�!����������������P���0�� ����-�0�� ����
�����Ѝ���[�error in restore
@-�0�� ������L����S����S�1��8��#8������!��S�0C�0@�Q�A�@�S��������0��0����1��8��#8��S����S���� ��0��0C����init_globals�
�����-��L�
]���M�n���a���P��@��$p�������@��T���@��Z��p��������@��P��T���0�� ��
��P��-�0�� ������-�0��-�0�� ����
�����$Ѝ�����������[�input_params�
���-���-�Am��L�
]��p��@��`��P������M�(���'���4���F���J���P���T���e���P��t����������dP�����`����������������P���y������

                  T h e   S o u n d   o f   C h a o s


After image/sample generation is complete the sample will play repeatedly.

At that point, use:

  Escape to end this program,
  Return to re-run it,
  Left/Right cursor (+shift) to seek out interesting new lambda regions
  (followed by any other key to resume playing of current sample).


Please enter sample duration in centiseconds (eg 3000 for a 30s sample; must be at least 100) %iCan't allocate sample memory of %i bytes - try a shorter duration or quit & increase free memory, then run again!
��P�O��
������������qN��J��*�����/O����dP���P���/���
��4����������������.����p���,���
��&������@������������ʄ�p�����A[��[�Please enter sample resolution (100-10000, suggest 1000) Please enter lambda min (0-4) %Lf�@Please enter lambda max (0-4) add_voice�
���p�-��L�
]���0��-�����0�� ���������Ѝ��@��f��V���0@�-�, ����0���������Ѝ��@��T���8���0�� ����-�0�� ����
�����ph��main�
�����-�Qm�Am��L�%�M�
\��T�M�	�M�w��
��ʍ�D����@��Q���P���
Cџ�\�����P����00��-�80��D ��	+��T��	��H��	��z���Ѝ�P���
0����@�$��Am������@����8��@��<���L ��	+����
��������p��p��ʍ�@��P����������@i�@��P��P��$��4���	���,�� ��(@��	������������@�
��+�����I�����d���������@�����Y������d���������@����P�@���@��ʍ�H��P���H��ʍ�H��P���@�H�����
��ʍ�H$������E������@Y������@�����
��	��P�
t�	����@�������Y�����
�	��<��8 ����<���� ��	����	�����Y�����P��������p����������P��p����ʍ�@��@������W��ʍ�@��A� ��Q�-p��+�unexpected quickdiv_init error��ʍ�H��
�!��(��!��"��)�����ʍ�H����H��ʍ�H��Q���@��
P�
��@�
p���
@Ҁ	�����	��������������P����8@��<`��A
��V�Am�@`�������,�����(�� ����(��P�����(��ʍ�@��@�(����P����������P��P����ʍ�@��@�����ʍ�@��P�5���L��
�����������ʍ�D�����0��-�9�� ��,�����������Ѝ���@����������I���������	���������� ��������H��	���P�h
0��-�9�� �����������Ѝ��	P��
M��ʍ�H��
P�f
T�
��������������������P�������$����@�4����@��-�/�����H��	���P���
ʍ�H��P�T���P�
��@D�ʍ�H��P�O�T�\���P�
��@��ʍ�H��P��
�P��
�������������������lambda = %f                                   ��ʍ�H���P@�ʍ�D������U��:���Y�q���Y�I���������ʍ�H��
P�O�����H
���P�3��
�1���A[�Q[��[�@721��/��4t2h1466�3�5�4�2�1|2p1D
<.3
�
2�
1�
2�
1�
0�
/�

�
.x
h
-\

X
,T+|l*�
)|
(p
(P
(D
(0
'
�	�	�	
�	&�	%$	$�#�
� 
�
�
�l!X
P
�	@
������
����������|tT	$

��
�
xT	�
h
`
X
���
��	T
,	Norcroft RISC OS ARM C vsn 4.00 [May 28 1992]'.8BNUbk,q�������������D��<$*3:DM�Wbi�n��������������!(49C$$codeC$$dataC$$zidataC$$debug__mainx$codesegx$datasegmonitortypelinlogsampleperiodoldvoicevoiceread_monitor_typex$stack_overflowos_swi3rrestoreos_swi2rwimpt_complain_printfwerros_swi2os_swi6nearnoteinit_globalswavetablesin16pitchpitch16os_swi6rinput_paramsscanfx$dividemallocwave_basewave_endadd_voicevoice_baseatexitmainx$stack_overflow_1bbc_modebbc_clsos_swi1rmemsetmul_frac16cbbc_plotquickdiv_initquickdivos_swi1bbc_cursoros_swi4clockbbc_gcolbbc_movebbc_drawbyakbd_pollkeybbc_tabprintfakbd_pollshfree���Ŗ8"Tk0 �main_asse1� ���1F���b�������OBJ_HEAD|,OBJ_AREA�@.OBJ_SYMT�.POBJ_STRT80�OBJ_IDFN�0(Unused  Unused  ���Ŗ"8.rbbcinc� a�a�!����� �Y
� �V
� �S
� �P
� �M
� �J
� �G
� �D
� �A
� �>
� �;
� �8
� �5
� �2
� �/
� �,
	�	 �)
	�	 �&

�
 �#

�
 � 
� �
� �
� �
� �
�� �
@�@ �
 �  �
� �
� �
� �
� � ��pow16�Q���Q��P����
�Q�����@���Ȱ�����`�0@-�@��P���0��Pe"0�`B�?��>���3� 8����%(��X���	�!����!�!����`b��T�`0���ln16�P������0�V�0�S�
0�P�0�M�0�J�
0�G�	0�D�0�A�0�>�0�;�0�8�0�5�0�2�0�/�0�,	�0�)	�0�&
�0�#
�0� �0��0��0��0���0�@�0� �	0��
0��0��0��
0�0�S�C�0��c���@���a�A��A�4A���� ���l"1�aB�/��.���2������!(�����	�!����!�ab2��1����� ���l"1�aB�/��.���2������!(�����	�!����!�ab�A��A���� ���l"1�aB�/��.���2������!(�����	�!����!�ab��U��e����� ���l"1�aB�/��.���2������!(�����	�!����!�abA�A�YA�������!c����������@����exp16�P���@��p���𰱀`�!��"����B��A����@��@8����S���@��s���𰱀��@�`�����
��~����� ���l"1�aB�/��.���2������!(�����	�!����!�ab������� ���l"1�aB�/��.���2������!(�����	�!����!�ab�����~����� ���l"1�aB�/��.���2������!(�����	�!����!�ab��
����A��S�0c�P������C@B��cos16��0 ��0��0���� ��`���@�`���A��������� ���l"1�aB�/��.���2������!(�����	�!����!�ab�A�A���� ���l"1�aB�/��.���2������!(�����	�!����!�abA�A��A���� ���l"1�aB�/��.���2������!(�����	�!����!�ab���������� ���l"1�aB�/��.���2������!(�����	�!����!�ab����P��A���`��sin16��0��0���� ��`���@�`���A��������� ���l"1�aB�/��.���2������!(�����	�!����!�ab�A�A���� ���l"1�aB�/��.���2������!(�����	�!����!�abA�A��A���� ���l"1�aB�/��.���2������!(�����	�!����!�ab���������� ���l"1�aB�/��.���2������!(�����	�!����!�ab����P��A���`��acs16�P����p�����@-�P�`B0�C0�S�@�Q���0���!��`����������!�"/����� ��\��L���������"�".����� ��\��L���������#�"-����� ��\��L���������$�",����� ��\��L���������%�"+����� ��\��L���������&�"*����� ��\��L���������'�")����� ��\��L���������(�"(����� ��\��L���������)�"'����� ��\��L���������*�"&����� ��\��L���������+�"%����� ��\��L���������,�"$����� ��\��L��������� �"#����� ��\��L���������0 �""����� ��\��L��������� �"!����� ��\��L��������� ���� ��\��L��������� ��\��L��������� ��\��L��������� ��\��L��������� ��\��L��������� ��\��L��������� ��\��L��������� ��\��L��������� ��\��L���!������B�� ��A��@�����A��������� ���l"1�aB�/��.���2������!(�����	�!����!�ab������� ���l"1�aB�/��.���2������!(�����	�!����!�ab������� ���l"1�aB�/��.���2������!(�����	�!����!�abF������� ���l"1�aB�/��.���2������!(�����	�!����!�ab���������� ���l"1�aB�/��.���2������!(�����	�!����!�ab����R��A���`�`���asn16�P������@���@-�P�`B0�C0�S�@�Q���0���!��`����������!�"/����� ��\��L���������"�".����� ��\��L���������#�"-����� ��\��L���������$�",����� ��\��L���������%�"+����� ��\��L���������&�"*����� ��\��L���������'�")����� ��\��L���������(�"(����� ��\��L���������)�"'����� ��\��L���������*�"&����� ��\��L���������+�"%����� ��\��L���������,�"$����� ��\��L��������� �"#����� ��\��L���������0 �""����� ��\��L��������� �"!����� ��\��L��������� ���� ��\��L��������� ��\��L��������� ��\��L��������� ��\��L��������� ��\��L��������� ��\��L��������� ��\��L��������� ��\��L��������� ��\��L���!������B�� ��A��@�����A��������� ���l"1�aB�/��.���2������!(�����	�!����!�ab������� ���l"1�aB�/��.���2������!(�����	�!����!�ab������� ���l"1�aB�/��.���2������!(�����	�!����!�abF������� ���l"1�aB�/��.���2������!(�����	�!����!�ab���������� ���l"1�aB�/��.���2������!(�����	�!����!�ab����R��A���`�`���gauss16������ ��a0�� ��6#�##�!Ƞ�8��#Ȍ� ��a0�� ��6#�##�!Ȍ�8��#Ȍ� ��a0�� ��6#�##�!Ȍ�8��#Ȍ� ��a0�� ��6#�##�!Ȍ�8��#Ȍ���l�l���������!����N
@�b@�@���������sgauss16� O� ������div_frac16��0��a" ��0�`B "B 8������0��S�0C �#���0��S�0C �#���0��S�0C �#���0��S�0C �#���0��S�0C �#���0��S�0C �#���0��S�0C �#���0��S�0C �#���0��S�0C �#���0��S�0C �#���0��S�0C �#���0��S�0C �#���0��S�0C �#���0��S�0C �#���0��S�0C �#���0��S�0C �#���0��S�0C �#���0��S�0C �#���0��S�0C �#���0��S�0C �#���0��S�0C �#���0��S�0C �#���0��S�0C �#���0��S�0C �#���0��S�0C �#���0��S�0C �#���0��S�0C �#���0��S�0C �#���0��S�0C �#���0��S�0C �#���0��S�0C �#���0��S�0C �#�S����`��mul_frac16�����a"0�`B�Ϡ�Π��<� Ƞ���!8�����	�"(�� ��#"�,"����`b��mul_frac16c�� ��a"0�`B�/��.���2����� (�����	� ���� �`b��sqrt_frac16��������0��!�"/��0�� ��S�0C������1��"�".��0�� ��S�0C������1��#�"-��0�� ��S�0C������1��$�",��0�� ��S�0C������1��%�"+��0�� ��S�0C������1��&�"*��0�� ��S�0C������1��'�")��0�� ��S�0C������1��(�"(��0�� ��S�0C������1��)�"'��0�� ��S�0C������1��*�"&��0�� ��S�0C������1��+�"%��0�� ��S�0C������1��,�"$��0�� ��S�0C������1�� �"#��0�� ��S�0C������1��0 �""��0�� ��S�0C������1�� �"!��0�� ��S�0C������1�� �0�� ��S�0C������1�� ��S�0C������1�� ��S�0C������1�� ��S�0C������1�� ��S�0C������1�� ��S�0C������1�� ��S�0C������1�� ��S�0C������1�� ��S�0C�����quickdiv_init��O-�h�� ��0��@��P��`��t�P��D����m/��Q� ��0���� ��������������quickdiv���P���@-����`B��C,Ə�$������� �������{�$Ɵ��ƌȌƏ����u���P��S�T�R�u�v�����S�T�R�U�V������S�ST���S�TRv����S�TRVu����P�Q����dş�ƌ����8���Z�TşTşƌ���Ȍ��������v�

Q��
(ş�ƌ�Ȍ����ş�ƌ�Ȍ�����ğ�������
P�Ĥ��Z��
ܤ�������� ��㌣�����Ԥ����������ጣ���������ď�u�?
p�������������
-������������≐��	� X��� X������≐��	� X���H�Z����
��� X�����\����wx�� �h����������
����\���������'t��
�J��
���
\������������x���|���0
�����������\��L����\�
�������� Y������-��J�8���(���X�
(���(���������B���@ß�������	���dÏ�4ß�	���`���������	���TÏ�ß�	���@Ï��Ԃ��Ԓ�����i���⬢��Z� \��X������� \���� \�������X�����������
�������� \�����
�ጣ������� \���(Ÿ�X�\��<����������	���N����\��4���������������⺏��ȃ�ƌ�������������4���
���0���������(���
���$������������
��������x�������Y�����ƌȌ���Ì��X���\���,�u�\��ƌȌ��8������������������X������������
����������\�0��ƌȌ��(��ƌȌ������������������������������ƌ�Ȍ������䀐����v�~�Y�����ƌȌ���Y��
����Ȍ���䤠��Ɗ�Ȍ����Ɗ�Ȍ����Ɗ�Ȍ�~�Œ������A��������`��`@����� @� �� ��`�P�@B���@P�@�0�`W�����������n��K�P����Z���Z��I����X�	����9���Y�|��\�Z������Z�,���0�0��Ì�����Z�

	��������\��
��h������	�	�������\��
�������7�
��W�����@����\�������9���Y�̡ 
	�������ܡ��\��K��������9���Y��
	�������������������9���Y�,�
	��������<�������\�������7�
������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������?
k���̌���;
k���̌���7
k���̌���3
k���̌���/
k���̌���+
k���̌���'
k���̌���#
k���̌���
k���̌���
k���̌���
k���̌���
k���̌���
k���̌���
k���̌���
k���̌���
k���̌������������������������2�!������2�!������2�!������2�!������2�!������2�!������2�!������2�!������2�!������2�!������2�!������2�!������2�!������2�!������2�!������2�!������2�!������2�!������2�!������2�!������2�!������2�!������2�!������2�!������2�!������2�!������2�!������2�!������2�!������2�!������2�!��,,���2�������� VoiceOfChaos-����� ��0��@��@��u,u�d���p�����D�������������a���U�P�!�P��C����U�P�!�P��C��
\��@T�<���S�C���������
\��������pitch16�	P��!@6������@�!��������A����_��b����� ���l"1�aB�/��.���2������!(�����	�!����!�ab�����s����� ���l"1�aB�/��.���2������!(�����	�!����!�ab��
��.��a�!a�����0c�0������ ,�h�%D+�1�
7�=@EN4Y�d\p�|��H� ,�$,�(,�0-�C$$coderbbcincpow16ln16exp16cos16sin16acs16asn16gauss16sgauss16div_frac16mul_frac16mul_frac16csqrt_frac16quickdiv_initquickdivvoice_basewave_basewave_endpitch16ARM AOF Macro Assembler Version 2.00��s��� wj��F��޲��generatorcVJ� A�p+VJF����N��; quickdiv_init
; a leaf APCS function
;
; C prototype:
; int quickdiv_init(int divisor)
;
; assembles the C function quickdiv, below, to carry out rapid division by the supplied divisor -
; after calling this fn, carry out a division via quotient=quickdiv(numerator);
;
; eg use:	for (i=0;i<10000;i++) printf("%i", i/n);
; replace with:	quickdiv_init(n); for (i=0;i<10000;i++) printf("%i", quickdiv(i));
;
; nb init executes in about 20 x time of a decent fourier div routine, while quickdiv typically executes
; in under 0.2 x time fdiv routine, thus in above loop calc we make speed saving after loop exceeds ~25
; and for full 10000 limit, get speed increase in div calc of about 4.95
;
; nb2 when in direct comparison with Acorn's division code, note it is optimised for low numerator, and
; will then equal or outperform this code, however once numerator gets bigger than ~2^9 and have loop>~25
; we make savings; these become 300%-600% for numerator ~16 bits or more and large loops.
;
; return codes as for gen below, plus: -7 indicating program error - serious corruption due to code
;								     overflowing quickdiv buffer
;

        EXPORT  quickdiv_init

qinsta  DCB     "quickdiv_init", 0
        ALIGN
qinend  DCD     &ff000000 + qinend - qinsta

quickdiv_init

	STMFD	sp!, {v1-v6, sl, fp, lr}
	ADR	r1, quickdiv
	MOV	r2, #0
	MOV	r3, #12
	MOV	r4, #1
	MOV	r5, #2
	MOV	r6, #3
	BL	gen
	CMP	r0, #0
	LDMLTFD	sp!, {v1-v6, sl, fp, pc}^
	ADR	r1, quickdiv
	ADD	r1, r1, r0
	ADR	r2, quickdivend-8
	CMP	r1, r2
	LDRHI	r0, quickdiv_init_ops+4
	STRHI	r0, quickdiv
	MOVHI	r0, #-7
	LDMHIFD	sp!, {v1-v6, sl, fp, pc}^
	ADR	r2, quickdiv_init_ops
	LDMIA	r2, {r3, r4}
	STMIA	r1!, {r3, r4}
	ADD	r0, r0, #8
	LDMFD	sp!, {v1-v6, sl, fp, pc}^

quickdiv_init_ops
	MOV	r0, r12
	MOVS	pc, lr



; quickdiv
; a leaf APCS function
;
; C prototype:
; int quickdiv(int numerator)
;
; returns numerator/divisor, where divisor was the argument formerly passed to quickdiv_init
; (whose purpose was to assemble this function)
;

        EXPORT  quickdiv

qdnsta  DCB     "quickdiv", 0
        ALIGN
qdnend  DCD     &ff000000 + qdnend - qdnsta

quickdiv

	MOVS	pc, lr
	%	380
quickdivend



;
; Name:	Generator.
;
; Author:
;	Michael Rozdoba, from an algorithm originally based on the work of Samuel K.R. Smith.
;
; Function:
; 	Compile code to carry out rapid assembler divison by an arbitrary constant.
;
; Arguments:
; r0	divisor constant
; r1	ptr to buffer for code (passing 0 indicates no code to be compiled - allows routine to be called to
;	calculate size of buffer required)
; r2	number of numerator register for routine to be compiled
; r3	number of output quotient register
; r4	number of output remainder register
; r5	scratch - work register - not needed if divisor is a valid immediate constant (nb if work supplied in
;	any case, but not needed, it will be ignored - if caller knows it will not be needed, -1 may be
;	passed)
; r6	scratch - sign preservation register (of numerator) - if numerator is known to always be positive
;	may pass -1 to indicate this, which will save use of signpres register & will reduce compiled code
;	size by 6 instructions typically (cf typical code size 20 to 27 instructions, when sign preservation
;	is active, thence reduced to 14 to 21 instructions)
;
;	NB All supplied register numbers (other than work & signpres when not needed & passed as -1) MUST be
;	   distinct.
;
; Returns:
; r0	size of compiled code in bytes
;	a value of size<0 indicates an error occurred during compilation; code as follows:
; -1	generator called with 0 divisor
; -2	work reg needed but not supplied
; -3	invalid register number
; -4	register number clash (the registers must be distinct)
; -5	program error - internal recursion stack exhausted
; -6	program error - fastdivaid logic 3
;
; Additional notes:
;	Assumes a suitable external r13 stack exists.
;

const	RN	r0
cptr	RN	r1
num	RN	r2
outq	RN	r3
outr	RN	r4
work	RN	r5
signpres	RN	r6
t1	RN	r12
fn	RN	r11				;args/results to/from subrouts
t2	RN	r10
t3	RN	r14
t4	RN	r9

ps	RN	r8
pm	RN	r9

stk	RN	r7
stkl	RN	r8

m_v	RN	r7
m_i	RN	r8
m_m	RN	r9
m_r	RN	r10
m_mi	RN	r11
m_ml	RN	r12
m_li	RN	r14

gen	CMP	const, #0
	MVNEQ	r0, #0				;ERROR: 0 divisor
	MOVEQS	pc, lr

	STMFD	sp!, {lr}

	MOV	t1, #1
	RSBMI	const, const, #0
	MOVMI	t1, #-1
	STR	t1, nsignpres

	STR	cptr, initial_cptr

	MOV	fn, const
	BL	powerof2
	STR	fn, power_of_2

	MOV	fn, const
	BL	imop2
	CMP	fn, #-1
	LDRNE	t1, op1
	ORRNE	t1, t1, fn			;insert operand 2
	ORRNE	t1, t1, outr, LSL #12		;       destination reg
	ORRNE	t1, t1, outr, LSL #16		;       operand 1 register
	STRNE	t1, op2				;note, opcode & condition will be added later (as need many)
	MOVEQ	t1, work
	MOVNE	t1, #-1				;t1 = const valid ? -1 : work reg
	CMPEQ	work, #-1
	MOVEQ	r0, #-2
	LDMEQFD	sp!, {pc}^			;ERROR: work reg needed but not supplied
	MOV	work, t1			;either leave work alone, if needed, else reset to -1

	CMP	outq, #0
	CMPGE	outr, #0
	CMPGE	num, #0
	CMPGE	work, #-1
	CMPGE	signpres, #-1
	MOVLT	r0, #-3
	LDMLTFD	sp!, {pc}^			;ERROR: invalid register number
	CMP	outq, #14
	CMPLE	outr, #14
	CMPLE	num, #14
	CMPLE	work, #14
	CMPLE	signpres, #14
	MOVGT	r0, #-3
	LDMGTFD	sp!, {pc}^			;ERROR: invalid register number
	CMP	outq, outr
	CMPNE	outq, num
	CMPNE	outr, num
	MOVEQ	r0, #-4
	LDMEQFD	sp!, {pc}^			;ERROR: register clash
	CMP	outq, signpres
	CMPNE	outr, signpres
	CMPNE	num, signpres
	BNE	l1
	CMP	signpres, #-1
	MOVNE	r0, #-4
	LDMNEFD	sp!, {pc}^			;ERROR: register clash
l1	CMP	outq, work
	CMPNE	outr, work
	CMPNE	num, work
	CMPNE	signpres, work
	BNE	l2
	CMP	work, #-1
	MOVNE	r0, #-4
	LDMNEFD	sp!, {pc}^			;ERROR: register clash
l2
	CMP	const, #1
	BNE	not_one
	CMP	cptr, #0
	MOVEQ	r0, #8
	LDMEQFD	sp!, {pc}^			;return size of code needed to divide by �1
	LDR	t1, op_mov_0
	ORR	t1, t1, outr, LSL #12
	STR	t1, [cptr], #4			;mov outr, #0
	LDR	t2, nsignpres
	CMP	t2, #1
	LDREQ	t1, op_mov_r0
	LDRNE	t1, op_rsb_0
	ORR	t1, t1, outq, LSL #12
	ORREQ	t1, t1, num			;mov outq, num		- if const > 0
	ORRNE	t1, t1, num, LSL #16		;rsb outq, num, #0	- if const < 0
	STR	t1, [cptr], #4
	MOV	r0, #8
	LDMFD	sp!, {pc}^			;return after compiling code to divide by �1
not_one
	CMP	signpres, #-1
	BEQ	not_signpres_1
	CMP	cptr, #0
	ADDEQ	cptr, cptr, #8
	BEQ	not_signpres_1
	LDR	t1, op_ands_sign
	ORR	t1, t1, signpres, LSL #12
	ORR	t1, t1, num, LSL #16
	STR	t1, [cptr], #4			;ands signpres, num, #&80000000
	LDR	t1, op_rsbne_0
	ORR	t1, t1, num, LSL #12
	ORR	t1, t1, num, LSL #16
	STR	t1, [cptr], #4			;rsbne num, num, #0
not_signpres_1
	LDR	t1, power_of_2
	MOV	t2, #1
	MOV	t2, t2, LSL t1
	CMP	const, t2
	BNE	not_a_power_of_2
						;have division by a power of 2
	LDR	t2, initial_cptr
	CMP	t2, #0
	ADDEQ	cptr, cptr, #8
	BEQ	now_restore_signs
	LDR	t2, op_mov_r0
	ORR	t2, t2, outq, LSL #12
	ORR	t2, t2, num			;mov outq, num, lsl #0
	ORR	t2, t2, #2_01 << 5		;changed to lsr #0 (which happens to mean lsr #32)
	ORR	t2, t2, t1, LSL #7
	STR	t2, [cptr], #4			;mov outq, num, lsr #power_of_2 (safe as power tween 1 & 31)
	LDR	t2, op_sub_0_0
	ORR	t2, t2, outr, LSL #12
	ORR	t2, t2, num, LSL #16
	ORR	t2, t2, outq
	ORR	t2, t2, t1, LSL #7
	STR	t2, [cptr], #4			;sub outr, num, outq, LSL #power_of_2
	B	now_restore_signs
not_a_power_of_2
	MOV	t1, #0
	STR	t1, subflag
	CMP	work, #-1
	BEQ	not_work_1
						;now we have to do megamov work, #const   - assuming const<>0
	MOV	m_v, const
	MOV	m_r, #0
m_l1	TST	m_v, #1
	MOVEQ	m_v, m_v, ROR #31
	ADDEQ	m_r, m_r, #1
	BEQ	m_l1
	STMFD	sp!, {m_r}			;to allow t2 (=m_r) to be used as scratch
	MOV	m_i, #0
	MOV	m_m, #1
	MOV	m_ml, #0
m_l2	ADD	m_i, m_i, #1
	MOV	m_m, m_m, LSL #1
	TST	m_v, m_m
	CMPNE	m_i, #32
	BNE	m_l2
	CMP	m_i, #32
	BGE	m_l3
	MOV	m_li, m_i
m_l4	ADD	m_i, m_i, #1
	MOV	m_m, m_m, LSL #1
	TST	m_v, m_m
	BNE	m_l5
	CMP	m_i, #32
	BNE	m_l4
m_l5	SUB	t2, m_i, m_li
	CMP	t2, m_ml
	MOVGT	m_mi, m_li
	MOVGT	m_ml, t2
	CMP	m_i, #32
	BLT	m_l2
m_l3	LDMFD	sp!, {m_r}			;also note m_li now free so can resume use of t3 (=m_li)
	CMP	m_ml, #0
	ADDGT	m_i, m_mi, m_ml
	MOVGT	m_v, m_v, ROR m_i
	RSBGT	m_i, m_i, #32
	ADDGT	m_r, m_r, m_i
	TST	m_r, #1
	MOVNE	m_v, m_v, ROR #31
	ADDNE	m_r, m_r, #1

	AND	m_r, m_r, #31
	AND	m_i, m_v, #255
	LDR	t1, initial_cptr
	CMP	t1, #0
	ADDEQ	cptr, cptr, #4
	LDRNE	t3, op_mov_0
	ORRNE	t3, t3, work, LSL #12
	ORRNE	t3, t3, m_r, LSL #8-1
	ORRNE	t3, t3, m_i
	STRNE	t3, [cptr], #4			;mov work, #m_i ror m_r
m_l6
	MOVS	m_v, m_v, LSR #8
	BEQ	not_work_1
	SUB	m_r, m_r, #8
	AND	m_r, m_r, #31
	ANDS	m_i, m_v, #255
	BEQ	m_l6
	CMP	t1, #0
	ADDEQ	cptr, cptr, #4
	LDRNE	t3, op_orr_0
	ORRNE	t3, t3, work, LSL #12
	ORRNE	t3, t3, work, LSL #16
	ORRNE	t3, t3, m_r, LSL #8-1
	ORRNE	t3, t3, m_i
	STRNE	t3, [cptr], #4			;orr work, work, #m_i ror m_r
	B	m_l6
not_work_1
	LDR	t2, power_of_2
	STR	t2, npower_of_2
	MOV	const, const, LSR t2

	MOV	t1, #1
	MOV	ps, #0				;s% in Basic version
	MOV	pm, #0				;m% in Basic version
calc_repeat
	CMP	t1, const
	SUBGE	t1, t1, const
	ADDGE	ps, ps, #1
	CMP	t1, #0
	BEQ	repeat_calcd
	ADC	t1, t1, t1			;nb above CMP ensures C always set, so this is t1=2*t1+1
	MOV	ps, ps, LSL #1
	ADD	pm, pm, #1
	CMP	pm, #32
	BLE	calc_repeat
repeat_calcd
	MOV	fn, ps
	BL	powerof2
	SUB	t2, t2, fn
	MOV	ps, ps, LSR fn
	STR	t2, power_of_2
	CMP	ps, #1
	BEQ	s_applied
	STR	ps, as
	STR	pm, am
	MOV	fn, ps
	ADR	stk, astk
	ADR	stkl, astk_end
	LDR	t1, op_add_0_0			;calc intermediate instructions used by fastdivaid
	ORR	t4, num, num, LSL #16
	ORR	t4, t4, outq, LSL #12		;data processing args outq, num, num
	ORR	t1, t1, t4
	STR	t1, op_fd1			;add outq, num, num
	LDR	t1, op_add_0_0_lsr
	ORR	t4, t1, t4
	STR	t4, op_fd3			;add outq, num, num, lsr #32
	ORR	t4, num, outq, LSL #16
	ORR	t4, t4, outq, LSL #12		;                args outq, outq, num
	ORR	t1, t1, t4
	STR	t1, op_fd4			;add outq, outq, num, lsr #32
	LDR	t1, op_sub_0_0_lsr
	ORR	t1, t1, t4
	STR	t1, op_fd2			;sub outq, outq, num, lsr #32
	BL	fastdivaid
	LDR	ps, as
	LDR	pm, am
s_applied					;nb t2=power_of_2 may no longer be valid, but ps & pm are
	MOV	fn, ps
	BL	bitpatlen			;fn is now ls%
	ADD	t1, pm, #1
	LDR	t2, initial_cptr
	CMP	t2, #0
	BNE	do_extend
	CMP	t1, #32
	BGE	bits_extended
	CMP	ps, #1
	MOVEQ	ps, #0
pseudo_extend_bits_loop
	ADD	cptr, cptr, #4
	MOV	t1, t1, LSL #1
	CMP	t1, #32
	BLT	pseudo_extend_bits_loop
	B	bits_extended
do_extend
	CMP	t1, #32
	BGE	bits_extended
	LDR	t3, op_add_0_0_lsr
	ORR	t3, t3, outq, LSL #12
	CMP	ps, #1
	MOVEQ	ps, #0
	ORREQ	t2, num, num, LSL #16
	ORRNE	t2, outq, outq, LSL #16
	ORR	t2, t2, t1, LSL #7
	ORR	t2, t3, t2			;if EQ 'add outq, num, num, lsr #t1%'
	STR	t2, [cptr], #4			;else  'add outq, outq, outq, lsr #t1%'
	MOV	t1, t1, LSL #1
	CMP	t1, #32
	BGE	bits_extended
	ORR	t2, outq, outq, LSL #16
	ORR	t3, t3, t2
extend_bits_loop
	ORR	t2, t3, t1, LSL #7
	STR	t2, [cptr], #4			;add outq, outq, outq, lsr #t1%
	MOV	t1, t1, LSL #1
	CMP	t1, #32
	BLT	extend_bits_loop
bits_extended
	LDR	t1, initial_cptr
	CMP	ps, #1
	BNE	large_div_patch_done
	CMP	t1, #0
	ADDEQ	cptr, cptr, #4
	LDRNE	t2, op_mov_r0
	ORRNE	t2, t2, outq, LSL #12
	ORRNE	t2, t2, num
	STRNE	t2, [cptr], #4			;mov outq, num
large_div_patch_done
	LDR	t3, power_of_2
	ADD	t3, t3, pm
	SUB	t3, t3, fn
	ADDS	t3, t3, #2
	BLE	final_shift_done
	CMP	t1, #0
	ADDEQ	cptr, cptr, #4
	LDRNE	t2, op_mov_r0_lsr
	ORRNE	t2, t2, outq, LSL #12
	ORRNE	t2, t2, outq
	ORRNE	t2, t2, t3, LSL #7
	STRNE	t2, [cptr], #4			;mov outq, outq, lsr #power_of_2
final_shift_done
	MOV	fn, const
	ADR	stk, astk
	ADR	stkl, astk_end
	ORR	t1, outq, outq, LSL #16		;calc intermediate instructions used by fastmul
	ORR	t1, t1, outr, LSL #12
	ORR	t2, outr, outq, LSL #16
	ORR	t2, t2, outr, LSL #12
	LDR	t3, op_mov_r0
	ORR	t4, t3, t1
	STR	t4, op_fm1
	ORR	t4, t3, t2
	STR	t4, op_fm2
	LDR	t3, op_add_0_0
	ORR	t4, t3, t1
	STR	t4, op_fm3
	ORR	t4, t3, t2
	STR	t4, op_fm4
	LDR	t3, op_rsb_0_0
	ORR	t4, t3, t1
	STR	t4, op_fm5
	ORR	t4, t3, t2
	STR	t4, op_fm6
	BL	fastmul
	LDR	t4, initial_cptr
	LDR	t3, npower_of_2
	MOV	const, const, LSL t3
	CMP	t4, #0
	ADDEQ	cptr, cptr, #4
	LDRNE	t1, op_subs_0_0
	ORRNE	t1, t1, outr, LSL #12
	ORRNE	t1, t1, num, LSL #16
	ORRNE	t1, t1, outr
	ORRNE	t1, t1, t3, LSL #7
	STRNE	t1, [cptr], #4			;subs outr, num, outr, lsl #npower_of_2 (possibly 0)
	LDR	t1, subflag
	BNE	do_check
	CMP	t1, #0
	ADDEQ	cptr, cptr, #12
	ADDNE	cptr, cptr, #20
	B	now_restore_signs
do_check
	CMP	work, #-1
	BNE	use_work
	CMP	t1, #0
	LDRNE	t1, op_submi_0_n1
	ORRNE	t1, t1, outq, LSL #12
	ORRNE	t1, t1, outq, LSL #16
	STRNE	t1, [cptr], #4			;submi outq, outq, #1
	LDR	t1, op2
	ORRNE	t2, t1, #2_0100<<28		;cond mi
	ORRNE	t2, t2, #2_0100<<21		;opcode add
	STRNE	t2, [cptr], #4			;addmi outr, outr, #const
	ORR	t2, t1, #2_1110<<28		;cond al
	ORR	t2, t2, #2_10101<<20		;opcode cmps
	STR	t2, [cptr], #4			;cmp outr, #const
	LDR	t2, op_addge_0_n1
	ORR	t2, t2, outq, LSL #12
	ORR	t2, t2, outq, LSL #16
	STR	t2, [cptr], #4			;addge outq, outq, #1
	ORR	t2, t1, #2_1010<<28		;cond ge
	ORR	t2, t2, #2_0010<<21		;opcode sub
	STR	t2, [cptr], #4			;subge outr, outr, #const
	B	now_restore_signs
use_work
	CMP	t1, #0
	LDRNE	t1, op_submi_0_n1
	ORRNE	t1, t1, outq, LSL #12
	ORRNE	t1, t1, outq, LSL #16
	STRNE	t1, [cptr], #4			;submi outq, outq, #1
	LDRNE	t1, op_addmi_0_0
	ORRNE	t1, t1, outr, LSL #12
	ORRNE	t1, t1, outr, LSL #16
	ORRNE	t1, t1, work
	STRNE	t1, [cptr], #4			;addmi outr, outr, work
	LDR	t1, op_cmp_0_0
	ORR	t2, t1, outr, LSL #16
	ORR	t2, t2, work
	STR	t2, [cptr], #4			;cmp outr, work
	LDR	t2, op_addge_0_n1
	ORR	t2, t2, outq, LSL #12
	ORR	t2, t2, outq, LSL #16
	STR	t2, [cptr], #4			;addge outq, outq, #1
	LDR	t1, op_subge_0_0
	ORR	t1, t1, outr, LSL #12
	ORR	t1, t1, outr, LSL #16
	ORR	t1, t1, work
	STR	t1, [cptr], #4			;subge outr, outr, work
now_restore_signs
	LDR	t4, initial_cptr
	LDR	t3, nsignpres
	CMP	signpres, #-1
	BNE	signpresd
	CMP	t3, #-1
	BNE	all_done
	CMP	t4, #0
	ADDEQ	cptr, cptr, #4
	LDRNE	t1, op_rsb_0
	ORRNE	t1, t1, outq, LSL #12
	ORRNE	t1, t1, outq, LSL #16
	STRNE	t1, [cptr], #4			;rsb outq, outq, #0
	B	all_done
signpresd
	CMP	t4, #0
	ADDEQ	cptr, cptr, #16
	BEQ	all_done
	LDR	t1, op_teqs_sign
	ORR	t1, t1, signpres, LSL #16
	STR	t1, [cptr], #4			;teqs signpres, #&80000000
	LDR	t2, op_rsbeq_0
	ORR	t1, t2, num, LSL #12
	ORR	t1, t1, num, LSL #16
	STR	t1, [cptr], #4			;rsbeq num, num, #0
	ORR	t1, t2, outr, LSL #12
	ORR	t1, t1, outr, LSL #16
	STR	t1, [cptr], #4			;rsbeq outr, outr, #0
	ORR	t1, t2, outq, LSL #12
	ORR	t1, t1, outq, LSL #16
	CMP	t3, #-1
	ORREQ	t1, t1, #2_0001<<28		;cond ne
	STR	t1, [cptr], #4			;if ne 'rsbeq outq, outq, #0', else flip cond to rsbne
all_done
	LDR	t1, initial_cptr
	SUB	r0, cptr, t1
	LDMFD	sp!, {pc}^

initial_cptr	DCD	0
nsignpres	DCD	0
power_of_2	DCD	0
subflag		DCD	0
npower_of_2	DCD	0
as		DCD	0
am		DCD	0

op1	ANDEQ	r0, r0, #0,0			;used to build op2; note AND, EQ etc chosen as give 0 bits
op2	DCD	0				;will store data processing instruction of form
						;<cond><opcode> [outr],[outr],#[const]
						;NB outr is r4, [outr] means the register whose number is
						;stored in r4 when generator code executed - don't confuse
						;this with register r4 itself.
op_mov_0	MOV	r0, #0,0
op_mov_r0	MOV	r0, r0
op_rsb_0	RSB	r0, r0, #0,0
op_ands_sign	ANDS	r0, r0, #&80000000
op_rsbne_0	RSBNE	r0, r0, #0,0
op_sub_0_0	SUB	r0, r0, r0
op_orr_0	ORR	r0, r0, #0,0
op_add_0_0	ADD	r0, r0, r0
op_sub_0_0_lsr	SUB	r0, r0, r0, LSR #32	;nb LSR #32 represented in bit field by LSR #0
op_add_0_0_lsr	ADD	r0, r0, r0, LSR #32
op_mov_r0_lsr	MOV	r0, r0, LSR #32
op_rsb_0_0	RSB	r0, r0, r0
op_subs_0_0	SUBS	r0, r0, r0
op_submi_0_n1	SUBMI	r0, r0, #1
op_addge_0_n1	ADDGE	r0, r0, #1
op_addmi_0_0	ADDMI	r0, r0, r0
op_cmp_0_0	CMP	r0, r0
op_subge_0_0	SUBGE	r0, r0, r0
op_teqs_sign	TEQS	r0, #&80000000
op_rsbeq_0	RSBEQ	r0, r0, #0,0

op_fd1		DCD	0
op_fd2		DCD	0
op_fd3		DCD	0
op_fd4		DCD	0
op_fm1		DCD	0
op_fm2		DCD	0
op_fm3		DCD	0
op_fm4		DCD	0
op_fm5		DCD	0
op_fm6		DCD	0

astk	%	16*8				;16 entries of 2 words (an empty ascending stack)
astk_end

fastdivaid
	CMP	stk, stkl
	MOVGE	r0, #-5
	LDMGEFD	sp!, {pc}^
	MOV	t4, fn				;t4 holds local const%
	MOV	t1, lr
	BL	bitpatlen			;fn now holds Basic ls%
	SUB	t3, fn, #1
	STMEA	stk!, {t3, t1}			;stack ls%-1 above return address
	ANDS	t2, t4, #3
	CMPNE	t2, #2
	MOVEQ	r0, #-6
	LDMEQFD	sp!, {pc}^
	CMP	t2, #1
	SUBEQ	t4, t4, #1
	ADDNE	t4, t4, #1
	MOVNE	t1, #1
	STRNE	t1, subflag
	MOV	fn, t4
	BL	powerof2
	MOV	t4, t4, LSR fn			;local const = const >>> powerof2(const)
	CMP	t4, #1
	BNE	fda_constoverone
	LDR	t1, initial_cptr
	CMP	t1, #0
	BNE	fda_l1
	CMP	t2, #1				;EQ implies divinst$="ADD"
	ADDEQ	cptr, cptr, #4
	ADDNE	cptr, cptr, #8
	B	fda_exit
fda_l1	LDR	t3, [stk, #-4]			;get back ls%-1
	CMP	t2, #1
	LDRNE	t1, op_fd1
	STRNE	t1, [cptr], #4			;add outq, num, num
	LDRNE	t1, op_fd2
	LDREQ	t1, op_fd3
	ORR	t1, t1, t3, LSL #7
	STR	t1, [cptr], #4			;if NE 'sub outq, outq, num, lsr #ls%-1'
	B	fda_exit			;else  'add outq, num, num, lsr #ls%-1'
fda_constoverone
	CMP	t2, #1
	BEQ	fda_l2
						;const>1 & divinst$="SUB"
	MOV	fn, t4				;first recurse
	BL	fastdivaid
	LDR	t1, initial_cptr
	CMP	t1, #0
	ADDEQ	cptr, cptr, #4
	BEQ	fda_exit
	LDR	fn, [stk, #-4]
	LDR	t1, op_fd2
	ORR	t1, t1, fn, LSL #7
	STR	t1, [cptr], #4
	B	fda_exit
fda_l2						;const>1 & divinst$="ADD"
	MOV	fn, t4				;first recurse
	BL	fastdivaid
	LDR	t1, initial_cptr
	CMP	t1, #0
	ADDEQ	cptr, cptr, #4
	BEQ	fda_exit
	LDR	fn, [stk, #-4]
	LDR	t1, op_fd4
	ORR	t1, t1, fn, LSL #7
	STR	t1, [cptr], #4
fda_exit
	LDMEA	stk!, {fn, t2}			;discard ls%-1 & return
	MOVS	pc, t2

fastmul
	CMP	stk, stkl
	MOVGE	r0, #-5
	LDMGEFD	sp!, {pc}^
	STMEA	stk!, {lr}
	ANDS	t1, fn, #3			;fn holds local const
	CMPNE	t1, #2
	BNE	fm_try_one
	MOV	t4, fn
	BL	powerof2
	STMEA	stk!, {fn}			;return address & n% (fn)  stacked, local const in t4
	MOV	t4, t4, LSR fn
	CMP	t4, #1
	LDREQ	t2, op_fm1
	BEQ	fm_exit
	MOV	fn, t4
	BL	fastmul				;recurse
	LDR	fn, [stk, #-4]
	LDR	t2, op_fm2
	B	fm_exit
fm_try_one
	CMP	t1, #1
	BNE	fm_is_three
	SUB	fn, fn, #1
	MOV	t4, fn
	BL	powerof2
	STMEA	stk!, {fn}			;return address & n% (fn)  stacked, local const in t4
	MOV	t4, t4, LSR fn
	CMP	t4, #1
	LDREQ	t2, op_fm3
	BEQ	fm_exit
	MOV	fn, t4
	BL	fastmul				;recurse
	LDR	fn, [stk, #-4]
	LDR	t2, op_fm4
	B	fm_exit
fm_is_three
	ADD	fn, fn, #1
	MOV	t4, fn
	BL	powerof2
	STMEA	stk!, {fn}			;return address & n% (fn)  stacked, local const in t4
	MOV	t4, t4, LSR fn
	CMP	t4, #1
	LDREQ	t2, op_fm5
	BEQ	fm_exit
	MOV	fn, t4
	BL	fastmul				;recurse
	LDR	fn, [stk, #-4]
	LDR	t2, op_fm6
	B	fm_exit
fm_exit
	LDR	t1, initial_cptr
	CMP	t1, #0
	ADDEQ	cptr, cptr, #4
	ORRNE	t2, t2, fn, LSL #7
	STRNE	t2, [cptr], #4
	LDMEA	stk!, {fn, t2}			;discard n% & return
	MOVS	pc, t2


	GBLA	counter

bitpatlen
	MOVS	t2, fn
	MOV	fn, #0
counter	SETA	31
	WHILE	counter>0
	ADDNE	fn, fn, #1
	MOVNES	t2, t2, LSR #1
	MOVEQS	pc, lr
counter	SETA	counter-1
	WEND
	ADD	fn, fn, #1
	MOVS	pc, lr

imop2
	MOV	t1, #0
counter	SETA	16
	WHILE	counter>0
	BICS	t2, fn, #255
	BEQ	imop2_l1
	MOV	fn, fn, ROR #30
	ADD	t1, t1, #256
counter	SETA	counter-1
	WEND
	MOV	fn, #-1
	MOVS	pc, lr
imop2_l1
	ORR	fn, t1, fn
	MOVS	pc, lr

powerof2
	MOVS	t1, fn
	MOV	fn, #0
	MOVEQS	pc, lr
counter	SETA	31
	WHILE   counter>0
	MOVS	t1, t1, LSR #1
	ADDCC	fn, fn, #1
	MOVCSS	pc, lr
counter	SETA	counter-1
	WEND
	MOVS	pc, lr



	END
�macros1�!�8e��!F���EO2y; rbbc
; Reverse Bit Binary Counter.
; A macro to increment a register according to a reverse bit binary count.
; It takes four parameters, each of which should be a register name.
;
; $r:   holds value to be rbbc incremented. Will be modified
; $k:   k is st k-1=bit # (1 to 31) of msb in register (lsb in rbbc) (thence old w=3*(32-k)).
; $e:   scratch register used to hold an address in the code
;
        MACRO
$label  rbbc    $r, $k, $e

        ASSERT  $r <> $k
        ASSERT  $r <> $e
        ASSERT  $k <> $e

        LCLA    counter
counter SETA    31

$label	RSB	$k, $k, #32
	RSB	$k, $k, $k, ASL #2
	ADD     $e, pc, $k, ASL #2      ;this relys on there being exactly one instruction between here & TST
        MOV     pc, $e

        WHILE   counter > 1
        TST     $r, #1<<counter
        EOR     $r, $r, #1<<counter
        BEQ     %ft0
counter SETA    counter-1
        WEND

        TST     $r, #1<<1
        EOR     $r, $r, #1<<1
        EORNE   $r, $r, #1<<0           ;nb an rbbc carry will automatically cause a wrap around back to zero

0

        MEND



; div16
; assumes abs number < 65536 * abs divisor.
; calculates integer part of 65536*number/divisor, as a signed 32 bit number.
; used in matrix inversion routine where it is necessary to divide two fixed point numbers (16 bit fraction).
; if range check on above assumption is required, the caller must perform it.
; It takes 5 parameters - all register names.
;
; $number:      number
; $divisor:     divisor - sign of divisor may be corrupted
; $num:         scratch & result - may be the same as $number
; $sign:        scratch
; $rem:         scratch
;
        MACRO
$label  div16   $number, $divisor, $num, $sign, $rem

        ASSERT  $num <> $divisor
        ASSERT  $num <> $sign
        ASSERT  $num <> $rem
        ASSERT  $number <> $divisor
        ASSERT  $number <> $sign
        ASSERT  $number <> $rem
        ASSERT  $divisor <> $sign
        ASSERT  $divisor <> $rem
        ASSERT  $sign <> $rem

        LCLA    counter
counter SETA    32

$label  MOVS    $rem, $divisor, LSL #1
        RSBCS   $divisor, $divisor, #0
        ADC     $sign, $sign, $sign             ;1st 3 instructions allow setting of low bit sign as either 0
                                                ;or 1 according to sign of divisor, in only 1 instruction.
        TEQ     $number, #0
        RSBMI   $num, $number, #0
        [       $num <> $number
        MOVPL   $num, $number                   ;only assemble this case if regs different, as is otherwise a nop.
        ]
        EORMI   $sign, $sign, #1

        MOV     $rem, $num, LSR #16
        MOV     $num, $num, LSL #16

        WHILE   counter > 0                     ;unwound loop uses about 600 bytes extra memory
        MOVS    $num, $num, ASL #1              ;speed increase (ARM3) from about 1.27e-5 to .75e-5 seconds
        ADC     $rem, $rem, $rem
        CMP     $rem, $divisor
        SUBHS   $rem, $rem, $divisor
        ORRHS   $num, $num, #1
counter SETA    counter-1
        WEND

        CMP     $rem, $divisor, ASR #1
        ADDGE   $num, $num, #1
        TST     $sign, #1
        RSBNE   $num, $num, #0

        MEND



; mul16
; multiplication of an integer x by a 16-bit fixed point number a, with no restrictions on x or a
; other than that x*a/65536 must fit into a signed 32-bit representation.
; calculates r=x*a/65536
; It takes 6 parameters - all register names.
;
; $x:   x
; $a:   a - a will be corrupted
; $r:   result - may be the same as $x
; $u:   scratch
; $v:   scratch
; $w:   scratch
;
        MACRO
$label  mul16   $x, $a, $r, $u, $v, $w

        ASSERT  $r <> $a
        ASSERT  $r <> $u
        ASSERT  $r <> $v
        ASSERT  $r <> $w
        ASSERT  $x <> $a
        ASSERT  $x <> $u
        ASSERT  $x <> $v
        ASSERT  $x <> $w
        ASSERT  $a <> $u
        ASSERT  $a <> $v
        ASSERT  $a <> $w
        ASSERT  $u <> $v
        ASSERT  $u <> $w
        ASSERT  $v <> $w

$label  MOVS    $w, $a, LSL #1
        RSBCS   $a, $a, #0
        TEQ     $x, #0
        RSBMI   $r, $x, #0
        [       $r <> $x
        MOVPL   $r, $x
        ]                       ;now have C bit set iff a<0, N bit set iff x<0
        MOV     $w, pc, LSR #31
        MOV     $w, $w, LSL #28 ;get w=(2^28)*N {N is b31, V is b28, C is b29 in pc/psr}
        TEQP    $w, pc, LSR #1  ;EOR w into pc/psr {ie N EOR C is put into V}  - this is a way of storing
                                ;sign of result in overflow flag, saving on a register
        MOV     $w, $r, LSR #16
        BIC     $r, $r, $w, LSL #16
        MOV     $v, $a, LSR #16
        BIC     $a, $a, $v, LSL #16
        MUL     $u, $a, $r
        TST     $u, #1<<15      ;notice this is the only operation altering psr & that it will not corrupt V
                                ;note it will corrupt C, as immediate operand 32768 requires a shift
        MOV     $u, $u, LSR #16
        ADDNE   $u, $u, #1
        MLA     $u, $r, $v, $u	;6/9/94 - reverse v & r to optimise for argument a small
        MLA     $u, $a, $w, $u
        MUL     $r, $w, $v	;6/9/94 - reverse v & w to optimise for argument a small
        ADD     $r, $u, $r, LSL #16
        RSBVS   $r, $r, #0

        MEND



; mul16c
; multiplication of an integer x by a 16-bit fixed point number a, where a is a contraction
; ie calculates r=x*a/65536, assuming: abs a < 65536
; if the possibility exists that a>=65536, caller should check this & either not call routine, or set a=65535
; It takes 4 parameters - all register names.
;
; $x:   x
; $a:   a - require abs a <65536, a will be corrupted
; $r:   result - may be the same as $x
; $w:   scratch
;
        MACRO
$label  mul16c  $x, $a, $r, $w

        ASSERT  $r <> $a
        ASSERT  $r <> $w
        ASSERT  $x <> $a
        ASSERT  $x <> $w
        ASSERT  $a <> $w

$label  MOVS    $w, $a, LSL #1
        RSBCS   $a, $a, #0
        TEQ     $x, #0
        RSBMI   $r, $x, #0
        [       $r <> $x
        MOVPL   $r, $x
        ]
        MOV     $w, pc, LSR #31 ;see mul16 above, for comments re this part
        MOV     $w, $w, LSL #28
        TEQP    $w, pc, LSR #1

        TST     $a, #1<<16      ;bodge to allow code to function if $a is upto 2*65536-1
        MOVNE   $r, $r, LSL #1  ;can occur in a contractive fn due to change of coordinates to handle 1x2 pixel aspect ratio
        MOVNE   $a, $a, LSR #1  ;change made 3/4/94 - estimate overhead to ria of upto 3%

        MOV     $w, $r, LSR #16
        BIC     $r, $r, $w, LSL #16
        MUL     $r, $a, $r
        TST     $r, #1<<15      ;remember, can't use movs r,r,lsr #16, as this would corrupt V, which is storing sign of result
        MOV     $r, $r, LSR #16
        ADDNE   $r, $r, #1
        MLA     $r, $a, $w, $r

        RSBVS   $r, $r, #0

        MEND



; sqrt16
; integer square root returning 16-bit fixed point number, assuming x is 16-bit fixed point
; ie returns sqrt(x<<16)
; It takes 6 parameters - all register names
;
; $x:   x
; $r:   result - may be the same as x
; $n:   copy of x used during calculation
; $t:   transient scratch
; $d:   remainder
; $o:   constant value of 1
;
        MACRO
$label  sqrt16  $x, $r, $n, $t, $d, $o

        ASSERT  $x <> $n
        ASSERT  $x <> $t
        ASSERT  $x <> $d
        ASSERT  $x <> $o
        ASSERT  $n <> $t
        ASSERT  $n <> $d
        ASSERT  $n <> $o
        ASSERT  $t <> $d
        ASSERT  $t <> $o
        ASSERT  $d <> $o

        LCLA    counter

$label  MOV     $n, $x
        MOV     $o, #1
        MOV     $x, #0
        MOV     $d, #0

        AND     $t, $n, #(3<<30)
        MOV     $t, $t, LSR #30
        ORR     $d, $d, $t
        ADD     $t, $o, $x, LSL #1
        CMP     $d, $t
        SUBGE   $d, $d, $t
        ADDGE   $x, $x, #1

counter SETA    28
        WHILE   counter < 32             ;want >= 0, however counter is unsigned, so after 0 it goes high, thus < 32 will catch it!
        MOV     $x, $x, LSL #1
        MOV     $d, $d, LSL #2
        AND     $t, $n, #(3<<counter)
        [       counter <> 0
        MOV     $t, $t, LSR #counter
        ]
        ORR     $d, $d, $t
        ADD     $t, $o, $x, LSL #1
        CMP     $d, $t
        SUBGE   $d, $d, $t
        ADDGE   $x, $x, #1
counter SETA    counter-2
        WEND

counter SETA    14
        WHILE   counter < 32
        MOV     $x, $x, LSL #1
        MOV     $d, $d, LSL #2
        ADD     $t, $o, $x, LSL #1
        CMP     $d, $t
        SUBGE   $d, $d, $t
        ADDGE   $x, $x, #1
counter SETA    counter-2
        WEND

        [       $r <> $x
        MOV     $r, $x
        ]

        MEND



        END
�main_asse�m 3�=E�F����Oe�
        GET     h.RegNames
        GET     h.SWInames

        AREA    |C$$code|, CODE, READONLY

        GET     s.macros1
        GET     s.subrouts1
	GET	s.generatorc
	GET	s.sound



        END
�sound�� �[\��F���/���
XSound_Configure	*	&60140

;
; C prototype:
; char *voice_base
; points to new voice generator
;
; char *wave_base
; points to sample to be played
; nb this must be allocated and filled by C code
;
; char *wave_end
; points one byte beyond sample end
; nb this must be set by C code
;

	EXPORT	voice_base
	EXPORT	wave_base
	EXPORT	wave_end

voice_base
	DCD	voicebase
wave_base
	DCD	0
wave_end
	DCD	0

voicebase
	B	fill
	B	fill
	B	gateon
	B	gateoff
	B	instance
	LDMFD	sp!, {pc}
	LDMFD	sp!, {pc}
	DCD	voicename-voicebase
voicename
	DCB	"VoiceOfChaos", 0
	ALIGN

logampptr
	DCD	0

instance
	STMFD	sp!, {r0-r4}
	MOV	r0, #0
	MOV	r1, #0
	MOV	r2, #0
	MOV	r3, #0
	MOV	r4, #0
	SWI	XSound_Configure
	LDRVC	r0, [r3, #12]
	STRVC	r0, logampptr
	STRVS	r0, [sp]
	LDMFD	sp!, {r0-r4, pc}

gateon
	LDR	r0, wave_base
	STR	r0, [r9, #16]		;work reg 5  -  waveptr
	STR	r0, [r9, #24]		;work reg 7  -  wavebase
	LDR	r0, logampptr
	STR	r0, [r9, #20]		;work reg 6  -  log amp table ptr
	LDR	r0, wave_end
	STR	r0, [r9, #28]		;work reg 8  -  waveend

fill
	LDMIA	r9, {r1-r8}
	AND	r1, r1, #&7f
	LDRB	r1, [r6, r1, LSL #1]
	MOV	r1, r1, LSR #1
	RSB	r1, r1, #127
fillloop
	LDRB	r0, [r5], #1
	CMP	r5, r8
	MOVHS	r5, r7
	SUBS	r0, r0, r1, LSL #1
	MOVMI	r0, #0
	STRB	r0, [r12], r11
	LDRB	r0, [r5], #1
	CMP	r5, r8
	MOVHS	r5, r7
	SUBS	r0, r0, r1, LSL #1
	MOVMI	r0, #0
	STRB	r0, [r12], r11
	CMP	r12, r10
	BLT	fillloop

	SUBS	r4, r4, #1
	STMIB	r9, {r2-r5}
	MOVPL	r0, #2_00001000
	MOVMI	r0, #2_00000010
	LDMFD	sp!, {pc}

gateoff
	MOV	r0, #0
flushloop
	STRB	r0, [r12], r11
	STRB	r0, [r12], r11
	CMP	r12, r10
	BLT	flushloop
	MOV	r0, #2_00000001
	LDMFD	sp!, {pc}



; pitch16
; a leaf APCS function
;
; C prototype:
; int pitch16(int a)
;
; returns 16 bit phase accumulator increment (pai) for given pitch a, where a has standard format:
; bits 14-12 giving the octave number
; bits 11-0 giving the fraction of an octave in 1/4096'ths of an octave
; and where a value of 0x4000 corresponds to middle C
;
; note this is on the basis that A above middle C has frequency 440Hz, and we adopt equal temperament
; tuning of the chromatic scale putting middle C 9/12'ths of an octave below 440Hz, ie at 440/(2^0.75)
;
; notes on actual calculation:
;
; set f = frequency of note of pitch a
; set s = sample period (=1/sample frequency)
; then returned pai = 65536*f*s
; assume s = default value of 48e-6 seconds, giving pai = (65536*48e-6)*f
;
; further note given above format of a and frequency of middle C, we also have
; f = (220*2^0.25) * 2^(a/4096 - 4)
; thus pai = 65536*(48e-6)*220*(2^0.25)/16 * 2^(a/4096)
; ie setting q = 4096*(48e-6)*220*(2^0.25) = 51.43767914 (approx)
; pai = q*2^(a/4096)
;
; to evaluate this we split a into octave number i and fraction m, ie a=4096i+m
; thence pai = q*2^(i+m/4096) = ( 2^(m/4096) * q ) << i
; calc of 2^(m/4096) is done by polynomial approximation utilising minimal accuracy needed to give pai
; accurate to nearest integer (more or less!), with mul by constant q coded directly using shifted ADDs,SUBs
; etc
;
; when using pitch16, always remember it assumes the default value for s=48e-6 seconds
; pitch16 is about 10 times faster than Sound_Pitch
;

        EXPORT  pitch16

phnsta  DCB     "pitch16", 0
        ALIGN
phnend  DCD     &ff000000 + phnend - phnsta

pitch16

	CMP	a1, #&8000
	MOVHSS	pc, lr
	MOV	a4, a1, ASR #12
	BIC	a1, a1, a4, LSL #12
	MOV	a1, a1, LSL #5
	SUB	a1, a1, #&10000
	ADD	a3, a1, a1, LSL #2
	ADD	a2, a3, a1, LSL #3
	ADD	a2, a2, a1, LSL #7
	ADD	a2, a2, a3, LSL #11
	MOV	a2, a2, ASR #16
	ADD	a2, a2, #&010000
	ADD	a2, a2, #&005F00
	ADD	a2, a2, #&000062
        MOV	ip, a1
	mul16c	a2, ip, a2, a3
	ADD	a2, a2, #&070000
	ADD	a2, a2, #&00D700
	ADD	a2, a2, #&000073
        MOV	ip, a1
	mul16c	a2, ip, a2, a3
	ADD	a2, a2, #&160000
	ADD	a2, a2, #&00A000
	ADD	a2, a2, #&00002E
	RSB	a1, a2, a2, LSL #3
	RSB	a3, a2, a2, LSL #2
	ADD	a1, a1, a3, LSL #4
	ADD	a1, a1, a3, LSL #8
	RSB	a4, a4, #24
	MOVS	a1, a1, LSR a4
	ADC	a1, a1, #0
        MOVS    pc, lr



	END
�subrouts1�K� wa҄�KF���4;"�
max16	*	&7fffffff	;max positive number in 16 bit fixed point format (2^31-1)/65536
min16	*	&80000000	;min negative number				  -2^31   /65536
one	*	65536



; rbbcinc
; a leaf APCS function
;
; C prototype:
; int rbbcinc(int r, int k)
;
; given limits 0 <= r < 2^k, return (r � 1) where � denotes a reversed bit ordering increment,
; subject to the stated limits.
; NB in this case, for the function f: n -> {for (k=c=0; c<n; c++, k=rbbcinc(k, l); return k;},
; we have f(f(n))=n.
; NB2 algo requires 2 <= k <= 32, but doesn't check for this - BEWARE!
; (for k=1 get no action taken, while for any other bad k get code executed at unintended address,
;  hence unpredictable & likely system fatal).
;

        EXPORT  rbbcinc

rbnsta  DCB     "rbbcinc", 0
        ALIGN
rbnend  DCD     &ff000000 + rbnend - rbnsta

rbbcinc

        rbbc    a1, a2, a3
        MOVS    pc, lr



; pow16
; a leaf APCS function
;
; C prototype:
; int pow16(int a, int b)
;
; returns 65536 * (a/65536)^(b/65536)
;
; is about 5 to 40 times faster than FPEmulator working with double floats
;
; nb if a<0 require b an integer
;
; nb2 unexpected return values:
; a=b=0				returns 1	actual value ill defined
; a<0, b non integer		returns 0	actual value complex
; abs(bln(a)) > max16		unknown errors likely (to avoid, restrict b to �(2^11)one, roughly)
; a=0, b<0			returns max16	actual value +infinity
; a & b st result out of range	unknown result
;
; nb precise nature of errors for other values not yet confirmed acceptable, though should be okay except
; perhaps in extreme cases (as of 22/11/95)
;
; Few subsequent notes on error:
;
; For result much bigger than one:
; since exp16 only yields 16 significant bits, pow16 gives no more than this, hence for result much bigger
; than one get increasing error, eg for a around 64one & b=1.03125one get errors st answer (around 73one)
; is only correct to top 15 or 16 bits (ie error upto around one/1024 to one/256)
;
; For 0<=a<=one, & b eg 2one, 3one, 13.125one etc get error typically no more than in low 1 or 2 bits
;
; For a large (say a>one) & b<0 get error typically in only lowest bit or no error
;
;   ****  Strongly recommend this fn is only used where accuracy not crucial or with limited range ****
;   ****  of arguments where you can confirm yourself accuracy in that range is adequate.          ****
;

        EXPORT  pow16

pwnsta  DCB     "pow16", 0
        ALIGN
pwnend  DCD     &ff000000 + pwnend - pwnsta

pow16

	CMP	a2, #0
	MOVEQ	a1, #&10000		;if b=0 return one directly
	MOVEQS	pc, lr
	CMP	a2, #&10000
	MOVEQS	pc, lr			;handle trival case b=one directly, by returning a
	CMP	a1, #0
	MOVGT	ip, #0
	BGT	pow16_apos
	BNE	pow16_aneg
	CMP	a2, #0
	MOV	a1, #0			;if a=0 and b>0 return 0
	MOVLT	a1, #max16+1		;if a=0 and b<0 return max16
	SUBLT	a1, a1, #1
	MOVS	pc, lr
pow16_aneg
	MOVS	ip, a2, LSL #16
	MOVNE	a1, #0			;if a<0 and b not an integer return 0
	MOVNES	pc, lr
	AND	ip, a2, #&10000		;if a<0 then go on to evaluate (65536 * (-a/65536)^(b/65536))
	RSB	a1, a1, #0		;with sign subsequently forced to + or - according to whether b/one
pow16_apos				;is even or odd ( eg (-2.5)^3 is just (-1)^3 * 2.5^3 )
	STMFD	sp!, {v1, v2, lr}
	MOV	v1, ip			;now evaluate (65536 * (a/65536)^(b/65536)), for a>0
	MOV	v2, a2			;via exp16( ln16(a) * b / 65536 )
	BL	ln16			;nb this uses property that exp(b.log(a)) = exp(log(a^b)) = a^b
        mul16	a1, v2, a1, a2, a3, a4
	BL	exp16
	CMP	v1, #0
	RSBNE	a1, a1, #0		;finally switch sign on answer if originally a<0 and b/one was odd
	LDMFD	sp!, {v1, v2, pc}^



; ln16
; a leaf APCS function
;
; C prototype:
; int ln16(int a)
;
; returns 65536 * ln (a/65536)
;
; is about 30 times faster than FPEmulator working with double floats
;

        EXPORT  ln16

lnnsta  DCB     "ln16", 0
        ALIGN
lnnend  DCD     &ff000000 + lnnend - lnnsta

ln16

	CMP	a1, #0			;if a<=0 return min16
	MOVLE	a1, #min16
	MOVLES	pc, lr			;else most significant bit is between b30 & b0
	GBLA	counter
counter	SETA	30			;find msb & store (msb_index - 15) in a4
	WHILE	counter > 1
	TST	a1, #1<<counter
	MOVNE	a4, #counter-15
	BNE	ln16_gotmsb
counter	SETA	counter-1
	WEND
	TST	a1, #1<<1
	MOVNE	a4, #1-15
	MOVEQ	a4, #0-15
ln16_gotmsb				;if we set z = a1/(2^a4), will have ln(a/one) = ln(z/one * 2^a4)
	CMP	a4, #2			;					      = ln(z/one) + a4*ln2
	SUBGT	a2, a4, #2		;with z in range [0.5,1)
	MOVGT	a1, a1, LSR a2		;so calc a1 = 4*( a1/(2^a4) ) - 3*one
	RSBLE	a2, a4, #2		;which puts a1 in range �one suitable for approximation by poly
	MOVLE	a1, a1, LSL a2		;leaving us to calculate a4*one*ln2 + one*ln((a1+3one)/4one)
	SUB	a1, a1, #&30000
	ADD	a2, a1, a1, LSL #2	;start polynomial approximation calculation on a1
	RSB	a2, a2, a1, LSL #10
	MOV	a2, a2, ASR #16		;for details of how this works see comments against similar code
	SUB	a2, a2, #&000e00	;in exp16 function, directly below this function
	SUB	a2, a2, #&000034
        MOV	ip, a1
	mul16c	a2, ip, a2, a3
	ADD	a2, a2, #&003200
	ADD	a2, a2, #&000031
        MOV	ip, a1
	mul16c	a2, ip, a2, a3
	SUB	a2, a2, #&00e200
	SUB	a2, a2, #&0000f2
        MOV	ip, a1
	mul16c	a2, ip, a2, a3
	ADD	a2, a2, #&050000
	ADD	a2, a2, #&005500
	ADD	a2, a2, #&000065
        MOV	ip, a1
	mul16c	a2, ip, a2, a3
	SUB	a2, a2, #&040000
	SUB	a2, a2, #&009a00	;end of polynomial approximation calculation
	SUB	a1, a2, #&000059	;a1 now holds (2^20)*(approximated value)
	ADD	ip, a4, a4, LSL #1
	ADD	a2, ip, a4, LSL #3	;now add in the a4*one*ln2 term using an explicit binary expansion
	ADD	a2, a4, a2, LSL #4	;of approximately one*ln2
	RSB	a3, a4, a4, LSL #3
	ADD	a2, a3, a2, LSL #4	;nb we actually add approx (2^20)*ln2, & then divide by 16
	ADD	a2, a4, a2, LSL #3	;to reduce truncation error
	ADD	a1, a1, a2, LSL #5
	ADD	a1, a1, ip, ASR #1
	MOV	a1, a1, ASR #4
        MOVS    pc, lr



; exp16
; a leaf APCS function
;
; C prototype:
; int exp16(int a)
;
; returns 65536 * exp (a/65536)
;
; is about 45 times faster than FPEmulator working with double floats
;

        EXPORT  exp16

epnsta  DCB     "exp16", 0
        ALIGN
epnend  DCD     &ff000000 + epnend - epnsta

exp16					;this fn returns a value with only about 17 significant binary
					;digits - eg for 'a' small or negative, get near maximal accuracy
					;but for 'a' large (upto around 10one) where exp has value
	CMP	a1, #12*65536		;~20000one can get error upto roughly 0.1one
	MOVGT	a1, #max16+1
	SUBGT	a1, a1, #1
	MOVGTS	pc, lr
	CMP	a1, #-12*65536
	MOVLT	a1, #0
	MOVLTS	pc, lr			;otherwise know |a| <= 12one
	RSB	a2, a1, a1, LSL #3	;now set a = a/ln2 using explicit mul by 2_1.01110001010101000111
	ADD	a3, a1, a1, LSL #2	;nb only need 1st 20 digits given range on a
	ADD	a3, a3, a3, LSL #4	;nb2 this calc is approximate only, though will usually yield an
	ADD	a1, a2, a1, LSL #4	;answer correct to the stored 16 binary places (else error one/65536)
	ADD	a1, a1, a3, ASR #10
	ADD	a1, a1, a2, ASR #16	;thus exp(original a)  = exp(new a * ln2) = 2^(new a), eval'd below:
	ADD	a1, a1, #8
	MOV	a1, a1, ASR #4		;calc a = a/ln2 complete
	MOV	a4, a1, ASR #16		;a4 now holds integer component of a
	BIC	a1, a1, a4, LSL #16	;a1 now holds fractional component in range [0,1)*one
	CMP	a4, #15			;do another check on a to ensure exp(a) is in range
	MOVGE	a1, #max16+1		;& if not return maximal or minimal value as appropriate
	SUBGE	a1, a1, #1
	MOVGE	pc, lr
	CMP	a4, #-16
	MOVLT	a1, #0
	MOVLTS	pc, lr			;else need to return value (one * 2^(a4 + a1/one))
	MOV	a1, a1, LSL #1		;			 = (one * 2^(a1/one) * 2^a4)
	SUB	a1, a1, #&10000		;convert a1 to lie in [-1,-1), then apply poly approximation:
	RSB	a2, a1, a1, LSL #3
	ADD	a2, a1, a2, LSL #6
	MOV	a2, a2, ASR #15		;a2 = 0.0008561*(2^20)*(a1/one)
	ADD	a2, a2, #&002800
	ADD	a2, a2, #&00007e	;a2 = 0.0008561*(2^20)*(a1/one) + 0.0098857*(2^20)
        MOV	ip, a1
	mul16c	a2, ip, a2, a3		;a2 = 0.0008561*(2^20)*(a1/one)^2 + 0.0098857*(2^20)*(a1/one)
	ADD	a2, a2, #&015000
	ADD	a2, a2, #&000be0	; etc
        MOV	ip, a1
	mul16c	a2, ip, a2, a3
	ADD	a2, a2, #&070000
	ADD	a2, a2, #&00d700
	ADD	a2, a2, #&00007e
        MOV	ip, a1
	mul16c	a2, ip, a2, a3		;until we have
	ADD	a2, a2, #&160000	;a2 = (2^20) ( 0.0008561(a1/one)^4 + 0.0098857(a1/one)^3 +
	ADD	a2, a2, #&00a000	;	       0.0849301(a1/one)^2 + 0.4901106(a1/one) +
	ADD	a2, a2, #&0000a7	;	       1.14142138(a1/one)                           )
	MOV	a1, a2, ASR #4		;now divide by 16 removing most truncation error from above calcs,
	CMP	a4, #0			;leaving a2 = (2^16)*(approximated value)
	RSBLT	a4, a4, #0
	MOVLT	a1, a1, ASR a4		;finally carry out the (a2 = a2 * 2^a4) step
	MOVLTS	pc, lr
	MOVS	a1, a1, LSL a4
	MOVMI	a1, #max16+1
	SUBMI	a1, a1, #1
        MOVS    pc, lr



; cos16
; a leaf APCS function
;
; C prototype:
; int cos16(int a)
;
; returns 65536 * cos ((a/65536)(pi/2))
;
; is about 44 times faster than FPEmulator working with double floats
;

        EXPORT  cos16

csnsta  DCB     "cos16", 0
        ALIGN
csnend  DCD     &ff000000 + csnend - csnsta

cos16

	EOR	a4, a1, a1, LSL #1	;since cos is periodic and cos((a/65536)(pi/2)) has period 4*one
	TST	a4, #&20000		;eval is simpler than for ln or exp:
	MOV	a4, #0			;we need only to truncate a to [0,4one) and then approx the function
	MOVNE	a4, #1			;via a poly
	TST	a1, #&10000
	MOV	a1, a1, LSL #16		;in fact further symmetries in cos over this range allow us to
	MOV	a1, a1, LSR #16		;actually only approximate function over range [0,one)
	RSBEQ	a1, a1, #&10000		;and reconstruct it over remainder of range [one,4one) from that part
	MOV	a1, a1, LSL #1		;eg  cos( (a/65536)(pi/2) ) for a in [2one, 3one)
	SUB	a1, a1, #&10000		; = -cos( ((a-2one)/65536)(pi/2) )
	RSB	a2, a1, a1, LSL #3
	ADD	a2, a1, a2, LSL #8
	MOV	a2, a2, ASR #16
	ADD	a2, a2, #&002c00
	ADD	a2, a2, #&000086
        MOV	ip, a1
	mul16c	a2, ip, a2, a3
	SUB	a2, a2, #&00e900
	SUB	a2, a2, #&0000bd
        MOV	ip, a1
	mul16c	a2, ip, a2, a3
	SUB	a2, a2, #&030000
	SUB	a2, a2, #&007c00
	SUB	a2, a2, #&0000c6
        MOV	ip, a1
	mul16c	a2, ip, a2, a3
	ADD	a2, a2, #&080000
	ADD	a2, a2, #&00E200
	ADD	a2, a2, #&0000BD
        MOV	ip, a1
	mul16c	a2, ip, a2, a3
	ADD	a2, a2, #&0b0000
	ADD	a2, a2, #&005000
	ADD	a2, a2, #&000050
	MOV	a1, a2, ASR #4
	TST	a4, #1
	RSBNE	a1, a1, #0
        MOVS    pc, lr



; sin16
; a leaf APCS function
;
; C prototype:
; int sin16(int a)
;
; returns 65536 * sin ((a/65536)(pi/2))
;
; is about 44 times faster than FPEmulator working with double floats
;

        EXPORT  sin16

snnsta  DCB     "sin16", 0
        ALIGN
snnend  DCD     &ff000000 + snnend - snnsta

sin16

	TST	a1, #&20000		;eval of sin is almost identical to that of cos
	MOV	a4, #0
	MOVNE	a4, #1
	TST	a1, #&10000
	MOV	a1, a1, LSL #16
	MOV	a1, a1, LSR #16
	RSBNE	a1, a1, #&10000
	MOV	a1, a1, LSL #1
	SUB	a1, a1, #&10000
	RSB	a2, a1, a1, LSL #3
	ADD	a2, a1, a2, LSL #8
	MOV	a2, a2, ASR #16
	ADD	a2, a2, #&002c00
	ADD	a2, a2, #&000086
        MOV	ip, a1
	mul16c	a2, ip, a2, a3
	SUB	a2, a2, #&00e900
	SUB	a2, a2, #&0000bd
        MOV	ip, a1
	mul16c	a2, ip, a2, a3
	SUB	a2, a2, #&030000
	SUB	a2, a2, #&007c00
	SUB	a2, a2, #&0000c6
        MOV	ip, a1
	mul16c	a2, ip, a2, a3
	ADD	a2, a2, #&080000
	ADD	a2, a2, #&00E200
	ADD	a2, a2, #&0000BD
        MOV	ip, a1
	mul16c	a2, ip, a2, a3
	ADD	a2, a2, #&0b0000
	ADD	a2, a2, #&005000
	ADD	a2, a2, #&000050
	MOV	a1, a2, ASR #4
	TST	a4, #1
	RSBNE	a1, a1, #0
        MOVS    pc, lr



; acs16
; a leaf APCS function
;
; C prototype:
; int acs16(int a)
;
; returns 65536 * 2/pi * arccos (a/65536)
;
; for a out of range (ie abs a > 65536), reset a to �65536 as appropriate before eval
;
; is about 24 times faster than FPEmulator working with double floats
;

        EXPORT  acs16

acnsta  DCB     "acs16", 0
        ALIGN
acnend  DCD     &ff000000 + acnend - acnsta

acs16

	CMP	a1, #65536
	MOVGE	a1, #0
	MOVGES	pc, lr
	CMP	a1, #-65536
	MOVLE	a1, #2*65536
	MOVLES	pc, lr
	STMFD	sp!, {lr}		;now have arg in range (-one,one)
	CMP	a1, #0
	RSBMI	a1, a1, #0
	MOVMI	a4, #1			;b0 in a4 set iff final result r needs replacing by 2*one-r
	MOVPL	a4, #0			;now have arg in range [0,one)
	SUB	a2, a1, #&b500
	SUBS	a2, a2, #&0005
	BLT	acs16_arglow		;if arg < one/sqrt2 go and apply poly else first transmute into here
	ORR	a4, a4, #2		;b1 in a4 clear iff penultimate result r need be replaced by one-r
	MUL	a2, a1, a1
	MOV	a1, a2, LSR #16
	RSB	a1, a1, #65536
	sqrt16	a1, a1, a2, a3, ip, lr	;arg transmuted (ie replaced by one-sqrt(arg^2))
acs16_arglow
	ADD	a3, a1, a1, ASL #2
	ADD	a2, a3, a1, ASL #4
	ADD	a2, a2, a3, ASL #5
	ADD	a2, a2, a3, ASR	#8
	ADD	a2, a2, #32
	MOV	a1, a2, ASR #6		;range transform applied (ie replaced by arg*2sqrt2-one)
	SUB	a1, a1, #&10000		;so arg lies in range [-1,1]
	ADD	a2, a1, a1, LSL #2	;now apply poly
	ADD	a2, a2, a2, LSL #5
	MOV	a2, a2, ASR #14
	ADD	a2, a2, #&000500
	ADD	a2, a2, #&0000ae
        MOV	ip, a1
	mul16c	a2, ip, a2, a3
	ADD	a2, a2, #&000800
	ADD	a2, a2, #&000088
        MOV	ip, a1
	mul16c	a2, ip, a2, a3
	ADD	a2, a2, #&002000
	ADD	a2, a2, #&00009a
        MOV	ip, a1
	mul16c	a2, ip, a2, a3
	ADD	a2, a2, #&004600
	ADD	a2, a2, #&00009a
        MOV	ip, a1
	mul16c	a2, ip, a2, a3
	ADD	a2, a2, #&030000
	ADD	a2, a2, #&00d900
	ADD	a2, a2, #&0000b4
        MOV	ip, a1
	mul16c	a2, ip, a2, a3
	ADD	a2, a2, #&030000
	ADD	a2, a2, #&00ae00
	ADD	a2, a2, #&000052
	MOV	a1, a2, ASR #4
	TST	a4, #2
	RSBEQ	a1, a1, #65536
	TST	a4, #1
	RSBNE	a1, a1, #2*65536
	LDMFD	sp!, {pc}^



; asn16
; a leaf APCS function
;
; C prototype:
; int asn16(int a)
;
; returns 65536 * 2/pi * arcsin (a/65536)
;
; for a out of range (ie abs a > 65536), reset a to �65536 as appropriate before eval
;
; is about 24 times faster than FPEmulator working with double floats
;

        EXPORT  asn16

asnsta  DCB     "asn16", 0
        ALIGN
asnend  DCD     &ff000000 + asnend - asnsta

asn16

	CMP	a1, #65536
	MOVGE	a1, #65536
	MOVGES	pc, lr
	ADDS	a2, a1, #65536		;equiv to CMP a1,#-65536
	SUBLE	a1, a1, a2		;equiv to MOVLE a1,#-65536 (which wouldn't work due to bad constant)
	MOVLES	pc, lr
	STMFD	sp!, {lr}		;now have arg in range (-one,one)
	CMP	a1, #0
	RSBMI	a1, a1, #0
	MOVMI	a4, #1			;b0 in a4 set iff final result needs negating
	MOVPL	a4, #0			;now have arg in range [0,one)
	SUB	a2, a1, #&b500
	SUBS	a2, a2, #&0005
	BLT	asn16_arglow		;if arg < one/sqrt2 go and apply poly else first transmute into here
	ORR	a4, a4, #2		;b1 in a4 set iff penultimate result r needs to be replaced by one-r
	MUL	a2, a1, a1
	MOV	a1, a2, LSR #16
	RSB	a1, a1, #65536
	sqrt16	a1, a1, a2, a3, ip, lr	;arg transmuted (ie replaced by one-sqrt(arg^2))
asn16_arglow
	ADD	a3, a1, a1, ASL #2
	ADD	a2, a3, a1, ASL #4
	ADD	a2, a2, a3, ASL #5
	ADD	a2, a2, a3, ASR	#8
	ADD	a2, a2, #32
	MOV	a1, a2, ASR #6		;range transform applied (ie replaced by arg*2sqrt2-one)
	SUB	a1, a1, #&10000		;so arg lies in range [-1,1]
	ADD	a2, a1, a1, LSL #2	;now apply poly
	ADD	a2, a2, a2, LSL #5
	MOV	a2, a2, ASR #14
	ADD	a2, a2, #&000500
	ADD	a2, a2, #&0000ae
        MOV	ip, a1
	mul16c	a2, ip, a2, a3
	ADD	a2, a2, #&000800
	ADD	a2, a2, #&000088
        MOV	ip, a1
	mul16c	a2, ip, a2, a3
	ADD	a2, a2, #&002000
	ADD	a2, a2, #&00009a
        MOV	ip, a1
	mul16c	a2, ip, a2, a3
	ADD	a2, a2, #&004600
	ADD	a2, a2, #&00009a
        MOV	ip, a1
	mul16c	a2, ip, a2, a3
	ADD	a2, a2, #&030000
	ADD	a2, a2, #&00d900
	ADD	a2, a2, #&0000b4
        MOV	ip, a1
	mul16c	a2, ip, a2, a3
	ADD	a2, a2, #&030000
	ADD	a2, a2, #&00ae00
	ADD	a2, a2, #&000052
	MOV	a1, a2, ASR #4
	TST	a4, #2
	RSBNE	a1, a1, #65536
	TST	a4, #1
	RSBNE	a1, a1, #0
	LDMFD	sp!, {pc}^



; gauss16
; a leaf APCS function
;
; C prototype:
; int gauss16(void)
;
; returns 65536 * ( pseudo randon variable with approximate distribution N(0,1) )
; note, the approximate gaussian distribution is achieved via the sum of n pseudo U[0,65535]
;       random variables & application of the central limit theorem
;       here we use n=8, giving an actual range of �(sqrt24) (*65536).
;
;       for general n, recall we need to return:
;       (sum n U[0,65535] random variables) * 2sqrt(3n)*65536/(65535n)  -  sqrt(3n)*65536
;

	EXPORT	gauss16

gansta  DCB     "gauss16", 0
        ALIGN
ganend  DCD     &ff000000 + ganend - gansta

gauss16

	ADR	a1, gaussseed1
	LDMIA	a1, {a2, a3}

	MOVS    a3, a3, LSR #1
        MOVS    a4, a2, RRX
        ADC     a3, a3, a3
        EOR     a4, a4, a2, LSL #12
        EOR     a2, a4, a4, LSR #20
	MOV	ip, a2, LSR #16
	MOV	a4, a2, LSL #16
	ADD	ip, ip, a4, LSR #16

	MOVS    a3, a3, LSR #1
        MOVS    a4, a2, RRX
        ADC     a3, a3, a3
        EOR     a4, a4, a2, LSL #12
        EOR     a2, a4, a4, LSR #20
	ADD	ip, ip, a2, LSR #16
	MOV	a4, a2, LSL #16
	ADD	ip, ip, a4, LSR #16

	MOVS    a3, a3, LSR #1
        MOVS    a4, a2, RRX
        ADC     a3, a3, a3
        EOR     a4, a4, a2, LSL #12
        EOR     a2, a4, a4, LSR #20
	ADD	ip, ip, a2, LSR #16
	MOV	a4, a2, LSL #16
	ADD	ip, ip, a4, LSR #16

	MOVS    a3, a3, LSR #1
        MOVS    a4, a2, RRX
        ADC     a3, a3, a3
        EOR     a4, a4, a2, LSL #12
        EOR     a2, a4, a4, LSR #20
	ADD	ip, ip, a2, LSR #16
	MOV	a4, a2, LSL #16
	ADD	ip, ip, a4, LSR #16		;sum now in ip

	STMIA	a1, {a2, a3}

	RSB	a1, ip, ip, ASL #3
	RSB	a2, ip, ip, ASL #2
	ADD	a1, a2, a1, ASL #4
	ADD	a1, a1, ip, ASL #9
	ADD	a2, ip, ip, ASL #4
	ADD	a2, a2, ip, ASL #6
	ADD	a1, a1, a2, LSR #10
	MOV	a1, a1, LSR #9
	SUB	a1, a1, #&4E000
	SUB	a1, a1, #&00620
	SUB	a1, a1, #&00004

        MOVS    pc, lr

gaussseed1	DCD	-1		;bits b0-b31 of seed
		DCD	-1		;bit  b32 of seed (in lsb of word)

; sgauss16
; a leaf APCS function
;
; C prototype:
; void sgauss16(int seed)
;
; sets the seed for gauss16
;

	EXPORT	sgauss16

sgnsta  DCB     "sgauss16", 0
        ALIGN
sgnend  DCD     &ff000000 + sgnend - sgnsta

sgauss16

	ADR	a2, gaussseed1
	MOV	a3, #1
	STMIA	a2, {a1, a3}
        MOVS    pc, lr



; div_frac16
; a leaf APCS function
;
; C prototype:
; int div_frac16(int number, int divisor)
;
; returns integer part of 65536*number/divisor
; assumes abs number < 65536 * abs divisor
; if this needs checking, must be done by caller
;

        EXPORT  div_frac16

dfnsta  DCB     "div_frac16", 0
        ALIGN
dfnend  DCD     &ff000000 + dfnend - dfnsta

div_frac16

        div16   a1, a2, a1, a3, a4
        MOVS    pc, lr



; mul_frac16
; a leaf APCS function
;
; C prototype:
; int mul_frac16(int x, int a)
;
; returns 32-bit signed integer x*a/65536
; assumes result fits into 32-bit signed representation
; note, no other restrictions on a - if can guarantee abs a < 65536, use mul_frac16c instead as is quicker
;

        EXPORT  mul_frac16

mfnsta  DCB     "mul_frac16", 0
        ALIGN
mfnend  DCD     &ff000000 + mfnend - mfnsta

mul_frac16

        mul16   a1, a2, a1, a3, a4, ip
        MOVS    pc, lr



; mul_frac16c
; a leaf APCS function
;
; C prototype:
; int mul_frac16c(int x, int a)
;
; returns 32-bit signed integer x*a/65536
; assumes abs a <=65536
; if it is possible that abs a > 65536, caller must check range & either not call fn or round down to 65536
;

        EXPORT  mul_frac16c

mfcnsta DCB     "mul_frac16c", 0
        ALIGN
mfcnend DCD     &ff000000 + mfcnend - mfcnsta

mul_frac16c

        mul16c  a1, a2, a1, a3
        MOVS    pc, lr



; sqrt_frac16
; a leaf APCS function
;
; C prototype:
; int sqrt_frac16(unsigned int x)
;
; returns 32-bit integer sqrt(x<<16)
;

        EXPORT  sqrt_frac16

sqfnsta DCB     "sqrt_frac16", 0
        ALIGN
sqfnend DCD     &ff000000 + sqfnend - sqfnsta

sqrt_frac16

        sqrt16  a1, a1, a2, a3, a4, ip
        MOVS    pc, lr



        END
���
00000000  1a 82 53 6f 75 6e 64 00  00 00 00 00 00 00 00 2a  |..Sound........*|
00000010  2e 02 00 a8 20 73 6a 00  00 2a 2e 02 00 46 dc fd  |.... sj..*...F..|
00000020  ff 20 b0 17 cb 00 00 00  00 1a 82 63 00 00 00 00  |. .........c....|
00000030  00 00 00 00 00 00 00 00  34 24 00 00 a8 20 74 6a  |........4$... tj|
00000040  00 00 34 24 00 00 46 dc  fd ff 44 b0 17 cb 00 00  |..4$..F...D.....|
00000050  00 00 1a 82 6d 61 69 6e  00 00 00 00 00 00 00 00  |....main........|
00000060  00 09 24 00 00 a2 20 56  10 81 94 09 24 00 00 46  |..$... V....$..F|
00000070  ff ff ff 03 b3 c2 c7 03  00 00 00 23 69 6e 63 6c  |...........#incl|
00000080  75 64 65 20 3c 73 74 64  69 6f 2e 68 3e 0a 23 69  |ude <stdio.h>.#i|
00000090  6e 63 6c 75 64 65 20 3c  73 74 64 6c 69 62 2e 68  |nclude <stdlib.h|
000000a0  3e 0a 23 69 6e 63 6c 75  64 65 20 3c 73 74 72 69  |>.#include <stri|
000000b0  6e 67 2e 68 3e 0a 23 69  6e 63 6c 75 64 65 20 3c  |ng.h>.#include <|
000000c0  74 69 6d 65 2e 68 3e 0a  23 69 6e 63 6c 75 64 65  |time.h>.#include|
000000d0  20 3c 6d 61 74 68 2e 68  3e 0a 0a 23 64 65 66 69  | <math.h>..#defi|
000000e0  6e 65 20 54 52 41 43 45  20 30 0a 23 69 6e 63 6c  |ne TRACE 0.#incl|
000000f0  75 64 65 20 22 74 72 61  63 65 2e 68 22 0a 0a 23  |ude "trace.h"..#|
00000100  69 6e 63 6c 75 64 65 20  22 77 69 6d 70 74 2e 68  |include "wimpt.h|
00000110  22 0a 23 69 6e 63 6c 75  64 65 20 22 77 65 72 72  |".#include "werr|
00000120  2e 68 22 0a 23 69 6e 63  6c 75 64 65 20 22 62 62  |.h".#include "bb|
00000130  63 2e 68 22 0a 23 69 6e  63 6c 75 64 65 20 22 6f  |c.h".#include "o|
00000140  73 2e 68 22 0a 23 69 6e  63 6c 75 64 65 20 22 61  |s.h".#include "a|
00000150  6b 62 64 2e 68 22 0a 0a  23 69 6e 63 6c 75 64 65  |kbd.h"..#include|
00000160  20 22 73 77 69 73 2e 68  22 0a 0a 65 78 74 65 72  | "swis.h"..exter|
00000170  6e 20 69 6e 74 20 71 75  69 63 6b 64 69 76 5f 69  |n int quickdiv_i|
00000180  6e 69 74 28 69 6e 74 20  64 69 76 69 73 6f 72 29  |nit(int divisor)|
00000190  3b 0a 65 78 74 65 72 6e  20 69 6e 74 20 71 75 69  |;.extern int qui|
000001a0  63 6b 64 69 76 28 69 6e  74 20 6e 75 6d 65 72 61  |ckdiv(int numera|
000001b0  74 6f 72 29 3b 0a 65 78  74 65 72 6e 20 69 6e 74  |tor);.extern int|
000001c0  20 72 62 62 63 69 6e 63  28 69 6e 74 20 72 2c 20  | rbbcinc(int r, |
000001d0  69 6e 74 20 6b 29 3b 0a  65 78 74 65 72 6e 20 69  |int k);.extern i|
000001e0  6e 74 20 64 69 76 5f 66  72 61 63 31 36 28 69 6e  |nt div_frac16(in|
000001f0  74 20 6e 75 6d 62 65 72  2c 20 69 6e 74 20 64 69  |t number, int di|
00000200  76 69 73 6f 72 29 3b 0a  65 78 74 65 72 6e 20 69  |visor);.extern i|
00000210  6e 74 20 6d 75 6c 5f 66  72 61 63 31 36 28 69 6e  |nt mul_frac16(in|
00000220  74 20 78 2c 20 69 6e 74  20 61 29 3b 0a 65 78 74  |t x, int a);.ext|
00000230  65 72 6e 20 69 6e 74 20  6d 75 6c 5f 66 72 61 63  |ern int mul_frac|
00000240  31 36 63 28 69 6e 74 20  78 2c 20 69 6e 74 20 61  |16c(int x, int a|
00000250  29 3b 0a 65 78 74 65 72  6e 20 69 6e 74 20 73 71  |);.extern int sq|
00000260  72 74 5f 66 72 61 63 31  36 28 75 6e 73 69 67 6e  |rt_frac16(unsign|
00000270  65 64 20 69 6e 74 20 78  29 3b 0a 65 78 74 65 72  |ed int x);.exter|
00000280  6e 20 69 6e 74 20 67 61  75 73 73 31 36 28 76 6f  |n int gauss16(vo|
00000290  69 64 29 3b 0a 65 78 74  65 72 6e 20 76 6f 69 64  |id);.extern void|
000002a0  20 73 67 61 75 73 73 31  36 28 69 6e 74 20 73 65  | sgauss16(int se|
000002b0  65 64 29 3b 0a 65 78 74  65 72 6e 20 69 6e 74 20  |ed);.extern int |
000002c0  63 6f 73 31 36 28 69 6e  74 20 61 29 3b 0a 65 78  |cos16(int a);.ex|
000002d0  74 65 72 6e 20 69 6e 74  20 73 69 6e 31 36 28 69  |tern int sin16(i|
000002e0  6e 74 20 61 29 3b 0a 65  78 74 65 72 6e 20 69 6e  |nt a);.extern in|
000002f0  74 20 65 78 70 31 36 28  69 6e 74 20 61 29 3b 0a  |t exp16(int a);.|
00000300  65 78 74 65 72 6e 20 69  6e 74 20 6c 6e 31 36 28  |extern int ln16(|
00000310  69 6e 74 20 61 29 3b 0a  65 78 74 65 72 6e 20 69  |int a);.extern i|
00000320  6e 74 20 70 6f 77 31 36  28 69 6e 74 20 61 2c 20  |nt pow16(int a, |
00000330  69 6e 74 20 62 29 3b 0a  65 78 74 65 72 6e 20 69  |int b);.extern i|
00000340  6e 74 20 61 63 73 31 36  28 69 6e 74 20 61 29 3b  |nt acs16(int a);|
00000350  0a 65 78 74 65 72 6e 20  69 6e 74 20 61 73 6e 31  |.extern int asn1|
00000360  36 28 69 6e 74 20 61 29  3b 0a 65 78 74 65 72 6e  |6(int a);.extern|
00000370  20 69 6e 74 20 70 69 74  63 68 31 36 28 69 6e 74  | int pitch16(int|
00000380  20 61 29 3b 0a 0a 65 78  74 65 72 6e 20 63 68 61  | a);..extern cha|
00000390  72 20 2a 76 6f 69 63 65  5f 62 61 73 65 3b 0a 65  |r *voice_base;.e|
000003a0  78 74 65 72 6e 20 63 68  61 72 20 2a 77 61 76 65  |xtern char *wave|
000003b0  5f 62 61 73 65 3b 0a 65  78 74 65 72 6e 20 63 68  |_base;.extern ch|
000003c0  61 72 20 2a 77 61 76 65  5f 65 6e 64 3b 0a 0a 74  |ar *wave_end;..t|
000003d0  79 70 65 64 65 66 20 65  6e 75 6d 20 7b 6d 75 6c  |ypedef enum {mul|
000003e0  74 69 2c 20 6e 6f 6e 6d  75 6c 74 69 7d 20 6d 6f  |ti, nonmulti} mo|
000003f0  6e 69 74 6f 72 3b 0a 6d  6f 6e 69 74 6f 72 20 6d  |nitor;.monitor m|
00000400  6f 6e 69 74 6f 72 74 79  70 65 3b 0a 0a 23 64 65  |onitortype;..#de|
00000410  66 69 6e 65 20 64 69 66  66 28 61 2c 62 29 20 28  |fine diff(a,b) (|
00000420  28 61 29 3c 28 62 29 20  3f 20 28 62 29 2d 28 61  |(a)<(b) ? (b)-(a|
00000430  29 20 3a 20 28 61 29 2d  28 62 29 29 0a 23 64 65  |) : (a)-(b)).#de|
00000440  66 69 6e 65 20 6c 6f 6e  65 20 31 36 0a 23 64 65  |fine lone 16.#de|
00000450  66 69 6e 65 20 6f 6e 65  20 28 31 3c 3c 6c 6f 6e  |fine one (1<<lon|
00000460  65 29 0a 23 64 65 66 69  6e 65 20 6c 77 74 73 20  |e).#define lwts |
00000470  31 30 0a 23 64 65 66 69  6e 65 20 77 74 73 69 7a  |10.#define wtsiz|
00000480  65 20 28 31 3c 3c 6c 77  74 73 29 0a 23 64 65 66  |e (1<<lwts).#def|
00000490  69 6e 65 20 73 72 65 73  20 31 30 32 34 09 2f 2a  |ine sres 1024./*|
000004a0  70 69 74 63 68 20 72 65  73 6f 6c 75 74 69 6f 6e  |pitch resolution|
000004b0  20 28 63 6f 72 72 65 73  70 6f 6e 64 73 20 74 6f  | (corresponds to|
000004c0  20 76 65 72 74 69 63 61  6c 20 73 63 72 65 65 6e  | vertical screen|
000004d0  20 72 65 73 20 6f 66 20  70 69 63 74 75 72 65 29  | res of picture)|
000004e0  2a 2f 0a 23 64 65 66 69  6e 65 20 6c 74 72 61 6e  |*/.#define ltran|
000004f0  20 32 35 36 09 2f 2a 6c  6f 6f 70 20 6c 69 6d 69  | 256./*loop limi|
00000500  74 20 66 6f 72 20 74 72  61 6e 73 69 65 6e 74 20  |t for transient |
00000510  62 65 68 61 76 69 6f 75  72 2a 2f 0a 23 64 65 66  |behaviour*/.#def|
00000520  69 6e 65 20 6c 61 73 79  6d 20 36 34 09 2f 2a 6c  |ine lasym 64./*l|
00000530  6f 6f 70 20 6c 69 6d 69  74 20 66 6f 72 20 61 73  |oop limit for as|
00000540  79 6d 70 74 6f 74 69 63  20 62 65 68 61 76 69 6f  |ymptotic behavio|
00000550  75 72 2a 2f 0a 0a 69 6e  74 20 77 61 76 65 74 61  |ur*/..int waveta|
00000560  62 6c 65 5b 77 74 73 69  7a 65 5d 3b 0a 69 6e 74  |ble[wtsize];.int|
00000570  20 70 69 74 63 68 5b 73  72 65 73 5d 3b 0a 63 68  | pitch[sres];.ch|
00000580  61 72 20 2a 6c 69 6e 6c  6f 67 3b 0a 69 6e 74 20  |ar *linlog;.int |
00000590  73 61 6d 70 6c 65 70 65  72 69 6f 64 3b 0a 0a 69  |sampleperiod;..i|
000005a0  6e 74 20 6f 6c 64 76 6f  69 63 65 5b 38 5d 3b 0a  |nt oldvoice[8];.|
000005b0  69 6e 74 20 76 6f 69 63  65 3b 0a 0a 2f 2a 2a 2a  |int voice;../***|
000005c0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00000620  2a 2a 2a 2a 2a 2a 2a 2a  2f 0a 0a 6d 6f 6e 69 74  |********/..monit|
00000630  6f 72 20 72 65 61 64 5f  6d 6f 6e 69 74 6f 72 5f  |or read_monitor_|
00000640  74 79 70 65 28 76 6f 69  64 29 0a 7b 0a 20 20 69  |type(void).{.  i|
00000650  6e 74 20 72 32 3b 0a 20  20 6f 73 5f 73 77 69 33  |nt r2;.  os_swi3|
00000660  72 28 36 2c 20 31 36 31  2c 31 33 33 2c 30 2c 20  |r(6, 161,133,0, |
00000670  30 2c 30 2c 26 72 32 29  3b 0a 20 20 69 66 20 28  |0,0,&r2);.  if (|
00000680  28 72 32 2f 34 20 26 20  33 29 20 3d 3d 20 31 29  |(r2/4 & 3) == 1)|
00000690  20 72 65 74 75 72 6e 20  6d 75 6c 74 69 3b 0a 20  | return multi;. |
000006a0  20 65 6c 73 65 20 72 65  74 75 72 6e 20 6e 6f 6e  | else return non|
000006b0  6d 75 6c 74 69 3b 0a 7d  0a 0a 76 6f 69 64 20 72  |multi;.}..void r|
000006c0  65 73 74 6f 72 65 28 76  6f 69 64 29 0a 7b 0a 20  |estore(void).{. |
000006d0  20 69 6e 74 20 76 3b 0a  20 20 63 68 61 72 20 2a  | int v;.  char *|
000006e0  65 72 72 3b 0a 20 20 77  69 6d 70 74 5f 63 6f 6d  |err;.  wimpt_com|
000006f0  70 6c 61 69 6e 28 6f 73  5f 73 77 69 32 72 28 53  |plain(os_swi2r(S|
00000700  6f 75 6e 64 5f 52 65 6d  6f 76 65 56 6f 69 63 65  |ound_RemoveVoice|
00000710  2c 20 30 2c 20 76 6f 69  63 65 2c 20 28 69 6e 74  |, 0, voice, (int|
00000720  20 2a 29 26 65 72 72 2c  20 26 76 29 29 3b 0a 20  | *)&err, &v));. |
00000730  20 69 66 20 28 76 3d 3d  30 29 20 7b 0a 20 20 20  | if (v==0) {.   |
00000740  20 70 72 69 6e 74 66 28  22 65 72 72 6f 72 20 69  | printf("error i|
00000750  6e 20 72 65 73 74 6f 72  65 5c 6e 22 29 3b 0a 20  |n restore\n");. |
00000760  20 20 20 77 65 72 72 28  30 2c 20 65 72 72 29 3b  |   werr(0, err);|
00000770  0a 20 20 7d 0a 20 20 66  6f 72 20 28 76 3d 31 3b  |.  }.  for (v=1;|
00000780  20 76 3c 3d 38 3b 20 76  2b 2b 29 20 77 69 6d 70  | v<=8; v++) wimp|
00000790  74 5f 63 6f 6d 70 6c 61  69 6e 28 6f 73 5f 73 77  |t_complain(os_sw|
000007a0  69 32 28 53 6f 75 6e 64  5f 41 74 74 61 63 68 56  |i2(Sound_AttachV|
000007b0  6f 69 63 65 2c 20 76 2c  20 6f 6c 64 76 6f 69 63  |oice, v, oldvoic|
000007c0  65 5b 76 2d 31 5d 29 29  3b 0a 20 20 77 69 6d 70  |e[v-1]));.  wimp|
000007d0  74 5f 63 6f 6d 70 6c 61  69 6e 28 6f 73 5f 73 77  |t_complain(os_sw|
000007e0  69 36 28 53 6f 75 6e 64  5f 43 6f 6e 66 69 67 75  |i6(Sound_Configu|
000007f0  72 65 2c 20 31 2c 20 30  2c 20 30 2c 20 30 2c 20  |re, 1, 0, 0, 0, |
00000800  30 2c 20 30 29 29 3b 0a  20 20 2f 2a 77 69 6d 70  |0, 0));.  /*wimp|
00000810  74 5f 63 6f 6d 70 6c 61  69 6e 28 6f 73 5f 63 6c  |t_complain(os_cl|
00000820  69 28 22 56 6f 69 63 65  73 22 29 29 3b 2a 2f 0a  |i("Voices"));*/.|
00000830  7d 0a 0a 2f 2a 74 61 6b  65 73 20 61 20 70 68 61  |}../*takes a pha|
00000840  73 65 20 69 6e 63 72 65  6d 65 6e 74 20 70 20 61  |se increment p a|
00000850  6e 64 20 66 69 6e 64 73  20 74 68 65 20 6e 6f 74  |nd finds the not|
00000860  65 20 6f 66 20 63 6c 6f  73 65 73 74 20 70 68 61  |e of closest pha|
00000870  73 65 20 69 6e 63 72 65  6d 65 6e 74 20 66 72 6f  |se increment fro|
00000880  6d 20 61 72 72 61 79 20  6c 20 28 6f 66 20 6e 20  |m array l (of n |
00000890  65 6c 65 6d 65 6e 74 73  2c 0a 20 20 77 68 69 63  |elements,.  whic|
000008a0  68 20 73 74 6f 72 65 73  20 70 68 61 73 65 20 61  |h stores phase a|
000008b0  63 63 75 6d 75 6c 61 74  6f 72 73 20 66 6f 72 20  |ccumulators for |
000008c0  6e 6f 74 65 73 20 69 6e  20 6c 61 73 74 20 70 61  |notes in last pa|
000008d0  63 6b 65 74 29 20 72 65  74 75 72 6e 69 6e 67 20  |cket) returning |
000008e0  74 68 65 20 69 6e 64 65  78 20 6f 66 20 74 68 61  |the index of tha|
000008f0  74 20 6e 6f 74 65 3b 0a  20 20 74 68 69 73 20 69  |t note;.  this i|
00000900  73 20 6e 65 65 64 65 64  20 74 6f 20 65 6e 73 75  |s needed to ensu|
00000910  72 65 20 6e 65 77 20 6e  6f 74 65 73 20 62 65 67  |re new notes beg|
00000920  69 6e 20 74 68 65 69 72  20 70 68 61 73 65 20 66  |in their phase f|
00000930  72 6f 6d 20 74 68 65 20  65 6e 64 20 70 68 61 73  |rom the end phas|
00000940  65 20 6f 66 20 74 68 65  20 6e 65 61 72 65 73 74  |e of the nearest|
00000950  20 73 69 6d 69 6c 61 72  20 6e 6f 74 65 20 69 6e  | similar note in|
00000960  0a 20 20 74 68 65 20 6c  61 73 74 20 70 61 63 6b  |.  the last pack|
00000970  65 74 20 6f 66 20 73 6f  75 6e 64 2a 2f 0a 69 6e  |et of sound*/.in|
00000980  74 20 6e 65 61 72 6e 6f  74 65 28 69 6e 74 20 70  |t nearnote(int p|
00000990  2c 20 75 6e 73 69 67 6e  65 64 20 69 6e 74 20 2a  |, unsigned int *|
000009a0  6c 2c 20 75 6e 73 69 67  6e 65 64 20 69 6e 74 20  |l, unsigned int |
000009b0  6e 29 0a 7b 0a 20 20 69  6e 74 20 69 3d 30 3b 0a  |n).{.  int i=0;.|
000009c0  20 20 69 6e 74 20 6a 3d  69 2b 6e 2d 31 3b 0a 20  |  int j=i+n-1;. |
000009d0  20 69 6e 74 20 6d 3b 0a  20 20 69 6e 74 20 70 31  | int m;.  int p1|
000009e0  2c 20 70 32 3b 0a 20 20  69 66 20 28 6e 3d 3d 30  |, p2;.  if (n==0|
000009f0  29 20 72 65 74 75 72 6e  20 30 3b 20 2f 2a 74 68  |) return 0; /*th|
00000a00  69 73 20 73 68 6f 75 6c  64 6e 27 74 20 65 76 65  |is shouldn't eve|
00000a10  72 20 68 61 70 70 65 6e  21 2a 2f 0a 20 20 69 66  |r happen!*/.  if|
00000a20  20 28 6e 3d 3d 31 29 20  72 65 74 75 72 6e 20 69  | (n==1) return i|
00000a30  3b 0a 20 20 66 6f 72 20  28 3b 3b 29 20 7b 0a 20  |;.  for (;;) {. |
00000a40  20 20 20 69 66 20 28 6e  3d 3d 32 29 20 7b 0a 20  |   if (n==2) {. |
00000a50  20 20 20 20 20 70 31 3d  28 6c 5b 69 5d 3c 3c 31  |     p1=(l[i]<<1|
00000a60  36 29 3e 3e 31 36 3b 0a  20 20 20 20 20 20 70 32  |6)>>16;.      p2|
00000a70  3d 28 6c 5b 6a 5d 3c 3c  31 36 29 3e 3e 31 36 3b  |=(l[j]<<16)>>16;|
00000a80  0a 20 20 20 20 20 20 72  65 74 75 72 6e 20 64 69  |.      return di|
00000a90  66 66 28 70 31 2c 70 29  3c 64 69 66 66 28 70 32  |ff(p1,p)<diff(p2|
00000aa0  2c 70 29 20 3f 20 69 20  3a 20 6a 3b 0a 20 20 20  |,p) ? i : j;.   |
00000ab0  20 7d 0a 20 20 20 20 6d  20 3d 20 69 2b 6e 2f 32  | }.    m = i+n/2|
00000ac0  3b 0a 20 20 20 20 70 31  20 3d 20 28 6c 5b 6d 5d  |;.    p1 = (l[m]|
00000ad0  3c 3c 31 36 29 3e 3e 31  36 3b 0a 20 20 20 20 69  |<<16)>>16;.    i|
00000ae0  66 20 28 70 31 3d 3d 70  29 20 72 65 74 75 72 6e  |f (p1==p) return|
00000af0  20 6d 3b 0a 20 20 20 20  69 66 20 28 70 31 3c 70  | m;.    if (p1<p|
00000b00  29 20 69 3d 6d 3b 0a 20  20 20 20 65 6c 73 65 20  |) i=m;.    else |
00000b10  6a 3d 6d 3b 0a 20 20 20  20 6e 3d 6a 2b 31 2d 69  |j=m;.    n=j+1-i|
00000b20  3b 0a 20 20 7d 0a 7d 0a  0a 42 4f 4f 4c 20 69 6e  |;.  }.}..BOOL in|
00000b30  69 74 5f 67 6c 6f 62 61  6c 73 28 76 6f 69 64 29  |it_globals(void)|
00000b40  0a 7b 0a 20 20 69 6e 74  20 73 2c 20 69 3b 0a 20  |.{.  int s, i;. |
00000b50  20 69 6e 74 20 2a 63 68  61 6e 6e 65 6c 5f 68 61  | int *channel_ha|
00000b60  6e 64 6c 65 72 3b 0a 0a  20 20 6d 6f 6e 69 74 6f  |ndler;..  monito|
00000b70  72 74 79 70 65 20 3d 20  72 65 61 64 5f 6d 6f 6e  |rtype = read_mon|
00000b80  69 74 6f 72 5f 74 79 70  65 28 29 3b 0a 0a 20 20  |itor_type();..  |
00000b90  66 6f 72 20 28 73 3d 30  3b 20 73 3c 77 74 73 69  |for (s=0; s<wtsi|
00000ba0  7a 65 3b 20 73 2b 2b 29  20 77 61 76 65 74 61 62  |ze; s++) wavetab|
00000bb0  6c 65 5b 73 5d 20 3d 20  73 69 6e 31 36 28 73 20  |le[s] = sin16(s |
00000bc0  3c 3c 20 6c 6f 6e 65 2b  32 2d 6c 77 74 73 29 3b  |<< lone+2-lwts);|
00000bd0  0a 0a 20 20 2f 2a 77 68  65 6e 20 63 6f 6e 76 65  |..  /*when conve|
00000be0  72 74 69 6e 67 20 67 72  61 70 68 20 74 6f 20 73  |rting graph to s|
00000bf0  6f 75 6e 64 2c 20 6c 65  74 20 76 65 72 74 69 63  |ound, let vertic|
00000c00  61 6c 20 63 6f 6d 70 6f  6e 65 6e 74 20 63 6f 72  |al component cor|
00000c10  72 65 73 70 6f 6e 64 20  74 6f 20 70 69 74 63 68  |respond to pitch|
00000c20  20 61 6e 64 20 76 61 72  79 20 66 72 6f 6d 0a 20  | and vary from. |
00000c30  20 20 20 30 78 32 30 30  30 20 28 32 20 6f 63 74  |   0x2000 (2 oct|
00000c40  61 76 65 73 20 62 65 6c  6f 77 20 6d 69 64 64 6c  |aves below middl|
00000c50  65 20 43 29 20 74 6f 20  30 78 38 30 30 30 20 28  |e C) to 0x8000 (|
00000c60  34 20 6f 63 74 61 76 65  73 20 61 62 6f 76 65 20  |4 octaves above |
00000c70  6d 69 64 64 6c 65 20 43  29 20 2d 20 63 68 61 6e  |middle C) - chan|
00000c80  67 65 20 30 78 32 30 30  30 20 6f 72 20 30 78 36  |ge 0x2000 or 0x6|
00000c90  30 30 30 20 62 65 6c 6f  77 20 74 6f 20 61 6c 74  |000 below to alt|
00000ca0  65 72 20 74 68 69 73 20  72 65 6c 61 74 69 6f 6e  |er this relation|
00000cb0  2a 2f 0a 20 20 66 6f 72  20 28 73 3d 30 2c 20 69  |*/.  for (s=0, i|
00000cc0  3d 30 78 32 30 30 30 3b  20 73 3c 73 72 65 73 3b  |=0x2000; s<sres;|
00000cd0  20 73 2b 2b 2c 20 69 2b  3d 30 78 36 30 30 30 2f  | s++, i+=0x6000/|
00000ce0  73 72 65 73 29 20 70 69  74 63 68 5b 73 5d 20 3d  |sres) pitch[s] =|
00000cf0  20 70 69 74 63 68 31 36  28 69 29 3b 0a 0a 20 20  | pitch16(i);..  |
00000d00  77 69 6d 70 74 5f 63 6f  6d 70 6c 61 69 6e 28 6f  |wimpt_complain(o|
00000d10  73 5f 73 77 69 36 72 28  53 6f 75 6e 64 5f 43 6f  |s_swi6r(Sound_Co|
00000d20  6e 66 69 67 75 72 65 2c  20 30 2c 20 30 2c 20 30  |nfigure, 0, 0, 0|
00000d30  2c 20 30 2c 20 30 2c 20  30 2c 20 30 2c 20 30 2c  |, 0, 0, 0, 0, 0,|
00000d40  20 26 73 61 6d 70 6c 65  70 65 72 69 6f 64 2c 20  | &sampleperiod, |
00000d50  28 69 6e 74 20 2a 29 26  63 68 61 6e 6e 65 6c 5f  |(int *)&channel_|
00000d60  68 61 6e 64 6c 65 72 2c  20 30 2c 20 30 29 29 3b  |handler, 0, 0));|
00000d70  0a 20 20 6c 69 6e 6c 6f  67 20 3d 20 28 63 68 61  |.  linlog = (cha|
00000d80  72 20 2a 29 63 68 61 6e  6e 65 6c 5f 68 61 6e 64  |r *)channel_hand|
00000d90  6c 65 72 5b 32 5d 3b 0a  0a 20 20 72 65 74 75 72  |ler[2];..  retur|
00000da0  6e 20 54 52 55 45 3b 0a  7d 0a 0a 42 4f 4f 4c 20  |n TRUE;.}..BOOL |
00000db0  69 6e 70 75 74 5f 70 61  72 61 6d 73 28 69 6e 74  |input_params(int|
00000dc0  20 2a 64 75 72 2c 20 69  6e 74 20 2a 73 69 7a 65  | *dur, int *size|
00000dd0  2c 20 69 6e 74 20 2a 64  72 65 73 2c 20 69 6e 74  |, int *dres, int|
00000de0  20 2a 6c 6d 69 6e 2c 20  69 6e 74 20 2a 6c 6d 61  | *lmin, int *lma|
00000df0  78 29 0a 7b 0a 20 20 64  6f 75 62 6c 65 20 64 62  |x).{.  double db|
00000e00  6c 3b 0a 20 20 42 4f 4f  4c 20 6f 6b 3b 0a 0a 20  |l;.  BOOL ok;.. |
00000e10  20 70 72 69 6e 74 66 28  22 5c 6e 5c 6e 22 29 3b  | printf("\n\n");|
00000e20  0a 20 20 70 72 69 6e 74  66 28 22 20 20 20 20 20  |.  printf("     |
00000e30  20 20 20 20 20 20 20 20  20 20 20 20 20 54 20 68  |             T h|
00000e40  20 65 20 20 20 53 20 6f  20 75 20 6e 20 64 20 20  | e   S o u n d  |
00000e50  20 6f 20 66 20 20 20 43  20 68 20 61 20 6f 20 73  | o f   C h a o s|
00000e60  5c 6e 5c 6e 5c 6e 22 29  3b 0a 20 20 70 72 69 6e  |\n\n\n");.  prin|
00000e70  74 66 28 22 41 66 74 65  72 20 69 6d 61 67 65 2f  |tf("After image/|
00000e80  73 61 6d 70 6c 65 20 67  65 6e 65 72 61 74 69 6f  |sample generatio|
00000e90  6e 20 69 73 20 63 6f 6d  70 6c 65 74 65 20 74 68  |n is complete th|
00000ea0  65 20 73 61 6d 70 6c 65  20 77 69 6c 6c 20 70 6c  |e sample will pl|
00000eb0  61 79 20 72 65 70 65 61  74 65 64 6c 79 2e 5c 6e  |ay repeatedly.\n|
00000ec0  5c 6e 22 29 3b 0a 20 20  70 72 69 6e 74 66 28 22  |\n");.  printf("|
00000ed0  41 74 20 74 68 61 74 20  70 6f 69 6e 74 2c 20 75  |At that point, u|
00000ee0  73 65 3a 5c 6e 5c 6e 22  29 3b 0a 20 20 70 72 69  |se:\n\n");.  pri|
00000ef0  6e 74 66 28 22 20 20 45  73 63 61 70 65 20 74 6f  |ntf("  Escape to|
00000f00  20 65 6e 64 20 74 68 69  73 20 70 72 6f 67 72 61  | end this progra|
00000f10  6d 2c 5c 6e 22 29 3b 0a  20 20 70 72 69 6e 74 66  |m,\n");.  printf|
00000f20  28 22 20 20 52 65 74 75  72 6e 20 74 6f 20 72 65  |("  Return to re|
00000f30  2d 72 75 6e 20 69 74 2c  5c 6e 22 29 3b 0a 20 20  |-run it,\n");.  |
00000f40  70 72 69 6e 74 66 28 22  20 20 4c 65 66 74 2f 52  |printf("  Left/R|
00000f50  69 67 68 74 20 63 75 72  73 6f 72 20 28 2b 73 68  |ight cursor (+sh|
00000f60  69 66 74 29 20 74 6f 20  73 65 65 6b 20 6f 75 74  |ift) to seek out|
00000f70  20 69 6e 74 65 72 65 73  74 69 6e 67 20 6e 65 77  | interesting new|
00000f80  20 6c 61 6d 62 64 61 20  72 65 67 69 6f 6e 73 5c  | lambda regions\|
00000f90  6e 22 29 3b 0a 20 20 70  72 69 6e 74 66 28 22 20  |n");.  printf(" |
00000fa0  20 28 66 6f 6c 6c 6f 77  65 64 20 62 79 20 61 6e  | (followed by an|
00000fb0  79 20 6f 74 68 65 72 20  6b 65 79 20 74 6f 20 72  |y other key to r|
00000fc0  65 73 75 6d 65 20 70 6c  61 79 69 6e 67 20 6f 66  |esume playing of|
00000fd0  20 63 75 72 72 65 6e 74  20 73 61 6d 70 6c 65 29  | current sample)|
00000fe0  2e 5c 6e 5c 6e 5c 6e 22  29 3b 0a 0a 20 20 64 6f  |.\n\n\n");..  do|
00000ff0  20 7b 0a 20 20 20 20 64  6f 20 7b 0a 20 20 20 20  | {.    do {.    |
00001000  20 20 70 72 69 6e 74 66  28 22 50 6c 65 61 73 65  |  printf("Please|
00001010  20 65 6e 74 65 72 20 73  61 6d 70 6c 65 20 64 75  | enter sample du|
00001020  72 61 74 69 6f 6e 20 69  6e 20 63 65 6e 74 69 73  |ration in centis|
00001030  65 63 6f 6e 64 73 20 28  65 67 20 33 30 30 30 20  |econds (eg 3000 |
00001040  66 6f 72 20 61 20 33 30  73 20 73 61 6d 70 6c 65  |for a 30s sample|
00001050  3b 20 6d 75 73 74 20 62  65 20 61 74 20 6c 65 61  |; must be at lea|
00001060  73 74 20 31 30 30 29 20  22 29 3b 0a 20 20 20 20  |st 100) ");.    |
00001070  20 20 73 63 61 6e 66 28  22 25 69 22 2c 20 64 75  |  scanf("%i", du|
00001080  72 29 3b 0a 20 20 20 20  7d 20 77 68 69 6c 65 20  |r);.    } while |
00001090  28 2a 64 75 72 3c 31 30  30 29 3b 0a 20 20 20 20  |(*dur<100);.    |
000010a0  2a 73 69 7a 65 20 3d 20  28 2a 64 75 72 2a 31 30  |*size = (*dur*10|
000010b0  30 30 30 29 2f 73 61 6d  70 6c 65 70 65 72 69 6f  |000)/sampleperio|
000010c0  64 3b 0a 20 20 20 20 69  66 20 28 77 61 76 65 5f  |d;.    if (wave_|
000010d0  62 61 73 65 3d 6d 61 6c  6c 6f 63 28 2a 73 69 7a  |base=malloc(*siz|
000010e0  65 29 2c 20 77 61 76 65  5f 62 61 73 65 3d 3d 30  |e), wave_base==0|
000010f0  29 20 7b 0a 20 20 20 20  20 20 70 72 69 6e 74 66  |) {.      printf|
00001100  28 22 43 61 6e 27 74 20  61 6c 6c 6f 63 61 74 65  |("Can't allocate|
00001110  20 73 61 6d 70 6c 65 20  6d 65 6d 6f 72 79 20 6f  | sample memory o|
00001120  66 20 25 69 20 62 79 74  65 73 20 2d 20 74 72 79  |f %i bytes - try|
00001130  20 61 20 73 68 6f 72 74  65 72 20 64 75 72 61 74  | a shorter durat|
00001140  69 6f 6e 20 6f 72 20 71  75 69 74 20 26 20 69 6e  |ion or quit & in|
00001150  63 72 65 61 73 65 20 66  72 65 65 20 6d 65 6d 6f  |crease free memo|
00001160  72 79 2c 20 74 68 65 6e  20 72 75 6e 20 61 67 61  |ry, then run aga|
00001170  69 6e 21 5c 6e 22 2c 20  2a 73 69 7a 65 29 3b 0a  |in!\n", *size);.|
00001180  20 20 20 20 20 20 6f 6b  3d 46 41 4c 53 45 3b 0a  |      ok=FALSE;.|
00001190  20 20 20 20 7d 0a 20 20  20 20 65 6c 73 65 20 6f  |    }.    else o|
000011a0  6b 3d 54 52 55 45 3b 0a  20 20 7d 20 77 68 69 6c  |k=TRUE;.  } whil|
000011b0  65 20 28 21 6f 6b 29 3b  0a 20 20 77 61 76 65 5f  |e (!ok);.  wave_|
000011c0  65 6e 64 20 3d 20 77 61  76 65 5f 62 61 73 65 2b  |end = wave_base+|
000011d0  2a 73 69 7a 65 3b 0a 0a  20 20 64 6f 20 7b 0a 20  |*size;..  do {. |
000011e0  20 20 20 70 72 69 6e 74  66 28 22 50 6c 65 61 73  |   printf("Pleas|
000011f0  65 20 65 6e 74 65 72 20  73 61 6d 70 6c 65 20 72  |e enter sample r|
00001200  65 73 6f 6c 75 74 69 6f  6e 20 28 31 30 30 2d 31  |esolution (100-1|
00001210  30 30 30 30 2c 20 73 75  67 67 65 73 74 20 31 30  |0000, suggest 10|
00001220  30 30 29 20 22 29 3b 0a  20 20 20 20 73 63 61 6e  |00) ");.    scan|
00001230  66 28 22 25 69 22 2c 20  64 72 65 73 29 3b 0a 20  |f("%i", dres);. |
00001240  20 7d 20 77 68 69 6c 65  20 28 2a 64 72 65 73 3c  | } while (*dres<|
00001250  31 30 30 20 7c 7c 20 2a  64 72 65 73 3e 31 30 30  |100 || *dres>100|
00001260  30 30 29 3b 0a 0a 20 20  64 6f 20 7b 0a 20 20 20  |00);..  do {.   |
00001270  20 70 72 69 6e 74 66 28  22 50 6c 65 61 73 65 20  | printf("Please |
00001280  65 6e 74 65 72 20 6c 61  6d 62 64 61 20 6d 69 6e  |enter lambda min|
00001290  20 28 30 2d 34 29 20 22  29 3b 0a 20 20 20 20 73  | (0-4) ");.    s|
000012a0  63 61 6e 66 28 22 25 4c  66 22 2c 20 26 64 62 6c  |canf("%Lf", &dbl|
000012b0  29 3b 0a 20 20 7d 20 77  68 69 6c 65 20 28 64 62  |);.  } while (db|
000012c0  6c 3c 30 20 7c 7c 20 64  62 6c 3e 34 29 3b 0a 20  |l<0 || dbl>4);. |
000012d0  20 2a 6c 6d 69 6e 20 3d  20 28 69 6e 74 29 28 64  | *lmin = (int)(d|
000012e0  62 6c 2a 6f 6e 65 29 3b  0a 0a 20 20 64 6f 20 7b  |bl*one);..  do {|
000012f0  0a 20 20 20 20 70 72 69  6e 74 66 28 22 50 6c 65  |.    printf("Ple|
00001300  61 73 65 20 65 6e 74 65  72 20 6c 61 6d 62 64 61  |ase enter lambda|
00001310  20 6d 61 78 20 28 30 2d  34 29 20 22 29 3b 0a 20  | max (0-4) ");. |
00001320  20 20 20 73 63 61 6e 66  28 22 25 4c 66 22 2c 20  |   scanf("%Lf", |
00001330  26 64 62 6c 29 3b 0a 20  20 7d 20 77 68 69 6c 65  |&dbl);.  } while|
00001340  20 28 64 62 6c 3c 3d 2a  6c 6d 69 6e 2f 36 35 35  | (dbl<=*lmin/655|
00001350  33 36 2e 30 20 7c 7c 20  64 62 6c 3e 34 29 3b 0a  |36.0 || dbl>4);.|
00001360  20 20 2a 6c 6d 61 78 20  3d 20 28 69 6e 74 29 28  |  *lmax = (int)(|
00001370  64 62 6c 2a 6f 6e 65 29  3b 0a 0a 20 20 72 65 74  |dbl*one);..  ret|
00001380  75 72 6e 20 54 52 55 45  3b 0a 7d 0a 0a 76 6f 69  |urn TRUE;.}..voi|
00001390  64 20 61 64 64 5f 76 6f  69 63 65 28 76 6f 69 64  |d add_voice(void|
000013a0  29 0a 7b 0a 20 20 69 6e  74 20 76 3b 0a 20 20 77  |).{.  int v;.  w|
000013b0  69 6d 70 74 5f 63 6f 6d  70 6c 61 69 6e 28 6f 73  |impt_complain(os|
000013c0  5f 73 77 69 32 72 28 53  6f 75 6e 64 5f 49 6e 73  |_swi2r(Sound_Ins|
000013d0  74 61 6c 6c 56 6f 69 63  65 2c 20 28 69 6e 74 29  |tallVoice, (int)|
000013e0  76 6f 69 63 65 5f 62 61  73 65 2c 20 30 2c 20 30  |voice_base, 0, 0|
000013f0  2c 20 26 76 6f 69 63 65  29 29 3b 0a 20 20 66 6f  |, &voice));.  fo|
00001400  72 20 28 76 3d 31 3b 20  76 3c 3d 38 3b 20 76 2b  |r (v=1; v<=8; v+|
00001410  2b 29 20 77 69 6d 70 74  5f 63 6f 6d 70 6c 61 69  |+) wimpt_complai|
00001420  6e 28 6f 73 5f 73 77 69  32 72 28 53 6f 75 6e 64  |n(os_swi2r(Sound|
00001430  5f 41 74 74 61 63 68 56  6f 69 63 65 2c 20 76 2c  |_AttachVoice, v,|
00001440  20 76 6f 69 63 65 2c 20  30 2c 20 6f 6c 64 76 6f  | voice, 0, oldvo|
00001450  69 63 65 2b 76 2d 31 29  29 3b 0a 20 20 61 74 65  |ice+v-1));.  ate|
00001460  78 69 74 28 72 65 73 74  6f 72 65 29 3b 0a 20 20  |xit(restore);.  |
00001470  77 69 6d 70 74 5f 63 6f  6d 70 6c 61 69 6e 28 6f  |wimpt_complain(o|
00001480  73 5f 73 77 69 36 28 53  6f 75 6e 64 5f 43 6f 6e  |s_swi6(Sound_Con|
00001490  66 69 67 75 72 65 2c 20  31 2c 20 30 2c 20 30 2c  |figure, 1, 0, 0,|
000014a0  20 30 2c 20 30 2c 20 30  29 29 3b 0a 20 20 2f 2a  | 0, 0, 0));.  /*|
000014b0  77 69 6d 70 74 5f 63 6f  6d 70 6c 61 69 6e 28 6f  |wimpt_complain(o|
000014c0  73 5f 63 6c 69 28 22 56  6f 69 63 65 73 22 29 29  |s_cli("Voices"))|
000014d0  3b 2a 2f 0a 7d 0a 0a 69  6e 74 20 6d 61 69 6e 28  |;*/.}..int main(|
000014e0  76 6f 69 64 29 0a 7b 0a  20 20 69 6e 74 20 73 69  |void).{.  int si|
000014f0  7a 65 3b 0a 20 20 69 6e  74 20 75 73 65 72 76 6f  |ze;.  int uservo|
00001500  6c 75 6d 65 2c 20 73 3b  0a 20 20 69 6e 74 20 73  |lume, s;.  int s|
00001510  61 6d 70 6c 65 3b 0a 20  20 69 6e 74 20 69 3b 0a  |ample;.  int i;.|
00001520  20 20 69 6e 74 20 64 75  72 20 3d 20 36 30 30 30  |  int dur = 6000|
00001530  3b 20 20 2f 2a 74 6f 74  61 6c 20 73 61 6d 70 6c  |;  /*total sampl|
00001540  65 20 6c 65 6e 67 74 68  20 69 6e 20 63 65 6e 74  |e length in cent|
00001550  69 73 65 63 6f 6e 64 73  2a 2f 0a 20 20 69 6e 74  |iseconds*/.  int|
00001560  20 64 72 65 73 20 3d 20  31 30 30 30 3b 20 2f 2a  | dres = 1000; /*|
00001570  73 61 6d 70 6c 65 20 64  75 72 61 74 69 6f 6e 20  |sample duration |
00001580  72 65 73 6f 6c 75 74 69  6f 6e 20 2d 20 6d 61 6b  |resolution - mak|
00001590  65 20 73 61 6d 70 6c 65  20 75 70 20 6f 66 20 64  |e sample up of d|
000015a0  72 65 73 20 70 61 63 6b  65 74 73 20 6f 66 20 73  |res packets of s|
000015b0  6f 75 6e 64 20 28 63 6f  72 72 65 73 70 6f 6e 64  |ound (correspond|
000015c0  73 20 74 6f 20 68 6f 72  69 7a 6f 6e 74 61 6c 20  |s to horizontal |
000015d0  73 63 72 65 65 6e 20 72  65 73 20 6f 66 20 70 69  |screen res of pi|
000015e0  63 74 75 72 65 29 2a 2f  0a 20 20 63 68 61 72 20  |cture)*/.  char |
000015f0  73 65 6c 65 63 74 69 6f  6e 5b 73 72 65 73 5d 3b  |selection[sres];|
00001600  0a 20 20 75 6e 73 69 67  6e 65 64 20 69 6e 74 20  |.  unsigned int |
00001610  6c 69 73 74 31 5b 73 72  65 73 5d 2c 20 6c 69 73  |list1[sres], lis|
00001620  74 32 5b 73 72 65 73 5d  2c 20 2a 6c 69 73 74 2c  |t2[sres], *list,|
00001630  20 2a 6c 69 73 74 6f 6c  64 3b 0a 20 20 69 6e 74  | *listold;.  int|
00001640  20 6e 6e 6f 74 65 73 2c  20 6e 6e 6f 74 65 73 6f  | nnotes, nnoteso|
00001650  6c 64 3b 0a 20 20 69 6e  74 20 6c 6d 69 6e 2c 20  |ld;.  int lmin, |
00001660  6c 6d 61 78 2c 20 6c 2c  20 78 3b 0a 20 20 69 6e  |lmax, l, x;.  in|
00001670  74 20 6c 69 2c 20 6c 65  2c 20 6c 64 69 66 2c 20  |t li, le, ldif, |
00001680  6c 72 3b 0a 20 20 69 6e  74 20 71 3b 0a 20 20 63  |lr;.  int q;.  c|
00001690  68 61 72 20 2a 70 2c 20  2a 70 74 3b 0a 20 20 69  |har *p, *pt;.  i|
000016a0  6e 74 20 70 69 2c 20 70  65 2c 20 70 72 3b 0a 20  |nt pi, pe, pr;. |
000016b0  20 69 6e 74 20 73 78 2c  20 73 69 2c 20 73 65 2c  | int sx, si, se,|
000016c0  20 73 72 3b 0a 20 20 69  6e 74 20 73 74 61 72 74  | sr;.  int start|
000016d0  5f 74 69 6d 65 3b 0a 0a  20 20 69 66 20 28 21 69  |_time;..  if (!i|
000016e0  6e 69 74 5f 67 6c 6f 62  61 6c 73 28 29 29 20 72  |nit_globals()) r|
000016f0  65 74 75 72 6e 20 30 3b  0a 0a 20 20 66 6f 72 20  |eturn 0;..  for |
00001700  28 3b 3b 29 20 7b 0a 0a  20 20 20 20 62 62 63 5f  |(;;) {..    bbc_|
00001710  6d 6f 64 65 28 6d 6f 6e  69 74 6f 72 74 79 70 65  |mode(monitortype|
00001720  3d 3d 6d 75 6c 74 69 20  3f 20 32 30 20 3a 20 31  |==multi ? 20 : 1|
00001730  32 29 3b 0a 20 20 20 20  69 66 20 28 21 69 6e 70  |2);.    if (!inp|
00001740  75 74 5f 70 61 72 61 6d  73 28 26 64 75 72 2c 20  |ut_params(&dur, |
00001750  26 73 69 7a 65 2c 20 26  64 72 65 73 2c 20 26 6c  |&size, &dres, &l|
00001760  6d 69 6e 2c 20 26 6c 6d  61 78 29 29 20 72 65 74  |min, &lmax)) ret|
00001770  75 72 6e 20 30 3b 0a 20  20 20 20 6c 64 69 66 09  |urn 0;.    ldif.|
00001780  3d 20 6c 6d 61 78 2d 6c  6d 69 6e 3b 0a 0a 20 20  |= lmax-lmin;..  |
00001790  20 20 6c 69 73 74 3d 6c  69 73 74 31 3b 0a 20 20  |  list=list1;.  |
000017a0  20 20 6c 69 73 74 32 5b  30 5d 3d 28 30 3c 3c 31  |  list2[0]=(0<<1|
000017b0  36 29 2b 70 69 74 63 68  5b 30 5d 3b 0a 20 20 20  |6)+pitch[0];.   |
000017c0  20 6e 6e 6f 74 65 73 6f  6c 64 3d 31 3b 0a 20 20  | nnotesold=1;.  |
000017d0  20 20 6c 69 73 74 6f 6c  64 3d 6c 69 73 74 32 3b  |  listold=list2;|
000017e0  0a 0a 20 20 20 20 62 62  63 5f 63 6c 73 28 29 3b  |..    bbc_cls();|
000017f0  0a 20 20 20 20 77 69 6d  70 74 5f 63 6f 6d 70 6c  |.    wimpt_compl|
00001800  61 69 6e 28 6f 73 5f 73  77 69 31 72 28 53 6f 75  |ain(os_swi1r(Sou|
00001810  6e 64 5f 56 6f 6c 75 6d  65 2c 20 31 32 37 2c 20  |nd_Volume, 127, |
00001820  26 75 73 65 72 76 6f 6c  75 6d 65 29 29 3b 0a 20  |&uservolume));. |
00001830  20 20 20 66 6f 72 20 28  70 3d 70 74 3d 77 61 76  |   for (p=pt=wav|
00001840  65 5f 62 61 73 65 2c 70  69 3d 73 69 7a 65 2f 64  |e_base,pi=size/d|
00001850  72 65 73 2c 70 72 3d 73  69 7a 65 25 64 72 65 73  |res,pr=size%dres|
00001860  2c 70 65 3d 2d 64 72 65  73 2c 20 71 3d 30 2c 20  |,pe=-dres, q=0, |
00001870  6c 3d 6c 6d 69 6e 2c 6c  69 3d 6c 64 69 66 2f 64  |l=lmin,li=ldif/d|
00001880  72 65 73 2c 6c 72 3d 6c  64 69 66 25 64 72 65 73  |res,lr=ldif%dres|
00001890  2c 6c 65 3d 2d 64 72 65  73 2c 20 73 78 3d 30 2c  |,le=-dres, sx=0,|
000018a0  73 69 3d 31 32 38 30 2f  64 72 65 73 2c 73 72 3d  |si=1280/dres,sr=|
000018b0  31 32 38 30 25 64 72 65  73 2c 73 65 3d 2d 64 72  |1280%dres,se=-dr|
000018c0  65 73 3b 0a 20 20 20 20  20 20 20 20 20 71 3c 64  |es;.         q<d|
000018d0  72 65 73 3b 0a 20 20 20  20 20 20 20 20 20 71 2b  |res;.         q+|
000018e0  2b 2c 20 6c 2b 3d 6c 69  2c 6c 65 2b 3d 32 2a 6c  |+, l+=li,le+=2*l|
000018f0  72 2c 6c 65 3e 30 3f 28  6c 2b 2b 2c 6c 65 2d 3d  |r,le>0?(l++,le-=|
00001900  32 2a 64 72 65 73 29 3a  30 2c 20 73 78 2b 3d 73  |2*dres):0, sx+=s|
00001910  69 2c 73 65 2b 3d 32 2a  73 72 2c 73 65 3e 30 3f  |i,se+=2*sr,se>0?|
00001920  28 73 78 2b 2b 2c 73 65  2d 3d 32 2a 64 72 65 73  |(sx++,se-=2*dres|
00001930  29 3a 30 29 20 7b 0a 20  20 20 20 20 20 6d 65 6d  |):0) {.      mem|
00001940  73 65 74 28 73 65 6c 65  63 74 69 6f 6e 2c 20 30  |set(selection, 0|
00001950  2c 20 73 72 65 73 29 3b  0a 20 20 20 20 20 20 78  |, sres);.      x|
00001960  20 3d 20 6f 6e 65 2f 32  3b 0a 20 20 20 20 20 20  | = one/2;.      |
00001970  66 6f 72 20 28 73 3d 30  3b 20 73 3c 6c 74 72 61  |for (s=0; s<ltra|
00001980  6e 3b 20 73 2b 2b 29 20  78 20 3d 20 6d 75 6c 5f  |n; s++) x = mul_|
00001990  66 72 61 63 31 36 63 28  6c 2c 20 6d 75 6c 5f 66  |frac16c(l, mul_f|
000019a0  72 61 63 31 36 63 28 78  2c 20 6f 6e 65 2d 78 29  |rac16c(x, one-x)|
000019b0  29 3b 0a 20 20 20 20 20  20 66 6f 72 20 28 73 3d  |);.      for (s=|
000019c0  30 3b 20 73 3c 6c 61 73  79 6d 3b 20 73 2b 2b 29  |0; s<lasym; s++)|
000019d0  20 7b 0a 20 20 20 20 20  20 20 20 78 20 3d 20 6d  | {.        x = m|
000019e0  75 6c 5f 66 72 61 63 31  36 63 28 6c 2c 20 6d 75  |ul_frac16c(l, mu|
000019f0  6c 5f 66 72 61 63 31 36  63 28 78 2c 20 6f 6e 65  |l_frac16c(x, one|
00001a00  2d 78 29 29 3b 0a 20 20  20 20 20 20 20 20 69 20  |-x));.        i |
00001a10  3d 20 78 2a 73 72 65 73  2f 6f 6e 65 3b 0a 20 20  |= x*sres/one;.  |
00001a20  20 20 20 20 20 20 69 66  20 28 69 3c 30 29 20 69  |      if (i<0) i|
00001a30  3d 30 3b 0a 20 20 20 20  20 20 20 20 69 66 20 28  |=0;.        if (|
00001a40  69 3e 3d 73 72 65 73 29  20 69 3d 73 72 65 73 2d  |i>=sres) i=sres-|
00001a50  31 3b 0a 20 20 20 20 20  20 20 20 73 65 6c 65 63  |1;.        selec|
00001a60  74 69 6f 6e 5b 69 5d 3d  32 35 35 3b 0a 20 20 20  |tion[i]=255;.   |
00001a70  20 20 20 20 20 62 62 63  5f 70 6c 6f 74 28 36 39  |     bbc_plot(69|
00001a80  2c 73 78 2c 69 29 3b 0a  20 20 20 20 20 20 7d 0a  |,sx,i);.      }.|
00001a90  20 20 20 20 20 20 6e 6e  6f 74 65 73 3d 30 3b 20  |      nnotes=0; |
00001aa0  2f 2a 6e 6f 77 20 77 65  20 63 6f 6d 70 69 6c 65  |/*now we compile|
00001ab0  20 6f 75 72 20 6c 69 73  74 20 6f 66 20 70 69 74  | our list of pit|
00001ac0  63 68 65 73 20 66 6f 72  20 74 68 65 20 63 75 72  |ches for the cur|
00001ad0  72 65 6e 74 20 76 61 6c  75 65 20 6f 66 20 6c 61  |rent value of la|
00001ae0  6d 62 64 61 2a 2f 0a 20  20 20 20 20 20 66 6f 72  |mbda*/.      for|
00001af0  20 28 73 3d 30 3b 20 73  3c 73 72 65 73 3b 20 73  | (s=0; s<sres; s|
00001b00  2b 2b 29 20 69 66 20 28  73 65 6c 65 63 74 69 6f  |++) if (selectio|
00001b10  6e 5b 73 5d 29 20 6c 69  73 74 5b 6e 6e 6f 74 65  |n[s]) list[nnote|
00001b20  73 2b 2b 5d 3d 28 30 3c  3c 31 36 29 2b 70 69 74  |s++]=(0<<16)+pit|
00001b30  63 68 5b 73 5d 3b 0a 20  20 20 20 20 20 2f 2a 69  |ch[s];.      /*i|
00001b40  74 20 74 68 65 6e 20 72  65 6d 61 69 6e 73 20 74  |t then remains t|
00001b50  6f 20 73 65 74 20 74 68  65 20 69 6e 69 74 69 61  |o set the initia|
00001b60  6c 20 70 68 61 73 65 20  6f 66 20 65 61 63 68 20  |l phase of each |
00001b70  73 75 63 68 20 6e 6f 74  65 20 66 72 6f 6d 20 74  |such note from t|
00001b80  68 65 20 65 6e 64 20 70  68 61 73 65 20 6f 66 20  |he end phase of |
00001b90  74 68 65 20 6e 65 61 72  65 73 74 20 6e 6f 74 65  |the nearest note|
00001ba0  20 69 6e 20 74 68 65 20  6c 61 73 74 20 70 61 63  | in the last pac|
00001bb0  6b 65 74 2a 2f 0a 20 20  20 20 20 20 66 6f 72 20  |ket*/.      for |
00001bc0  28 73 3d 30 3b 20 73 3c  6e 6e 6f 74 65 73 3b 20  |(s=0; s<nnotes; |
00001bd0  73 2b 2b 29 20 6c 69 73  74 5b 73 5d 20 2b 3d 20  |s++) list[s] += |
00001be0  28 6c 69 73 74 6f 6c 64  5b 6e 65 61 72 6e 6f 74  |(listold[nearnot|
00001bf0  65 28 6c 69 73 74 5b 73  5d 2c 20 6c 69 73 74 6f  |e(list[s], listo|
00001c00  6c 64 2c 20 6e 6e 6f 74  65 73 6f 6c 64 29 5d 3e  |ld, nnotesold)]>|
00001c10  3e 31 36 29 3c 3c 31 36  3b 0a 20 20 20 20 20 20  |>16)<<16;.      |
00001c20  69 66 20 28 71 75 69 63  6b 64 69 76 5f 69 6e 69  |if (quickdiv_ini|
00001c30  74 28 6e 6e 6f 74 65 73  29 3c 30 29 20 77 65 72  |t(nnotes)<0) wer|
00001c40  72 28 31 2c 20 22 75 6e  65 78 70 65 63 74 65 64  |r(1, "unexpected|
00001c50  20 71 75 69 63 6b 64 69  76 5f 69 6e 69 74 20 65  | quickdiv_init e|
00001c60  72 72 6f 72 22 29 3b 0a  20 20 20 20 20 20 66 6f  |rror");.      fo|
00001c70  72 20 28 70 74 2b 3d 70  69 2c 70 65 2b 3d 32 2a  |r (pt+=pi,pe+=2*|
00001c80  70 72 2c 70 65 3e 30 3f  28 70 74 2b 2b 2c 70 65  |pr,pe>0?(pt++,pe|
00001c90  2d 3d 32 2a 64 72 65 73  29 3a 30 2c 70 74 3d 28  |-=2*dres):0,pt=(|
00001ca0  70 74 3e 77 61 76 65 5f  65 6e 64 7c 7c 71 3d 3d  |pt>wave_end||q==|
00001cb0  64 72 65 73 2d 31 29 3f  77 61 76 65 5f 65 6e 64  |dres-1)?wave_end|
00001cc0  3a 70 74 3b 20 70 3c 70  74 3b 20 70 2b 2b 29 20  |:pt; p<pt; p++) |
00001cd0  7b 0a 20 20 20 20 20 20  20 20 66 6f 72 20 28 69  |{.        for (i|
00001ce0  3d 30 2c 20 73 61 6d 70  6c 65 3d 30 3b 20 69 3c  |=0, sample=0; i<|
00001cf0  6e 6e 6f 74 65 73 3b 20  69 2b 2b 29 20 73 61 6d  |nnotes; i++) sam|
00001d00  70 6c 65 20 2b 3d 20 77  61 76 65 74 61 62 6c 65  |ple += wavetable|
00001d10  5b 28 6c 69 73 74 5b 69  5d 2b 3d 6c 69 73 74 5b  |[(list[i]+=list[|
00001d20  69 5d 3c 3c 31 36 29 20  3e 3e 20 33 32 2d 6c 77  |i]<<16) >> 32-lw|
00001d30  74 73 5d 3b 0a 20 20 20  20 20 20 20 20 73 61 6d  |ts];.        sam|
00001d40  70 6c 65 20 3d 20 71 75  69 63 6b 64 69 76 28 73  |ple = quickdiv(s|
00001d50  61 6d 70 6c 65 29 3b 0a  20 20 20 20 20 20 20 20  |ample);.        |
00001d60  73 61 6d 70 6c 65 20 3e  3e 3d 20 34 3b 0a 20 20  |sample >>= 4;.  |
00001d70  20 20 20 20 20 20 69 66  20 28 73 61 6d 70 6c 65  |      if (sample|
00001d80  3e 3d 34 30 39 36 29 20  73 61 6d 70 6c 65 3d 34  |>=4096) sample=4|
00001d90  30 39 35 3b 0a 20 20 20  20 20 20 20 20 69 66 20  |095;.        if |
00001da0  28 73 61 6d 70 6c 65 3c  3d 2d 34 30 39 36 29 20  |(sample<=-4096) |
00001db0  73 61 6d 70 6c 65 3d 2d  34 30 39 35 3b 0a 20 20  |sample=-4095;.  |
00001dc0  20 20 20 20 20 20 2a 70  20 3d 20 6c 69 6e 6c 6f  |      *p = linlo|
00001dd0  67 5b 28 75 6e 73 69 67  6e 65 64 20 69 6e 74 29  |g[(unsigned int)|
00001de0  28 73 61 6d 70 6c 65 3c  3c 31 39 29 3e 3e 31 39  |(sample<<19)>>19|
00001df0  5d 3b 0a 20 20 20 20 20  20 7d 0a 20 20 20 20 20  |];.      }.     |
00001e00  20 6e 6e 6f 74 65 73 6f  6c 64 3d 6e 6e 6f 74 65  | nnotesold=nnote|
00001e10  73 3b 0a 20 20 20 20 20  20 6c 69 73 74 6f 6c 64  |s;.      listold|
00001e20  3d 6c 69 73 74 3b 0a 20  20 20 20 20 20 6c 69 73  |=list;.      lis|
00001e30  74 20 3d 20 6c 69 73 74  3d 3d 6c 69 73 74 31 20  |t = list==list1 |
00001e40  3f 20 6c 69 73 74 32 20  3a 20 6c 69 73 74 31 3b  |? list2 : list1;|
00001e50  0a 20 20 20 20 7d 0a 20  20 20 20 77 69 6d 70 74  |.    }.    wimpt|
00001e60  5f 63 6f 6d 70 6c 61 69  6e 28 6f 73 5f 73 77 69  |_complain(os_swi|
00001e70  31 28 53 6f 75 6e 64 5f  56 6f 6c 75 6d 65 2c 20  |1(Sound_Volume, |
00001e80  75 73 65 72 76 6f 6c 75  6d 65 29 29 3b 0a 0a 20  |uservolume));.. |
00001e90  20 20 20 61 64 64 5f 76  6f 69 63 65 28 29 3b 0a  |   add_voice();.|
00001ea0  20 20 20 20 62 62 63 5f  63 75 72 73 6f 72 28 30  |    bbc_cursor(0|
00001eb0  29 3b 0a 0a 20 20 20 20  66 6f 72 20 28 3b 3b 29  |);..    for (;;)|
00001ec0  20 7b 0a 20 20 20 20 20  20 77 69 6d 70 74 5f 63  | {.      wimpt_c|
00001ed0  6f 6d 70 6c 61 69 6e 28  6f 73 5f 73 77 69 34 28  |omplain(os_swi4(|
00001ee0  53 6f 75 6e 64 5f 43 6f  6e 74 72 6f 6c 2c 20 31  |Sound_Control, 1|
00001ef0  2c 20 30 78 31 37 66 2c  20 30 78 34 30 30 30 2c  |, 0x17f, 0x4000,|
00001f00  20 64 75 72 2f 35 29 29  3b 0a 20 20 20 20 20 20  | dur/5));.      |
00001f10  73 74 61 72 74 5f 74 69  6d 65 3d 63 6c 6f 63 6b  |start_time=clock|
00001f20  28 29 3b 0a 20 20 20 20  20 20 62 62 63 5f 67 63  |();.      bbc_gc|
00001f30  6f 6c 28 33 2c 20 37 29  3b 0a 20 20 20 20 20 20  |ol(3, 7);.      |
00001f40  66 6f 72 20 28 73 3d 30  3b 20 73 3c 31 32 38 30  |for (s=0; s<1280|
00001f50  3b 20 73 2b 3d 32 29 20  7b 0a 20 20 20 20 20 20  |; s+=2) {.      |
00001f60  20 20 62 62 63 5f 6d 6f  76 65 28 73 2d 32 2c 20  |  bbc_move(s-2, |
00001f70  30 29 3b 0a 20 20 20 20  20 20 20 20 62 62 63 5f  |0);.        bbc_|
00001f80  64 72 61 77 62 79 28 30  2c 20 31 30 32 34 29 3b  |drawby(0, 1024);|
00001f90  0a 20 20 20 20 20 20 20  20 62 62 63 5f 6d 6f 76  |.        bbc_mov|
00001fa0  65 28 73 2c 20 30 29 3b  0a 20 20 20 20 20 20 20  |e(s, 0);.       |
00001fb0  20 62 62 63 5f 64 72 61  77 62 79 28 30 2c 20 31  | bbc_drawby(0, 1|
00001fc0  30 32 34 29 3b 0a 20 20  20 20 20 20 20 20 77 69  |024);.        wi|
00001fd0  6d 70 74 5f 63 6f 6d 70  6c 61 69 6e 28 6f 73 5f  |mpt_complain(os_|
00001fe0  73 77 69 32 28 4f 53 5f  42 79 74 65 2c 34 2c 31  |swi2(OS_Byte,4,1|
00001ff0  29 29 3b 0a 20 20 20 20  20 20 20 20 69 66 20 28  |));.        if (|
00002000  61 6b 62 64 5f 70 6f 6c  6c 6b 65 79 28 26 69 29  |akbd_pollkey(&i)|
00002010  29 20 7b 0a 20 20 20 20  20 20 20 20 20 20 77 69  |) {.          wi|
00002020  6d 70 74 5f 63 6f 6d 70  6c 61 69 6e 28 6f 73 5f  |mpt_complain(os_|
00002030  73 77 69 34 28 53 6f 75  6e 64 5f 43 6f 6e 74 72  |swi4(Sound_Contr|
00002040  6f 6c 2c 20 31 2c 20 30  2c 20 30 78 34 30 30 30  |ol, 1, 0, 0x4000|
00002050  2c 20 31 29 29 3b 0a 20  20 20 20 20 20 20 20 20  |, 1));.         |
00002060  20 73 78 3d 73 3b 0a 20  20 20 20 20 20 20 20 20  | sx=s;.         |
00002070  20 78 3d 36 34 30 3b 0a  20 20 20 20 20 20 20 20  | x=640;.        |
00002080  20 20 69 66 20 28 69 21  3d 31 33 29 20 66 6f 72  |  if (i!=13) for|
00002090  20 28 3b 3b 29 20 7b 0a  20 20 20 20 20 20 20 20  | (;;) {.        |
000020a0  20 20 20 20 69 66 20 28  78 21 3d 73 78 29 20 7b  |    if (x!=sx) {|
000020b0  0a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 62  |.              b|
000020c0  62 63 5f 6d 6f 76 65 28  73 78 2c 20 30 29 3b 0a  |bc_move(sx, 0);.|
000020d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 62 62  |              bb|
000020e0  63 5f 64 72 61 77 62 79  28 30 2c 20 31 30 32 34  |c_drawby(0, 1024|
000020f0  29 3b 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |);.             |
00002100  20 62 62 63 5f 6d 6f 76  65 28 78 2c 20 30 29 3b  | bbc_move(x, 0);|
00002110  0a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 62  |.              b|
00002120  62 63 5f 64 72 61 77 62  79 28 30 2c 20 31 30 32  |bc_drawby(0, 102|
00002130  34 29 3b 0a 20 20 20 20  20 20 20 20 20 20 20 20  |4);.            |
00002140  20 20 73 78 3d 78 3b 0a  20 20 20 20 20 20 20 20  |  sx=x;.        |
00002150  20 20 20 20 20 20 62 62  63 5f 74 61 62 28 30 2c  |      bbc_tab(0,|
00002160  30 29 3b 0a 20 20 20 20  20 20 20 20 20 20 20 20  |0);.            |
00002170  20 20 70 72 69 6e 74 66  28 22 6c 61 6d 62 64 61  |  printf("lambda|
00002180  20 3d 20 25 66 20 20 20  20 20 20 20 20 20 20 20  | = %f           |
00002190  20 22 2c 20 28 28 69 6e  74 29 28 78 2a 6c 64 69  | ", ((int)(x*ldi|
000021a0  66 29 2f 31 32 38 30 2e  30 2b 28 69 6e 74 29 6c  |f)/1280.0+(int)l|
000021b0  6d 69 6e 29 2f 36 35 35  33 36 2e 30 29 3b 0a 20  |min)/65536.0);. |
000021c0  20 20 20 20 20 20 20 20  20 20 20 7d 0a 20 20 20  |           }.   |
000021d0  20 20 20 20 20 20 20 20  20 69 66 20 28 61 6b 62  |         if (akb|
000021e0  64 5f 70 6f 6c 6c 6b 65  79 28 26 69 29 29 20 7b  |d_pollkey(&i)) {|
000021f0  0a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 69  |.              i|
00002200  66 20 28 69 3d 3d 31 33  36 20 26 26 20 78 3e 30  |f (i==136 && x>0|
00002210  29 20 78 2d 3d 61 6b 62  64 5f 70 6f 6c 6c 73 68  |) x-=akbd_pollsh|
00002220  28 29 3f 32 3a 31 30 3b  0a 20 20 20 20 20 20 20  |()?2:10;.       |
00002230  20 20 20 20 20 20 20 69  66 20 28 69 3d 3d 31 33  |       if (i==13|
00002240  37 20 26 26 20 78 3c 31  32 37 38 29 20 78 2b 3d  |7 && x<1278) x+=|
00002250  61 6b 62 64 5f 70 6f 6c  6c 73 68 28 29 3f 32 3a  |akbd_pollsh()?2:|
00002260  31 30 3b 0a 20 20 20 20  20 20 20 20 20 20 20 20  |10;.            |
00002270  20 20 69 66 20 28 69 21  3d 31 33 36 20 26 26 20  |  if (i!=136 && |
00002280  69 21 3d 31 33 37 29 20  7b 0a 20 20 20 20 20 20  |i!=137) {.      |
00002290  20 20 20 20 20 20 20 20  20 20 62 62 63 5f 6d 6f  |          bbc_mo|
000022a0  76 65 28 73 78 2c 20 30  29 3b 0a 20 20 20 20 20  |ve(sx, 0);.     |
000022b0  20 20 20 20 20 20 20 20  20 20 20 62 62 63 5f 64  |           bbc_d|
000022c0  72 61 77 62 79 28 30 2c  20 31 30 32 34 29 3b 0a  |rawby(0, 1024);.|
000022d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000022e0  62 62 63 5f 74 61 62 28  30 2c 30 29 3b 0a 20 20  |bbc_tab(0,0);.  |
000022f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 70 72  |              pr|
00002300  69 6e 74 66 28 22 20 20  20 20 20 20 20 20 20 20  |intf("          |
00002310  20 20 20 20 20 20 20 20  20 20 20 20 20 22 29 3b  |             ");|
00002320  0a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00002330  20 62 72 65 61 6b 3b 0a  20 20 20 20 20 20 20 20  | break;.        |
00002340  20 20 20 20 20 20 7d 0a  20 20 20 20 20 20 20 20  |      }.        |
00002350  20 20 20 20 7d 0a 20 20  20 20 20 20 20 20 20 20  |    }.          |
00002360  7d 0a 20 20 20 20 20 20  20 20 20 20 62 72 65 61  |}.          brea|
00002370  6b 3b 0a 20 20 20 20 20  20 20 20 7d 0a 20 20 20  |k;.        }.   |
00002380  20 20 20 20 20 65 6c 73  65 20 69 3d 30 3b 0a 20  |     else i=0;. |
00002390  20 20 20 20 20 20 20 66  6f 72 20 28 3b 20 63 6c  |       for (; cl|
000023a0  6f 63 6b 28 29 2d 73 74  61 72 74 5f 74 69 6d 65  |ock()-start_time|
000023b0  20 3c 20 64 75 72 2a 73  2f 31 32 38 30 3b 20 29  | < dur*s/1280; )|
000023c0  3b 0a 20 20 20 20 20 20  7d 0a 20 20 20 20 20 20  |;.      }.      |
000023d0  69 66 20 28 73 3d 3d 31  32 38 30 29 20 7b 0a 20  |if (s==1280) {. |
000023e0  20 20 20 20 20 20 20 62  62 63 5f 6d 6f 76 65 28  |       bbc_move(|
000023f0  73 2d 32 2c 20 30 29 3b  0a 20 20 20 20 20 20 20  |s-2, 0);.       |
00002400  20 62 62 63 5f 64 72 61  77 62 79 28 30 2c 20 31  | bbc_drawby(0, 1|
00002410  30 32 34 29 3b 0a 20 20  20 20 20 20 7d 0a 20 20  |024);.      }.  |
00002420  20 20 20 20 69 66 20 28  69 3d 3d 31 33 29 20 62  |    if (i==13) b|
00002430  72 65 61 6b 3b 0a 20 20  20 20 7d 0a 0a 20 20 20  |reak;.    }..   |
00002440  20 72 65 73 74 6f 72 65  28 29 3b 0a 20 20 20 20  | restore();.    |
00002450  69 66 20 28 77 61 76 65  5f 62 61 73 65 29 20 66  |if (wave_base) f|
00002460  72 65 65 28 77 61 76 65  5f 62 61 73 65 29 3b 0a  |ree(wave_base);.|
00002470  0a 20 20 7d 0a 0a 20 20  72 65 74 75 72 6e 20 30  |.  }..  return 0|
00002480  3b 0a 7d 0a 1a 80 1a 82  44 65 6d 6f 31 00 00 00  |;.}.....Demo1...|
00002490  00 00 00 00 00 f1 12 00  00 69 20 7c 94 b3 7e f1  |.........i |..~.|
000024a0  12 00 00 46 fb ff ff b1  7c 4e ac 03 00 00 00 0d  |...F....|N......|
000024b0  00 0a 0c f4 20 3e 44 65  6d 6f 31 0d 00 14 05 f4  |.... >Demo1.....|
000024c0  0d 00 1e 2e f4 20 44 65  6d 6f 20 6f 66 20 68 6f  |..... Demo of ho|
000024d0  77 20 74 6f 20 61 64 64  20 61 20 6e 65 77 20 76  |w to add a new v|
000024e0  6f 69 63 65 20 67 65 6e  65 72 61 74 6f 72 0d 00  |oice generator..|
000024f0  28 30 f4 20 4d 6f 73 74  6c 79 20 63 6f 70 79 72  |(0. Mostly copyr|
00002500  69 67 68 74 20 41 63 6f  72 6e 20 28 73 65 65 20  |ight Acorn (see |
00002510  50 52 4d 20 34 2e 37 34  2d 34 2e 37 36 29 0d 00  |PRM 4.74-4.76)..|
00002520  32 05 f4 0d 00 3c 3c f4  20 4e 42 20 53 74 72 6f  |2....<<. NB Stro|
00002530  6e 67 6c 79 20 72 65 63  6f 6d 6d 65 6e 64 20 79  |ngly recommend y|
00002540  6f 75 20 63 6f 6e 6e 65  63 74 20 74 68 65 20 68  |ou connect the h|
00002550  65 61 64 70 68 6f 6e 65  20 73 6f 63 6b 65 74 0d  |eadphone socket.|
00002560  00 46 3c f4 20 20 20 20  6f 6e 20 74 68 65 20 63  |.F<.    on the c|
00002570  6f 6d 70 75 74 65 72 20  74 6f 20 61 20 68 69 2d  |omputer to a hi-|
00002580  66 69 20 61 6d 70 6c 69  66 69 65 72 20 6f 72 20  |fi amplifier or |
00002590  61 74 20 74 68 65 20 76  65 72 79 0d 00 50 27 f4  |at the very..P'.|
000025a0  20 20 20 20 6c 65 61 73  74 20 74 6f 20 61 20 70  |    least to a p|
000025b0  61 69 72 20 6f 66 20 68  65 61 64 70 68 6f 6e 65  |air of headphone|
000025c0  73 2e 0d 00 5a 3e f4 20  20 20 20 54 68 65 20 63  |s...Z>.    The c|
000025d0  6f 6d 70 75 74 65 72 27  73 20 6f 77 6e 20 69 6e  |omputer's own in|
000025e0  74 65 72 6e 61 6c 20 73  70 65 61 6b 65 72 2f 73  |ternal speaker/s|
000025f0  20 61 72 65 20 70 6f 6f  72 2c 20 71 75 69 65 74  | are poor, quiet|
00002600  0d 00 64 37 f4 20 20 20  20 61 6e 64 20 64 6f 6e  |..d7.    and don|
00002610  27 74 20 72 65 70 72 6f  64 75 63 65 20 6c 6f 77  |'t reproduce low|
00002620  20 66 72 65 71 75 65 6e  63 79 20 73 6f 75 6e 64  | frequency sound|
00002630  73 20 77 65 6c 6c 2e 0d  00 6e 05 f4 0d 00 78 05  |s well...n....x.|
00002640  3a 0d 00 82 20 de 20 57  61 76 65 54 61 62 6c 65  |:... . WaveTable|
00002650  25 20 32 35 35 2c 20 43  6f 64 65 25 20 34 30 39  |% 255, Code% 409|
00002660  35 0d 00 8c 05 3a 0d 00  96 2e f4 20 46 69 72 73  |5....:..... Firs|
00002670  74 20 77 65 20 62 75 69  6c 64 20 6f 75 72 20 73  |t we build our s|
00002680  61 6d 70 6c 65 20 61 74  20 66 75 6c 6c 20 76 6f  |ample at full vo|
00002690  6c 75 6d 65 0d 00 a0 28  c8 99 20 22 53 6f 75 6e  |lume...(.. "Soun|
000026a0  64 5f 56 6f 6c 75 6d 65  22 2c 20 31 32 37 20 b8  |d_Volume", 127 .|
000026b0  20 55 73 65 72 56 6f 6c  75 6d 65 25 0d 00 aa 10  | UserVolume%....|
000026c0  e3 20 73 25 3d 30 20 b8  20 32 35 35 0d 00 b4 41  |. s%=0 . 255...A|
000026d0  20 c8 99 20 22 53 6f 75  6e 64 5f 53 6f 75 6e 64  | .. "Sound_Sound|
000026e0  4c 6f 67 22 2c 20 26 37  66 66 66 66 66 66 66 2a  |Log", &7fffffff*|
000026f0  b5 28 32 2a af 2a 73 25  2f 32 35 36 29 20 b8 20  |.(2*.*s%/256) . |
00002700  57 61 76 65 54 61 62 6c  65 25 3f 73 25 0d 00 be  |WaveTable%?s%...|
00002710  05 ed 0d 00 c8 22 c8 99  20 22 53 6f 75 6e 64 5f  |.....".. "Sound_|
00002720  56 6f 6c 75 6d 65 22 2c  20 55 73 65 72 56 6f 6c  |Volume", UserVol|
00002730  75 6d 65 25 0d 00 d2 05  3a 0d 00 dc 15 e3 20 70  |ume%....:..... p|
00002740  61 73 73 25 3d 30 20 b8  20 32 20 88 20 32 0d 00  |ass%=0 . 2 . 2..|
00002750  e6 0c 50 25 3d 43 6f 64  65 25 0d 00 f0 0f 5b 20  |..P%=Code%....[ |
00002760  4f 50 54 20 70 61 73 73  25 0d 00 fa 06 20 3a 0d  |OPT pass%.... :.|
00002770  01 04 0f 2e 56 6f 69 63  65 42 61 73 65 25 0d 01  |....VoiceBase%..|
00002780  0e 13 20 42 20 20 20 20  20 20 20 20 46 69 6c 6c  |.. B        Fill|
00002790  25 0d 01 18 13 20 42 20  20 20 20 20 20 20 20 46  |%.... B        F|
000027a0  69 6c 6c 25 0d 01 22 15  20 42 20 20 20 20 20 20  |ill%..". B      |
000027b0  20 20 47 61 74 65 4f 6e  25 0d 01 2c 16 20 42 20  |  GateOn%..,. B |
000027c0  20 20 20 20 20 20 20 47  61 74 65 4f 66 66 25 0d  |       GateOff%.|
000027d0  01 36 17 20 42 20 20 20  20 20 20 20 20 49 6e 73  |.6. B        Ins|
000027e0  74 61 6e 63 65 25 0d 01  40 17 20 4c 44 4d 46 44  |tance%..@. LDMFD|
000027f0  20 20 20 20 31 33 21 2c  20 7b 50 43 7d 0d 01 4a  |    13!, {PC}..J|
00002800  17 20 4c 44 4d 46 44 20  20 20 20 31 33 21 2c 20  |. LDMFD    13!, |
00002810  7b 50 43 7d 0d 01 54 23  20 45 51 55 44 20 20 20  |{PC}..T# EQUD   |
00002820  20 20 56 6f 69 63 65 4e  61 6d 65 25 2d 56 6f 69  |  VoiceName%-Voi|
00002830  63 65 42 61 73 65 25 0d  01 5e 0f 2e 56 6f 69 63  |ceBase%..^..Voic|
00002840  65 4e 61 6d 65 25 0d 01  68 15 20 45 51 55 53 20  |eName%..h. EQUS |
00002850  22 57 61 76 65 56 6f 69  63 65 22 0d 01 72 0b 20  |"WaveVoice"..r. |
00002860  45 51 55 42 20 30 0d 01  7c 0a 20 41 4c 49 47 4e  |EQUB 0..|. ALIGN|
00002870  0d 01 86 06 20 3a 0d 01  90 0f 2e 4c 6f 67 41 6d  |.... :.....LogAm|
00002880  70 50 74 72 25 0d 01 9a  0b 20 45 51 55 44 20 30  |pPtr%.... EQUD 0|
00002890  0d 01 a4 0e 2e 57 61 76  65 42 61 73 65 25 0d 01  |.....WaveBase%..|
000028a0  ae 14 20 45 51 55 44 20  57 61 76 65 54 61 62 6c  |.. EQUD WaveTabl|
000028b0  65 25 0d 01 b8 06 20 3a  0d 01 c2 32 20 3a 20 20  |e%.... :...2 :  |
000028c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000028d0  20 20 20 20 20 3b 69 6e  73 74 61 6e 74 69 61 74  |     ;instantiat|
000028e0  69 6f 6e 20 63 6f 64 65  20 2d 0d 01 cc 45 20 3a  |ion code -...E :|
000028f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002900  20 20 20 20 20 20 20 3b  63 61 6c 6c 65 64 20 77  |       ;called w|
00002910  68 65 6e 20 76 6f 69 63  65 20 61 74 74 61 63 68  |hen voice attach|
00002920  65 64 20 74 6f 20 61 20  63 68 61 6e 6e 65 6c 0d  |ed to a channel.|
00002930  01 d6 2d 20 3a 20 20 20  20 20 20 20 20 20 20 20  |..- :           |
00002940  20 20 20 20 20 20 20 20  20 20 20 20 3b 53 56 43  |            ;SVC|
00002950  20 6d 6f 64 65 20 69 6e  20 75 73 65 0d 01 e0 42  | mode in use...B|
00002960  20 3a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  | :              |
00002970  20 20 20 20 20 20 20 20  20 3b 20 72 30 20 20 69  |         ; r0  i|
00002980  73 20 70 68 79 73 69 63  61 6c 20 63 68 61 6e 6e  |s physical chann|
00002990  65 6c 20 23 20 2d 20 31  20 28 30 2d 37 29 0d 01  |el # - 1 (0-7)..|
000029a0  ea 0e 2e 49 6e 73 74 61  6e 63 65 25 0d 01 f4 41  |...Instance%...A|
000029b0  20 53 54 4d 46 44 20 20  20 20 31 33 21 2c 20 7b  | STMFD    13!, {|
000029c0  30 2d 34 7d 20 20 20 20  20 3b 61 6c 6c 20 77 65  |0-4}     ;all we|
000029d0  20 64 6f 20 69 73 20 6e  6f 74 65 20 77 68 65 72  | do is note wher|
000029e0  65 20 74 68 65 20 6c 6f  67 20 61 6d 70 0d 01 fe  |e the log amp...|
000029f0  46 20 4d 4f 56 20 20 20  20 20 20 30 2c 20 23 30  |F MOV      0, #0|
00002a00  20 20 20 20 20 20 20 20  20 20 3b 74 61 62 6c 65  |          ;table|
00002a10  20 69 73 20 66 6f 72 20  75 73 65 20 62 79 20 62  | is for use by b|
00002a20  75 66 66 65 72 20 66 69  6c 6c 20 72 6f 75 74 69  |uffer fill routi|
00002a30  6e 65 73 0d 02 08 13 20  4d 4f 56 20 20 20 20 20  |nes.... MOV     |
00002a40  20 31 2c 20 23 30 0d 02  12 13 20 4d 4f 56 20 20  | 1, #0.... MOV  |
00002a50  20 20 20 20 32 2c 20 23  30 0d 02 1c 13 20 4d 4f  |    2, #0.... MO|
00002a60  56 20 20 20 20 20 20 33  2c 20 23 30 0d 02 26 13  |V      3, #0..&.|
00002a70  20 4d 4f 56 20 20 20 20  20 20 34 2c 20 23 30 0d  | MOV      4, #0.|
00002a80  02 30 20 20 53 57 49 20  20 20 20 20 20 22 58 53  |.0  SWI      "XS|
00002a90  6f 75 6e 64 5f 43 6f 6e  66 69 67 75 72 65 22 0d  |ound_Configure".|
00002aa0  02 3a 19 20 4c 44 52 56  43 20 20 20 20 30 2c 20  |.:. LDRVC    0, |
00002ab0  5b 33 2c 20 23 31 32 5d  0d 02 44 46 20 53 54 52  |[3, #12]..DF STR|
00002ac0  56 43 20 20 20 20 30 2c  20 4c 6f 67 41 6d 70 50  |VC    0, LogAmpP|
00002ad0  74 72 25 20 20 3b 70 74  72 20 74 6f 20 76 6f 6c  |tr%  ;ptr to vol|
00002ae0  75 6d 65 20 73 63 61 6c  65 64 20 6c 6f 67 20 61  |ume scaled log a|
00002af0  6d 70 6c 69 74 75 64 65  20 74 61 62 6c 65 0d 02  |mplitude table..|
00002b00  4e 44 20 53 54 52 56 53  20 20 20 20 30 2c 20 5b  |ND STRVS    0, [|
00002b10  31 33 5d 20 20 20 20 20  20 20 20 3b 73 63 61 6c  |13]        ;scal|
00002b20  69 6e 67 20 6c 6f 67 20  63 68 61 6e 6e 65 6c 20  |ing log channel |
00002b30  61 6d 70 20 62 79 20 6f  76 65 72 61 6c 6c 20 76  |amp by overall v|
00002b40  6f 6c 0d 02 58 1c 20 4c  44 4d 46 44 20 20 20 20  |ol..X. LDMFD    |
00002b50  31 33 21 2c 20 7b 30 2d  34 2c 20 50 43 7d 0d 02  |13!, {0-4, PC}..|
00002b60  62 06 20 3a 0d 02 6c 34  20 3a 20 20 20 20 20 20  |b. :..l4 :      |
00002b70  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002b80  20 3b 62 75 66 66 65 72  20 66 69 6c 6c 20 72 6f  | ;buffer fill ro|
00002b90  75 74 69 6e 65 73 20 2d  0d 02 76 44 20 3a 20 20  |utines -..vD :  |
00002ba0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002bb0  20 20 20 20 20 3b 63 6f  64 65 20 6d 75 73 74 20  |     ;code must |
00002bc0  62 65 20 72 65 2d 65 6e  74 72 61 6e 74 20 26 20  |be re-entrant & |
00002bd0  69 73 20 63 61 6c 6c 65  64 20 69 6e 0d 02 80 3e  |is called in...>|
00002be0  20 3a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  | :              |
00002bf0  20 20 20 20 20 20 20 20  20 3b 49 52 51 20 6d 6f  |         ;IRQ mo|
00002c00  64 65 20 77 69 74 68 20  69 6e 74 65 72 72 75 70  |de with interrup|
00002c10  74 73 20 65 6e 61 62 6c  65 64 0d 02 8a 34 20 3a  |ts enabled...4 :|
00002c20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002c30  20 20 20 20 20 20 20 3b  28 68 65 6e 63 65 20 72  |       ;(hence r|
00002c40  31 34 20 6e 6f 74 20 75  73 61 62 6c 65 29 0d 02  |14 not usable)..|
00002c50  94 2e 20 3a 20 20 20 20  20 20 20 20 20 20 20 20  |.. :            |
00002c60  20 20 20 20 20 20 20 20  20 20 20 3b 20 72 30 2d  |           ; r0-|
00002c70  72 38 20 61 76 61 69 6c  61 62 6c 65 0d 02 9e 2e  |r8 available....|
00002c80  20 3a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  | :              |
00002c90  20 20 20 20 20 20 20 20  20 3b 20 72 39 20 20 69  |         ; r9  i|
00002ca0  73 20 53 43 43 42 20 70  74 72 0d 02 a8 37 20 3a  |s SCCB ptr...7 :|
00002cb0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002cc0  20 20 20 20 20 20 20 3b  20 72 31 30 20 44 4d 41  |       ; r10 DMA|
00002cd0  20 62 75 66 66 65 72 20  6c 69 6d 69 74 20 2b 20  | buffer limit + |
00002ce0  31 0d 02 b2 41 20 3a 20  20 20 20 20 20 20 20 20  |1...A :         |
00002cf0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3b 20  |              ; |
00002d00  72 31 31 20 44 4d 41 20  62 75 66 66 65 72 20 69  |r11 DMA buffer i|
00002d10  6e 74 65 72 6c 65 61 66  20 69 6e 63 72 65 6d 65  |nterleaf increme|
00002d20  6e 74 0d 02 bc 36 20 3a  20 20 20 20 20 20 20 20  |nt...6 :        |
00002d30  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3b  |               ;|
00002d40  20 72 31 32 20 44 4d 41  20 62 75 66 66 65 72 20  | r12 DMA buffer |
00002d50  62 61 73 65 20 70 74 72  0d 02 c6 35 20 3a 20 20  |base ptr...5 :  |
00002d60  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002d70  20 20 20 20 20 3b 20 72  31 33 20 53 6f 75 6e 64  |     ; r13 Sound|
00002d80  20 73 79 73 74 65 6d 20  73 74 61 63 6b 0d 02 d0  | system stack...|
00002d90  06 20 3a 0d 02 da 40 2e  47 61 74 65 4f 6e 25 20  |. :...@.GateOn% |
00002da0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002db0  3b 63 61 6c 6c 65 64 20  77 68 65 6e 20 61 20 73  |;called when a s|
00002dc0  6f 75 6e 64 20 69 73 20  69 6e 69 74 69 61 6c 69  |ound is initiali|
00002dd0  73 65 64 0d 02 e4 1a 20  4c 44 52 20 20 20 20 20  |sed.... LDR     |
00002de0  20 30 2c 20 57 61 76 65  42 61 73 65 25 0d 02 ee  | 0, WaveBase%...|
00002df0  32 20 53 54 52 20 20 20  20 20 20 30 2c 20 5b 39  |2 STR      0, [9|
00002e00  2c 20 23 31 36 5d 20 20  20 20 3b 73 65 74 20 75  |, #16]    ;set u|
00002e10  70 20 61 73 20 77 6f 72  6b 20 72 65 67 20 35 0d  |p as work reg 5.|
00002e20  02 f8 1b 20 4c 44 52 20  20 20 20 20 20 30 2c 20  |... LDR      0, |
00002e30  4c 6f 67 41 6d 70 50 74  72 25 0d 03 02 32 20 53  |LogAmpPtr%...2 S|
00002e40  54 52 20 20 20 20 20 20  30 2c 20 5b 39 2c 20 23  |TR      0, [9, #|
00002e50  32 30 5d 20 20 20 20 3b  73 65 74 20 75 70 20 61  |20]    ;set up a|
00002e60  73 20 77 6f 72 6b 20 72  65 67 20 36 0d 03 0c 06  |s work reg 6....|
00002e70  20 3a 0d 03 16 45 2e 46  69 6c 6c 25 20 20 20 20  | :...E.Fill%    |
00002e80  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3b  |               ;|
00002e90  63 61 6c 6c 65 64 20 64  75 72 69 6e 67 20 73 6f  |called during so|
00002ea0  75 6e 64 69 6e 67 20 6f  72 20 77 68 65 6e 20 73  |unding or when s|
00002eb0  74 61 72 74 69 6e 67 0d  03 20 32 20 4c 44 4d 49  |tarting.. 2 LDMI|
00002ec0  41 20 20 20 20 39 2c 20  7b 31 2d 36 7d 20 20 20  |A    9, {1-6}   |
00002ed0  20 20 20 20 3b 61 20 6e  65 77 20 73 6f 75 6e 64  |    ;a new sound|
00002ee0  20 73 6d 6f 6f 74 68 6c  79 0d 03 2a 16 20 80 20  | smoothly..*. . |
00002ef0  20 20 20 20 20 31 2c 20  31 2c 20 23 26 37 66 0d  |     1, 1, #&7f.|
00002f00  03 34 46 20 20 20 20 20  20 20 20 20 20 20 20 20  |.4F             |
00002f10  20 20 20 20 20 20 20 20  20 20 20 20 3b 20 72 31  |            ; r1|
00002f20  20 6c 6f 67 20 61 6d 70  20 28 30 2d 31 32 37 29  | log amp (0-127)|
00002f30  2c 20 20 72 32 20 70 69  74 63 68 20 70 68 61 73  |,  r2 pitch phas|
00002f40  65 20 61 63 63 0d 03 3e  3f 20 20 20 20 20 20 20  |e acc..>?       |
00002f50  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002f60  20 20 3b 20 72 33 20 74  69 6d 62 72 65 20 70 68  |  ; r3 timbre ph|
00002f70  61 73 65 20 61 63 63 2c  20 72 34 20 64 75 72 61  |ase acc, r4 dura|
00002f80  74 69 6f 6e 0d 03 48 45  20 20 20 20 20 20 20 20  |tion..HE        |
00002f90  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002fa0  20 3b 20 72 35 20 77 61  76 65 74 61 62 6c 65 20  | ; r5 wavetable |
00002fb0  62 61 73 65 2c 20 20 20  72 36 20 61 6d 70 20 74  |base,   r6 amp t|
00002fc0  61 62 6c 65 20 62 61 73  65 0d 03 52 44 20 20 20  |able base..RD   |
00002fd0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002fe0  20 20 20 20 20 20 20 20  20 20 20 3b 63 6f 6e 76  |           ;conv|
00002ff0  65 72 74 20 72 31 20 2d  3e 20 56 49 44 43 20 66  |ert r1 -> VIDC f|
00003000  6f 72 6d 61 74 20 6c 6f  67 20 61 6d 70 0d 03 5c  |ormat log amp..\|
00003010  44 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |D               |
00003020  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3b  |               ;|
00003030  28 68 61 73 20 73 69 67  6e 20 62 69 74 20 69 6e  |(has sign bit in|
00003040  20 62 30 29 20 61 6e 64  20 74 68 65 6e 20 67 65  | b0) and then ge|
00003050  74 0d 03 66 43 20 4c 44  52 42 20 20 20 20 20 31  |t..fC LDRB     1|
00003060  2c 20 5b 36 2c 20 31 2c  20 4c 53 4c 20 23 31 5d  |, [6, 1, LSL #1]|
00003070  20 20 20 3b 6c 6f 67 20  61 6d 70 20 73 63 61 6c  |   ;log amp scal|
00003080  65 64 20 62 79 20 6f 76  65 72 61 6c 6c 20 76 6f  |ed by overall vo|
00003090  6c 75 6d 65 0d 03 70 39  20 4d 4f 56 20 20 20 20  |lume..p9 MOV    |
000030a0  20 20 31 2c 20 31 2c 20  4c 53 52 20 23 31 20 20  |  1, 1, LSR #1  |
000030b0  20 20 20 20 20 20 3b 6e  6f 77 20 6d 6f 76 65 20  |      ;now move |
000030c0  73 69 67 6e 20 62 69 74  20 62 61 63 6b 0d 03 7a  |sign bit back..z|
000030d0  18 20 52 53 42 20 20 20  20 20 20 31 2c 20 31 2c  |. RSB      1, 1,|
000030e0  20 23 31 32 37 0d 03 84  0e 2e 46 69 6c 6c 4c 6f  | #127.....FillLo|
000030f0  6f 70 25 0d 03 8e 39 20  41 44 44 20 20 20 20 20  |op%...9 ADD     |
00003100  20 32 2c 20 32 2c 20 32  2c 20 4c 53 4c 20 23 31  | 2, 2, 2, LSL #1|
00003110  36 20 20 20 20 3b 61 64  76 61 6e 63 65 20 77 61  |6    ;advance wa|
00003120  76 65 66 6f 72 6d 20 70  68 61 73 65 0d 03 98 32  |veform phase...2|
00003130  20 4c 44 52 42 20 20 20  20 20 30 2c 20 5b 35 2c  | LDRB     0, [5,|
00003140  20 32 2c 20 4c 53 52 20  23 32 34 5d 20 20 3b 67  | 2, LSR #24]  ;g|
00003150  65 74 20 77 61 76 65 20  73 61 6d 70 6c 65 0d 03  |et wave sample..|
00003160  a2 45 20 53 55 42 53 20  20 20 20 20 30 2c 20 30  |.E SUBS     0, 0|
00003170  2c 20 31 2c 20 4c 53 4c  20 23 31 20 20 20 20 20  |, 1, LSL #1     |
00003180  3b 73 63 61 6c 65 20 61  6d 70 20 62 79 20 63 68  |;scale amp by ch|
00003190  61 6e 6e 65 6c 20 26 20  6f 76 65 72 61 6c 6c 20  |annel & overall |
000031a0  76 6f 6c 0d 03 ac 38 20  4d 4f 56 4d 49 20 20 20  |vol...8 MOVMI   |
000031b0  20 30 2c 20 23 30 20 20  20 20 20 20 20 20 20 20  | 0, #0          |
000031c0  20 20 20 20 20 3b 63 6f  72 72 65 63 74 20 66 6f  |     ;correct fo|
000031d0  72 20 75 6e 64 65 72 66  6c 6f 77 0d 03 b6 32 20  |r underflow...2 |
000031e0  53 54 52 42 20 20 20 20  20 30 2c 20 5b 31 32 5d  |STRB     0, [12]|
000031f0  2c 20 31 31 20 20 20 20  20 20 20 20 20 3b 67 65  |, 11         ;ge|
00003200  6e 65 72 61 74 65 20 6f  75 74 70 75 74 0d 03 c0  |nerate output...|
00003210  3b 20 41 44 44 20 20 20  20 20 20 32 2c 20 32 2c  |; ADD      2, 2,|
00003220  20 32 2c 20 4c 53 4c 20  23 31 36 20 20 20 20 3b  | 2, LSL #16    ;|
00003230  72 65 70 65 61 74 20 69  6e 20 6c 69 6e 65 20 6f  |repeat in line o|
00003240  6e 63 65 20 6d 6f 72 65  0d 03 ca 20 20 4c 44 52  |nce more...  LDR|
00003250  42 20 20 20 20 20 30 2c  20 5b 35 2c 20 32 2c 20  |B     0, [5, 2, |
00003260  4c 53 52 20 23 32 34 5d  0d 03 d4 1d 20 53 55 42  |LSR #24].... SUB|
00003270  53 20 20 20 20 20 30 2c  20 30 2c 20 31 2c 20 4c  |S     0, 0, 1, L|
00003280  53 4c 20 23 31 0d 03 de  13 20 4d 4f 56 4d 49 20  |SL #1.... MOVMI |
00003290  20 20 20 30 2c 20 23 30  0d 03 e8 19 20 53 54 52  |   0, #0.... STR|
000032a0  42 20 20 20 20 20 30 2c  20 5b 31 32 5d 2c 20 31  |B     0, [12], 1|
000032b0  31 0d 03 f2 14 20 43 4d  50 20 20 20 20 20 20 31  |1.... CMP      1|
000032c0  32 2c 20 31 30 0d 03 fc  3a 20 42 4c 54 20 20 20  |2, 10...: BLT   |
000032d0  20 20 20 46 69 6c 6c 4c  6f 6f 70 25 20 20 20 20  |   FillLoop%    |
000032e0  20 20 20 20 20 20 20 3b  6c 6f 6f 70 20 69 66 20  |       ;loop if |
000032f0  6e 6f 74 20 62 75 66 66  65 72 20 66 75 6c 6c 0d  |not buffer full.|
00003300  04 06 06 20 3a 0d 04 10  3b 20 53 55 42 53 20 20  |... :...; SUBS  |
00003310  20 20 20 34 2c 20 34 2c  20 23 31 20 20 20 20 20  |   4, 4, #1     |
00003320  20 20 20 20 20 20 20 3b  64 65 63 72 65 6d 65 6e  |       ;decremen|
00003330  74 20 63 65 6e 74 69 73  65 63 20 63 6f 75 6e 74  |t centisec count|
00003340  0d 04 1a 3e 20 53 54 4d  49 42 20 20 20 20 39 2c  |...> STMIB    9,|
00003350  20 7b 32 2d 35 7d 20 20  20 20 20 20 20 20 20 20  | {2-5}          |
00003360  20 20 3b 73 61 76 65 20  72 65 67 69 73 74 65 72  |  ;save register|
00003370  73 20 62 61 63 6b 20 74  6f 20 53 43 43 42 0d 04  |s back to SCCB..|
00003380  24 46 20 4d 4f 56 50 4c  20 20 20 20 30 2c 20 23  |$F MOVPL    0, #|
00003390  25 30 30 30 30 31 30 30  30 20 20 20 20 20 20 20  |%00001000       |
000033a0  3b 76 6f 69 63 65 20 61  63 74 69 76 65 20 69 66  |;voice active if|
000033b0  20 73 74 69 6c 6c 20 64  75 72 61 74 69 6f 6e 20  | still duration |
000033c0  6c 65 66 74 0d 04 2e 33  20 4d 4f 56 4d 49 20 20  |left...3 MOVMI  |
000033d0  20 20 30 2c 20 23 25 30  30 30 30 30 30 31 30 20  |  0, #%00000010 |
000033e0  20 20 20 20 20 20 3b 65  6c 73 65 20 66 6f 72 63  |      ;else forc|
000033f0  65 20 66 6c 75 73 68 0d  04 38 17 20 4c 44 4d 46  |e flush..8. LDMF|
00003400  44 20 20 20 20 31 33 21  2c 20 7b 50 43 7d 0d 04  |D    13!, {PC}..|
00003410  42 06 20 3a 0d 04 4c 43  2e 47 61 74 65 4f 66 66  |B. :..LC.GateOff|
00003420  25 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |%               |
00003430  20 20 20 20 20 20 3b 63  61 6c 6c 65 64 20 74 6f  |      ;called to|
00003440  20 65 6e 64 20 73 6f 75  6e 64 69 6e 67 20 6f 66  | end sounding of|
00003450  20 61 20 6e 6f 74 65 0d  04 56 13 20 4d 4f 56 20  | a note..V. MOV |
00003460  20 20 20 20 20 30 2c 20  23 30 0d 04 60 0f 2e 46  |     0, #0..`..F|
00003470  6c 75 73 68 4c 6f 6f 70  25 0d 04 6a 19 20 53 54  |lushLoop%..j. ST|
00003480  52 42 20 20 20 20 20 30  2c 20 5b 31 32 5d 2c 20  |RB     0, [12], |
00003490  31 31 0d 04 74 19 20 53  54 52 42 20 20 20 20 20  |11..t. STRB     |
000034a0  30 2c 20 5b 31 32 5d 2c  20 31 31 0d 04 7e 14 20  |0, [12], 11..~. |
000034b0  43 4d 50 20 20 20 20 20  20 31 32 2c 20 31 30 0d  |CMP      12, 10.|
000034c0  04 88 18 20 42 4c 54 20  20 20 20 20 20 46 6c 75  |... BLT      Flu|
000034d0  73 68 4c 6f 6f 70 25 0d  04 92 44 20 4d 4f 56 20  |shLoop%...D MOV |
000034e0  20 20 20 20 20 30 2c 20  23 25 30 30 30 30 30 30  |     0, #%000000|
000034f0  30 31 20 20 20 20 20 20  20 3b 73 65 74 20 66 6c  |01       ;set fl|
00003500  61 67 20 74 6f 20 66 6c  75 73 68 20 6f 6e 65 20  |ag to flush one |
00003510  6d 6f 72 65 20 62 75 66  66 65 72 0d 04 9c 17 20  |more buffer.... |
00003520  4c 44 4d 46 44 20 20 20  20 31 33 21 2c 20 7b 50  |LDMFD    13!, {P|
00003530  43 7d 0d 04 a6 05 5d 0d  04 b0 05 ed 0d 04 ba 05  |C}....].........|
00003540  3a 0d 04 c4 12 de 20 4f  6c 64 56 6f 69 63 65 25  |:..... OldVoice%|
00003550  28 38 29 0d 04 ce 33 c8  99 20 22 53 6f 75 6e 64  |(8)...3.. "Sound|
00003560  5f 49 6e 73 74 61 6c 6c  56 6f 69 63 65 22 2c 20  |_InstallVoice", |
00003570  56 6f 69 63 65 42 61 73  65 25 2c 30 20 b8 20 2c  |VoiceBase%,0 . ,|
00003580  56 6f 69 63 65 25 0d 04  d8 0e e3 20 76 25 3d 31  |Voice%..... v%=1|
00003590  20 b8 20 38 0d 04 e2 38  20 c8 99 20 22 53 6f 75  | . 8...8 .. "Sou|
000035a0  6e 64 5f 41 74 74 61 63  68 56 6f 69 63 65 22 2c  |nd_AttachVoice",|
000035b0  20 76 25 2c 20 56 6f 69  63 65 25 20 b8 20 2c 4f  | v%, Voice% . ,O|
000035c0  6c 64 56 6f 69 63 65 25  28 76 25 29 0d 04 ec 05  |ldVoice%(v%)....|
000035d0  ed 0d 04 f6 05 3a 0d 05  00 17 ee 20 85 20 f2 52  |.....:..... . .R|
000035e0  65 73 74 6f 72 65 53 6f  75 6e 64 3a e0 0d 05 0a  |estoreSound:....|
000035f0  05 3a 0d 05 14 1b c8 99  20 22 53 6f 75 6e 64 5f  |.:...... "Sound_|
00003600  43 6f 6e 66 69 67 75 72  65 22 2c 20 38 0d 05 1e  |Configure", 8...|
00003610  0b 2a 56 6f 69 63 65 73  0d 05 28 15 d4 20 31 2c  |.*Voices..(.. 1,|
00003620  20 26 31 37 46 2c 20 35  33 2c 20 31 30 0d 05 32  | &17F, 53, 10..2|
00003630  34 f1 27 27 22 61 6e 79  20 6b 65 79 20 74 6f 20  |4.''"any key to |
00003640  6d 61 6b 65 20 61 20 6e  6f 69 73 65 2c 20 3c 45  |make a noise, <E|
00003650  53 43 41 50 45 3e 20 74  6f 20 66 69 6e 69 73 68  |SCAPE> to finish|
00003660  22 0d 05 3c 05 3a 0d 05  46 08 43 25 3d 31 0d 05  |"..<.:..F.C%=1..|
00003670  50 05 f5 0d 05 5a 0c 20  4b 25 3d a6 28 31 29 0d  |P....Z. K%=.(1).|
00003680  05 64 0d 20 e7 20 4b 25  3e 30 20 8c 0d 05 6e 10  |.d. . K%>0 ...n.|
00003690  20 20 f1 20 c3 4b 25 3b  22 20 22 3b 0d 05 78 19  |  . .K%;" ";..x.|
000036a0  20 20 d4 20 43 25 2c 20  26 31 37 46 2c 20 4b 25  |  . C%, &17F, K%|
000036b0  2c 20 31 30 30 0d 05 82  17 20 20 43 25 2b 3d 31  |, 100....  C%+=1|
000036c0  3a e7 20 43 25 3e 38 20  43 25 3d 31 0d 05 8c 06  |:. C%>8 C%=1....|
000036d0  20 cd 0d 05 96 07 fd 20  30 0d 05 a0 05 3a 0d 05  | ...... 0....:..|
000036e0  aa 13 dd 20 f2 52 65 73  74 6f 72 65 53 6f 75 6e  |... .RestoreSoun|
000036f0  64 0d 05 b4 0a 20 ee 20  85 20 87 0d 05 be 0a 20  |d.... . . ..... |
00003700  f6 3a f1 20 9e 0d 05 c8  23 20 c8 99 20 22 53 6f  |.:. ....# .. "So|
00003710  75 6e 64 5f 52 65 6d 6f  76 65 56 6f 69 63 65 22  |und_RemoveVoice"|
00003720  2c 2c 56 6f 69 63 65 25  0d 05 d2 0f 20 e3 20 76  |,,Voice%.... . v|
00003730  25 3d 31 20 b8 20 38 0d  05 dc 2f 20 20 c8 99 20  |%=1 . 8.../  .. |
00003740  22 53 6f 75 6e 64 5f 41  74 74 61 63 68 56 6f 69  |"Sound_AttachVoi|
00003750  63 65 22 2c 20 76 25 2c  20 4f 6c 64 56 6f 69 63  |ce", v%, OldVoic|
00003760  65 25 28 76 25 29 0d 05  e6 06 20 ed 0d 05 f0 1b  |e%(v%).... .....|
00003770  c8 99 20 22 53 6f 75 6e  64 5f 43 6f 6e 66 69 67  |.. "Sound_Config|
00003780  75 72 65 22 2c 20 31 0d  05 fa 0b 2a 56 6f 69 63  |ure", 1....*Voic|
00003790  65 73 0d 06 04 07 f1 27  27 0d 06 0e 05 e1 0d ff  |es.....''.......|
000037a0  1a 82 44 65 6d 6f 32 00  00 00 00 00 00 00 00 9f  |..Demo2.........|
000037b0  02 00 00 6e 20 bc 65 90  74 9f 02 00 00 46 fb ff  |...n .e.t....F..|
000037c0  ff 32 a0 c1 ae 03 00 00  00 0d 00 0a 0b eb 20 a4  |.2............ .|
000037d0  6d 6f 64 65 0d 00 14 05  3a 0d 00 1e 05 f5 0d 00  |mode....:.......|
000037e0  28 1e 20 e8 20 22 6c 61  6d 62 64 61 20 6d 69 6e  |(. . "lambda min|
000037f0  20 28 30 2d 34 29 22 3b  6c 6d 69 6e 0d 00 32 1e  | (0-4)";lmin..2.|
00003800  20 e8 20 22 6c 61 6d 62  64 61 20 6d 61 78 20 28  | . "lambda max (|
00003810  30 2d 34 29 22 3b 6c 6d  61 78 0d 00 3c 06 20 3a  |0-4)";lmax..<. :|
00003820  0d 00 46 0a 20 78 3d 30  2e 35 0d 00 50 0b 20 6c  |..F. x=0.5..P. l|
00003830  3d 6c 6d 61 78 0d 00 5a  12 20 78 6d 69 6e 3d 31  |=lmax..Z. xmin=1|
00003840  3a 78 6d 61 78 3d 30 0d  00 64 11 20 e3 20 63 25  |:xmax=0..d. . c%|
00003850  3d 31 20 b8 20 31 30 30  0d 00 6e 11 20 20 78 3d  |=1 . 100..n.  x=|
00003860  6c 2a 78 2a 28 31 2d 78  29 0d 00 78 06 20 ed 0d  |l*x*(1-x)..x. ..|
00003870  00 82 11 20 e3 20 63 25  3d 31 20 b8 20 31 30 30  |... . c%=1 . 100|
00003880  0d 00 8c 11 20 20 78 3d  6c 2a 78 2a 28 31 2d 78  |....  x=l*x*(1-x|
00003890  29 0d 00 96 15 20 20 e7  20 78 3c 78 6d 69 6e 20  |)....  . x<xmin |
000038a0  78 6d 69 6e 3d 78 0d 00  a0 15 20 20 e7 20 78 3e  |xmin=x....  . x>|
000038b0  78 6d 61 78 20 78 6d 61  78 3d 78 0d 00 aa 06 20  |xmax xmax=x.... |
000038c0  ed 0d 00 b4 1a 20 6c 69  6e 63 3d 28 6c 6d 61 78  |..... linc=(lmax|
000038d0  2d 6c 6d 69 6e 29 2f 31  32 38 30 0d 00 be 1c 20  |-lmin)/1280.... |
000038e0  6c 73 63 61 6c 65 3d 31  32 38 30 2f 28 6c 6d 61  |lscale=1280/(lma|
000038f0  78 2d 6c 6d 69 6e 29 0d  00 c8 1e 20 e7 20 78 6d  |x-lmin).... . xm|
00003900  61 78 3d 78 6d 69 6e 20  78 6d 69 6e 3d 30 3a 78  |ax=xmin xmin=0:x|
00003910  6d 61 78 3d 31 0d 00 d2  1c 20 78 73 63 61 6c 65  |max=1.... xscale|
00003920  3d 31 30 32 34 2f 28 78  6d 61 78 2d 78 6d 69 6e  |=1024/(xmax-xmin|
00003930  29 0d 00 dc 06 20 3a 0d  00 e6 06 20 db 0d 00 f0  |).... :.... ....|
00003940  1b 20 e3 20 6c 3d 6c 6d  69 6e 20 b8 20 6c 6d 61  |. . l=lmin . lma|
00003950  78 20 88 20 6c 69 6e 63  0d 00 fa 17 20 20 75 3d  |x . linc....  u=|
00003960  28 6c 2d 6c 6d 69 6e 29  2a 6c 73 63 61 6c 65 0d  |(l-lmin)*lscale.|
00003970  01 04 0b 20 20 78 3d 30  2e 35 0d 01 0e 12 20 20  |...  x=0.5....  |
00003980  e3 20 63 25 3d 31 20 b8  20 31 30 30 0d 01 18 12  |. c%=1 . 100....|
00003990  20 20 20 78 3d 6c 2a 78  2a 28 31 2d 78 29 0d 01  |   x=l*x*(1-x)..|
000039a0  22 07 20 20 ed 0d 01 2c  12 20 20 e3 20 63 25 3d  |".  ...,.  . c%=|
000039b0  31 20 b8 20 31 30 30 0d  01 36 12 20 20 20 78 3d  |1 . 100..6.   x=|
000039c0  6c 2a 78 2a 28 31 2d 78  29 0d 01 40 1f 20 20 20  |l*x*(1-x)..@.   |
000039d0  f0 20 36 39 2c 20 75 2c  20 28 78 2d 78 6d 69 6e  |. 69, u, (x-xmin|
000039e0  29 2a 78 73 63 61 6c 65  0d 01 4a 07 20 20 ed 0d  |)*xscale..J.  ..|
000039f0  01 54 06 20 ed 0d 01 5e  07 fd 20 a3 0d 01 68 05  |.T. ...^.. ...h.|
00003a00  3a 0d 01 72 05 e0 0d 01  7c 05 3a 0d 01 86 0b dd  |:..r....|.:.....|
00003a10  20 a4 6d 6f 64 65 0d 01  90 08 ea 20 76 25 0d 01  | .mode..... v%..|
00003a20  9a 17 c8 99 20 36 2c 31  36 31 2c 31 33 33 20 b8  |.... 6,161,133 .|
00003a30  20 2c 2c 76 25 0d 01 a4  11 76 25 20 3d 20 76 25  | ,,v%....v% = v%|
00003a40  2f 34 20 80 20 33 0d 01  ae 19 e7 20 28 76 25 3d  |/4 . 3..... (v%=|
00003a50  30 20 84 20 76 25 3d 32  29 20 8c 20 3d 31 32 0d  |0 . v%=2) . =12.|
00003a60  01 b8 07 3d 32 30 0d ff  1a 82 44 65 6d 6f 33 00  |...=20....Demo3.|
00003a70  00 00 00 00 00 00 00 4f  56 00 00 a2 20 01 11 d9  |.......OV... ...|
00003a80  52 4f 56 00 00 46 f8 ff  ff f3 2e c3 c7 03 00 00  |ROV..F..........|
00003a90  00 fc 14 00 eb 00 00 00  fb 0c 00 00 eb 61 24 00  |.............a$.|
00003aa0  eb 11 00 00 ef 2c 97 00  00 34 0f 00 00 00 00 00  |.....,...4......|
00003ab0  00 08 22 00 00 02 00 00  00 00 80 00 00 00 00 00  |..".............|
00003ac0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00003ad0  00 ff b3 ce e3 08 b0 8b  e2 0f 00 9b e8 00 00 53  |...............S|
00003ae0  e3 0e f0 b0 d1 14 b0 4b  e2 00 b0 8b e0 01 b0 8b  |.......K........|
00003af0  e0 00 00 a0 e3 00 10 a0  e3 00 20 a0 e3 00 40 a0  |.......... ...@.|
00003b00  e3 17 00 ab e8 10 30 53  e2 fc ff ff ca 0e f0 b0  |......0S........|
00003b10  e1 df 14 00 ea 43 d3 08  59 18 e5 44 59 45 63 01  |.....C..Y..DYEc.|
00003b20  dc d3 95 00 e2 e4 2c 5b  8d 5c f1 f2 06 c8 55 f4  |......,[.\....U.|
00003b30  24 59 c5 88 00 67 e2 ae  f2 95 5e 08 5b 86 5e 11  |$Y...g....^.[.^.|
00003b40  0a e6 d3 25 98 03 1a 29  72 eb f3 2e ae 5f 26 a3  |...%...)r...._&.|
00003b50  09 a7 9a de fe bf 2a 97  ce c9 a4 67 3b b9 2e bc  |......*....g;...|
00003b60  62 66 dd 69 93 de a1 c4  85 c7 44 fb ec 32 5d f4  |bf.i......D..2].|
00003b70  68 ce 40 18 03 b6 43 f5  fa cb ba c0 99 33 36 99  |h.@...C......36.|
00003b80  72 5f a2 3e fb 6f 15 f2  9b de eb 67 2a bc 2f ac  |r_.>.o.....g*./.|
00003b90  a4 c3 92 9e ec 65 9e ec  62 2c 37 d5 40 61 cd a3  |.....e..b,7.@a..|
00003ba0  cb ec c5 50 24 ef fa f4  9c b1 f2 b4 5c 2c 58 de  |...P$.......\,X.|
00003bb0  2d 04 ef d5 7c 5f cc 5d  01 55 59 4e 50 00 8c d5  |-...|_.].UYNP...|
00003bc0  40 45 cc 22 ee 74 ec 55  3d 50 ce f8 cc cd 69 0f  |@E.".t.U=P....i.|
00003bd0  db 62 66 dd 69 93 de 63  66 dd 40 5d cd a4 83 ec  |.bf.i..cf.@]....|
00003be0  c5 a3 11 ee e5 a4 1b a9  b2 72 22 a3 02 7c 9a 95  |.........r"..|..|
00003bf0  38 09 e2 66 02 34 d4 01  61 03 ea 43 50 36 99 25  |8..f.4..a..CP6.%|
00003c00  01 a8 94 0d 50 d9 72 05  ea be bc bb 01 20 71 4e  |....P.r...... qN|
00003c10  5b 9a bb 03 85 00 75 33  00 74 00 fa 33 5b 01 84  |[.....u3.t..3[..|
00003c20  b3 02 86 0c 77 33 a3 24  88 4e 03 30 43 4b bc 73  |....w3.$.N.0CK.s|
00003c30  be 5b be bb 50 0e 1d 92  0e 79 5b 3b 8b 0e 88 c3  |.[..P....y[;....|
00003c40  f1 02 cf e3 5f 2b ba 3a  62 4a 03 de fd bf 2a 9e  |...._+.:bJ....*.|
00003c50  ce ff 67 ab b1 2e fc c1  00 00 d5 c3 70 bd 04 1a  |..g.........p...|
00003c60  24 63 45 6e b3 e2 e5 0f  7c dc c3 f9 ba 04 63 02  |$cEn....|.....c.|
00003c70  cc 54 1d b2 9e 7e 60 0c  b2 6e b5 eb e5 80 7c cc  |.T...~`..n....|.|
00003c80  f8 0f ad 66 69 dd 50 59  97 5b 69 94 de 62 66 dd  |...fi.PY.[i..bf.|
00003c90  94 2c ed 92 69 ed 66 69  dd 5d 62 dd 7e ec 40 5c  |.,..i.fi.]b.~.@\|
00003ca0  a6 ed a6 5c f6 8a dd 2d  04 1d d5 34 09 a6 2e 74  |...\...-...4...t|
00003cb0  e2 69 65 23 72 4b 03 de  fd bf a0 94 ee 2b e8 cf  |.ie#rK.......+..|
00003cc0  fe 67 ab c0 cf bb c7 cb  bb 2f 48 ce 0d f2 b7 5c  |.g......./H....\|
00003cd0  0b f2 b6 5c 09 f2 bb 5c  07 f2 bc 5c 05 f2 bd 5c  |...\...\...\...\|
00003ce0  03 f2 be 5c 01 f2 bf 5c  ff f1 c1 5c c2 50 05 c5  |...\...\...\.P..|
00003cf0  07 1d fc f1 45 3d f2 c4  5c fb 00 49 c5 2b f7 ba  |....E=..\..I.+..|
00003d00  2c 22 bb 08 4a 01 1e 54  ad de f1 d5 f4 5c 18 f2  |,"..J..T.....\..|
00003d10  55 f4 a8 cd 1b 28 ea e7  f1 c3 5c dc 2c ed 38 0a  |U....(....\.,.8.|
00003d20  00 a2 38 38 aa 20 90 38  2a 20 8f 68 96 22 6e 93  |..88. .8* .h."n.|
00003d30  6f ac 22 39 20 a2 a2 61  a2 43 9e 22 73 42 02 72  |o."9 ..a.C."sB.r|
00003d40  1e 41 fb 32 a5 61 bd a2  65 3c 6c 00 33 6e 48 9f  |.A.2.a..e<l.3nH.|
00003d50  3a 70 56 20 20 33 65 e4  65 05 23 8e 79 aa 61 38  |:pV  3e.e.#.y.a8|
00003d60  6c 17 33 74 16 65 e0 32  79 43 02 68 a9 41 52 23  |l.3t.e.2yC.h.AR#|
00003d70  74 61 70 24 33 02 73 44  92 63 f7 20 46 23 65 95  |tap$3.sD.c. F#e.|
00003d80  43 2a a3 74 49 a3 2c 00  91 2a 9a 20 f0 a2 72 39  |C*.tI.,..*. ..r9|
00003d90  43 3a 74 0f 75 08 23 66  d7 20 ef 22 20 41 69 57  |C:t.u.#f. ." AiW|
00003da0  33 28 04 73 a5 32 43 69  ba a2 20 60 73 12 33 b3  |3(.s.2Ci.. `s.3.|
00003db0  20 5a a3 20 69 74 02 33  3d 90 aa 6f 45 72 0c 23  | Z. it.3=..oEr.#|
00003dc0  7e a0 77 94 6f 2c 23 6e  29 62 de 32 20 6c 74 3b  |~.w.o,#n)b.2 lt;|
00003dd0  33 72 66 43 3a 6c 10 6d  33 33 66 63 6e 28 33 74  |3rfC:l.m33fcn(3t|
00003de0  e4 96 2a 29 43 79 2a 66  02 a9 ac 76 aa 3e 92 aa  |..*)Cy*f...v.>..|
00003df0  74 25 6b 3a 63 59 42 3a  6f 47 72 3a 20 c0 20 01  |t%k:cYB:oGr: . .|
00003e00  23 72 91 30 2a 23 a5 33  a6 a2 bc 6c 8e a2 61 13  |#r.0*#.3...l..a.|
00003e10  20 97 32 20 bf 65 5e 23  25 01 0e 29 43 b4 58 04  | .2 .e^#%..)C.X.|
00003e20  22 6c df 74 14 23 61 18  74 44 33 c2 7a aa 25 e5  |"l.t.#a.tD3.z.%.|
00003e30  20 9b 22 20 51 b4 3a 9e  72 de a2 20 42 ad 3a 6e  | ." Q.:.r.. B.:n|
00003e40  3d 9f 3a 3a 88 aa 7d aa  aa 7a 20 f9 a2 2c 05 c2  |=.::..}..z ..,..|
00003e50  3a 75 dd 65 37 23 21 00  67 23 23 f4 2d cd 8c e7  |:u.e7#!.g##.-...|
00003e60  4f 47 42 1b f4 ed b4 59  29 5b 6f 9c dd b8 02 83  |OGB....Y)[o.....|
00003e70  c4 96 33 bf 36 2f 67 f4  fb 2b ce 55 f7 ba ba 07  |..3.6/g..+.U....|
00003e80  cb 97 32 bf 35 bb fc 18  11 ea 6f f2 f7 fa 2e 04  |..2.5.....o.....|
00003e90  07 6b ef f0 ff b9 ba cd  97 31 bf 34 b5 fc ed 23  |.k.......1.4...#|
00003ea0  fe ea 84 10 f6 dc 10 12  a6 05 f2 bf ef f0 ff 2d  |...............-|
00003eb0  00 23 d5 a8 0c 03 e6 66  5c 04 a2 ac 76 aa 3e 92  |.#.....f\...v.>.|
00003ec0  aa 87 72 30 a3 31 bc 6f  b5 22 30 43 31 be 32 73  |..r0.1.o."0C1.2s|
00003ed0  c1 75 f1 22 04 30 b6 92  76 66 aa 90 ac aa 6d a1  |.u.".0..vf....m.|
00003ee0  3d 2a 0e 58 9a 00 ce 25  16 22 66 a0 ac 76 aa 3d  |=*.X...%."f..v.=|
00003ef0  90 aa 58 6d ae a2 61 db  0e 29 09 76 e8 92 de fc  |..Xm..a..).v....|
00003f00  bf 2a 9d ce fd 67 ab 92  a8 5e e5 fa a4 59 d5 66  |.*...g...^...Y.f|
00003f10  69 dd 45 83 c1 c4 f8 ea  40 5c 62 ec a3 5c ac 03  |i.E.....@\b..\..|
00003f20  6c 5d 04 ef c8 ff 34 92  04 54 e4 94 2c 47 b5 50  |l]....4..T..,G.P|
00003f30  69 dd 40 45 cc a3 e9 ea  c5 7c 53 ec c5 0e 08 a9  |i.@E.....|S.....|
00003f40  b4 30 38 59 f5 66 69 dd  93 62 ed 66 69 dd 5d 63  |.08Y.fi..b.fi.]c|
00003f50  dd b4 ea 40 5c 42 d0 90  5e 54 04 58 09 22 6d 23  |...@\B..^T.X."m#|
00003f60  14 39 fb f0 a0 de eb e8  e9 ff 25 62 2a 4c fc 66  |.9........%b*L.f|
00003f70  ab 09 65 54 64 44 43 5f  cd 44 24 a2 5c 40 24 fa  |..eTdDC_.D$.\@$.|
00003f80  c3 54 f4 77 cf 90 36 99  5c 01 43 05 66 f4 b0 ee  |.T.w..6.\.C.f...|
00003f90  d4 0c 6f f4 2c 13 ed 14  2a 52 92 9f ec 44 90 a0  |..o.,...*R...D..|
00003fa0  4c 99 76 cc 8f 09 7c c4  7d 44 fc f4 a3 cc 8f 36  |L.v...|.}D.....6|
00003fb0  99 03 a6 98 5c 24 26 01  ca 53 dc ed a1 4c 40 26  |....\$&..S...L@&|
00003fc0  f4 5d 38 26 2d 5d 3c 26  40 8e 54 4c 90 26 ee 45  |.]8&-]<&@.TL.&.E|
00003fd0  7f c4 76 4c 40 5e cd fe  eb 81 ea 55 06 c8 ea e4  |..vL@^.....U....|
00003fe0  a2 ef cd 50 52 40 51 55  2e d1 fb d8 d0 dd e4 00  |...PR@QU........|
00003ff0  6f d4 ec 70 dd 34 58 60  5e 2d 82 fb da d4 dd 82  |o..p.4X`^-......|
00004000  28 28 b5 2c 05 c6 f4 12  a3 cd 5d 00 cd dd 2e 92  |((.,......].....|
00004010  c0 62 68 dd 6d 2f df 3b  74 cd d9 e4 7d 5b 81 93  |.bh.m/.;t...}[..|
00004020  bb bf d6 e4 b5 01 af 87  4c 74 f5 da 7d 3b bc 93  |........Lt..};..|
00004030  ce e4 b5 cb e4 81 5b 00  1b bf 4b 01 b3 f4 3c 8e  |......[...K...<.|
00004040  01 b7 b3 ca a2 dc df f4  ac a2 48 91 c3 02 4b de  |..........H...K.|
00004050  c8 cf aa ff c4 48 83 43  a2 92 cc 02 91 48 53 55  |.....H.C.....HSU|
00004060  4d 95 db 87 6c ed c5 ec  40 ad a4 bf 2c bd 92 d1  |M...l...@...,...|
00004070  cb f4 09 98 c5 74 ef 59  49 7d 70 be 6d 01 76 e4  |.....t.YI}p.m.v.|
00004080  01 ae 87 4c 74 f4 da 09  8d b6 5e 38 57 61 5e 61  |...Lt.....^8Wa^a|
00004090  55 ef 8c 00 8a b5 33 09  8e b5 87 09 86 c5 f3 04  |U.....3.........|
000040a0  02 a4 6d e5 7d 5b 1b 8b  f4 3c 61 9f 01 8d 33 48  |..m.}[...<a...3H|
000040b0  54 be 5b 53 ee cf 27 db  0c f4 bc 53 84 ec 4c a2  |T.[S..'....S..L.|
000040c0  ec cf 1e db f4 80 eb d4  02 62 bb 4c a2 ec 1c 57  |.........b.L...W|
000040d0  1d 5c 17 58 ab d1 cf eb  70 55 75 6b 33 75 11 65  |.\.X....pUuk3u.e|
000040e0  35 33 ba 64 aa 6f 02 20  40 23 a2 2c cd b6 ca ed  |53.d.o. @#.,....|
000040f0  02 e9 01 8f 35 22 21 01  87 45 74 94 f7 e4 a2 31  |....5"!..Et....1|
00004100  cb 51 4d ce a2 48 25 c5  59 4d be 50 e5 f1 5a 01  |.QM..H%.YM.P..Z.|
00004110  a3 88 4b c8 ce aa 01 bc  01 b4 34 8f 01 b4 b3 0b  |..K.......4.....|
00004120  97 ed 5e 77 ee 55 00 7a  e5 d1 3d dc 57 55 be 38  |..^w.U.z..=.WU.8|
00004130  28 eb 5a 91 3c 29 c5 41  66 61 2b 56 40 25 e2 d2  |(.Z.<).Afa+V@%..|
00004140  3d dc 00 f1 2c 54 35 5f  57 ee d3 27 db 0c f4 bc  |=...,T5_W..'....|
00004150  57 86 ec 4c a2 ec d3 1e  db 47 51 be 58 50 ee cc  |W..L.....GQ.XP..|
00004160  27 db 0c f4 bc 50 7e ec  4c a2 ec cc 1e db a2 56  |'....P~.L......V|
00004170  ce 54 4c be 4c 52 e8 5a  40 5e cd 12 eb 5b e9 55  |.TL.LR.Z@^...[.U|
00004180  2c 83 df a2 53 ed c5 31  44 52 d5 b5 2a bf 6a 92  |,...S..1DR..*.j.|
00004190  de 01 82 7f c7 44 52 63  dd 40 45 cc a3 63 e9 c5  |.....DRc.@E..c..|
000041a0  2b ff ea f5 07 c4 bf 4b  a6 ec 2f 5d 27 74 cd b7  |+......K../]'t..|
000041b0  ec 62 5d 2c 65 dd 82 c0  ec b5 b1 ec 62 5d 2c 65  |.b],e.......b],e|
000041c0  dd 67 ba ec d5 32 04 c4  d4 e8 ea 3a e9 55 44 8f  |.g...2.....:.UD.|
000041d0  cc f4 24 cf 01 c8 8d 49  6a 92 de 63 66 dd 45 52  |..$....Ij..cf.ER|
000041e0  cd 3c e9 40 5c d8 ea a3  5c 6e 09 2a d4 4b a2 ec  |.<.@\...\n.*.K..|
000041f0  8c fa 9c 6d 05 fd 93 62  7e db 65 8e ec d5 97 ec  |...m...b~.e.....|
00004200  2c 5d 62 7d db 65 88 ec  d5 91 ec 2c 5d 62 c8 db  |,]b}.e.....,]b..|
00004210  16 ed 2c 5d 90 c2 24 54  35 85 10 90 0c 66 ed 34  |..,]..$T5....f.4|
00004220  54 f5 84 0f ee 6f ba 02  02 c6 29 06 b8 f5 44 8f  |T....o....)...D.|
00004230  cc f4 01 ee c5 a2 92 c9  fe 4b ce 0e fc d9 c8 ed  |.........K......|
00004240  0b 5b 38 f4 9c 00 d1 c1  39 4b a2 ec fd ff 9c 0e  |.[8.....9K......|
00004250  7d 4f 6c 34 bc ed d4 5a  38 f4 9c 04 e3 c1 39 4b  |}Ol4...Z8.....9K|
00004260  a2 ec c1 47 fe 2c bf 47  ff 2c 62 7e db 65 50 ec  |...G.,.G.,b~.eP.|
00004270  d5 59 ec 2c 5d 2c 62 dd  ac 23 cf c3 28 ef 5a 6c  |.Y.,],b..#..(.Zl|
00004280  e6 a2 38 20 9a a2 1f 38  9a 38 38 aa 38 38 aa 1f  |..8 ...8.88.88..|
00004290  38 9a a2 2c cd 26 ca fd  a2 04 cc c3 16 44 51 b5  |8..,.&.......DQ.|
000042a0  25 5c fd 59 5f ab 1b 88  dc 1b e9 da 27 fb c9 27  |%\.Y_.......'..'|
000042b0  ec 62 5d 2c 65 dd a2 30  ec c5 fa 4b ce 17 00 4f  |.b],e..0...K...O|
000042c0  87 62 f4 48 f0 d4 33 46  f4 2c e5 27 ef e7 0f 03  |.b.H..3F.,.'....|
000042d0  f6 72 e7 a8 2e fb 69 12  f2 23 20 6d b4 e6 01 f5  |.r....i..# m....|
000042e0  b3 02 44 d4 4c d3 8b c9  8a 01 44 94 02 45 d6 4c  |..D.L.....D..E.L|
000042f0  d5 89 c9 88 01 45 94 02  46 d8 4c d7 87 c9 86 01  |.....E..F.L.....|
00004300  46 94 02 47 da 4c d9 85  c9 84 01 47 94 02 48 dc  |F..G.L.....G..H.|
00004310  4c db 83 c9 81 01 48 94  02 49 de 4c dd 7f c9 7e  |L.....H..I.L...~|
00004320  01 49 94 02 4a e0 4c df  7c c9 7a 01 4a 94 02 4b  |.I..J.L.|.z.J..K|
00004330  e2 4c e1 79 c9 78 01 4b  94 02 4c e4 4c e3 75 c9  |.L.y.x.K..L.L.u.|
00004340  73 01 4c 94 02 4d e6 4c  e5 72 c9 71 01 4d 94 02  |s.L..M.L.r.q.M..|
00004350  4e e8 4c e7 6f c9 6c 01  4e 94 02 4f ea 4c e9 6a  |N.L.o.l.N..O.L.j|
00004360  c9 68 01 4f 94 80 43 d2  4c d1 65 c9 62 40 43 94  |.h.O..C.L.e.b@C.|
00004370  20 43 d0 4c cf 5f c9 5d  10 43 94 08 43 ce 4c cd  | C.L._.].C..C.L.|
00004380  5a c9 57 04 43 94 02 43  cc 4c f4 af b9 06 70 c5  |Z.W.C..C.L....p.|
00004390  92 03 fb df 2b 01 2b 92  2b 01 a5 94 00 af f4 3c  |....+.+.+......<|
000043a0  fa 04 9b 2c 03 dd 01 89  02 8e 33 f2 f4 bb ae bf  |...,......3.....|
000043b0  99 37 01 3f c4 0c 29 30  c2 45 01 c5 fb 00 af 85  |.7.?..)0.E......|
000043c0  34 24 5d f2 ac 03 27 af  28 44 bd af f7 b3 25 23  |4$]...'.(D....%#|
000043d0  f7 4b 15 02 3b b4 9a eb  bc 90 c6 b2 39 12 95 c7  |.K..;.......9...|
000043e0  b3 6e 33 ab 0e 0c df 8b  b0 e9 6c c7 02 f4 fb cf  |.n3.......l.....|
000043f0  08 02 bd b3 d1 d3 9c d6  27 ca 26 d0 a9 cf d5 9c  |........'.&.....|
00004400  d8 25 ca 24 ce a9 cd d7  9c da 23 ca 22 cc a9 cb  |.%.$......#."...|
00004410  d9 9c dc 21 ca 20 ca a9  c9 db 9c de 1e ca 1c c8  |...!. ..........|
00004420  a9 c7 dd 9c e0 1b ca 1a  c6 a9 c5 df 9c e2 19 ca  |................|
00004430  18 c4 a9 c3 e1 9c e4 16  ca 14 c2 a9 00 72 e3 2c  |.............r.,|
00004440  e6 13 ca 12 01 72 a2 02  72 e5 2c e8 11 ca 10 03  |.....r..r.,.....|
00004450  72 a2 04 72 e7 2c ea 0d  ca 0a 05 72 a2 06 72 e9  |r..r.,.....r..r.|
00004460  2c d2 09 ca 07 07 72 a2  08 72 d1 2c d0 04 ca 01  |,.....r..r.,....|
00004470  09 72 a2 0a 72 cf 2c ce  fe c9 fb 0b 72 92 0c 72  |.r..r.,.....r..r|
00004480  cd 2c cc f8 c9 0e 31 0d  72 22 02 ac 0d 3d 02 b5  |.,....1.r"...=..|
00004490  30 a7 33 03 51 10 b2 43  24 2b bb 0e 57 9b 4b db  |0.3.Q..C$+..W.K.|
000044a0  34 56 b4 4d ea ab 5e f3  ac b1 b4 bb f1 53 cb ac  |4V.M..^......S..|
000044b0  aa 99 f9 aa bb eb 18 cb  b2 9a 9b 6f 1b ab 56 32  |...........o..V2|
000044c0  7d c4 ea db bb f3 4d ca  b4 5e ba 53 b1 bb aa f1  |}.....M..^.S....|
000044d0  9c aa ac b9 18 f9 bb 9a  eb bc 1b b2 b9 e2 57 6f  |..............Wo|
000044e0  4a db f2 56 b4 4d ea ab  5e f3 ac b1 b4 bb f1 53  |J..V.M..^......S|
000044f0  cb ac aa 99 f9 aa bb eb  18 cb b2 9a 9b 6f 1b ab  |.............o..|
00004500  55 7d 05 7a 44 db 5a bc  4d ea ab 5e f3 ac b1 b4  |U}.zD.Z.M..^....|
00004510  bb f1 53 cb ac aa 99 f9  aa bb eb 18 cb b2 9a 9b  |..S.............|
00004520  6f 1b ab 9a 57 21 4c 83  ec 59 55 34 42 49 bb 40  |o...W!L..YU4BI.@|
00004530  83 d9 b3 81 de 41 3b 88  cc dc b3 56 f4 ab fb 06  |.....A;....V....|
00004540  f9 02 ae 03 a1 34 0e aa  01 ab 33 df 03 b2 a4 21  |.....4....3....!|
00004550  de ba 02 e8 2f 3b 42 e0  32 3b 3f 41 e1 c3 40 26  |..../;B.2;?A..@&|
00004560  88 4b 0f a8 f7 4b c8 02  81 a3 10 b7 c6 4a de df  |.K...K.......J..|
00004570  aa 1a 87 cb 2d 21 bb 0a  7c c1 1f 44 db 5c bc 4d  |....-!..|..D.\.M|
00004580  ea ab 5e f3 ac b1 b4 bb  f1 53 cb ac aa 99 f9 aa  |..^......S......|
00004590  bb eb 18 cb b2 9a 9b 6f  1b ab be 7e 15 7b 44 ea  |.......o...~.{D.|
000045a0  db bb f3 4d ca b4 5e ba  53 b1 bb aa f1 9c aa ac  |...M..^.S.......|
000045b0  b9 18 f9 bb 9a eb bc 1b  b2 b9 67 6f ca 5c 72 cc  |..........go.\r.|
000045c0  ea db bb f3 4d ca b4 5e  ba 53 b1 bb aa f1 9c aa  |....M..^.S......|
000045d0  ac b9 18 f9 bb 9a eb bc  1b b2 b9 69 6f ca 60 6c  |...........io.`l|
000045e0  cc 0c 89 db 50 87 00 8a  33 10 32 de 4a 5c 02 d2  |....P...3.2.J\..|
000045f0  a2 63 c4 f4 2b fb 06 f9  02 9e 80 c5 43 c3 69 9d  |.c..+.......C.i.|
00004600  8b e1 bc 2e 8c 9b 1a 87  cb 2e 21 bb 6e 9b cb db  |..........!.n...|
00004610  5d bc 4d ea ab 5e f3 ac  b1 b4 bb f1 53 cb ac aa  |].M..^......S...|
00004620  99 f9 aa bb eb 18 cb b2  9a 9b 6f 1b ab 1f 24 cc  |..........o...$.|
00004630  ea db bb f3 4d ca b4 5e  ba 53 b1 bb aa f1 9c aa  |....M..^.S......|
00004640  ac b9 18 f9 bb 9a eb bc  1b b2 b9 22 6f ca 20 23  |..........."o. #|
00004650  cc ea db bb f3 4d ca b4  5e ba 53 b1 bb aa f1 9c  |.....M..^.S.....|
00004660  aa ac b9 18 f9 bb 9a eb  bc 1b b2 b9 65 6f ca 63  |............eo.c|
00004670  74 cc ea db bb f3 4d ca  b4 5e ba 53 b1 bb aa f1  |t.....M..^.S....|
00004680  9c aa ac b9 18 f9 bb 9a  eb bc 1b b2 b9 68 6f ca  |.............ho.|
00004690  57 6b cc ed 89 cb f4 b0  b9 06 73 c2 92 e2 fb cf  |Wk........s.....|
000046a0  c3 69 9d 8b e1 bc b1 8c  9b 1a 87 cb 2e 21 bb 6e  |.i...........!.n|
000046b0  9b cb db 5d bc 4d ea ab  5e f3 ac b1 b4 bb f1 53  |...].M..^......S|
000046c0  cb ac aa 99 f9 aa bb eb  18 cb b2 9a 9b 6f 1b ab  |.............o..|
000046d0  1f 24 cc ea db bb f3 4d  ca b4 5e ba 53 b1 bb aa  |.$.....M..^.S...|
000046e0  f1 9c aa ac b9 18 f9 bb  9a eb bc 1b b2 b9 22 6f  |.............."o|
000046f0  ca 20 23 cc ea db bb f3  4d ca b4 5e ba 53 b1 bb  |. #.....M..^.S..|
00004700  aa f1 9c aa ac b9 18 f9  bb 9a eb bc 1b b2 b9 65  |...............e|
00004710  6f ca 63 74 cc ea db bb  f3 4d ca b4 5e ba 53 b1  |o.ct.....M..^.S.|
00004720  bb aa f1 9c aa ac b9 18  f9 bb 9a eb bc 1b b2 b9  |................|
00004730  68 6f ca 57 6b cc ed 89  cb f4 b0 b9 06 61 c3 92  |ho.Wk........a..|
00004740  01 fb df c7 00 80 a3 02  be 01 b3 34 95 08 eb 5d  |...........4...]|
00004750  f4 ac 62 61 aa 33 1c cc  2b e7 da 8d 14 bb 93 38  |..ba.3..+......8|
00004760  bc 2c 7c dd 00 77 cd 73  b3 bb 65 4e bb cb c5 aa  |.,|..w.s..eN....|
00004770  e0 87 bb b2 01 bc 4e 73  bb c5 65 ab 87 cb ba 02  |......Ns..e.....|
00004780  e0 cb 73 b0 bb 65 4e bb  cb c5 aa e0 87 bb af 03  |..s..eN.........|
00004790  bc 4e 73 bb c5 65 ab 87  cb ba 04 e0 cb 73 ae bb  |.Ns..e.......s..|
000047a0  65 4e bb cb c5 aa e0 87  bb ad 05 bc 4e 73 bb c5  |eN..........Ns..|
000047b0  65 ab 87 cb ba 06 e0 cb  73 ac bb 65 4e bb cb c5  |e.......s..eN...|
000047c0  aa e0 87 bb ab 07 bc 4e  73 bb c5 65 ab 87 cb ba  |.......Ns..e....|
000047d0  08 e0 cb 73 a9 bb 65 4e  bb cb c5 aa e0 87 bb a8  |...s..eN........|
000047e0  09 bc 4e 73 bb c5 65 ab  87 cb ba 0a e0 cb 73 a7  |..Ns..e.......s.|
000047f0  bb 65 4e bb cb c5 aa e0  87 bb a6 0b bc 4e 73 bb  |.eN..........Ns.|
00004800  c5 65 ab 87 cb ba ff e0  bb 73 a5 bb 65 4e bb cb  |.e.......s..eN..|
00004810  c5 aa e0 87 bb a4 fe bb  4e 73 bb c5 65 ab 87 cb  |........Ns..e...|
00004820  ba fd e0 bb 73 a3 bb 65  4e bb cb c5 aa e0 87 bb  |....s..eN.......|
00004830  73 fc bb 65 4e bb cb c5  aa e0 87 bb 65 4e bb cb  |s..eN.......eN..|
00004840  c5 aa e0 87 bb 65 4e bb  cb c5 aa e0 87 bb 65 4e  |.....eN.......eN|
00004850  bb cb c5 aa e0 87 bb 65  4e bb cb c5 aa e0 87 bb  |.......eN.......|
00004860  65 4e bb cb c5 aa e0 87  bb 65 4e bb cb c5 aa e0  |eN.......eN.....|
00004870  87 bb 65 4e bb cb c5 aa  e0 87 bb 65 4e bb cb c5  |..eN.......eN...|
00004880  aa 3f 2f bb 3c 39 bb 8a  54 bc 2b 1a bc 99 38 bb  |.?/.<9..T.+...8.|
00004890  61 6f cc ea db bb f3 4d  ca b4 5e ba 53 b1 bb aa  |ao.....M..^.S...|
000048a0  f1 9c aa ac b9 18 f9 bb  9a eb bc 1b b2 b9 6d 6f  |..............mo|
000048b0  ca db 5e bc 4d ea ab 5e  f3 ac b1 b4 bb f1 53 cb  |..^.M..^......S.|
000048c0  ac aa 99 f9 aa bb eb 18  cb b2 9a 9b 6f 1b ab 5f  |............o.._|
000048d0  6a cc ea db bb f3 4d ca  b4 5e ba 53 b1 bb aa f1  |j.....M..^.S....|
000048e0  9c aa ac b9 18 f9 bb 9a  eb bc 1b b2 b9 70 6f ca  |.............po.|
000048f0  db 5f bc 4d ea ab 5e f3  ac b1 b4 bb f1 53 cb ac  |._.M..^......S..|
00004900  aa 99 f9 aa bb eb 18 cb  b2 9a 9b 6f 1b ab 73 66  |...........o..sf|
00004910  cc db 62 bc 4d ea ab 5e  f3 ac b1 b4 bb f1 53 cb  |..b.M..^......S.|
00004920  ac aa 99 f9 aa bb eb 18  cb b2 9a 9b 6f 1b ab 71  |............o..q|
00004930  66 cc 89 58 bc 2e ee 9c  02 60 ed 2c 55 88 ae fb  |f..X.....`.,U...|
00004940  06 f9 01 82 01 3d 01 97  c7 4a 08 01 b1 b3 f4 95  |.....=...J......|
00004950  ce 61 5d aa 1c 62 ca e7  33 ac 14 2b bd 38 8d cb  |.a]..b..3..+.8..|
00004960  7c 93 db 77 2c dd b3 00  bc 4e 73 bb c5 65 ab 87  ||..w,....Ns..e..|
00004970  cb ba 01 e0 cb 73 b2 bb  65 4e bb cb c5 aa e0 87  |.....s..eN......|
00004980  bb b0 02 bc 4e 73 bb c5  65 ab 87 cb ba 03 e0 cb  |....Ns..e.......|
00004990  73 af bb 65 4e bb cb c5  aa e0 87 bb ae 04 bc 4e  |s..eN..........N|
000049a0  73 bb c5 65 ab 87 cb ba  05 e0 cb 73 ad bb 65 4e  |s..e.......s..eN|
000049b0  bb cb c5 aa e0 87 bb ac  06 bc 4e 73 bb c5 65 ab  |..........Ns..e.|
000049c0  87 cb ba 07 e0 cb 73 ab  bb 65 4e bb cb c5 aa e0  |......s..eN.....|
000049d0  87 bb a9 08 bc 4e 73 bb  c5 65 ab 87 cb ba 09 e0  |.....Ns..e......|
000049e0  cb 73 a8 bb 65 4e bb cb  c5 aa e0 87 bb a7 0a bc  |.s..eN..........|
000049f0  4e 73 bb c5 65 ab 87 cb  ba 0b e0 cb 73 a6 bb 65  |Ns..e.......s..e|
00004a00  4e bb cb c5 aa e0 87 bb  a5 ff bb 4e 73 bb c5 65  |N..........Ns..e|
00004a10  ab 87 cb ba fe e0 bb 73  a4 bb 65 4e bb cb c5 aa  |.......s..eN....|
00004a20  e0 87 bb a3 fd bb 4e 73  bb c5 65 ab 87 cb ba fc  |......Ns..e.....|
00004a30  e0 bb 4e 73 bb c5 65 ab  87 cb ba 4e e0 bb c5 65  |..Ns..e....N...e|
00004a40  ab 87 cb ba 4e e0 bb c5  65 ab 87 cb ba 4e e0 bb  |....N...e....N..|
00004a50  c5 65 ab 87 cb ba 4e e0  bb c5 65 ab 87 cb ba 4e  |.e....N...e....N|
00004a60  e0 bb c5 65 ab 87 cb ba  4e e0 bb c5 65 ab 87 cb  |...e....N...e...|
00004a70  ba 4e e0 bb c5 65 ab 87  cb ba 4e e0 bb c5 65 ab  |.N...e....N...e.|
00004a80  2f cb ba 39 3f bb 54 3c  cb 1a 8a cb 38 2b bb 6f  |/..9?.T<....8+.o|
00004a90  99 cb db 61 bc 4d ea ab  5e f3 ac b1 b4 bb f1 53  |...a.M..^......S|
00004aa0  cb ac aa 99 f9 aa bb eb  18 cb b2 9a 9b 6f 1b ab  |.............o..|
00004ab0  5e 6d cc ea db bb f3 4d  ca b4 5e ba 53 b1 bb aa  |^m.....M..^.S...|
00004ac0  f1 9c aa ac b9 18 f9 bb  9a eb bc 1b b2 b9 6a 6f  |..............jo|
00004ad0  ca db 5f bc 4d ea ab 5e  f3 ac b1 b4 bb f1 53 cb  |.._.M..^......S.|
00004ae0  ac aa 99 f9 aa bb eb 18  cb b2 9a 9b 6f 1b ab 5f  |............o.._|
00004af0  70 cc ea db bb f3 4d ca  b4 5e ba 53 b1 bb aa f1  |p.....M..^.S....|
00004b00  9c aa ac b9 18 f9 bb 9a  eb bc 1b b2 b9 66 6f ca  |.............fo.|
00004b10  62 73 cc ea db bb f3 4d  ca b4 5e ba 53 b1 bb aa  |bs.....M..^.S...|
00004b20  f1 9c aa ac b9 18 f9 bb  9a eb bc 1b b2 b9 66 6f  |..............fo|
00004b30  ca 58 71 cc ee 89 cb ed  b1 c9 88 b0 e9 73 11 67  |.Xq..........s.g|
00004b40  50 23 b4 93 fb 4f eb 06  a5 b5 50 ec bb 1c 1d bb  |P#...O....P.....|
00004b50  bb 21 2f b4 eb 4d bb 50  ec bb 1c 1d bb bb 4c bb  |.!/..M.P......L.|
00004b60  eb 4d bb 50 ec bb 1c 1d  bb bb 4c bb eb 4d bb 50  |.M.P......L..M.P|
00004b70  ec bb 1c 1d bb bb 4c bb  06 9e 4d 5b 25 8c db b3  |......L...M[%...|
00004b80  8c df 32 3b 3a 4a bb a0  1a 21 e0 43 62 53 4e 52  |..2;:J...!.CbSNR|
00004b90  44 f4 04 50 b4 ff ff ff  73 c8 73 62 23 fc f0 67  |D..P....s.sb#..g|
00004ba0  20 68 d4 f4 05 a0 b5 71  64 aa fc 0f f9 4c 81 34  | h.....qd....L.4|
00004bb0  a4 f2 50 cb 5b 5d aa 8b  bd bb 51 e7 bb 3c 5c ab  |..P.[]....Q..<\.|
00004bc0  e7 4e ba 5c 51 bb 4e 3c  aa 51 e7 bb 3c 5c ab e7  |.N.\Q.N<.Q..<\..|
00004bd0  4e ba 5c 51 bb 4e 3c aa  51 e7 bb 3c 5c ab e7 4e  |N.\Q.N<.Q..<\..N|
00004be0  ba 5c 51 bb 4e 3c aa 51  e7 bb 3c 5c ab e7 4e ba  |.\Q.N<.Q..<\..N.|
00004bf0  5c 51 bb 4e 3c aa 51 e7  bb 3c 5c ab e7 4e ba 5c  |\Q.N<.Q..<\..N.\|
00004c00  51 bb 4e 3c aa 51 e7 bb  3c 5c ab e7 4e ba 5c 51  |Q.N<.Q..<\..N.\Q|
00004c10  bb 4e 3c aa 51 e7 bb 3c  5c ab e7 4e ba 5c 51 bb  |.N<.Q..<\..N.\Q.|
00004c20  4e 3c aa 51 e7 bb 3c 5c  ab e7 4e ba 5c 51 bb 4e  |N<.Q..<\..N.\Q.N|
00004c30  3c aa 51 e7 bb 3c 5c ab  e7 4e ba 5c 51 bb 4e 3c  |<.Q..<\..N.\Q.N<|
00004c40  aa 51 e7 bb 3c 5c ab e7  4e ba 5c 51 bb 4e 3c aa  |.Q..<\..N.\Q.N<.|
00004c50  51 e7 bb 3c 5c ab e7 4e  ba 5c 51 bb 4e 3c aa 51  |Q..<\..N.\Q.N<.Q|
00004c60  e7 bb 3c 5c ab e7 4e ba  5c 51 bb 4e 3c aa 51 e7  |..<\..N.\Q.N<.Q.|
00004c70  bb 3c 5c ab e7 4e ba 5c  51 bb 4e 3c aa 51 e7 bb  |.<\..N.\Q.N<.Q..|
00004c80  3c 5c ab e7 4e ba 5c 51  bb 4e 3c aa 51 e7 bb 3c  |<\..N.\Q.N<.Q..<|
00004c90  5c ab e7 4e ba 5c 51 bb  4e 3c aa 51 e7 bb 3c 5c  |\..N.\Q.N<.Q..<\|
00004ca0  ab e7 4e ba 5c 51 bb 4e  3c aa cb c1 fc a3 b0 ec  |..N.\Q.N<.......|
00004cb0  9c 63 f4 ab 0f 71 9a 81  39 fc 4f f2 4c ca e2 5d  |.c...q..9.O.L..]|
00004cc0  ba af f8 e1 3b f8 20 2f  b4 03 3a 21 26 44 02 9d  |....;. /..:!&D..|
00004cd0  19 4b 01 63 ab 2b 91 c9  90 c8 33 00 e6 13 3b f4  |.K.c.+....3...;.|
00004ce0  6e ba 71 63 aa fc 20 f9  4c 81 33 a4 5d f2 ac b1  |n.qc.. .L.3.]...|
00004cf0  b4 bb 01 9c 53 4b ab 80  5d 92 f6 20 23 b4 e4 11  |....SK..].. #...|
00004d00  cb 01 61 8c 2b 6e 91 c4  a3 bb f4 ab 63 11 5f e3  |..a.+n......c._.|
00004d10  22 93 fc bf 2c 78 dd 00  69 cd 6a b3 bb 5d 4b bb  |"...,x..i.j..]K.|
00004d20  cb c4 aa ba 87 bb b2 01  bc 4b 6a bb c4 5d ab 87  |.........Kj..]..|
00004d30  cb ba 02 ba cb 6a b0 bb  5d 4b bb cb c4 aa ba 87  |.....j..]K......|
00004d40  bb af 03 bc 4b 6a bb c4  5d ab 87 cb ba 04 ba cb  |....Kj..].......|
00004d50  6a ae bb 5d 4b bb cb c4  aa ba 87 bb ad 05 bc 4b  |j..]K..........K|
00004d60  6a bb c4 5d ab 87 cb ba  06 ba cb 6a ac bb 5d 4b  |j..].......j..]K|
00004d70  bb cb c4 aa ba 87 bb ab  07 bc 4b 6a bb c4 5d ab  |..........Kj..].|
00004d80  87 cb ba 08 ba cb 6a a9  bb 5d 4b bb cb c4 aa ba  |......j..]K.....|
00004d90  87 bb a8 09 bc 4b 6a bb  c4 5d ab 87 cb ba 0a ba  |.....Kj..]......|
00004da0  cb 6a a7 bb 5d 4b bb cb  c4 aa ba 87 bb a6 0b bc  |.j..]K..........|
00004db0  4b 6a bb c4 5d ab 87 cb  ba ff ba bb 6a a5 bb 5d  |Kj..].......j..]|
00004dc0  4b bb cb c4 aa ba 87 bb  a4 fe bb 4b 6a bb c4 5d  |K..........Kj..]|
00004dd0  ab 87 cb ba fd ba bb 6a  a3 bb 5d 4b bb cb c4 aa  |.......j..]K....|
00004de0  ba 87 bb 6a fc bb 5d 4b  bb cb c4 aa ba 87 bb 5d  |...j..]K.......]|
00004df0  4b bb cb c4 aa ba 87 bb  5d 4b bb cb c4 aa ba 87  |K.......]K......|
00004e00  bb 5d 4b bb cb c4 aa ba  87 bb 5d 4b bb cb c4 aa  |.]K.......]K....|
00004e10  ba 87 bb 5d 4b bb cb c4  aa ba 87 bb 5d 4b bb cb  |...]K.......]K..|
00004e20  c4 aa ba 87 bb 5d 4b bb  cb c4 aa ba 87 bb 5d 4b  |.....]K.......]K|
00004e30  bb cb c4 aa 73 f4 ab 5f  0d c0 3a fd 0b f9 c6 f0  |....s.._..:.....|
00004e40  c3 c5 0c c8 66 4d 02 cb  6c 4d 08 03 cd f4 f0 93  |....fM..lM......|
00004e50  f4 3c 34 c5 bc 58 c9 bc  30 70 20 71 33 f0 72 06  |.<4..X..0p q3.r.|
00004e60  6f 33 18 a7 0c 95 54 3f  18 ae c5 83 f0 bd b5 73  |o3....T?.......s|
00004e70  f4 ab c0 0a f4 fc bf 00  00 00 00 00 00 00 00 00  |................|
00004e80  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00004ea0  00 00 00 00 00 00 f4 c0  2b 3e 99 78 95 de 00 d3  |........+>.x....|
00004eb0  5d 2a 24 2d 2c 35 55 20  d7 fb d7 20 32 b5 01 b8  |]*$-,5U ... 2...|
00004ec0  1f 4f 0b 5a 24 83 22 a4  a1 99 05 20 18 78 22 01  |.O.Z$.".... .x".|
00004ed0  27 00 73 22 50 01 30 92  0c 0c 2a d4 00 7b 00 7c  |'.s"P.0...*..{.||
00004ee0  33 01 7f 01 7e 33 e0 02  90 a3 0e b9 0e a8 34 0e  |3...~3........4.|
00004ef0  ba 0e b8 33 02 b0 0e bb  33 04 fc 01 3b 02 55 02  |...3....3...;.U.|
00004f00  54 22 50 03 30 92 06 55  06 fc 23 f8 06 53 92 d2  |T"P.0..U..#..S..|
00004f10  23 9d 05 fc ef 39 05 53  05 55 22 f8 05 56 92 d2  |#....9.S.U"..V..|
00004f20  22 9d f5 ef c9 03 05 da  50 08 2a 92 76 64 73 b5  |".......P.*.vds.|
00004f30  38 6d 85 5d 54 3e 1d 2d  03 11 54 82 42 a2 02 1c  |8m.]T>.-..T.B...|
00004f40  92 34 85 dd 23 88 de 03  5e d9 5c 30 99 06 11 28  |.4..#...^.\0...(|
00004f50  73 45 85 77 db 02 11 1c  73 45 85 77 db 01 d1 e0  |sE.w....sE.w....|
00004f60  72 45 0a f9 d6 3b c4 6c  06 5a 30 1c 9d dc 6c 8e  |rE...;.l.Z0...l.|
00004f70  59 02 0b 6d 4b 6c 20 bd  b4 d4 6c 84 5d 02 0c 6e  |Y..mKl ...l.]..n|
00004f80  4b 6c 03 0b b4 de 84 ed  88 34 77 5d 82 22 9d 00  |Kl.......4w]."..|
00004f90  d1 cf 4b e7 1f ef 2c 9c  01 24 92 73 00 c1 d5 77  |..K...,..$.s...w|
00004fa0  75 dd d4 86 bc 20 68 52  2b 18 30 da 08 30 d7 4a  |u.... hR+.0..0.J|
00004fb0  d4 86 bc f7 52 9b 2f 18  ad 0c 03 0e d2 43 0a a9  |....R./......C..|
00004fc0  00 3b ef 18 ad 1e 00 b9  d5 77 a8 0c a6 33 08 a5  |.;.......w...3..|
00004fd0  20 ad 33 e7 5f f0 2c 0d  01 65 c2 cc 71 0c 5c 2f  | .3._.,..e..q.\/|
00004fe0  1e 9d a7 e4 84 92 a5 a6  99 27 36 d5 49 08 5e 60  |.........'6.I.^`|
00004ff0  49 ff 42 0d 4c 1e 9a d9  c8 84 2f 29 05 5c a7 29  |I.B.L...../).\.)|
00005000  a5 a6 99 f6 d5 e9 7c 31  78 6b 55 78 90 db 74 73  |......|1xkUx..ts|
00005010  dd 00 76 64 3b 1e 01 7a  d3 0c f6 59 39 87 88 2c  |..vd;..z...Y9..,|
00005020  c4 10 20 ad b4 1e d8 fb  d0 0b d3 b3 17 28 31 d5  |.. ..........(1.|
00005030  28 2e 69 59 d8 28 30 b5  ca e9 96 c4 02 07 40 71  |(.iY.(0.......@q|
00005040  45 74 6b bb 34 71 64 33  55 60 30 71 5b 6b 03 07  |Etk.4qd3U`0q[k..|
00005050  b4 54 33 74 5b 74 14 71  b5 10 40 33 f5 d4 67 d4  |.T3t[t.q..@3..g.|
00005060  64 55 14 d8 fb ac 6a 01  8b 54 fe 1c 9d da 1f ad  |dU....j..T......|
00005070  3d 17 9d df 52 bc fb 1f  ad 1f bf de bc 76 d9 5a  |=...R........v.Z|
00005080  17 03 16 d4 02 1b 3d 29  6c 03 57 b2 84 0a 13 d4  |......=)l.W.....|
00005090  1f df db 03 08 d5 4a 8c  14 0a 15 44 df 84 bd fa  |......J....D....|
000050a0  1f ad 17 28 70 d5 1e fb  d9 3c 7f 2f 29 02 58 9f  |...(p....<./).X.|
000050b0  29 0c 76 d3 59 0b d4 09  f4 33 0d 02 9a b4 2f 1e  |).v.Y....3..../.|
000050c0  9d 9f 34 7f 92 8e 59 03  58 22 d7 d3 b9 cb 9b 96  |..4...Y.X"......|
000050d0  c4 76 03 09 b4 6e 03 0a  b4 7a 67 be 79 34 2f b5  |.v...n...zg.y4/.|
000050e0  e4 75 30 2f 55 28 2f 7a  5b 24 2f 79 5b 7a 67 be  |.u0/U(/z[$/y[zg.|
000050f0  79 1c 2f b5 0e 18 2f f5  84 75 78 66 55 19 92 db  |y./.../..uxfU...|
00005100  b8 81 2f 29 a2 a1 99 8e  5b 04 5a 22 58 6f d4 59  |../)....[.Z"Xo.Y|
00005110  1e f9 d9 b5 31 99 22 d2  de 1e 08 da a0 80 81 92  |....1.".........|
00005120  d4 a3 99 01 6e 38 6f 25  d3 02 6d 92 15 bf 0e c0  |....n8o%..m.....|
00005130  44 58 69 84 5d 6f 6d bb  0a c0 84 4d 84 01 be d4  |DXi.]om....M....|
00005140  1e c0 de a0 30 81 92 d4  a3 99 a1 28 81 92 05 5a  |....0......(...Z|
00005150  a4 29 18 6f d4 59 05 0b  04 0e 44 00 69 84 5d 6f  |.).o.Y....D.i.]o|
00005160  6d bb fc 6e 84 5d 78 76  bb 85 05 0f d4 80 74 80  |m..n.]xv......t.|
00005170  65 55 fe 23 9d 0b 24 ad  2f 19 9d a0 8c 80 92 d4  |eU.#..$./.......|
00005180  a3 99 19 bd de 62 32 99  06 12 ac 6e 45 a4 68 85  |.....b2....nE.h.|
00005190  5d 77 02 0d b4 04 0d 85  4d 85 78 db 03 12 03 0d  |]w......M.x.....|
000051a0  44 01 29 24 2d 04 6e 85  5d 88 0c ce e3 00 00 00  |D.)$-.n.].......|
000051b0  2c 90 2c d0 37 00 17 c4  b0 13 9c 00 ba 00 ca 43  |,.,.7..........C|
000051c0  20 ca 00 dc 33 20 17 20  dc 43 00 d5 00 d6 33 cb  | ...3 . .C....3.|
000051d0  5c aa 00 f9 00 cc 32 02  9f 00 73 43 00 23 02 00  |\.....2...sC.#..|
000051e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000051f0  00 00 00 63 b0 d2 d1 aa  0e 2e d3 4b 01 60 07 4f  |...c.......K.`.O|
00005200  17 00 b2 c5 05 30 02 69  22 1d 50 d9 b8 01 21 92  |.....0.i".P...!.|
00005210  d7 01 71 92 11 d9 fb 1a  d5 db 7c 08 05 5a f9 1e  |..q.......|..Z..|
00005220  9d 2f 1d 9d c8 b4 e9 1d  91 dd d4 d8 99 43 d9 99  |./...........C..|
00005230  85 8e 10 d4 1d c0 de d9  5e b9 cc 08 da 5f 2f 1e  |........^...._/.|
00005240  9d 90 62 d9 75 68 08 b5  b5 85 ed d3 d9 fb 1e f8  |..b.uh..........|
00005250  08 d5 58 2f 99 8c 08 90  5d 85 75 db f3 a1 be d1  |..X/....].u.....|
00005260  63 ab 00 b1 d2 5a 02 6a  18 2c d3 01 ba 84 0d ef  |c....Z.j.,......|
00005270  1a d5 db 71 40 99 e5 d9  fb dc 06 90 5d 01 b0 c4  |...q@.......]...|
00005280  4e 01 5f 02 4a 0b d3 fb  d5 84 be 41 1a 9d d9 65  |N._.J......A...e|
00005290  b9 90 de df b8 10 07 e5  d3 89 bc 84 0a ef 1a d5  |................|
000052a0  db 59 42 99 d9 d9 fb 3c  07 90 5d dc 09 fc 5e 2f  |.YB....<..]...^/|
000052b0  1e 9d d3 8b 59 92 f3 a1  be 76 0b 38 d4 ad b9 99  |....Y....v.8....|
000052c0  b9 2b 99 2b ad 99 ad b9  99 b9 2b 99 2b ad 99 ad  |.+.+......+.+...|
000052d0  b9 99 b9 2b 99 2b ad 99  ad b9 99 b9 2b 99 2b ad  |...+.+......+.+.|
000052e0  99 ad b9 99 b9 2b 99 2b  ad 99 ad b9 99 b9 2b 99  |.....+.+......+.|
000052f0  2b ad 99 ad b9 99 b9 2b  99 2b ad 99 ad b9 99 b9  |+......+.+......|
00005300  2b 99 2b ad 99 ad b9 99  b9 2b 99 2b ad 99 ad b9  |+.+......+.+....|
00005310  99 b9 2b 99 2b ad 99 ad  b9 99 b9 2b 99 2b ad 99  |..+.+......+.+..|
00005320  ad b9 99 b9 2b 99 2b ad  99 ad b9 99 b9 2b 99 2b  |....+.+......+.+|
00005330  ad 99 ad b9 99 b9 2b 99  2b ad 99 ad b9 99 b9 2b  |......+.+......+|
00005340  99 2b ad 99 ad b9 99 89  2b c9 77 f4 db 82 7e 9d  |.+......+.w...~.|
00005350  8c da cb 7f 7e 9d 8c da  cb 7d 7e 9d 8c da cb 7b  |....~....}~....{|
00005360  7e 9d 8c da cb 79 7e 9d  8c da cb 77 7e 9d 8c da  |~....y~....w~...|
00005370  cb 74 7e 9d 8c da cb 72  7e 9d 8c da cb 70 7e 9d  |.t~....r~....p~.|
00005380  8c da cb 6d 7e 9d 8c da  cb 6a 7e 9d 8c da cb 67  |...m~....j~....g|
00005390  7e 9d 8c da cb 63 7e 9d  8c da cb 5f 7e 9d 8c da  |~....c~...._~...|
000053a0  cb 5c 7e 9d 8c da cb 58  7e 9d 8c da cb f4 00 dc  |.\~....X~.......|
000053b0  b4 f4 72 bb 76 0b 39 d4  f1 2b b9 4b 57 aa 57 f1  |..r.v.9..+.KW.W.|
000053c0  ab f1 4b ba 4b 57 aa 57  f1 ab f1 4b ba 4b 57 aa  |..K.KW.W...K.KW.|
000053d0  57 f1 ab f1 4b ba 4b 57  aa 57 f1 ab f1 4b ba 4b  |W...K.KW.W...K.K|
000053e0  57 aa 57 f1 ab f1 4b ba  4b 57 aa 57 f1 ab f1 4b  |W.W...K.KW.W...K|
000053f0  ba 4b 57 aa 57 f1 ab f1  4b ba 4b 57 aa 57 f1 ab  |.KW.W...K.KW.W..|
00005400  f1 4b ba 4b 57 aa 57 f1  ab f1 4b ba 4b 57 aa 57  |.K.KW.W...K.KW.W|
00005410  f1 ab f1 4b ba 4b 57 aa  57 f1 ab f1 4b ba 4b 57  |...K.KW.W...K.KW|
00005420  aa 57 f1 ab f1 4b ba 4b  57 aa 57 f1 ab f1 4b ba  |.W...K.KW.W...K.|
00005430  4b 57 aa 57 f1 ab f1 4b  ba 4b 57 aa 57 f1 ab f1  |KW.W...K.KW.W...|
00005440  4b ba 4b 57 aa 60 04 f4  2b 00 c5 c6 ee d4 bf ee  |K.KW.`..+.......|
00005450  87 b3 ee 04 87 9e 65 d0  56 e8 22 68 4c 03 1f bf  |......e.V."hL...|
00005460  50 62 2c dd 69 66 dd fa  6b fd bd 0c 67 a3 1f ba  |Pb,.if..k...g...|
00005470  00 ed 52 10 23 70 e7 54  44 e7 18 23 45 80 e7 14  |..R.#p.TD..#E...|
00005480  23 45 fe a9 1c 23 55 81  9c 7f 3e 54 39 a1 1d c4  |#E...#U...>T9...|
00005490  60 8e bd 1f 4a ba 6b 60  ea 60 8e bd 1f 4a ba 6b  |`...J.k`.`...J.k|
000054a0  60 ea f2 66 ab 3c c4 35  5c 02 d1 08 d9 22 2c 87  |`..f.<.5\....",.|
000054b0  de 6b 6b ee fb 66 ab 87  2d ed 68 11 70 e9 22 02  |.kk..f..-.h.p.".|
000054c0  a2 fb 4f 40 25 4b 4a 80  19 f5 4b 2f 1a bc 3b 3e  |..O@%KJ...K/..;>|
000054d0  bb 9b 82 e5 b3 5f 7d 01  7a 44 db 59 bc 4d ea ab  |....._}.zD.Y.M..|
000054e0  5e f3 ac b1 b4 bb f1 53  cb ac aa 99 f9 aa bb eb  |^......S........|
000054f0  18 cb b2 9a 9b 6f 1b ab  72 67 cc db 5b bc 4d ea  |.....o..rg..[.M.|
00005500  ab 5e f3 ac b1 b4 bb f1  53 cb ac aa 99 f9 aa bb  |.^......S.......|
00005510  eb 18 cb b2 9a 9b 6f 1b  ab 6c 69 cc 81 d7 55 3c  |......o..li...U<|
00005520  02 de 01 d8 33 3a 02 df  c3 00 9b 30 32 44 44 db  |....3:.....02DD.|
00005530  f4 5b 04 d2 9d 5b 9d 02  71 b4 de 01 d2 b5 2a 97  |.[...[..q.....*.|
00005540  ce 92 69 ed 66 69 dd 01  62 fd de a2 be 2a 97 ce  |..i.fi..b....*..|
00005550  92 69 ed 66 69 dd a2 ff  ee 97 de eb 69 2a dc 69  |.i.fi.......i*.i|
00005560  92 de a2 fe ee 97 de eb  dd 2a bc 92 69 ed fd b8  |.........*..i...|
00005570  eb de a2 be 2a 97 ce 9a  4a de 14 aa ce 37 a9 a9  |....*...J....7..|
00005580  97 f1 b9 2c d5 df de a2  be 2a 9b ce 0c 4e 04 4b  |...,.....*...N.K|
00005590  55 9a 08 4f d5 14 2b 1c  c6 55 14 10 2c c5 36 a9  |U..O..+..U..,.6.|
000055a0  a9 97 f2 b9 2c cb df de  a3 be 2a 97 ce dc e3 bb  |....,.....*.....|
000055b0  69 7c db 62 66 dd 69 94  de 0c 1d 92 4e 69 0e 17  |i|.bf.i.....Ni..|
000055c0  d4 02 66 fd de a2 be 2a  9b ce 01 30 bf 4b 03 17  |..f....*...0.K..|
000055d0  02 2e 44 69 36 de 94 66  ed 92 69 ed 98 a1 bb 69  |..Di6..f..i....i|
000055e0  7d db a3 00 ef 9c de eb  c4 2a bc 02 30 c0 4b 07  |}........*..0.K.|
000055f0  ca dd 5b 94 69 ed 92 69  ed 0e 22 b8 4b 7e 94 bb  |..[.i..i..".K~..|
00005600  a4 fd ee 9e de eb 14 4b  2a 5c 3f 3b ee 4a 41 ee  |.......K*\?;.JA.|
00005610  aa 9a ed a9 14 9c 2a 72  8c 92 36 72 50 92 e8 15  |......*r..6rP...|
00005620  9d 12 e1 d9 e0 e9 99 ea  10 9d 0e df d9 dd eb 99  |................|
00005630  de a6 be a0 94 ee 39 2b  ec 3c 34 4b e5 44 2c 4c  |......9+.<4K.D,L|
00005640  e5 49 24 4d e5 14 4f 18  4e 55 04 27 9a 5d d7 38  |.I$M..O.NU.'.].8|
00005650  de 10 2b de 5d 14 0c 2c  c5 4b 8c a9 29 4b 50 2a  |..+.]..,.K..)KP*|
00005660  29 19 36 d9 e3 e8 99 e9  16 9d 15 e2 d9 e1 ea 99  |).6.............|
00005670  eb 12 9d 10 e0 d9 df ec  99 ed 0e 9d a8 dd e9 97  |................|
00005680  de eb e3 2a bc 7c dc bb  a1 b5 bb 93 62 ed 4e 02  |...*.|......b.N.|
00005690  ee 32 98 db be 41 fc de  a2 be 2a 97 ce d6 98 dd  |.2...A....*.....|
000056a0  33 97 db a2 9d ef 37 93  db 93 e9 be e8 34 ed 35  |3.....7......4.5|
000056b0  93 db 93 e7 be e6 38 ed  97 de eb 98 2a dc 31 97  |......8.....*.1.|
000056c0  db a2 97 ef 9c de eb c0  2a bc dd 98 dd 70 e1 dd  |........*....p..|
000056d0  2f e8 dd 97 cf bd 94 23  c1 f4 08 3c f4 2c 00 85  |/......#...<.,..|
000056e0  00 3f 22 38 da a4 5e 9d  de eb 67 2a bc c4 20 a3  |.?"8..^...g*.. .|
000056f0  b3 64 c0 eb 5c 61 fa 5d  6a 03 9d 50 74 c8 5b 79  |.d..\a.]j..Pt.[y|
00005700  0e 29 d4 0e b0 85 5e 31  36 ac 0c a1 81 5e 9c 62  |.)....^16....^.b|
00005710  dd 0e bb 79 5d 36 83 ce  0c ab 31 5a 2c 7c de 5c  |...y]6....1Z,|.\|
00005720  09 a5 2e 1e 64 0d 92 84  2e bc f4 7d e1 c5 df e1  |....d......}....|
00005730  5c 59 59 0e 9c 00 57 01  d8 54 2e e3 94 5b 94 ae  |\YY...W..T...[..|
00005740  be 15 e3 7e 5b 85 79 ed  36 83 ce 81 31 ea a5 7c  |...~[.y.6...1..||
00005750  ee 78 f1 95 4e 0b 0c de  67 ef d9 88 0b 00 16 55  |.x..N...g......U|
00005760  0e b5 79 5d 36 0e b3 c5  0c a5 31 5a 88 0c a4 e5  |..y]6.....1Z....|
00005770  f4 b0 e7 b4 f4 b8 e7 d4  bf f8 9c f4 37 b9 97 de  |............7...|
00005780  eb 67 2a bc 2f cc a2 c3  93 a2 cb ad 87 c1 f4 a2  |.g*./...........|
00005790  08 e1 e4 9d de eb 67 2a  bc 18 f8 c0 a2 43 e4 04  |......g*.....C..|
000057a0  44 f5 30 ae dd 01 cb 1c  4f af 86 db 1b 31 fd b0  |D.0.....O....1..|
000057b0  86 db 1a 35 fd b1 86 db  61 16 be a8 36 99 de a5  |...5....a...6...|
000057c0  be 2a 9c ce a5 a2 67 3b  2c 0c 7f 5d cc 2c dd 36  |.*....g;,..].,.6|
000057d0  cd dd 47 19 cf 30 c0 db  94 18 bf 85 6c bd d8 17  |..G..0......l...|
000057e0  db 17 37 fd 31 4d dc 85  16 bf d9 90 c3 d3 dc e3  |..7.1M..........|
000057f0  84 5b f0 e8 a4 4e f4 f5  bd f6 fc e8 d4 08 e9 f4  |.[...N..........|
00005800  4b f4 f7 bd f8 14 e9 d4  de f4 bb 2a 97 ce 79 a2  |K..........*..y.|
00005810  67 3b f9 34 e9 d4 8d 2f  e4 e5 b5 0e 18 15 4c f3  |g;.4.../......L.|
00005820  54 58 e9 f4 4b f4 18 36  b5 18 3d 64 f6 54 de a2  |TX..K..6..=d.T..|
00005830  cc b5 2a 9b ce 65 a2 67  3b 59 ed 9b 01 8c e9 e4  |..*..e.g;Y......|
00005840  62 7d db 7d 96 e4 b5 66  a3 ee d5 d1 30 5d de 17  |b}.}...f....0]..|
00005850  b9 2a 9b ce 53 a2 67 3b  2c bf db b0 99 cd 93 21  |.*..S.g;,......!|
00005860  bf b7 8d bc 1f ec f9 e4  1f a1 f0 e5 62 84 db 2c  |............b..,|
00005870  7c e4 d5 a3 86 f0 e5 74  b2 a6 2a bf 69 aa 65 ab  ||......t..*.i.e.|
00005880  aa 83 b9 aa 41 ac aa b8  a4 aa 25 8d 79 ca 22 bc  |....A.....%.y.".|
00005890  61 95 a2 74 1e 20 0f 33  8c 6d 0b a3 68 f4 0c 49  |a..t. .3.m..h..I|
000058a0  f4 20 15 b5 24 15 74 f4  54 de f4 bb 2a 9e ce 21  |. ..$.t.T...*..!|
000058b0  a2 67 3b 72 bf db 10 62  2c 0e 55 2d 96 db b0 fd  |.g;r...b,.U-....|
000058c0  96 f0 45 96 bd bd 91 f0  2e 5d 96 bd bd 8d f0 2f  |..E......]...../|
000058d0  5d 2c f2 bd 4d 89 f0 30  5d 96 bd bd 85 f0 31 5d  |],..M..0].....1]|
000058e0  96 bd bd 81 f0 32 5d 7d  bd bd 29 bc ed 3a 03 9d  |.....2]}..)..:..|
000058f0  29 46 e9 47 c8 a4 94 f9  4b a6 94 0b 24 47 d5 24  |)F.G....K...$G.$|
00005900  38 0d 1e 22 1b 94 d6 4d  ce 0a de 24 46 d7 5d 93  |8.."...M...$F.].|
00005910  cf cd 40 53 cd 03 5e ff  20 1b 50 5e bb 51 de 34  |..@S..^. .P^.Q.4|
00005920  59 9f 5f a1 e7 25 f0 55  fa f4 9c a9 e5 ad 5c 2d  |Y._..%.U......\-|
00005930  93 db 20 46 04 5f 18 a6  9e 54 d4 02 a6 15 a9 77  |.. F._...T.....w|
00005940  74 d6 a2 7b 81 aa 20 3e  c2 3a 40 20 54 a3 45 77  |t..{.. >.:@ T.Ew|
00005950  ec a2 6e f8 2d 07 23 a6  3f aa 73 5c 03 f9 0c ec  |..n.-.#.?.s\....|
00005960  d4 de f4 bb 2a 9b ce bb  a1 67 3b 51 ed 9b 99 15  |....*....g;Q....|
00005970  de 81 e5 b0 5c 7b 93 cb  50 fa 8d 4c 08 f0 1f 5e  |....\{..P..L...^|
00005980  84 1f be e3 e3 62 5d ed  ef 2c 5d a6 a3 ae 69 74  |.....b]..,]...it|
00005990  b3 a2 ab bf aa b9 65 aa  ac 83 aa a4 41 aa 73 dc  |......e.....A.s.|
000059a0  51 2a 46 6e 1b a3 20 1f  65 58 33 74 6d 65 e1 32  |Q*Fn.. .eX3tme.2|
000059b0  a6 d9 50 94 de eb 2b 97  ce 66 2d bc 2c 8d a1 d3  |..P...+..f-.,...|
000059c0  0c 8c 04 0d 45 8d d5 cd  37 9d ec 80 e3 ef d5 99  |....E...7.......|
000059d0  d5 fd 84 9c bb b5 e3 62  5d f4 34 ce bd 8a c0 29  |.......b].4....)|
000059e0  8a d9 a2 5e 9b de eb bf  2a bc 4a e7 16 c1 54 f2  |...^....*.J...T.|
000059f0  f4 9c 8e 7d eb de 45 cf  b5 2a 9f ce ca cf bb c2  |...}..E..*......|
00005a00  c6 bb 13 c1 45 4e f4 3b  e7 c5 38 4a 29 29 28 f4  |....EN.;..8J))(.|
00005a10  9c f4 35 4a c2 32 4a 27  29 26 f4 9c f4 2f 4a c2  |..5J.2J')&.../J.|
00005a20  81 f6 b9 2a cf f0 be 55  9c de eb c4 2a bc 3d c0  |...*...U....*.=.|
00005a30  db f4 23 e7 c5 20 4a 11  2a 22 2d f4 9c f4 1d 4a  |..#.. J.*"-....J|
00005a40  c2 0d c0 2a 92 f4 19 4a  c2 13 4a 36 29 36 f4 9c  |...*...J..J6)6..|
00005a50  f4 10 4a c2 2c f3 d9 0b  cf 8f 5e 97 de eb 0c 0c  |..J.,.....^.....|
00005a60  2a 5c 2c d6 dd 97 cd bd  64 35 fd a2 51 ee 97 de  |*\,.....d5..Q...|
00005a70  eb dc 2a bc b9 2e bc 62  66 dd a1 93 be 69 93 db  |..*....bf....i..|
00005a80  41 47 cd 68 4f ef de a2  be 2a 97 ce cc 0c 64 d4  |AG.hO....*....d.|
00005a90  cd 7f dd a2 93 bc 41 46  cd 0c e1 42 4f 9d a2 be  |......AF...BO...|
00005aa0  46 93 db e4 41 ec 94 de  eb 2b 9b ce 34 2e ec 36  |F...A....+..4..6|
00005ab0  d7 e6 e5 d3 04 ad 55 f4  9c 08 8d a3 4e 04 5d dc  |......U.....N.].|
00005ac0  5d b3 01 9b e5 4f 84 09  e2 03 d3 03 70 44 cb 3e  |]....O......pD.>|
00005ad0  dc c4 e6 8f 5d 56 35 9c  97 f4 9c 3b a3 de de bd  |....]V5....;....|
00005ae0  ce b5 2a 9e ce ca cf bb  c2 c6 bb b4 e6 3e 5d 29  |..*..........>])|
00005af0  f4 9c f4 ae 49 c2 ab 49  28 29 27 f4 9c f4 a8 49  |....I..I()'....I|
00005b00  c2 7d f5 b9 a3 ce 91 5e  9c de eb c4 2a bc 40 c0  |.}.....^....*.@.|
00005b10  db f4 9f e6 c5 99 49 27  29 f3 f4 9c 8f 7d eb de  |......I')....}..|
00005b20  94 ce b5 2a 9c ce c0 c4  bb 90 e6 12 c1 54 27 f4  |...*.........T'.|
00005b30  9c f4 8d 49 c2 7d f3 b9  88 ce 8f 5e 9d b6 bb 4d  |...I.}.....^...M|
00005b40  93 db e3 41 ec 93 9d bb  fa 30 ed 93 9d bb f7 2c  |...A.....0.....,|
00005b50  ed 93 9d bb f5 31 ed 93  9d bb f4 2d ed 9c de eb  |.....1.....-....|
00005b60  c6 2a bc e2 c2 fb f9 f4  9c 62 9e db dd 35 fd f9  |.*.......b...5..|
00005b70  f4 9c 66 95 db db 35 fd  f9 f4 9c 62 00 6e d4 d7  |..f...5....b.n..|
00005b80  35 fd f3 f4 9c 66 3c dc  8f 35 ed de ef be 2a 9c  |5....f<..5....*.|
00005b90  ce c2 c6 bb f4 d3 cf 9e  f3 b9 61 c1 95 4b ee 8f  |..........a..K..|
00005ba0  ee 9d de eb c4 2a bc cb  c0 bb 7e 94 bb f4 cb cf  |.....*....~.....|
00005bb0  46 f4 b9 95 c1 9e 4b ed  90 ee 9d de eb c4 2a bc  |F.....K.......*.|
00005bc0  cb c0 bb 7e 94 bb f4 c6  cf 46 f4 b9 9d c1 9e 4b  |...~.....F.....K|
00005bd0  eb 90 ee 93 9d bb ea 50  ed 20 ce 37 5d 9b de eb  |.......P. .7]...|
00005be0  bf 2a bc 21 11 c1 f4 f2  f4 9c 8e 7d eb de 15 ce  |.*.!.......}....|
00005bf0  b5 2a 97 ce a2 2f bc 51  93 dc 50 40 ef a2 fb eb  |.*.../.Q..P@....|
00005c00  97 de eb 2f 2a cc 97 9c  bc 3e 51 fd fb 50 be de  |.../*....>Q..P..|
00005c10  a2 be 2a 97 ce 69 db db  62 66 dd 94 2c ed 66 69  |..*..i..bf..,.fi|
00005c20  dd a1 0c bf b5 63 69 dd  98 3d fd de a2 be 2a 9c  |.....ci..=....*.|
00005c30  ce c0 c4 bb e6 e5 41 5d  27 f4 9c f4 e3 48 c2 7d  |......A]'....H.}|
00005c40  f3 b9 de cd 8f 5e 2e 93  db de e0 41 5c 97 de eb  |.....^.....A\...|
00005c50  2e 2a dc 97 98 bd 45 4b  cd c5 ff 40 5c de a2 be  |.*....EK...@\...|
00005c60  2a 97 ce 98 2d dd 4b 97  db 40 45 cc a2 ba ff e5  |*...-.K..@E.....|
00005c70  97 de eb 31 2a cc d9 62  dd d7 d8 dd 97 03 a3 b5  |...1*..b........|
00005c80  40 5d cd a2 ac ff e5 97  de eb 2c 2a dc 97 98 bd  |@]........,*....|
00005c90  45 56 cd a1 ff 40 5c a2  8b ed 97 de eb 7f 2a dc  |EV...@\.......*.|
00005ca0  97 98 bd 45 56 cd 95 ff  40 5c a2 8b ed 97 de eb  |...EV...@\......|
00005cb0  98 2a dc 56 97 db 40 45  cc a2 8a ff e5 97 de eb  |.*.V..@E........|
00005cc0  2c 2a dc 97 98 bd 45 55  cd 7f ff 40 5c a2 8b ed  |,*....EU...@\...|
00005cd0  97 de eb 98 2a dc 55 97  db 40 45 cc a2 74 ff e5  |....*.U..@E..t..|
00005ce0  97 de eb 98 2a dc 97 d6  bd 45 4c cd 37 40 fc de  |....*....EL.7@..|
00005cf0  a2 be 2a 97 ce 31 4a ce  8c 8b bb cd 69 db 8c 02  |..*..1J.....i...|
00005d00  1c b4 ce 03 06 d4 5c 02  b9 94 2c f3 dd 97 cc bd  |......\...,.....|
00005d10  45 54 cd af 40 ec 51 94  dc 40 45 cc a2 4c ff e5  |ET..@.Q..@E..L..|
00005d20  98 de eb 92 2a dc fd fb  cb 2e d8 ca 29 a2 cb 09  |....*.......)...|
00005d30  00 4e 6d 02 70 f4 2c 8a  f1 d9 10 e6 91 4b 8e 69  |.Nm.p.,......K.i|
00005d40  bb 2e a2 ce 29 a2 cb fb  ff 4e 5d a2 92 ed 97 de  |....)....N].....|
00005d50  eb 2f 2a cc d6 ff 3d d4  f4 ff 3c c4 40 1a ff b6  |./*...=...<.@...|
00005d60  43 a2 cb bd 4f 93 dc 4f  ea ff e5 04 7d 00 2d 3e  |C...O..O....}.->|
00005d70  bb 99 a2 34 e9 de 5d d8  b5 2a 97 ce 45 a0 67 3b  |...4..]..*..E.g;|
00005d80  7f 2f dc 5a cc dd a2 cb  bd 4f 93 dc 50 d4 ff e5  |./.Z.....O..P...|
00005d90  fa 00 9d 00 4f de 2d f7  d9 2c ac de de a2 be 2a  |....O.-..,.....*|
00005da0  97 ce 2d a0 67 3b 01 d9  2f 4c 5a cc dd a2 cb bd  |..-.g;../LZ.....|
00005db0  4f 93 dc 50 bc ff e5 fa  00 9d 00 4f de 2d f7 d9  |O..P.......O.-..|
00005dc0  2c ac de de a2 be 2a 9c  ce 15 a0 67 3b 2f bf cb  |,.....*....g;/..|
00005dd0  e6 70 dd a2 e5 bd 4f 93  dc 4f a4 ff e5 09 f4 ac  |.p....O..O......|
00005de0  f4 50 ce e6 07 da a2 e5  bd 4f 93 dc 4f 98 ff e5  |.P.......O..O...|
00005df0  fb f4 9c fd 50 ce 45 e3  ca ac ad ed 2d b6 dd 50  |....P.E.....-..P|
00005e00  a4 ee 4f ad ed a8 f4 9c  a4 37 e9 de ff d7 b5 2a  |..O......7.....*|
00005e10  9c ce e7 9f 67 3b 23 10  60 e5 52 f4 9c af bf eb  |....g;#.`.R.....|
00005e20  7d a4 09 b2 1c ed 00 43  55 30 0e ad ba 2c dd de  |}......CU0...,..|
00005e30  a4 be 2a 97 ce d3 9f 67  3b 97 31 bc 9d fe 4c 5d  |..*....g;.1...L]|
00005e40  28 32 f4 2c ab 00 41 c2  93 96 e2 b5 4a 2d fd a2  |(2.,..A.....J-..|
00005e50  2c ed 6d da a9 2a 65 31  6e 15 33 64 2d 67 3a 6e  |,.m..*e1n.3d-g:n|
00005e60  92 6e 32 23 74 f6 02 0a  f4 bc 02 8c 03 3d 00 ce  |.n2#t........=..|
00005e70  02 8f 33 de f4 bb 2a a0  ce af 9f 67 3b ca bf bb  |..3...*....g;...|
00005e80  dc e7 c6 4b d2 06 be d2  ad be 15 33 de 04 49 57  |...K.......3..IW|
00005e90  59 f8 55 ab 23 3b fd fa  00 37 94 67 e2 af 5c 2d  |Y.U.#;...7.g..\-|
00005ea0  93 db 04 21 44 5f 08 22  c8 5d 07 02 c9 4d 3f 00  |...!D_.".]...M?.|
00005eb0  76 92 a8 00 33 e2 6d d5  a9 2a 81 77 aa c2 7b aa  |v...3.m..*.w..{.|
00005ec0  73 aa 43 2a 54 a9 aa af  74 aa 8f 89 aa 8c f2 11  |s.C*T...t.......|
00005ed0  49 03 0a de e7 36 99 c0  da 99 de f4 bb 2a 9d ce  |I....6.......*..|
00005ee0  73 9f 67 3b 07 c0 f2 e4  53 f4 9c 60 c7 0c 38 55  |s.g;....S..`..8U|
00005ef0  f4 9c db 7c a8 bd 94 a7  ec b5 06 2e 7e 4b 0c 31  |...|........~K.1|
00005f00  90 4e 04 09 95 5e b6 4e  be 04 3f b3 5e f8 68 9b  |.N...^.N..?.^.h.|
00005f10  01 05 0c 3f 45 b6 58 b9  0b 00 3d d5 0b 2c da 5d  |...?E.X...=..,.]|
00005f20  50 b9 00 74 00 7a 22 00  39 00 3a 22 86 7c eb de  |P..t.z".9.:".|..|
00005f30  89 d0 b5 2a 9e ce 45 9f  67 3b 7c 04 bf 5b b4 32  |...*..E.g;|..[.2|
00005f40  ee 55 25 be 05 ff 03 3a  2a fb e9 7f c7 bd cc 77  |.U%....:*......w|
00005f50  ec b5 23 b3 ee 7e c1 bd  2e 71 ec e5 cc ad be 10  |..#..~...q......|
00005f60  2a de a6 29 ea af e0 f3  e4 00 fb 0c 3a 35 2b 37  |*..)........:5+7|
00005f70  99 03 0a de 2c 2e da 32  d7 f4 5b a8 66 de a8 09  |....,..2..[.f...|
00005f80  f4 2b f4 96 dd de f4 bb  2a 9f ce 13 9f 67 3b ca  |.+......*....g;.|
00005f90  bf bb 03 2b c6 4b 7d 45  be 12 d7 e2 d5 10 fd d9  |...+.K}E........|
00005fa0  f4 fb c9 44 ec 65 59 62  7d db f4 b8 ce 3f 4c 10  |...D.eYb}....?L.|
00005fb0  2a 22 36 f4 9c a6 54 d9  3f 00 13 c5 08 50 80 9f  |*"6...T.?....P..|
00005fc0  45 7d 93 bb 2d b4 e2 d5  de a7 be 2a 97 ce ed 9e  |E}..-......*....|
00005fd0  67 3b b6 92 be d6 66 fd  de a2 be 2a 97 ce e3 9e  |g;....f....*....|
00005fe0  67 3b b6 92 be 62 9d db  a2 d0 ef 9e de eb 67 2a  |g;...b........g*|
00005ff0  bc bf d8 9e b3 71 15 de  11 a0 7d 4c 1a 08 ea c0  |.....q....}L....|
00006000  7d 01 6a 34 35 05 da 7f  ad bd ac 7a ec 03 75 3d  |}.j45......z..u=|
00006010  4c 00 88 02 8b 55 2f 01  b6 a4 50 93 cb 00 da 01  |L....U/...P.....|
00006020  89 45 15 6f ee 06 a0 84  fc 44 1e 1f ea 80 02 41  |.E.o.....D.....A|
00006030  94 21 19 de 10 c1 02 bf  33 7c e2 19 5e 88 e8 9b  |.!......3|..^...|
00006040  04 1b 19 5e 7f 07 ce 26  41 a1 c5 f4 07 ce 80 e6  |...^...&A.......|
00006050  56 59 08 b7 ee 5c f4 9c  1c 1c 0c 1c 55 0b 09 ee  |VY...\......U...|
00006060  e5 e4 bb f8 08 1b e5 27  7f eb 06 03 b5 a4 10 56  |.......'.......V|
00006070  1c 4e 60 c4 b3 4d 49 b4  cd 01 08 45 e5 02 eb 03  |.N`..MI....E....|
00006080  3e 08 1a 02 f2 53 16 0c  ce 53 f7 c9 1c f9 ee 1d  |>....S...S......|
00006090  bf ed 06 c9 c0 5d 1d 30  56 f4 2c 11 ff d5 f9 a6  |.....].0V.,.....|
000060a0  ce 08 46 0c 5a 69 f4 9c  3e e2 24 5e 66 e9 9b 7f  |..F.Zi..>.$^f...|
000060b0  30 bc 75 ae ce 3d 00 96  c5 01 b5 00 90 45 00 97  |0.u..=.......E..|
000060c0  2f 5a 97 0c 3c b5 e4 08  3d b5 2d e6 db 2c bc dd  |/Z..<...=.-..,..|
000060d0  15 a6 ee 03 f4 ac 84 2e  bc f4 8d cf 7e 58 f9 54  |............~X.T|
000060e0  58 be a3 dd fa c0 0e 9c  a3 f5 c9 20 e2 7d 5b fd  |X.......... .}[.|
000060f0  f4 9c f4 15 ce f0 41 37  29 29 f6 9c d6 4f 9d 29  |......A7))...O.)|
00006100  a6 2c ed 9e de eb 67 2a  bc c4 3a 9e b3 98 02 c0  |.,....g*..:.....|
00006110  5b f4 18 48 c5 59 fe 76  59 f9 f4 cd 30 13 ca c5  |[..H.Y.vY...0...|
00006120  72 dd 13 84 fb 51 37 ef  6e 0e 9c f0 e1 2c 5e 6b  |r....Q7.n....,^k|
00006130  e8 9b 08 86 07 4e 08 5b  81 a2 45 f4 07 ce f6 e5  |.....N.[..E.....|
00006140  56 59 08 b7 ee 5c f4 9c  1c 1d 2d 5d 0b 09 ee e5  |VY...\....-]....|
00006150  e4 bb f8 08 1d e5 10 85  80 4b 15 06 a7 f5 a5 9f  |.........K......|
00006160  fe c5 7e 94 bb 91 e0 fd  e5 de 99 df b5 2a 97 ce  |..~..........*..|
00006170  66 2d bc 41 e2 ff 9d 53  36 f4 9c 41 66 3e 4b 42  |f-.A...S6..Af>KB|
00006180  97 8f bf 84 ca bf a2 9b  ef 97 de eb 67 2a bc 31  |............g*.1|
00006190  e2 ee 9d 53 36 f4 9c a2  c0 e9 97 de eb 67 2a bc  |...S6........g*.|
000061a0  66 e4 9d d3 7f 62 dd 8d  12 ef 00 ec 1d e0 45 f4  |f....b........E.|
000061b0  1c 36 b5 9c de eb c4 2a  bc 04 5a c0 5b f4 87 cd  |.6.....*..Z.[...|
000061c0  bc c3 89 92 e3 34 ba 79  7e cb 1e f8 cf b7 a8 ad  |.....4.y~.......|
000061d0  35 20 ad de a4 be 2a 9d  ce c0 c4 bb 65 cb eb f4  |5 ....*.....e...|
000061e0  87 cd bc ad 89 92 e3 32  ba 79 7e cb f9 a0 fb 33  |.......2.y~....3|
000061f0  20 ad a8 1e dc a5 b7 ea  02 bf 10 0e 56 10 0d 62  | ...........V..b|
00006200  6d 00 06 30 64 64 06 08  03 07 66 f4 09 09 b6 f1  |m..0dd....f.....|
00006210  6b fd 03 0a eb 6f 09 0b  ec 6f 10 b8 a7 5c f4 f1  |k....o...o...\..|
00006220  bf 63 18 59 d5 f4 83 bd  62 08 59 d5 f4 83 bd c8  |.c.Y....b.Y.....|
00006230  09 02 00 de a1 d6 b5 2a  9b ce 78 c1 bf 4b 97 98  |.......*..x..K..|
00006240  bd 40 53 cd 8c 52 fc d5  a3 b2 ed 9c de eb c0 2a  |.@S..R.........*|
00006250  bc 1b c6 eb 4d c5 9a 4d  2d 79 55 7f 44 cd 64 dc  |....M..M-yU.D.d.|
00006260  97 d6 bd 40 53 cd 58 3e  fc e5 59 b2 ed a4 be ed  |...@S.X>..Y.....|
00006270  9b de eb c0 2a bc cc 31  dc 54 97 db 2f fc 40 5c  |....*..1.T../.@\|
00006280  b2 8c dd de a3 be 2a 9b  ce 31 c0 cb 97 cc bd 40  |......*..1.....@|
00006290  c2 c1 c4 8c 22 fc d5 a3  b2 ed 98 de eb 31 2a cc  |...."........1*.|
000062a0  cc 28 dc c3 c1 97 4b 15  fc 40 5c de a2 be 2a 97  |.(....K..@\...*.|
000062b0  ce d6 30 0c d5 ce 84 db  c4 c1 94 4c 09 fc 40 5c  |..0........L..@\|
000062c0  de a2 be 2a 97 ce cc 31  dc 55 97 db ff fb 40 5c  |...*...1.U....@\|
000062d0  de a2 be 2a 98 ce 28 31  cc 97 cc bd 40 56 cd a2  |...*..(1....@V..|
000062e0  f4 fb e5 9b de eb c0 2a  bc cc 31 dc c8 c1 97 4b  |.......*..1....K|
000062f0  e9 fb 40 5c b2 8c dd de  a3 be 2a 9b ce 31 c0 cb  |..@\......*..1..|
00006300  97 cc bd 40 c9 c1 c4 8c  dc fb d5 a3 b2 ed 9b de  |...@............|
00006310  eb c0 2a bc cc 31 dc ca  c1 97 4b cf fb 40 5c b2  |..*..1....K..@\.|
00006320  8c dd de a3 be 2a 97 ce  a8 31 dc 97 d6 bd 40 cb  |.....*...1....@.|
00006330  c1 c4 a2 c2 fb e5 97 de  eb 31 2a cc 97 cc bd 40  |.........1*....@|
00006340  cc c1 c4 a2 b8 fb e5 97  de eb 38 0c 2a 5c 84 0e  |..........8.*\..|
00006350  c6 b5 95 d0 cd 40 cd c1  c4 a2 ac fb e5 9b de eb  |.....@..........|
00006360  c1 2a bc d6 50 0c d5 d4  84 db ce c1 97 4c 9f fb  |.*..P........L..|
00006370  40 5c 08 91 04 30 44 0e  b4 0e b7 55 7d 82 ee de  |@\...0D....U}...|
00006380  a3 be 2a 9b ce 40 64 bf  4b d2 84 db cf c1 96 4c  |..*..@d.K......L|
00006390  8d fb 40 5c a2 94 bb 08  af 08 b6 55 7b 80 ee de  |..@\.......U{...|
000063a0  a3 be 2a 97 ce cc 31 dc  d0 c1 97 4b 7d fb 40 5c  |..*...1....K}.@\|
000063b0  93 a2 be 40 d1 c1 c4 93  78 de b5 40 d2 c1 c4 de  |...@....x..@....|
000063c0  74 de b5 2a 97 ce cc 31  dc d3 c1 97 4b 6b fb 40  |t..*...1....Kk.@|
000063d0  5c de a2 be 2a 97 ce a9  31 ec d4 c1 97 4b 61 fb  |\...*...1....Ka.|
000063e0  40 5c de a2 be 2a 97 ce  a9 31 ec d5 c1 97 4b 57  |@\...*...1....KW|
000063f0  fb 40 5c de a2 be 2a 97  ce 9b ff dd dd 00 de ce  |.@\...*.........|
00006400  f6 dd 97 d6 bd 40 d6 c1  c4 a2 48 fb e5 97 de eb  |.....@....H.....|
00006410  89 2a dc cc 9a dd d7 c1  97 4b 3d fb 40 5c 93 a2  |.*.......K=.@\..|
00006420  be 40 d8 c1 c4 de 38 de  b5 2a 97 ce cc 31 dc d9  |.@....8..*...1..|
00006430  c1 97 4b 2f fb 40 5c de  a2 be 2a 97 ce 97 31 bc  |..K/.@\...*...1.|
00006440  40 da c1 c4 a2 26 fb e5  db c1 93 4b 21 de 40 5c  |@....&.....K!.@\|
00006450  dc c1 93 4b 2c de 40 5c  97 de eb 31 2a cc 57 97  |...K,.@\...1*.W.|
00006460  db 15 fb 40 5c de a2 be  2a 97 ce 5b 98 dd 2d 72  |...@\...*..[..-r|
00006470  46 4c cc 01 71 d4 57 97  db 07 fb 40 5c de a2 be  |FL..q.W....@\...|
00006480  2a 97 ce 97 98 bd 40 de  c1 c4 a2 fe fa e5 97 de  |*.....@.........|
00006490  eb 31 2a cc 97 cc bd 40  e0 c1 c4 a2 f4 fa e5 97  |.1*....@........|
000064a0  de eb 31 2a cc 97 cc bd  40 e2 c1 c4 a2 ea fa e5  |..1*....@.......|
000064b0  97 de eb 98 2a dc e3 c1  97 4b e1 fa 40 5c de a2  |....*....K..@\..|
000064c0  be 2a 9b ce 31 bf cb 97  e1 bd 40 e5 c1 c4 9c d6  |.*..1.....@.....|
000064d0  fa b5 0f c9 2c 4d 78 25  cc 0f d5 75 4e 0f d7 0f  |....,Mx%...uN...|
000064e0  d6 44 70 1a bb 3d 6c ce  f5 14 a0 a4 a3 7c eb 97  |.Dp..=l......|..|
000064f0  de eb 31 2a cc 97 cc bd  40 e4 c1 c4 a2 bc fa e5  |..1*....@.......|
00006500  97 de eb 98 2a dc e6 c1  97 4b b3 fa 40 5c de a2  |....*....K..@\..|
00006510  be 2a 97 ce 97 31 bc 40  ea c1 c4 50 aa fa e5 de  |.*...1.@...P....|
00006520  a2 be 2a 97 ce 07 98 ed  08 cc ed 08 39 cd 5d 09  |..*.........9.].|
00006530  ce ed 14 27 cf 5d 97 df  bd 40 eb c1 c4 a2 96 fa  |...'.]...@......|
00006540  e5 9d b6 bb df c1 93 4b  af dd 42 5c 9d b6 bb 58  |.......K..B\...X|
00006550  93 db a9 dd 42 5c 97 de  eb 92 2a ec 9d b6 bb 58  |....B\....*....X|
00006560  93 db a8 fa 42 5c de a2  be 2a 97 ce a9 31 ec e8  |....B\...*...1..|
00006570  c1 97 4b 75 fa 40 5c de  a2 be 2a 97 ce b6 dc bb  |..Ku.@\...*.....|
00006580  93 a1 bb 4e 93 ee 69 fa  dd 40 ec c1 c4 a2 d4 fa  |...N..i..@......|
00006590  e5 97 de eb 4a 2a ec ab  98 ed d0 2c dd f1 c1 97  |....J*.....,....|
000065a0  4b 59 fa 40 5c de a2 be  2a 97 ce d7 98 dd 59 97  |KY.@\...*.....Y.|
000065b0  db 4f fa 40 5c 93 a2 be  40 59 cd b5 4a dd b5 62  |.O.@\...@Y..J..b|
000065c0  9d db 42 f3 c1 c4 de 64  dd b5 2a 97 ce f4 31 cc  |..B....d..*...1.|
000065d0  f5 56 c9 77 f7 d9 04 3b  b6 5e f7 20 9d b1 7a ed  |.V.w...;.^. ..z.|
000065e0  c9 23 99 a4 cd ca aa 7b  f9 d9 0a f3 ed cc d7 dd  |.#.....{........|
000065f0  e0 18 27 d5 ed c1 97 4b  25 fa 40 5c de a2 be 2a  |..'....K%.@\...*|
00006600  99 ce 93 31 dc 5c f4 9c  5c f5 9c 5c f6 9c fd f7  |...1.\..\..\....|
00006610  9c b0 7f ed ae 92 ed ac  2d ed cb 2c dd ef c1 97  |........-..,....|
00006620  4b 0b fa 40 5c 4e d5 a2  5e a0 de eb 61 63 2a 4c  |K..@\N..^...ac*L|
00006630  36 9c 66 3b 2c bf db cf  d1 bb 60 0d 00 2c 54 4a  |6.f;,.....`..,TJ|
00006640  84 cb 4e db cd 19 db de  1a 58 d9 02 ad 8c 49 23  |..N......X....I#|
00006650  aa da 4e 15 f9 d9 02 d0  f7 49 3a aa d9 4e 62 ff  |..N......I:..Nb.|
00006660  d9 4b 4f ce 30 dc bd 44  20 bb 75 76 de 2f aa d8  |.KO.0..D .uv./..|
00006670  4e 4f 0e ea e4 07 a0 a4  0b 94 9f 4b 75 fc 2d 5d  |NO.........Ku.-]|
00006680  4f 62 ed dc 4b dc 20 30  bb 76 44 eb d7 01 2b e4  |Ob..K. 0.vD...+.|
00006690  6d 6e 54 a3 32 73 ff 80  2a 52 74 a4 a2 b6 42 aa  |mnT.2s..*Rt...B.|
000066a0  8d b0 aa 64 09 e9 11 06  98 c5 0a ab 70 49 62 e6  |...d........pIb.|
000066b0  da 30 4f be 44 20 bb 4f  0a 77 e5 20 30 bb 09 94  |.0O.D .O.w. 0...|
000066c0  00 ed 43 4d fc 2d 5d 30  4f be 45 20 bb 4f 80 cb  |..CM.-]0O.E .O..|
000066d0  a8 0b ce 2e 52 54 9c a2  99 a2 aa b1 97 aa 84 78  |....RT.........x|
000066e0  aa a0 10 b9 2d c7 dc c1  38 fc e5 67 a0 49 f4 22  |....-...8..g.I."|
000066f0  61 fa 63 3a 23 63 fd 50  2a 42 75 aa b0 b6 aa 09  |a.c:#c.P*Bu.....|
00006700  8d 9a e5 ff ac a4 5b 7d  2c 5d 23 94 9f 4b 23 fc  |......[},]#..K#.|
00006710  2d 5d 81 62 be 00 93 01  77 54 12 e8 7d 5b 0a a0  |-].b....wT..}[..|
00006720  c9 4b 18 57 e9 80 47 12  2c 5c 55 62 5d 18 08 91  |.K.W..G.,\Ub]...|
00006730  e5 1d 12 ac 16 68 5f e5  5c 3d f4 2c 01 89 04 36  |.....h_.\=.,...6|
00006740  42 ef de e7 b5 37 13 26  92 62 06 4e e2 22 7f fb  |B....7.&.b.N."..|
00006750  d0 73 ed 61 98 b5 2a 74  9c 44 2a a2 52 aa 97 99  |.s.a..*t.D*.R...|
00006760  aa 78 b1 aa 10 84 9a 47  cc 09 a2 7c 6f 45 a3 6c  |.x.....G...|oE.l|
00006770  36 85 3a 6e 1c 65 0a 33  67 a7 6c 2a 66 f3 02 22  |6.:n.e.3g.l*f.."|
00006780  3c fd 10 22 00 35 24 e3  4d 37 29 88 f0 10 1f 35  |<..".5$.M7)....5|
00006790  45 00 da b3 95 e7 04 87  54 00 1e 2c 5d a7 16 de  |E.......T..,]...|
000067a0  86 b9 cd 00 01 4f 4e b3  ee ea f8 16 9d f4 4f ce  |.....ON.......O.|
000067b0  c7 57 c9 cb fb 2d 5d 4d  4f a8 3e 6e 1a 69 9d 32  |.W...-]MO.>n.i.2|
000067c0  61 ee 69 99 22 66 f5 6e  27 23 65 fe 7f 2a 96 69  |a.i."f.n'#e..*.i|
000067d0  14 e2 b7 6b bd 0e 04 b3  4e 3f b1 57 49 f0 bf 99  |...k....N?.WI...|
000067e0  51 3d cc 00 80 77 5c 59  1e 9d 20 00 82 d5 5d 56  |Q=...w\Y.. ...]V|
000067f0  b9 5d f0 ba 1e f7 d9 1e  59 d9 00 81 fa 59 f7 f4  |.]......Y....Y..|
00006800  9c 8a 2d ed 8a 7d eb 9e  de eb 67 2a bc bf 2e 9b  |..-..}....g*....|
00006810  b3 7d 71 bd 56 e7 c8 5c  8c e8 cf 4b b3 04 ee 04  |.}q.V..\...K....|
00006820  84 07 49 94 07 22 b4 f4  d4 cf 2a 05 5e e2 56 10  |..I.."....*.^.V.|
00006830  9d 97 12 9d 10 7c 12 2d  7d f5 b9 57 49 e7 b5 01  |.....|.-}..WI...|
00006840  64 26 29 a6 04 52 e2 9b  de eb 67 2a bc c8 0a 9b  |d&)..R....g*....|
00006850  c3 fa e1 aa 5c 51 ed 9b  0a b1 9e b0 b5 aa 7d b0  |....\Q........}.|
00006860  18 8a ef 9b 12 9c 8e 7d  eb de 49 cf b5 2a 9b ce  |.......}..I..*..|
00006870  f3 9a 67 3b 44 e7 13 69  54 51 ed 9b 7d ad be 18  |..g;D..iTQ..}...|
00006880  87 ef 9b 12 9c 8e 7d eb  f8 d4 37 cf 55 a0 de eb  |......}...7.U...|
00006890  67 2a bc bf e0 9a b3 c6  ca bb 08 2b 73 4d 01 8a  |g*.........+sM..|
000068a0  75 4d fa 09 00 94 c3 ae  fc 2d 93 db 30 59 3e fb  |uM.......-..0Y>.|
000068b0  55 62 f5 bd 20 5b 00 5a  04 15 3d 5c 77 c2 bc 2e  |Ub.. [.Z..=\w...|
000068c0  20 21 a1 3a 6e 6a 79 0e  33 d4 09 73 10 22 f4 96  | !.:njy.3..s."..|
000068d0  dd f4 28 db 58 55 9b 56  21 9d f2 84 ec fa 34 e7  |..(.XU.V!.....4.|
000068e0  d4 00 17 37 5b 37 fa bd  fa 04 18 d5 a9 37 db 28  |...7[7.......7.(|
000068f0  f4 bd a8 0c 14 e5 62 96  de 12 74 f5 e4 b3 13 ee  |......b...t.....|
00006900  00 41 4f 5b f8 5e 9b aa  7f dd 51 ae ce f5 0c fa  |.AO[.^....Q.....|
00006910  a3 fa ac e7 d4 19 ad ce  04 3c 04 19 55 09 f4 bc  |.........<..U...|
00006920  3d 01 54 b4 01 b7 14 4e  8a 98 e9 62 95 de 11 ec  |=.T....N...b....|
00006930  f5 e4 b1 00 3e e5 13 01  f3 e3 25 68 9b 51 50 c9  |....>.....%h.QP.|
00006940  f7 03 fa a3 88 2c ed 95  87 03 2d 30 f2 ce 47 42  |.....,....-0..GB|
00006950  f4 08 15 b5 f6 3c e8 d4  48 f2 f4 4b f4 0c 15 b5  |.....<..H..K....|
00006960  f7 54 e8 d4 de f4 bb 2a  9d ce 69 9a 67 3b c0 c4  |.T.....*..i.g;..|
00006970  bb 10 48 7c 00 55 fb b2  de f8 05 fa 93 59 fc bd  |..H|.U.......Y..|
00006980  f4 53 d9 2d f4 ac 99 e6  37 5d 53 f4 9c 9c 2d de  |.S.-....7]S...-.|
00006990  a6 08 12 d5 a5 10 1d e5  b7 00 5e e5 12 e4 09 e2  |..........^.....|
000069a0  fc 64 9b 01 04 08 3e 45  0e f9 e9 7c aa bd b6 83  |.d....>E...|....|
000069b0  ce b5 0b 00 40 d5 f4 2a  ba 9b de eb 67 2a bc c0  |....@..*....g*..|
000069c0  3a 9a b3 f4 c6 cf 0c 12  51 59 de a3 be 2a 97 ce  |:.......QY...*..|
000069d0  2f 9a 67 3b f4 c2 cf 36  0c 79 92 de a2 be 2a 9f  |/.g;...6.y....*.|
000069e0  ce 25 9a 67 3b 15 bf eb  b2 5c 55 cf 44 01 88 6d  |.%.g;....\U.D..m|
000069f0  5d 44 a0 01 85 5c c3 12  a0 a4 c8 d3 ee c8 c9 ee  |]D...\..........|
00006a00  c6 c7 ee c6 c5 ee c2 d0  ee c1 cf ee cd ce ee cb  |................|
00006a10  cc ee c9 ca ee 1a fc ee  f4 82 cd f5 66 c9 f7 66  |............f..f|
00006a20  c9 05 6b 64 49 09 02 7d  a3 10 22 de ba d9 ea bb  |..kdI..}..".....|
00006a30  2f ee b9 20 ee 22 21 de  b5 02 c0 e3 33 e6 2c 5d  |/.. ."!.....3.,]|
00006a40  f4 18 42 c5 c4 e2 ba 08  2a ae 4e 07 2a ac 4e 58  |..B.....*.N.*.NX|
00006a50  07 fe 93 ab 7e fb 03 f4  ac b4 31 ee 7d 28 be e4  |....~.....1.}(..|
00006a60  04 47 b5 f4 e6 cb f6 c0  99 10 2a de 30 2b ea a8  |.G........*.0+..|
00006a70  22 9d 36 42 8c 92 36 e9  9b 10 54 e9 04 3d 7d 5b  |".6B..6...T..=}[|
00006a80  e6 e4 bb a7 2d ed fe 04  eb d4 a1 51 dc 18 eb f4  |....-......Q....|
00006a90  4b 1d fe cd f4 a1 bd f9  2c eb d4 de f4 bb 2a 9c  |K.......,.....*.|
00006aa0  ce 66 4f 63 b4 6b b3 99  d3 c3 54 fe e4 04 de 23  |.fOc.k....T....#|
00006ab0  3e 21 f4 dd 4a 66 68 49  a8 ff 41 8f 54 21 20 55  |>!..JfhI..A.T! U|
00006ac0  d5 24 55 03 5a 5e 01 40  94 cb 2e dd a9 8d cc 0e  |.$U.Z^.@........|
00006ad0  ad 0e bc 55 78 0e ac e5  ad f8 84 5b 4a 92 a4 4e  |...Ux......[J..N|
00006ae0  24 7c ec ed 5e ab 70 c2  a4 5e e0 0a 69 5d b8 20  |$|..^.p..^..i]. |
00006af0  aa e5 00 44 03 ee 53 fd  61 9b a8 16 de 03 de 00  |...D..S.a.......|
00006b00  50 35 00 19 f6 5d 8c 2d  ed 0e fc 77 3c 2c f1 da  |P5...].-...w<,..|
00006b10  de 8c be 2a 9d ce 75 99  67 3b c0 c4 bb 60 2c 64  |...*..u.g;...`,d|
00006b20  d4 af e5 06 73 54 fa ef  9b 72 b3 fc 2d 93 db c4  |....sT...r..-...|
00006b30  d4 f9 d5 71 ff 7f 5b 4c  48 a3 f9 55 85 e5 94 5b  |...q..[LH..U...[|
00006b40  cb 7f dd 82 8d cc 7a 7f  ee 24 70 53 4e 24 50 cf  |......z..$pSN$P.|
00006b50  4d 84 cd bd 92 f9 a5 ff  55 90 e5 7f 5b 77 c6 a5  |M.......U...[w..|
00006b60  2e 20 2f 3a 5b 33 6d 2e  75 9f 32 6f 03 72 53 33  |. /:[3m.u.2o.rS3|
00006b70  98 61 f2 a2 74 19 64 ad  32 74 53 aa 89 af aa 11  |.a..t.d.2tS.....|
00006b80  8f 9a 9b de eb 67 2a bc  30 fb 3a 99 43 f4 15 ce  |.....g*.0.:.C...|
00006b90  f2 c0 99 43 3b cd ad 72  e5 d5 36 f4 9c a3 c0 e9  |...C;..r..6.....|
00006ba0  6d f5 af f4 01 b0 b2 6d  f4 af f4 20 1a f4 f4 b7  |m......m... ....|
00006bb0  ba f4 e2 de 35 1c 70 b4  f4 81 dd b3 9c de eb 67  |....5.p........g|
00006bc0  2a bc bf 18 99 b3 70 15  de 52 88 f4 2c 17 de e9  |*.....p..R..,...|
00006bd0  52 f4 9c b7 4d e5 d5 de  a4 be 2a 9c ce 07 99 67  |R...M.....*....g|
00006be0  3b c0 c4 bb 80 dc 24 3e  80 e4 1c c4 34 ad 40 e5  |;.....$>....4.@.|
00006bf0  d5 fa f4 9c 62 b1 fc 2d  93 db 25 64 f9 e5 36 f4  |....b..-..%d..6.|
00006c00  9c 52 08 36 92 af 32 e5  d5 f3 f4 9c 5f b2 fc 2d  |.R.6..2....._..-|
00006c10  93 db 55 dc 8f 5e 9b be  aa 82 95 aa 49 93 aa be  |..U..^......I...|
00006c20  44 aa 3b 20 b7 a2 7d aa  aa a0 94 aa be 0b a9 95  |D.; ..}.........|
00006c30  9c aa 93 82 aa 44 49 aa  20 b8 be 2a aa 3b aa 94  |.....DI. ..*.;..|
00006c40  7d aa 0b a0 9a 9d de eb  67 2a bc c4 c6 98 b3 10  |}.......g*......|
00006c50  46 c0 5b 24 b1 ed 24 ae  ed 3f 2a db 26 81 e2 e3  |F.[$..$..?*.&...|
00006c60  dc e4 15 5e b0 25 de 28  17 ee 0c 47 01 cd 53 70  |...^.%.(...G..Sp|
00006c70  d5 e4 d5 95 b4 be bb 7d  fb 15 fc cd 9e e6 99 7e  |.......}.......~|
00006c80  dc c9 56 16 be a5 06 eb  9c 48 dc 9d 62 dd a0 4c  |..V......H..b..L|
00006c90  dc 04 c7 08 11 45 0c 11  30 10 55 de f4 bb 2a 9c  |.....E..0.U...*.|
00006ca0  ce 93 98 67 3b c0 c4 bb  e4 7d fb 7e 94 bb 16 cf  |...g;....}.~....|
00006cb0  ef 7d 1b bc fa af df 9c  80 d4 d4 de a4 be 2a 9c  |.}............*.|
00006cc0  ce 7f 98 67 3b c5 bf bb  f4 16 ce 1b 0c cb aa 7d  |...g;..........}|
00006cd0  fb 2a fa dd 7e 9c bd 7d  aa bf ae 95 fb 95 7d bb  |.*..~..}......}.|
00006ce0  ec 8f ee 69 95 de 02 9a  03 22 54 02 95 0d 5e 1e  |...i....."T...^.|
00006cf0  02 99 d5 01 81 57 49 f6  0c a7 a4 0d 33 ed 02 d2  |.....WI.....3...|
00006d00  0c 7c 45 0d 7e 00 3b 55  0e 7c 0d 5e 0f 79 07 5e  |.|E.~.;U.|.^.y.^|
00006d10  0c 02 19 e4 44 10 19 d5  14 19 0c 5e a4 07 de 54  |....D......^...T|
00006d20  88 be 7b c7 ba de f4 bb  2a a0 ce 43 98 67 3b ca  |..{.....*..C.g;.|
00006d30  bf bb 1c c6 eb 26 40 a4  94 f0 40 39 29 50 17 47  |.....&@...@9)P.G|
00006d40  c2 7d ae bd cf 9a bf 00  20 73 5d 04 1e 7f 5d 31  |.}...... s]...]1|
00006d50  70 07 c2 44 19 c6 ed d6  56 ab 15 b8 ed 64 f8 dd  |p..D....V....d..|
00006d60  dc 36 fb 10 15 1b 5e 04  11 bd 83 81 cb 00 9d ae  |.6....^.........|
00006d70  5e 3d 00 92 c5 fa 56 ab  05 92 11 3d 18 ca ee 26  |^=....V....=...&|
00006d80  81 bc e5 02 ad 1b 16 ce  91 7d fb c0 cf eb 45 08  |.........}....E.|
00006d90  49 c5 18 c6 ed 31 1d be  7f 0c 1e d5 64 c1 10 1e  |I....1......d...|
00006da0  45 18 14 1e e5 31 1d be  96 9f bb 18 1d e4 e5 b0  |E....1..........|
00006db0  26 db 19 1d ce 80 00 94  b5 f4 a8 be 2c c4 9c 4d  |&...........,..M|
00006dc0  f4 69 be 9f 62 dd 05 be  de fd f8 d9 b4 26 ed f8  |.i..b........&..|
00006dd0  0a 9d 27 fd dd 08 af de  fd f8 d9 9f 28 dd 8d ff  |..'.........(...|
00006de0  dd 69 a2 ed 05 6a de 0a  96 d9 08 95 d9 04 94 d9  |.i...j..........|
00006df0  fa 93 d9 9c 1d dc af f4  eb 8d ff dd 69 a2 ed 20  |............i.. |
00006e00  a8 08 7f 45 ff 99 d9 a0  01 59 d4 15 22 a8 a4 01  |...E.....Y.."...|
00006e10  e4 02 1d 44 08 78 9c 5d  a0 1d dc ff af de a2 8d  |...D.x.]........|
00006e20  dd 6a 69 ee 56 03 9d 2d  06 ad 01 5a ff 4d 06 a3  |.ji.V..-...Z.M..|
00006e30  dd 8d fd d9 69 a2 ed 04  6a de ff f7 d9 6a fb ee  |....i...j....j..|
00006e40  5c 03 9d 5a 07 9d 58 09  9d 8d ff dd 69 a2 ed 1d  |\..Z..X.....i...|
00006e50  fa cd f4 9c bd af a0 ed  8d ff dd 69 a2 ed 03 6a  |...........i...j|
00006e60  de 07 58 d9 09 56 d9 fa  2b da 9c 1d dc f4 a1 bd  |..X..V..+.......|
00006e70  9b de eb 67 2a bc bf 7a  97 b3 ae 42 ed 01 e3 1b  |...g*..z...B....|
00006e80  4e 08 7b b2 5d 20 a0 08  83 45 3e a0 99 49 03 5f  |N.{.] ...E>..I._|
00006e90  b9 61 f4 9c 5b 21 a0 94  04 2c a0 a4 fc b6 ce 7e  |.a..[!...,.....~|
00006ea0  a0 5d 49 2c ff d9 7d ae  bd b4 b2 ef ac 2f ed ae  |.]I,..}....../..|
00006eb0  2d dd 2e af de 7d ae bd  16 ba ef de a3 be 2a 9f  |-....}........*.|
00006ec0  ce 4d 97 67 3b 18 64 bf  4b ac 84 fb d1 84 fb f7  |.M.g;.d.K.......|
00006ed0  c9 cb 13 84 d9 16 07 ea  f7 f4 9c b8 a6 ef 09 08  |................|
00006ee0  85 d5 1b fc c9 6d 7d fb  f4 c4 db ba 02 ba d4 c9  |.....m}.........|
00006ef0  84 fb 73 c9 db 12 01 ce  d4 0d 1d 0c 77 22 50 aa  |..s.........w"P.|
00006f00  50 e2 0f f6 ac 5c 54 ee  7d 01 cb b3 c4 8e bf 0e  |P....\T.}.......|
00006f10  52 ce 01 6b 00 7b 22 52  00 75 e2 08 7b 0f 2c 08  |R..k.{"R.u..{.,.|
00006f20  75 01 6c 22 10 52 ce 23  57 e9 81 a1 08 ba 54 bd  |u.l".R.#W.....T.|
00006f30  84 fb f7 c9 cb 13 60 d9  9b 56 f9 08 84 b0 5e 00  |......`..V....^.|
00006f40  3b fc 2c 00 37 02 28 22  b6 84 fb f0 c9 eb de a7  |;.,.7.("........|
00006f50  be 2a 9c ce 66 2c bc c4  f9 96 b3 32 c0 cb 76 84  |.*..f,.....2..v.|
00006f60  fb 7e 97 bb 94 80 bf c1  84 fb 2b e3 3c 5d fa ed  |.~........+.<]..|
00006f70  9b b3 ff ae 5c 2d 93 db  2c 50 f7 d5 af ad dd 84  |....\-..,P......|
00006f80  94 bb 7d 79 bf be a4 ae  95 9d aa 93 82 aa 44 49  |..}y..........DI|
00006f90  aa 20 b9 be 2a aa 3b aa  94 7d aa 0b a0 9a 9c de  |. ..*.;..}......|
00006fa0  eb 67 2a bc bf c8 96 b3  5b 03 9d 05 15 ee 04 0c  |.g*.....[.......|
00006fb0  04 df 54 fb f4 9c 15 a3  ec 15 58 ef f8 cb 8f 5e  |..T.......X....^|
00006fc0  63 84 db a3 e1 cf de f6  be 2a 9c ce 66 2c bc bf  |c........*..f,..|
00006fd0  af 96 b3 32 c5 cb 7d 97  bb 95 6c bf a9 84 fb 84  |...2..}...l.....|
00006fe0  94 bb a4 6f ef 9c de eb  67 2a bc c6 9c 96 b3 03  |...o....g*......|
00006ff0  c2 db 00 52 e9 e1 5a ab  52 1d fc 4a 10 9d e4 01  |...R..Z.R..J....|
00007000  2e 92 9c bd d9 4b 0e 9d  44 01 2f 92 be e5 99 a4  |.....K..D./.....|
00007010  db e9 9d de eb 67 2a bc  c6 80 96 b3 3d c2 eb 53  |.....g*.....=..S|
00007020  03 9d 5a 00 be 1d 70 94  c3 fa 4d df 9c 28 dd f1  |..Z...p...M..(..|
00007030  bc fc 4d 9e 29 dd 0c 70  14 12 45 0c 50 60 9e 45  |..M.)..p..E.P`.E|
00007040  de a5 be 2a 9c ce 65 96  67 3b 03 c1 db 00 52 e9  |...*..e.g;....R.|
00007050  e1 5a ab 4b 1d fc f6 c4  db 01 bb 01 d3 44 7f 12  |.Z.K.........D..|
00007060  ba c4 26 11 a1 c5 10 1b  0f 5f bb 2d dd de a4 be  |..&......_.-....|
00007070  2a 9c ce 66 2c bc bf 4b  96 b3 32 c6 cb 7d 1d bc  |*..f,..K..2..}..|
00007080  26 48 ef 97 9d bd 5b 7d  fb 04 78 5a 4e 5e e2 0c  |&H....[}..xZN^..|
00007090  57 55 3e 52 ce 51 ce ed  70 a5 dd 84 b4 be 45 95  |WU>R.Q..p.....E.|
000070a0  fb 15 fc cd b3 e6 99 7e  dc c9 5f 50 be 94 f4 ba  |.......~.._P....|
000070b0  59 84 fb f4 a4 de e1 f4  eb 66 e0 f4 a8 bd de ec  |Y........f......|
000070c0  09 b2 2a 97 ce 17 96 67  3b 7b b5 bb 0c 28 f1 e4  |..*....g;{...(..|
000070d0  29 e2 c7 5c a2 2d ed 44  cb 3c b1 22 de 2e 17 b2  |)..\.-.D.<."....|
000070e0  2a 9b ce 07 96 67 3b 50  64 c0 4b e0 97 fb 72 a0  |*....g;Pd.K...r.|
000070f0  00 83 45 58 64 08 4a cc  5a dd cb 2c dd 97 9c bc  |..EXd.J.Z..,....|
00007100  8f f5 f0 c1 54 58 90 63  4e 0a 94 8e 4c 94 0a e2  |....TX.cN...L...|
00007110  b5 42 e2 8e 5c f2 f4 9c  94 a8 bc 3c e2 84 5b 25  |.B..\......<..[%|
00007120  09 a3 3e e0 e0 9d de eb  67 2a bc bf e0 95 b3 7c  |..>.....g*.....||
00007130  64 7b 4b ce 97 fb 54 26  31 5d 58 26 84 5b 8a f5  |d{K...T&1]X&.[..|
00007140  54 8e 54 5a ee 9b b7 0e  9d 3b 8b c0 29 a5 2c ed  |T.TZ.....;..).,.|
00007150  f5 54 54 c5 f4 bf 99 3e  64 54 c5 05 e2 c4 5b c1  |.TT....>dT....[.|
00007160  30 61 d5 0f f4 ac 5a 0e  9d 89 fe ac 5c a2 93 bb  |0a....Z.....\...|
00007170  25 f6 2d 5d a5 2c ed 72  4e f0 09 32 4e ab 70 c9  |%.-].,.rN..2N.p.|
00007180  22 67 1d 65 64 33 79 31  65 3f 33 64 34 6a 3a 8d  |"g.ed3y1e?3d4j:.|
00007190  72 fc a2 73 bb 4f 2a 68  2d 22 a3 69 4d 73 68 33  |r..s.O*h-".iMsh3|
000071a0  95 6c 19 b2 97 05 bf 09  2b fe 37 ee 9b 2b 53 e9  |.l......+.7..+S.|
000071b0  2d d9 e1 d5 0e c1 dd c0  b7 99 2c 00 8b d2 de a5  |-.........,.....|
000071c0  be 2a 9b ce 8d 95 67 3b  90 b4 64 c4 7e 74 5b e5  |.*....g;..d.~t[.|
000071d0  9a 79 ce 80 ca 84 4b a8  e1 9e 5b 8c 26 2e 5d f2  |.y....K...[.&.].|
000071e0  c1 9b 4c 4b f4 40 5c fb  f4 9c ae e1 90 5c 8c 56  |..LK.@\......\.V|
000071f0  00 d0 53 9c e1 84 5b 2c  97 db f4 bc cf 9a f2 c9  |..S...[,........|
00007200  b9 2d fd f4 09 a3 2e f4  38 e8 d4 df f4 eb 45 93  |.-......8.....E.|
00007210  db de 32 da b5 2a 97 ce  9b 02 c7 d4 d8 cd dd e6  |..2..*..........|
00007220  84 fb de a2 be 2a 97 ce  9a 03 c4 d4 84 cd bd a2  |.....*..........|
00007230  e3 ef 01 62 03 2d 00 34  03 86 22 9c f4 db 9d 62  |...b.-.4.."....b|
00007240  dd 9e 64 dd f4 9f bd 9b  de eb c0 2a bc a2 31 bc  |..d........*..1.|
00007250  34 93 db 84 e3 bf f4 d8  cf 5a fd e9 5b b2 ed 5c  |4........Z..[..\|
00007260  b3 ed 5d b4 ed a3 b5 ed  97 de eb 31 2a cc 93 a2  |..]........1*...|
00007270  bb da 35 fd cd 84 fb de  a2 be 2a 9b ce 31 c0 cb  |..5.......*..1..|
00007280  93 a2 bb d2 37 fd 84 e2  bd a3 c8 ef 9b de eb c0  |....7...........|
00007290  2a bc a2 31 bc 0a c1 93  4b e2 cc df c5 84 fb de  |*..1....K.......|
000072a0  a3 be 2a 9b ce 31 c0 cb  93 a2 bb c7 36 fd 84 e2  |..*..1......6...|
000072b0  bd a3 c0 ef 9d de eb ca  2a bc c7 c1 bb a2 31 bc  |........*.....1.|
000072c0  38 93 db ed c2 df ce 15  de 84 e9 bd f4 b7 cf 45  |8..............E|
000072d0  4d 99 de a5 be 2a 9c ce  c1 c5 bb a2 31 bc 39 93  |M....*......1.9.|
000072e0  db e3 bc df 84 e7 bd a4  b3 ef 9d de eb ca 2a bc  |..............*.|
000072f0  c2 c6 bb a2 31 bc 39 93  db e8 b5 df 84 ed bd f4  |....1.9.........|
00007300  ae cf 45 4c 99 de a5 be  2a a0 ce c6 ca bb 42 c2  |..EL....*.....B.|
00007310  eb 47 08 4d e5 a2 31 bc  3b 93 db e4 b0 df ed e8  |.G.M..1.;.......|
00007320  dd f1 f0 dd 84 f2 bd a8  a5 ef 94 de eb 2b a0 ce  |.............+..|
00007330  c1 c5 bb 43 20 4c e5 48  46 ee a2 31 bc 3b 93 db  |...C L.HF..1.;..|
00007340  e3 a8 df 35 e7 ed f0 cf  dd f2 f1 dd a1 84 fb 4c  |...5...........L|
00007350  f4 9c a8 48 e9 9f de eb  ca 2a bc c2 c6 bb 45 41  |...H.....*....EA|
00007360  ee a2 31 bc 3a 93 db e4  a2 df ed e8 dd 14 2a ef  |..1.:.........*.|
00007370  5d 9c 84 fb de a7 be a0  94 ee c4 2b bc cb c0 bb  |]..........+....|
00007380  46 43 ee 31 48 ce 95 a2  bb 9e 3a fd 0c 29 e2 5d  |FC.1H.....:..).]|
00007390  cf 35 de f2 f1 dd 95 84  fb ff f4 9c 95 a2 bb 98  |.5..............|
000073a0  3e fd 84 e2 bd f4 93 cf  49 4c 99 03 a8 de 2b 00  |>.......IL....+.|
000073b0  35 92 0f ac ed c9 23 98  a4 cd ca aa 02 74 fa 49  |5.....#......t.I|
000073c0  0e aa ed f4 ab bd aa 45  dc ab 0e de de f4 bb 2a  |.......E.......*|
000073d0  9b ce 31 c1 cb 9d b9 bb  43 93 db 84 df bf f4 8c  |..1.....C.......|
000073e0  cf 5b fd e9 5c b2 ed 5d  b3 ed 5e b4 ed a3 b5 ed  |.[..\..]..^.....|
000073f0  97 de eb 31 2a cc 9d b9  bb 3e 93 db 84 d4 bf a2  |...1*....>......|
00007400  88 ef 9b de eb c1 2a bc  b9 31 bc 93 9d bb ce 3e  |......*..1.....>|
00007410  fd 86 84 fb 4c f4 9c a3  45 e9 97 de eb 31 2a cc  |....L...E....1*.|
00007420  9d b9 bb 19 c1 93 4b 84  c7 bf a2 84 ef 9b de eb  |......K.........|
00007430  c1 2a bc b9 31 bc 93 9d  bb c4 1a c1 f4 84 e3 bd  |.*..1...........|
00007440  a3 81 ef 9b de eb c1 2a  bc b9 31 bc 93 9d bb bf  |.......*..1.....|
00007450  1b c1 f4 84 e3 bd a3 80  ef 9b de eb c1 2a bc b9  |.............*..|
00007460  31 bc 93 9d bb b8 3f fd  84 14 28 b5 a3 7c ef 9d  |1.....?...(..|..|
00007470  de eb c6 2a bc 3d c2 eb  b9 31 bc 93 9d bb b4 22  |...*.=...1....."|
00007480  c1 f4 ea e3 dd 84 10 29  b5 a5 7a ef 9f de eb c6  |.......)..z.....|
00007490  2a bc 3f c2 eb 45 41 ee  b9 31 bc 93 9d bb ae 34  |*.?..EA..1.....4|
000074a0  c1 f4 ea e3 dd ef ee dd  84 10 2a b5 a7 75 ef 9e  |..........*..u..|
000074b0  de eb c6 2a bc 3e c2 eb  31 40 ce 9d b9 bb 47 93  |...*.>..1@....G.|
000074c0  db e4 a7 df 2c e8 dd ee  d0 dd 84 ef bd a6 73 ef  |....,.........s.|
000074d0  97 de eb 31 2a cc 9d b9  bb 30 c1 93 4b 84 a4 bf  |...1*....0..K...|
000074e0  a2 71 ef 9c de eb c6 2a  bc 31 c2 cb 9d b9 bb 46  |.q.....*.1.....F|
000074f0  93 db e4 a0 df 84 e8 bd  a4 6e ef 9d de eb c6 2a  |.........n.....*|
00007500  bc 3d c2 eb b9 31 bc 93  9d bb 9d 32 c1 f4 e8 e4  |.=...1.....2....|
00007510  dd 84 18 29 b5 a5 6b ef  97 de eb fb 2a bc 28 0f  |...)..k.....*.(.|
00007520  33 d2 54 d8 cc dd df 10  27 d5 69 84 fb de a2 be  |3.T.....'.i.....|
00007530  2a 97 ce b9 31 bc 93 9d  bb 96 40 fd 68 84 fb de  |*...1.....@.h...|
00007540  a2 be 2a 97 ce b9 31 bc  93 9d bb 92 1e c1 f4 67  |..*...1........g|
00007550  84 fb de a2 be 2a 9b ce  31 c1 cb 9d b9 bb 41 93  |.....*..1.....A.|
00007560  db e3 90 df 65 84 fb de  a3 be 2a 9b ce 31 c1 cb  |....e.....*..1..|
00007570  9d b9 bb 42 93 db e3 8e  df 63 84 fb de a3 be 2a  |...B.....c.....*|
00007580  9b ce 31 c1 cb 9d b9 bb  2d c1 93 4b e3 8b df 60  |..1.....-..K...`|
00007590  84 fb de a3 be 2a 9b ce  31 c1 cb 9d b9 bb 45 93  |.....*..1.....E.|
000075a0  db e3 89 df 5d 84 fb de  a3 be 2a 97 ce b9 31 bc  |....].....*...1.|
000075b0  93 9d bb 87 21 c1 f4 5a  84 fb de a2 be 2a 97 ce  |....!..Z.....*..|
000075c0  b9 31 bc 93 9d bb 85 2f  c1 f4 56 84 fb de a2 be  |.1...../..V.....|
000075d0  2a 9b ce 31 c1 cb 9d b9  bb 43 93 db 84 82 bf 5b  |*..1.....C.....[|
000075e0  54 ef 5c b2 ed 5d b3 ed  5e b4 ed a3 b5 ed 9d de  |T.\..]..^.......|
000075f0  eb c6 2a bc 3d c2 eb b9  31 bc 93 9d bb 7f 29 c1  |..*.=...1.....).|
00007600  f4 e8 e4 dd 51 84 fb f9  f4 9c c2 5d de c3 5e de  |....Q......]..^.|
00007610  de a5 be 2a 9d ce c2 c6  bb 31 3d ce 9d b9 bb 2a  |...*.....1=....*|
00007620  c1 93 4b e4 7b df 2b e8  ed 2c d0 ed 84 d1 bd a5  |..K.{.+..,......|
00007630  4e ef 9d de eb c6 2a bc  3d c2 eb b9 31 bc 93 9d  |N.....*.=...1...|
00007640  bb 78 2b c1 f4 e8 e4 dd  4c 84 fb 4e f4 9c a5 48  |.x+.....L..N...H|
00007650  e9 9d de eb c6 2a bc 3d  c2 eb b9 31 bc 93 9d bb  |.....*.=...1....|
00007660  74 44 fd e8 e4 dd d0 2b  de 49 84 fb de a5 be 2a  |tD.....+.I.....*|
00007670  9a ce 98 95 dd cc 94 dd  cd 93 dd ce 92 dd 47 84  |..............G.|
00007680  fb de a2 be 2a 9c ce c2  c6 bb b9 31 bc 93 9d bb  |....*......1....|
00007690  70 3c c1 f4 84 e8 bd f4  46 cf 58 fd e9 59 b2 ed  |p<......F.X..Y..|
000076a0  5a b3 ed 5b b4 ed a4 b5  ed 9c de eb c6 2a bc 31  |Z..[.........*.1|
000076b0  c2 cb 9d b9 bb 3d c1 93  4b e8 6a df 43 84 fb fd  |.....=..K.j.C...|
000076c0  f4 9c b2 58 de b3 59 de  b4 5a de b5 5b de de a4  |...X..Y..Z..[...|
000076d0  be 2a 9b ce 3c c4 c0 4b  62 9a dd d7 ce dd 41 84  |.*..<..Kb.....A.|
000076e0  fb fd f4 9c b2 58 de b3  59 de b4 5a de b5 5b de  |.....X..Y..Z..[.|
000076f0  de a3 be 2a 9b ce 31 c1  cb 9d b9 bb 4a 93 db 84  |...*..1.....J...|
00007700  66 bf f4 3f cf 45 4d 99  de a3 be 2a 9b ce 4a bf  |f..?.EM....*..J.|
00007710  db 2c 98 dd 84 cd bd f4  3d cf 45 4d 99 de a3 be  |.,......=.EM....|
00007720  2a 97 ce b9 31 bc 93 9d  bb 61 36 c1 f4 3c 84 fb  |*...1....a6..<..|
00007730  de a2 be 2a 9c ce 3a c2  eb 0b 31 dc 39 71 3a 2d  |...*..:...1.9q:-|
00007740  22 9d b9 bb 83 93 bb e3  5c df 84 e9 bd a4 3b ef  |".......\.....;.|
00007750  9c de eb c1 2a bc 31 c7  cb 9d b9 bb 48 93 db 0e  |....*.1.....H...|
00007760  57 df 36 c1 99 e4 ce dd  84 eb bd a4 3a ef 9c de  |W.6.........:...|
00007770  eb c1 2a bc 31 c7 cb 9d  b9 bb 48 93 db 0e 53 df  |..*.1.....H...S.|
00007780  36 c1 99 ce 25 dd eb e4  dd 39 84 fb de a4 be 2a  |6...%....9.....*|
00007790  9e ce c2 c6 bb 40 3e ee  b9 31 bc 93 9d bb 52 49  |.....@>..1....RI|
000077a0  fd c1 0e 9d ce 36 d9 ea  e4 dd ef ee dd 38 84 fb  |.....6.......8..|
000077b0  de a6 be 2a 9e ce c2 c6  bb 40 3e ee b9 31 bc 93  |...*.....@>..1..|
000077c0  9d bb 50 49 fd c1 0e 9d  25 36 d9 e4 ce dd ee ea  |..PI....%6......|
000077d0  dd 84 ef bd a6 40 00 e6  9d f6 bf 00 db b0 5c 45  |.....@........\E|
000077e0  81 6b dd a0 62 c0 5c 3c  12 9d cd d6 b9 81 13 ce  |.k..b.\<........|
000077f0  6b ce 8a ba 00 78 14 3d  d0 cc aa 34 93 db 4a 3a  |k....x.=...4..J:|
00007800  58 88 4d 7f d8 34 2c f3  00 cf f2 a8 90 1a a2 70  |X.M..4,........p|
00007810  5f aa 20 5d c1 3a 64 13  6a 2a a8 91 1a a2 70 5f  |_. ].:d.j*....p_|
00007820  aa 20 a8 c1 2a 6f ea 48  2a 95 21 e9 69 f3 d1 5b  |. ..*o.H*.!.i..[|
00007830  81 6b dd 3b 19 9d ee f0  7e 92 b6 04 51 92 f7 32  |.k.;....~...Q..2|
00007840  fd 00 de 00 06 43 0c 2d  86 4d 8a 00 e0 c4 01 e7  |.....C.-.M......|
00007850  4e 3e 74 93 bc 5e 45 12  ac 61 d5 d6 01 2c 92 f0  |N>t..^E..a...,..|
00007860  cd bb 8b 82 13 a6 14 ce  db 14 80 ea 4a 80 c5 80  |............J...|
00007870  a8 55 60 93 bf 4b 95 d6  ee 00 c0 da 5f 89 06 ef  |.U`..K......_...|
00007880  0c 2c 44 93 44 48 61 00  dd 54 3c 12 9d d5 d6 e9  |.,D.DHa..T<.....|
00007890  68 07 00 29 fc 09 19 29  01 1c 99 1a 19 99 1d 1c  |h..)...)........|
000078a0  99 12 ff 9f 1b 1a 99 68  0e 02 1d 1b 99 7d 7d dd  |.......h.....}}.|
000078b0  7d 7d dd 7d 7d dd 7d 7d  dd 7d 7d dd 7d 7d dd 7d  |}}.}}.}}.}}.}}.}|
000078c0  7d dd 7d 7d dd 7d 7d dd  7d 7d dd 7d 7d dd 7d 7d  |}.}}.}}.}}.}}.}}|
000078d0  dd 7d 7d dd 7d 7d dd 7d  7d dd 7d 7d dd 7d 7d dd  |.}}.}}.}}.}}.}}.|
000078e0  7d 7d dd 7d 7d dd 7d 7d  dd 7d 7d dd 7d 7d dd 7d  |}}.}}.}}.}}.}}.}|
000078f0  7d dd 7d 7d dd 7d 7d dd  7d 7d dd 7d 7d dd 7d 7d  |}.}}.}}.}}.}}.}}|
00007900  dd 7d 7d dd 7d 7d dd 7d  7d dd 7d 7d dd 7d 7d dd  |.}}.}}.}}.}}.}}.|
00007910  7d 7d dd 7d 7d dd 7d 7d  dd 7d 7d dd 7d 7d dd 7d  |}}.}}.}}.}}.}}.}|
00007920  7d dd 7d 7d dd 7d 7d dd  7d 7d dd 7d 7d dd 7d 7d  |}.}}.}}.}}.}}.}}|
00007930  dd 7d 7d dd 7d 7d dd 7d  7d dd 7d 7d dd 7d 7d dd  |.}}.}}.}}.}}.}}.|
00007940  7d 7d dd 7d 7d dd 7d 7d  dd 7d 7d dd 7d 7d dd 7d  |}}.}}.}}.}}.}}.}|
00007950  7d dd 7d 7d dd 7d 7d dd  7d 7d dd 7d 7d dd 7d 7d  |}.}}.}}.}}.}}.}}|
00007960  dd 7d 7d dd 7d 7d dd 7d  7d dd 7d 7d dd 7d 7d dd  |.}}.}}.}}.}}.}}.|
00007970  7d 7d dd 7d 7d dd 7d 7d  dd 7d 7d dd 7d 7d dd 7d  |}}.}}.}}.}}.}}.}|
00007980  7d dd 7d 7d dd 7d 7d dd  7d 7d dd 7d 7d dd 7d 7d  |}.}}.}}.}}.}}.}}|
00007990  dd 7d 7d dd 7d 7d dd 7d  7d dd 7d 7d dd 7d 7d dd  |.}}.}}.}}.}}.}}.|
000079a0  7d 7d dd 7d 7d dd 7d 7d  dd 7d 7d dd 7d 7d dd 7d  |}}.}}.}}.}}.}}.}|
000079b0  7d dd 7d 7d dd 7d 7d dd  7d 7d dd 7d 7d dd 7d 7d  |}.}}.}}.}}.}}.}}|
000079c0  dd 7d 7d dd 7d 7d dd 7d  7d dd 7d 7d dd 7d 7d dd  |.}}.}}.}}.}}.}}.|
000079d0  7d 7d dd 7d 7d dd 7d 7d  dd 7d 7d dd 7d 7d dd 7d  |}}.}}.}}.}}.}}.}|
000079e0  7d dd 7d 7d dd 7d 7d dd  7d 7d dd 7d 7d dd 7d 7d  |}.}}.}}.}}.}}.}}|
000079f0  dd 7d 7d dd 7d 7d dd 7d  7d dd 7d 7d dd 7d 7d dd  |.}}.}}.}}.}}.}}.|
00007a00  7d 7d dd 7d 7d dd 05 7d  9d 98 06 12 29 13 12 99  |}}.}}..}....)...|
00007a10  19 90 30 08 2c 08 22 34  08 02 00 00 00 00 00 00  |..0.,."4........|
00007a20  03 09 00 16 90 00 23 90  22 22 99 4f 22 99 24 91  |......#."".O".$.|
00007a30  99 35 09 00 09 00 00 00  00 09 00 ff f0 ff 0f b0  |.5..............|
00007a40  05 20 86 00 a9 74 18 02  00 00 00 00 00 00 00 00  |. ...t..........|
00007a50  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00007c10  00 00 00 00 0c 01 12 0c  1e 12 18 0e 13 2c 17 0c  |.............,..|
00007c20  0f 5e 8b 79 25 72 08 8b  3b 6b 03 68 11 12 5c e8  |.^.y%r..;k.h..\.|
00007c30  a0 cc 32 5c 60 1a a9 54  5e dc 32 5f ec 67 48 7c  |..2\`..T^.2_.gH||
00007c40  00 cc c0 d9 f1 11 16 b0  30 3e 00 a0 8c 9b 00 5d  |........0>.....]|
00007c50  00 60 08 00 f9 f9 9e 00  0c 03 6c 06 be 01 e0 fd  |.`........l.....|
00007c60  f2 0f b3 03 00 00 fe 07  5b 00 cf 03 08 0e 0e 0e  |........[.......|
00007c70  ba f4 bf 0e 00 fd 34 73  00 00 fb fa 9e 00 01 13  |......4s........|
00007c80  6c 35 5c 89 7b 44 95 f5  71 ff ed 00 80 00 44 01  |l5\.{D..q.....D.|
00007c90  3f 01 ae 88 a0 3e 36 7b  04 00 d8 4e 60 00 b1 f8  |?....>6{...N`...|
00007ca0  ff af 20 00 ae 04 60 ae  dc 9f af 00 00 b7 00 00  |.. ...`.........|
00007cb0  12 bb 00 00 0e 12 00 ed  f1 65 00 00 ff 7d fa 02  |.........e...}..|
00007cc0  00 10 28 5e 00 2a 4a 5d  80 00 10 56 a4 00 08 0c  |..(^.*J]...V....|
00007cd0  09 01 0c 02 0c 03 0c 01  0d 0d 01 0c 03 0d 0d 01  |................|
00007ce0  0c 0c 01 0d 01 0c 01 0c  0d 0d 0d 0d 0d 0d 0d 0d  |................|
00007cf0  17 0c 5c a4 5c ad 20 af  32 ff 00 db fe fd 00 11  |..\.\. .2.......|
00007d00  0c 0c 0c 15 01 0d 03 5d  0c 00 ff 0e 81 05 00 fd  |.......]........|
00007d10  95 09 01 b0 00 20 01 5d  fe 02 b0 04 18 5f 82 5e  |..... .]....._.^|
00007d20  7b bf 00 1a 6c 08 5c 74  2a ae 0b b0 bd fe df ab  |{...l.\t*.......|
00007d30  64 00 f3 0f 6f 00 ed ff  ff 64 01 cf 00 08 0d 0e  |d...o....d......|
00007d40  16 b0 f8 1f af f8 df b2  fd 7f b0 00 20 b0 03 20  |............ .. |
00007d50  0e 00 f8 2f c2 00 df 01  10 61 00 cc ff ea 02 8b  |.../.....a......|
00007d60  fe 09 06 ed f4 cf 00 01  a0 a1 00 7c 00 7c 00 c2  |...........|.|..|
00007d70  fc 7f 00 58 61 79 00 bd  d4 ff 0e 00 d0 4e 60 00  |...Xay.......N`.|
00007d80  12 0e b1 f4 ff 9c 00 ae  00 c0 af 00 00 af 00 00  |................|
00007d90  af 00 00 af 00 00 b5 00  00 12 0e ae f8 ff b9 fc  |................|
00007da0  ff 0e 0e 0e 0e 0e b0 d0  40 00 1c 2f 5e 03 1a 00  |........@../^...|
00007db0  f0 27 5e 00 1a 2a 4a 5c  80 5d 00 00 11 56 a4 00  |.'^..*J\.]...V..|
00007dc0  09 07 0c 01 0d 06 0d 0d  0d 0d 0c 02 0c 0d 0d 0d  |................|
00007dd0  0d 0c 02 0c 0d 0d 0d 0d  0d 0d 0d 4c 00 52 ff ff  |...........L.R..|
00007de0  00 11 0d 02 0c 03 19 0d  1d 01 00 9a ff ff 00 1c  |................|
00007df0  00 53 20 20 04 50 b4 0e  00 b5 ac 0c c4 e1 02 cc  |.S  .P..........|
00007e00  61 34 b2 0e 08 62 f1 5f  08 b4 05 eb b0 b2 07 af  |a4...b._........|
00007e10  00 0b b0 46 fb af 09 08  ae 06 fc 5d da 2a b2 00  |...F.......].*..|
00007e20  fd 00 98 dd 26 01 be 07  a0 00 f2 1f b0 00 b9 00  |....&...........|
00007e30  b0 00 01 40 13 01 00 64  20 a7 01 17 af 00 00 00  |...@...d .......|
00007e40  b5 04 4b 02 00 3e fb b9  05 12 00 f4 52 41 04 b0  |..K..>......RA..|
00007e50  04 05 00 9c 37 1b 01 00  27 80 a1 01 00 ce cf d2  |....7...'.......|
00007e60  06 00 6e 61 20 02 00 9d  be 01 05 cb 00 e0 cd ff  |..na ...........|
00007e70  ff af 00 10 00 65 54 bf  00 00 9b 9b 7f 00 8c 01  |.....eT.........|
00007e80  00 ff ff ff 0f 00 6d 45  cc 0b b7 f7 f3 00 01 fb  |......mE........|
00007e90  a9 01 f3 eb 07 61 d0 4d  b0 10 ae b5 ad 4b b1 44  |.....a.M.....K.D|
00007ea0  09 ae 01 fe eb a9 7c 00  f2 0f af 00 af 00 10 b6  |......|.........|
00007eb0  20 5c 00 46 06 f8 00 b2  03 01 b2 08 02 b2 af f3  | \.F............|
00007ec0  00 4f 0c 00 01 00 04 f0  b1 00 6a fc f4 04 ed b3  |.O........j.....|
00007ed0  fa 0e ae f8 af 0d b3 0c  4f ae f1 f1 00 bb be b4  |........O.......|
00007ee0  00 00 53 53 39 01 5c ad  c1 4e fb 00 01 06 f2 00  |..SS9.\..N......|
00007ef0  00 f2 f6 b8 00 f3 12 b4  b0 ad 56 b7 33 f9 b0 19  |..........V.3...|
00007f00  05 ae b4 fb af 45 af 00  a1 df 88 00 00 c3 ff ff  |.....E..........|
00007f10  00 00 98 74 65 01 b1 bf  f1 6d 00 b7 4d f9 00 b3  |...te....m..M...|
00007f20  fb ed 00 62 47 5c b9 b1  00 fa b2 00 0a 00 54 a9  |...bG\........T.|
00007f30  fb 00 ad fe b1 f5 ad ae  b9 56 b3 00 f5 b1 54 09  |.........V....T.|
00007f40  00 bd c4 db 00 02 c8 ed  38 af 41 01 b0 0f ff b0  |........8.A.....|
00007f50  ca e0 7b e6 b0 00 fc 5e  45 00 0e ef fa 00 64 04  |..{....^E.....d.|
00007f60  ba e8 0a 00 f4 f3 e7 01  60 0e b0 08 02 af fd f7  |........`.......|
00007f70  6a 08 0e b7 f7 ff 00 09  f1 f1 00 b2 ef 01 61 bf  |j.............a.|
00007f80  61 00 4f 5e 14 bb d4 f0  2a da 93 9a 00 72 20 88  |a.O^....*....r .|
00007f90  00 e7 ae 45 b6 49 08 b7  0a 03 af fa 03 00 bf 8a  |...E.I..........|
00007fa0  9b 00 00 41 65 5f 00 b2  06 bb 00 f8 43 f6 00 00  |...Ae_......C...|
00007fb0  07 fd 08 03 69 fb 00 93  81 1d 17 00 02 3f b3 0f  |....i........?..|
00007fc0  b7 00 90 00 0c 30 54 01  be 00 00 00 f3 0f 8f 00  |.....0T.........|
00007fd0  ca 51 c8 5d b5 d1 fa 35  bd 58 0f 00 fa f0 cc 00  |.Q.]...5.X......|
00007fe0  f2 ae 09 5d 00 80 ff ed  04 d0 00 fc 7f 1d 05 00  |...]............|
00007ff0  01 80 02 01 0d 0c 01 0f  01 0f 13 4d 00 96 ff ff  |...........M....|
00008000  00 00 e5 fe ff 00 00 35  f1 b0 05 00 f2 0f ef 01  |.......5........|
00008010  00 00 80 5d 05 00 30 28  5e 00 00 d1 57 a4 00 02  |...]..0(^...W...|
00008020  0c 11 5c b8 00 71 fe ff  00 46 5c 54 1d 0f 0e 13  |..\..q...F\T....|
00008030  01 0e 04 0c 06 7e a5 43  5d 26 4a 00 cf 8b a0 06  |.....~.C]&J.....|
00008040  00 f2 cf 5c 07 00 05 80  02 01 01 0e 00 e8 ff ff  |...\............|
00008050  00 01 0c 00 19 f0 b0 06  00 02 90 4c 07 00 f2 7f  |...........L....|
00008060  02 01 0c 02 00 ea ff ff  00 0c 0d 00 9c 00 00 05  |................|
00008070  5e 02 5d 09 ae f4 fc 0f  0e 5c f7 16 ae f5 fe af  |^.]......\......|
00008080  b0 c1 cb 5b 50 b0 87 07  77 de ca 80 ca be 00 00  |...[P...w.......|
00008090  be 8b 00 6c 74 01 ae 80  ff 5f ff b8 0c fc c1 fd  |...lt...._......|
000080a0  ee 5c 78 5d 86 69 fa 5c  7f 5c 80 5d 01 5d 00 5d  |.\x].i.\.\.].].]|
000080b0  00 68 ff ae 80 9f 9b 80  5e 00 62 00 64 00 5c 81  |.h......^.b.d.\.|
000080c0  5d 84 0c 5c 7a 01 5c 8a  5c 74 5c c2 79 c1 ae 7d  |]..\z.\.\t\.y..}|
000080d0  df 5c 80 01 ae 80 ff 5c  80 7a 01 af fe cf 6c 00  |.\.....\.z....l.|
000080e0  10 9b fa b0 00 20 b2 83  a1 5c 89 6a 74 ae a1 a7  |..... ...\.jt...|
000080f0  0c af 5d 58 6d 81 c1 01  ee af 01 10 00 06 d0 73  |..]Xm..........s|
00008100  00 c9 a6 f0 cb 52 0f 0d  01 0c ae fb ff 0c ae fd  |.....R..........|
00008110  ff ae ff ff 02 ae fe ff  af 00 00 12 ae f8 ff af  |................|
00008120  00 00 12 b2 f8 ff 0c 12  af 00 00 ae f6 ff d0 01  |................|
00008130  08 b1 01 28 b4 01 66 af  89 0d 5e 77 01 5d ff af  |...(..f...^w.]..|
00008140  fe 67 ae 08 80 7c 02 6b  f7 11 5f 82 5e 79 5d fe  |.g...|.k.._.^y].|
00008150  0c af 06 c8 0c bf f5 6f  01 0c 05 0d 01 11 01 5c  |.......o.......\|
00008160  6b 5d c0 01 5d 00 60 bf  2a 01 29 5d 40 5c b0 5d  |k]..].`.*.)]@\.]|
00008170  d0 5e 10 5d f0 0e 02 11  01 63 33 5c e0 2a 63 bf  |.^.].....c3\.*c.|
00008180  01 0d 02 10 01 5d 15 5d  00 5d 00 5d 00 5d 00 5d  |.....].].].].].]|
00008190  00 5d 00 5c ff 01 5d 00  5d 00 5d 00 5d 00 5d 00  |.].\..].].].].].|
000081a0  5c e0 2a 5d 00 5c 8d 5b  0c 0c 12 01 5c f6 62 fe  |\.*].\.[....\.b.|
000081b0  0c 27 0d 63 dd 03 0c 6b  fb 04 6b fc 02 0d 61 41  |.'.c...k..k...aA|
000081c0  5e c0 63 fa 77 38 60 c8  11 0e 5c 7e 66 b0 6c e1  |^.c.w8`...\~f.l.|
000081d0  5f e6 12 01 6b 62 5c 95  01 0c 14 5c 7f 5c 80 69  |_...kb\....\.\.i|
000081e0  00 5d a3 6c 51 19 6b f2  01 bd 7e 10 6b 80 6c 00  |.].lQ.k...~.k.l.|
000081f0  5c 8c 20 6b bf 6b 9f 6c  00 6c 00 64 06 ae a6 58  |\. k.k.l.l.d...X|
00008200  63 55 84 09 0e bd f5 15  5d ff 01 13 af f6 0f ec  |cU......].......|
00008210  01 e8 5c fc af 04 1f 13  2e 5c 90 4d 5d 00 5d 00  |..\......\.M].].|
00008220  5d 00 5d 00 5d 00 5d 00  5d 00 5d 00 5d 00 5d 00  |].].].].].].].].|
00008230  5d 00 b4 fc 54 b1 20 1f  b3 e2 5f 01 0c 3e 12 5c  |]...T. ..._..>.\|
00008240  c2 73 00 af ff 03 af 7f  04 b5 83 7f b0 00 20 d2  |.s............ .|
00008250  fe 3f 64 00 64 00 68 b4  ae 4c f3 0d 5c b9 13 62  |.?d.d.h..L..\..b|
00008260  3b 5d 02 5f 1c 5d ca b0  08 1c b0 17 17 b1 fa af  |;]._.]..........|
00008270  b0 0e 00 6c 00 af f4 9f  1a af 15 1d 5e 19 5c c2  |...l........^.\.|
00008280  0e 16 1e 6a 7b b1 62 31  60 fd b1 ff 2a b6 00 80  |...j{.b1`...*...|
00008290  b1 ff 3f 64 01 af 7e 08  b0 99 1f ae e9 e7 ae ff  |..?d..~.........|
000082a0  f7 c8 01 f0 0d 0e 62 f9  5d 01 0e 5d fb 5d 08 5c  |......b.]..].].\|
000082b0  f8 5f 54 5c ac 1d 12 4a  6b a5 6a 62 7d 9e 0d 7b  |._T\...Jk.jb}..{|
000082c0  fd ae 00 90 6c 00 0d 1e  12 18 0d 29 0c 1a 0d 18  |....l......)....|
000082d0  15 12 0c 1c 17 11 10 13  4e 62 01 5d 01 0e 0e 15  |........Nb.]....|
000082e0  5d ec 0d 0f 5c f8 13 5c  fa 4b 5c 68 33 0c 13 6f  |]...\..\.K\h3..o|
000082f0  1f ae 08 fb af f8 04 5e  00 ae 03 de 1e 7b ec 6b  |.......^.....{.k|
00008300  fd 8c 03 ae fd df 11 1a  9b e9 ae 03 80 af 08 00  |................|
00008310  ae f5 5f 5d 00 af 00 0f  af 00 10 01 b0 ff 1f ae  |.._]............|
00008320  0b 60 7b f5 ae 00 9c 90  03 0e 4a 46 68 bd 4a 5e  |.`{.......JFh.J^|
00008330  83 0e 12 12 1a 12 2e 3a  12 6b 78 67 fd 60 03 36  |.......:.kxg.`.6|
00008340  12 99 09 ae c1 5c 62 02  12 12 1a 16 32 7a e9 af  |.....\b.....2z..|
00008350  c3 1f 01 0c 0c 0c 02 0f  01 12 10 0f 02 0c 0c 0d  |................|
00008360  0f 1c 0e 10 0e 10 15 19  0f 1a 5c bb 2e 6a 9a 0c  |..........\..j..|
00008370  6c 69 ae d5 5e 5d 78 00  48 70 80 00 0c 0e 12 1a  |li..^]x.Hp......|
00008380  2a 4a 5c 81 01 5c ff 01  5c ff 01 5c ff 01 5c ff  |*J\..\..\..\..\.|
00008390  01 5c ff 01 5c ff 01 5c  ff 01 5c ff 01 5c ff 01  |.\..\..\..\..\..|
000083a0  5c ff 01 5c ff 01 ae 00  fd ae ff f6 af 00 00 01  |\..\............|
000083b0  b1 ff ff b1 00 00 b0 00  08 c1 ff f7 af 00 00 cd  |................|
000083c0  00 00 03 0f 01 0e 5c 57  22 0e 12 01 5c 76 63 02  |......\W"...\vc.|
000083d0  5f 00 ae ff f4 2a 02 14  1c 48 0c ae 82 ff af 00  |_....*...H......|
000083e0  00 0c ae fe ff 67 01 ae  ff f4 16 ae f4 ff 01 64  |.....g.........d|
000083f0  04 ae fb f7 af 00 00 01  29 ae e0 ff 01 68 04 ae  |........)....h..|
00008400  fb f3 01 af ff ff 2a af  e0 ff c0 01 00 b3 00 00  |......*.........|
00008410  af 00 00 b6 00 00 b0 00  00 af 00 10 01 0c 1f 5c  |...............\|
00008420  67 b0 82 1f ca fe cf 09  0c 05 0e 0d 01 0e 01 0c  |g...............|
00008430  01 12 0e 0c 0d 0e 0c 01  10 0d 01 0d 45 01 0e 01  |............E...|
00008440  0d 41 01 0e 01 21 14 0c  20 64 4e 5e b8 5d 00 01  |.A...!.. dN^.]..|
00008450  5d 71 5c df 15 5c 9f 01  19 66 f1 60 ff 01 67 00  |]q\..\...f.`..g.|
00008460  60 ff 65 01 62 ff 01 65  01 60 08 5d 67 5d 8f 6c  |`.e.b..e.`.]g].l|
00008470  00 6c 00 6c 00 6c 00 01  7b ff 6c 00 01 1e 67 ec  |.l.l.l..{.l...g.|
00008480  01 6f ff 6b ff e8 ff b0  b2 01 5f 5c ff ab 01 8c  |.o.k......_\....|
00008490  62 00 9e 8f 9f 00 af 04  90 7c 00 ae fc 6f bb 00  |b........|...o..|
000084a0  d0 6c 00 0e ba 00 f0 2e  6c 00 e2 d9 ff b0 00 f0  |.l......l.......|
000084b0  e9 03 00 b5 00 b0 8c 00  b1 0c 20 0e 0e 0e b1 f0  |.......... .....|
000084c0  ff 77 0c bb 10 e5 5c d8  6b 28 6c 00 00 d8 ef 52  |.w....\.k(l....R|
000084d0  00 0e 0e 0e 0e 0e 6b ec  6c 14 0e 7b e8 0e 7b fc  |......k.l..{..{.|
000084e0  ae 00 90 ac 08 af f8 af  12 6b fc ae fc ef 0e 0e  |.........k......|
000084f0  0e 0e 6b f0 0e 0e 0e 9b  f4 12 12 7b f4 ae fc 8f  |..k........{....|
00008500  1e 0e 0e 6b e4 1a 0e ae  ec ef 6c 00 0e 9b fc 7c  |...k......l....||
00008510  18 ae f0 8f ab f8 af 0c  00 7b f4 b1 48 94 ae b8  |.........{..H...|
00008520  fb 0e 0e 0e 0e 0e 0e 0e  16 0e 5c d4 6b 04 0e 0e  |..........\.k...|
00008530  0e 1a 5d 3c 6a a4 12 6c  0c 0e 0e 6b e8 0e 0e 0e  |..]<j..l...k....|
00008540  6b f0 0e 0e 0e 0e 0e 0e  0e 6b ec 1e 6b fc 0e 6b  |k........k..k..k|
00008550  fc 6b fc 8b ec b0 00 40  0e 0e 0e 0e 0e 6b ec 0e  |.k.....@.....k..|
00008560  0e 0e 12 6b ec 0e 1e 6b  e8 1e 7b ec 12 7b f8 ae  |...k...k..{..{..|
00008570  00 90 0e 12 6b f4 0e 6b  fc ae 00 a0 9c 00 6c 04  |....k..k......l.|
00008580  0e 7b fc ae 00 90 7b fc  ac 00 ae 00 d0 0e 0e 0e  |.{....{.........|
00008590  0e 0e 6b ec 0e 0e 0e 6c  0c 8b ec 16 1e ae dc af  |..k....l........|
000085a0  0e 12 6b f4 0e 0e 22 9b  e0 ae 00 b0 0e 6c 0c 9b  |..k..."......l..|
000085b0  f0 12 0e 0e ae f0 ff 7c  00 b1 04 90 16 6b f4 0e  |.......|.....k..|
000085c0  12 7c 0c 7b e8 16 2a 6b  d4 0e 0e 6b f8 0e 0e 1a  |.|.{..*k...k....|
000085d0  16 6b dc 1e 6b ec 1a 16  8b e4 a0 44 6b f8 12 67  |.k..k......Dk..g|
000085e0  b8 ae 00 e0 0e 0e 0e 0e  0e 0e 0e 16 6b d8 0e 0e  |............k...|
000085f0  0e 0e 0e 0e 12 0e 22 5d  20 7a a4 af 60 d0 56 6b  |......"] z..`.Vk|
00008600  58 ae dc d1 cb 2c 1e b1  fc 0f be 00 00 00 03 f0  |X....,..........|
00008610  fb 00 00 f5 10 b8 00 b0  00 00 ae 04 f0 6b fc b7  |.............k..|
00008620  09 00 af 03 00 7b f6 01  ae fe df af ff ff d9 07  |.....{..........|
00008630  ff be 99 f9 00 6e 06 af  00 9b f2 16 ae f4 ff b2  |.....n..........|
00008640  0c b0 b6 02 10 b1 f2 3f  16 ae f4 ff af 0c b0 6c  |.......?.......l|
00008650  02 bf 00 f0 af f2 07 ba  0e f8 b7 f2 3f 9c 00 ee  |............?...|
00008660  00 00 01 19 2a 4a cb 90  e7 1a 2a 4a 5c 80 bf 18  |....*J....*J\...|
00008670  97 10 01 9b f1 1a ae f0  97 01 0c 16 01 2a 4a 5c  |.............*J\|
00008680  80 5d 00 5e 00 b7 10 30  d2 00 9c 1a 2a 4a 5c 80  |.].^...0....*J\.|
00008690  5d 00 5e 00 df 17 54 6c  05 0c 00 f2 ef 72 00 09  |].^...Tl.....r..|
000086a0  09 0c 0c 01 0c 09 03 0c  0c 0c 01 0f 01 13 13 11  |................|
000086b0  1d 16 10 10 28 3c 43 00  7b de ff 00 5c 7e 46 5f  |....(<C.{...\~F_|
000086c0  01 75 62 5c 54 5d 46 5c  de 0d 0d 0d 5c 81 0e 0c  |.ub\T]F\....\...|
000086d0  18 1a 17 10 18 01 12 0c  0e 0d 02 0c 01 0c 12 01  |................|
000086e0  13 12 01 12 15 0d 28 19  13 1a 10 1d 39 17 17 0c  |......(.....9...|
000086f0  1d 0d 1a 19 46 27 13 0f  13 0d 11 0e 1d 0e 0f 49  |....F'.........I|
00008700  57 5c 74 52 62 31 5d a1  61 24 5d 56 6b aa 25 13  |W\tRb1].a$]Vk.%.|
00008710  0f 5c 6e 0e 12 5c d3 10  14 20 5c 81 3a 18 14 33  |.\n..\... \.:..3|
00008720  18 14 00 e4 d7 ff 00 5c  f0 22 1f 1e 1d 19 0f 13  |.......\."......|
00008730  0c 1f 1b 0f 17 14 0c 19  0c 16 10 11 13 1a 01 0c  |................|
00008740  0c 21 01 21 01 11 10 10  0d 0c 01 0f 0f 0c 15 01  |.!.!............|
00008750  0c 01 15 0c 15 0d 0c 16  16 16 14 0d 0f 0f 12 01  |................|
00008760  0d 16 15 01 12 18 01 0c  0d 0f 15 0f 17 0e 0c 0e  |................|
00008770  0e 18 0f 10 0d 0e 15 01  16 01 0f 13 11 0f 0c 0d  |................|
00008780  15 0d 14 0c 0d 10 01 12  11 01 0d 0d 01 0f 02 19  |................|
00008790  0c 0f 01 10 17 0d 0c 01  0e 0c 01 0c 12 0d 0d 01  |................|
000087a0  12 0c 0c 0e 10 0f 0d 0c  01 0c 01 0c 0d 0e 01 0c  |................|
000087b0  0e 10 03 11 0f 02 0f 0e  0c 02 0c 0f 0c 0c 03 0e  |................|
000087c0  03 0c 0c 01 0f 0d 01 0f  0c 03 0e 0e 00 19 51 5b  |..............Q[|
000087d0  01 bf f7 ef 6c 00 de fd  2f ed 00 c0 7c 06 d0 8a  |....l.../...|...|
000087e0  a0 ae f0 ff bc f0 ff 1e  be 8c 3f 00 0c b0 b0 00  |..........?.....|
000087f0  dd 0f 0f af d5 ff 0e 16  18 b2 a9 00 24 5c 5f 00  |............$\_.|
00008800  c8 fe f9 0f 0e 0e 0e 00  eb ff ff 00 15 5c 5f 13  |.............\_.|
00008810  21 3e 4c 1c 0c 01 0d 0c  0e 23 1b 01 64 e4 0c 88  |!>L......#..d...|
00008820  03 89 3d 5c f7 5d 07 10  5c da 68 d9 4a 5d 0a 67  |..=\.]..\.h.J].g|
00008830  9f af 9a 02 66 18 6f 40  2a 5c 5f 4b ae d0 a8 61  |....f.o@*\_K...a|
00008840  8f 6c e1 86 a0 5e c0 5d  bf ae e1 e5 67 00 68 c2  |.l...^.]....g.h.|
00008850  6f 3e 12 5c 5f 5c 59 7c  50 0f 7a eb 3a ae d0 bc  |o>.\_\Y|P.z.:...|
00008860  ae 80 e3 5d 80 5d 00 5d  00 5d 00 2a 62 e0 62 00  |...].].].].*b.b.|
00008870  5f 00 64 00 5e 00 5c c5  b0 8b 24 af 1b 57 9c 3d  |_.d.^.\...$..W.=|
00008880  ae 62 ae 2e 8c 37 95 09  ae 90 8c 01 13 02 0e 01  |.b...7..........|
00008890  ae e8 ff 01 0c 0f b2 31  45 96 d0 ae 00 d2 5d 00  |.......1E.....].|
000088a0  5d 00 5e 00 89 a8 62 f8  0d 5e 1d 0d 5e 25 6d 18  |].^...b..^..^%m.|
000088b0  5c 60 29 ae 89 bf 7b f8  16 5e 14 60 e0 5f a0 5e  |\`)...{..^.`._.^|
000088c0  cd 5d 93 ae 00 c9 5e 00  5e 00 80 00 0f 66 a0 5d  |.]....^.^....f.]|
000088d0  fc 6f 5f 01 5c bf 9b 70  5c 90 af 40 a2 5e 00 60  |.o_.\..p\..@.^.`|
000088e0  80 60 00 5e 46 44 5e 00  5f 00 5d 00 63 00 5e 40  |.`.^FD^._.].c.^@|
000088f0  5c 62 28 01 0e 01 27 80  6d b0 b0 bd b0 ff 7d 13  |\b(...'.m.....}.|
00008900  0f 0f ae e0 ff 17 b2 6a  29 6d fc 73 bb 5d 00 69  |.......j)m.s.].i|
00008910  00 5e 49 5c b7 4f 13 5c  b2 4c 0f 11 5c b7 54 5c  |.^I\.O.\.L..\.T\|
00008920  f2 17 5c b2 51 5f fa 5e  08 5c b7 59 5e f6 14 5c  |..\.Q_.^.\.Y^..\|
00008930  c1 3f 0e 5c f8 0e 14 5c  b1 5e 4f 5c f2 af ef ec  |.?.\...\.^O\....|
00008940  af bc 2a ae 19 e3 ae 0c  c7 01 b0 2f 34 ae 0d b2  |..*......../4...|
00008950  af c2 0f 5c f8 5d 00 5d  00 9d 3e b1 c1 ab 6c 09  |...\.].]..>...l.|
00008960  b0 37 35 ae c9 ca 01 0c  ae 41 f0 a9 f5 60 fa 16  |.75......A...`..|
00008970  60 00 ae fa f6 b1 05 c3  0f b1 ff ff b1 fe 33 af  |`.............3.|
00008980  f9 0c b0 97 0d 70 00 ae  00 5c af 00 9f ae 4f d7  |.....p...\....O.|
00008990  95 b1 01 9c bf b5 81 72  b0 f1 e6 01 b1 41 f5 8d  |.......r.....A..|
000089a0  9c af f0 3e af 31 9a b8  33 2a af c5 bb 4f 15 9e  |...>.1..3*...O..|
000089b0  f6 5e 01 5f f4 62 fb 5e  07 5c ba ae 49 ad a8 f8  |.^._.b.^.\..I...|
000089c0  ae 01 f5 63 0d 66 fa ae  fd ab 9c ff 69 04 7a 97  |...c.f......i.z.|
000089d0  ae 74 93 87 ac 62 00 71  47 11 60 fb 0d 5c b4 53  |.t...b.qG.`..\.S|
000089e0  5e f8 5e 02 0d 5d fd 0d  0d ae be ab 56 9c ad ae  |^.^..]......V...|
000089f0  45 bf a0 c3 65 41 ae b7  f4 6c 0b 5c f5 a5 60 ae  |E...eA...l.\..`.|
00008a00  ad 62 4b 61 05 9a ee 0e  5f 00 63 04 64 b7 5d 45  |.bKa...._.c.d.]E|
00008a10  5c fc af 08 ea 5d fc ae  0f bb 9c ac 5d 41 5e 04  |\....]......]A^.|
00008a20  67 bb 57 5f fc 5e fc ae  ff a8 0d 01 a4 b8 60 49  |g.W_.^........`I|
00008a30  5d fa ae 0a f2 63 b3 4b  18 61 fa 0e ae f7 b0 0d  |]....c.K.a......|
00008a40  1c a1 a7 62 47 0f 5c b4  4f 5d 00 61 00 5c bb 59  |...bG.\.O].a.\.Y|
00008a50  ae f6 ab ae bb 52 ae 44  ad af 01 00 13 15 68 ec  |.....R.D......h.|
00008a60  90 03 60 00 10 65 b2 50  11 5e f8 5e fe 01 ae c8  |..`..e.P.^.^....|
00008a70  aa 43 01 80 ba 7b 4e 60  b2 52 5e f9 5d 00 5e 00  |.C...{N`.R^.].^.|
00008a80  5d 0c 5e f8 0e 5d f8 ae  cc aa 51 0f 9e e8 0e 5e  |].^..]....Q....^|
00008a90  07 5e fb 5d 11 60 ed 0e  5c e5 28 0c 5f f3 0e 5e  |.^.].`..\.(._..^|
00008aa0  0a ae bd aa 9d 3b 5d b9  68 4e 5d 00 5e f7 7b 9b  |.....;].hN].^.{.|
00008ab0  af 65 8d a1 09 65 f6 ae  0a f6 ae fd ff 62 fa 5d  |.e...e.......b.]|
00008ac0  fc b8 9f 71 af 00 af 6c  00 b1 8f 5e c5 71 42 5d  |...q...l...^.qB]|
00008ad0  00 5e 30 65 90 af 40 53  4a 5c 80 ae c0 e7 ae 80  |.^0e..@SJ\......|
00008ae0  c9 5e 00 64 00 75 00 5d  00 86 00 01 11 af fc eb  |.^.d.u.]........|
00008af0  b8 fc b3 3a af d0 5f 0d  27 ae e0 9f 7f 30 87 ef  |...:.._.'....0..|
00008b00  ae e2 f0 7b ff 01 7d 10  7a ef af 04 ac b0 7c 35  |...{..}.z.....|5|
00008b10  af 0f 3c ae 19 5e af 5c  a4 07 0c 03 0c 02 1a b3  |..<..^.\........|
00008b20  7c 8a 5c e0 af 81 14 5c  77 52 6c 30 ae 10 8f 5f  ||.\....\wRl0..._|
00008b30  10 81 70 af 81 37 5c bf  9b 40 ba 00 60 af 01 60  |..p..7\..@..`..`|
00008b40  ae ff 9f 14 7f 06 78 f0  12 ae f8 d1 5e 00 5d 00  |......x.....^.].|
00008b50  5d 00 a6 00 01 11 9b f8  5a af b0 a3 b8 04 7d 01  |].......Z.....}.|
00008b60  7a fd 38 5c e2 01 5d 10  13 79 d4 2a 3a 1a 5c a0  |z.8\..]..y.*:.\.|
00008b70  5e 30 5c f0 2a 60 60 5e  00 60 40 5d 20 6c 00 5d  |^0\.*``^.`@] l.]|
00008b80  01 2a 5e 00 60 e0 60 00  6f ff 02 0c 01 0d 23 29  |.*^.`.`.o.....#)|
00008b90  5c c1 1e 5c f3 22 0c 10  5c 98 5c 60 5c a0 5d 60  |\..\."..\.\`\.]`|
00008ba0  2c 5c bf 5d ff 5c 80 5f  a0 0c 5e be 4b 79 9f ae  |,\.].\._..^.Ky..|
00008bb0  30 87 65 00 6f 10 5d 00  5d 00 5d 00 5d 00 5d 00  |0.e.o.].].].].].|
00008bc0  5d 00 5d 00 5d 00 5d 00  5d 00 5e 00 5e 00 7e 08  |].].].].].^.^.~.|
00008bd0  5e 90 5d 10 2a 5c e0 61  f8 12 28 5d e2 22 0d 0d  |^.].*\.a..(]."..|
00008be0  0c 5d d8 0d 47 10 6d 1a  02 0c 01 0d 12 0c 0f 01  |.]..G.m.........|
00008bf0  0d 0f 12 12 10 0c 10 02  1a 2a 1a 1a 3a 12 22 1a  |.........*..:.".|
00008c00  6b 13 27 1a 4a 0e 16 2a  2a 6c 58 60 40 96 b4 0e  |k.'.J..**lX`@...|
00008c10  5d 00 5c b8 6a 40 5d 08  62 70 64 80 09 03 7b f4  |].\.j@].bpd...{.|
00008c20  12 0c 0e 2c 5c d0 1a 16  01 5c f3 2a 60 30 5d 10  |...,\....\.*`0].|
00008c30  15 5f 25 5d 10 3a 5c e0  5d 0c 0d 01 15 0e 5d 30  |._%].:\.].....]0|
00008c40  01 19 5d a8 0f 60 02 68  42 5f 10 61 20 72 c0 01  |..]..`.hB_.a r..|
00008c50  0e 10 01 1e 2a 4a 5c 80  1f 0d 0c 02 0c 01 5c 61  |....*J\.......\a|
00008c60  5c a0 16 5e 1e 5c b6 5d  20 4a 5c a0 5c 76 5c 8a  |\..^.\.] J\.\v\.|
00008c70  5d 9c 2e 5d 40 2a 5d e0  29 01 2a 5c 9f 5d 21 29  |]..]@*].).*\.]!)|
00008c80  01 5c 5f 5c 99 5d ab 69  00 27 5d 20 ae 08 71 5d  |.\_\.].i.'] ..q]|
00008c90  01 5c ff 78 f9 7b ff 11  0c 01 5c f6 12 11 5c f1  |.\.x.{....\...\.|
00008ca0  5d 00 5d 00 5e 00 5d 00  5d 00 5d 00 15 01 5e f4  |].].^.].].]...^.|
00008cb0  5e 00 6e 07 01 0c 5c f6  5d 00 5d 00 64 00 5d 00  |^.n...\.].].d.].|
00008cc0  60 00 16 5d 10 65 84 0f  01 5d fc 6f 5e 0e 15 01  |`..].e...].o^...|
00008cd0  13 0d 0e 1a 16 0e 1a 14  10 1a 0f 25 1a 2a 7b 40  |...........%.*{@|
00008ce0  5d 10 0e 0e 0e 5f e4 77  00 1a 2a 5c 80 1a ae 60  |]...._.w..*\...`|
00008cf0  ab 64 e0 63 c0 4a 7f 10  6c f0 2a a4 f2 5c fe 5f  |.d.c.J..l.*..\._|
00008d00  f0 08 0c 10 03 17 0c 11  22 01 0d 01 15 0c 01 0c  |........".......|
00008d10  15 02 0d 16 1a 29 01 29  01 0c 26 69 20 01 5c 6f  |.....).)..&i .\o|
00008d20  5a ae 56 52 14 2a 2a 2a  5c 80 2a 2a 2a 5c a0 5e  |Z.VR.***\.***\.^|
00008d30  20 5c e0 5c 60 5c a0 5d  00 5c 60 2a 5c c0 2a 5c  | \.\`\.].\`*\.*\|
00008d40  a0 5f 04 1a 5c ec 2a 2a  2a 2a 4a 2a 5d 36 5c 6d  |._..\.****J*]6\m|
00008d50  19 01 1a 1d 17 01 0c 44  2a 2a 5c c0 2a 5c c0 2a  |.......D**\.*\.*|
00008d60  2a 5c a0 2a 4a 2a 5c c0  4a 2a 5c 60 4a 2a 5c e0  |*\.*J*\.J*\`J*\.|
00008d70  5d 00 5d 00 5f 40 2a 2a  4a 2a 2a 0e 1a 1a 5c dc  |].]._@**J**...\.|
00008d80  01 19 1a 5c 60 5d 80 01  19 01 19 1a 1a 1a 1a 01  |...\`]..........|
00008d90  19 1c 18 02 18 05 25 05  25 02 7c 2e 1a 1a 5c d0  |......%.%.|...\.|
00008da0  5f 00 64 00 5d 01 5d bf  5d 70 5c 90 4a 5c e0 5e  |_.d.].].]p\.J\.^|
00008db0  20 65 00 1a af f1 a8 2a  5d 00 4a 65 a0 2a 5f 00  | e.....*].Je.*_.|
00008dc0  5d e0 1a 1a 5c f0 84 ff  5d 10 4a 2a 67 60 5a 3a  |]...\...].J*g`Z:|
00008dd0  5e a0 5c c0 2a 5d 60 5f  d0 1a ae e0 a9 01 5c ff  |^.\.*]`_......\.|
00008de0  60 00 5d 00 63 00 5d 00  5e 00 5d 00 5d 00 62 01  |`.].c.].^.].].b.|
00008df0  5d 00 5f 3f 5d c0 1a 5e  00 5c f0 5a 5f b0 5e 40  |]._?]..^.\.Z_.^@|
00008e00  1a 62 b0 1a 5d f0 5e 50  5d c0 64 f0 0e 5c 7c 5c  |.b..].^P].d..\|\|
00008e10  80 1a 9b 7f 79 da 6d 97  0c 0c 46 19 ae b1 5b 5f  |....y.m...F...[_|
00008e20  01 5c ff 5f 00 5d 00 5f  00 63 00 ae 05 65 0c 03  |.\._.]._.c...e..|
00008e30  0f 0e 0c 19 ae c0 ff 0c  0c 0c 01 0c 0c 01 0f 02  |................|
00008e40  0d 01 13 09 06 1a 01 ae  97 ff 3e 01 0c 09 01 af  |..........>.....|
00008e50  c5 1f 69 c0 89 c0 a0 80  1a 89 70 1a 1a 1a 6b e0  |..i.......p...k.|
00008e60  2a 7e a0 7c 00 6c 00 6b  f0 1a ae e0 90 5d 00 94  |*~.|.l.k.....]..|
00008e70  15 e0 a5 00 00 ff 40 00  00 5d 12 00 00 00 07 00  |......@..]......|
00008e80  00 14 04 00 00 ea 00 00  00 fb 04 a0 e3 3f 13 ce  |.............?..|
00008e90  e3 04 00 01 e5 2c 00 4f  e2 00 3f 90 e8 0a a0 40  |.....,.O..?....@|
00008ea0  e0 09 90 4a e0 08 80 89  e0 89 6f 8f e2 08 00 56  |...J......o....V|
00008eb0  e1 08 60 a0 b1 0c 10 8b  e0 01 71 86 e0 0a 50 a0  |..`.......q...P.|
00008ec0  e1 00 40 a0 e3 06 20 a0  e1 00 30 e0 e3 01 b0 5b  |..@... ...0....[|
00008ed0  e2 29 00 00 ba 01 10 d5  e4 0a 00 51 e2 13 00 00  |.).........Q....|
00008ee0  aa 00 00 51 e3 0a 00 00  1a 01 00 d5 e4 01 10 d5  |...Q............|
00008ef0  e4 01 04 80 e1 01 10 d5  e4 01 08 80 e1 00 00 54  |...............T|
00008f00  e3 01 10 d5 04 01 0c 80  01 00 30 83 e0 04 30 86  |..........0...0.|
00008f10  e4 ed ff ff ea 01 b0 4b  e0 01 b0 8b e2 01 30 83  |.......K......0.|
00008f20  e2 04 30 86 e4 01 10 51  e2 fb ff ff ca e6 ff ff  |..0....Q........|
00008f30  ea 5c 00 51 e3 00 30 83  b0 04 30 86 b4 e2 ff ff  |.\.Q..0...0.....|
00008f40  ba ae 00 51 e2 06 00 00  ba 01 10 d5 e4 00 08 81  |...Q............|
00008f50  e1 01 10 d5 e4 01 04 80  e1 00 30 83 e0 04 30 86  |..........0...0.|
00008f60  e4 d9 ff ff ea 5c 00 51  e2 01 10 d5 e4 00 04 81  |.....\.Q........|
00008f70  e1 00 30 83 e0 04 30 86  e4 d3 ff ff ea 00 00 54  |..0...0........T|
00008f80  e3 04 00 00 1a 0c b0 a0  e1 02 c0 a0 e1 06 20 a0  |.............. .|
00008f90  e1 01 40 a0 e3 ca ff ff  ea 02 b0 a0 e1 18 50 8f  |..@...........P.|
00008fa0  e2 4d 6f 8f e2 07 40 a0  e1 0f 00 b5 e8 0f 00 a7  |.Mo...@.........|
00008fb0  e8 06 00 55 e1 fb ff ff  ba 04 f0 a0 e1 0d 90 89  |...U............|
00008fc0  e0 04 80 48 e2 09 00 5a  e1 35 00 00 da 01 60 7a  |...H...Z.5....`z|
00008fd0  e5 0f 30 06 e2 09 00 53  e2 03 00 00 ba 01 10 7a  |..0....S.......z|
00008fe0  e5 00 04 81 e1 00 41 9c  e7 10 00 00 ea 02 00 53  |......A........S|
00008ff0  e2 05 00 00 ba 01 10 7a  e5 00 04 81 e1 00 01 9b  |.......z........|
00009000  e7 01 10 7a e5 00 44 81  e1 08 00 00 ea 03 40 b0  |...z..D.......@.|
00009010  e1 06 00 00 0a 01 00 7a  e5 01 10 7a e5 01 04 80  |.......z...z....|
00009020  e1 01 10 7a e5 01 08 80  e1 01 10 7a e5 01 4c 80  |...z.......z..L.|
00009030  e1 26 32 a0 e1 09 00 53  e2 04 00 00 ba 01 10 7a  |.&2....S.......z|
00009040  e5 00 04 81 e1 00 51 9c  e7 30 00 28 e9 dc ff ff  |......Q..0.(....|
00009050  ea 02 00 53 e2 06 00 00  ba 01 10 7a e5 00 04 81  |...S.......z....|
00009060  e1 00 01 9b e7 01 10 7a  e5 00 54 81 e1 30 00 28  |.......z..T..0.(|
00009070  e9 d3 ff ff ea 03 50 b0  e1 30 00 28 09 d0 ff ff  |......P..0.(....|
00009080  0a 01 00 7a e5 01 10 7a  e5 01 04 80 e1 01 10 7a  |...z...z.......z|
00009090  e5 01 08 80 e1 01 10 7a  e5 01 5c 80 e1 30 00 28  |.......z..\..0.(|
000090a0  e9 c7 ff ff ea 00 00 5d  e3 07 00 00 da 0d 60 49  |.......]......`I|
000090b0  e0 07 90 a0 e1 0d a0 89  e0 0f 00 b6 e8 0f 00 a7  |................|
000090c0  e8 10 d0 5d e2 fb ff ff  ca bd ff ff ea 7c 80 48  |...].........|.H|
000090d0  e2 08 f0 a0 e1 72 63 63  20 34 2e 30 31 0a 20 20  |.....rcc 4.01.  |
000090e0  1a 82 68 00 00 00 00 00  00 00 00 00 00 00 00 bc  |..h.............|
000090f0  83 00 00 a8 20 75 6a 00  00 bc 83 00 00 46 dc fd  |.... uj......F..|
00009100  ff 5c b1 17 cb 00 00 00  00 1a 82 52 65 67 4e 61  |.\.........RegNa|
00009110  6d 65 73 00 00 00 00 00  1e 04 00 00 5e 1f e7 81  |mes.........^...|
00009120  ec e0 1e 04 00 00 46 ff  ff ff 64 19 cb 68 03 00  |......F...d..h..|
00009130  00 00 3b 20 68 2e 52 65  67 4e 61 6d 65 73 0a 3b  |..; h.RegNames.;|
00009140  0a 3b 20 54 68 69 73 20  68 65 61 64 65 72 20 66  |.; This header f|
00009150  69 6c 65 20 66 6f 72 20  47 45 54 74 69 6e 67 20  |ile for GETting |
00009160  66 72 6f 6d 20 61 73 73  65 6d 62 6c 65 72 20 73  |from assembler s|
00009170  6f 75 72 63 65 20 64 65  66 69 6e 65 73 20 72 65  |ource defines re|
00009180  67 69 73 74 65 72 20 6e  61 6d 65 73 0a 3b 0a 3b  |gister names.;.;|
00009190  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
000091d0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 0a 3b 0a 3b 20 55  |**********.;.; U|
000091e0  73 65 20 74 68 65 20 52  4e 20 64 69 72 65 63 74  |se the RN direct|
000091f0  69 76 65 20 74 6f 20 64  65 66 69 6e 65 20 41 52  |ive to define AR|
00009200  4d 20 72 65 67 69 73 74  65 72 20 6e 61 6d 65 73  |M register names|
00009210  0a 3b 0a 0a 72 30 20 20  20 20 20 20 52 4e 20 20  |.;..r0      RN  |
00009220  20 20 20 20 30 0a 72 31  20 20 20 20 20 20 52 4e  |    0.r1      RN|
00009230  20 20 20 20 20 20 31 0a  72 32 20 20 20 20 20 20  |      1.r2      |
00009240  52 4e 20 20 20 20 20 20  32 0a 72 33 20 20 20 20  |RN      2.r3    |
00009250  20 20 52 4e 20 20 20 20  20 20 33 0a 72 34 20 20  |  RN      3.r4  |
00009260  20 20 20 20 52 4e 20 20  20 20 20 20 34 0a 72 35  |    RN      4.r5|
00009270  20 20 20 20 20 20 52 4e  20 20 20 20 20 20 35 0a  |      RN      5.|
00009280  72 36 20 20 20 20 20 20  52 4e 20 20 20 20 20 20  |r6      RN      |
00009290  36 0a 72 37 20 20 20 20  20 20 52 4e 20 20 20 20  |6.r7      RN    |
000092a0  20 20 37 0a 72 38 20 20  20 20 20 20 52 4e 20 20  |  7.r8      RN  |
000092b0  20 20 20 20 38 0a 72 39  20 20 20 20 20 20 52 4e  |    8.r9      RN|
000092c0  20 20 20 20 20 20 39 0a  72 31 30 20 20 20 20 20  |      9.r10     |
000092d0  52 4e 20 20 20 20 20 20  31 30 0a 72 31 31 20 20  |RN      10.r11  |
000092e0  20 20 20 52 4e 20 20 20  20 20 20 31 31 0a 72 31  |   RN      11.r1|
000092f0  32 20 20 20 20 20 52 4e  20 20 20 20 20 20 31 32  |2     RN      12|
00009300  0a 72 31 33 20 20 20 20  20 52 4e 20 20 20 20 20  |.r13     RN     |
00009310  20 31 33 0a 72 31 34 20  20 20 20 20 52 4e 20 20  | 13.r14     RN  |
00009320  20 20 20 20 31 34 0a 72  31 35 20 20 20 20 20 52  |    14.r15     R|
00009330  4e 20 20 20 20 20 20 31  35 0a 0a 61 31 20 20 20  |N      15..a1   |
00009340  20 20 20 52 4e 20 20 20  20 20 20 72 30 0a 61 32  |   RN      r0.a2|
00009350  20 20 20 20 20 20 52 4e  20 20 20 20 20 20 72 31  |      RN      r1|
00009360  0a 61 33 20 20 20 20 20  20 52 4e 20 20 20 20 20  |.a3      RN     |
00009370  20 72 32 0a 61 34 20 20  20 20 20 20 52 4e 20 20  | r2.a4      RN  |
00009380  20 20 20 20 72 33 0a 76  31 20 20 20 20 20 20 52  |    r3.v1      R|
00009390  4e 20 20 20 20 20 20 72  34 0a 76 32 20 20 20 20  |N      r4.v2    |
000093a0  20 20 52 4e 20 20 20 20  20 20 72 35 0a 76 33 20  |  RN      r5.v3 |
000093b0  20 20 20 20 20 52 4e 20  20 20 20 20 20 72 36 0a  |     RN      r6.|
000093c0  76 34 20 20 20 20 20 20  52 4e 20 20 20 20 20 20  |v4      RN      |
000093d0  72 37 0a 76 35 20 20 20  20 20 20 52 4e 20 20 20  |r7.v5      RN   |
000093e0  20 20 20 72 38 0a 76 36  20 20 20 20 20 20 52 4e  |   r8.v6      RN|
000093f0  20 20 20 20 20 20 72 39  0a 73 6c 20 20 20 20 20  |      r9.sl     |
00009400  20 52 4e 20 20 20 20 20  20 72 31 30 0a 66 70 20  | RN      r10.fp |
00009410  20 20 20 20 20 52 4e 20  20 20 20 20 20 72 31 31  |     RN      r11|
00009420  0a 69 70 20 20 20 20 20  20 52 4e 20 20 20 20 20  |.ip      RN     |
00009430  20 72 31 32 0a 73 70 20  20 20 20 20 20 52 4e 20  | r12.sp      RN |
00009440  20 20 20 20 20 72 31 33  0a 6c 72 20 20 20 20 20  |     r13.lr     |
00009450  20 52 4e 20 20 20 20 20  20 72 31 34 0a 70 63 20  | RN      r14.pc |
00009460  20 20 20 20 20 52 4e 20  20 20 20 20 20 72 31 35  |     RN      r15|
00009470  0a 0a 3b 20 55 73 65 20  74 68 65 20 46 4e 20 64  |..; Use the FN d|
00009480  69 72 65 63 74 69 76 65  20 74 6f 20 64 65 66 69  |irective to defi|
00009490  6e 65 20 66 6c 6f 61 74  69 6e 67 20 70 6f 69 6e  |ne floating poin|
000094a0  74 20 72 65 67 69 73 74  65 72 20 6e 61 6d 65 73  |t register names|
000094b0  0a 0a 66 30 20 20 20 20  20 20 46 4e 20 20 20 20  |..f0      FN    |
000094c0  20 20 30 0a 66 31 20 20  20 20 20 20 46 4e 20 20  |  0.f1      FN  |
000094d0  20 20 20 20 31 0a 66 32  20 20 20 20 20 20 46 4e  |    1.f2      FN|
000094e0  20 20 20 20 20 20 32 0a  66 33 20 20 20 20 20 20  |      2.f3      |
000094f0  46 4e 20 20 20 20 20 20  33 0a 66 34 20 20 20 20  |FN      3.f4    |
00009500  20 20 46 4e 20 20 20 20  20 20 34 0a 66 35 20 20  |  FN      4.f5  |
00009510  20 20 20 20 46 4e 20 20  20 20 20 20 35 0a 66 36  |    FN      5.f6|
00009520  20 20 20 20 20 20 46 4e  20 20 20 20 20 20 36 0a  |      FN      6.|
00009530  66 37 20 20 20 20 20 20  46 4e 20 20 20 20 20 20  |f7      FN      |
00009540  37 0a 0a 20 20 20 20 20  20 20 20 45 4e 44 0a 0a  |7..        END..|
00009550  1a 82 53 57 49 4e 61 6d  65 73 00 00 00 00 00 41  |..SWINames.....A|
00009560  1b 00 00 5e 1f e7 81 7e  1d 41 1b 00 00 46 ff ff  |...^...~.A...F..|
00009570  ff 68 19 cb 68 13 00 00  00 3b 20 68 2e 73 77 69  |.h..h....; h.swi|
00009580  6e 61 6d 65 73 0a 3b 0a  3b 20 54 68 69 73 20 68  |names.;.; This h|
00009590  65 61 64 65 72 20 66 69  6c 65 20 66 6f 72 20 47  |eader file for G|
000095a0  45 54 74 69 6e 67 20 66  72 6f 6d 20 61 73 73 65  |ETting from asse|
000095b0  6d 62 6c 65 72 20 73 6f  75 72 63 65 20 64 65 66  |mbler source def|
000095c0  69 6e 65 73 20 4f 53 20  53 57 49 20 6e 61 6d 65  |ines OS SWI name|
000095d0  73 0a 3b 0a 3b 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |s.;.;***********|
000095e0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00009610  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 0a  |***************.|
00009620  3b 0a 3b 20 53 57 49 20  6e 61 6d 65 73 20 61 72  |;.; SWI names ar|
00009630  65 20 65 78 70 6f 72 74  65 64 20 69 6e 20 74 77  |e exported in tw|
00009640  6f 20 66 6f 72 6d 73 20  3a 0a 3b 20 31 29 20 20  |o forms :.; 1)  |
00009650  77 69 74 68 20 4f 53 5f  20 20 27 4f 53 5f 44 6f  |with OS_  'OS_Do|
00009660  54 68 69 6e 67 54 6f 4f  74 68 65 72 54 68 69 6e  |ThingToOtherThin|
00009670  67 27 20 20 61 73 20 4e  0a 3b 20 32 29 20 20 77  |g'  as N.; 2)  w|
00009680  69 74 68 20 58 4f 53 5f  20 27 58 4f 53 5f 44 6f  |ith XOS_ 'XOS_Do|
00009690  54 68 69 6e 67 54 6f 4f  74 68 65 72 54 68 69 6e  |ThingToOtherThin|
000096a0  67 27 20 61 73 20 4e 20  2b 20 41 75 74 6f 5f 45  |g' as N + Auto_E|
000096b0  72 72 6f 72 5f 53 57 49  5f 62 69 74 0a 3b 0a 0a  |rror_SWI_bit.;..|
000096c0  41 75 74 6f 5f 45 72 72  6f 72 5f 53 57 49 5f 62  |Auto_Error_SWI_b|
000096d0  69 74 5f 6e 75 6d 62 65  72 20 2a 20 31 37 0a 41  |it_number * 17.A|
000096e0  75 74 6f 5f 45 72 72 6f  72 5f 53 57 49 5f 62 69  |uto_Error_SWI_bi|
000096f0  74 20 2a 20 31 20 3a 53  48 4c 3a 20 41 75 74 6f  |t * 1 :SHL: Auto|
00009700  5f 45 72 72 6f 72 5f 53  57 49 5f 62 69 74 5f 6e  |_Error_SWI_bit_n|
00009710  75 6d 62 65 72 0a 0a 3b  0a 3b 20 54 68 65 20 66  |umber..;.; The f|
00009720  6f 6c 6c 6f 77 69 6e 67  20 6d 61 63 72 6f 20 64  |ollowing macro d|
00009730  65 66 69 6e 65 73 20 74  68 65 20 53 57 49 20 6e  |efines the SWI n|
00009740  61 6d 65 73 20 75 73 69  6e 67 20 74 68 65 20 27  |ames using the '|
00009750  2a 27 20 64 69 72 65 63  74 69 76 65 20 61 6e 64  |*' directive and|
00009760  20 74 68 65 0a 3b 20 27  23 27 20 64 69 72 65 63  | the.; '#' direc|
00009770  74 69 76 65 20 74 6f 20  69 6e 63 72 65 6d 65 6e  |tive to incremen|
00009780  74 20 74 68 65 20 53 57  49 20 6e 75 6d 62 65 72  |t the SWI number|
00009790  0a 3b 0a 0a 20 20 20 20  20 20 20 20 47 42 4c 53  |.;..        GBLS|
000097a0  20 20 20 20 53 57 49 43  6c 61 73 73 0a 20 20 20  |    SWIClass.   |
000097b0  20 20 20 20 20 4d 41 43  52 4f 0a 20 20 20 20 20  |     MACRO.     |
000097c0  20 20 20 41 64 64 53 57  49 20 20 24 53 57 49 4e  |   AddSWI  $SWIN|
000097d0  61 6d 65 2c 24 76 61 6c  75 65 0a 20 20 5b 20 20  |ame,$value.  [  |
000097e0  20 20 20 22 24 76 61 6c  75 65 22 20 3d 20 22 22  |   "$value" = ""|
000097f0  0a 24 53 57 49 43 6c 61  73 73 2e 5f 24 53 57 49  |.$SWIClass._$SWI|
00009800  4e 61 6d 65 20 23 20 31  0a 20 20 7c 0a 24 53 57  |Name # 1.  |.$SW|
00009810  49 43 6c 61 73 73 2e 5f  24 53 57 49 4e 61 6d 65  |IClass._$SWIName|
00009820  20 2a 20 24 76 61 6c 75  65 0a 20 20 5d 0a 58 24  | * $value.  ].X$|
00009830  53 57 49 43 6c 61 73 73  2e 5f 24 53 57 49 4e 61  |SWIClass._$SWINa|
00009840  6d 65 20 2a 20 24 53 57  49 43 6c 61 73 73 2e 5f  |me * $SWIClass._|
00009850  24 53 57 49 4e 61 6d 65  20 2b 20 41 75 74 6f 5f  |$SWIName + Auto_|
00009860  45 72 72 6f 72 5f 53 57  49 5f 62 69 74 0a 20 20  |Error_SWI_bit.  |
00009870  20 20 20 20 20 20 4d 45  4e 44 0a 0a 3b 0a 3b 20  |      MEND..;.; |
00009880  4e 6f 77 20 66 6f 72 20  74 68 65 20 53 57 49 20  |Now for the SWI |
00009890  6e 61 6d 65 20 74 61 62  6c 65 20 2d 20 75 73 69  |name table - usi|
000098a0  6e 67 20 74 68 65 20 27  5e 27 20 64 69 72 65 63  |ng the '^' direc|
000098b0  74 69 76 65 20 74 6f 20  62 75 69 6c 64 20 61 20  |tive to build a |
000098c0  74 61 62 6c 65 0a 3b 20  6f 66 20 53 57 49 20 6e  |table.; of SWI n|
000098d0  75 6d 62 65 72 73 0a 3b  0a 0a 53 57 49 43 6c 61  |umbers.;..SWICla|
000098e0  73 73 20 53 45 54 53 20  20 20 22 4f 53 22 0a 0a  |ss SETS   "OS"..|
000098f0  20 20 20 20 20 20 20 20  5e 20 20 20 20 20 20 20  |        ^       |
00009900  30 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |0               |
00009910  20 20 20 20 20 20 20 20  3b 20 42 61 73 65 20 66  |        ; Base f|
00009920  6f 72 20 52 49 53 43 20  4f 53 20 53 57 49 73 0a  |or RISC OS SWIs.|
00009930  20 20 20 20 20 20 20 20  41 64 64 53 57 49 20 20  |        AddSWI  |
00009940  57 72 69 74 65 43 20 20  20 20 20 20 20 20 20 20  |WriteC          |
00009950  20 20 20 20 20 20 20 20  3b 20 26 30 30 0a 20 20  |        ; &00.  |
00009960  20 20 20 20 20 20 41 64  64 53 57 49 20 20 57 72  |      AddSWI  Wr|
00009970  69 74 65 53 20 20 20 20  20 20 20 20 20 20 20 20  |iteS            |
00009980  20 20 20 20 20 20 3b 20  26 30 31 0a 20 20 20 20  |      ; &01.    |
00009990  20 20 20 20 41 64 64 53  57 49 20 20 57 72 69 74  |    AddSWI  Writ|
000099a0  65 30 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |e0              |
000099b0  20 20 20 20 3b 20 26 30  32 0a 20 20 20 20 20 20  |    ; &02.      |
000099c0  20 20 41 64 64 53 57 49  20 20 4e 65 77 4c 69 6e  |  AddSWI  NewLin|
000099d0  65 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |e               |
000099e0  20 20 3b 20 26 30 33 0a  20 20 20 20 20 20 20 20  |  ; &03.        |
000099f0  41 64 64 53 57 49 20 20  52 65 61 64 43 20 20 20  |AddSWI  ReadC   |
00009a00  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00009a10  3b 20 26 30 34 0a 20 20  20 20 20 20 20 20 41 64  |; &04.        Ad|
00009a20  64 53 57 49 20 20 43 4c  49 20 20 20 20 20 20 20  |dSWI  CLI       |
00009a30  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3b 20  |              ; |
00009a40  26 30 35 0a 20 20 20 20  20 20 20 20 41 64 64 53  |&05.        AddS|
00009a50  57 49 20 20 42 79 74 65  20 20 20 20 20 20 20 20  |WI  Byte        |
00009a60  20 20 20 20 20 20 20 20  20 20 20 20 3b 20 26 30  |            ; &0|
00009a70  36 0a 20 20 20 20 20 20  20 20 41 64 64 53 57 49  |6.        AddSWI|
00009a80  20 20 57 6f 72 64 20 20  20 20 20 20 20 20 20 20  |  Word          |
00009a90  20 20 20 20 20 20 20 20  20 20 3b 20 26 30 37 0a  |          ; &07.|
00009aa0  20 20 20 20 20 20 20 20  41 64 64 53 57 49 20 20  |        AddSWI  |
00009ab0  46 69 6c 65 20 20 20 20  20 20 20 20 20 20 20 20  |File            |
00009ac0  20 20 20 20 20 20 20 20  3b 20 26 30 38 0a 20 20  |        ; &08.  |
00009ad0  20 20 20 20 20 20 41 64  64 53 57 49 20 20 41 72  |      AddSWI  Ar|
00009ae0  67 73 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |gs              |
00009af0  20 20 20 20 20 20 3b 20  26 30 39 0a 20 20 20 20  |      ; &09.    |
00009b00  20 20 20 20 41 64 64 53  57 49 20 20 42 47 65 74  |    AddSWI  BGet|
00009b10  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00009b20  20 20 20 20 3b 20 26 30  41 0a 20 20 20 20 20 20  |    ; &0A.      |
00009b30  20 20 41 64 64 53 57 49  20 20 42 50 75 74 20 20  |  AddSWI  BPut  |
00009b40  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00009b50  20 20 3b 20 26 30 42 0a  20 20 20 20 20 20 20 20  |  ; &0B.        |
00009b60  41 64 64 53 57 49 20 20  47 42 50 42 20 20 20 20  |AddSWI  GBPB    |
00009b70  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00009b80  3b 20 26 30 43 0a 20 20  20 20 20 20 20 20 41 64  |; &0C.        Ad|
00009b90  64 53 57 49 20 20 46 69  6e 64 20 20 20 20 20 20  |dSWI  Find      |
00009ba0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3b 20  |              ; |
00009bb0  26 30 44 0a 20 20 20 20  20 20 20 20 41 64 64 53  |&0D.        AddS|
00009bc0  57 49 20 20 52 65 61 64  4c 69 6e 65 20 20 20 20  |WI  ReadLine    |
00009bd0  20 20 20 20 20 20 20 20  20 20 20 20 3b 20 26 30  |            ; &0|
00009be0  45 0a 20 20 20 20 20 20  20 20 41 64 64 53 57 49  |E.        AddSWI|
00009bf0  20 20 43 6f 6e 74 72 6f  6c 20 20 20 20 20 20 20  |  Control       |
00009c00  20 20 20 20 20 20 20 20  20 20 3b 20 26 30 46 0a  |          ; &0F.|
00009c10  20 20 20 20 20 20 20 20  41 64 64 53 57 49 20 20  |        AddSWI  |
00009c20  47 65 74 45 6e 76 20 20  20 20 20 20 20 20 20 20  |GetEnv          |
00009c30  20 20 20 20 20 20 20 20  3b 20 26 31 30 0a 20 20  |        ; &10.  |
00009c40  20 20 20 20 20 20 41 64  64 53 57 49 20 20 45 78  |      AddSWI  Ex|
00009c50  69 74 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |it              |
00009c60  20 20 20 20 20 20 3b 20  26 31 31 0a 20 20 20 20  |      ; &11.    |
00009c70  20 20 20 20 41 64 64 53  57 49 20 20 53 65 74 45  |    AddSWI  SetE|
00009c80  6e 76 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |nv              |
00009c90  20 20 20 20 3b 20 26 31  32 0a 20 20 20 20 20 20  |    ; &12.      |
00009ca0  20 20 41 64 64 53 57 49  20 20 49 6e 74 4f 6e 20  |  AddSWI  IntOn |
00009cb0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00009cc0  20 20 3b 20 26 31 33 0a  20 20 20 20 20 20 20 20  |  ; &13.        |
00009cd0  41 64 64 53 57 49 20 20  49 6e 74 4f 66 66 20 20  |AddSWI  IntOff  |
00009ce0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00009cf0  3b 20 26 31 34 0a 20 20  20 20 20 20 20 20 41 64  |; &14.        Ad|
00009d00  64 53 57 49 20 20 43 61  6c 6c 42 61 63 6b 20 20  |dSWI  CallBack  |
00009d10  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3b 20  |              ; |
00009d20  26 31 35 0a 20 20 20 20  20 20 20 20 41 64 64 53  |&15.        AddS|
00009d30  57 49 20 20 45 6e 74 65  72 4f 53 20 20 20 20 20  |WI  EnterOS     |
00009d40  20 20 20 20 20 20 20 20  20 20 20 20 3b 20 26 31  |            ; &1|
00009d50  36 0a 20 20 20 20 20 20  20 20 41 64 64 53 57 49  |6.        AddSWI|
00009d60  20 20 42 72 65 61 6b 50  74 20 20 20 20 20 20 20  |  BreakPt       |
00009d70  20 20 20 20 20 20 20 20  20 20 3b 20 26 31 37 0a  |          ; &17.|
00009d80  20 20 20 20 20 20 20 20  41 64 64 53 57 49 20 20  |        AddSWI  |
00009d90  42 72 65 61 6b 43 74 72  6c 20 20 20 20 20 20 20  |BreakCtrl       |
00009da0  20 20 20 20 20 20 20 20  3b 20 26 31 38 0a 20 20  |        ; &18.  |
00009db0  20 20 20 20 20 20 41 64  64 53 57 49 20 20 55 6e  |      AddSWI  Un|
00009dc0  75 73 65 64 53 57 49 20  20 20 20 20 20 20 20 20  |usedSWI         |
00009dd0  20 20 20 20 20 20 3b 20  26 31 39 0a 20 20 20 20  |      ; &19.    |
00009de0  20 20 20 20 41 64 64 53  57 49 20 20 55 70 64 61  |    AddSWI  Upda|
00009df0  74 65 4d 45 4d 43 20 20  20 20 20 20 20 20 20 20  |teMEMC          |
00009e00  20 20 20 20 3b 20 26 31  41 0a 20 20 20 20 20 20  |    ; &1A.      |
00009e10  20 20 41 64 64 53 57 49  20 20 53 65 74 43 61 6c  |  AddSWI  SetCal|
00009e20  6c 42 61 63 6b 20 20 20  20 20 20 20 20 20 20 20  |lBack           |
00009e30  20 20 3b 20 26 31 42 0a  20 20 20 20 20 20 20 20  |  ; &1B.        |
00009e40  41 64 64 53 57 49 20 20  4d 6f 75 73 65 20 20 20  |AddSWI  Mouse   |
00009e50  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00009e60  3b 20 26 31 43 0a 0a 20  20 20 20 20 20 20 20 41  |; &1C..        A|
00009e70  64 64 53 57 49 20 20 48  65 61 70 20 20 20 20 20  |ddSWI  Heap     |
00009e80  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3b  |               ;|
00009e90  20 26 31 44 0a 20 20 20  20 20 20 20 20 41 64 64  | &1D.        Add|
00009ea0  53 57 49 20 20 4d 6f 64  75 6c 65 20 20 20 20 20  |SWI  Module     |
00009eb0  20 20 20 20 20 20 20 20  20 20 20 20 20 3b 20 26  |             ; &|
00009ec0  31 45 0a 20 20 20 20 20  20 20 20 41 64 64 53 57  |1E.        AddSW|
00009ed0  49 20 20 43 6c 61 69 6d  20 20 20 20 20 20 20 20  |I  Claim        |
00009ee0  20 20 20 20 20 20 20 20  20 20 20 3b 20 26 31 46  |           ; &1F|
00009ef0  0a 20 20 20 20 20 20 20  20 41 64 64 53 57 49 20  |.        AddSWI |
00009f00  20 52 65 6c 65 61 73 65  20 20 20 20 20 20 20 20  | Release        |
00009f10  20 20 20 20 20 20 20 20  20 3b 20 26 32 30 0a 20  |         ; &20. |
00009f20  20 20 20 20 20 20 20 41  64 64 53 57 49 20 20 52  |       AddSWI  R|
00009f30  65 61 64 55 6e 73 69 67  6e 65 64 20 20 20 20 20  |eadUnsigned     |
00009f40  20 20 20 20 20 20 20 3b  20 26 32 31 0a 20 20 20  |       ; &21.   |
00009f50  20 20 20 20 20 41 64 64  53 57 49 20 20 47 65 6e  |     AddSWI  Gen|
00009f60  65 72 61 74 65 45 76 65  6e 74 20 20 20 20 20 20  |erateEvent      |
00009f70  20 20 20 20 20 3b 20 26  32 32 0a 20 20 20 20 20  |     ; &22.     |
00009f80  20 20 20 41 64 64 53 57  49 20 20 52 65 61 64 56  |   AddSWI  ReadV|
00009f90  61 72 56 61 6c 20 20 20  20 20 20 20 20 20 20 20  |arVal           |
00009fa0  20 20 20 3b 20 26 32 33  0a 20 20 20 20 20 20 20  |   ; &23.       |
00009fb0  20 41 64 64 53 57 49 20  20 53 65 74 56 61 72 56  | AddSWI  SetVarV|
00009fc0  61 6c 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |al              |
00009fd0  20 3b 20 26 32 34 0a 20  20 20 20 20 20 20 20 41  | ; &24.        A|
00009fe0  64 64 53 57 49 20 20 47  53 49 6e 69 74 20 20 20  |ddSWI  GSInit   |
00009ff0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3b  |               ;|
0000a000  20 26 32 35 0a 20 20 20  20 20 20 20 20 41 64 64  | &25.        Add|
0000a010  53 57 49 20 20 47 53 52  65 61 64 20 20 20 20 20  |SWI  GSRead     |
0000a020  20 20 20 20 20 20 20 20  20 20 20 20 20 3b 20 26  |             ; &|
0000a030  32 36 0a 20 20 20 20 20  20 20 20 41 64 64 53 57  |26.        AddSW|
0000a040  49 20 20 47 53 54 72 61  6e 73 20 20 20 20 20 20  |I  GSTrans      |
0000a050  20 20 20 20 20 20 20 20  20 20 20 3b 20 26 32 37  |           ; &27|
0000a060  0a 20 20 20 20 20 20 20  20 41 64 64 53 57 49 20  |.        AddSWI |
0000a070  20 42 69 6e 61 72 79 54  6f 44 65 63 69 6d 61 6c  | BinaryToDecimal|
0000a080  20 20 20 20 20 20 20 20  20 3b 20 26 32 38 0a 20  |         ; &28. |
0000a090  20 20 20 20 20 20 20 41  64 64 53 57 49 20 20 46  |       AddSWI  F|
0000a0a0  53 43 6f 6e 74 72 6f 6c  20 20 20 20 20 20 20 20  |SControl        |
0000a0b0  20 20 20 20 20 20 20 3b  20 26 32 39 0a 20 20 20  |       ; &29.   |
0000a0c0  20 20 20 20 20 41 64 64  53 57 49 20 20 43 68 61  |     AddSWI  Cha|
0000a0d0  6e 67 65 44 79 6e 61 6d  69 63 41 72 65 61 20 20  |ngeDynamicArea  |
0000a0e0  20 20 20 20 20 3b 20 26  32 41 0a 20 20 20 20 20  |     ; &2A.     |
0000a0f0  20 20 20 41 64 64 53 57  49 20 20 47 65 6e 65 72  |   AddSWI  Gener|
0000a100  61 74 65 45 72 72 6f 72  20 20 20 20 20 20 20 20  |ateError        |
0000a110  20 20 20 3b 20 26 32 42  0a 20 20 20 20 20 20 20  |   ; &2B.       |
0000a120  20 41 64 64 53 57 49 20  20 52 65 61 64 45 73 63  | AddSWI  ReadEsc|
0000a130  61 70 65 53 74 61 74 65  20 20 20 20 20 20 20 20  |apeState        |
0000a140  20 3b 20 26 32 43 0a 20  20 20 20 20 20 20 20 41  | ; &2C.        A|
0000a150  64 64 53 57 49 20 20 45  76 61 6c 75 61 74 65 45  |ddSWI  EvaluateE|
0000a160  78 70 72 65 73 73 69 6f  6e 20 20 20 20 20 20 3b  |xpression      ;|
0000a170  20 26 32 44 0a 20 20 20  20 20 20 20 20 41 64 64  | &2D.        Add|
0000a180  53 57 49 20 20 53 70 72  69 74 65 4f 70 20 20 20  |SWI  SpriteOp   |
0000a190  20 20 20 20 20 20 20 20  20 20 20 20 20 3b 20 26  |             ; &|
0000a1a0  32 45 0a 20 20 20 20 20  20 20 20 41 64 64 53 57  |2E.        AddSW|
0000a1b0  49 20 20 52 65 61 64 50  61 6c 65 74 74 65 20 20  |I  ReadPalette  |
0000a1c0  20 20 20 20 20 20 20 20  20 20 20 3b 20 26 32 46  |           ; &2F|
0000a1d0  0a 20 20 20 20 20 20 20  20 41 64 64 53 57 49 20  |.        AddSWI |
0000a1e0  20 53 65 72 76 69 63 65  43 61 6c 6c 20 20 20 20  | ServiceCall    |
0000a1f0  20 20 20 20 20 20 20 20  20 3b 20 26 33 30 0a 20  |         ; &30. |
0000a200  20 20 20 20 20 20 20 41  64 64 53 57 49 20 20 52  |       AddSWI  R|
0000a210  65 61 64 56 64 75 56 61  72 69 61 62 6c 65 73 20  |eadVduVariables |
0000a220  20 20 20 20 20 20 20 3b  20 26 33 31 0a 20 20 20  |       ; &31.   |
0000a230  20 20 20 20 20 41 64 64  53 57 49 20 20 52 65 61  |     AddSWI  Rea|
0000a240  64 50 6f 69 6e 74 20 20  20 20 20 20 20 20 20 20  |dPoint          |
0000a250  20 20 20 20 20 3b 20 26  33 32 0a 20 20 20 20 20  |     ; &32.     |
0000a260  20 20 20 41 64 64 53 57  49 20 20 55 70 43 61 6c  |   AddSWI  UpCal|
0000a270  6c 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |l               |
0000a280  20 20 20 3b 20 26 33 33  0a 20 20 20 20 20 20 20  |   ; &33.       |
0000a290  20 41 64 64 53 57 49 20  20 43 61 6c 6c 41 56 65  | AddSWI  CallAVe|
0000a2a0  63 74 6f 72 20 20 20 20  20 20 20 20 20 20 20 20  |ctor            |
0000a2b0  20 3b 20 26 33 34 0a 20  20 20 20 20 20 20 20 41  | ; &34.        A|
0000a2c0  64 64 53 57 49 20 20 52  65 61 64 4d 6f 64 65 56  |ddSWI  ReadModeV|
0000a2d0  61 72 69 61 62 6c 65 20  20 20 20 20 20 20 20 3b  |ariable        ;|
0000a2e0  20 26 33 35 0a 20 20 20  20 20 20 20 20 41 64 64  | &35.        Add|
0000a2f0  53 57 49 20 20 52 65 6d  6f 76 65 43 75 72 73 6f  |SWI  RemoveCurso|
0000a300  72 73 20 20 20 20 20 20  20 20 20 20 20 3b 20 26  |rs           ; &|
0000a310  33 36 0a 20 20 20 20 20  20 20 20 41 64 64 53 57  |36.        AddSW|
0000a320  49 20 20 52 65 73 74 6f  72 65 43 75 72 73 6f 72  |I  RestoreCursor|
0000a330  73 20 20 20 20 20 20 20  20 20 20 3b 20 26 33 37  |s          ; &37|
0000a340  0a 20 20 20 20 20 20 20  20 41 64 64 53 57 49 20  |.        AddSWI |
0000a350  20 53 57 49 4e 75 6d 62  65 72 54 6f 53 74 72 69  | SWINumberToStri|
0000a360  6e 67 20 20 20 20 20 20  20 3b 20 26 33 38 0a 20  |ng       ; &38. |
0000a370  20 20 20 20 20 20 20 41  64 64 53 57 49 20 20 53  |       AddSWI  S|
0000a380  57 49 4e 75 6d 62 65 72  46 72 6f 6d 53 74 72 69  |WINumberFromStri|
0000a390  6e 67 20 20 20 20 20 3b  20 26 33 39 0a 20 20 20  |ng     ; &39.   |
0000a3a0  20 20 20 20 20 41 64 64  53 57 49 20 20 56 61 6c  |     AddSWI  Val|
0000a3b0  69 64 61 74 65 41 64 64  72 65 73 73 20 20 20 20  |idateAddress    |
0000a3c0  20 20 20 20 20 3b 20 26  33 41 0a 20 20 20 20 20  |     ; &3A.     |
0000a3d0  20 20 20 41 64 64 53 57  49 20 20 43 61 6c 6c 41  |   AddSWI  CallA|
0000a3e0  66 74 65 72 20 20 20 20  20 20 20 20 20 20 20 20  |fter            |
0000a3f0  20 20 20 3b 20 26 33 42  0a 20 20 20 20 20 20 20  |   ; &3B.       |
0000a400  20 41 64 64 53 57 49 20  20 43 61 6c 6c 45 76 65  | AddSWI  CallEve|
0000a410  72 79 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |ry              |
0000a420  20 3b 20 26 33 43 0a 20  20 20 20 20 20 20 20 41  | ; &3C.        A|
0000a430  64 64 53 57 49 20 20 52  65 6d 6f 76 65 54 69 63  |ddSWI  RemoveTic|
0000a440  6b 65 72 45 76 65 6e 74  20 20 20 20 20 20 20 3b  |kerEvent       ;|
0000a450  20 26 33 44 0a 20 20 20  20 20 20 20 20 41 64 64  | &3D.        Add|
0000a460  53 57 49 20 20 49 6e 73  74 61 6c 6c 4b 65 79 48  |SWI  InstallKeyH|
0000a470  61 6e 64 6c 65 72 20 20  20 20 20 20 20 3b 20 26  |andler       ; &|
0000a480  33 45 0a 20 20 20 20 20  20 20 20 41 64 64 53 57  |3E.        AddSW|
0000a490  49 20 20 43 68 65 63 6b  4d 6f 64 65 56 61 6c 69  |I  CheckModeVali|
0000a4a0  64 20 20 20 20 20 20 20  20 20 20 3b 20 26 33 46  |d          ; &3F|
0000a4b0  0a 20 20 20 20 20 20 20  20 41 64 64 53 57 49 20  |.        AddSWI |
0000a4c0  20 43 68 61 6e 67 65 45  6e 76 69 72 6f 6e 6d 65  | ChangeEnvironme|
0000a4d0  6e 74 20 20 20 20 20 20  20 3b 20 26 34 30 0a 20  |nt       ; &40. |
0000a4e0  20 20 20 20 20 20 20 41  64 64 53 57 49 20 20 43  |       AddSWI  C|
0000a4f0  6c 61 69 6d 53 63 72 65  65 6e 4d 65 6d 6f 72 79  |laimScreenMemory|
0000a500  20 20 20 20 20 20 20 3b  20 26 34 31 0a 20 20 20  |       ; &41.   |
0000a510  20 20 20 20 20 41 64 64  53 57 49 20 20 52 65 61  |     AddSWI  Rea|
0000a520  64 4d 6f 6e 6f 74 6f 6e  69 63 54 69 6d 65 20 20  |dMonotonicTime  |
0000a530  20 20 20 20 20 3b 20 26  34 32 0a 20 20 20 20 20  |     ; &42.     |
0000a540  20 20 20 41 64 64 53 57  49 20 20 53 75 62 73 74  |   AddSWI  Subst|
0000a550  69 74 75 74 65 41 72 67  73 20 20 20 20 20 20 20  |ituteArgs       |
0000a560  20 20 20 3b 20 26 34 33  0a 20 20 20 20 20 20 20  |   ; &43.       |
0000a570  20 41 64 64 53 57 49 20  20 50 72 65 74 74 79 50  | AddSWI  PrettyP|
0000a580  72 69 6e 74 20 20 20 20  20 20 20 20 20 20 20 20  |rint            |
0000a590  20 3b 20 26 34 34 0a 20  20 20 20 20 20 20 20 41  | ; &44.        A|
0000a5a0  64 64 53 57 49 20 20 50  6c 6f 74 20 20 20 20 20  |ddSWI  Plot     |
0000a5b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3b  |               ;|
0000a5c0  20 26 34 35 0a 20 20 20  20 20 20 20 20 41 64 64  | &45.        Add|
0000a5d0  53 57 49 20 20 57 72 69  74 65 4e 20 20 20 20 20  |SWI  WriteN     |
0000a5e0  20 20 20 20 20 20 20 20  20 20 20 20 20 3b 20 26  |             ; &|
0000a5f0  34 36 0a 20 20 20 20 20  20 20 20 41 64 64 53 57  |46.        AddSW|
0000a600  49 20 20 41 64 64 54 6f  56 65 63 74 6f 72 20 20  |I  AddToVector  |
0000a610  20 20 20 20 20 20 20 20  20 20 20 3b 20 26 34 37  |           ; &47|
0000a620  0a 20 20 20 20 20 20 20  20 41 64 64 53 57 49 20  |.        AddSWI |
0000a630  20 57 72 69 74 65 45 6e  76 20 20 20 20 20 20 20  | WriteEnv       |
0000a640  20 20 20 20 20 20 20 20  20 3b 20 26 34 38 0a 20  |         ; &48. |
0000a650  20 20 20 20 20 20 20 41  64 64 53 57 49 20 20 52  |       AddSWI  R|
0000a660  65 61 64 41 72 67 73 20  20 20 20 20 20 20 20 20  |eadArgs         |
0000a670  20 20 20 20 20 20 20 3b  20 26 34 39 0a 20 20 20  |       ; &49.   |
0000a680  20 20 20 20 20 41 64 64  53 57 49 20 20 52 65 61  |     AddSWI  Rea|
0000a690  64 52 41 4d 46 73 4c 69  6d 69 74 73 20 20 20 20  |dRAMFsLimits    |
0000a6a0  20 20 20 20 20 3b 20 26  34 41 0a 20 20 20 20 20  |     ; &4A.     |
0000a6b0  20 20 20 41 64 64 53 57  49 20 20 43 6c 61 69 6d  |   AddSWI  Claim|
0000a6c0  44 65 76 69 63 65 56 65  63 74 6f 72 20 20 20 20  |DeviceVector    |
0000a6d0  20 20 20 3b 20 26 34 42  0a 20 20 20 20 20 20 20  |   ; &4B.       |
0000a6e0  20 41 64 64 53 57 49 20  20 52 65 6c 65 61 73 65  | AddSWI  Release|
0000a6f0  44 65 76 69 63 65 56 65  63 74 6f 72 20 20 20 20  |DeviceVector    |
0000a700  20 3b 20 26 34 43 0a 20  20 20 20 20 20 20 20 41  | ; &4C.        A|
0000a710  64 64 53 57 49 20 20 44  65 6c 69 6e 6b 41 70 70  |ddSWI  DelinkApp|
0000a720  6c 69 63 61 74 69 6f 6e  20 20 20 20 20 20 20 3b  |lication       ;|
0000a730  20 26 34 44 0a 20 20 20  20 20 20 20 20 41 64 64  | &4D.        Add|
0000a740  53 57 49 20 20 52 65 6c  69 6e 6b 41 70 70 6c 69  |SWI  RelinkAppli|
0000a750  63 61 74 69 6f 6e 20 20  20 20 20 20 20 3b 20 26  |cation       ; &|
0000a760  34 45 0a 20 20 20 20 20  20 20 20 41 64 64 53 57  |4E.        AddSW|
0000a770  49 20 20 48 65 61 70 53  6f 72 74 20 20 20 20 20  |I  HeapSort     |
0000a780  20 20 20 20 20 20 20 20  20 20 20 3b 20 26 34 46  |           ; &4F|
0000a790  0a 20 20 20 20 20 20 20  20 41 64 64 53 57 49 20  |.        AddSWI |
0000a7a0  20 45 78 69 74 41 6e 64  44 69 65 20 20 20 20 20  | ExitAndDie     |
0000a7b0  20 20 20 20 20 20 20 20  20 3b 20 26 35 30 0a 20  |         ; &50. |
0000a7c0  20 20 20 20 20 20 20 41  64 64 53 57 49 20 20 52  |       AddSWI  R|
0000a7d0  65 61 64 4d 65 6d 4d 61  70 49 6e 66 6f 20 20 20  |eadMemMapInfo   |
0000a7e0  20 20 20 20 20 20 20 3b  20 26 35 31 0a 20 20 20  |       ; &51.   |
0000a7f0  20 20 20 20 20 41 64 64  53 57 49 20 20 52 65 61  |     AddSWI  Rea|
0000a800  64 4d 65 6d 4d 61 70 45  6e 74 72 69 65 73 20 20  |dMemMapEntries  |
0000a810  20 20 20 20 20 3b 20 26  35 32 0a 20 20 20 20 20  |     ; &52.     |
0000a820  20 20 20 41 64 64 53 57  49 20 20 53 65 74 4d 65  |   AddSWI  SetMe|
0000a830  6d 4d 61 70 45 6e 74 72  69 65 73 20 20 20 20 20  |mMapEntries     |
0000a840  20 20 20 3b 20 26 35 33  0a 20 20 20 20 20 20 20  |   ; &53.       |
0000a850  20 41 64 64 53 57 49 20  20 41 64 64 43 61 6c 6c  | AddSWI  AddCall|
0000a860  42 61 63 6b 20 20 20 20  20 20 20 20 20 20 20 20  |Back            |
0000a870  20 3b 20 26 35 34 0a 20  20 20 20 20 20 20 20 41  | ; &54.        A|
0000a880  64 64 53 57 49 20 20 52  65 61 64 44 65 66 61 75  |ddSWI  ReadDefau|
0000a890  6c 74 48 61 6e 64 6c 65  72 20 20 20 20 20 20 3b  |ltHandler      ;|
0000a8a0  20 26 35 35 0a 20 20 20  20 20 20 20 20 41 64 64  | &55.        Add|
0000a8b0  53 57 49 20 20 53 65 74  45 43 46 4f 72 69 67 69  |SWI  SetECFOrigi|
0000a8c0  6e 20 20 20 20 20 20 20  20 20 20 20 20 3b 20 26  |n            ; &|
0000a8d0  35 36 0a 20 20 20 20 20  20 20 20 41 64 64 53 57  |56.        AddSW|
0000a8e0  49 20 20 53 65 72 69 61  6c 4f 70 20 20 20 20 20  |I  SerialOp     |
0000a8f0  20 20 20 20 20 20 20 20  20 20 20 3b 20 26 35 37  |           ; &57|
0000a900  0a 20 20 20 20 20 20 20  20 41 64 64 53 57 49 20  |.        AddSWI |
0000a910  20 52 65 61 64 53 79 73  49 6e 66 6f 20 20 20 20  | ReadSysInfo    |
0000a920  20 20 20 20 20 20 20 20  20 3b 20 26 35 38 0a 20  |         ; &58. |
0000a930  20 20 20 20 20 20 20 41  64 64 53 57 49 20 20 43  |       AddSWI  C|
0000a940  6f 6e 66 69 72 6d 20 20  20 20 20 20 20 20 20 20  |onfirm          |
0000a950  20 20 20 20 20 20 20 3b  20 26 35 39 0a 20 20 20  |       ; &59.   |
0000a960  20 20 20 20 20 41 64 64  53 57 49 20 20 43 68 61  |     AddSWI  Cha|
0000a970  6e 67 65 64 42 6f 78 20  20 20 20 20 20 20 20 20  |ngedBox         |
0000a980  20 20 20 20 20 3b 20 26  35 41 0a 20 20 20 20 20  |     ; &5A.     |
0000a990  20 20 20 41 64 64 53 57  49 20 20 43 52 43 20 20  |   AddSWI  CRC  |
0000a9a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000a9b0  20 20 20 3b 20 26 35 42  0a 20 20 20 20 20 20 20  |   ; &5B.       |
0000a9c0  20 41 64 64 53 57 49 20  20 52 65 61 64 44 79 6e  | AddSWI  ReadDyn|
0000a9d0  61 6d 69 63 41 72 65 61  20 20 20 20 20 20 20 20  |amicArea        |
0000a9e0  20 3b 20 26 35 43 0a 20  20 20 20 20 20 20 20 41  | ; &5C.        A|
0000a9f0  64 64 53 57 49 20 20 50  72 69 6e 74 43 68 61 72  |ddSWI  PrintChar|
0000aa00  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3b  |               ;|
0000aa10  20 26 35 44 0a 20 20 20  20 20 20 20 20 41 64 64  | &5D.        Add|
0000aa20  53 57 49 20 20 43 68 61  6e 67 65 52 65 64 69 72  |SWI  ChangeRedir|
0000aa30  65 63 74 69 6f 6e 20 20  20 20 20 20 20 3b 20 26  |ection       ; &|
0000aa40  35 45 0a 20 20 20 20 20  20 20 20 41 64 64 53 57  |5E.        AddSW|
0000aa50  49 20 20 52 65 6d 6f 76  65 43 61 6c 6c 42 61 63  |I  RemoveCallBac|
0000aa60  6b 20 20 20 20 20 20 20  20 20 20 3b 20 26 35 46  |k          ; &5F|
0000aa70  0a 20 20 20 20 20 20 20  20 41 64 64 53 57 49 20  |.        AddSWI |
0000aa80  20 46 69 6e 64 4d 65 6d  4d 61 70 45 6e 74 72 69  | FindMemMapEntri|
0000aa90  65 73 20 20 20 20 20 20  20 3b 20 26 36 30 0a 20  |es       ; &60. |
0000aaa0  20 20 20 20 20 20 20 41  64 64 53 57 49 20 20 52  |       AddSWI  R|
0000aab0  65 61 64 44 65 66 61 75  6c 74 56 65 63 74 6f 72  |eadDefaultVector|
0000aac0  20 20 20 20 20 20 20 3b  20 26 36 31 0a 0a 20 20  |       ; &61..  |
0000aad0  20 20 20 20 20 20 5e 20  20 20 20 20 20 20 26 43  |      ^       &C|
0000aae0  30 0a 20 20 20 20 20 20  20 20 41 64 64 53 57 49  |0.        AddSWI|
0000aaf0  20 20 43 6f 6e 76 65 72  74 53 74 61 6e 64 61 72  |  ConvertStandar|
0000ab00  64 44 61 74 65 41 6e 64  54 69 6d 65 20 3b 20 26  |dDateAndTime ; &|
0000ab10  43 30 0a 20 20 20 20 20  20 20 20 41 64 64 53 57  |C0.        AddSW|
0000ab20  49 20 20 43 6f 6e 76 65  72 74 44 61 74 65 41 6e  |I  ConvertDateAn|
0000ab30  64 54 69 6d 65 20 20 20  20 20 20 20 20 20 3b 20  |dTime         ; |
0000ab40  26 43 31 0a 0a 20 20 20  20 20 20 20 20 5e 20 20  |&C1..        ^  |
0000ab50  20 20 20 20 20 26 44 30  0a 20 20 20 20 20 20 20  |     &D0.       |
0000ab60  20 41 64 64 53 57 49 20  20 43 6f 6e 76 65 72 74  | AddSWI  Convert|
0000ab70  48 65 78 31 20 20 20 20  20 20 20 20 20 20 20 20  |Hex1            |
0000ab80  20 3b 20 26 44 30 0a 20  20 20 20 20 20 20 20 41  | ; &D0.        A|
0000ab90  64 64 53 57 49 20 20 43  6f 6e 76 65 72 74 48 65  |ddSWI  ConvertHe|
0000aba0  78 32 20 20 20 20 20 20  20 20 20 20 20 20 20 3b  |x2             ;|
0000abb0  20 26 44 31 0a 20 20 20  20 20 20 20 20 41 64 64  | &D1.        Add|
0000abc0  53 57 49 20 20 43 6f 6e  76 65 72 74 48 65 78 34  |SWI  ConvertHex4|
0000abd0  20 20 20 20 20 20 20 20  20 20 20 20 20 3b 20 26  |             ; &|
0000abe0  44 32 0a 20 20 20 20 20  20 20 20 41 64 64 53 57  |D2.        AddSW|
0000abf0  49 20 20 43 6f 6e 76 65  72 74 48 65 78 36 20 20  |I  ConvertHex6  |
0000ac00  20 20 20 20 20 20 20 20  20 20 20 3b 20 26 44 33  |           ; &D3|
0000ac10  0a 20 20 20 20 20 20 20  20 41 64 64 53 57 49 20  |.        AddSWI |
0000ac20  20 43 6f 6e 76 65 72 74  48 65 78 38 20 20 20 20  | ConvertHex8    |
0000ac30  20 20 20 20 20 20 20 20  20 3b 20 26 44 34 0a 20  |         ; &D4. |
0000ac40  20 20 20 20 20 20 20 41  64 64 53 57 49 20 20 43  |       AddSWI  C|
0000ac50  6f 6e 76 65 72 74 43 61  72 64 69 6e 61 6c 31 20  |onvertCardinal1 |
0000ac60  20 20 20 20 20 20 20 3b  20 26 44 35 0a 20 20 20  |       ; &D5.   |
0000ac70  20 20 20 20 20 41 64 64  53 57 49 20 20 43 6f 6e  |     AddSWI  Con|
0000ac80  76 65 72 74 43 61 72 64  69 6e 61 6c 32 20 20 20  |vertCardinal2   |
0000ac90  20 20 20 20 20 3b 20 26  44 36 0a 20 20 20 20 20  |     ; &D6.     |
0000aca0  20 20 20 41 64 64 53 57  49 20 20 43 6f 6e 76 65  |   AddSWI  Conve|
0000acb0  72 74 43 61 72 64 69 6e  61 6c 33 20 20 20 20 20  |rtCardinal3     |
0000acc0  20 20 20 3b 20 26 44 37  0a 20 20 20 20 20 20 20  |   ; &D7.       |
0000acd0  20 41 64 64 53 57 49 20  20 43 6f 6e 76 65 72 74  | AddSWI  Convert|
0000ace0  43 61 72 64 69 6e 61 6c  34 20 20 20 20 20 20 20  |Cardinal4       |
0000acf0  20 3b 20 26 44 38 0a 20  20 20 20 20 20 20 20 41  | ; &D8.        A|
0000ad00  64 64 53 57 49 20 20 43  6f 6e 76 65 72 74 49 6e  |ddSWI  ConvertIn|
0000ad10  74 65 67 65 72 31 20 20  20 20 20 20 20 20 20 3b  |teger1         ;|
0000ad20  20 26 44 39 0a 20 20 20  20 20 20 20 20 41 64 64  | &D9.        Add|
0000ad30  53 57 49 20 20 43 6f 6e  76 65 72 74 49 6e 74 65  |SWI  ConvertInte|
0000ad40  67 65 72 32 20 20 20 20  20 20 20 20 20 3b 20 26  |ger2         ; &|
0000ad50  44 41 0a 20 20 20 20 20  20 20 20 41 64 64 53 57  |DA.        AddSW|
0000ad60  49 20 20 43 6f 6e 76 65  72 74 49 6e 74 65 67 65  |I  ConvertIntege|
0000ad70  72 33 20 20 20 20 20 20  20 20 20 3b 20 26 44 42  |r3         ; &DB|
0000ad80  0a 20 20 20 20 20 20 20  20 41 64 64 53 57 49 20  |.        AddSWI |
0000ad90  20 43 6f 6e 76 65 72 74  49 6e 74 65 67 65 72 34  | ConvertInteger4|
0000ada0  20 20 20 20 20 20 20 20  20 3b 20 26 44 43 0a 20  |         ; &DC. |
0000adb0  20 20 20 20 20 20 20 41  64 64 53 57 49 20 20 43  |       AddSWI  C|
0000adc0  6f 6e 76 65 72 74 42 69  6e 61 72 79 31 20 20 20  |onvertBinary1   |
0000add0  20 20 20 20 20 20 20 3b  20 26 44 44 0a 20 20 20  |       ; &DD.   |
0000ade0  20 20 20 20 20 41 64 64  53 57 49 20 20 43 6f 6e  |     AddSWI  Con|
0000adf0  76 65 72 74 42 69 6e 61  72 79 32 20 20 20 20 20  |vertBinary2     |
0000ae00  20 20 20 20 20 3b 20 26  44 45 0a 20 20 20 20 20  |     ; &DE.     |
0000ae10  20 20 20 41 64 64 53 57  49 20 20 43 6f 6e 76 65  |   AddSWI  Conve|
0000ae20  72 74 42 69 6e 61 72 79  33 20 20 20 20 20 20 20  |rtBinary3       |
0000ae30  20 20 20 3b 20 26 44 46  0a 20 20 20 20 20 20 20  |   ; &DF.       |
0000ae40  20 41 64 64 53 57 49 20  20 43 6f 6e 76 65 72 74  | AddSWI  Convert|
0000ae50  42 69 6e 61 72 79 34 20  20 20 20 20 20 20 20 20  |Binary4         |
0000ae60  20 3b 20 26 45 30 0a 20  20 20 20 20 20 20 20 41  | ; &E0.        A|
0000ae70  64 64 53 57 49 20 20 43  6f 6e 76 65 72 74 53 70  |ddSWI  ConvertSp|
0000ae80  61 63 65 64 43 61 72 64  69 6e 61 6c 31 20 20 3b  |acedCardinal1  ;|
0000ae90  20 26 45 31 0a 20 20 20  20 20 20 20 20 41 64 64  | &E1.        Add|
0000aea0  53 57 49 20 20 43 6f 6e  76 65 72 74 53 70 61 63  |SWI  ConvertSpac|
0000aeb0  65 64 43 61 72 64 69 6e  61 6c 32 20 20 3b 20 26  |edCardinal2  ; &|
0000aec0  45 32 0a 20 20 20 20 20  20 20 20 41 64 64 53 57  |E2.        AddSW|
0000aed0  49 20 20 43 6f 6e 76 65  72 74 53 70 61 63 65 64  |I  ConvertSpaced|
0000aee0  43 61 72 64 69 6e 61 6c  33 20 20 3b 20 26 45 33  |Cardinal3  ; &E3|
0000aef0  0a 20 20 20 20 20 20 20  20 41 64 64 53 57 49 20  |.        AddSWI |
0000af00  20 43 6f 6e 76 65 72 74  53 70 61 63 65 64 43 61  | ConvertSpacedCa|
0000af10  72 64 69 6e 61 6c 34 20  20 3b 20 26 45 34 0a 20  |rdinal4  ; &E4. |
0000af20  20 20 20 20 20 20 20 41  64 64 53 57 49 20 20 43  |       AddSWI  C|
0000af30  6f 6e 76 65 72 74 53 70  61 63 65 64 49 6e 74 65  |onvertSpacedInte|
0000af40  67 65 72 31 20 20 20 3b  20 26 45 35 0a 20 20 20  |ger1   ; &E5.   |
0000af50  20 20 20 20 20 41 64 64  53 57 49 20 20 43 6f 6e  |     AddSWI  Con|
0000af60  76 65 72 74 53 70 61 63  65 64 49 6e 74 65 67 65  |vertSpacedIntege|
0000af70  72 32 20 20 20 3b 20 26  45 36 0a 20 20 20 20 20  |r2   ; &E6.     |
0000af80  20 20 20 41 64 64 53 57  49 20 20 43 6f 6e 76 65  |   AddSWI  Conve|
0000af90  72 74 53 70 61 63 65 64  49 6e 74 65 67 65 72 33  |rtSpacedInteger3|
0000afa0  20 20 20 3b 20 26 45 37  0a 20 20 20 20 20 20 20  |   ; &E7.       |
0000afb0  20 41 64 64 53 57 49 20  20 43 6f 6e 76 65 72 74  | AddSWI  Convert|
0000afc0  53 70 61 63 65 64 49 6e  74 65 67 65 72 34 20 20  |SpacedInteger4  |
0000afd0  20 3b 20 26 45 38 0a 20  20 20 20 20 20 20 20 41  | ; &E8.        A|
0000afe0  64 64 53 57 49 20 20 43  6f 6e 76 65 72 74 46 69  |ddSWI  ConvertFi|
0000aff0  78 65 64 4e 65 74 53 74  61 74 69 6f 6e 20 20 3b  |xedNetStation  ;|
0000b000  20 26 45 39 0a 20 20 20  20 20 20 20 20 41 64 64  | &E9.        Add|
0000b010  53 57 49 20 20 43 6f 6e  76 65 72 74 4e 65 74 53  |SWI  ConvertNetS|
0000b020  74 61 74 69 6f 6e 20 20  20 20 20 20 20 3b 20 26  |tation       ; &|
0000b030  45 41 0a 20 20 20 20 20  20 20 20 41 64 64 53 57  |EA.        AddSW|
0000b040  49 20 20 43 6f 6e 76 65  72 74 46 69 78 65 64 46  |I  ConvertFixedF|
0000b050  69 6c 65 53 69 7a 65 20  20 20 20 3b 20 26 45 42  |ileSize    ; &EB|
0000b060  0a 20 20 20 20 20 20 20  20 41 64 64 53 57 49 20  |.        AddSWI |
0000b070  20 43 6f 6e 76 65 72 74  46 69 6c 65 53 69 7a 65  | ConvertFileSize|
0000b080  20 20 20 20 20 20 20 20  20 3b 20 26 45 43 0a 0a  |         ; &EC..|
0000b090  20 20 20 20 20 20 20 20  41 64 64 53 57 49 20 20  |        AddSWI  |
0000b0a0  57 72 69 74 65 49 2c 20  26 31 30 30 0a 0a 20 20  |WriteI, &100..  |
0000b0b0  20 20 20 20 20 20 45 4e  44 0a 1a 82 73 77 69 73  |      END...swis|
0000b0c0  00 00 00 00 00 00 00 00  00 e0 63 00 00 9b 1b 19  |..........c.....|
0000b0d0  63 95 7f e0 63 00 00 45  ff ff ff 16 41 a4 0e 03  |c...c..E....A...|
0000b0e0  00 00 00 2f 2a 0a 20 20  54 69 74 6c 65 3a 20 20  |.../*.  Title:  |
0000b0f0  20 20 20 20 53 77 69 20  6e 75 6d 62 65 72 73 20  |    Swi numbers |
0000b100  66 6f 72 20 52 69 73 63  4f 73 0a 20 20 43 6f 70  |for RiscOs.  Cop|
0000b110  79 72 69 67 68 74 20 28  43 29 20 31 39 38 39 2c  |yright (C) 1989,|
0000b120  20 41 63 6f 72 6e 20 43  6f 6d 70 75 74 65 72 73  | Acorn Computers|
0000b130  20 4c 74 64 2e 2c 20 43  61 6d 62 72 69 64 67 65  | Ltd., Cambridge|
0000b140  2c 20 45 6e 67 6c 61 6e  64 0a 20 20 24 52 65 76  |, England.  $Rev|
0000b150  69 73 69 6f 6e 3a 20 20  24 20 53 57 49 5f 4c 49  |ision:  $ SWI_LI|
0000b160  53 54 20 31 2e 30 30 20  30 32 2d 4d 61 79 2d 38  |ST 1.00 02-May-8|
0000b170  39 20 28 50 72 6f 67 72  61 6d 20 67 65 6e 65 72  |9 (Program gener|
0000b180  61 74 65 64 29 0a 2a 2f  0a 0a 23 69 66 6e 64 65  |ated).*/..#ifnde|
0000b190  66 20 5f 5f 73 77 69 73  5f 68 0a 23 64 65 66 69  |f __swis_h.#defi|
0000b1a0  6e 65 20 5f 5f 73 77 69  73 5f 68 0a 0a 23 64 65  |ne __swis_h..#de|
0000b1b0  66 69 6e 65 20 58 4f 53  5f 42 69 74 20 20 20 20  |fine XOS_Bit    |
0000b1c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000b1d0  20 20 20 20 30 78 30 32  30 30 30 30 0a 0a 23 64  |    0x020000..#d|
0000b1e0  65 66 69 6e 65 20 4f 53  5f 57 72 69 74 65 49 20  |efine OS_WriteI |
0000b1f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000b200  20 20 20 20 20 30 78 30  30 30 31 30 30 0a 0a 23  |     0x000100..#|
0000b210  64 65 66 69 6e 65 20 4f  53 5f 57 72 69 74 65 43  |define OS_WriteC|
0000b220  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000b230  20 20 20 20 20 20 30 78  30 30 30 30 30 30 0a 23  |      0x000000.#|
0000b240  64 65 66 69 6e 65 20 4f  53 5f 57 72 69 74 65 53  |define OS_WriteS|
0000b250  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000b260  20 20 20 20 20 20 30 78  30 30 30 30 30 31 0a 23  |      0x000001.#|
0000b270  64 65 66 69 6e 65 20 4f  53 5f 57 72 69 74 65 30  |define OS_Write0|
0000b280  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000b290  20 20 20 20 20 20 30 78  30 30 30 30 30 32 0a 23  |      0x000002.#|
0000b2a0  64 65 66 69 6e 65 20 4f  53 5f 4e 65 77 4c 69 6e  |define OS_NewLin|
0000b2b0  65 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |e               |
0000b2c0  20 20 20 20 20 20 30 78  30 30 30 30 30 33 0a 23  |      0x000003.#|
0000b2d0  64 65 66 69 6e 65 20 4f  53 5f 52 65 61 64 43 20  |define OS_ReadC |
0000b2e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000b2f0  20 20 20 20 20 20 30 78  30 30 30 30 30 34 0a 23  |      0x000004.#|
0000b300  64 65 66 69 6e 65 20 4f  53 5f 43 4c 49 20 20 20  |define OS_CLI   |
0000b310  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000b320  20 20 20 20 20 20 30 78  30 30 30 30 30 35 0a 23  |      0x000005.#|
0000b330  64 65 66 69 6e 65 20 4f  53 5f 42 79 74 65 20 20  |define OS_Byte  |
0000b340  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000b350  20 20 20 20 20 20 30 78  30 30 30 30 30 36 0a 23  |      0x000006.#|
0000b360  64 65 66 69 6e 65 20 4f  53 5f 57 6f 72 64 20 20  |define OS_Word  |
0000b370  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000b380  20 20 20 20 20 20 30 78  30 30 30 30 30 37 0a 23  |      0x000007.#|
0000b390  64 65 66 69 6e 65 20 4f  53 5f 46 69 6c 65 20 20  |define OS_File  |
0000b3a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000b3b0  20 20 20 20 20 20 30 78  30 30 30 30 30 38 0a 23  |      0x000008.#|
0000b3c0  64 65 66 69 6e 65 20 4f  53 5f 41 72 67 73 20 20  |define OS_Args  |
0000b3d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000b3e0  20 20 20 20 20 20 30 78  30 30 30 30 30 39 0a 23  |      0x000009.#|
0000b3f0  64 65 66 69 6e 65 20 4f  53 5f 42 47 65 74 20 20  |define OS_BGet  |
0000b400  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000b410  20 20 20 20 20 20 30 78  30 30 30 30 30 61 0a 23  |      0x00000a.#|
0000b420  64 65 66 69 6e 65 20 4f  53 5f 42 50 75 74 20 20  |define OS_BPut  |
0000b430  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000b440  20 20 20 20 20 20 30 78  30 30 30 30 30 62 0a 23  |      0x00000b.#|
0000b450  64 65 66 69 6e 65 20 4f  53 5f 47 42 50 42 20 20  |define OS_GBPB  |
0000b460  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000b470  20 20 20 20 20 20 30 78  30 30 30 30 30 63 0a 23  |      0x00000c.#|
0000b480  64 65 66 69 6e 65 20 4f  53 5f 46 69 6e 64 20 20  |define OS_Find  |
0000b490  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000b4a0  20 20 20 20 20 20 30 78  30 30 30 30 30 64 0a 23  |      0x00000d.#|
0000b4b0  64 65 66 69 6e 65 20 4f  53 5f 52 65 61 64 4c 69  |define OS_ReadLi|
0000b4c0  6e 65 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |ne              |
0000b4d0  20 20 20 20 20 20 30 78  30 30 30 30 30 65 0a 23  |      0x00000e.#|
0000b4e0  64 65 66 69 6e 65 20 4f  53 5f 43 6f 6e 74 72 6f  |define OS_Contro|
0000b4f0  6c 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |l               |
0000b500  20 20 20 20 20 20 30 78  30 30 30 30 30 66 0a 23  |      0x00000f.#|
0000b510  64 65 66 69 6e 65 20 4f  53 5f 47 65 74 45 6e 76  |define OS_GetEnv|
0000b520  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000b530  20 20 20 20 20 20 30 78  30 30 30 30 31 30 0a 23  |      0x000010.#|
0000b540  64 65 66 69 6e 65 20 4f  53 5f 45 78 69 74 20 20  |define OS_Exit  |
0000b550  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000b560  20 20 20 20 20 20 30 78  30 30 30 30 31 31 0a 23  |      0x000011.#|
0000b570  64 65 66 69 6e 65 20 4f  53 5f 53 65 74 45 6e 76  |define OS_SetEnv|
0000b580  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000b590  20 20 20 20 20 20 30 78  30 30 30 30 31 32 0a 23  |      0x000012.#|
0000b5a0  64 65 66 69 6e 65 20 4f  53 5f 49 6e 74 4f 6e 20  |define OS_IntOn |
0000b5b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000b5c0  20 20 20 20 20 20 30 78  30 30 30 30 31 33 0a 23  |      0x000013.#|
0000b5d0  64 65 66 69 6e 65 20 4f  53 5f 49 6e 74 4f 66 66  |define OS_IntOff|
0000b5e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000b5f0  20 20 20 20 20 20 30 78  30 30 30 30 31 34 0a 23  |      0x000014.#|
0000b600  64 65 66 69 6e 65 20 4f  53 5f 43 61 6c 6c 42 61  |define OS_CallBa|
0000b610  63 6b 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |ck              |
0000b620  20 20 20 20 20 20 30 78  30 30 30 30 31 35 0a 23  |      0x000015.#|
0000b630  64 65 66 69 6e 65 20 4f  53 5f 45 6e 74 65 72 4f  |define OS_EnterO|
0000b640  53 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |S               |
0000b650  20 20 20 20 20 20 30 78  30 30 30 30 31 36 0a 23  |      0x000016.#|
0000b660  64 65 66 69 6e 65 20 4f  53 5f 42 72 65 61 6b 50  |define OS_BreakP|
0000b670  74 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |t               |
0000b680  20 20 20 20 20 20 30 78  30 30 30 30 31 37 0a 23  |      0x000017.#|
0000b690  64 65 66 69 6e 65 20 4f  53 5f 42 72 65 61 6b 43  |define OS_BreakC|
0000b6a0  74 72 6c 20 20 20 20 20  20 20 20 20 20 20 20 20  |trl             |
0000b6b0  20 20 20 20 20 20 30 78  30 30 30 30 31 38 0a 23  |      0x000018.#|
0000b6c0  64 65 66 69 6e 65 20 4f  53 5f 55 6e 75 73 65 64  |define OS_Unused|
0000b6d0  53 57 49 20 20 20 20 20  20 20 20 20 20 20 20 20  |SWI             |
0000b6e0  20 20 20 20 20 20 30 78  30 30 30 30 31 39 0a 23  |      0x000019.#|
0000b6f0  64 65 66 69 6e 65 20 4f  53 5f 55 70 64 61 74 65  |define OS_Update|
0000b700  4d 45 4d 43 20 20 20 20  20 20 20 20 20 20 20 20  |MEMC            |
0000b710  20 20 20 20 20 20 30 78  30 30 30 30 31 61 0a 23  |      0x00001a.#|
0000b720  64 65 66 69 6e 65 20 4f  53 5f 53 65 74 43 61 6c  |define OS_SetCal|
0000b730  6c 42 61 63 6b 20 20 20  20 20 20 20 20 20 20 20  |lBack           |
0000b740  20 20 20 20 20 20 30 78  30 30 30 30 31 62 0a 23  |      0x00001b.#|
0000b750  64 65 66 69 6e 65 20 4f  53 5f 4d 6f 75 73 65 20  |define OS_Mouse |
0000b760  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000b770  20 20 20 20 20 20 30 78  30 30 30 30 31 63 0a 23  |      0x00001c.#|
0000b780  64 65 66 69 6e 65 20 4f  53 5f 48 65 61 70 20 20  |define OS_Heap  |
0000b790  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000b7a0  20 20 20 20 20 20 30 78  30 30 30 30 31 64 0a 23  |      0x00001d.#|
0000b7b0  64 65 66 69 6e 65 20 4f  53 5f 4d 6f 64 75 6c 65  |define OS_Module|
0000b7c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000b7d0  20 20 20 20 20 20 30 78  30 30 30 30 31 65 0a 23  |      0x00001e.#|
0000b7e0  64 65 66 69 6e 65 20 4f  53 5f 43 6c 61 69 6d 20  |define OS_Claim |
0000b7f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000b800  20 20 20 20 20 20 30 78  30 30 30 30 31 66 0a 23  |      0x00001f.#|
0000b810  64 65 66 69 6e 65 20 4f  53 5f 52 65 6c 65 61 73  |define OS_Releas|
0000b820  65 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |e               |
0000b830  20 20 20 20 20 20 30 78  30 30 30 30 32 30 0a 23  |      0x000020.#|
0000b840  64 65 66 69 6e 65 20 4f  53 5f 52 65 61 64 55 6e  |define OS_ReadUn|
0000b850  73 69 67 6e 65 64 20 20  20 20 20 20 20 20 20 20  |signed          |
0000b860  20 20 20 20 20 20 30 78  30 30 30 30 32 31 0a 23  |      0x000021.#|
0000b870  64 65 66 69 6e 65 20 4f  53 5f 47 65 6e 65 72 61  |define OS_Genera|
0000b880  74 65 45 76 65 6e 74 20  20 20 20 20 20 20 20 20  |teEvent         |
0000b890  20 20 20 20 20 20 30 78  30 30 30 30 32 32 0a 23  |      0x000022.#|
0000b8a0  64 65 66 69 6e 65 20 4f  53 5f 52 65 61 64 56 61  |define OS_ReadVa|
0000b8b0  72 56 61 6c 20 20 20 20  20 20 20 20 20 20 20 20  |rVal            |
0000b8c0  20 20 20 20 20 20 30 78  30 30 30 30 32 33 0a 23  |      0x000023.#|
0000b8d0  64 65 66 69 6e 65 20 4f  53 5f 53 65 74 56 61 72  |define OS_SetVar|
0000b8e0  56 61 6c 20 20 20 20 20  20 20 20 20 20 20 20 20  |Val             |
0000b8f0  20 20 20 20 20 20 30 78  30 30 30 30 32 34 0a 23  |      0x000024.#|
0000b900  64 65 66 69 6e 65 20 4f  53 5f 47 53 49 6e 69 74  |define OS_GSInit|
0000b910  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000b920  20 20 20 20 20 20 30 78  30 30 30 30 32 35 0a 23  |      0x000025.#|
0000b930  64 65 66 69 6e 65 20 4f  53 5f 47 53 52 65 61 64  |define OS_GSRead|
0000b940  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000b950  20 20 20 20 20 20 30 78  30 30 30 30 32 36 0a 23  |      0x000026.#|
0000b960  64 65 66 69 6e 65 20 4f  53 5f 47 53 54 72 61 6e  |define OS_GSTran|
0000b970  73 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |s               |
0000b980  20 20 20 20 20 20 30 78  30 30 30 30 32 37 0a 23  |      0x000027.#|
0000b990  64 65 66 69 6e 65 20 4f  53 5f 42 69 6e 61 72 79  |define OS_Binary|
0000b9a0  54 6f 44 65 63 69 6d 61  6c 20 20 20 20 20 20 20  |ToDecimal       |
0000b9b0  20 20 20 20 20 20 30 78  30 30 30 30 32 38 0a 23  |      0x000028.#|
0000b9c0  64 65 66 69 6e 65 20 4f  53 5f 46 53 43 6f 6e 74  |define OS_FSCont|
0000b9d0  72 6f 6c 20 20 20 20 20  20 20 20 20 20 20 20 20  |rol             |
0000b9e0  20 20 20 20 20 20 30 78  30 30 30 30 32 39 0a 23  |      0x000029.#|
0000b9f0  64 65 66 69 6e 65 20 4f  53 5f 43 68 61 6e 67 65  |define OS_Change|
0000ba00  44 79 6e 61 6d 69 63 41  72 65 61 20 20 20 20 20  |DynamicArea     |
0000ba10  20 20 20 20 20 20 30 78  30 30 30 30 32 61 0a 23  |      0x00002a.#|
0000ba20  64 65 66 69 6e 65 20 4f  53 5f 47 65 6e 65 72 61  |define OS_Genera|
0000ba30  74 65 45 72 72 6f 72 20  20 20 20 20 20 20 20 20  |teError         |
0000ba40  20 20 20 20 20 20 30 78  30 30 30 30 32 62 0a 23  |      0x00002b.#|
0000ba50  64 65 66 69 6e 65 20 4f  53 5f 52 65 61 64 45 73  |define OS_ReadEs|
0000ba60  63 61 70 65 53 74 61 74  65 20 20 20 20 20 20 20  |capeState       |
0000ba70  20 20 20 20 20 20 30 78  30 30 30 30 32 63 0a 23  |      0x00002c.#|
0000ba80  64 65 66 69 6e 65 20 4f  53 5f 45 76 61 6c 75 61  |define OS_Evalua|
0000ba90  74 65 45 78 70 72 65 73  73 69 6f 6e 20 20 20 20  |teExpression    |
0000baa0  20 20 20 20 20 20 30 78  30 30 30 30 32 64 0a 23  |      0x00002d.#|
0000bab0  64 65 66 69 6e 65 20 4f  53 5f 53 70 72 69 74 65  |define OS_Sprite|
0000bac0  4f 70 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |Op              |
0000bad0  20 20 20 20 20 20 30 78  30 30 30 30 32 65 0a 23  |      0x00002e.#|
0000bae0  64 65 66 69 6e 65 20 4f  53 5f 52 65 61 64 50 61  |define OS_ReadPa|
0000baf0  6c 65 74 74 65 20 20 20  20 20 20 20 20 20 20 20  |lette           |
0000bb00  20 20 20 20 20 20 30 78  30 30 30 30 32 66 0a 23  |      0x00002f.#|
0000bb10  64 65 66 69 6e 65 20 4f  53 5f 53 65 72 76 69 63  |define OS_Servic|
0000bb20  65 43 61 6c 6c 20 20 20  20 20 20 20 20 20 20 20  |eCall           |
0000bb30  20 20 20 20 20 20 30 78  30 30 30 30 33 30 0a 23  |      0x000030.#|
0000bb40  64 65 66 69 6e 65 20 4f  53 5f 52 65 61 64 56 64  |define OS_ReadVd|
0000bb50  75 56 61 72 69 61 62 6c  65 73 20 20 20 20 20 20  |uVariables      |
0000bb60  20 20 20 20 20 20 30 78  30 30 30 30 33 31 0a 23  |      0x000031.#|
0000bb70  64 65 66 69 6e 65 20 4f  53 5f 52 65 61 64 50 6f  |define OS_ReadPo|
0000bb80  69 6e 74 20 20 20 20 20  20 20 20 20 20 20 20 20  |int             |
0000bb90  20 20 20 20 20 20 30 78  30 30 30 30 33 32 0a 23  |      0x000032.#|
0000bba0  64 65 66 69 6e 65 20 4f  53 5f 55 70 43 61 6c 6c  |define OS_UpCall|
0000bbb0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000bbc0  20 20 20 20 20 20 30 78  30 30 30 30 33 33 0a 23  |      0x000033.#|
0000bbd0  64 65 66 69 6e 65 20 4f  53 5f 43 61 6c 6c 41 56  |define OS_CallAV|
0000bbe0  65 63 74 6f 72 20 20 20  20 20 20 20 20 20 20 20  |ector           |
0000bbf0  20 20 20 20 20 20 30 78  30 30 30 30 33 34 0a 23  |      0x000034.#|
0000bc00  64 65 66 69 6e 65 20 4f  53 5f 52 65 61 64 4d 6f  |define OS_ReadMo|
0000bc10  64 65 56 61 72 69 61 62  6c 65 20 20 20 20 20 20  |deVariable      |
0000bc20  20 20 20 20 20 20 30 78  30 30 30 30 33 35 0a 23  |      0x000035.#|
0000bc30  64 65 66 69 6e 65 20 4f  53 5f 52 65 6d 6f 76 65  |define OS_Remove|
0000bc40  43 75 72 73 6f 72 73 20  20 20 20 20 20 20 20 20  |Cursors         |
0000bc50  20 20 20 20 20 20 30 78  30 30 30 30 33 36 0a 23  |      0x000036.#|
0000bc60  64 65 66 69 6e 65 20 4f  53 5f 52 65 73 74 6f 72  |define OS_Restor|
0000bc70  65 43 75 72 73 6f 72 73  20 20 20 20 20 20 20 20  |eCursors        |
0000bc80  20 20 20 20 20 20 30 78  30 30 30 30 33 37 0a 23  |      0x000037.#|
0000bc90  64 65 66 69 6e 65 20 4f  53 5f 53 57 49 4e 75 6d  |define OS_SWINum|
0000bca0  62 65 72 54 6f 53 74 72  69 6e 67 20 20 20 20 20  |berToString     |
0000bcb0  20 20 20 20 20 20 30 78  30 30 30 30 33 38 0a 23  |      0x000038.#|
0000bcc0  64 65 66 69 6e 65 20 4f  53 5f 53 57 49 4e 75 6d  |define OS_SWINum|
0000bcd0  62 65 72 46 72 6f 6d 53  74 72 69 6e 67 20 20 20  |berFromString   |
0000bce0  20 20 20 20 20 20 30 78  30 30 30 30 33 39 0a 23  |      0x000039.#|
0000bcf0  64 65 66 69 6e 65 20 4f  53 5f 56 61 6c 69 64 61  |define OS_Valida|
0000bd00  74 65 41 64 64 72 65 73  73 20 20 20 20 20 20 20  |teAddress       |
0000bd10  20 20 20 20 20 20 30 78  30 30 30 30 33 61 0a 23  |      0x00003a.#|
0000bd20  64 65 66 69 6e 65 20 4f  53 5f 43 61 6c 6c 41 66  |define OS_CallAf|
0000bd30  74 65 72 20 20 20 20 20  20 20 20 20 20 20 20 20  |ter             |
0000bd40  20 20 20 20 20 20 30 78  30 30 30 30 33 62 0a 23  |      0x00003b.#|
0000bd50  64 65 66 69 6e 65 20 4f  53 5f 43 61 6c 6c 45 76  |define OS_CallEv|
0000bd60  65 72 79 20 20 20 20 20  20 20 20 20 20 20 20 20  |ery             |
0000bd70  20 20 20 20 20 20 30 78  30 30 30 30 33 63 0a 23  |      0x00003c.#|
0000bd80  64 65 66 69 6e 65 20 4f  53 5f 52 65 6d 6f 76 65  |define OS_Remove|
0000bd90  54 69 63 6b 65 72 45 76  65 6e 74 20 20 20 20 20  |TickerEvent     |
0000bda0  20 20 20 20 20 20 30 78  30 30 30 30 33 64 0a 23  |      0x00003d.#|
0000bdb0  64 65 66 69 6e 65 20 4f  53 5f 49 6e 73 74 61 6c  |define OS_Instal|
0000bdc0  6c 4b 65 79 48 61 6e 64  6c 65 72 20 20 20 20 20  |lKeyHandler     |
0000bdd0  20 20 20 20 20 20 30 78  30 30 30 30 33 65 0a 23  |      0x00003e.#|
0000bde0  64 65 66 69 6e 65 20 4f  53 5f 43 68 65 63 6b 4d  |define OS_CheckM|
0000bdf0  6f 64 65 56 61 6c 69 64  20 20 20 20 20 20 20 20  |odeValid        |
0000be00  20 20 20 20 20 20 30 78  30 30 30 30 33 66 0a 23  |      0x00003f.#|
0000be10  64 65 66 69 6e 65 20 4f  53 5f 43 68 61 6e 67 65  |define OS_Change|
0000be20  45 6e 76 69 72 6f 6e 6d  65 6e 74 20 20 20 20 20  |Environment     |
0000be30  20 20 20 20 20 20 30 78  30 30 30 30 34 30 0a 23  |      0x000040.#|
0000be40  64 65 66 69 6e 65 20 4f  53 5f 43 6c 61 69 6d 53  |define OS_ClaimS|
0000be50  63 72 65 65 6e 4d 65 6d  6f 72 79 20 20 20 20 20  |creenMemory     |
0000be60  20 20 20 20 20 20 30 78  30 30 30 30 34 31 0a 23  |      0x000041.#|
0000be70  64 65 66 69 6e 65 20 4f  53 5f 52 65 61 64 4d 6f  |define OS_ReadMo|
0000be80  6e 6f 74 6f 6e 69 63 54  69 6d 65 20 20 20 20 20  |notonicTime     |
0000be90  20 20 20 20 20 20 30 78  30 30 30 30 34 32 0a 23  |      0x000042.#|
0000bea0  64 65 66 69 6e 65 20 4f  53 5f 53 75 62 73 74 69  |define OS_Substi|
0000beb0  74 75 74 65 41 72 67 73  20 20 20 20 20 20 20 20  |tuteArgs        |
0000bec0  20 20 20 20 20 20 30 78  30 30 30 30 34 33 0a 23  |      0x000043.#|
0000bed0  64 65 66 69 6e 65 20 4f  53 5f 50 72 65 74 74 79  |define OS_Pretty|
0000bee0  50 72 69 6e 74 20 20 20  20 20 20 20 20 20 20 20  |Print           |
0000bef0  20 20 20 20 20 20 30 78  30 30 30 30 34 34 0a 23  |      0x000044.#|
0000bf00  64 65 66 69 6e 65 20 4f  53 5f 50 6c 6f 74 20 20  |define OS_Plot  |
0000bf10  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000bf20  20 20 20 20 20 20 30 78  30 30 30 30 34 35 0a 23  |      0x000045.#|
0000bf30  64 65 66 69 6e 65 20 4f  53 5f 57 72 69 74 65 4e  |define OS_WriteN|
0000bf40  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000bf50  20 20 20 20 20 20 30 78  30 30 30 30 34 36 0a 23  |      0x000046.#|
0000bf60  64 65 66 69 6e 65 20 4f  53 5f 41 64 64 54 6f 56  |define OS_AddToV|
0000bf70  65 63 74 6f 72 20 20 20  20 20 20 20 20 20 20 20  |ector           |
0000bf80  20 20 20 20 20 20 30 78  30 30 30 30 34 37 0a 23  |      0x000047.#|
0000bf90  64 65 66 69 6e 65 20 4f  53 5f 57 72 69 74 65 45  |define OS_WriteE|
0000bfa0  6e 76 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |nv              |
0000bfb0  20 20 20 20 20 20 30 78  30 30 30 30 34 38 0a 23  |      0x000048.#|
0000bfc0  64 65 66 69 6e 65 20 4f  53 5f 52 65 61 64 41 72  |define OS_ReadAr|
0000bfd0  67 73 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |gs              |
0000bfe0  20 20 20 20 20 20 30 78  30 30 30 30 34 39 0a 23  |      0x000049.#|
0000bff0  64 65 66 69 6e 65 20 4f  53 5f 52 65 61 64 52 41  |define OS_ReadRA|
0000c000  4d 46 73 4c 69 6d 69 74  73 20 20 20 20 20 20 20  |MFsLimits       |
0000c010  20 20 20 20 20 20 30 78  30 30 30 30 34 61 0a 23  |      0x00004a.#|
0000c020  64 65 66 69 6e 65 20 4f  53 5f 43 6c 61 69 6d 44  |define OS_ClaimD|
0000c030  65 76 69 63 65 56 65 63  74 6f 72 20 20 20 20 20  |eviceVector     |
0000c040  20 20 20 20 20 20 30 78  30 30 30 30 34 62 0a 23  |      0x00004b.#|
0000c050  64 65 66 69 6e 65 20 4f  53 5f 52 65 6c 65 61 73  |define OS_Releas|
0000c060  65 44 65 76 69 63 65 56  65 63 74 6f 72 20 20 20  |eDeviceVector   |
0000c070  20 20 20 20 20 20 30 78  30 30 30 30 34 63 0a 23  |      0x00004c.#|
0000c080  64 65 66 69 6e 65 20 4f  53 5f 44 65 6c 69 6e 6b  |define OS_Delink|
0000c090  41 70 70 6c 69 63 61 74  69 6f 6e 20 20 20 20 20  |Application     |
0000c0a0  20 20 20 20 20 20 30 78  30 30 30 30 34 64 0a 23  |      0x00004d.#|
0000c0b0  64 65 66 69 6e 65 20 4f  53 5f 52 65 6c 69 6e 6b  |define OS_Relink|
0000c0c0  41 70 70 6c 69 63 61 74  69 6f 6e 20 20 20 20 20  |Application     |
0000c0d0  20 20 20 20 20 20 30 78  30 30 30 30 34 65 0a 23  |      0x00004e.#|
0000c0e0  64 65 66 69 6e 65 20 4f  53 5f 48 65 61 70 53 6f  |define OS_HeapSo|
0000c0f0  72 74 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |rt              |
0000c100  20 20 20 20 20 20 30 78  30 30 30 30 34 66 0a 23  |      0x00004f.#|
0000c110  64 65 66 69 6e 65 20 4f  53 5f 45 78 69 74 41 6e  |define OS_ExitAn|
0000c120  64 44 69 65 20 20 20 20  20 20 20 20 20 20 20 20  |dDie            |
0000c130  20 20 20 20 20 20 30 78  30 30 30 30 35 30 0a 23  |      0x000050.#|
0000c140  64 65 66 69 6e 65 20 4f  53 5f 52 65 61 64 4d 65  |define OS_ReadMe|
0000c150  6d 4d 61 70 49 6e 66 6f  20 20 20 20 20 20 20 20  |mMapInfo        |
0000c160  20 20 20 20 20 20 30 78  30 30 30 30 35 31 0a 23  |      0x000051.#|
0000c170  64 65 66 69 6e 65 20 4f  53 5f 52 65 61 64 4d 65  |define OS_ReadMe|
0000c180  6d 4d 61 70 45 6e 74 72  69 65 73 20 20 20 20 20  |mMapEntries     |
0000c190  20 20 20 20 20 20 30 78  30 30 30 30 35 32 0a 23  |      0x000052.#|
0000c1a0  64 65 66 69 6e 65 20 4f  53 5f 53 65 74 4d 65 6d  |define OS_SetMem|
0000c1b0  4d 61 70 45 6e 74 72 69  65 73 20 20 20 20 20 20  |MapEntries      |
0000c1c0  20 20 20 20 20 20 30 78  30 30 30 30 35 33 0a 23  |      0x000053.#|
0000c1d0  64 65 66 69 6e 65 20 4f  53 5f 41 64 64 43 61 6c  |define OS_AddCal|
0000c1e0  6c 42 61 63 6b 20 20 20  20 20 20 20 20 20 20 20  |lBack           |
0000c1f0  20 20 20 20 20 20 30 78  30 30 30 30 35 34 0a 23  |      0x000054.#|
0000c200  64 65 66 69 6e 65 20 4f  53 5f 52 65 61 64 44 65  |define OS_ReadDe|
0000c210  66 61 75 6c 74 48 61 6e  64 6c 65 72 20 20 20 20  |faultHandler    |
0000c220  20 20 20 20 20 20 30 78  30 30 30 30 35 35 0a 23  |      0x000055.#|
0000c230  64 65 66 69 6e 65 20 4f  53 5f 53 65 74 45 43 46  |define OS_SetECF|
0000c240  4f 72 69 67 69 6e 20 20  20 20 20 20 20 20 20 20  |Origin          |
0000c250  20 20 20 20 20 20 30 78  30 30 30 30 35 36 0a 23  |      0x000056.#|
0000c260  64 65 66 69 6e 65 20 4f  53 5f 53 65 72 69 61 6c  |define OS_Serial|
0000c270  4f 70 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |Op              |
0000c280  20 20 20 20 20 20 30 78  30 30 30 30 35 37 0a 23  |      0x000057.#|
0000c290  64 65 66 69 6e 65 20 4f  53 5f 52 65 61 64 53 79  |define OS_ReadSy|
0000c2a0  73 49 6e 66 6f 20 20 20  20 20 20 20 20 20 20 20  |sInfo           |
0000c2b0  20 20 20 20 20 20 30 78  30 30 30 30 35 38 0a 23  |      0x000058.#|
0000c2c0  64 65 66 69 6e 65 20 4f  53 5f 43 6f 6e 66 69 72  |define OS_Confir|
0000c2d0  6d 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |m               |
0000c2e0  20 20 20 20 20 20 30 78  30 30 30 30 35 39 0a 23  |      0x000059.#|
0000c2f0  64 65 66 69 6e 65 20 4f  53 5f 43 68 61 6e 67 65  |define OS_Change|
0000c300  64 42 6f 78 20 20 20 20  20 20 20 20 20 20 20 20  |dBox            |
0000c310  20 20 20 20 20 20 30 78  30 30 30 30 35 61 0a 23  |      0x00005a.#|
0000c320  64 65 66 69 6e 65 20 4f  53 5f 43 52 43 20 20 20  |define OS_CRC   |
0000c330  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000c340  20 20 20 20 20 20 30 78  30 30 30 30 35 62 0a 23  |      0x00005b.#|
0000c350  64 65 66 69 6e 65 20 4f  53 5f 52 65 61 64 44 79  |define OS_ReadDy|
0000c360  6e 61 6d 69 63 41 72 65  61 20 20 20 20 20 20 20  |namicArea       |
0000c370  20 20 20 20 20 20 30 78  30 30 30 30 35 63 0a 23  |      0x00005c.#|
0000c380  64 65 66 69 6e 65 20 4f  53 5f 50 72 69 6e 74 43  |define OS_PrintC|
0000c390  68 61 72 20 20 20 20 20  20 20 20 20 20 20 20 20  |har             |
0000c3a0  20 20 20 20 20 20 30 78  30 30 30 30 35 64 0a 23  |      0x00005d.#|
0000c3b0  64 65 66 69 6e 65 20 4f  53 5f 43 68 61 6e 67 65  |define OS_Change|
0000c3c0  52 65 64 69 72 65 63 74  69 6f 6e 20 20 20 20 20  |Redirection     |
0000c3d0  20 20 20 20 20 20 30 78  30 30 30 30 35 65 0a 23  |      0x00005e.#|
0000c3e0  64 65 66 69 6e 65 20 4f  53 5f 52 65 6d 6f 76 65  |define OS_Remove|
0000c3f0  43 61 6c 6c 42 61 63 6b  20 20 20 20 20 20 20 20  |CallBack        |
0000c400  20 20 20 20 20 20 30 78  30 30 30 30 35 66 0a 23  |      0x00005f.#|
0000c410  64 65 66 69 6e 65 20 4f  53 5f 46 69 6e 64 4d 65  |define OS_FindMe|
0000c420  6d 4d 61 70 45 6e 74 72  69 65 73 20 20 20 20 20  |mMapEntries     |
0000c430  20 20 20 20 20 20 30 78  30 30 30 30 36 30 0a 23  |      0x000060.#|
0000c440  64 65 66 69 6e 65 20 4f  53 5f 53 65 74 43 6f 6c  |define OS_SetCol|
0000c450  6f 75 72 20 20 20 20 20  20 20 20 20 20 20 20 20  |our             |
0000c460  20 20 20 20 20 20 30 78  30 30 30 30 36 31 0a 23  |      0x000061.#|
0000c470  64 65 66 69 6e 65 20 4f  53 5f 43 6f 6e 76 65 72  |define OS_Conver|
0000c480  74 53 74 61 6e 64 61 72  64 44 61 74 65 41 6e 64  |tStandardDateAnd|
0000c490  54 69 6d 65 20 20 30 78  30 30 30 30 63 30 0a 23  |Time  0x0000c0.#|
0000c4a0  64 65 66 69 6e 65 20 4f  53 5f 43 6f 6e 76 65 72  |define OS_Conver|
0000c4b0  74 44 61 74 65 41 6e 64  54 69 6d 65 20 20 20 20  |tDateAndTime    |
0000c4c0  20 20 20 20 20 20 30 78  30 30 30 30 63 31 0a 23  |      0x0000c1.#|
0000c4d0  64 65 66 69 6e 65 20 4f  53 5f 43 6f 6e 76 65 72  |define OS_Conver|
0000c4e0  74 48 65 78 31 20 20 20  20 20 20 20 20 20 20 20  |tHex1           |
0000c4f0  20 20 20 20 20 20 30 78  30 30 30 30 64 30 0a 23  |      0x0000d0.#|
0000c500  64 65 66 69 6e 65 20 4f  53 5f 43 6f 6e 76 65 72  |define OS_Conver|
0000c510  74 48 65 78 32 20 20 20  20 20 20 20 20 20 20 20  |tHex2           |
0000c520  20 20 20 20 20 20 30 78  30 30 30 30 64 31 0a 23  |      0x0000d1.#|
0000c530  64 65 66 69 6e 65 20 4f  53 5f 43 6f 6e 76 65 72  |define OS_Conver|
0000c540  74 48 65 78 34 20 20 20  20 20 20 20 20 20 20 20  |tHex4           |
0000c550  20 20 20 20 20 20 30 78  30 30 30 30 64 32 0a 23  |      0x0000d2.#|
0000c560  64 65 66 69 6e 65 20 4f  53 5f 43 6f 6e 76 65 72  |define OS_Conver|
0000c570  74 48 65 78 36 20 20 20  20 20 20 20 20 20 20 20  |tHex6           |
0000c580  20 20 20 20 20 20 30 78  30 30 30 30 64 33 0a 23  |      0x0000d3.#|
0000c590  64 65 66 69 6e 65 20 4f  53 5f 43 6f 6e 76 65 72  |define OS_Conver|
0000c5a0  74 48 65 78 38 20 20 20  20 20 20 20 20 20 20 20  |tHex8           |
0000c5b0  20 20 20 20 20 20 30 78  30 30 30 30 64 34 0a 23  |      0x0000d4.#|
0000c5c0  64 65 66 69 6e 65 20 4f  53 5f 43 6f 6e 76 65 72  |define OS_Conver|
0000c5d0  74 43 61 72 64 69 6e 61  6c 31 20 20 20 20 20 20  |tCardinal1      |
0000c5e0  20 20 20 20 20 20 30 78  30 30 30 30 64 35 0a 23  |      0x0000d5.#|
0000c5f0  64 65 66 69 6e 65 20 4f  53 5f 43 6f 6e 76 65 72  |define OS_Conver|
0000c600  74 43 61 72 64 69 6e 61  6c 32 20 20 20 20 20 20  |tCardinal2      |
0000c610  20 20 20 20 20 20 30 78  30 30 30 30 64 36 0a 23  |      0x0000d6.#|
0000c620  64 65 66 69 6e 65 20 4f  53 5f 43 6f 6e 76 65 72  |define OS_Conver|
0000c630  74 43 61 72 64 69 6e 61  6c 33 20 20 20 20 20 20  |tCardinal3      |
0000c640  20 20 20 20 20 20 30 78  30 30 30 30 64 37 0a 23  |      0x0000d7.#|
0000c650  64 65 66 69 6e 65 20 4f  53 5f 43 6f 6e 76 65 72  |define OS_Conver|
0000c660  74 43 61 72 64 69 6e 61  6c 34 20 20 20 20 20 20  |tCardinal4      |
0000c670  20 20 20 20 20 20 30 78  30 30 30 30 64 38 0a 23  |      0x0000d8.#|
0000c680  64 65 66 69 6e 65 20 4f  53 5f 43 6f 6e 76 65 72  |define OS_Conver|
0000c690  74 49 6e 74 65 67 65 72  31 20 20 20 20 20 20 20  |tInteger1       |
0000c6a0  20 20 20 20 20 20 30 78  30 30 30 30 64 39 0a 23  |      0x0000d9.#|
0000c6b0  64 65 66 69 6e 65 20 4f  53 5f 43 6f 6e 76 65 72  |define OS_Conver|
0000c6c0  74 49 6e 74 65 67 65 72  32 20 20 20 20 20 20 20  |tInteger2       |
0000c6d0  20 20 20 20 20 20 30 78  30 30 30 30 64 61 0a 23  |      0x0000da.#|
0000c6e0  64 65 66 69 6e 65 20 4f  53 5f 43 6f 6e 76 65 72  |define OS_Conver|
0000c6f0  74 49 6e 74 65 67 65 72  33 20 20 20 20 20 20 20  |tInteger3       |
0000c700  20 20 20 20 20 20 30 78  30 30 30 30 64 62 0a 23  |      0x0000db.#|
0000c710  64 65 66 69 6e 65 20 4f  53 5f 43 6f 6e 76 65 72  |define OS_Conver|
0000c720  74 49 6e 74 65 67 65 72  34 20 20 20 20 20 20 20  |tInteger4       |
0000c730  20 20 20 20 20 20 30 78  30 30 30 30 64 63 0a 23  |      0x0000dc.#|
0000c740  64 65 66 69 6e 65 20 4f  53 5f 43 6f 6e 76 65 72  |define OS_Conver|
0000c750  74 42 69 6e 61 72 79 31  20 20 20 20 20 20 20 20  |tBinary1        |
0000c760  20 20 20 20 20 20 30 78  30 30 30 30 64 64 0a 23  |      0x0000dd.#|
0000c770  64 65 66 69 6e 65 20 4f  53 5f 43 6f 6e 76 65 72  |define OS_Conver|
0000c780  74 42 69 6e 61 72 79 32  20 20 20 20 20 20 20 20  |tBinary2        |
0000c790  20 20 20 20 20 20 30 78  30 30 30 30 64 65 0a 23  |      0x0000de.#|
0000c7a0  64 65 66 69 6e 65 20 4f  53 5f 43 6f 6e 76 65 72  |define OS_Conver|
0000c7b0  74 42 69 6e 61 72 79 33  20 20 20 20 20 20 20 20  |tBinary3        |
0000c7c0  20 20 20 20 20 20 30 78  30 30 30 30 64 66 0a 23  |      0x0000df.#|
0000c7d0  64 65 66 69 6e 65 20 4f  53 5f 43 6f 6e 76 65 72  |define OS_Conver|
0000c7e0  74 42 69 6e 61 72 79 34  20 20 20 20 20 20 20 20  |tBinary4        |
0000c7f0  20 20 20 20 20 20 30 78  30 30 30 30 65 30 0a 23  |      0x0000e0.#|
0000c800  64 65 66 69 6e 65 20 4f  53 5f 43 6f 6e 76 65 72  |define OS_Conver|
0000c810  74 53 70 61 63 65 64 43  61 72 64 69 6e 61 6c 31  |tSpacedCardinal1|
0000c820  20 20 20 20 20 20 30 78  30 30 30 30 65 31 0a 23  |      0x0000e1.#|
0000c830  64 65 66 69 6e 65 20 4f  53 5f 43 6f 6e 76 65 72  |define OS_Conver|
0000c840  74 53 70 61 63 65 64 43  61 72 64 69 6e 61 6c 32  |tSpacedCardinal2|
0000c850  20 20 20 20 20 20 30 78  30 30 30 30 65 32 0a 23  |      0x0000e2.#|
0000c860  64 65 66 69 6e 65 20 4f  53 5f 43 6f 6e 76 65 72  |define OS_Conver|
0000c870  74 53 70 61 63 65 64 43  61 72 64 69 6e 61 6c 33  |tSpacedCardinal3|
0000c880  20 20 20 20 20 20 30 78  30 30 30 30 65 33 0a 23  |      0x0000e3.#|
0000c890  64 65 66 69 6e 65 20 4f  53 5f 43 6f 6e 76 65 72  |define OS_Conver|
0000c8a0  74 53 70 61 63 65 64 43  61 72 64 69 6e 61 6c 34  |tSpacedCardinal4|
0000c8b0  20 20 20 20 20 20 30 78  30 30 30 30 65 34 0a 23  |      0x0000e4.#|
0000c8c0  64 65 66 69 6e 65 20 4f  53 5f 43 6f 6e 76 65 72  |define OS_Conver|
0000c8d0  74 53 70 61 63 65 64 49  6e 74 65 67 65 72 31 20  |tSpacedInteger1 |
0000c8e0  20 20 20 20 20 20 30 78  30 30 30 30 65 35 0a 23  |      0x0000e5.#|
0000c8f0  64 65 66 69 6e 65 20 4f  53 5f 43 6f 6e 76 65 72  |define OS_Conver|
0000c900  74 53 70 61 63 65 64 49  6e 74 65 67 65 72 32 20  |tSpacedInteger2 |
0000c910  20 20 20 20 20 20 30 78  30 30 30 30 65 36 0a 23  |      0x0000e6.#|
0000c920  64 65 66 69 6e 65 20 4f  53 5f 43 6f 6e 76 65 72  |define OS_Conver|
0000c930  74 53 70 61 63 65 64 49  6e 74 65 67 65 72 33 20  |tSpacedInteger3 |
0000c940  20 20 20 20 20 20 30 78  30 30 30 30 65 37 0a 23  |      0x0000e7.#|
0000c950  64 65 66 69 6e 65 20 4f  53 5f 43 6f 6e 76 65 72  |define OS_Conver|
0000c960  74 53 70 61 63 65 64 49  6e 74 65 67 65 72 34 20  |tSpacedInteger4 |
0000c970  20 20 20 20 20 20 30 78  30 30 30 30 65 38 0a 23  |      0x0000e8.#|
0000c980  64 65 66 69 6e 65 20 4f  53 5f 43 6f 6e 76 65 72  |define OS_Conver|
0000c990  74 46 69 78 65 64 4e 65  74 53 74 61 74 69 6f 6e  |tFixedNetStation|
0000c9a0  20 20 20 20 20 20 30 78  30 30 30 30 65 39 0a 23  |      0x0000e9.#|
0000c9b0  64 65 66 69 6e 65 20 4f  53 5f 43 6f 6e 76 65 72  |define OS_Conver|
0000c9c0  74 4e 65 74 53 74 61 74  69 6f 6e 20 20 20 20 20  |tNetStation     |
0000c9d0  20 20 20 20 20 20 30 78  30 30 30 30 65 61 0a 23  |      0x0000ea.#|
0000c9e0  64 65 66 69 6e 65 20 4f  53 5f 43 6f 6e 76 65 72  |define OS_Conver|
0000c9f0  74 46 69 78 65 64 46 69  6c 65 53 69 7a 65 20 20  |tFixedFileSize  |
0000ca00  20 20 20 20 20 20 30 78  30 30 30 30 65 62 0a 23  |      0x0000eb.#|
0000ca10  64 65 66 69 6e 65 20 4f  53 5f 43 6f 6e 76 65 72  |define OS_Conver|
0000ca20  74 46 69 6c 65 53 69 7a  65 20 20 20 20 20 20 20  |tFileSize       |
0000ca30  20 20 20 20 20 20 30 78  30 30 30 30 65 63 0a 23  |      0x0000ec.#|
0000ca40  64 65 66 69 6e 65 20 49  49 43 5f 43 6f 6e 74 72  |define IIC_Contr|
0000ca50  6f 6c 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |ol              |
0000ca60  20 20 20 20 20 20 30 78  30 30 30 32 34 30 0a 23  |      0x000240.#|
0000ca70  64 65 66 69 6e 65 20 43  61 63 68 65 5f 43 6f 6e  |define Cache_Con|
0000ca80  74 72 6f 6c 20 20 20 20  20 20 20 20 20 20 20 20  |trol            |
0000ca90  20 20 20 20 20 20 30 78  30 30 30 32 38 30 0a 23  |      0x000280.#|
0000caa0  64 65 66 69 6e 65 20 43  61 63 68 65 5f 43 61 63  |define Cache_Cac|
0000cab0  68 65 61 62 6c 65 20 20  20 20 20 20 20 20 20 20  |heable          |
0000cac0  20 20 20 20 20 20 30 78  30 30 30 32 38 31 0a 23  |      0x000281.#|
0000cad0  64 65 66 69 6e 65 20 43  61 63 68 65 5f 55 70 64  |define Cache_Upd|
0000cae0  61 74 65 61 62 6c 65 20  20 20 20 20 20 20 20 20  |ateable         |
0000caf0  20 20 20 20 20 20 30 78  30 30 30 32 38 32 0a 23  |      0x000282.#|
0000cb00  64 65 66 69 6e 65 20 43  61 63 68 65 5f 44 69 73  |define Cache_Dis|
0000cb10  72 75 70 74 69 76 65 20  20 20 20 20 20 20 20 20  |ruptive         |
0000cb20  20 20 20 20 20 20 30 78  30 30 30 32 38 33 0a 23  |      0x000283.#|
0000cb30  64 65 66 69 6e 65 20 43  61 63 68 65 5f 46 6c 75  |define Cache_Flu|
0000cb40  73 68 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |sh              |
0000cb50  20 20 20 20 20 20 30 78  30 30 30 32 38 34 0a 23  |      0x000284.#|
0000cb60  64 65 66 69 6e 65 20 46  6f 6e 74 5f 43 61 63 68  |define Font_Cach|
0000cb70  65 41 64 64 72 20 20 20  20 20 20 20 20 20 20 20  |eAddr           |
0000cb80  20 20 20 20 20 20 30 78  30 34 30 30 38 30 0a 23  |      0x040080.#|
0000cb90  64 65 66 69 6e 65 20 46  6f 6e 74 5f 46 69 6e 64  |define Font_Find|
0000cba0  46 6f 6e 74 20 20 20 20  20 20 20 20 20 20 20 20  |Font            |
0000cbb0  20 20 20 20 20 20 30 78  30 34 30 30 38 31 0a 23  |      0x040081.#|
0000cbc0  64 65 66 69 6e 65 20 46  6f 6e 74 5f 4c 6f 73 65  |define Font_Lose|
0000cbd0  46 6f 6e 74 20 20 20 20  20 20 20 20 20 20 20 20  |Font            |
0000cbe0  20 20 20 20 20 20 30 78  30 34 30 30 38 32 0a 23  |      0x040082.#|
0000cbf0  64 65 66 69 6e 65 20 46  6f 6e 74 5f 52 65 61 64  |define Font_Read|
0000cc00  44 65 66 6e 20 20 20 20  20 20 20 20 20 20 20 20  |Defn            |
0000cc10  20 20 20 20 20 20 30 78  30 34 30 30 38 33 0a 23  |      0x040083.#|
0000cc20  64 65 66 69 6e 65 20 46  6f 6e 74 5f 52 65 61 64  |define Font_Read|
0000cc30  49 6e 66 6f 20 20 20 20  20 20 20 20 20 20 20 20  |Info            |
0000cc40  20 20 20 20 20 20 30 78  30 34 30 30 38 34 0a 23  |      0x040084.#|
0000cc50  64 65 66 69 6e 65 20 46  6f 6e 74 5f 53 74 72 69  |define Font_Stri|
0000cc60  6e 67 57 69 64 74 68 20  20 20 20 20 20 20 20 20  |ngWidth         |
0000cc70  20 20 20 20 20 20 30 78  30 34 30 30 38 35 0a 23  |      0x040085.#|
0000cc80  64 65 66 69 6e 65 20 46  6f 6e 74 5f 50 61 69 6e  |define Font_Pain|
0000cc90  74 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |t               |
0000cca0  20 20 20 20 20 20 30 78  30 34 30 30 38 36 0a 23  |      0x040086.#|
0000ccb0  64 65 66 69 6e 65 20 46  6f 6e 74 5f 43 61 72 65  |define Font_Care|
0000ccc0  74 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |t               |
0000ccd0  20 20 20 20 20 20 30 78  30 34 30 30 38 37 0a 23  |      0x040087.#|
0000cce0  64 65 66 69 6e 65 20 46  6f 6e 74 5f 43 6f 6e 76  |define Font_Conv|
0000ccf0  65 72 74 74 6f 4f 53 20  20 20 20 20 20 20 20 20  |erttoOS         |
0000cd00  20 20 20 20 20 20 30 78  30 34 30 30 38 38 0a 23  |      0x040088.#|
0000cd10  64 65 66 69 6e 65 20 46  6f 6e 74 5f 43 6f 6e 76  |define Font_Conv|
0000cd20  65 72 74 74 6f 70 6f 69  6e 74 73 20 20 20 20 20  |erttopoints     |
0000cd30  20 20 20 20 20 20 30 78  30 34 30 30 38 39 0a 23  |      0x040089.#|
0000cd40  64 65 66 69 6e 65 20 46  6f 6e 74 5f 53 65 74 46  |define Font_SetF|
0000cd50  6f 6e 74 20 20 20 20 20  20 20 20 20 20 20 20 20  |ont             |
0000cd60  20 20 20 20 20 20 30 78  30 34 30 30 38 61 0a 23  |      0x04008a.#|
0000cd70  64 65 66 69 6e 65 20 46  6f 6e 74 5f 43 75 72 72  |define Font_Curr|
0000cd80  65 6e 74 46 6f 6e 74 20  20 20 20 20 20 20 20 20  |entFont         |
0000cd90  20 20 20 20 20 20 30 78  30 34 30 30 38 62 0a 23  |      0x04008b.#|
0000cda0  64 65 66 69 6e 65 20 46  6f 6e 74 5f 46 75 74 75  |define Font_Futu|
0000cdb0  72 65 46 6f 6e 74 20 20  20 20 20 20 20 20 20 20  |reFont          |
0000cdc0  20 20 20 20 20 20 30 78  30 34 30 30 38 63 0a 23  |      0x04008c.#|
0000cdd0  64 65 66 69 6e 65 20 46  6f 6e 74 5f 46 69 6e 64  |define Font_Find|
0000cde0  43 61 72 65 74 20 20 20  20 20 20 20 20 20 20 20  |Caret           |
0000cdf0  20 20 20 20 20 20 30 78  30 34 30 30 38 64 0a 23  |      0x04008d.#|
0000ce00  64 65 66 69 6e 65 20 46  6f 6e 74 5f 43 68 61 72  |define Font_Char|
0000ce10  42 42 6f 78 20 20 20 20  20 20 20 20 20 20 20 20  |BBox            |
0000ce20  20 20 20 20 20 20 30 78  30 34 30 30 38 65 0a 23  |      0x04008e.#|
0000ce30  64 65 66 69 6e 65 20 46  6f 6e 74 5f 52 65 61 64  |define Font_Read|
0000ce40  53 63 61 6c 65 46 61 63  74 6f 72 20 20 20 20 20  |ScaleFactor     |
0000ce50  20 20 20 20 20 20 30 78  30 34 30 30 38 66 0a 23  |      0x04008f.#|
0000ce60  64 65 66 69 6e 65 20 46  6f 6e 74 5f 53 65 74 53  |define Font_SetS|
0000ce70  63 61 6c 65 46 61 63 74  6f 72 20 20 20 20 20 20  |caleFactor      |
0000ce80  20 20 20 20 20 20 30 78  30 34 30 30 39 30 0a 23  |      0x040090.#|
0000ce90  64 65 66 69 6e 65 20 46  6f 6e 74 5f 4c 69 73 74  |define Font_List|
0000cea0  46 6f 6e 74 73 20 20 20  20 20 20 20 20 20 20 20  |Fonts           |
0000ceb0  20 20 20 20 20 20 30 78  30 34 30 30 39 31 0a 23  |      0x040091.#|
0000cec0  64 65 66 69 6e 65 20 46  6f 6e 74 5f 53 65 74 46  |define Font_SetF|
0000ced0  6f 6e 74 43 6f 6c 6f 75  72 73 20 20 20 20 20 20  |ontColours      |
0000cee0  20 20 20 20 20 20 30 78  30 34 30 30 39 32 0a 23  |      0x040092.#|
0000cef0  64 65 66 69 6e 65 20 46  6f 6e 74 5f 53 65 74 50  |define Font_SetP|
0000cf00  61 6c 65 74 74 65 20 20  20 20 20 20 20 20 20 20  |alette          |
0000cf10  20 20 20 20 20 20 30 78  30 34 30 30 39 33 0a 23  |      0x040093.#|
0000cf20  64 65 66 69 6e 65 20 46  6f 6e 74 5f 52 65 61 64  |define Font_Read|
0000cf30  54 68 72 65 73 68 6f 6c  64 73 20 20 20 20 20 20  |Thresholds      |
0000cf40  20 20 20 20 20 20 30 78  30 34 30 30 39 34 0a 23  |      0x040094.#|
0000cf50  64 65 66 69 6e 65 20 46  6f 6e 74 5f 53 65 74 54  |define Font_SetT|
0000cf60  68 72 65 73 68 6f 6c 64  73 20 20 20 20 20 20 20  |hresholds       |
0000cf70  20 20 20 20 20 20 30 78  30 34 30 30 39 35 0a 23  |      0x040095.#|
0000cf80  64 65 66 69 6e 65 20 46  6f 6e 74 5f 46 69 6e 64  |define Font_Find|
0000cf90  43 61 72 65 74 4a 20 20  20 20 20 20 20 20 20 20  |CaretJ          |
0000cfa0  20 20 20 20 20 20 30 78  30 34 30 30 39 36 0a 23  |      0x040096.#|
0000cfb0  64 65 66 69 6e 65 20 46  6f 6e 74 5f 53 74 72 69  |define Font_Stri|
0000cfc0  6e 67 42 42 6f 78 20 20  20 20 20 20 20 20 20 20  |ngBBox          |
0000cfd0  20 20 20 20 20 20 30 78  30 34 30 30 39 37 0a 23  |      0x040097.#|
0000cfe0  64 65 66 69 6e 65 20 46  6f 6e 74 5f 52 65 61 64  |define Font_Read|
0000cff0  43 6f 6c 6f 75 72 54 61  62 6c 65 20 20 20 20 20  |ColourTable     |
0000d000  20 20 20 20 20 20 30 78  30 34 30 30 39 38 0a 23  |      0x040098.#|
0000d010  64 65 66 69 6e 65 20 46  6f 6e 74 5f 4d 61 6b 65  |define Font_Make|
0000d020  42 69 74 6d 61 70 20 20  20 20 20 20 20 20 20 20  |Bitmap          |
0000d030  20 20 20 20 20 20 30 78  30 34 30 30 39 39 0a 23  |      0x040099.#|
0000d040  64 65 66 69 6e 65 20 46  6f 6e 74 5f 55 6e 43 61  |define Font_UnCa|
0000d050  63 68 65 46 69 6c 65 20  20 20 20 20 20 20 20 20  |cheFile         |
0000d060  20 20 20 20 20 20 30 78  30 34 30 30 39 61 0a 23  |      0x04009a.#|
0000d070  64 65 66 69 6e 65 20 46  6f 6e 74 5f 53 65 74 46  |define Font_SetF|
0000d080  6f 6e 74 4d 61 78 20 20  20 20 20 20 20 20 20 20  |ontMax          |
0000d090  20 20 20 20 20 20 30 78  30 34 30 30 39 62 0a 23  |      0x04009b.#|
0000d0a0  64 65 66 69 6e 65 20 46  6f 6e 74 5f 52 65 61 64  |define Font_Read|
0000d0b0  46 6f 6e 74 4d 61 78 20  20 20 20 20 20 20 20 20  |FontMax         |
0000d0c0  20 20 20 20 20 20 30 78  30 34 30 30 39 63 0a 23  |      0x04009c.#|
0000d0d0  64 65 66 69 6e 65 20 46  6f 6e 74 5f 52 65 61 64  |define Font_Read|
0000d0e0  46 6f 6e 74 50 72 65 66  69 78 20 20 20 20 20 20  |FontPrefix      |
0000d0f0  20 20 20 20 20 20 30 78  30 34 30 30 39 64 0a 23  |      0x04009d.#|
0000d100  64 65 66 69 6e 65 20 46  6f 6e 74 5f 53 77 69 74  |define Font_Swit|
0000d110  63 68 4f 75 74 70 75 74  54 6f 42 75 66 66 65 72  |chOutputToBuffer|
0000d120  20 20 20 20 20 20 30 78  30 34 30 30 39 65 0a 23  |      0x04009e.#|
0000d130  64 65 66 69 6e 65 20 46  6f 6e 74 5f 52 65 61 64  |define Font_Read|
0000d140  46 6f 6e 74 4d 65 74 72  69 63 73 20 20 20 20 20  |FontMetrics     |
0000d150  20 20 20 20 20 20 30 78  30 34 30 30 39 66 0a 23  |      0x04009f.#|
0000d160  64 65 66 69 6e 65 20 46  6f 6e 74 5f 44 65 63 6f  |define Font_Deco|
0000d170  64 65 4d 65 6e 75 20 20  20 20 20 20 20 20 20 20  |deMenu          |
0000d180  20 20 20 20 20 20 30 78  30 34 30 30 61 30 0a 23  |      0x0400a0.#|
0000d190  64 65 66 69 6e 65 20 46  6f 6e 74 5f 53 63 61 6e  |define Font_Scan|
0000d1a0  53 74 72 69 6e 67 20 20  20 20 20 20 20 20 20 20  |String          |
0000d1b0  20 20 20 20 20 20 30 78  30 34 30 30 61 31 0a 23  |      0x0400a1.#|
0000d1c0  64 65 66 69 6e 65 20 46  6f 6e 74 5f 53 65 74 43  |define Font_SetC|
0000d1d0  6f 6c 6f 75 72 54 61 62  6c 65 20 20 20 20 20 20  |olourTable      |
0000d1e0  20 20 20 20 20 20 30 78  30 34 30 30 61 32 0a 23  |      0x0400a2.#|
0000d1f0  64 65 66 69 6e 65 20 46  6f 6e 74 5f 43 75 72 72  |define Font_Curr|
0000d200  65 6e 74 52 47 42 20 20  20 20 20 20 20 20 20 20  |entRGB          |
0000d210  20 20 20 20 20 20 30 78  30 34 30 30 61 33 0a 23  |      0x0400a3.#|
0000d220  64 65 66 69 6e 65 20 46  6f 6e 74 5f 46 75 74 75  |define Font_Futu|
0000d230  72 65 52 47 42 20 20 20  20 20 20 20 20 20 20 20  |reRGB           |
0000d240  20 20 20 20 20 20 30 78  30 34 30 30 61 34 0a 23  |      0x0400a4.#|
0000d250  64 65 66 69 6e 65 20 46  6f 6e 74 5f 52 65 61 64  |define Font_Read|
0000d260  45 6e 63 6f 64 69 6e 67  46 69 6c 65 6e 61 6d 65  |EncodingFilename|
0000d270  20 20 20 20 20 20 30 78  30 34 30 30 61 35 0a 23  |      0x0400a5.#|
0000d280  64 65 66 69 6e 65 20 46  6f 6e 74 5f 46 69 6e 64  |define Font_Find|
0000d290  46 69 65 6c 64 20 20 20  20 20 20 20 20 20 20 20  |Field           |
0000d2a0  20 20 20 20 20 20 30 78  30 34 30 30 61 36 0a 23  |      0x0400a6.#|
0000d2b0  64 65 66 69 6e 65 20 46  6f 6e 74 5f 41 70 70 6c  |define Font_Appl|
0000d2c0  79 46 69 65 6c 64 73 20  20 20 20 20 20 20 20 20  |yFields         |
0000d2d0  20 20 20 20 20 20 30 78  30 34 30 30 61 37 0a 23  |      0x0400a7.#|
0000d2e0  64 65 66 69 6e 65 20 46  6f 6e 74 5f 4c 6f 6f 6b  |define Font_Look|
0000d2f0  75 70 46 6f 6e 74 20 20  20 20 20 20 20 20 20 20  |upFont          |
0000d300  20 20 20 20 20 20 30 78  30 34 30 30 61 38 0a 23  |      0x0400a8.#|
0000d310  64 65 66 69 6e 65 20 57  69 6d 70 5f 49 6e 69 74  |define Wimp_Init|
0000d320  69 61 6c 69 73 65 20 20  20 20 20 20 20 20 20 20  |ialise          |
0000d330  20 20 20 20 20 20 30 78  30 34 30 30 63 30 0a 23  |      0x0400c0.#|
0000d340  64 65 66 69 6e 65 20 57  69 6d 70 5f 43 72 65 61  |define Wimp_Crea|
0000d350  74 65 57 69 6e 64 6f 77  20 20 20 20 20 20 20 20  |teWindow        |
0000d360  20 20 20 20 20 20 30 78  30 34 30 30 63 31 0a 23  |      0x0400c1.#|
0000d370  64 65 66 69 6e 65 20 57  69 6d 70 5f 43 72 65 61  |define Wimp_Crea|
0000d380  74 65 49 63 6f 6e 20 20  20 20 20 20 20 20 20 20  |teIcon          |
0000d390  20 20 20 20 20 20 30 78  30 34 30 30 63 32 0a 23  |      0x0400c2.#|
0000d3a0  64 65 66 69 6e 65 20 57  69 6d 70 5f 44 65 6c 65  |define Wimp_Dele|
0000d3b0  74 65 57 69 6e 64 6f 77  20 20 20 20 20 20 20 20  |teWindow        |
0000d3c0  20 20 20 20 20 20 30 78  30 34 30 30 63 33 0a 23  |      0x0400c3.#|
0000d3d0  64 65 66 69 6e 65 20 57  69 6d 70 5f 44 65 6c 65  |define Wimp_Dele|
0000d3e0  74 65 49 63 6f 6e 20 20  20 20 20 20 20 20 20 20  |teIcon          |
0000d3f0  20 20 20 20 20 20 30 78  30 34 30 30 63 34 0a 23  |      0x0400c4.#|
0000d400  64 65 66 69 6e 65 20 57  69 6d 70 5f 4f 70 65 6e  |define Wimp_Open|
0000d410  57 69 6e 64 6f 77 20 20  20 20 20 20 20 20 20 20  |Window          |
0000d420  20 20 20 20 20 20 30 78  30 34 30 30 63 35 0a 23  |      0x0400c5.#|
0000d430  64 65 66 69 6e 65 20 57  69 6d 70 5f 43 6c 6f 73  |define Wimp_Clos|
0000d440  65 57 69 6e 64 6f 77 20  20 20 20 20 20 20 20 20  |eWindow         |
0000d450  20 20 20 20 20 20 30 78  30 34 30 30 63 36 0a 23  |      0x0400c6.#|
0000d460  64 65 66 69 6e 65 20 57  69 6d 70 5f 50 6f 6c 6c  |define Wimp_Poll|
0000d470  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000d480  20 20 20 20 20 20 30 78  30 34 30 30 63 37 0a 23  |      0x0400c7.#|
0000d490  64 65 66 69 6e 65 20 57  69 6d 70 5f 52 65 64 72  |define Wimp_Redr|
0000d4a0  61 77 57 69 6e 64 6f 77  20 20 20 20 20 20 20 20  |awWindow        |
0000d4b0  20 20 20 20 20 20 30 78  30 34 30 30 63 38 0a 23  |      0x0400c8.#|
0000d4c0  64 65 66 69 6e 65 20 57  69 6d 70 5f 55 70 64 61  |define Wimp_Upda|
0000d4d0  74 65 57 69 6e 64 6f 77  20 20 20 20 20 20 20 20  |teWindow        |
0000d4e0  20 20 20 20 20 20 30 78  30 34 30 30 63 39 0a 23  |      0x0400c9.#|
0000d4f0  64 65 66 69 6e 65 20 57  69 6d 70 5f 47 65 74 52  |define Wimp_GetR|
0000d500  65 63 74 61 6e 67 6c 65  20 20 20 20 20 20 20 20  |ectangle        |
0000d510  20 20 20 20 20 20 30 78  30 34 30 30 63 61 0a 23  |      0x0400ca.#|
0000d520  64 65 66 69 6e 65 20 57  69 6d 70 5f 47 65 74 57  |define Wimp_GetW|
0000d530  69 6e 64 6f 77 53 74 61  74 65 20 20 20 20 20 20  |indowState      |
0000d540  20 20 20 20 20 20 30 78  30 34 30 30 63 62 0a 23  |      0x0400cb.#|
0000d550  64 65 66 69 6e 65 20 57  69 6d 70 5f 47 65 74 57  |define Wimp_GetW|
0000d560  69 6e 64 6f 77 49 6e 66  6f 20 20 20 20 20 20 20  |indowInfo       |
0000d570  20 20 20 20 20 20 30 78  30 34 30 30 63 63 0a 23  |      0x0400cc.#|
0000d580  64 65 66 69 6e 65 20 57  69 6d 70 5f 53 65 74 49  |define Wimp_SetI|
0000d590  63 6f 6e 53 74 61 74 65  20 20 20 20 20 20 20 20  |conState        |
0000d5a0  20 20 20 20 20 20 30 78  30 34 30 30 63 64 0a 23  |      0x0400cd.#|
0000d5b0  64 65 66 69 6e 65 20 57  69 6d 70 5f 47 65 74 49  |define Wimp_GetI|
0000d5c0  63 6f 6e 53 74 61 74 65  20 20 20 20 20 20 20 20  |conState        |
0000d5d0  20 20 20 20 20 20 30 78  30 34 30 30 63 65 0a 23  |      0x0400ce.#|
0000d5e0  64 65 66 69 6e 65 20 57  69 6d 70 5f 47 65 74 50  |define Wimp_GetP|
0000d5f0  6f 69 6e 74 65 72 49 6e  66 6f 20 20 20 20 20 20  |ointerInfo      |
0000d600  20 20 20 20 20 20 30 78  30 34 30 30 63 66 0a 23  |      0x0400cf.#|
0000d610  64 65 66 69 6e 65 20 57  69 6d 70 5f 44 72 61 67  |define Wimp_Drag|
0000d620  42 6f 78 20 20 20 20 20  20 20 20 20 20 20 20 20  |Box             |
0000d630  20 20 20 20 20 20 30 78  30 34 30 30 64 30 0a 23  |      0x0400d0.#|
0000d640  64 65 66 69 6e 65 20 57  69 6d 70 5f 46 6f 72 63  |define Wimp_Forc|
0000d650  65 52 65 64 72 61 77 20  20 20 20 20 20 20 20 20  |eRedraw         |
0000d660  20 20 20 20 20 20 30 78  30 34 30 30 64 31 0a 23  |      0x0400d1.#|
0000d670  64 65 66 69 6e 65 20 57  69 6d 70 5f 53 65 74 43  |define Wimp_SetC|
0000d680  61 72 65 74 50 6f 73 69  74 69 6f 6e 20 20 20 20  |aretPosition    |
0000d690  20 20 20 20 20 20 30 78  30 34 30 30 64 32 0a 23  |      0x0400d2.#|
0000d6a0  64 65 66 69 6e 65 20 57  69 6d 70 5f 47 65 74 43  |define Wimp_GetC|
0000d6b0  61 72 65 74 50 6f 73 69  74 69 6f 6e 20 20 20 20  |aretPosition    |
0000d6c0  20 20 20 20 20 20 30 78  30 34 30 30 64 33 0a 23  |      0x0400d3.#|
0000d6d0  64 65 66 69 6e 65 20 57  69 6d 70 5f 43 72 65 61  |define Wimp_Crea|
0000d6e0  74 65 4d 65 6e 75 20 20  20 20 20 20 20 20 20 20  |teMenu          |
0000d6f0  20 20 20 20 20 20 30 78  30 34 30 30 64 34 0a 23  |      0x0400d4.#|
0000d700  64 65 66 69 6e 65 20 57  69 6d 70 5f 44 65 63 6f  |define Wimp_Deco|
0000d710  64 65 4d 65 6e 75 20 20  20 20 20 20 20 20 20 20  |deMenu          |
0000d720  20 20 20 20 20 20 30 78  30 34 30 30 64 35 0a 23  |      0x0400d5.#|
0000d730  64 65 66 69 6e 65 20 57  69 6d 70 5f 57 68 69 63  |define Wimp_Whic|
0000d740  68 49 63 6f 6e 20 20 20  20 20 20 20 20 20 20 20  |hIcon           |
0000d750  20 20 20 20 20 20 30 78  30 34 30 30 64 36 0a 23  |      0x0400d6.#|
0000d760  64 65 66 69 6e 65 20 57  69 6d 70 5f 53 65 74 45  |define Wimp_SetE|
0000d770  78 74 65 6e 74 20 20 20  20 20 20 20 20 20 20 20  |xtent           |
0000d780  20 20 20 20 20 20 30 78  30 34 30 30 64 37 0a 23  |      0x0400d7.#|
0000d790  64 65 66 69 6e 65 20 57  69 6d 70 5f 53 65 74 50  |define Wimp_SetP|
0000d7a0  6f 69 6e 74 65 72 53 68  61 70 65 20 20 20 20 20  |ointerShape     |
0000d7b0  20 20 20 20 20 20 30 78  30 34 30 30 64 38 0a 23  |      0x0400d8.#|
0000d7c0  64 65 66 69 6e 65 20 57  69 6d 70 5f 4f 70 65 6e  |define Wimp_Open|
0000d7d0  54 65 6d 70 6c 61 74 65  20 20 20 20 20 20 20 20  |Template        |
0000d7e0  20 20 20 20 20 20 30 78  30 34 30 30 64 39 0a 23  |      0x0400d9.#|
0000d7f0  64 65 66 69 6e 65 20 57  69 6d 70 5f 43 6c 6f 73  |define Wimp_Clos|
0000d800  65 54 65 6d 70 6c 61 74  65 20 20 20 20 20 20 20  |eTemplate       |
0000d810  20 20 20 20 20 20 30 78  30 34 30 30 64 61 0a 23  |      0x0400da.#|
0000d820  64 65 66 69 6e 65 20 57  69 6d 70 5f 4c 6f 61 64  |define Wimp_Load|
0000d830  54 65 6d 70 6c 61 74 65  20 20 20 20 20 20 20 20  |Template        |
0000d840  20 20 20 20 20 20 30 78  30 34 30 30 64 62 0a 23  |      0x0400db.#|
0000d850  64 65 66 69 6e 65 20 57  69 6d 70 5f 50 72 6f 63  |define Wimp_Proc|
0000d860  65 73 73 4b 65 79 20 20  20 20 20 20 20 20 20 20  |essKey          |
0000d870  20 20 20 20 20 20 30 78  30 34 30 30 64 63 0a 23  |      0x0400dc.#|
0000d880  64 65 66 69 6e 65 20 57  69 6d 70 5f 43 6c 6f 73  |define Wimp_Clos|
0000d890  65 44 6f 77 6e 20 20 20  20 20 20 20 20 20 20 20  |eDown           |
0000d8a0  20 20 20 20 20 20 30 78  30 34 30 30 64 64 0a 23  |      0x0400dd.#|
0000d8b0  64 65 66 69 6e 65 20 57  69 6d 70 5f 53 74 61 72  |define Wimp_Star|
0000d8c0  74 54 61 73 6b 20 20 20  20 20 20 20 20 20 20 20  |tTask           |
0000d8d0  20 20 20 20 20 20 30 78  30 34 30 30 64 65 0a 23  |      0x0400de.#|
0000d8e0  64 65 66 69 6e 65 20 57  69 6d 70 5f 52 65 70 6f  |define Wimp_Repo|
0000d8f0  72 74 45 72 72 6f 72 20  20 20 20 20 20 20 20 20  |rtError         |
0000d900  20 20 20 20 20 20 30 78  30 34 30 30 64 66 0a 23  |      0x0400df.#|
0000d910  64 65 66 69 6e 65 20 57  69 6d 70 5f 47 65 74 57  |define Wimp_GetW|
0000d920  69 6e 64 6f 77 4f 75 74  6c 69 6e 65 20 20 20 20  |indowOutline    |
0000d930  20 20 20 20 20 20 30 78  30 34 30 30 65 30 0a 23  |      0x0400e0.#|
0000d940  64 65 66 69 6e 65 20 57  69 6d 70 5f 50 6f 6c 6c  |define Wimp_Poll|
0000d950  49 64 6c 65 20 20 20 20  20 20 20 20 20 20 20 20  |Idle            |
0000d960  20 20 20 20 20 20 30 78  30 34 30 30 65 31 0a 23  |      0x0400e1.#|
0000d970  64 65 66 69 6e 65 20 57  69 6d 70 5f 50 6c 6f 74  |define Wimp_Plot|
0000d980  49 63 6f 6e 20 20 20 20  20 20 20 20 20 20 20 20  |Icon            |
0000d990  20 20 20 20 20 20 30 78  30 34 30 30 65 32 0a 23  |      0x0400e2.#|
0000d9a0  64 65 66 69 6e 65 20 57  69 6d 70 5f 53 65 74 4d  |define Wimp_SetM|
0000d9b0  6f 64 65 20 20 20 20 20  20 20 20 20 20 20 20 20  |ode             |
0000d9c0  20 20 20 20 20 20 30 78  30 34 30 30 65 33 0a 23  |      0x0400e3.#|
0000d9d0  64 65 66 69 6e 65 20 57  69 6d 70 5f 53 65 74 50  |define Wimp_SetP|
0000d9e0  61 6c 65 74 74 65 20 20  20 20 20 20 20 20 20 20  |alette          |
0000d9f0  20 20 20 20 20 20 30 78  30 34 30 30 65 34 0a 23  |      0x0400e4.#|
0000da00  64 65 66 69 6e 65 20 57  69 6d 70 5f 52 65 61 64  |define Wimp_Read|
0000da10  50 61 6c 65 74 74 65 20  20 20 20 20 20 20 20 20  |Palette         |
0000da20  20 20 20 20 20 20 30 78  30 34 30 30 65 35 0a 23  |      0x0400e5.#|
0000da30  64 65 66 69 6e 65 20 57  69 6d 70 5f 53 65 74 43  |define Wimp_SetC|
0000da40  6f 6c 6f 75 72 20 20 20  20 20 20 20 20 20 20 20  |olour           |
0000da50  20 20 20 20 20 20 30 78  30 34 30 30 65 36 0a 23  |      0x0400e6.#|
0000da60  64 65 66 69 6e 65 20 57  69 6d 70 5f 53 65 6e 64  |define Wimp_Send|
0000da70  4d 65 73 73 61 67 65 20  20 20 20 20 20 20 20 20  |Message         |
0000da80  20 20 20 20 20 20 30 78  30 34 30 30 65 37 0a 23  |      0x0400e7.#|
0000da90  64 65 66 69 6e 65 20 57  69 6d 70 5f 43 72 65 61  |define Wimp_Crea|
0000daa0  74 65 53 75 62 4d 65 6e  75 20 20 20 20 20 20 20  |teSubMenu       |
0000dab0  20 20 20 20 20 20 30 78  30 34 30 30 65 38 0a 23  |      0x0400e8.#|
0000dac0  64 65 66 69 6e 65 20 57  69 6d 70 5f 53 70 72 69  |define Wimp_Spri|
0000dad0  74 65 4f 70 20 20 20 20  20 20 20 20 20 20 20 20  |teOp            |
0000dae0  20 20 20 20 20 20 30 78  30 34 30 30 65 39 0a 23  |      0x0400e9.#|
0000daf0  64 65 66 69 6e 65 20 57  69 6d 70 5f 42 61 73 65  |define Wimp_Base|
0000db00  4f 66 53 70 72 69 74 65  73 20 20 20 20 20 20 20  |OfSprites       |
0000db10  20 20 20 20 20 20 30 78  30 34 30 30 65 61 0a 23  |      0x0400ea.#|
0000db20  64 65 66 69 6e 65 20 57  69 6d 70 5f 42 6c 6f 63  |define Wimp_Bloc|
0000db30  6b 43 6f 70 79 20 20 20  20 20 20 20 20 20 20 20  |kCopy           |
0000db40  20 20 20 20 20 20 30 78  30 34 30 30 65 62 0a 23  |      0x0400eb.#|
0000db50  64 65 66 69 6e 65 20 57  69 6d 70 5f 53 6c 6f 74  |define Wimp_Slot|
0000db60  53 69 7a 65 20 20 20 20  20 20 20 20 20 20 20 20  |Size            |
0000db70  20 20 20 20 20 20 30 78  30 34 30 30 65 63 0a 23  |      0x0400ec.#|
0000db80  64 65 66 69 6e 65 20 57  69 6d 70 5f 52 65 61 64  |define Wimp_Read|
0000db90  50 69 78 54 72 61 6e 73  20 20 20 20 20 20 20 20  |PixTrans        |
0000dba0  20 20 20 20 20 20 30 78  30 34 30 30 65 64 0a 23  |      0x0400ed.#|
0000dbb0  64 65 66 69 6e 65 20 57  69 6d 70 5f 43 6c 61 69  |define Wimp_Clai|
0000dbc0  6d 46 72 65 65 4d 65 6d  6f 72 79 20 20 20 20 20  |mFreeMemory     |
0000dbd0  20 20 20 20 20 20 30 78  30 34 30 30 65 65 0a 23  |      0x0400ee.#|
0000dbe0  64 65 66 69 6e 65 20 57  69 6d 70 5f 43 6f 6d 6d  |define Wimp_Comm|
0000dbf0  61 6e 64 57 69 6e 64 6f  77 20 20 20 20 20 20 20  |andWindow       |
0000dc00  20 20 20 20 20 20 30 78  30 34 30 30 65 66 0a 23  |      0x0400ef.#|
0000dc10  64 65 66 69 6e 65 20 57  69 6d 70 5f 54 65 78 74  |define Wimp_Text|
0000dc20  43 6f 6c 6f 75 72 20 20  20 20 20 20 20 20 20 20  |Colour          |
0000dc30  20 20 20 20 20 20 30 78  30 34 30 30 66 30 0a 23  |      0x0400f0.#|
0000dc40  64 65 66 69 6e 65 20 57  69 6d 70 5f 54 72 61 6e  |define Wimp_Tran|
0000dc50  73 66 65 72 42 6c 6f 63  6b 20 20 20 20 20 20 20  |sferBlock       |
0000dc60  20 20 20 20 20 20 30 78  30 34 30 30 66 31 0a 23  |      0x0400f1.#|
0000dc70  64 65 66 69 6e 65 20 57  69 6d 70 5f 52 65 61 64  |define Wimp_Read|
0000dc80  53 79 73 49 6e 66 6f 20  20 20 20 20 20 20 20 20  |SysInfo         |
0000dc90  20 20 20 20 20 20 30 78  30 34 30 30 66 32 0a 23  |      0x0400f2.#|
0000dca0  64 65 66 69 6e 65 20 57  69 6d 70 5f 53 65 74 46  |define Wimp_SetF|
0000dcb0  6f 6e 74 43 6f 6c 6f 75  72 73 20 20 20 20 20 20  |ontColours      |
0000dcc0  20 20 20 20 20 20 30 78  30 34 30 30 66 33 0a 23  |      0x0400f3.#|
0000dcd0  64 65 66 69 6e 65 20 57  69 6d 70 5f 47 65 74 4d  |define Wimp_GetM|
0000dce0  65 6e 75 53 74 61 74 65  20 20 20 20 20 20 20 20  |enuState        |
0000dcf0  20 20 20 20 20 20 30 78  30 34 30 30 66 34 0a 23  |      0x0400f4.#|
0000dd00  64 65 66 69 6e 65 20 57  69 6d 70 5f 52 65 67 69  |define Wimp_Regi|
0000dd10  73 74 65 72 46 69 6c 74  65 72 20 20 20 20 20 20  |sterFilter      |
0000dd20  20 20 20 20 20 20 30 78  30 34 30 30 66 35 0a 23  |      0x0400f5.#|
0000dd30  64 65 66 69 6e 65 20 57  69 6d 70 5f 41 64 64 4d  |define Wimp_AddM|
0000dd40  65 73 73 61 67 65 73 20  20 20 20 20 20 20 20 20  |essages         |
0000dd50  20 20 20 20 20 20 30 78  30 34 30 30 66 36 0a 23  |      0x0400f6.#|
0000dd60  64 65 66 69 6e 65 20 57  69 6d 70 5f 52 65 6d 6f  |define Wimp_Remo|
0000dd70  76 65 4d 65 73 73 61 67  65 73 20 20 20 20 20 20  |veMessages      |
0000dd80  20 20 20 20 20 20 30 78  30 34 30 30 66 37 0a 23  |      0x0400f7.#|
0000dd90  64 65 66 69 6e 65 20 57  69 6d 70 5f 53 65 74 43  |define Wimp_SetC|
0000dda0  6f 6c 6f 75 72 4d 61 70  70 69 6e 67 20 20 20 20  |olourMapping    |
0000ddb0  20 20 20 20 20 20 30 78  30 34 30 30 66 38 0a 23  |      0x0400f8.#|
0000ddc0  64 65 66 69 6e 65 20 57  69 6d 70 5f 47 65 74 49  |define Wimp_GetI|
0000ddd0  63 6f 6e 49 6e 66 6f 20  20 20 20 20 20 20 20 20  |conInfo         |
0000dde0  20 20 20 20 20 20 30 78  30 34 30 30 66 39 0a 23  |      0x0400f9.#|
0000ddf0  64 65 66 69 6e 65 20 53  6f 75 6e 64 5f 43 6f 6e  |define Sound_Con|
0000de00  66 69 67 75 72 65 20 20  20 20 20 20 20 20 20 20  |figure          |
0000de10  20 20 20 20 20 20 30 78  30 34 30 31 34 30 0a 23  |      0x040140.#|
0000de20  64 65 66 69 6e 65 20 53  6f 75 6e 64 5f 45 6e 61  |define Sound_Ena|
0000de30  62 6c 65 20 20 20 20 20  20 20 20 20 20 20 20 20  |ble             |
0000de40  20 20 20 20 20 20 30 78  30 34 30 31 34 31 0a 23  |      0x040141.#|
0000de50  64 65 66 69 6e 65 20 53  6f 75 6e 64 5f 53 74 65  |define Sound_Ste|
0000de60  72 65 6f 20 20 20 20 20  20 20 20 20 20 20 20 20  |reo             |
0000de70  20 20 20 20 20 20 30 78  30 34 30 31 34 32 0a 23  |      0x040142.#|
0000de80  64 65 66 69 6e 65 20 53  6f 75 6e 64 5f 53 70 65  |define Sound_Spe|
0000de90  61 6b 65 72 20 20 20 20  20 20 20 20 20 20 20 20  |aker            |
0000dea0  20 20 20 20 20 20 30 78  30 34 30 31 34 33 0a 23  |      0x040143.#|
0000deb0  64 65 66 69 6e 65 20 53  6f 75 6e 64 5f 56 6f 6c  |define Sound_Vol|
0000dec0  75 6d 65 20 20 20 20 20  20 20 20 20 20 20 20 20  |ume             |
0000ded0  20 20 20 20 20 20 30 78  30 34 30 31 38 30 0a 23  |      0x040180.#|
0000dee0  64 65 66 69 6e 65 20 53  6f 75 6e 64 5f 53 6f 75  |define Sound_Sou|
0000def0  6e 64 4c 6f 67 20 20 20  20 20 20 20 20 20 20 20  |ndLog           |
0000df00  20 20 20 20 20 20 30 78  30 34 30 31 38 31 0a 23  |      0x040181.#|
0000df10  64 65 66 69 6e 65 20 53  6f 75 6e 64 5f 4c 6f 67  |define Sound_Log|
0000df20  53 63 61 6c 65 20 20 20  20 20 20 20 20 20 20 20  |Scale           |
0000df30  20 20 20 20 20 20 30 78  30 34 30 31 38 32 0a 23  |      0x040182.#|
0000df40  64 65 66 69 6e 65 20 53  6f 75 6e 64 5f 49 6e 73  |define Sound_Ins|
0000df50  74 61 6c 6c 56 6f 69 63  65 20 20 20 20 20 20 20  |tallVoice       |
0000df60  20 20 20 20 20 20 30 78  30 34 30 31 38 33 0a 23  |      0x040183.#|
0000df70  64 65 66 69 6e 65 20 53  6f 75 6e 64 5f 52 65 6d  |define Sound_Rem|
0000df80  6f 76 65 56 6f 69 63 65  20 20 20 20 20 20 20 20  |oveVoice        |
0000df90  20 20 20 20 20 20 30 78  30 34 30 31 38 34 0a 23  |      0x040184.#|
0000dfa0  64 65 66 69 6e 65 20 53  6f 75 6e 64 5f 41 74 74  |define Sound_Att|
0000dfb0  61 63 68 56 6f 69 63 65  20 20 20 20 20 20 20 20  |achVoice        |
0000dfc0  20 20 20 20 20 20 30 78  30 34 30 31 38 35 0a 23  |      0x040185.#|
0000dfd0  64 65 66 69 6e 65 20 53  6f 75 6e 64 5f 43 6f 6e  |define Sound_Con|
0000dfe0  74 72 6f 6c 50 61 63 6b  65 64 20 20 20 20 20 20  |trolPacked      |
0000dff0  20 20 20 20 20 20 30 78  30 34 30 31 38 36 0a 23  |      0x040186.#|
0000e000  64 65 66 69 6e 65 20 53  6f 75 6e 64 5f 54 75 6e  |define Sound_Tun|
0000e010  69 6e 67 20 20 20 20 20  20 20 20 20 20 20 20 20  |ing             |
0000e020  20 20 20 20 20 20 30 78  30 34 30 31 38 37 0a 23  |      0x040187.#|
0000e030  64 65 66 69 6e 65 20 53  6f 75 6e 64 5f 50 69 74  |define Sound_Pit|
0000e040  63 68 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |ch              |
0000e050  20 20 20 20 20 20 30 78  30 34 30 31 38 38 0a 23  |      0x040188.#|
0000e060  64 65 66 69 6e 65 20 53  6f 75 6e 64 5f 43 6f 6e  |define Sound_Con|
0000e070  74 72 6f 6c 20 20 20 20  20 20 20 20 20 20 20 20  |trol            |
0000e080  20 20 20 20 20 20 30 78  30 34 30 31 38 39 0a 23  |      0x040189.#|
0000e090  64 65 66 69 6e 65 20 53  6f 75 6e 64 5f 41 74 74  |define Sound_Att|
0000e0a0  61 63 68 4e 61 6d 65 64  56 6f 69 63 65 20 20 20  |achNamedVoice   |
0000e0b0  20 20 20 20 20 20 30 78  30 34 30 31 38 61 0a 23  |      0x04018a.#|
0000e0c0  64 65 66 69 6e 65 20 53  6f 75 6e 64 5f 52 65 61  |define Sound_Rea|
0000e0d0  64 43 6f 6e 74 72 6f 6c  42 6c 6f 63 6b 20 20 20  |dControlBlock   |
0000e0e0  20 20 20 20 20 20 30 78  30 34 30 31 38 62 0a 23  |      0x04018b.#|
0000e0f0  64 65 66 69 6e 65 20 53  6f 75 6e 64 5f 57 72 69  |define Sound_Wri|
0000e100  74 65 43 6f 6e 74 72 6f  6c 42 6c 6f 63 6b 20 20  |teControlBlock  |
0000e110  20 20 20 20 20 20 30 78  30 34 30 31 38 63 0a 23  |      0x04018c.#|
0000e120  64 65 66 69 6e 65 20 53  6f 75 6e 64 5f 51 49 6e  |define Sound_QIn|
0000e130  69 74 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |it              |
0000e140  20 20 20 20 20 20 30 78  30 34 30 31 63 30 0a 23  |      0x0401c0.#|
0000e150  64 65 66 69 6e 65 20 53  6f 75 6e 64 5f 51 53 63  |define Sound_QSc|
0000e160  68 65 64 75 6c 65 20 20  20 20 20 20 20 20 20 20  |hedule          |
0000e170  20 20 20 20 20 20 30 78  30 34 30 31 63 31 0a 23  |      0x0401c1.#|
0000e180  64 65 66 69 6e 65 20 53  6f 75 6e 64 5f 51 52 65  |define Sound_QRe|
0000e190  6d 6f 76 65 20 20 20 20  20 20 20 20 20 20 20 20  |move            |
0000e1a0  20 20 20 20 20 20 30 78  30 34 30 31 63 32 0a 23  |      0x0401c2.#|
0000e1b0  64 65 66 69 6e 65 20 53  6f 75 6e 64 5f 51 46 72  |define Sound_QFr|
0000e1c0  65 65 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |ee              |
0000e1d0  20 20 20 20 20 20 30 78  30 34 30 31 63 33 0a 23  |      0x0401c3.#|
0000e1e0  64 65 66 69 6e 65 20 53  6f 75 6e 64 5f 51 53 44  |define Sound_QSD|
0000e1f0  69 73 70 61 74 63 68 20  20 20 20 20 20 20 20 20  |ispatch         |
0000e200  20 20 20 20 20 20 30 78  30 34 30 31 63 34 0a 23  |      0x0401c4.#|
0000e210  64 65 66 69 6e 65 20 53  6f 75 6e 64 5f 51 54 65  |define Sound_QTe|
0000e220  6d 70 6f 20 20 20 20 20  20 20 20 20 20 20 20 20  |mpo             |
0000e230  20 20 20 20 20 20 30 78  30 34 30 31 63 35 0a 23  |      0x0401c5.#|
0000e240  64 65 66 69 6e 65 20 53  6f 75 6e 64 5f 51 42 65  |define Sound_QBe|
0000e250  61 74 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |at              |
0000e260  20 20 20 20 20 20 30 78  30 34 30 31 63 36 0a 23  |      0x0401c6.#|
0000e270  64 65 66 69 6e 65 20 53  6f 75 6e 64 5f 51 49 6e  |define Sound_QIn|
0000e280  74 65 72 66 61 63 65 20  20 20 20 20 20 20 20 20  |terface         |
0000e290  20 20 20 20 20 20 30 78  30 34 30 31 63 37 0a 23  |      0x0401c7.#|
0000e2a0  64 65 66 69 6e 65 20 41  44 46 53 5f 44 69 73 63  |define ADFS_Disc|
0000e2b0  4f 70 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |Op              |
0000e2c0  20 20 20 20 20 20 30 78  30 34 30 32 34 30 0a 23  |      0x040240.#|
0000e2d0  64 65 66 69 6e 65 20 41  44 46 53 5f 48 44 43 20  |define ADFS_HDC |
0000e2e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000e2f0  20 20 20 20 20 20 30 78  30 34 30 32 34 31 0a 23  |      0x040241.#|
0000e300  64 65 66 69 6e 65 20 41  44 46 53 5f 44 72 69 76  |define ADFS_Driv|
0000e310  65 73 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |es              |
0000e320  20 20 20 20 20 20 30 78  30 34 30 32 34 32 0a 23  |      0x040242.#|
0000e330  64 65 66 69 6e 65 20 41  44 46 53 5f 46 72 65 65  |define ADFS_Free|
0000e340  53 70 61 63 65 20 20 20  20 20 20 20 20 20 20 20  |Space           |
0000e350  20 20 20 20 20 20 30 78  30 34 30 32 34 33 0a 23  |      0x040243.#|
0000e360  64 65 66 69 6e 65 20 41  44 46 53 5f 52 65 74 72  |define ADFS_Retr|
0000e370  69 65 73 20 20 20 20 20  20 20 20 20 20 20 20 20  |ies             |
0000e380  20 20 20 20 20 20 30 78  30 34 30 32 34 34 0a 23  |      0x040244.#|
0000e390  64 65 66 69 6e 65 20 41  44 46 53 5f 44 65 73 63  |define ADFS_Desc|
0000e3a0  72 69 62 65 44 69 73 63  20 20 20 20 20 20 20 20  |ribeDisc        |
0000e3b0  20 20 20 20 20 20 30 78  30 34 30 32 34 35 0a 23  |      0x040245.#|
0000e3c0  64 65 66 69 6e 65 20 41  44 46 53 5f 56 65 74 46  |define ADFS_VetF|
0000e3d0  6f 72 6d 61 74 20 20 20  20 20 20 20 20 20 20 20  |ormat           |
0000e3e0  20 20 20 20 20 20 30 78  30 34 30 32 34 36 0a 23  |      0x040246.#|
0000e3f0  64 65 66 69 6e 65 20 41  44 46 53 5f 46 6c 70 50  |define ADFS_FlpP|
0000e400  72 6f 63 65 73 73 44 43  42 20 20 20 20 20 20 20  |rocessDCB       |
0000e410  20 20 20 20 20 20 30 78  30 34 30 32 34 37 0a 23  |      0x040247.#|
0000e420  64 65 66 69 6e 65 20 41  44 46 53 5f 43 6f 6e 74  |define ADFS_Cont|
0000e430  72 6f 6c 6c 65 72 54 79  70 65 20 20 20 20 20 20  |rollerType      |
0000e440  20 20 20 20 20 20 30 78  30 34 30 32 34 38 0a 23  |      0x040248.#|
0000e450  64 65 66 69 6e 65 20 41  44 46 53 5f 50 6f 77 65  |define ADFS_Powe|
0000e460  72 43 6f 6e 74 72 6f 6c  20 20 20 20 20 20 20 20  |rControl        |
0000e470  20 20 20 20 20 20 30 78  30 34 30 32 34 39 0a 23  |      0x040249.#|
0000e480  64 65 66 69 6e 65 20 41  44 46 53 5f 53 65 74 49  |define ADFS_SetI|
0000e490  44 45 43 6f 6e 74 72 6f  6c 6c 65 72 20 20 20 20  |DEController    |
0000e4a0  20 20 20 20 20 20 30 78  30 34 30 32 34 61 0a 23  |      0x04024a.#|
0000e4b0  64 65 66 69 6e 65 20 41  44 46 53 5f 49 44 45 55  |define ADFS_IDEU|
0000e4c0  73 65 72 4f 70 20 20 20  20 20 20 20 20 20 20 20  |serOp           |
0000e4d0  20 20 20 20 20 20 30 78  30 34 30 32 34 62 0a 23  |      0x04024b.#|
0000e4e0  64 65 66 69 6e 65 20 41  44 46 53 5f 4d 69 73 63  |define ADFS_Misc|
0000e4f0  4f 70 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |Op              |
0000e500  20 20 20 20 20 20 30 78  30 34 30 32 34 63 0a 23  |      0x04024c.#|
0000e510  64 65 66 69 6e 65 20 41  44 46 53 5f 45 43 43 53  |define ADFS_ECCS|
0000e520  41 6e 64 52 65 74 72 69  65 73 20 20 20 20 20 20  |AndRetries      |
0000e530  20 20 20 20 20 20 30 78  30 34 30 32 35 30 0a 23  |      0x040250.#|
0000e540  64 65 66 69 6e 65 20 50  6f 64 75 6c 65 5f 52 65  |define Podule_Re|
0000e550  61 64 49 44 20 20 20 20  20 20 20 20 20 20 20 20  |adID            |
0000e560  20 20 20 20 20 20 30 78  30 34 30 32 38 30 0a 23  |      0x040280.#|
0000e570  64 65 66 69 6e 65 20 50  6f 64 75 6c 65 5f 52 65  |define Podule_Re|
0000e580  61 64 48 65 61 64 65 72  20 20 20 20 20 20 20 20  |adHeader        |
0000e590  20 20 20 20 20 20 30 78  30 34 30 32 38 31 0a 23  |      0x040281.#|
0000e5a0  64 65 66 69 6e 65 20 50  6f 64 75 6c 65 5f 45 6e  |define Podule_En|
0000e5b0  75 6d 65 72 61 74 65 43  68 75 6e 6b 73 20 20 20  |umerateChunks   |
0000e5c0  20 20 20 20 20 20 30 78  30 34 30 32 38 32 0a 23  |      0x040282.#|
0000e5d0  64 65 66 69 6e 65 20 50  6f 64 75 6c 65 5f 52 65  |define Podule_Re|
0000e5e0  61 64 43 68 75 6e 6b 20  20 20 20 20 20 20 20 20  |adChunk         |
0000e5f0  20 20 20 20 20 20 30 78  30 34 30 32 38 33 0a 23  |      0x040283.#|
0000e600  64 65 66 69 6e 65 20 50  6f 64 75 6c 65 5f 52 65  |define Podule_Re|
0000e610  61 64 42 79 74 65 73 20  20 20 20 20 20 20 20 20  |adBytes         |
0000e620  20 20 20 20 20 20 30 78  30 34 30 32 38 34 0a 23  |      0x040284.#|
0000e630  64 65 66 69 6e 65 20 50  6f 64 75 6c 65 5f 57 72  |define Podule_Wr|
0000e640  69 74 65 42 79 74 65 73  20 20 20 20 20 20 20 20  |iteBytes        |
0000e650  20 20 20 20 20 20 30 78  30 34 30 32 38 35 0a 23  |      0x040285.#|
0000e660  64 65 66 69 6e 65 20 50  6f 64 75 6c 65 5f 43 61  |define Podule_Ca|
0000e670  6c 6c 4c 6f 61 64 65 72  20 20 20 20 20 20 20 20  |llLoader        |
0000e680  20 20 20 20 20 20 30 78  30 34 30 32 38 36 0a 23  |      0x040286.#|
0000e690  64 65 66 69 6e 65 20 50  6f 64 75 6c 65 5f 52 61  |define Podule_Ra|
0000e6a0  77 52 65 61 64 20 20 20  20 20 20 20 20 20 20 20  |wRead           |
0000e6b0  20 20 20 20 20 20 30 78  30 34 30 32 38 37 0a 23  |      0x040287.#|
0000e6c0  64 65 66 69 6e 65 20 50  6f 64 75 6c 65 5f 52 61  |define Podule_Ra|
0000e6d0  77 57 72 69 74 65 20 20  20 20 20 20 20 20 20 20  |wWrite          |
0000e6e0  20 20 20 20 20 20 30 78  30 34 30 32 38 38 0a 23  |      0x040288.#|
0000e6f0  64 65 66 69 6e 65 20 50  6f 64 75 6c 65 5f 48 61  |define Podule_Ha|
0000e700  72 64 77 61 72 65 41 64  64 72 65 73 73 20 20 20  |rdwareAddress   |
0000e710  20 20 20 20 20 20 30 78  30 34 30 32 38 39 0a 23  |      0x040289.#|
0000e720  64 65 66 69 6e 65 20 50  6f 64 75 6c 65 5f 45 6e  |define Podule_En|
0000e730  75 6d 65 72 61 74 65 43  68 75 6e 6b 73 57 69 74  |umerateChunksWit|
0000e740  68 49 6e 66 6f 20 30 78  30 34 30 32 38 61 0a 23  |hInfo 0x04028a.#|
0000e750  64 65 66 69 6e 65 20 50  6f 64 75 6c 65 5f 48 61  |define Podule_Ha|
0000e760  72 64 77 61 72 65 41 64  64 72 65 73 73 65 73 20  |rdwareAddresses |
0000e770  20 20 20 20 20 20 30 78  30 34 30 32 38 62 0a 23  |      0x04028b.#|
0000e780  64 65 66 69 6e 65 20 50  6f 64 75 6c 65 5f 52 65  |define Podule_Re|
0000e790  74 75 72 6e 4e 75 6d 62  65 72 20 20 20 20 20 20  |turnNumber      |
0000e7a0  20 20 20 20 20 20 30 78  30 34 30 32 38 63 0a 23  |      0x04028c.#|
0000e7b0  64 65 66 69 6e 65 20 44  65 62 75 67 67 65 72 5f  |define Debugger_|
0000e7c0  44 69 73 61 73 73 65 6d  62 6c 65 20 20 20 20 20  |Disassemble     |
0000e7d0  20 20 20 20 20 20 30 78  30 34 30 33 38 30 0a 23  |      0x040380.#|
0000e7e0  64 65 66 69 6e 65 20 53  43 53 49 5f 56 65 72 73  |define SCSI_Vers|
0000e7f0  69 6f 6e 20 20 20 20 20  20 20 20 20 20 20 20 20  |ion             |
0000e800  20 20 20 20 20 20 30 78  30 34 30 33 63 30 0a 23  |      0x0403c0.#|
0000e810  64 65 66 69 6e 65 20 53  43 53 49 5f 49 6e 69 74  |define SCSI_Init|
0000e820  69 61 6c 69 73 65 20 20  20 20 20 20 20 20 20 20  |ialise          |
0000e830  20 20 20 20 20 20 30 78  30 34 30 33 63 31 0a 23  |      0x0403c1.#|
0000e840  64 65 66 69 6e 65 20 53  43 53 49 5f 43 6f 6e 74  |define SCSI_Cont|
0000e850  72 6f 6c 20 20 20 20 20  20 20 20 20 20 20 20 20  |rol             |
0000e860  20 20 20 20 20 20 30 78  30 34 30 33 63 32 0a 23  |      0x0403c2.#|
0000e870  64 65 66 69 6e 65 20 53  43 53 49 5f 4f 70 20 20  |define SCSI_Op  |
0000e880  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000e890  20 20 20 20 20 20 30 78  30 34 30 33 63 33 0a 23  |      0x0403c3.#|
0000e8a0  64 65 66 69 6e 65 20 53  43 53 49 5f 53 74 61 74  |define SCSI_Stat|
0000e8b0  75 73 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |us              |
0000e8c0  20 20 20 20 20 20 30 78  30 34 30 33 63 34 0a 23  |      0x0403c4.#|
0000e8d0  64 65 66 69 6e 65 20 53  43 53 49 5f 52 65 61 64  |define SCSI_Read|
0000e8e0  43 6f 6e 74 72 6f 6c 4c  69 6e 65 73 20 20 20 20  |ControlLines    |
0000e8f0  20 20 20 20 20 20 30 78  30 34 30 33 63 35 0a 23  |      0x0403c5.#|
0000e900  64 65 66 69 6e 65 20 53  43 53 49 5f 45 45 50 72  |define SCSI_EEPr|
0000e910  6f 6d 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |om              |
0000e920  20 20 20 20 20 20 30 78  30 34 30 33 63 36 0a 23  |      0x0403c6.#|
0000e930  64 65 66 69 6e 65 20 53  43 53 49 5f 52 65 73 65  |define SCSI_Rese|
0000e940  72 76 65 20 20 20 20 20  20 20 20 20 20 20 20 20  |rve             |
0000e950  20 20 20 20 20 20 30 78  30 34 30 33 63 37 0a 23  |      0x0403c7.#|
0000e960  64 65 66 69 6e 65 20 53  43 53 49 5f 4c 69 73 74  |define SCSI_List|
0000e970  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000e980  20 20 20 20 20 20 30 78  30 34 30 33 63 38 0a 23  |      0x0403c8.#|
0000e990  64 65 66 69 6e 65 20 53  43 53 49 5f 54 61 72 67  |define SCSI_Targ|
0000e9a0  65 74 43 6f 6e 74 72 6f  6c 20 20 20 20 20 20 20  |etControl       |
0000e9b0  20 20 20 20 20 20 30 78  30 34 30 33 63 39 0a 23  |      0x0403c9.#|
0000e9c0  64 65 66 69 6e 65 20 46  50 45 6d 75 6c 61 74 6f  |define FPEmulato|
0000e9d0  72 5f 56 65 72 73 69 6f  6e 20 20 20 20 20 20 20  |r_Version       |
0000e9e0  20 20 20 20 20 20 30 78  30 34 30 34 38 30 0a 23  |      0x040480.#|
0000e9f0  64 65 66 69 6e 65 20 46  69 6c 65 43 6f 72 65 5f  |define FileCore_|
0000ea00  44 69 73 63 4f 70 20 20  20 20 20 20 20 20 20 20  |DiscOp          |
0000ea10  20 20 20 20 20 20 30 78  30 34 30 35 34 30 0a 23  |      0x040540.#|
0000ea20  64 65 66 69 6e 65 20 46  69 6c 65 43 6f 72 65 5f  |define FileCore_|
0000ea30  43 72 65 61 74 65 20 20  20 20 20 20 20 20 20 20  |Create          |
0000ea40  20 20 20 20 20 20 30 78  30 34 30 35 34 31 0a 23  |      0x040541.#|
0000ea50  64 65 66 69 6e 65 20 46  69 6c 65 43 6f 72 65 5f  |define FileCore_|
0000ea60  44 72 69 76 65 73 20 20  20 20 20 20 20 20 20 20  |Drives          |
0000ea70  20 20 20 20 20 20 30 78  30 34 30 35 34 32 0a 23  |      0x040542.#|
0000ea80  64 65 66 69 6e 65 20 46  69 6c 65 43 6f 72 65 5f  |define FileCore_|
0000ea90  46 72 65 65 53 70 61 63  65 20 20 20 20 20 20 20  |FreeSpace       |
0000eaa0  20 20 20 20 20 20 30 78  30 34 30 35 34 33 0a 23  |      0x040543.#|
0000eab0  64 65 66 69 6e 65 20 46  69 6c 65 43 6f 72 65 5f  |define FileCore_|
0000eac0  46 6c 6f 70 70 79 53 74  72 75 63 74 75 72 65 20  |FloppyStructure |
0000ead0  20 20 20 20 20 20 30 78  30 34 30 35 34 34 0a 23  |      0x040544.#|
0000eae0  64 65 66 69 6e 65 20 46  69 6c 65 43 6f 72 65 5f  |define FileCore_|
0000eaf0  44 65 73 63 72 69 62 65  44 69 73 63 20 20 20 20  |DescribeDisc    |
0000eb00  20 20 20 20 20 20 30 78  30 34 30 35 34 35 0a 23  |      0x040545.#|
0000eb10  64 65 66 69 6e 65 20 46  69 6c 65 43 6f 72 65 5f  |define FileCore_|
0000eb20  44 69 73 63 61 72 64 52  65 61 64 53 65 63 74 6f  |DiscardReadSecto|
0000eb30  72 73 43 61 63 68 65 20  30 78 30 34 30 35 34 36  |rsCache 0x040546|
0000eb40  0a 23 64 65 66 69 6e 65  20 46 69 6c 65 43 6f 72  |.#define FileCor|
0000eb50  65 5f 44 69 73 63 46 6f  72 6d 61 74 20 20 20 20  |e_DiscFormat    |
0000eb60  20 20 20 20 20 20 20 20  30 78 30 34 30 35 34 37  |        0x040547|
0000eb70  0a 23 64 65 66 69 6e 65  20 46 69 6c 65 43 6f 72  |.#define FileCor|
0000eb80  65 5f 4c 61 79 6f 75 74  53 74 72 75 63 74 75 72  |e_LayoutStructur|
0000eb90  65 20 20 20 20 20 20 20  30 78 30 34 30 35 34 38  |e       0x040548|
0000eba0  0a 23 64 65 66 69 6e 65  20 46 69 6c 65 43 6f 72  |.#define FileCor|
0000ebb0  65 5f 4d 69 73 63 4f 70  20 20 20 20 20 20 20 20  |e_MiscOp        |
0000ebc0  20 20 20 20 20 20 20 20  30 78 30 34 30 35 34 39  |        0x040549|
0000ebd0  0a 23 64 65 66 69 6e 65  20 53 68 65 6c 6c 5f 43  |.#define Shell_C|
0000ebe0  72 65 61 74 65 20 20 20  20 20 20 20 20 20 20 20  |reate           |
0000ebf0  20 20 20 20 20 20 20 20  30 78 30 34 30 35 63 30  |        0x0405c0|
0000ec00  0a 23 64 65 66 69 6e 65  20 53 68 65 6c 6c 5f 44  |.#define Shell_D|
0000ec10  65 73 74 72 6f 79 20 20  20 20 20 20 20 20 20 20  |estroy          |
0000ec20  20 20 20 20 20 20 20 20  30 78 30 34 30 35 63 31  |        0x0405c1|
0000ec30  0a 23 64 65 66 69 6e 65  20 48 6f 75 72 67 6c 61  |.#define Hourgla|
0000ec40  73 73 5f 4f 6e 20 20 20  20 20 20 20 20 20 20 20  |ss_On           |
0000ec50  20 20 20 20 20 20 20 20  30 78 30 34 30 36 63 30  |        0x0406c0|
0000ec60  0a 23 64 65 66 69 6e 65  20 48 6f 75 72 67 6c 61  |.#define Hourgla|
0000ec70  73 73 5f 4f 66 66 20 20  20 20 20 20 20 20 20 20  |ss_Off          |
0000ec80  20 20 20 20 20 20 20 20  30 78 30 34 30 36 63 31  |        0x0406c1|
0000ec90  0a 23 64 65 66 69 6e 65  20 48 6f 75 72 67 6c 61  |.#define Hourgla|
0000eca0  73 73 5f 53 6d 61 73 68  20 20 20 20 20 20 20 20  |ss_Smash        |
0000ecb0  20 20 20 20 20 20 20 20  30 78 30 34 30 36 63 32  |        0x0406c2|
0000ecc0  0a 23 64 65 66 69 6e 65  20 48 6f 75 72 67 6c 61  |.#define Hourgla|
0000ecd0  73 73 5f 53 74 61 72 74  20 20 20 20 20 20 20 20  |ss_Start        |
0000ece0  20 20 20 20 20 20 20 20  30 78 30 34 30 36 63 33  |        0x0406c3|
0000ecf0  0a 23 64 65 66 69 6e 65  20 48 6f 75 72 67 6c 61  |.#define Hourgla|
0000ed00  73 73 5f 50 65 72 63 65  6e 74 61 67 65 20 20 20  |ss_Percentage   |
0000ed10  20 20 20 20 20 20 20 20  30 78 30 34 30 36 63 34  |        0x0406c4|
0000ed20  0a 23 64 65 66 69 6e 65  20 48 6f 75 72 67 6c 61  |.#define Hourgla|
0000ed30  73 73 5f 4c 45 44 73 20  20 20 20 20 20 20 20 20  |ss_LEDs         |
0000ed40  20 20 20 20 20 20 20 20  30 78 30 34 30 36 63 35  |        0x0406c5|
0000ed50  0a 23 64 65 66 69 6e 65  20 48 6f 75 72 67 6c 61  |.#define Hourgla|
0000ed60  73 73 5f 43 6f 6c 6f 75  72 73 20 20 20 20 20 20  |ss_Colours      |
0000ed70  20 20 20 20 20 20 20 20  30 78 30 34 30 36 63 36  |        0x0406c6|
0000ed80  0a 23 64 65 66 69 6e 65  20 44 72 61 77 5f 50 72  |.#define Draw_Pr|
0000ed90  6f 63 65 73 73 50 61 74  68 20 20 20 20 20 20 20  |ocessPath       |
0000eda0  20 20 20 20 20 20 20 20  30 78 30 34 30 37 30 30  |        0x040700|
0000edb0  0a 23 64 65 66 69 6e 65  20 44 72 61 77 5f 50 72  |.#define Draw_Pr|
0000edc0  6f 63 65 73 73 50 61 74  68 46 50 20 20 20 20 20  |ocessPathFP     |
0000edd0  20 20 20 20 20 20 20 20  30 78 30 34 30 37 30 31  |        0x040701|
0000ede0  0a 23 64 65 66 69 6e 65  20 44 72 61 77 5f 46 69  |.#define Draw_Fi|
0000edf0  6c 6c 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |ll              |
0000ee00  20 20 20 20 20 20 20 20  30 78 30 34 30 37 30 32  |        0x040702|
0000ee10  0a 23 64 65 66 69 6e 65  20 44 72 61 77 5f 46 69  |.#define Draw_Fi|
0000ee20  6c 6c 46 50 20 20 20 20  20 20 20 20 20 20 20 20  |llFP            |
0000ee30  20 20 20 20 20 20 20 20  30 78 30 34 30 37 30 33  |        0x040703|
0000ee40  0a 23 64 65 66 69 6e 65  20 44 72 61 77 5f 53 74  |.#define Draw_St|
0000ee50  72 6f 6b 65 20 20 20 20  20 20 20 20 20 20 20 20  |roke            |
0000ee60  20 20 20 20 20 20 20 20  30 78 30 34 30 37 30 34  |        0x040704|
0000ee70  0a 23 64 65 66 69 6e 65  20 44 72 61 77 5f 53 74  |.#define Draw_St|
0000ee80  72 6f 6b 65 46 50 20 20  20 20 20 20 20 20 20 20  |rokeFP          |
0000ee90  20 20 20 20 20 20 20 20  30 78 30 34 30 37 30 35  |        0x040705|
0000eea0  0a 23 64 65 66 69 6e 65  20 44 72 61 77 5f 53 74  |.#define Draw_St|
0000eeb0  72 6f 6b 65 50 61 74 68  20 20 20 20 20 20 20 20  |rokePath        |
0000eec0  20 20 20 20 20 20 20 20  30 78 30 34 30 37 30 36  |        0x040706|
0000eed0  0a 23 64 65 66 69 6e 65  20 44 72 61 77 5f 53 74  |.#define Draw_St|
0000eee0  72 6f 6b 65 50 61 74 68  46 50 20 20 20 20 20 20  |rokePathFP      |
0000eef0  20 20 20 20 20 20 20 20  30 78 30 34 30 37 30 37  |        0x040707|
0000ef00  0a 23 64 65 66 69 6e 65  20 44 72 61 77 5f 46 6c  |.#define Draw_Fl|
0000ef10  61 74 74 65 6e 50 61 74  68 20 20 20 20 20 20 20  |attenPath       |
0000ef20  20 20 20 20 20 20 20 20  30 78 30 34 30 37 30 38  |        0x040708|
0000ef30  0a 23 64 65 66 69 6e 65  20 44 72 61 77 5f 46 6c  |.#define Draw_Fl|
0000ef40  61 74 74 65 6e 50 61 74  68 46 50 20 20 20 20 20  |attenPathFP     |
0000ef50  20 20 20 20 20 20 20 20  30 78 30 34 30 37 30 39  |        0x040709|
0000ef60  0a 23 64 65 66 69 6e 65  20 44 72 61 77 5f 54 72  |.#define Draw_Tr|
0000ef70  61 6e 73 66 6f 72 6d 50  61 74 68 20 20 20 20 20  |ansformPath     |
0000ef80  20 20 20 20 20 20 20 20  30 78 30 34 30 37 30 61  |        0x04070a|
0000ef90  0a 23 64 65 66 69 6e 65  20 44 72 61 77 5f 54 72  |.#define Draw_Tr|
0000efa0  61 6e 73 66 6f 72 6d 50  61 74 68 46 50 20 20 20  |ansformPathFP   |
0000efb0  20 20 20 20 20 20 20 20  30 78 30 34 30 37 30 62  |        0x04070b|
0000efc0  0a 23 64 65 66 69 6e 65  20 43 6f 6c 6f 75 72 54  |.#define ColourT|
0000efd0  72 61 6e 73 5f 53 65 6c  65 63 74 54 61 62 6c 65  |rans_SelectTable|
0000efe0  20 20 20 20 20 20 20 20  30 78 30 34 30 37 34 30  |        0x040740|
0000eff0  0a 23 64 65 66 69 6e 65  20 43 6f 6c 6f 75 72 54  |.#define ColourT|
0000f000  72 61 6e 73 5f 53 65 6c  65 63 74 47 43 4f 4c 54  |rans_SelectGCOLT|
0000f010  61 62 6c 65 20 20 20 20  30 78 30 34 30 37 34 31  |able    0x040741|
0000f020  0a 23 64 65 66 69 6e 65  20 43 6f 6c 6f 75 72 54  |.#define ColourT|
0000f030  72 61 6e 73 5f 52 65 74  75 72 6e 47 43 4f 4c 20  |rans_ReturnGCOL |
0000f040  20 20 20 20 20 20 20 20  30 78 30 34 30 37 34 32  |        0x040742|
0000f050  0a 23 64 65 66 69 6e 65  20 43 6f 6c 6f 75 72 54  |.#define ColourT|
0000f060  72 61 6e 73 5f 53 65 74  47 43 4f 4c 20 20 20 20  |rans_SetGCOL    |
0000f070  20 20 20 20 20 20 20 20  30 78 30 34 30 37 34 33  |        0x040743|
0000f080  0a 23 64 65 66 69 6e 65  20 43 6f 6c 6f 75 72 54  |.#define ColourT|
0000f090  72 61 6e 73 5f 52 65 74  75 72 6e 43 6f 6c 6f 75  |rans_ReturnColou|
0000f0a0  72 4e 75 6d 62 65 72 20  30 78 30 34 30 37 34 34  |rNumber 0x040744|
0000f0b0  0a 23 64 65 66 69 6e 65  20 43 6f 6c 6f 75 72 54  |.#define ColourT|
0000f0c0  72 61 6e 73 5f 52 65 74  75 72 6e 47 43 4f 4c 46  |rans_ReturnGCOLF|
0000f0d0  6f 72 4d 6f 64 65 20 20  30 78 30 34 30 37 34 35  |orMode  0x040745|
0000f0e0  0a 23 64 65 66 69 6e 65  20 43 6f 6c 6f 75 72 54  |.#define ColourT|
0000f0f0  72 61 6e 73 5f 52 65 74  75 72 6e 43 6f 6c 6f 75  |rans_ReturnColou|
0000f100  72 4e 75 6d 62 65 72 46  6f 72 4d 6f 64 65 20 30  |rNumberForMode 0|
0000f110  78 30 34 30 37 34 36 0a  23 64 65 66 69 6e 65 20  |x040746.#define |
0000f120  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 52 65 74 75  |ColourTrans_Retu|
0000f130  72 6e 4f 70 70 47 43 4f  4c 20 20 20 20 20 20 30  |rnOppGCOL      0|
0000f140  78 30 34 30 37 34 37 0a  23 64 65 66 69 6e 65 20  |x040747.#define |
0000f150  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 53 65 74 4f  |ColourTrans_SetO|
0000f160  70 70 47 43 4f 4c 20 20  20 20 20 20 20 20 20 30  |ppGCOL         0|
0000f170  78 30 34 30 37 34 38 0a  23 64 65 66 69 6e 65 20  |x040748.#define |
0000f180  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 52 65 74 75  |ColourTrans_Retu|
0000f190  72 6e 4f 70 70 43 6f 6c  6f 75 72 4e 75 6d 62 65  |rnOppColourNumbe|
0000f1a0  72 20 30 78 30 34 30 37  34 39 0a 23 64 65 66 69  |r 0x040749.#defi|
0000f1b0  6e 65 20 43 6f 6c 6f 75  72 54 72 61 6e 73 5f 52  |ne ColourTrans_R|
0000f1c0  65 74 75 72 6e 4f 70 70  47 43 4f 4c 46 6f 72 4d  |eturnOppGCOLForM|
0000f1d0  6f 64 65 20 30 78 30 34  30 37 34 61 0a 23 64 65  |ode 0x04074a.#de|
0000f1e0  66 69 6e 65 20 43 6f 6c  6f 75 72 54 72 61 6e 73  |fine ColourTrans|
0000f1f0  5f 52 65 74 75 72 6e 4f  70 70 43 6f 6c 6f 75 72  |_ReturnOppColour|
0000f200  4e 75 6d 62 65 72 46 6f  72 4d 6f 64 65 20 30 78  |NumberForMode 0x|
0000f210  30 34 30 37 34 62 0a 23  64 65 66 69 6e 65 20 43  |04074b.#define C|
0000f220  6f 6c 6f 75 72 54 72 61  6e 73 5f 47 43 4f 4c 54  |olourTrans_GCOLT|
0000f230  6f 43 6f 6c 6f 75 72 4e  75 6d 62 65 72 20 30 78  |oColourNumber 0x|
0000f240  30 34 30 37 34 63 0a 23  64 65 66 69 6e 65 20 43  |04074c.#define C|
0000f250  6f 6c 6f 75 72 54 72 61  6e 73 5f 43 6f 6c 6f 75  |olourTrans_Colou|
0000f260  72 4e 75 6d 62 65 72 54  6f 47 43 4f 4c 20 30 78  |rNumberToGCOL 0x|
0000f270  30 34 30 37 34 64 0a 23  64 65 66 69 6e 65 20 43  |04074d.#define C|
0000f280  6f 6c 6f 75 72 54 72 61  6e 73 5f 52 65 74 75 72  |olourTrans_Retur|
0000f290  6e 46 6f 6e 74 43 6f 6c  6f 75 72 73 20 20 30 78  |nFontColours  0x|
0000f2a0  30 34 30 37 34 65 0a 23  64 65 66 69 6e 65 20 43  |04074e.#define C|
0000f2b0  6f 6c 6f 75 72 54 72 61  6e 73 5f 53 65 74 46 6f  |olourTrans_SetFo|
0000f2c0  6e 74 43 6f 6c 6f 75 72  73 20 20 20 20 20 30 78  |ntColours     0x|
0000f2d0  30 34 30 37 34 66 0a 23  64 65 66 69 6e 65 20 43  |04074f.#define C|
0000f2e0  6f 6c 6f 75 72 54 72 61  6e 73 5f 49 6e 76 61 6c  |olourTrans_Inval|
0000f2f0  69 64 61 74 65 43 61 63  68 65 20 20 20 20 30 78  |idateCache    0x|
0000f300  30 34 30 37 35 30 0a 23  64 65 66 69 6e 65 20 43  |040750.#define C|
0000f310  6f 6c 6f 75 72 54 72 61  6e 73 5f 53 65 74 43 61  |olourTrans_SetCa|
0000f320  6c 69 62 72 61 74 69 6f  6e 20 20 20 20 20 30 78  |libration     0x|
0000f330  30 34 30 37 35 31 0a 23  64 65 66 69 6e 65 20 43  |040751.#define C|
0000f340  6f 6c 6f 75 72 54 72 61  6e 73 5f 52 65 61 64 43  |olourTrans_ReadC|
0000f350  61 6c 69 62 72 61 74 69  6f 6e 20 20 20 20 30 78  |alibration    0x|
0000f360  30 34 30 37 35 32 0a 23  64 65 66 69 6e 65 20 43  |040752.#define C|
0000f370  6f 6c 6f 75 72 54 72 61  6e 73 5f 43 6f 6e 76 65  |olourTrans_Conve|
0000f380  72 74 44 65 76 69 63 65  43 6f 6c 6f 75 72 20 30  |rtDeviceColour 0|
0000f390  78 30 34 30 37 35 33 0a  23 64 65 66 69 6e 65 20  |x040753.#define |
0000f3a0  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 43 6f 6e 76  |ColourTrans_Conv|
0000f3b0  65 72 74 44 65 76 69 63  65 50 61 6c 65 74 74 65  |ertDevicePalette|
0000f3c0  20 30 78 30 34 30 37 35  34 0a 23 64 65 66 69 6e  | 0x040754.#defin|
0000f3d0  65 20 43 6f 6c 6f 75 72  54 72 61 6e 73 5f 43 6f  |e ColourTrans_Co|
0000f3e0  6e 76 65 72 74 52 47 42  54 6f 43 49 45 20 20 20  |nvertRGBToCIE   |
0000f3f0  20 30 78 30 34 30 37 35  35 0a 23 64 65 66 69 6e  | 0x040755.#defin|
0000f400  65 20 43 6f 6c 6f 75 72  54 72 61 6e 73 5f 43 6f  |e ColourTrans_Co|
0000f410  6e 76 65 72 74 43 49 45  54 6f 52 47 42 20 20 20  |nvertCIEToRGB   |
0000f420  20 30 78 30 34 30 37 35  36 0a 23 64 65 66 69 6e  | 0x040756.#defin|
0000f430  65 20 43 6f 6c 6f 75 72  54 72 61 6e 73 5f 57 72  |e ColourTrans_Wr|
0000f440  69 74 65 43 61 6c 69 62  72 61 74 69 6f 6e 54 6f  |iteCalibrationTo|
0000f450  46 69 6c 65 20 30 78 30  34 30 37 35 37 0a 23 64  |File 0x040757.#d|
0000f460  65 66 69 6e 65 20 43 6f  6c 6f 75 72 54 72 61 6e  |efine ColourTran|
0000f470  73 5f 43 6f 6e 76 65 72  74 52 47 42 54 6f 48 53  |s_ConvertRGBToHS|
0000f480  56 20 20 20 20 30 78 30  34 30 37 35 38 0a 23 64  |V    0x040758.#d|
0000f490  65 66 69 6e 65 20 43 6f  6c 6f 75 72 54 72 61 6e  |efine ColourTran|
0000f4a0  73 5f 43 6f 6e 76 65 72  74 48 53 56 54 6f 52 47  |s_ConvertHSVToRG|
0000f4b0  42 20 20 20 20 30 78 30  34 30 37 35 39 0a 23 64  |B    0x040759.#d|
0000f4c0  65 66 69 6e 65 20 43 6f  6c 6f 75 72 54 72 61 6e  |efine ColourTran|
0000f4d0  73 5f 43 6f 6e 76 65 72  74 52 47 42 54 6f 43 4d  |s_ConvertRGBToCM|
0000f4e0  59 4b 20 20 20 30 78 30  34 30 37 35 61 0a 23 64  |YK   0x04075a.#d|
0000f4f0  65 66 69 6e 65 20 43 6f  6c 6f 75 72 54 72 61 6e  |efine ColourTran|
0000f500  73 5f 43 6f 6e 76 65 72  74 43 4d 59 4b 54 6f 52  |s_ConvertCMYKToR|
0000f510  47 42 20 20 20 30 78 30  34 30 37 35 62 0a 23 64  |GB   0x04075b.#d|
0000f520  65 66 69 6e 65 20 43 6f  6c 6f 75 72 54 72 61 6e  |efine ColourTran|
0000f530  73 5f 52 65 61 64 50 61  6c 65 74 74 65 20 20 20  |s_ReadPalette   |
0000f540  20 20 20 20 20 30 78 30  34 30 37 35 63 0a 23 64  |     0x04075c.#d|
0000f550  65 66 69 6e 65 20 43 6f  6c 6f 75 72 54 72 61 6e  |efine ColourTran|
0000f560  73 5f 57 72 69 74 65 50  61 6c 65 74 74 65 20 20  |s_WritePalette  |
0000f570  20 20 20 20 20 30 78 30  34 30 37 35 64 0a 23 64  |     0x04075d.#d|
0000f580  65 66 69 6e 65 20 43 6f  6c 6f 75 72 54 72 61 6e  |efine ColourTran|
0000f590  73 5f 53 65 74 43 6f 6c  6f 75 72 20 20 20 20 20  |s_SetColour     |
0000f5a0  20 20 20 20 20 30 78 30  34 30 37 35 65 0a 23 64  |     0x04075e.#d|
0000f5b0  65 66 69 6e 65 20 43 6f  6c 6f 75 72 54 72 61 6e  |efine ColourTran|
0000f5c0  73 5f 4d 69 73 63 4f 70  20 20 20 20 20 20 20 20  |s_MiscOp        |
0000f5d0  20 20 20 20 20 30 78 30  34 30 37 35 66 0a 23 64  |     0x04075f.#d|
0000f5e0  65 66 69 6e 65 20 43 6f  6c 6f 75 72 54 72 61 6e  |efine ColourTran|
0000f5f0  73 5f 57 72 69 74 65 4c  6f 61 64 69 6e 67 73 54  |s_WriteLoadingsT|
0000f600  6f 46 69 6c 65 20 30 78  30 34 30 37 36 30 0a 23  |oFile 0x040760.#|
0000f610  64 65 66 69 6e 65 20 43  6f 6c 6f 75 72 54 72 61  |define ColourTra|
0000f620  6e 73 5f 53 65 74 54 65  78 74 43 6f 6c 6f 75 72  |ns_SetTextColour|
0000f630  20 20 20 20 20 20 30 78  30 34 30 37 36 31 0a 23  |      0x040761.#|
0000f640  64 65 66 69 6e 65 20 43  6f 6c 6f 75 72 54 72 61  |define ColourTra|
0000f650  6e 73 5f 53 65 74 4f 70  70 54 65 78 74 43 6f 6c  |ns_SetOppTextCol|
0000f660  6f 75 72 20 20 20 30 78  30 34 30 37 36 32 0a 23  |our   0x040762.#|
0000f670  64 65 66 69 6e 65 20 43  6f 6c 6f 75 72 54 72 61  |define ColourTra|
0000f680  6e 73 5f 47 65 6e 65 72  61 74 65 54 61 62 6c 65  |ns_GenerateTable|
0000f690  20 20 20 20 20 20 30 78  30 34 30 37 36 33 0a 23  |      0x040763.#|
0000f6a0  64 65 66 69 6e 65 20 53  43 53 49 46 53 5f 44 69  |define SCSIFS_Di|
0000f6b0  73 63 4f 70 20 20 20 20  20 20 20 20 20 20 20 20  |scOp            |
0000f6c0  20 20 20 20 20 20 30 78  30 34 30 39 38 30 0a 23  |      0x040980.#|
0000f6d0  64 65 66 69 6e 65 20 53  43 53 49 46 53 5f 44 72  |define SCSIFS_Dr|
0000f6e0  69 76 65 73 20 20 20 20  20 20 20 20 20 20 20 20  |ives            |
0000f6f0  20 20 20 20 20 20 30 78  30 34 30 39 38 32 0a 23  |      0x040982.#|
0000f700  64 65 66 69 6e 65 20 53  43 53 49 46 53 5f 46 72  |define SCSIFS_Fr|
0000f710  65 65 53 70 61 63 65 20  20 20 20 20 20 20 20 20  |eeSpace         |
0000f720  20 20 20 20 20 20 30 78  30 34 30 39 38 33 0a 23  |      0x040983.#|
0000f730  64 65 66 69 6e 65 20 53  43 53 49 46 53 5f 44 65  |define SCSIFS_De|
0000f740  73 63 72 69 62 65 44 69  73 63 20 20 20 20 20 20  |scribeDisc      |
0000f750  20 20 20 20 20 20 30 78  30 34 30 39 38 35 0a 23  |      0x040985.#|
0000f760  64 65 66 69 6e 65 20 53  43 53 49 46 53 5f 54 65  |define SCSIFS_Te|
0000f770  73 74 52 65 61 64 79 20  20 20 20 20 20 20 20 20  |stReady         |
0000f780  20 20 20 20 20 20 30 78  30 34 30 39 38 36 0a 23  |      0x040986.#|
0000f790  64 65 66 69 6e 65 20 53  75 70 65 72 5f 53 61 6d  |define Super_Sam|
0000f7a0  70 6c 65 39 30 20 20 20  20 20 20 20 20 20 20 20  |ple90           |
0000f7b0  20 20 20 20 20 20 30 78  30 34 30 64 38 30 0a 23  |      0x040d80.#|
0000f7c0  64 65 66 69 6e 65 20 53  75 70 65 72 5f 53 61 6d  |define Super_Sam|
0000f7d0  70 6c 65 34 35 20 20 20  20 20 20 20 20 20 20 20  |ple45           |
0000f7e0  20 20 20 20 20 20 30 78  30 34 30 64 38 31 0a 23  |      0x040d81.#|
0000f7f0  64 65 66 69 6e 65 20 46  69 6c 65 72 41 63 74 69  |define FilerActi|
0000f800  6f 6e 5f 53 65 6e 64 53  65 6c 65 63 74 65 64 44  |on_SendSelectedD|
0000f810  69 72 65 63 74 6f 72 79  20 30 78 30 34 30 66 38  |irectory 0x040f8|
0000f820  30 0a 23 64 65 66 69 6e  65 20 46 69 6c 65 72 41  |0.#define FilerA|
0000f830  63 74 69 6f 6e 5f 53 65  6e 64 53 65 6c 65 63 74  |ction_SendSelect|
0000f840  65 64 46 69 6c 65 20 20  20 30 78 30 34 30 66 38  |edFile   0x040f8|
0000f850  31 0a 23 64 65 66 69 6e  65 20 46 69 6c 65 72 41  |1.#define FilerA|
0000f860  63 74 69 6f 6e 5f 53 65  6e 64 53 74 61 72 74 4f  |ction_SendStartO|
0000f870  70 65 72 61 74 69 6f 6e  20 30 78 30 34 30 66 38  |peration 0x040f8|
0000f880  32 0a 23 64 65 66 69 6e  65 20 4d 65 73 73 61 67  |2.#define Messag|
0000f890  65 54 72 61 6e 73 5f 46  69 6c 65 49 6e 66 6f 20  |eTrans_FileInfo |
0000f8a0  20 20 20 20 20 20 20 20  20 30 78 30 34 31 35 30  |         0x04150|
0000f8b0  30 0a 23 64 65 66 69 6e  65 20 4d 65 73 73 61 67  |0.#define Messag|
0000f8c0  65 54 72 61 6e 73 5f 4f  70 65 6e 46 69 6c 65 20  |eTrans_OpenFile |
0000f8d0  20 20 20 20 20 20 20 20  20 30 78 30 34 31 35 30  |         0x04150|
0000f8e0  31 0a 23 64 65 66 69 6e  65 20 4d 65 73 73 61 67  |1.#define Messag|
0000f8f0  65 54 72 61 6e 73 5f 4c  6f 6f 6b 75 70 20 20 20  |eTrans_Lookup   |
0000f900  20 20 20 20 20 20 20 20  20 30 78 30 34 31 35 30  |         0x04150|
0000f910  32 0a 23 64 65 66 69 6e  65 20 4d 65 73 73 61 67  |2.#define Messag|
0000f920  65 54 72 61 6e 73 5f 4d  61 6b 65 4d 65 6e 75 73  |eTrans_MakeMenus|
0000f930  20 20 20 20 20 20 20 20  20 30 78 30 34 31 35 30  |         0x04150|
0000f940  33 0a 23 64 65 66 69 6e  65 20 4d 65 73 73 61 67  |3.#define Messag|
0000f950  65 54 72 61 6e 73 5f 43  6c 6f 73 65 46 69 6c 65  |eTrans_CloseFile|
0000f960  20 20 20 20 20 20 20 20  20 30 78 30 34 31 35 30  |         0x04150|
0000f970  34 0a 23 64 65 66 69 6e  65 20 4d 65 73 73 61 67  |4.#define Messag|
0000f980  65 54 72 61 6e 73 5f 45  6e 75 6d 65 72 61 74 65  |eTrans_Enumerate|
0000f990  54 6f 6b 65 6e 73 20 20  20 30 78 30 34 31 35 30  |Tokens   0x04150|
0000f9a0  35 0a 23 64 65 66 69 6e  65 20 4d 65 73 73 61 67  |5.#define Messag|
0000f9b0  65 54 72 61 6e 73 5f 45  72 72 6f 72 4c 6f 6f 6b  |eTrans_ErrorLook|
0000f9c0  75 70 20 20 20 20 20 20  20 30 78 30 34 31 35 30  |up       0x04150|
0000f9d0  36 0a 23 64 65 66 69 6e  65 20 4d 65 73 73 61 67  |6.#define Messag|
0000f9e0  65 54 72 61 6e 73 5f 47  53 4c 6f 6f 6b 75 70 20  |eTrans_GSLookup |
0000f9f0  20 20 20 20 20 20 20 20  20 30 78 30 34 31 35 30  |         0x04150|
0000fa00  37 0a 23 64 65 66 69 6e  65 20 4d 65 73 73 61 67  |7.#define Messag|
0000fa10  65 54 72 61 6e 73 5f 43  6f 70 79 45 72 72 6f 72  |eTrans_CopyError|
0000fa20  20 20 20 20 20 20 20 20  20 30 78 30 34 31 35 30  |         0x04150|
0000fa30  38 0a 23 64 65 66 69 6e  65 20 4c 61 73 65 72 5f  |8.#define Laser_|
0000fa40  49 6e 66 6f 20 20 20 20  20 20 20 20 20 20 20 20  |Info            |
0000fa50  20 20 20 20 20 20 20 20  20 30 78 30 34 31 38 63  |         0x0418c|
0000fa60  30 0a 23 64 65 66 69 6e  65 20 4c 61 73 65 72 5f  |0.#define Laser_|
0000fa70  52 65 73 65 74 20 20 20  20 20 20 20 20 20 20 20  |Reset           |
0000fa80  20 20 20 20 20 20 20 20  20 30 78 30 34 31 38 63  |         0x0418c|
0000fa90  31 0a 23 64 65 66 69 6e  65 20 4c 61 73 65 72 5f  |1.#define Laser_|
0000faa0  53 74 61 74 75 73 20 20  20 20 20 20 20 20 20 20  |Status          |
0000fab0  20 20 20 20 20 20 20 20  20 30 78 30 34 31 38 63  |         0x0418c|
0000fac0  32 0a 23 64 65 66 69 6e  65 20 4c 61 73 65 72 5f  |2.#define Laser_|
0000fad0  50 61 67 65 53 69 7a 65  20 20 20 20 20 20 20 20  |PageSize        |
0000fae0  20 20 20 20 20 20 20 20  20 30 78 30 34 31 38 63  |         0x0418c|
0000faf0  33 0a 23 64 65 66 69 6e  65 20 4c 61 73 65 72 5f  |3.#define Laser_|
0000fb00  50 72 69 6e 74 4a 6f 62  20 20 20 20 20 20 20 20  |PrintJob        |
0000fb10  20 20 20 20 20 20 20 20  20 30 78 30 34 31 38 63  |         0x0418c|
0000fb20  34 0a 23 64 65 66 69 6e  65 20 4c 61 73 65 72 5f  |4.#define Laser_|
0000fb30  51 75 65 75 65 4a 6f 62  20 20 20 20 20 20 20 20  |QueueJob        |
0000fb40  20 20 20 20 20 20 20 20  20 30 78 30 34 31 38 63  |         0x0418c|
0000fb50  35 0a 23 64 65 66 69 6e  65 20 4c 61 73 65 72 5f  |5.#define Laser_|
0000fb60  43 61 6e 63 65 6c 4a 6f  62 20 20 20 20 20 20 20  |CancelJob       |
0000fb70  20 20 20 20 20 20 20 20  20 30 78 30 34 31 38 63  |         0x0418c|
0000fb80  36 0a 23 64 65 66 69 6e  65 20 4c 61 73 65 72 5f  |6.#define Laser_|
0000fb90  45 6e 64 4a 6f 62 20 20  20 20 20 20 20 20 20 20  |EndJob          |
0000fba0  20 20 20 20 20 20 20 20  20 30 78 30 34 31 38 63  |         0x0418c|
0000fbb0  37 0a 23 64 65 66 69 6e  65 20 4c 61 73 65 72 5f  |7.#define Laser_|
0000fbc0  51 75 65 72 79 4a 6f 62  20 20 20 20 20 20 20 20  |QueryJob        |
0000fbd0  20 20 20 20 20 20 20 20  20 30 78 30 34 31 38 63  |         0x0418c|
0000fbe0  38 0a 23 64 65 66 69 6e  65 20 4c 61 73 65 72 5f  |8.#define Laser_|
0000fbf0  43 75 72 72 65 6e 74 4a  6f 62 20 20 20 20 20 20  |CurrentJob      |
0000fc00  20 20 20 20 20 20 20 20  20 30 78 30 34 31 38 63  |         0x0418c|
0000fc10  39 0a 23 64 65 66 69 6e  65 20 4c 61 73 65 72 5f  |9.#define Laser_|
0000fc20  50 61 75 73 65 51 75 65  75 65 20 20 20 20 20 20  |PauseQueue      |
0000fc30  20 20 20 20 20 20 20 20  20 30 78 30 34 31 38 63  |         0x0418c|
0000fc40  61 0a 23 64 65 66 69 6e  65 20 4c 61 73 65 72 5f  |a.#define Laser_|
0000fc50  46 6c 61 73 68 4c 45 44  20 20 20 20 20 20 20 20  |FlashLED        |
0000fc60  20 20 20 20 20 20 20 20  20 30 78 30 34 31 38 63  |         0x0418c|
0000fc70  62 0a 23 64 65 66 69 6e  65 20 4c 61 73 65 72 5f  |b.#define Laser_|
0000fc80  43 4d 4f 53 20 20 20 20  20 20 20 20 20 20 20 20  |CMOS            |
0000fc90  20 20 20 20 20 20 20 20  20 30 78 30 34 31 38 63  |         0x0418c|
0000fca0  63 0a 23 64 65 66 69 6e  65 20 4c 61 73 65 72 5f  |c.#define Laser_|
0000fcb0  44 69 61 67 6e 6f 73 74  69 63 20 20 20 20 20 20  |Diagnostic      |
0000fcc0  20 20 20 20 20 20 20 20  20 30 78 30 34 31 38 63  |         0x0418c|
0000fcd0  64 0a 23 64 65 66 69 6e  65 20 50 44 75 6d 70 65  |d.#define PDumpe|
0000fce0  72 5f 49 6e 66 6f 20 20  20 20 20 20 20 20 20 20  |r_Info          |
0000fcf0  20 20 20 20 20 20 20 20  20 30 78 30 34 31 62 30  |         0x041b0|
0000fd00  30 0a 23 64 65 66 69 6e  65 20 50 44 75 6d 70 65  |0.#define PDumpe|
0000fd10  72 5f 43 6c 61 69 6d 20  20 20 20 20 20 20 20 20  |r_Claim         |
0000fd20  20 20 20 20 20 20 20 20  20 30 78 30 34 31 62 30  |         0x041b0|
0000fd30  31 0a 23 64 65 66 69 6e  65 20 50 44 75 6d 70 65  |1.#define PDumpe|
0000fd40  72 5f 46 72 65 65 20 20  20 20 20 20 20 20 20 20  |r_Free          |
0000fd50  20 20 20 20 20 20 20 20  20 30 78 30 34 31 62 30  |         0x041b0|
0000fd60  32 0a 23 64 65 66 69 6e  65 20 50 44 75 6d 70 65  |2.#define PDumpe|
0000fd70  72 5f 46 69 6e 64 20 20  20 20 20 20 20 20 20 20  |r_Find          |
0000fd80  20 20 20 20 20 20 20 20  20 30 78 30 34 31 62 30  |         0x041b0|
0000fd90  33 0a 23 64 65 66 69 6e  65 20 50 44 75 6d 70 65  |3.#define PDumpe|
0000fda0  72 5f 53 74 61 72 74 4a  6f 62 20 20 20 20 20 20  |r_StartJob      |
0000fdb0  20 20 20 20 20 20 20 20  20 30 78 30 34 31 62 30  |         0x041b0|
0000fdc0  34 0a 23 64 65 66 69 6e  65 20 50 44 75 6d 70 65  |4.#define PDumpe|
0000fdd0  72 5f 54 69 64 79 4a 6f  62 20 20 20 20 20 20 20  |r_TidyJob       |
0000fde0  20 20 20 20 20 20 20 20  20 30 78 30 34 31 62 30  |         0x041b0|
0000fdf0  35 0a 23 64 65 66 69 6e  65 20 50 44 75 6d 70 65  |5.#define PDumpe|
0000fe00  72 5f 53 65 74 43 6f 6c  6f 75 72 20 20 20 20 20  |r_SetColour     |
0000fe10  20 20 20 20 20 20 20 20  20 30 78 30 34 31 62 30  |         0x041b0|
0000fe20  36 0a 23 64 65 66 69 6e  65 20 50 44 75 6d 70 65  |6.#define PDumpe|
0000fe30  72 5f 50 72 65 70 61 72  65 53 74 72 69 70 20 20  |r_PrepareStrip  |
0000fe40  20 20 20 20 20 20 20 20  20 30 78 30 34 31 62 30  |         0x041b0|
0000fe50  37 0a 23 64 65 66 69 6e  65 20 50 44 75 6d 70 65  |7.#define PDumpe|
0000fe60  72 5f 4c 6f 6f 6b 75 70  45 72 72 6f 72 20 20 20  |r_LookupError   |
0000fe70  20 20 20 20 20 20 20 20  20 30 78 30 34 31 62 30  |         0x041b0|
0000fe80  38 0a 23 64 65 66 69 6e  65 20 50 44 75 6d 70 65  |8.#define PDumpe|
0000fe90  72 5f 43 6f 70 79 46 69  6c 65 6e 61 6d 65 20 20  |r_CopyFilename  |
0000fea0  20 20 20 20 20 20 20 20  20 30 78 30 34 31 62 30  |         0x041b0|
0000feb0  39 0a 23 64 65 66 69 6e  65 20 52 65 73 6f 75 72  |9.#define Resour|
0000fec0  63 65 46 53 5f 52 65 67  69 73 74 65 72 46 69 6c  |ceFS_RegisterFil|
0000fed0  65 73 20 20 20 20 20 20  20 30 78 30 34 31 62 34  |es       0x041b4|
0000fee0  30 0a 23 64 65 66 69 6e  65 20 52 65 73 6f 75 72  |0.#define Resour|
0000fef0  63 65 46 53 5f 44 65 72  65 67 69 73 74 65 72 46  |ceFS_DeregisterF|
0000ff00  69 6c 65 73 20 20 20 20  20 30 78 30 34 31 62 34  |iles     0x041b4|
0000ff10  31 0a 23 64 65 66 69 6e  65 20 44 72 61 67 41 53  |1.#define DragAS|
0000ff20  70 72 69 74 65 5f 53 74  61 72 74 20 20 20 20 20  |prite_Start     |
0000ff30  20 20 20 20 20 20 20 20  20 30 78 30 34 32 34 30  |         0x04240|
0000ff40  30 0a 23 64 65 66 69 6e  65 20 44 72 61 67 41 53  |0.#define DragAS|
0000ff50  70 72 69 74 65 5f 53 74  6f 70 20 20 20 20 20 20  |prite_Stop      |
0000ff60  20 20 20 20 20 20 20 20  20 30 78 30 34 32 34 30  |         0x04240|
0000ff70  31 0a 23 64 65 66 69 6e  65 20 44 44 45 55 74 69  |1.#define DDEUti|
0000ff80  6c 73 5f 50 72 65 66 69  78 20 20 20 20 20 20 20  |ls_Prefix       |
0000ff90  20 20 20 20 20 20 20 20  20 30 78 30 34 32 35 38  |         0x04258|
0000ffa0  30 0a 23 64 65 66 69 6e  65 20 44 44 45 55 74 69  |0.#define DDEUti|
0000ffb0  6c 73 5f 53 65 74 43 4c  53 69 7a 65 20 20 20 20  |ls_SetCLSize    |
0000ffc0  20 20 20 20 20 20 20 20  20 30 78 30 34 32 35 38  |         0x04258|
0000ffd0  31 0a 23 64 65 66 69 6e  65 20 44 44 45 55 74 69  |1.#define DDEUti|
0000ffe0  6c 73 5f 53 65 74 43 4c  20 20 20 20 20 20 20 20  |ls_SetCL        |
0000fff0  20 20 20 20 20 20 20 20  20 30 78 30 34 32 35 38  |         0x04258|
00010000  32 0a 23 64 65 66 69 6e  65 20 44 44 45 55 74 69  |2.#define DDEUti|
00010010  6c 73 5f 47 65 74 43 4c  53 69 7a 65 20 20 20 20  |ls_GetCLSize    |
00010020  20 20 20 20 20 20 20 20  20 30 78 30 34 32 35 38  |         0x04258|
00010030  33 0a 23 64 65 66 69 6e  65 20 44 44 45 55 74 69  |3.#define DDEUti|
00010040  6c 73 5f 47 65 74 43 6c  20 20 20 20 20 20 20 20  |ls_GetCl        |
00010050  20 20 20 20 20 20 20 20  20 30 78 30 34 32 35 38  |         0x04258|
00010060  34 0a 23 64 65 66 69 6e  65 20 44 44 45 55 74 69  |4.#define DDEUti|
00010070  6c 73 5f 54 68 72 6f 77  62 61 63 6b 52 65 67 69  |ls_ThrowbackRegi|
00010080  73 74 65 72 20 20 20 20  20 30 78 30 34 32 35 38  |ster     0x04258|
00010090  35 0a 23 64 65 66 69 6e  65 20 44 44 45 55 74 69  |5.#define DDEUti|
000100a0  6c 73 5f 54 68 72 6f 77  62 61 63 6b 55 6e 52 65  |ls_ThrowbackUnRe|
000100b0  67 69 73 74 65 72 20 20  20 30 78 30 34 32 35 38  |gister   0x04258|
000100c0  36 0a 23 64 65 66 69 6e  65 20 44 44 45 55 74 69  |6.#define DDEUti|
000100d0  6c 73 5f 54 68 72 6f 77  62 61 63 6b 53 74 61 72  |ls_ThrowbackStar|
000100e0  74 20 20 20 20 20 20 20  20 30 78 30 34 32 35 38  |t        0x04258|
000100f0  37 0a 23 64 65 66 69 6e  65 20 44 44 45 55 74 69  |7.#define DDEUti|
00010100  6c 73 5f 54 68 72 6f 77  62 61 63 6b 53 65 6e 64  |ls_ThrowbackSend|
00010110  20 20 20 20 20 20 20 20  20 30 78 30 34 32 35 38  |         0x04258|
00010120  38 0a 23 64 65 66 69 6e  65 20 44 44 45 55 74 69  |8.#define DDEUti|
00010130  6c 73 5f 54 68 72 6f 77  62 61 63 6b 45 6e 64 20  |ls_ThrowbackEnd |
00010140  20 20 20 20 20 20 20 20  20 30 78 30 34 32 35 38  |         0x04258|
00010150  39 0a 23 64 65 66 69 6e  65 20 46 69 6c 74 65 72  |9.#define Filter|
00010160  5f 52 65 67 69 73 74 65  72 50 72 65 46 69 6c 74  |_RegisterPreFilt|
00010170  65 72 20 20 20 20 20 20  20 30 78 30 34 32 36 34  |er       0x04264|
00010180  30 0a 23 64 65 66 69 6e  65 20 46 69 6c 74 65 72  |0.#define Filter|
00010190  5f 52 65 67 69 73 74 65  72 50 6f 73 74 46 69 6c  |_RegisterPostFil|
000101a0  74 65 72 20 20 20 20 20  20 30 78 30 34 32 36 34  |ter      0x04264|
000101b0  31 0a 23 64 65 66 69 6e  65 20 46 69 6c 74 65 72  |1.#define Filter|
000101c0  5f 44 65 52 65 67 69 73  74 65 72 50 72 65 46 69  |_DeRegisterPreFi|
000101d0  6c 74 65 72 20 20 20 20  20 30 78 30 34 32 36 34  |lter     0x04264|
000101e0  32 0a 23 64 65 66 69 6e  65 20 46 69 6c 74 65 72  |2.#define Filter|
000101f0  5f 44 65 52 65 67 69 73  74 65 72 50 6f 73 74 46  |_DeRegisterPostF|
00010200  69 6c 74 65 72 20 20 20  20 30 78 30 34 32 36 34  |ilter    0x04264|
00010210  33 0a 23 64 65 66 69 6e  65 20 54 61 73 6b 4d 61  |3.#define TaskMa|
00010220  6e 61 67 65 72 5f 54 61  73 6b 4e 61 6d 65 46 72  |nager_TaskNameFr|
00010230  6f 6d 48 61 6e 64 6c 65  20 30 78 30 34 32 36 38  |omHandle 0x04268|
00010240  30 0a 23 64 65 66 69 6e  65 20 54 61 73 6b 4d 61  |0.#define TaskMa|
00010250  6e 61 67 65 72 5f 45 6e  75 6d 65 72 61 74 65 54  |nager_EnumerateT|
00010260  61 73 6b 73 20 20 20 20  20 30 78 30 34 32 36 38  |asks     0x04268|
00010270  31 0a 23 64 65 66 69 6e  65 20 54 61 73 6b 4d 61  |1.#define TaskMa|
00010280  6e 61 67 65 72 5f 53 68  75 74 64 6f 77 6e 20 20  |nager_Shutdown  |
00010290  20 20 20 20 20 20 20 20  20 30 78 30 34 32 36 38  |         0x04268|
000102a0  32 0a 23 64 65 66 69 6e  65 20 53 71 75 61 73 68  |2.#define Squash|
000102b0  5f 43 6f 6d 70 72 65 73  73 20 20 20 20 20 20 20  |_Compress       |
000102c0  20 20 20 20 20 20 20 20  20 30 78 30 34 32 37 30  |         0x04270|
000102d0  30 0a 23 64 65 66 69 6e  65 20 53 71 75 61 73 68  |0.#define Squash|
000102e0  5f 44 65 63 6f 6d 70 72  65 73 73 20 20 20 20 20  |_Decompress     |
000102f0  20 20 20 20 20 20 20 20  20 30 78 30 34 32 37 30  |         0x04270|
00010300  31 0a 23 64 65 66 69 6e  65 20 44 65 76 69 63 65  |1.#define Device|
00010310  46 53 5f 52 65 67 69 73  74 65 72 20 20 20 20 20  |FS_Register     |
00010320  20 20 20 20 20 20 20 20  20 30 78 30 34 32 37 34  |         0x04274|
00010330  30 0a 23 64 65 66 69 6e  65 20 44 65 76 69 63 65  |0.#define Device|
00010340  46 53 5f 44 65 72 65 67  69 73 74 65 72 20 20 20  |FS_Deregister   |
00010350  20 20 20 20 20 20 20 20  20 30 78 30 34 32 37 34  |         0x04274|
00010360  31 0a 23 64 65 66 69 6e  65 20 44 65 76 69 63 65  |1.#define Device|
00010370  46 53 5f 52 65 67 69 73  74 65 72 4f 62 6a 65 63  |FS_RegisterObjec|
00010380  74 73 20 20 20 20 20 20  20 30 78 30 34 32 37 34  |ts       0x04274|
00010390  32 0a 23 64 65 66 69 6e  65 20 44 65 76 69 63 65  |2.#define Device|
000103a0  46 53 5f 44 65 72 65 67  69 73 74 65 72 4f 62 6a  |FS_DeregisterObj|
000103b0  65 63 74 73 20 20 20 20  20 30 78 30 34 32 37 34  |ects     0x04274|
000103c0  33 0a 23 64 65 66 69 6e  65 20 44 65 76 69 63 65  |3.#define Device|
000103d0  46 53 5f 43 61 6c 6c 44  65 76 69 63 65 20 20 20  |FS_CallDevice   |
000103e0  20 20 20 20 20 20 20 20  20 30 78 30 34 32 37 34  |         0x04274|
000103f0  34 0a 23 64 65 66 69 6e  65 20 44 65 76 69 63 65  |4.#define Device|
00010400  46 53 5f 54 68 72 65 73  68 6f 6c 64 20 20 20 20  |FS_Threshold    |
00010410  20 20 20 20 20 20 20 20  20 30 78 30 34 32 37 34  |         0x04274|
00010420  35 0a 23 64 65 66 69 6e  65 20 44 65 76 69 63 65  |5.#define Device|
00010430  46 53 5f 52 65 63 65 69  76 65 64 43 68 61 72 61  |FS_ReceivedChara|
00010440  63 74 65 72 20 20 20 20  20 30 78 30 34 32 37 34  |cter     0x04274|
00010450  36 0a 23 64 65 66 69 6e  65 20 44 65 76 69 63 65  |6.#define Device|
00010460  46 53 5f 54 72 61 6e 73  6d 69 74 43 68 61 72 61  |FS_TransmitChara|
00010470  63 74 65 72 20 20 20 20  20 30 78 30 34 32 37 34  |cter     0x04274|
00010480  37 0a 23 64 65 66 69 6e  65 20 42 75 66 66 65 72  |7.#define Buffer|
00010490  5f 43 72 65 61 74 65 20  20 20 20 20 20 20 20 20  |_Create         |
000104a0  20 20 20 20 20 20 20 20  20 30 78 30 34 32 39 34  |         0x04294|
000104b0  30 0a 23 64 65 66 69 6e  65 20 42 75 66 66 65 72  |0.#define Buffer|
000104c0  5f 52 65 6d 6f 76 65 20  20 20 20 20 20 20 20 20  |_Remove         |
000104d0  20 20 20 20 20 20 20 20  20 30 78 30 34 32 39 34  |         0x04294|
000104e0  31 0a 23 64 65 66 69 6e  65 20 42 75 66 66 65 72  |1.#define Buffer|
000104f0  5f 52 65 67 69 73 74 65  72 20 20 20 20 20 20 20  |_Register       |
00010500  20 20 20 20 20 20 20 20  20 30 78 30 34 32 39 34  |         0x04294|
00010510  32 0a 23 64 65 66 69 6e  65 20 42 75 66 66 65 72  |2.#define Buffer|
00010520  5f 44 65 72 65 67 69 73  74 65 72 20 20 20 20 20  |_Deregister     |
00010530  20 20 20 20 20 20 20 20  20 30 78 30 34 32 39 34  |         0x04294|
00010540  33 0a 23 64 65 66 69 6e  65 20 42 75 66 66 65 72  |3.#define Buffer|
00010550  5f 4d 6f 64 69 66 79 46  6c 61 67 73 20 20 20 20  |_ModifyFlags    |
00010560  20 20 20 20 20 20 20 20  20 30 78 30 34 32 39 34  |         0x04294|
00010570  34 0a 23 64 65 66 69 6e  65 20 42 75 66 66 65 72  |4.#define Buffer|
00010580  5f 4c 69 6e 6b 44 65 76  69 63 65 20 20 20 20 20  |_LinkDevice     |
00010590  20 20 20 20 20 20 20 20  20 30 78 30 34 32 39 34  |         0x04294|
000105a0  35 0a 23 64 65 66 69 6e  65 20 42 75 66 66 65 72  |5.#define Buffer|
000105b0  5f 55 6e 6c 69 6e 6b 44  65 76 69 63 65 20 20 20  |_UnlinkDevice   |
000105c0  20 20 20 20 20 20 20 20  20 30 78 30 34 32 39 34  |         0x04294|
000105d0  36 0a 23 64 65 66 69 6e  65 20 42 75 66 66 65 72  |6.#define Buffer|
000105e0  5f 47 65 74 49 6e 66 6f  20 20 20 20 20 20 20 20  |_GetInfo        |
000105f0  20 20 20 20 20 20 20 20  20 30 78 30 34 32 39 34  |         0x04294|
00010600  37 0a 23 64 65 66 69 6e  65 20 42 75 66 66 65 72  |7.#define Buffer|
00010610  5f 54 68 72 65 73 68 6f  6c 64 20 20 20 20 20 20  |_Threshold      |
00010620  20 20 20 20 20 20 20 20  20 30 78 30 34 32 39 34  |         0x04294|
00010630  38 0a 23 64 65 66 69 6e  65 20 42 41 53 49 43 54  |8.#define BASICT|
00010640  72 61 6e 73 5f 48 45 4c  50 20 20 20 20 20 20 20  |rans_HELP       |
00010650  20 20 20 20 20 20 20 20  20 30 78 30 34 32 63 38  |         0x042c8|
00010660  30 0a 23 64 65 66 69 6e  65 20 42 41 53 49 43 54  |0.#define BASICT|
00010670  72 61 6e 73 5f 45 72 72  6f 72 20 20 20 20 20 20  |rans_Error      |
00010680  20 20 20 20 20 20 20 20  20 30 78 30 34 32 63 38  |         0x042c8|
00010690  31 0a 23 64 65 66 69 6e  65 20 42 41 53 49 43 54  |1.#define BASICT|
000106a0  72 61 6e 73 5f 4d 65 73  73 61 67 65 20 20 20 20  |rans_Message    |
000106b0  20 20 20 20 20 20 20 20  20 30 78 30 34 32 63 38  |         0x042c8|
000106c0  32 0a 23 64 65 66 69 6e  65 20 50 61 72 61 6c 6c  |2.#define Parall|
000106d0  65 6c 5f 48 61 72 64 77  61 72 65 41 64 64 72 65  |el_HardwareAddre|
000106e0  73 73 20 20 20 20 20 20  20 30 78 30 34 32 65 63  |ss       0x042ec|
000106f0  30 0a 23 64 65 66 69 6e  65 20 50 61 72 61 6c 6c  |0.#define Parall|
00010700  65 6c 5f 4f 70 20 20 20  20 20 20 20 20 20 20 20  |el_Op           |
00010710  20 20 20 20 20 20 20 20  20 30 78 30 34 32 65 63  |         0x042ec|
00010720  31 0a 23 64 65 66 69 6e  65 20 54 65 72 72 69 74  |1.#define Territ|
00010730  6f 72 79 5f 4e 75 6d 62  65 72 20 20 20 20 20 20  |ory_Number      |
00010740  20 20 20 20 20 20 20 20  20 30 78 30 34 33 30 34  |         0x04304|
00010750  30 0a 23 64 65 66 69 6e  65 20 54 65 72 72 69 74  |0.#define Territ|
00010760  6f 72 79 5f 52 65 67 69  73 74 65 72 20 20 20 20  |ory_Register    |
00010770  20 20 20 20 20 20 20 20  20 30 78 30 34 33 30 34  |         0x04304|
00010780  31 0a 23 64 65 66 69 6e  65 20 54 65 72 72 69 74  |1.#define Territ|
00010790  6f 72 79 5f 44 65 72 65  67 69 73 74 65 72 20 20  |ory_Deregister  |
000107a0  20 20 20 20 20 20 20 20  20 30 78 30 34 33 30 34  |         0x04304|
000107b0  32 0a 23 64 65 66 69 6e  65 20 54 65 72 72 69 74  |2.#define Territ|
000107c0  6f 72 79 5f 4e 75 6d 62  65 72 54 6f 4e 61 6d 65  |ory_NumberToName|
000107d0  20 20 20 20 20 20 20 20  20 30 78 30 34 33 30 34  |         0x04304|
000107e0  33 0a 23 64 65 66 69 6e  65 20 54 65 72 72 69 74  |3.#define Territ|
000107f0  6f 72 79 5f 45 78 69 73  74 73 20 20 20 20 20 20  |ory_Exists      |
00010800  20 20 20 20 20 20 20 20  20 30 78 30 34 33 30 34  |         0x04304|
00010810  34 0a 23 64 65 66 69 6e  65 20 54 65 72 72 69 74  |4.#define Territ|
00010820  6f 72 79 5f 41 6c 70 68  61 62 65 74 4e 75 6d 62  |ory_AlphabetNumb|
00010830  65 72 54 6f 4e 61 6d 65  20 30 78 30 34 33 30 34  |erToName 0x04304|
00010840  35 0a 23 64 65 66 69 6e  65 20 54 65 72 72 69 74  |5.#define Territ|
00010850  6f 72 79 5f 53 65 6c 65  63 74 41 6c 70 68 61 62  |ory_SelectAlphab|
00010860  65 74 20 20 20 20 20 20  20 30 78 30 34 33 30 34  |et       0x04304|
00010870  36 0a 23 64 65 66 69 6e  65 20 54 65 72 72 69 74  |6.#define Territ|
00010880  6f 72 79 5f 53 65 74 54  69 6d 65 20 20 20 20 20  |ory_SetTime     |
00010890  20 20 20 20 20 20 20 20  20 30 78 30 34 33 30 34  |         0x04304|
000108a0  37 0a 23 64 65 66 69 6e  65 20 54 65 72 72 69 74  |7.#define Territ|
000108b0  6f 72 79 5f 52 65 61 64  43 75 72 72 65 6e 74 54  |ory_ReadCurrentT|
000108c0  69 6d 65 5a 6f 6e 65 20  20 30 78 30 34 33 30 34  |imeZone  0x04304|
000108d0  38 0a 23 64 65 66 69 6e  65 20 54 65 72 72 69 74  |8.#define Territ|
000108e0  6f 72 79 5f 43 6f 6e 76  65 72 74 54 69 6d 65 54  |ory_ConvertTimeT|
000108f0  6f 55 54 43 4f 72 64 69  6e 61 6c 73 20 30 78 30  |oUTCOrdinals 0x0|
00010900  34 33 30 34 39 0a 23 64  65 66 69 6e 65 20 54 65  |43049.#define Te|
00010910  72 72 69 74 6f 72 79 5f  52 65 61 64 54 69 6d 65  |rritory_ReadTime|
00010920  5a 6f 6e 65 73 20 20 20  20 20 20 20 20 30 78 30  |Zones        0x0|
00010930  34 33 30 34 61 0a 23 64  65 66 69 6e 65 20 54 65  |4304a.#define Te|
00010940  72 72 69 74 6f 72 79 5f  43 6f 6e 76 65 72 74 44  |rritory_ConvertD|
00010950  61 74 65 41 6e 64 54 69  6d 65 20 20 20 30 78 30  |ateAndTime   0x0|
00010960  34 33 30 34 62 0a 23 64  65 66 69 6e 65 20 54 65  |4304b.#define Te|
00010970  72 72 69 74 6f 72 79 5f  43 6f 6e 76 65 72 74 53  |rritory_ConvertS|
00010980  74 61 6e 64 61 72 64 44  61 74 65 41 6e 64 54 69  |tandardDateAndTi|
00010990  6d 65 20 30 78 30 34 33  30 34 63 0a 23 64 65 66  |me 0x04304c.#def|
000109a0  69 6e 65 20 54 65 72 72  69 74 6f 72 79 5f 43 6f  |ine Territory_Co|
000109b0  6e 76 65 72 74 53 74 61  6e 64 61 72 64 44 61 74  |nvertStandardDat|
000109c0  65 20 20 30 78 30 34 33  30 34 64 0a 23 64 65 66  |e  0x04304d.#def|
000109d0  69 6e 65 20 54 65 72 72  69 74 6f 72 79 5f 43 6f  |ine Territory_Co|
000109e0  6e 76 65 72 74 53 74 61  6e 64 61 72 64 54 69 6d  |nvertStandardTim|
000109f0  65 20 20 30 78 30 34 33  30 34 65 0a 23 64 65 66  |e  0x04304e.#def|
00010a00  69 6e 65 20 54 65 72 72  69 74 6f 72 79 5f 43 6f  |ine Territory_Co|
00010a10  6e 76 65 72 74 54 69 6d  65 54 6f 4f 72 64 69 6e  |nvertTimeToOrdin|
00010a20  61 6c 73 20 30 78 30 34  33 30 34 66 0a 23 64 65  |als 0x04304f.#de|
00010a30  66 69 6e 65 20 54 65 72  72 69 74 6f 72 79 5f 43  |fine Territory_C|
00010a40  6f 6e 76 65 72 74 54 69  6d 65 53 74 72 69 6e 67  |onvertTimeString|
00010a50  54 6f 4f 72 64 69 6e 61  6c 73 20 30 78 30 34 33  |ToOrdinals 0x043|
00010a60  30 35 30 0a 23 64 65 66  69 6e 65 20 54 65 72 72  |050.#define Terr|
00010a70  69 74 6f 72 79 5f 43 6f  6e 76 65 72 74 4f 72 64  |itory_ConvertOrd|
00010a80  69 6e 61 6c 73 54 6f 54  69 6d 65 20 30 78 30 34  |inalsToTime 0x04|
00010a90  33 30 35 31 0a 23 64 65  66 69 6e 65 20 54 65 72  |3051.#define Ter|
00010aa0  72 69 74 6f 72 79 5f 41  6c 70 68 61 62 65 74 20  |ritory_Alphabet |
00010ab0  20 20 20 20 20 20 20 20  20 20 20 20 30 78 30 34  |            0x04|
00010ac0  33 30 35 32 0a 23 64 65  66 69 6e 65 20 54 65 72  |3052.#define Ter|
00010ad0  72 69 74 6f 72 79 5f 41  6c 70 68 61 62 65 74 49  |ritory_AlphabetI|
00010ae0  64 65 6e 74 69 66 69 65  72 20 20 20 30 78 30 34  |dentifier   0x04|
00010af0  33 30 35 33 0a 23 64 65  66 69 6e 65 20 54 65 72  |3053.#define Ter|
00010b00  72 69 74 6f 72 79 5f 53  65 6c 65 63 74 4b 65 79  |ritory_SelectKey|
00010b10  62 6f 61 72 64 48 61 6e  64 6c 65 72 20 30 78 30  |boardHandler 0x0|
00010b20  34 33 30 35 34 0a 23 64  65 66 69 6e 65 20 54 65  |43054.#define Te|
00010b30  72 72 69 74 6f 72 79 5f  57 72 69 74 65 44 69 72  |rritory_WriteDir|
00010b40  65 63 74 69 6f 6e 20 20  20 20 20 20 20 30 78 30  |ection       0x0|
00010b50  34 33 30 35 35 0a 23 64  65 66 69 6e 65 20 54 65  |43055.#define Te|
00010b60  72 72 69 74 6f 72 79 5f  43 68 61 72 61 63 74 65  |rritory_Characte|
00010b70  72 50 72 6f 70 65 72 74  79 54 61 62 6c 65 20 30  |rPropertyTable 0|
00010b80  78 30 34 33 30 35 36 0a  23 64 65 66 69 6e 65 20  |x043056.#define |
00010b90  54 65 72 72 69 74 6f 72  79 5f 4c 6f 77 65 72 43  |Territory_LowerC|
00010ba0  61 73 65 54 61 62 6c 65  20 20 20 20 20 20 20 30  |aseTable       0|
00010bb0  78 30 34 33 30 35 37 0a  23 64 65 66 69 6e 65 20  |x043057.#define |
00010bc0  54 65 72 72 69 74 6f 72  79 5f 55 70 70 65 72 43  |Territory_UpperC|
00010bd0  61 73 65 54 61 62 6c 65  20 20 20 20 20 20 20 30  |aseTable       0|
00010be0  78 30 34 33 30 35 38 0a  23 64 65 66 69 6e 65 20  |x043058.#define |
00010bf0  54 65 72 72 69 74 6f 72  79 5f 43 6f 6e 74 72 6f  |Territory_Contro|
00010c00  6c 54 61 62 6c 65 20 20  20 20 20 20 20 20 20 30  |lTable         0|
00010c10  78 30 34 33 30 35 39 0a  23 64 65 66 69 6e 65 20  |x043059.#define |
00010c20  54 65 72 72 69 74 6f 72  79 5f 50 6c 61 69 6e 54  |Territory_PlainT|
00010c30  61 62 6c 65 20 20 20 20  20 20 20 20 20 20 20 30  |able           0|
00010c40  78 30 34 33 30 35 61 0a  23 64 65 66 69 6e 65 20  |x04305a.#define |
00010c50  54 65 72 72 69 74 6f 72  79 5f 56 61 6c 75 65 54  |Territory_ValueT|
00010c60  61 62 6c 65 20 20 20 20  20 20 20 20 20 20 20 30  |able           0|
00010c70  78 30 34 33 30 35 62 0a  23 64 65 66 69 6e 65 20  |x04305b.#define |
00010c80  54 65 72 72 69 74 6f 72  79 5f 52 65 70 72 65 73  |Territory_Repres|
00010c90  65 6e 74 61 74 69 6f 6e  54 61 62 6c 65 20 20 30  |entationTable  0|
00010ca0  78 30 34 33 30 35 63 0a  23 64 65 66 69 6e 65 20  |x04305c.#define |
00010cb0  54 65 72 72 69 74 6f 72  79 5f 43 6f 6c 6c 61 74  |Territory_Collat|
00010cc0  65 20 20 20 20 20 20 20  20 20 20 20 20 20 20 30  |e              0|
00010cd0  78 30 34 33 30 35 64 0a  23 64 65 66 69 6e 65 20  |x04305d.#define |
00010ce0  54 65 72 72 69 74 6f 72  79 5f 52 65 61 64 53 79  |Territory_ReadSy|
00010cf0  6d 62 6f 6c 73 20 20 20  20 20 20 20 20 20 20 30  |mbols          0|
00010d00  78 30 34 33 30 35 65 0a  23 64 65 66 69 6e 65 20  |x04305e.#define |
00010d10  54 65 72 72 69 74 6f 72  79 5f 52 65 61 64 43 61  |Territory_ReadCa|
00010d20  6c 65 6e 64 61 72 49 6e  66 6f 72 6d 61 74 69 6f  |lendarInformatio|
00010d30  6e 20 30 78 30 34 33 30  35 66 0a 23 64 65 66 69  |n 0x04305f.#defi|
00010d40  6e 65 20 54 65 72 72 69  74 6f 72 79 5f 4e 61 6d  |ne Territory_Nam|
00010d50  65 54 6f 4e 75 6d 62 65  72 20 20 20 20 20 20 20  |eToNumber       |
00010d60  20 20 30 78 30 34 33 30  36 30 0a 23 64 65 66 69  |  0x043060.#defi|
00010d70  6e 65 20 54 65 72 72 69  74 6f 72 79 5f 54 72 61  |ne Territory_Tra|
00010d80  6e 73 66 6f 72 6d 53 74  72 69 6e 67 20 20 20 20  |nsformString    |
00010d90  20 20 30 78 30 34 33 30  36 31 0a 23 64 65 66 69  |  0x043061.#defi|
00010da0  6e 65 20 54 65 72 72 69  74 6f 72 79 5f 52 65 73  |ne Territory_Res|
00010db0  65 72 76 65 64 31 20 20  20 20 20 20 20 20 20 20  |erved1          |
00010dc0  20 20 30 78 30 34 33 30  36 32 0a 23 64 65 66 69  |  0x043062.#defi|
00010dd0  6e 65 20 54 65 72 72 69  74 6f 72 79 5f 52 65 73  |ne Territory_Res|
00010de0  65 72 76 65 64 32 20 20  20 20 20 20 20 20 20 20  |erved2          |
00010df0  20 20 30 78 30 34 33 30  36 33 0a 23 64 65 66 69  |  0x043063.#defi|
00010e00  6e 65 20 54 65 72 72 69  74 6f 72 79 5f 52 65 73  |ne Territory_Res|
00010e10  65 72 76 65 64 33 20 20  20 20 20 20 20 20 20 20  |erved3          |
00010e20  20 20 30 78 30 34 33 30  36 34 0a 23 64 65 66 69  |  0x043064.#defi|
00010e30  6e 65 20 54 65 72 72 69  74 6f 72 79 5f 52 65 73  |ne Territory_Res|
00010e40  65 72 76 65 64 34 20 20  20 20 20 20 20 20 20 20  |erved4          |
00010e50  20 20 30 78 30 34 33 30  36 35 0a 23 64 65 66 69  |  0x043065.#defi|
00010e60  6e 65 20 54 65 72 72 69  74 6f 72 79 5f 52 65 73  |ne Territory_Res|
00010e70  65 72 76 65 64 35 20 20  20 20 20 20 20 20 20 20  |erved5          |
00010e80  20 20 30 78 30 34 33 30  36 36 0a 23 64 65 66 69  |  0x043066.#defi|
00010e90  6e 65 20 54 65 72 72 69  74 6f 72 79 5f 52 65 73  |ne Territory_Res|
00010ea0  65 72 76 65 64 36 20 20  20 20 20 20 20 20 20 20  |erved6          |
00010eb0  20 20 30 78 30 34 33 30  36 37 0a 23 64 65 66 69  |  0x043067.#defi|
00010ec0  6e 65 20 54 65 72 72 69  74 6f 72 79 5f 52 65 73  |ne Territory_Res|
00010ed0  65 72 76 65 64 37 20 20  20 20 20 20 20 20 20 20  |erved7          |
00010ee0  20 20 30 78 30 34 33 30  36 38 0a 23 64 65 66 69  |  0x043068.#defi|
00010ef0  6e 65 20 54 65 72 72 69  74 6f 72 79 5f 52 65 73  |ne Territory_Res|
00010f00  65 72 76 65 64 38 20 20  20 20 20 20 20 20 20 20  |erved8          |
00010f10  20 20 30 78 30 34 33 30  36 39 0a 23 64 65 66 69  |  0x043069.#defi|
00010f20  6e 65 20 54 65 72 72 69  74 6f 72 79 5f 52 65 73  |ne Territory_Res|
00010f30  65 72 76 65 64 39 20 20  20 20 20 20 20 20 20 20  |erved9          |
00010f40  20 20 30 78 30 34 33 30  36 61 0a 23 64 65 66 69  |  0x04306a.#defi|
00010f50  6e 65 20 54 65 72 72 69  74 6f 72 79 5f 52 65 73  |ne Territory_Res|
00010f60  65 72 76 65 64 31 30 20  20 20 20 20 20 20 20 20  |erved10         |
00010f70  20 20 30 78 30 34 33 30  36 62 0a 23 64 65 66 69  |  0x04306b.#defi|
00010f80  6e 65 20 54 65 72 72 69  74 6f 72 79 5f 52 65 73  |ne Territory_Res|
00010f90  65 72 76 65 64 31 31 20  20 20 20 20 20 20 20 20  |erved11         |
00010fa0  20 20 30 78 30 34 33 30  36 63 0a 23 64 65 66 69  |  0x04306c.#defi|
00010fb0  6e 65 20 54 65 72 72 69  74 6f 72 79 5f 52 65 73  |ne Territory_Res|
00010fc0  65 72 76 65 64 31 32 20  20 20 20 20 20 20 20 20  |erved12         |
00010fd0  20 20 30 78 30 34 33 30  36 64 0a 23 64 65 66 69  |  0x04306d.#defi|
00010fe0  6e 65 20 54 65 72 72 69  74 6f 72 79 5f 52 65 73  |ne Territory_Res|
00010ff0  65 72 76 65 64 31 33 20  20 20 20 20 20 20 20 20  |erved13         |
00011000  20 20 30 78 30 34 33 30  36 65 0a 23 64 65 66 69  |  0x04306e.#defi|
00011010  6e 65 20 54 65 72 72 69  74 6f 72 79 5f 52 65 73  |ne Territory_Res|
00011020  65 72 76 65 64 31 34 20  20 20 20 20 20 20 20 20  |erved14         |
00011030  20 20 30 78 30 34 33 30  36 66 0a 23 64 65 66 69  |  0x04306f.#defi|
00011040  6e 65 20 54 65 72 72 69  74 6f 72 79 5f 52 65 73  |ne Territory_Res|
00011050  65 72 76 65 64 31 35 20  20 20 20 20 20 20 20 20  |erved15         |
00011060  20 20 30 78 30 34 33 30  37 30 0a 23 64 65 66 69  |  0x043070.#defi|
00011070  6e 65 20 54 65 72 72 69  74 6f 72 79 5f 52 65 73  |ne Territory_Res|
00011080  65 72 76 65 64 31 36 20  20 20 20 20 20 20 20 20  |erved16         |
00011090  20 20 30 78 30 34 33 30  37 31 0a 23 64 65 66 69  |  0x043071.#defi|
000110a0  6e 65 20 54 65 72 72 69  74 6f 72 79 5f 52 65 73  |ne Territory_Res|
000110b0  65 72 76 65 64 31 37 20  20 20 20 20 20 20 20 20  |erved17         |
000110c0  20 20 30 78 30 34 33 30  37 32 0a 23 64 65 66 69  |  0x043072.#defi|
000110d0  6e 65 20 54 65 72 72 69  74 6f 72 79 5f 52 65 73  |ne Territory_Res|
000110e0  65 72 76 65 64 31 38 20  20 20 20 20 20 20 20 20  |erved18         |
000110f0  20 20 30 78 30 34 33 30  37 33 0a 23 64 65 66 69  |  0x043073.#defi|
00011100  6e 65 20 54 65 72 72 69  74 6f 72 79 5f 52 65 73  |ne Territory_Res|
00011110  65 72 76 65 64 31 39 20  20 20 20 20 20 20 20 20  |erved19         |
00011120  20 20 30 78 30 34 33 30  37 34 0a 23 64 65 66 69  |  0x043074.#defi|
00011130  6e 65 20 54 65 72 72 69  74 6f 72 79 5f 43 6f 6e  |ne Territory_Con|
00011140  76 65 72 74 54 65 78 74  54 6f 53 74 72 69 6e 67  |vertTextToString|
00011150  20 20 30 78 30 34 33 30  37 35 0a 23 64 65 66 69  |  0x043075.#defi|
00011160  6e 65 20 53 63 72 65 65  6e 42 6c 61 6e 6b 65 72  |ne ScreenBlanker|
00011170  5f 43 6f 6e 74 72 6f 6c  20 20 20 20 20 20 20 20  |_Control        |
00011180  20 20 30 78 30 34 33 31  30 30 0a 23 64 65 66 69  |  0x043100.#defi|
00011190  6e 65 20 54 61 73 6b 57  69 6e 64 6f 77 5f 54 61  |ne TaskWindow_Ta|
000111a0  73 6b 49 6e 66 6f 20 20  20 20 20 20 20 20 20 20  |skInfo          |
000111b0  20 20 30 78 30 34 33 33  38 30 0a 23 64 65 66 69  |  0x043380.#defi|
000111c0  6e 65 20 53 63 61 6e 4d  61 6e 5f 52 65 73 65 74  |ne ScanMan_Reset|
000111d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000111e0  20 20 30 78 30 34 33 37  38 30 0a 23 64 65 66 69  |  0x043780.#defi|
000111f0  6e 65 20 53 63 61 6e 4d  61 6e 5f 43 6c 61 69 6d  |ne ScanMan_Claim|
00011200  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00011210  20 20 30 78 30 34 33 37  38 31 0a 23 64 65 66 69  |  0x043781.#defi|
00011220  6e 65 20 53 63 61 6e 4d  61 6e 5f 46 65 65 64 65  |ne ScanMan_Feede|
00011230  72 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |r               |
00011240  20 20 30 78 30 34 33 37  38 32 0a 23 64 65 66 69  |  0x043782.#defi|
00011250  6e 65 20 53 63 61 6e 4d  61 6e 5f 4d 6f 64 65 73  |ne ScanMan_Modes|
00011260  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00011270  20 20 30 78 30 34 33 37  38 33 0a 23 64 65 66 69  |  0x043783.#defi|
00011280  6e 65 20 53 63 61 6e 4d  61 6e 5f 50 6f 6c 6c 20  |ne ScanMan_Poll |
00011290  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000112a0  20 20 30 78 30 34 33 37  38 34 0a 23 64 65 66 69  |  0x043784.#defi|
000112b0  6e 65 20 53 63 61 6e 4d  61 6e 5f 52 65 6c 65 61  |ne ScanMan_Relea|
000112c0  73 65 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |se              |
000112d0  20 20 30 78 30 34 33 37  38 35 0a 23 64 65 66 69  |  0x043785.#defi|
000112e0  6e 65 20 53 63 61 6e 4d  61 6e 5f 41 62 6f 72 74  |ne ScanMan_Abort|
000112f0  53 63 61 6e 20 20 20 20  20 20 20 20 20 20 20 20  |Scan            |
00011300  20 20 30 78 30 34 33 37  38 36 0a 23 64 65 66 69  |  0x043786.#defi|
00011310  6e 65 20 53 63 61 6e 4d  61 6e 5f 52 65 73 6f 6c  |ne ScanMan_Resol|
00011320  75 74 69 6f 6e 20 20 20  20 20 20 20 20 20 20 20  |ution           |
00011330  20 20 30 78 30 34 33 37  38 37 0a 23 64 65 66 69  |  0x043787.#defi|
00011340  6e 65 20 53 63 61 6e 4d  61 6e 5f 53 69 7a 65 20  |ne ScanMan_Size |
00011350  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00011360  20 20 30 78 30 34 33 37  38 38 0a 23 64 65 66 69  |  0x043788.#defi|
00011370  6e 65 20 53 63 61 6e 4d  61 6e 5f 53 63 61 6e 6e  |ne ScanMan_Scann|
00011380  65 72 73 20 20 20 20 20  20 20 20 20 20 20 20 20  |ers             |
00011390  20 20 30 78 30 34 33 37  38 39 0a 23 64 65 66 69  |  0x043789.#defi|
000113a0  6e 65 20 53 63 61 6e 4d  61 6e 5f 53 74 61 72 74  |ne ScanMan_Start|
000113b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000113c0  20 20 30 78 30 34 33 37  38 61 0a 23 64 65 66 69  |  0x04378a.#defi|
000113d0  6e 65 20 53 63 61 6e 4d  61 6e 5f 53 74 6f 70 20  |ne ScanMan_Stop |
000113e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000113f0  20 20 30 78 30 34 33 37  38 62 0a 23 64 65 66 69  |  0x04378b.#defi|
00011400  6e 65 20 46 72 65 65 5f  52 65 67 69 73 74 65 72  |ne Free_Register|
00011410  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00011420  20 20 30 78 30 34 34 34  63 30 0a 23 64 65 66 69  |  0x0444c0.#defi|
00011430  6e 65 20 46 72 65 65 5f  44 65 52 65 67 69 73 74  |ne Free_DeRegist|
00011440  65 72 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |er              |
00011450  20 20 30 78 30 34 34 34  63 31 0a 23 64 65 66 69  |  0x0444c1.#defi|
00011460  6e 65 20 44 4f 53 46 53  5f 44 69 73 63 46 6f 72  |ne DOSFS_DiscFor|
00011470  6d 61 74 20 20 20 20 20  20 20 20 20 20 20 20 20  |mat             |
00011480  20 20 30 78 30 34 34 62  30 30 0a 23 64 65 66 69  |  0x044b00.#defi|
00011490  6e 65 20 44 4f 53 46 53  5f 4c 61 79 6f 75 74 53  |ne DOSFS_LayoutS|
000114a0  74 72 75 63 74 75 72 65  20 20 20 20 20 20 20 20  |tructure        |
000114b0  20 20 30 78 30 34 34 62  30 31 0a 0a 23 65 6e 64  |  0x044b01..#end|
000114c0  69 66 0a 1a 80 1a 82 4d  61 6b 65 66 69 6c 65 00  |if.....Makefile.|
000114d0  00 00 00 00 4b 04 00 00  a2 20 61 10 98 1b 4b 04  |....K.... a...K.|
000114e0  00 00 46 e1 ff ff c7 b9  c2 c7 03 00 00 00 23 20  |..F...........# |
000114f0  50 72 6f 6a 65 63 74 3a  20 20 20 43 68 61 6f 73  |Project:   Chaos|
00011500  0a 0a 0a 23 20 54 6f 6f  6c 66 6c 61 67 73 3a 0a  |...# Toolflags:.|
00011510  43 43 66 6c 61 67 73 20  3d 20 2d 63 20 2d 64 65  |CCflags = -c -de|
00011520  70 65 6e 64 20 21 44 65  70 65 6e 64 20 2d 74 68  |pend !Depend -th|
00011530  72 6f 77 62 61 63 6b 20  2d 49 43 3a 0a 4c 69 6e  |rowback -IC:.Lin|
00011540  6b 66 6c 61 67 73 20 3d  20 2d 6f 20 24 40 0a 4f  |kflags = -o $@.O|
00011550  62 6a 41 73 6d 66 6c 61  67 73 20 3d 20 2d 64 65  |bjAsmflags = -de|
00011560  70 65 6e 64 20 21 44 65  70 65 6e 64 20 2d 54 68  |pend !Depend -Th|
00011570  72 6f 77 42 61 63 6b 20  2d 53 74 61 6d 70 20 2d  |rowBack -Stamp -|
00011580  71 75 69 74 20 2d 43 6c  6f 73 65 45 78 65 63 0a  |quit -CloseExec.|
00011590  43 4d 48 47 66 6c 61 67  73 20 3d 20 0a 4c 69 62  |CMHGflags = .Lib|
000115a0  46 69 6c 65 66 6c 61 67  73 20 3d 20 2d 63 20 2d  |Fileflags = -c -|
000115b0  6f 20 24 40 0a 53 71 75  65 65 7a 65 66 6c 61 67  |o $@.Squeezeflag|
000115c0  73 20 3d 20 2d 6f 20 24  40 0a 41 41 73 6d 66 6c  |s = -o $@.AAsmfl|
000115d0  61 67 73 20 3d 20 2d 64  65 70 65 6e 64 20 21 44  |ags = -depend !D|
000115e0  65 70 65 6e 64 20 2d 71  75 69 74 20 2d 43 6c 6f  |epend -quit -Clo|
000115f0  73 65 45 78 65 63 20 2d  54 6f 20 24 40 20 2d 46  |seExec -To $@ -F|
00011600  72 6f 6d 0a 0a 0a 23 20  46 69 6e 61 6c 20 74 61  |rom...# Final ta|
00011610  72 67 65 74 73 3a 0a 40  2e 44 65 6d 6f 33 3a 20  |rgets:.@.Demo3: |
00011620  20 20 40 2e 5e 2e 5e 2e  5e 2e 5e 2e 43 6c 69 62  |  @.^.^.^.^.Clib|
00011630  2e 6f 2e 53 74 75 62 73  20 40 2e 5e 2e 5e 2e 5e  |.o.Stubs @.^.^.^|
00011640  2e 5e 2e 52 49 53 43 5f  4f 53 4c 69 62 2e 6f 2e  |.^.RISC_OSLib.o.|
00011650  52 49 53 43 5f 4f 53 6c  69 62 20 40 2e 6f 2e 6d  |RISC_OSlib @.o.m|
00011660  61 69 6e 20 5c 0a 20 20  20 20 20 20 20 20 40 2e  |ain \.        @.|
00011670  6f 2e 6d 61 69 6e 5f 61  73 73 65 20 0a 20 20 20  |o.main_asse .   |
00011680  20 20 20 20 20 4c 69 6e  6b 20 24 28 4c 69 6e 6b  |     Link $(Link|
00011690  66 6c 61 67 73 29 20 40  2e 5e 2e 5e 2e 5e 2e 5e  |flags) @.^.^.^.^|
000116a0  2e 43 6c 69 62 2e 6f 2e  53 74 75 62 73 20 5c 0a  |.Clib.o.Stubs \.|
000116b0  20 20 20 20 20 20 20 20  40 2e 5e 2e 5e 2e 5e 2e  |        @.^.^.^.|
000116c0  5e 2e 52 49 53 43 5f 4f  53 4c 69 62 2e 6f 2e 52  |^.RISC_OSLib.o.R|
000116d0  49 53 43 5f 4f 53 6c 69  62 20 40 2e 6f 2e 6d 61  |ISC_OSlib @.o.ma|
000116e0  69 6e 20 40 2e 6f 2e 6d  61 69 6e 5f 61 73 73 65  |in @.o.main_asse|
000116f0  20 0a 0a 0a 23 20 55 73  65 72 2d 65 64 69 74 61  | ...# User-edita|
00011700  62 6c 65 20 64 65 70 65  6e 64 65 6e 63 69 65 73  |ble dependencies|
00011710  3a 0a 0a 23 20 53 74 61  74 69 63 20 64 65 70 65  |:..# Static depe|
00011720  6e 64 65 6e 63 69 65 73  3a 0a 40 2e 6f 2e 6d 61  |ndencies:.@.o.ma|
00011730  69 6e 3a 20 20 20 40 2e  63 2e 6d 61 69 6e 0a 20  |in:   @.c.main. |
00011740  20 20 20 20 20 20 20 63  63 20 24 28 63 63 66 6c  |       cc $(ccfl|
00011750  61 67 73 29 20 2d 6f 20  40 2e 6f 2e 6d 61 69 6e  |ags) -o @.o.main|
00011760  20 40 2e 63 2e 6d 61 69  6e 20 0a 40 2e 6f 2e 6d  | @.c.main .@.o.m|
00011770  61 69 6e 5f 61 73 73 65  3a 20 20 20 40 2e 73 2e  |ain_asse:   @.s.|
00011780  6d 61 69 6e 5f 61 73 73  65 0a 20 20 20 20 20 20  |main_asse.      |
00011790  20 20 6f 62 6a 61 73 6d  20 24 28 6f 62 6a 61 73  |  objasm $(objas|
000117a0  6d 66 6c 61 67 73 29 20  2d 66 72 6f 6d 20 40 2e  |mflags) -from @.|
000117b0  73 2e 6d 61 69 6e 5f 61  73 73 65 20 2d 74 6f 20  |s.main_asse -to |
000117c0  40 2e 6f 2e 6d 61 69 6e  5f 61 73 73 65 0a 0a 0a  |@.o.main_asse...|
000117d0  23 20 44 79 6e 61 6d 69  63 20 64 65 70 65 6e 64  |# Dynamic depend|
000117e0  65 6e 63 69 65 73 3a 0a  40 2e 6f 2e 6d 61 69 6e  |encies:.@.o.main|
000117f0  5f 61 73 73 65 3a 20 68  2e 52 65 67 4e 61 6d 65  |_asse: h.RegName|
00011800  73 0a 40 2e 6f 2e 6d 61  69 6e 5f 61 73 73 65 3a  |s.@.o.main_asse:|
00011810  20 68 2e 53 57 49 6e 61  6d 65 73 0a 40 2e 6f 2e  | h.SWInames.@.o.|
00011820  6d 61 69 6e 5f 61 73 73  65 3a 20 73 2e 6d 61 63  |main_asse: s.mac|
00011830  72 6f 73 31 0a 40 2e 6f  2e 6d 61 69 6e 5f 61 73  |ros1.@.o.main_as|
00011840  73 65 3a 20 73 2e 73 75  62 72 6f 75 74 73 31 0a  |se: s.subrouts1.|
00011850  40 2e 6f 2e 6d 61 69 6e  5f 61 73 73 65 3a 20 73  |@.o.main_asse: s|
00011860  2e 67 65 6e 65 72 61 74  6f 72 63 0a 40 2e 6f 2e  |.generatorc.@.o.|
00011870  6d 61 69 6e 5f 61 73 73  65 3a 20 73 2e 73 6f 75  |main_asse: s.sou|
00011880  6e 64 0a 6f 2e 6d 61 69  6e 3a 09 63 2e 6d 61 69  |nd.o.main:.c.mai|
00011890  6e 0a 6f 2e 6d 61 69 6e  3a 09 43 3a 68 2e 74 72  |n.o.main:.C:h.tr|
000118a0  61 63 65 0a 6f 2e 6d 61  69 6e 3a 09 43 3a 68 2e  |ace.o.main:.C:h.|
000118b0  77 69 6d 70 74 0a 6f 2e  6d 61 69 6e 3a 09 43 3a  |wimpt.o.main:.C:|
000118c0  68 2e 77 69 6d 70 0a 6f  2e 6d 61 69 6e 3a 09 43  |h.wimp.o.main:.C|
000118d0  3a 68 2e 6f 73 0a 6f 2e  6d 61 69 6e 3a 09 43 3a  |:h.os.o.main:.C:|
000118e0  68 2e 73 70 72 69 74 65  0a 6f 2e 6d 61 69 6e 3a  |h.sprite.o.main:|
000118f0  09 43 3a 68 2e 77 65 72  72 0a 6f 2e 6d 61 69 6e  |.C:h.werr.o.main|
00011900  3a 09 43 3a 68 2e 62 62  63 0a 6f 2e 6d 61 69 6e  |:.C:h.bbc.o.main|
00011910  3a 09 43 3a 68 2e 6f 73  0a 6f 2e 6d 61 69 6e 3a  |:.C:h.os.o.main:|
00011920  09 43 3a 68 2e 61 6b 62  64 0a 6f 2e 6d 61 69 6e  |.C:h.akbd.o.main|
00011930  3a 09 68 2e 73 77 69 73  0a 1a 82 6f 00 00 00 00  |:.h.swis...o....|
00011940  00 00 00 00 00 00 00 00  e8 4b 00 00 a8 20 76 6a  |.........K... vj|
00011950  00 00 e8 4b 00 00 46 dc  fd ff 6a b2 17 cb 00 00  |...K..F...j.....|
00011960  00 00 1a 82 6d 61 69 6e  00 00 00 00 00 00 00 00  |....main........|
00011970  00 78 1a 00 00 a2 20 5d  10 ad d9 78 1a 00 00 46  |.x.... ]...x...F|
00011980  fd ff ff 60 b8 c2 c7 03  00 00 00 c5 c6 cb c3 05  |...`............|
00011990  00 00 00 05 00 00 00 4f  42 4a 5f 48 45 41 44 24  |.......OBJ_HEAD$|
000119a0  1a 00 00 54 00 00 00 4f  42 4a 5f 41 52 45 41 5c  |...T...OBJ_AREA\|
000119b0  00 00 00 dc 13 00 00 4f  42 4a 5f 49 44 46 4e 38  |.......OBJ_IDFN8|
000119c0  14 00 00 30 00 00 00 4f  42 4a 5f 53 59 4d 54 68  |...0...OBJ_SYMTh|
000119d0  14 00 00 80 03 00 00 4f  42 4a 5f 53 54 52 54 e8  |.......OBJ_STRT.|
000119e0  17 00 00 3c 02 00 00 00  00 00 ea 72 65 61 64 5f  |...<.......read_|
000119f0  6d 6f 6e 69 74 6f 72 5f  74 79 70 65 00 00 00 14  |monitor_type....|
00011a00  00 00 ff 0d c0 a0 e1 00  d8 2d e9 04 b0 4c e2 0a  |.........-...L..|
00011a10  00 5d e1 00 00 00 bb 04  d0 4d e2 0d 30 a0 e1 00  |.].......M..0...|
00011a20  20 a0 e3 00 10 a0 e3 0e  00 2d e9 00 30 a0 e3 85  | ........-..0...|
00011a30  20 a0 e3 a1 10 a0 e3 06  00 a0 e3 00 00 00 eb 0c  | ...............|
00011a40  00 bd e5 00 00 50 e3 03  00 80 d2 40 01 a0 e1 03  |.....P.....@....|
00011a50  00 00 e2 01 00 50 e3 01  00 a0 13 04 d0 8d 12 00  |.....P..........|
00011a60  00 a0 03 04 d0 8d 02 00  a8 5b e9 72 65 73 74 6f  |.........[.resto|
00011a70  72 65 00 08 00 00 ff 0d  c0 a0 e1 10 d8 2d e9 04  |re...........-..|
00011a80  b0 4c e2 0a 00 5d e1 00  00 00 bb 08 d0 4d e2 04  |.L...].......M..|
00011a90  30 8d e2 08 00 2d e9 04  30 8d e2 ac 00 9f e5 2c  |0....-..0......,|
00011aa0  20 90 e5 00 10 a0 e3 61  0f a0 e3 01 07 80 e2 00  | ......a........|
00011ab0  00 00 eb 04 d0 8d e2 00  00 00 eb 04 00 9d e5 00  |................|
00011ac0  00 50 e3 04 00 00 1a 21  0f 8f e2 00 00 00 eb 00  |.P.....!........|
00011ad0  10 9d e5 00 00 a0 e3 00  00 00 eb 01 00 a0 e3 04  |................|
00011ae0  00 8d e5 7c 40 9f e5 04  10 9d e5 01 00 41 e2 00  |...|@........A..|
00011af0  21 94 e7 85 00 a0 e3 01  0c 80 e2 01 07 80 e2 00  |!...............|
00011b00  00 00 eb 00 00 00 eb 04  00 9d e5 01 00 80 e2 04  |................|
00011b10  00 8d e5 08 00 50 e3 f2  ff ff da 00 30 a0 e3 00  |.....P......0...|
00011b20  20 a0 e3 00 10 a0 e3 0e  00 2d e9 00 30 a0 e3 00  | ........-..0...|
00011b30  20 a0 e3 01 10 a0 e3 05  0d a0 e3 01 07 80 e2 00  | ...............|
00011b40  00 00 eb 0c d0 8d e2 00  00 00 eb 10 a8 5b e9 00  |.............[..|
00011b50  00 00 00 65 72 72 6f 72  20 69 6e 20 72 65 73 74  |...error in rest|
00011b60  6f 72 65 0a 00 00 00 00  00 00 00 00 40 2d e9 02  |ore.........@-..|
00011b70  30 b0 e1 00 20 a0 e3 03  c0 82 e0 01 c0 4c e2 00  |0... ........L..|
00011b80  00 a0 03 00 80 fd 08 01  00 53 e3 02 00 a0 01 00  |.........S......|
00011b90  80 fd 08 02 00 53 e3 0f  00 00 1a 02 31 91 e7 03  |.....S......1...|
00011ba0  38 a0 e1 23 38 a0 e1 0c  11 91 e7 01 18 a0 e1 21  |8..#8..........!|
00011bb0  18 a0 e1 00 00 53 e1 00  30 43 a0 03 30 40 b0 00  |.....S..0C..0@..|
00011bc0  00 51 e1 00 00 41 a0 01  00 40 b0 00 00 53 e1 0c  |.Q...A...@...S..|
00011bd0  00 a0 a1 02 00 a0 b1 00  80 fd e8 a3 30 a0 e1 02  |............0...|
00011be0  30 83 e0 03 e0 a0 e1 03  31 91 e7 03 38 a0 e1 23  |0.......1...8..#|
00011bf0  38 a0 e1 00 00 53 e1 0e  00 a0 01 00 80 fd 08 00  |8....S..........|
00011c00  00 53 e1 0e c0 a0 a1 0e  20 a0 b1 01 30 8c e2 02  |.S...... ...0...|
00011c10  30 43 e0 de ff ff ea 69  6e 69 74 5f 67 6c 6f 62  |0C.....init_glob|
00011c20  61 6c 73 00 00 00 00 10  00 00 ff 0d c0 a0 e1 f0  |als.............|
00011c30  d8 2d e9 04 b0 4c e2 0a  00 5d e1 00 00 00 bb 04  |.-...L...]......|
00011c40  d0 4d e2 6e ff ff eb 00  61 1f e5 00 00 86 e5 00  |.M.n....a.......|
00011c50  50 a0 e3 05 40 a0 e1 24  70 9f e5 04 04 a0 e1 00  |P...@..$p.......|
00011c60  00 00 eb 04 01 87 e7 01  40 84 e2 01 0b 54 e3 f9  |........@....T..|
00011c70  ff ff ba 05 40 a0 e1 02  5a a0 e3 04 70 9f e5 06  |....@...Z...p...|
00011c80  00 00 ea 00 00 00 00 00  00 00 00 05 00 a0 e1 00  |................|
00011c90  00 00 eb 04 01 87 e7 01  40 84 e2 18 50 85 e2 01  |........@...P...|
00011ca0  0b 54 e3 f8 ff ff ba 00  30 a0 e3 00 20 a0 e3 0d  |.T......0... ...|
00011cb0  10 a0 e1 50 00 9f e5 0f  00 2d e9 00 30 a0 e3 00  |...P.....-..0...|
00011cc0  20 a0 e3 00 10 a0 e3 00  00 a0 e3 0f 00 2d e9 00  | ............-..|
00011cd0  30 a0 e3 08 00 2d e9 00  30 a0 e3 00 20 a0 e3 00  |0....-..0... ...|
00011ce0  10 a0 e3 05 0d a0 e3 01  07 80 e2 00 00 00 eb 24  |...............$|
00011cf0  d0 8d e2 00 00 00 eb 04  00 9d e4 08 00 90 e5 04  |................|
00011d00  00 86 e5 01 00 a0 e3 f0  a8 5b e9 00 00 00 00 69  |.........[.....i|
00011d10  6e 70 75 74 5f 70 61 72  61 6d 73 00 00 00 00 10  |nput_params.....|
00011d20  00 00 ff 0d c0 a0 e1 0f  00 2d e9 f0 db 2d e9 03  |.........-...-..|
00011d30  41 6d ed 14 b0 4c e2 0a  00 5d e1 00 00 00 bb 00  |Am...L...]......|
00011d40  70 a0 e1 01 40 a0 e1 02  60 a0 e1 03 50 a0 e1 14  |p...@...`...P...|
00011d50  90 9b e5 08 d0 4d e2 28  0f 8f e2 00 00 00 eb 27  |.....M.(.......'|
00011d60  0f 8f e2 00 00 00 eb 34  0f 8f e2 00 00 00 eb 46  |.......4.......F|
00011d70  0f 8f e2 00 00 00 eb 4a  0f 8f e2 00 00 00 eb 50  |.......J.......P|
00011d80  0f 8f e2 00 00 00 eb 54  0f 8f e2 00 00 00 eb 65  |.......T.......e|
00011d90  0f 8f e2 00 00 00 eb 50  82 1f e5 74 0f 8f e2 00  |.......P...t....|
00011da0  00 00 eb 07 10 a0 e1 89  0f 8f e2 00 00 00 eb 00  |................|
00011db0  00 97 e5 64 00 50 e3 f7  ff ff ba 00 11 80 e0 81  |...d.P..........|
00011dc0  11 60 e0 01 12 80 e0 01  12 a0 e1 08 00 98 e5 00  |.`..............|
00011dd0  00 00 eb 00 00 84 e5 00  00 00 eb f4 11 9f e5 00  |................|
00011de0  00 81 e5 00 00 50 e3 98  00 00 1a 00 10 94 e5 79  |.....P.........y|
00011df0  0f 8f e2 00 00 00 eb 00  00 a0 e3 94 00 00 ea 0a  |................|
00011e00  0a 00 00 20 20 20 20 20  20 20 20 20 20 20 20 20  |...             |
00011e10  20 20 20 20 20 54 20 68  20 65 20 20 20 53 20 6f  |     T h e   S o|
00011e20  20 75 20 6e 20 64 20 20  20 6f 20 66 20 20 20 43  | u n d   o f   C|
00011e30  20 68 20 61 20 6f 20 73  0a 0a 0a 00 00 00 00 41  | h a o s.......A|
00011e40  66 74 65 72 20 69 6d 61  67 65 2f 73 61 6d 70 6c  |fter image/sampl|
00011e50  65 20 67 65 6e 65 72 61  74 69 6f 6e 20 69 73 20  |e generation is |
00011e60  63 6f 6d 70 6c 65 74 65  20 74 68 65 20 73 61 6d  |complete the sam|
00011e70  70 6c 65 20 77 69 6c 6c  20 70 6c 61 79 20 72 65  |ple will play re|
00011e80  70 65 61 74 65 64 6c 79  2e 0a 0a 00 00 00 00 41  |peatedly.......A|
00011e90  74 20 74 68 61 74 20 70  6f 69 6e 74 2c 20 75 73  |t that point, us|
00011ea0  65 3a 0a 0a 00 00 00 20  20 45 73 63 61 70 65 20  |e:.....  Escape |
00011eb0  74 6f 20 65 6e 64 20 74  68 69 73 20 70 72 6f 67  |to end this prog|
00011ec0  72 61 6d 2c 0a 00 00 20  20 52 65 74 75 72 6e 20  |ram,...  Return |
00011ed0  74 6f 20 72 65 2d 72 75  6e 20 69 74 2c 0a 00 20  |to re-run it,.. |
00011ee0  20 4c 65 66 74 2f 52 69  67 68 74 20 63 75 72 73  | Left/Right curs|
00011ef0  6f 72 20 28 2b 73 68 69  66 74 29 20 74 6f 20 73  |or (+shift) to s|
00011f00  65 65 6b 20 6f 75 74 20  69 6e 74 65 72 65 73 74  |eek out interest|
00011f10  69 6e 67 20 6e 65 77 20  6c 61 6d 62 64 61 20 72  |ing new lambda r|
00011f20  65 67 69 6f 6e 73 0a 00  00 00 00 20 20 28 66 6f  |egions.....  (fo|
00011f30  6c 6c 6f 77 65 64 20 62  79 20 61 6e 79 20 6f 74  |llowed by any ot|
00011f40  68 65 72 20 6b 65 79 20  74 6f 20 72 65 73 75 6d  |her key to resum|
00011f50  65 20 70 6c 61 79 69 6e  67 20 6f 66 20 63 75 72  |e playing of cur|
00011f60  72 65 6e 74 20 73 61 6d  70 6c 65 29 2e 0a 0a 0a  |rent sample)....|
00011f70  00 00 00 50 6c 65 61 73  65 20 65 6e 74 65 72 20  |...Please enter |
00011f80  73 61 6d 70 6c 65 20 64  75 72 61 74 69 6f 6e 20  |sample duration |
00011f90  69 6e 20 63 65 6e 74 69  73 65 63 6f 6e 64 73 20  |in centiseconds |
00011fa0  28 65 67 20 33 30 30 30  20 66 6f 72 20 61 20 33  |(eg 3000 for a 3|
00011fb0  30 73 20 73 61 6d 70 6c  65 3b 20 6d 75 73 74 20  |0s sample; must |
00011fc0  62 65 20 61 74 20 6c 65  61 73 74 20 31 30 30 29  |be at least 100)|
00011fd0  20 00 00 25 69 00 00 00  00 00 00 43 61 6e 27 74  | ..%i......Can't|
00011fe0  20 61 6c 6c 6f 63 61 74  65 20 73 61 6d 70 6c 65  | allocate sample|
00011ff0  20 6d 65 6d 6f 72 79 20  6f 66 20 25 69 20 62 79  | memory of %i by|
00012000  74 65 73 20 2d 20 74 72  79 20 61 20 73 68 6f 72  |tes - try a shor|
00012010  74 65 72 20 64 75 72 61  74 69 6f 6e 20 6f 72 20  |ter duration or |
00012020  71 75 69 74 20 26 20 69  6e 63 72 65 61 73 65 20  |quit & increase |
00012030  66 72 65 65 20 6d 65 6d  6f 72 79 2c 20 74 68 65  |free memory, the|
00012040  6e 20 72 75 6e 20 61 67  61 69 6e 21 0a 00 00 01  |n run again!....|
00012050  00 a0 e3 00 00 50 e3 4f  ff ff 0a 8c 00 1f e5 00  |.....P.O........|
00012060  00 90 e5 00 10 94 e5 01  10 80 e0 b4 00 9f e5 00  |................|
00012070  10 80 e5 71 4e a0 e3 02  4a 84 e2 2a 0f 8f e2 00  |...qN...J..*....|
00012080  00 00 eb 06 10 a0 e1 2f  0f 4f e2 00 00 00 eb 00  |......./.O......|
00012090  00 96 e5 64 00 50 e3 f7  ff ff ba 04 00 50 e1 f5  |...d.P.......P..|
000120a0  ff ff ca 2f 0f 8f e2 00  00 00 eb 0d 10 a0 e1 34  |.../...........4|
000120b0  0f 8f e2 00 00 00 eb 00  81 9d ed 18 f1 d0 ee f7  |................|
000120c0  ff ff ba 1c f1 d0 ee f5  ff ff ca 2e c1 9f ed 84  |................|
000120d0  01 10 ee 70 01 10 ee 00  00 85 e5 2c 0f 8f e2 00  |...p.......,....|
000120e0  00 00 eb 0d 10 a0 e1 26  0f 8f e2 00 00 00 eb 00  |.......&........|
000120f0  00 95 e5 90 01 00 ee 84  11 40 ee 00 81 9d ed 10  |.........@......|
00012100  f1 d1 ee f4 ff ff aa 1c  f1 d0 ee f2 ff ff ca 84  |................|
00012110  01 10 ee 70 01 10 ee 00  00 89 e5 01 00 a0 e3 0c  |...p............|
00012120  41 5b ed f0 ab 5b e9 00  00 00 00 50 6c 65 61 73  |A[...[.....Pleas|
00012130  65 20 65 6e 74 65 72 20  73 61 6d 70 6c 65 20 72  |e enter sample r|
00012140  65 73 6f 6c 75 74 69 6f  6e 20 28 31 30 30 2d 31  |esolution (100-1|
00012150  30 30 30 30 2c 20 73 75  67 67 65 73 74 20 31 30  |0000, suggest 10|
00012160  30 30 29 20 00 00 00 50  6c 65 61 73 65 20 65 6e  |00) ...Please en|
00012170  74 65 72 20 6c 61 6d 62  64 61 20 6d 69 6e 20 28  |ter lambda min (|
00012180  30 2d 34 29 20 00 00 25  4c 66 00 00 00 f0 40 00  |0-4) ..%Lf....@.|
00012190  00 00 00 50 6c 65 61 73  65 20 65 6e 74 65 72 20  |...Please enter |
000121a0  6c 61 6d 62 64 61 20 6d  61 78 20 28 30 2d 34 29  |lambda max (0-4)|
000121b0  20 00 00 61 64 64 5f 76  6f 69 63 65 00 00 00 0c  | ..add_voice....|
000121c0  00 00 ff 0d c0 a0 e1 70  d8 2d e9 04 b0 4c e2 0a  |.......p.-...L..|
000121d0  00 5d e1 00 00 00 bb a8  30 9f e5 08 00 2d e9 a4  |.]......0....-..|
000121e0  00 9f e5 00 10 90 e5 00  30 a0 e3 00 20 a0 e3 83  |........0... ...|
000121f0  00 a0 e3 01 0c 80 e2 01  07 80 e2 00 00 00 eb 04  |................|
00012200  d0 8d e2 00 00 00 eb 01  40 a0 e3 ac 66 1f e5 c8  |........@...f...|
00012210  56 1f e5 04 01 86 e0 04  30 40 e2 08 00 2d e9 2c  |V.......0@...-.,|
00012220  20 95 e5 04 10 a0 e1 00  30 a0 e3 85 00 a0 e3 01  | .......0.......|
00012230  0c 80 e2 01 07 80 e2 00  00 00 eb 04 d0 8d e2 00  |................|
00012240  00 00 eb 01 40 84 e2 08  00 54 e3 f0 ff ff da 38  |....@....T.....8|
00012250  00 9f e5 00 00 00 eb 00  30 a0 e3 00 20 a0 e3 00  |........0... ...|
00012260  10 a0 e3 0e 00 2d e9 00  30 a0 e3 00 20 a0 e3 01  |.....-..0... ...|
00012270  10 a0 e3 05 0d a0 e3 01  07 80 e2 00 00 00 eb 70  |...............p|
00012280  68 1b e9 00 00 00 ea 00  00 00 00 00 00 00 00 00  |h...............|
00012290  00 00 00 6d 61 69 6e 00  00 00 00 08 00 00 ff 0d  |...main.........|
000122a0  c0 a0 e1 f0 db 2d e9 03  51 6d ed 03 41 6d ed 04  |.....-..Qm..Am..|
000122b0  b0 4c e2 25 cc 4d e2 0a  00 5c e1 00 00 00 bb 54  |.L.%.M...\.....T|
000122c0  d0 4d e2 09 db 4d e2 77  0e a0 e3 01 0a 80 e2 02  |.M...M.w........|
000122d0  ca 8d e2 44 04 8c e5 fa  0f a0 e3 40 04 8c e5 51  |...D.......@...Q|
000122e0  fe ff eb 00 00 50 e3 00  00 a0 03 cf 01 00 0a 43  |.....P.........C|
000122f0  d1 9f ed 5c c1 1f ed b0  07 1f e5 00 00 90 e5 00  |...\............|
00012300  00 50 e3 0c 00 a0 13 14  00 a0 03 00 00 00 eb 30  |.P.............0|
00012310  30 8d e2 08 00 2d e9 38  30 8d e2 44 20 8d e2 09  |0....-.80..D ...|
00012320  2b 82 e2 54 10 8d e2 09  1b 81 e2 48 00 8d e2 09  |+..T.......H....|
00012330  0b 80 e2 7a fe ff eb 04  d0 8d e2 00 00 50 e3 00  |...z.........P..|
00012340  00 a0 03 b9 01 00 0a 30  10 8d e2 03 00 91 e8 01  |.......0........|
00012350  00 40 e0 24 00 8d e5 41  6d 8d e2 dc 06 1f e5 00  |.@.$...Am.......|
00012360  00 90 e5 40 00 8d e5 01  00 a0 e3 38 00 8d e5 40  |...@.......8...@|
00012370  00 8d e2 3c 00 8d e5 00  00 00 eb 4c 20 8d e2 09  |...<.......L ...|
00012380  2b 82 e2 7f 10 a0 e3 06  0d a0 e3 01 07 80 e2 00  |+...............|
00012390  00 00 eb 00 00 00 eb c8  03 1f e5 00 70 90 e5 18  |............p...|
000123a0  70 8d e5 02 ca 8d e2 40  04 9c e5 50 14 9c e5 00  |p......@...P....|
000123b0  90 a0 e1 00 00 00 eb 14  00 8d e5 0c 10 8d e5 00  |................|
000123c0  40 69 e2 10 40 8d e5 00  50 a0 e3 1c 50 8d e5 24  |@i..@...P...P..$|
000123d0  10 9d e5 34 80 9d e5 09  00 a0 e1 00 00 00 eb 2c  |...4...........,|
000123e0  00 8d e5 20 10 8d e5 28  40 8d e5 09 00 a0 e1 05  |... ...(@.......|
000123f0  1c a0 e3 00 00 00 eb 08  00 8d e5 12 00 8d e8 c6  |................|
00012400  00 00 ea 00 00 94 40 00  00 00 00 81 0d 8d e2 01  |......@.........|
00012410  2b a0 e3 00 10 a0 e3 00  00 00 eb 02 49 a0 e3 00  |+...........I...|
00012420  90 a0 e3 01 18 64 e2 04  00 a0 e1 00 00 00 eb 00  |.....d..........|
00012430  10 a0 e1 08 00 a0 e1 00  00 00 eb 00 40 a0 e1 01  |............@...|
00012440  90 89 e2 01 0c 59 e3 f5  ff ff ba 00 90 a0 e3 01  |.....Y..........|
00012450  18 64 e2 04 00 a0 e1 00  00 00 eb 00 10 a0 e1 08  |.d..............|
00012460  00 a0 e1 00 00 00 eb 00  40 a0 e1 00 05 a0 e1 00  |........@.......|
00012470  00 50 e3 01 00 40 d2 01  08 80 d2 40 08 a0 e1 02  |.P...@.....@....|
00012480  ca 8d e2 48 04 8c e5 00  00 50 e3 00 00 a0 b3 48  |...H.....P.....H|
00012490  04 8c b5 02 ca 8d e2 48  04 9c e5 01 0b 50 e3 01  |.......H.....P..|
000124a0  0b a0 a3 01 00 40 a2 48  04 8c a5 ff 10 a0 e3 81  |.....@.H........|
000124b0  0d 8d e2 02 ca 8d e2 48  24 9c e5 02 10 c0 e7 05  |.......H$.......|
000124c0  10 a0 e1 45 00 a0 e3 00  00 00 eb 01 90 89 e2 40  |...E...........@|
000124d0  00 59 e3 dd ff ff ba 00  00 a0 e3 00 40 a0 e1 00  |.Y..........@...|
000124e0  90 a0 e1 81 0d 8d e2 09  00 d0 e7 00 00 50 e3 04  |.............P..|
000124f0  00 00 0a 74 08 1f e5 09  11 90 e7 04 00 a0 e1 01  |...t............|
00012500  40 80 e2 00 11 86 e7 01  90 89 e2 01 0b 59 e3 f3  |@............Y..|
00012510  ff ff ba 00 90 a0 e3 0a  00 00 ea 09 01 96 e7 3c  |...............<|
00012520  10 9d e5 38 20 9d e5 8f  fd ff eb 3c 10 9d e5 00  |...8 ......<....|
00012530  01 91 e7 20 08 a0 e1 09  11 96 e7 00 08 81 e0 09  |... ............|
00012540  01 86 e7 01 90 89 e2 04  00 59 e1 f2 ff ff ba 04  |.........Y......|
00012550  00 a0 e1 00 00 00 eb 00  00 50 e3 1b 1f 8f b2 01  |.........P......|
00012560  00 a0 b3 00 00 00 bb 14  00 9d e5 00 70 87 e0 10  |............p...|
00012570  00 9d e5 0c 10 9d e5 81  00 80 e0 10 00 8d e5 00  |................|
00012580  00 50 e3 05 00 00 da 01  70 87 e2 10 00 9d e5 02  |.P......p.......|
00012590  ca 8d e2 40 14 9c e5 81  00 40 e0 10 00 8d e5 80  |...@.....@......|
000125a0  04 1f e5 00 00 90 e5 00  00 57 e1 05 00 00 ca 02  |.........W......|
000125b0  ca 8d e2 40 14 9c e5 01  10 41 e2 1c 20 9d e5 02  |...@.....A.. ...|
000125c0  00 51 e1 2d 00 00 1a 00  70 a0 e1 2b 00 00 ea 75  |.Q.-....p..+...u|
000125d0  6e 65 78 70 65 63 74 65  64 20 71 75 69 63 6b 64  |nexpected quickd|
000125e0  69 76 5f 69 6e 69 74 20  65 72 72 6f 72 00 00 00  |iv_init error...|
000125f0  00 a0 e3 02 ca 8d e2 48  04 8c e5 0a 00 00 ea 01  |.......H........|
00012600  21 96 e7 02 28 82 e0 01  21 86 e7 22 1b a0 e1 94  |!...(...!.."....|
00012610  29 1f e5 01 11 92 e7 00  00 81 e0 02 ca 8d e2 48  |)..............H|
00012620  14 9c e5 01 10 81 e2 48  14 8c e5 02 ca 8d e2 48  |.......H.......H|
00012630  14 9c e5 04 00 51 e1 f0  ff ff ba 00 00 00 eb 40  |.....Q.........@|
00012640  02 a0 e1 01 0a 50 e3 01  0a a0 a3 01 00 40 a2 01  |.....P.......@..|
00012650  0a 70 e3 01 00 a0 d3 01  0a 40 d2 80 09 a0 e1 18  |.p.......@......|
00012660  1b 1f e5 04 10 91 e5 a0  09 d1 e7 18 10 9d e5 00  |................|
00012670  00 c1 e5 18 00 9d e5 01  00 80 e2 18 00 8d e5 18  |................|
00012680  00 9d e5 07 00 50 e1 d8  ff ff ba 38 40 8d e5 3c  |.....P.....8@..<|
00012690  60 8d e5 41 0d 8d e2 00  00 56 e1 41 6d 8d 12 40  |`..A.....V.Am..@|
000126a0  60 8d 02 1c 00 9d e5 01  00 80 e2 1c 00 8d e5 2c  |`..............,|
000126b0  00 9d e5 00 80 88 e0 28  00 9d e5 20 10 9d e5 81  |.......(... ....|
000126c0  00 80 e0 28 00 8d e5 00  00 50 e3 05 00 00 da 01  |...(.....P......|
000126d0  80 88 e2 28 00 9d e5 02  ca 8d e2 40 14 9c e5 81  |...(.......@....|
000126e0  00 40 e0 28 00 8d e5 08  00 9d e5 00 50 85 e0 04  |.@.(........P...|
000126f0  00 9d e5 00 10 9d e5 81  00 80 e0 04 00 8d e5 00  |................|
00012700  00 50 e3 05 00 00 da 01  50 85 e2 04 00 9d e5 02  |.P......P.......|
00012710  ca 8d e2 40 14 9c e5 81  00 40 e0 04 00 8d e5 1c  |...@.....@......|
00012720  00 9d e5 02 ca 8d e2 40  14 9c e5 01 00 50 e1 35  |.......@.....P.5|
00012730  ff ff ba 4c 14 9c e5 06  0d a0 e3 01 07 80 e2 00  |...L............|
00012740  00 00 eb 00 00 00 eb 9d  fe ff eb 00 00 a0 e3 00  |................|
00012750  00 00 eb 02 ca 8d e2 44  14 9c e5 05 00 a0 e3 00  |.......D........|
00012760  00 00 eb 00 30 a0 e1 08  00 2d e9 01 39 a0 e3 7f  |....0....-..9...|
00012770  20 a0 e3 01 2c 82 e2 01  10 a0 e3 89 00 a0 e3 01  | ...,...........|
00012780  0c 80 e2 01 07 80 e2 00  00 00 eb 04 d0 8d e2 00  |................|
00012790  00 00 eb 00 00 00 eb 00  40 a0 e1 07 10 a0 e3 03  |........@.......|
000127a0  00 a0 e3 00 00 00 eb 00  90 a0 e3 02 00 49 e2 00  |.............I..|
000127b0  10 a0 e3 00 00 00 eb 01  1b a0 e3 00 00 a0 e3 00  |................|
000127c0  00 00 eb 09 00 a0 e1 00  10 a0 e3 00 00 00 eb 01  |................|
000127d0  1b a0 e3 00 00 a0 e3 00  00 00 eb 01 20 a0 e3 04  |............ ...|
000127e0  10 a0 e3 06 00 a0 e3 00  00 00 eb 00 00 00 eb 48  |...............H|
000127f0  00 8d e2 09 0b 80 e2 00  00 00 eb 00 00 50 e3 68  |.............P.h|
00012800  00 00 0a 01 30 a0 e3 08  00 2d e9 01 39 a0 e3 00  |....0....-..9...|
00012810  20 a0 e3 01 10 a0 e3 89  00 a0 e3 01 0c 80 e2 01  | ...............|
00012820  07 80 e2 00 00 00 eb 04  d0 8d e2 00 00 00 eb 09  |................|
00012830  50 a0 e1 0a 4d a0 e3 02  ca 8d e2 48 04 9c e5 0d  |P...M......H....|
00012840  00 50 e3 66 00 00 0a 05  00 54 e1 1b 00 00 0a 05  |.P.f.....T......|
00012850  00 a0 e1 00 10 a0 e3 00  00 00 eb 01 1b a0 e3 00  |................|
00012860  00 a0 e3 00 00 00 eb 04  00 a0 e1 00 10 a0 e3 00  |................|
00012870  00 00 eb 01 1b a0 e3 00  00 a0 e3 00 00 00 eb 04  |................|
00012880  50 a0 e1 00 10 a0 e3 00  00 a0 e3 00 00 00 eb 24  |P..............$|
00012890  00 9d e5 90 04 01 e0 90  11 00 ee 85 11 40 ee 34  |.............@.4|
000128a0  00 9d e5 90 01 00 ee 80  01 01 ee 84 01 40 ee 02  |.............@..|
000128b0  81 2d ed 2f 0f 8f e2 06  00 bd e8 00 00 00 eb 48  |.-./...........H|
000128c0  00 8d e2 09 0b 80 e2 00  00 00 eb 00 00 50 e3 dc  |.............P..|
000128d0  ff ff 0a 02 ca 8d e2 48  04 9c e5 88 00 50 e3 06  |.......H.....P..|
000128e0  00 00 1a 00 00 54 e3 04  00 00 da 00 00 00 eb 00  |.....T..........|
000128f0  00 50 e3 0a 00 a0 03 02  00 a0 13 00 40 44 e0 02  |.P..........@D..|
00012900  ca 8d e2 48 04 9c e5 89  00 50 e3 07 00 00 1a 4f  |...H.....P.....O|
00012910  ce 54 e2 0e 00 5c a3 04  00 00 aa 00 00 00 eb 00  |.T...\..........|
00012920  00 50 e3 0a 00 a0 03 02  00 a0 13 04 40 80 e0 02  |.P..........@...|
00012930  ca 8d e2 48 04 9c e5 88  00 50 e3 c1 ff ff 0a 89  |...H.....P......|
00012940  00 50 e3 bf ff ff 0a 05  00 a0 e1 00 10 a0 e3 00  |.P..............|
00012950  00 00 eb 01 1b a0 e3 00  00 a0 e3 00 00 00 eb 00  |................|
00012960  10 a0 e3 00 00 a0 e3 00  00 00 eb 07 0f 8f e2 00  |................|
00012970  00 00 eb 1a 00 00 ea 6c  61 6d 62 64 61 20 3d 20  |.......lambda = |
00012980  25 66 20 20 20 20 20 20  20 20 20 20 20 20 00 20  |%f            . |
00012990  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000129a0  20 20 20 20 20 20 00 00  00 a0 e3 02 ca 8d e2 48  |      .........H|
000129b0  04 8c e5 00 00 00 eb 04  50 40 e0 02 ca 8d e2 44  |........P@.....D|
000129c0  04 9c e5 99 00 01 e0 05  0c a0 e3 00 00 00 eb 00  |................|
000129d0  00 55 e1 f6 ff ff 3a 02  90 89 e2 05 0c 59 e3 71  |.U....:......Y.q|
000129e0  ff ff ba 05 0c 59 e3 05  00 00 1a 02 00 49 e2 00  |.....Y.......I..|
000129f0  10 a0 e3 00 00 00 eb 01  1b a0 e3 00 00 a0 e3 00  |................|
00012a00  00 00 eb 02 ca 8d e2 48  04 9c e5 0d 00 50 e3 4f  |.......H.....P.O|
00012a10  ff ff 1a 17 fc ff eb 48  0a 1f e5 00 00 90 e5 00  |.......H........|
00012a20  00 50 e3 33 fe ff 0a 00  00 00 eb 31 fe ff ea 0f  |.P.3.......1....|
00012a30  41 5b ed 0c 51 5b ed f0  ab 5b e9 40 10 00 00 37  |A[..Q[...[.@...7|
00012a40  00 06 00 18 10 00 00 32  00 06 00 0c 10 00 00 31  |.......2.......1|
00012a50  00 06 00 e4 0f 00 00 1b  00 06 00 cc 0f 00 00 2f  |.............../|
00012a60  00 06 00 88 0f 00 00 0e  00 06 00 80 0f 00 00 34  |...............4|
00012a70  00 06 00 74 0f 00 00 32  00 06 00 68 0f 00 00 31  |...t...2...h...1|
00012a80  00 06 00 34 0f 00 00 36  00 06 00 04 0f 00 00 36  |...4...6.......6|
00012a90  00 06 00 e0 0e 00 00 33  00 06 00 d4 0e 00 00 35  |.......3.......5|
00012aa0  00 06 00 a4 0e 00 00 34  00 06 00 94 0e 00 00 32  |.......4.......2|
00012ab0  00 06 00 88 0e 00 00 31  00 06 00 7c 0e 00 00 32  |.......1...|...2|
00012ac0  00 06 00 70 0e 00 00 31  00 06 00 44 0e 00 00 0d  |...p...1...D....|
00012ad0  00 06 00 3c 0e 00 00 2e  00 06 00 10 0e 00 00 33  |...<...........3|
00012ae0  00 06 00 04 0e 00 00 0d  00 06 00 00 0e 00 00 10  |................|
00012af0  00 06 00 f0 0d 00 00 32  00 06 00 e4 0d 00 00 31  |.......2.......1|
00012b00  00 06 00 d8 0d 00 00 32  00 06 00 cc 0d 00 00 31  |.......2.......1|
00012b10  00 06 00 bc 0d 00 00 30  00 06 00 ac 0d 00 00 2f  |.......0......./|
00012b20  00 06 00 a8 0d 00 00 0d  00 06 00 a0 0d 00 00 2e  |................|
00012b30  00 06 00 78 0d 00 00 1b  00 06 00 68 0d 00 00 2d  |...x.......h...-|
00012b40  00 06 00 5c 0d 00 00 0d  00 06 00 58 0d 00 00 2c  |...\.......X...,|
00012b50  00 06 00 54 0c 00 00 2b  00 06 00 7c 0b 00 00 0f  |...T...+...|....|
00012b60  00 06 00 6c 0b 00 00 2a  00 06 00 e0 0a 00 00 29  |...l...*.......)|
00012b70  00 06 00 7c 0a 00 00 28  00 06 00 70 0a 00 00 28  |...|...(...p...(|
00012b80  00 06 00 50 0a 00 00 28  00 06 00 44 0a 00 00 28  |...P...(...D...(|
00012b90  00 06 00 30 0a 00 00 27  00 06 00 0c 0a 00 00 1b  |...0...'........|
00012ba0  00 06 00 f4 09 00 00 1b  00 06 00 cc 09 00 00 1b  |................|
00012bb0  00 06 00 ac 09 00 00 0d  00 06 00 a8 09 00 00 26  |...............&|
00012bc0  00 06 00 90 09 00 00 25  00 06 00 24 09 00 00 24  |.......%...$...$|
00012bd0  00 06 00 d4 08 00 00 23  00 06 00 a8 08 00 00 0b  |.......#........|
00012be0  00 0a 00 a4 08 00 00 20  00 0a 00 a0 08 00 00 07  |....... ........|
00012bf0  00 0a 00 9c 08 00 00 0d  00 06 00 94 08 00 00 11  |................|
00012c00  00 06 00 6c 08 00 00 21  00 06 00 58 08 00 00 0d  |...l...!...X....|
00012c10  00 06 00 50 08 00 00 0c  00 06 00 1c 08 00 00 0d  |...P............|
00012c20  00 06 00 14 08 00 00 0c  00 06 00 ec 07 00 00 09  |................|
00012c30  00 06 00 40 07 00 00 1e  00 0a 00 04 07 00 00 1a  |...@............|
00012c40  00 06 00 f8 06 00 00 0e  00 06 00 cc 06 00 00 1a  |................|
00012c50  00 06 00 c0 06 00 00 0e  00 06 00 a4 06 00 00 1a  |................|
00012c60  00 06 00 98 06 00 00 0e  00 06 00 f0 05 00 00 1d  |................|
00012c70  00 0a 00 0c 04 00 00 0e  00 06 00 f0 03 00 00 1c  |................|
00012c80  00 06 00 e8 03 00 00 1b  00 06 00 c4 03 00 00 1a  |................|
00012c90  00 06 00 b8 03 00 00 0e  00 06 00 ac 03 00 00 0e  |................|
00012ca0  00 06 00 a4 03 00 00 0e  00 06 00 9c 03 00 00 0e  |................|
00012cb0  00 06 00 94 03 00 00 0e  00 06 00 8c 03 00 00 0e  |................|
00012cc0  00 06 00 84 03 00 00 0e  00 06 00 7c 03 00 00 0e  |...........|....|
00012cd0  00 06 00 74 03 00 00 0e  00 06 00 54 03 00 00 09  |...t.......T....|
00012ce0  00 06 00 24 03 00 00 05  00 0a 00 0c 03 00 00 0d  |...$............|
00012cf0  00 06 00 04 03 00 00 18  00 06 00 a8 02 00 00 17  |................|
00012d00  00 06 00 a0 02 00 00 16  00 0a 00 9c 02 00 00 14  |................|
00012d10  00 0a 00 78 02 00 00 15  00 06 00 54 02 00 00 09  |...x.......T....|
00012d20  00 06 00 80 01 00 00 06  00 0a 00 68 01 00 00 02  |...........h....|
00012d30  00 0a 00 60 01 00 00 0d  00 06 00 58 01 00 00 11  |...`.......X....|
00012d40  00 06 00 1c 01 00 00 0d  00 06 00 18 01 00 00 10  |................|
00012d50  00 06 00 f0 00 00 00 0f  00 06 00 e4 00 00 00 0e  |................|
00012d60  00 06 00 d0 00 00 00 0d  00 06 00 c8 00 00 00 0c  |................|
00012d70  00 06 00 a0 00 00 00 09  00 06 00 54 00 00 00 0a  |...........T....|
00012d80  00 06 00 2c 00 00 00 09  00 06 00 00 00 00 00 00  |...,............|
00012d90  00 06 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00012da0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00012dc0  00 00 00 4e 6f 72 63 72  6f 66 74 20 52 49 53 43  |...Norcroft RISC|
00012dd0  20 4f 53 20 41 52 4d 20  43 20 76 73 6e 20 34 2e  | OS ARM C vsn 4.|
00012de0  30 30 20 5b 4d 61 79 20  32 38 20 31 39 39 32 5d  |00 [May 28 1992]|
00012df0  00 00 00 27 00 00 00 02  00 00 00 00 00 00 00 00  |...'............|
00012e00  00 00 00 2e 00 00 00 01  00 00 00 00 00 00 00 04  |................|
00012e10  00 00 00 38 00 00 00 01  00 00 00 00 00 00 00 0c  |...8............|
00012e20  00 00 00 42 00 00 00 03  00 00 00 00 00 00 00 0c  |...B............|
00012e30  00 00 00 4e 00 00 00 03  00 00 00 04 00 00 00 0c  |...N............|
00012e40  00 00 00 55 00 00 00 03  00 00 00 08 00 00 00 0c  |...U............|
00012e50  00 00 00 62 00 00 00 03  00 00 00 0c 00 00 00 0c  |...b............|
00012e60  00 00 00 6b 00 00 00 03  00 00 00 2c 00 00 00 0c  |...k.......,....|
00012e70  00 00 00 71 00 00 00 03  00 00 00 1c 00 00 00 04  |...q............|
00012e80  00 00 00 83 00 00 00 02  00 00 00 00 00 00 00 00  |................|
00012e90  00 00 00 94 00 00 00 02  00 00 00 00 00 00 00 00  |................|
00012ea0  00 00 00 9d 00 00 00 03  00 00 00 90 00 00 00 04  |................|
00012eb0  00 00 00 a5 00 00 00 02  00 00 00 00 00 00 00 00  |................|
00012ec0  00 00 00 ae 00 00 00 02  00 00 00 00 00 00 00 00  |................|
00012ed0  00 00 00 bd 00 00 00 02  00 00 00 00 00 00 00 00  |................|
00012ee0  00 00 00 c5 00 00 00 02  00 00 00 00 00 00 00 00  |................|
00012ef0  00 00 00 ca 00 00 00 02  00 00 00 00 00 00 00 00  |................|
00012f00  00 00 00 d2 00 00 00 02  00 00 00 00 00 00 00 00  |................|
00012f10  00 00 00 da 00 00 00 03  00 00 00 84 01 00 00 04  |................|
00012f20  00 00 00 e3 00 00 00 03  00 00 00 44 02 00 00 04  |...........D....|
00012f30  00 00 00 f0 00 00 00 03  00 00 00 00 00 00 00 14  |................|
00012f40  00 00 00 fa 00 00 00 02  00 00 00 00 00 00 00 00  |................|
00012f50  00 00 00 00 01 00 00 03  00 00 00 00 10 00 00 14  |................|
00012f60  00 00 00 06 01 00 00 02  00 00 00 00 00 00 00 00  |................|
00012f70  00 00 00 0e 01 00 00 02  00 00 00 00 00 00 00 00  |................|
00012f80  00 00 00 17 01 00 00 03  00 00 00 3c 03 00 00 04  |...........<....|
00012f90  00 00 00 24 01 00 00 02  00 00 00 00 00 00 00 00  |...$............|
00012fa0  00 00 00 2a 01 00 00 02  00 00 00 00 00 00 00 00  |...*............|
00012fb0  00 00 00 33 01 00 00 02  00 00 00 00 00 00 00 00  |...3............|
00012fc0  00 00 00 3a 01 00 00 02  00 00 00 00 00 00 00 00  |...:............|
00012fd0  00 00 00 44 01 00 00 02  00 00 00 00 00 00 00 00  |...D............|
00012fe0  00 00 00 4d 01 00 00 03  00 00 00 dc 07 00 00 04  |...M............|
00012ff0  00 00 00 57 01 00 00 02  00 00 00 00 00 00 00 00  |...W............|
00013000  00 00 00 62 01 00 00 02  00 00 00 00 00 00 00 00  |...b............|
00013010  00 00 00 69 01 00 00 03  00 00 00 b8 08 00 00 04  |...i............|
00013020  00 00 00 6e 01 00 00 02  00 00 00 00 00 00 00 00  |...n............|
00013030  00 00 00 81 01 00 00 02  00 00 00 00 00 00 00 00  |................|
00013040  00 00 00 8a 01 00 00 02  00 00 00 00 00 00 00 00  |................|
00013050  00 00 00 92 01 00 00 02  00 00 00 00 00 00 00 00  |................|
00013060  00 00 00 9b 01 00 00 02  00 00 00 00 00 00 00 00  |................|
00013070  00 00 00 a2 01 00 00 02  00 00 00 00 00 00 00 00  |................|
00013080  00 00 00 ae 01 00 00 02  00 00 00 00 00 00 00 00  |................|
00013090  00 00 00 b7 01 00 00 02  00 00 00 00 00 00 00 00  |................|
000130a0  00 00 00 c5 01 00 00 02  00 00 00 00 00 00 00 00  |................|
000130b0  00 00 00 ce 01 00 00 02  00 00 00 00 00 00 00 00  |................|
000130c0  00 00 00 d6 01 00 00 02  00 00 00 00 00 00 00 00  |................|
000130d0  00 00 00 e1 01 00 00 02  00 00 00 00 00 00 00 00  |................|
000130e0  00 00 00 e9 01 00 00 02  00 00 00 00 00 00 00 00  |................|
000130f0  00 00 00 ef 01 00 00 02  00 00 00 00 00 00 00 00  |................|
00013100  00 00 00 f8 01 00 00 02  00 00 00 00 00 00 00 00  |................|
00013110  00 00 00 01 02 00 00 02  00 00 00 00 00 00 00 00  |................|
00013120  00 00 00 0c 02 00 00 02  00 00 00 00 00 00 00 00  |................|
00013130  00 00 00 19 02 00 00 02  00 00 00 00 00 00 00 00  |................|
00013140  00 00 00 21 02 00 00 02  00 00 00 00 00 00 00 00  |...!............|
00013150  00 00 00 28 02 00 00 02  00 00 00 00 00 00 00 00  |...(............|
00013160  00 00 00 34 02 00 00 02  00 00 00 00 00 00 00 00  |...4............|
00013170  00 00 00 39 02 00 00 43  24 24 63 6f 64 65 00 43  |...9...C$$code.C|
00013180  24 24 64 61 74 61 00 43  24 24 7a 69 64 61 74 61  |$$data.C$$zidata|
00013190  00 43 24 24 64 65 62 75  67 00 5f 5f 6d 61 69 6e  |.C$$debug.__main|
000131a0  00 78 24 63 6f 64 65 73  65 67 00 78 24 64 61 74  |.x$codeseg.x$dat|
000131b0  61 73 65 67 00 6d 6f 6e  69 74 6f 72 74 79 70 65  |aseg.monitortype|
000131c0  00 6c 69 6e 6c 6f 67 00  73 61 6d 70 6c 65 70 65  |.linlog.samplepe|
000131d0  72 69 6f 64 00 6f 6c 64  76 6f 69 63 65 00 76 6f  |riod.oldvoice.vo|
000131e0  69 63 65 00 72 65 61 64  5f 6d 6f 6e 69 74 6f 72  |ice.read_monitor|
000131f0  5f 74 79 70 65 00 78 24  73 74 61 63 6b 5f 6f 76  |_type.x$stack_ov|
00013200  65 72 66 6c 6f 77 00 6f  73 5f 73 77 69 33 72 00  |erflow.os_swi3r.|
00013210  72 65 73 74 6f 72 65 00  6f 73 5f 73 77 69 32 72  |restore.os_swi2r|
00013220  00 77 69 6d 70 74 5f 63  6f 6d 70 6c 61 69 6e 00  |.wimpt_complain.|
00013230  5f 70 72 69 6e 74 66 00  77 65 72 72 00 6f 73 5f  |_printf.werr.os_|
00013240  73 77 69 32 00 6f 73 5f  73 77 69 36 00 6e 65 61  |swi2.os_swi6.nea|
00013250  72 6e 6f 74 65 00 69 6e  69 74 5f 67 6c 6f 62 61  |rnote.init_globa|
00013260  6c 73 00 77 61 76 65 74  61 62 6c 65 00 73 69 6e  |ls.wavetable.sin|
00013270  31 36 00 70 69 74 63 68  00 70 69 74 63 68 31 36  |16.pitch.pitch16|
00013280  00 6f 73 5f 73 77 69 36  72 00 69 6e 70 75 74 5f  |.os_swi6r.input_|
00013290  70 61 72 61 6d 73 00 73  63 61 6e 66 00 78 24 64  |params.scanf.x$d|
000132a0  69 76 69 64 65 00 6d 61  6c 6c 6f 63 00 77 61 76  |ivide.malloc.wav|
000132b0  65 5f 62 61 73 65 00 77  61 76 65 5f 65 6e 64 00  |e_base.wave_end.|
000132c0  61 64 64 5f 76 6f 69 63  65 00 76 6f 69 63 65 5f  |add_voice.voice_|
000132d0  62 61 73 65 00 61 74 65  78 69 74 00 6d 61 69 6e  |base.atexit.main|
000132e0  00 78 24 73 74 61 63 6b  5f 6f 76 65 72 66 6c 6f  |.x$stack_overflo|
000132f0  77 5f 31 00 62 62 63 5f  6d 6f 64 65 00 62 62 63  |w_1.bbc_mode.bbc|
00013300  5f 63 6c 73 00 6f 73 5f  73 77 69 31 72 00 6d 65  |_cls.os_swi1r.me|
00013310  6d 73 65 74 00 6d 75 6c  5f 66 72 61 63 31 36 63  |mset.mul_frac16c|
00013320  00 62 62 63 5f 70 6c 6f  74 00 71 75 69 63 6b 64  |.bbc_plot.quickd|
00013330  69 76 5f 69 6e 69 74 00  71 75 69 63 6b 64 69 76  |iv_init.quickdiv|
00013340  00 6f 73 5f 73 77 69 31  00 62 62 63 5f 63 75 72  |.os_swi1.bbc_cur|
00013350  73 6f 72 00 6f 73 5f 73  77 69 34 00 63 6c 6f 63  |sor.os_swi4.cloc|
00013360  6b 00 62 62 63 5f 67 63  6f 6c 00 62 62 63 5f 6d  |k.bbc_gcol.bbc_m|
00013370  6f 76 65 00 62 62 63 5f  64 72 61 77 62 79 00 61  |ove.bbc_drawby.a|
00013380  6b 62 64 5f 70 6f 6c 6c  6b 65 79 00 62 62 63 5f  |kbd_pollkey.bbc_|
00013390  74 61 62 00 70 72 69 6e  74 66 00 61 6b 62 64 5f  |tab.printf.akbd_|
000133a0  70 6f 6c 6c 73 68 00 66  72 65 65 00 00 00 00 80  |pollsh.free.....|
000133b0  d0 e2 c5 96 00 00 00 03  00 00 00 38 00 00 00 00  |...........8....|
000133c0  00 00 00 00 00 00 00 04  00 00 00 02 22 00 00 54  |............"..T|
000133d0  10 00 00 6b 00 00 00 00  00 00 00 0c 00 00 00 02  |...k............|
000133e0  00 00 00 30 00 00 00 00  00 00 00 00 00 00 00 14  |...0............|
000133f0  00 00 00 02 10 00 00 00  20 00 00 00 00 00 00 00  |........ .......|
00013400  00 00 00 1a 82 6d 61 69  6e 5f 61 73 73 65 00 00  |.....main_asse..|
00013410  00 00 1c 31 00 00 a1 20  14 a0 b0 a1 1c 31 00 00  |...1... .....1..|
00013420  46 fd ff ff 62 8d a1 c7  03 00 00 00 c5 c6 cb c3  |F...b...........|
00013430  07 00 00 00 05 00 00 00  4f 42 4a 5f 48 45 41 44  |........OBJ_HEAD|
00013440  7c 00 00 00 2c 00 00 00  4f 42 4a 5f 41 52 45 41  ||...,...OBJ_AREA|
00013450  a8 00 00 00 40 2e 00 00  4f 42 4a 5f 53 59 4d 54  |....@...OBJ_SYMT|
00013460  e8 2e 00 00 50 01 00 00  4f 42 4a 5f 53 54 52 54  |....P...OBJ_STRT|
00013470  38 30 00 00 bc 00 00 00  4f 42 4a 5f 49 44 46 4e  |80......OBJ_IDFN|
00013480  f4 30 00 00 28 00 00 00  55 6e 75 73 65 64 20 20  |.0..(...Unused  |
00013490  00 00 00 00 00 00 00 00  55 6e 75 73 65 64 20 20  |........Unused  |
000134a0  00 00 00 00 00 00 00 00  80 d0 e2 c5 96 00 00 00  |................|
000134b0  01 00 00 00 15 00 00 00  00 00 00 00 00 00 00 00  |................|
000134c0  04 00 00 00 02 22 00 00  38 2e 00 00 01 00 00 00  |....."..8.......|
000134d0  00 00 00 00 72 62 62 63  69 6e 63 00 08 00 00 ff  |....rbbcinc.....|
000134e0  20 10 61 e2 01 11 61 e0  01 21 8f e0 02 f0 a0 e1  | .a...a..!......|
000134f0  02 01 10 e3 02 01 20 e2  59 00 00 0a 01 01 10 e3  |...... .Y.......|
00013500  01 01 20 e2 56 00 00 0a  02 02 10 e3 02 02 20 e2  |.. .V......... .|
00013510  53 00 00 0a 01 02 10 e3  01 02 20 e2 50 00 00 0a  |S......... .P...|
00013520  02 03 10 e3 02 03 20 e2  4d 00 00 0a 01 03 10 e3  |...... .M.......|
00013530  01 03 20 e2 4a 00 00 0a  02 04 10 e3 02 04 20 e2  |.. .J......... .|
00013540  47 00 00 0a 01 04 10 e3  01 04 20 e2 44 00 00 0a  |G......... .D...|
00013550  02 05 10 e3 02 05 20 e2  41 00 00 0a 01 05 10 e3  |...... .A.......|
00013560  01 05 20 e2 3e 00 00 0a  02 06 10 e3 02 06 20 e2  |.. .>......... .|
00013570  3b 00 00 0a 01 06 10 e3  01 06 20 e2 38 00 00 0a  |;......... .8...|
00013580  02 07 10 e3 02 07 20 e2  35 00 00 0a 01 07 10 e3  |...... .5.......|
00013590  01 07 20 e2 32 00 00 0a  02 08 10 e3 02 08 20 e2  |.. .2......... .|
000135a0  2f 00 00 0a 01 08 10 e3  01 08 20 e2 2c 00 00 0a  |/......... .,...|
000135b0  02 09 10 e3 02 09 20 e2  29 00 00 0a 01 09 10 e3  |...... .).......|
000135c0  01 09 20 e2 26 00 00 0a  02 0a 10 e3 02 0a 20 e2  |.. .&......... .|
000135d0  23 00 00 0a 01 0a 10 e3  01 0a 20 e2 20 00 00 0a  |#......... . ...|
000135e0  02 0b 10 e3 02 0b 20 e2  1d 00 00 0a 01 0b 10 e3  |...... .........|
000135f0  01 0b 20 e2 1a 00 00 0a  02 0c 10 e3 02 0c 20 e2  |.. ........... .|
00013600  17 00 00 0a 01 0c 10 e3  01 0c 20 e2 14 00 00 0a  |.......... .....|
00013610  80 00 10 e3 80 00 20 e2  11 00 00 0a 40 00 10 e3  |...... .....@...|
00013620  40 00 20 e2 0e 00 00 0a  20 00 10 e3 20 00 20 e2  |@. ..... ... . .|
00013630  0b 00 00 0a 10 00 10 e3  10 00 20 e2 08 00 00 0a  |.......... .....|
00013640  08 00 10 e3 08 00 20 e2  05 00 00 0a 04 00 10 e3  |...... .........|
00013650  04 00 20 e2 02 00 00 0a  02 00 10 e3 02 00 20 e2  |.. ........... .|
00013660  01 00 20 12 0e f0 b0 e1  70 6f 77 31 36 00 00 00  |.. .....pow16...|
00013670  08 00 00 ff 00 00 51 e3  01 08 a0 03 0e f0 b0 01  |......Q.........|
00013680  01 08 51 e3 0e f0 b0 01  00 00 50 e3 00 c0 a0 c3  |..Q.......P.....|
00013690  0a 00 00 ca 04 00 00 1a  00 00 51 e3 00 00 a0 e3  |..........Q.....|
000136a0  02 01 a0 b3 01 00 40 b2  0e f0 b0 e1 01 c8 b0 e1  |......@.........|
000136b0  00 00 a0 13 0e f0 b0 11  01 c8 01 e2 00 00 60 e2  |..............`.|
000136c0  30 40 2d e9 0c 40 a0 e1  01 50 a0 e1 1a 00 00 eb  |0@-..@...P......|
000136d0  85 30 b0 e1 00 50 65 22  00 00 30 e3 00 00 60 42  |.0...Pe"..0...`B|
000136e0  af 3f a0 e1 03 3e a0 e1  af f0 33 e1 20 38 a0 e1  |.?...>....3. 8..|
000136f0  03 08 c0 e1 25 28 a0 e1  02 58 c5 e1 95 00 01 e0  |....%(...X......|
00013700  02 09 11 e3 21 18 a0 e1  01 10 81 12 90 12 21 e0  |....!.........!.|
00013710  95 13 21 e0 93 02 00 e0  00 08 81 e0 00 00 60 62  |..!...........`b|
00013720  d0 00 00 eb 00 00 54 e3  00 00 60 12 30 80 fd e8  |......T...`.0...|
00013730  6c 6e 31 36 00 00 00 00  08 00 00 ff 00 00 50 e3  |ln16..........P.|
00013740  02 01 a0 d3 0e f0 b0 d1  01 01 10 e3 0f 30 a0 13  |.............0..|
00013750  56 00 00 1a 02 02 10 e3  0e 30 a0 13 53 00 00 1a  |V........0..S...|
00013760  01 02 10 e3 0d 30 a0 13  50 00 00 1a 02 03 10 e3  |.....0..P.......|
00013770  0c 30 a0 13 4d 00 00 1a  01 03 10 e3 0b 30 a0 13  |.0..M........0..|
00013780  4a 00 00 1a 02 04 10 e3  0a 30 a0 13 47 00 00 1a  |J........0..G...|
00013790  01 04 10 e3 09 30 a0 13  44 00 00 1a 02 05 10 e3  |.....0..D.......|
000137a0  08 30 a0 13 41 00 00 1a  01 05 10 e3 07 30 a0 13  |.0..A........0..|
000137b0  3e 00 00 1a 02 06 10 e3  06 30 a0 13 3b 00 00 1a  |>........0..;...|
000137c0  01 06 10 e3 05 30 a0 13  38 00 00 1a 02 07 10 e3  |.....0..8.......|
000137d0  04 30 a0 13 35 00 00 1a  01 07 10 e3 03 30 a0 13  |.0..5........0..|
000137e0  32 00 00 1a 02 08 10 e3  02 30 a0 13 2f 00 00 1a  |2........0../...|
000137f0  01 08 10 e3 01 30 a0 13  2c 00 00 1a 02 09 10 e3  |.....0..,.......|
00013800  00 30 a0 13 29 00 00 1a  01 09 10 e3 00 30 e0 13  |.0..)........0..|
00013810  26 00 00 1a 02 0a 10 e3  01 30 e0 13 23 00 00 1a  |&........0..#...|
00013820  01 0a 10 e3 02 30 e0 13  20 00 00 1a 02 0b 10 e3  |.....0.. .......|
00013830  03 30 e0 13 1d 00 00 1a  01 0b 10 e3 04 30 e0 13  |.0...........0..|
00013840  1a 00 00 1a 02 0c 10 e3  05 30 e0 13 17 00 00 1a  |.........0......|
00013850  01 0c 10 e3 06 30 e0 13  14 00 00 1a 80 00 10 e3  |.....0..........|
00013860  07 30 e0 13 11 00 00 1a  40 00 10 e3 08 30 e0 13  |.0......@....0..|
00013870  0e 00 00 1a 20 00 10 e3  09 30 e0 13 0b 00 00 1a  |.... ....0......|
00013880  10 00 10 e3 0a 30 e0 13  08 00 00 1a 08 00 10 e3  |.....0..........|
00013890  0b 30 e0 13 05 00 00 1a  04 00 10 e3 0c 30 e0 13  |.0...........0..|
000138a0  02 00 00 1a 02 00 10 e3  0d 30 e0 13 0e 30 e0 03  |.........0...0..|
000138b0  02 00 53 e3 02 10 43 c2  30 01 a0 c1 02 10 63 d2  |..S...C.0.....c.|
000138c0  10 01 a0 d1 03 08 40 e2  00 11 80 e0 00 15 61 e0  |......@.......a.|
000138d0  41 18 a0 e1 0e 1c 41 e2  34 10 41 e2 00 c0 a0 e1  |A.....A.4.A.....|
000138e0  8c 20 b0 e1 00 c0 6c 22  00 00 31 e3 00 10 61 42  |. ....l"..1...aB|
000138f0  af 2f a0 e1 02 2e a0 e1  af f0 32 e1 01 08 1c e3  |./........2.....|
00013900  81 10 a0 11 ac c0 a0 11  21 28 a0 e1 02 18 c1 e1  |........!(......|
00013910  9c 01 01 e0 02 09 11 e3  21 18 a0 e1 01 10 81 12  |........!.......|
00013920  9c 12 21 e0 00 10 61 62  32 1c 81 e2 31 10 81 e2  |..!...ab2...1...|
00013930  00 c0 a0 e1 8c 20 b0 e1  00 c0 6c 22 00 00 31 e3  |..... ....l"..1.|
00013940  00 10 61 42 af 2f a0 e1  02 2e a0 e1 af f0 32 e1  |..aB./........2.|
00013950  01 08 1c e3 81 10 a0 11  ac c0 a0 11 21 28 a0 e1  |............!(..|
00013960  02 18 c1 e1 9c 01 01 e0  02 09 11 e3 21 18 a0 e1  |............!...|
00013970  01 10 81 12 9c 12 21 e0  00 10 61 62 e2 1c 41 e2  |......!...ab..A.|
00013980  f2 10 41 e2 00 c0 a0 e1  8c 20 b0 e1 00 c0 6c 22  |..A...... ....l"|
00013990  00 00 31 e3 00 10 61 42  af 2f a0 e1 02 2e a0 e1  |..1...aB./......|
000139a0  af f0 32 e1 01 08 1c e3  81 10 a0 11 ac c0 a0 11  |..2.............|
000139b0  21 28 a0 e1 02 18 c1 e1  9c 01 01 e0 02 09 11 e3  |!(..............|
000139c0  21 18 a0 e1 01 10 81 12  9c 12 21 e0 00 10 61 62  |!.........!...ab|
000139d0  05 18 81 e2 55 1c 81 e2  65 10 81 e2 00 c0 a0 e1  |....U...e.......|
000139e0  8c 20 b0 e1 00 c0 6c 22  00 00 31 e3 00 10 61 42  |. ....l"..1...aB|
000139f0  af 2f a0 e1 02 2e a0 e1  af f0 32 e1 01 08 1c e3  |./........2.....|
00013a00  81 10 a0 11 ac c0 a0 11  21 28 a0 e1 02 18 c1 e1  |........!(......|
00013a10  9c 01 01 e0 02 09 11 e3  21 18 a0 e1 01 10 81 12  |........!.......|
00013a20  9c 12 21 e0 00 10 61 62  01 17 41 e2 9a 1c 41 e2  |..!...ab..A...A.|
00013a30  59 00 41 e2 83 c0 83 e0  83 11 8c e0 01 12 83 e0  |Y.A.............|
00013a40  83 21 63 e0 01 12 82 e0  81 11 83 e0 81 02 80 e0  |.!c.............|
00013a50  cc 00 80 e0 40 02 a0 e1  0e f0 b0 e1 65 78 70 31  |....@.......exp1|
00013a60  36 00 00 00 08 00 00 ff  03 07 50 e3 02 01 a0 c3  |6.........P.....|
00013a70  01 00 40 c2 0e f0 b0 c1  03 07 70 e3 00 00 a0 b3  |..@.......p.....|
00013a80  0e f0 b0 b1 80 11 60 e0  00 21 80 e0 02 22 82 e0  |......`..!..."..|
00013a90  00 02 81 e0 42 05 80 e0  41 08 80 e0 08 00 80 e2  |....B...A.......|
00013aa0  40 02 a0 e1 40 38 a0 e1  03 08 c0 e1 0f 00 53 e3  |@...@8........S.|
00013ab0  02 01 a0 a3 01 00 40 a2  0e f0 a0 a1 10 00 73 e3  |......@.......s.|
00013ac0  00 00 a0 b3 0e f0 b0 b1  80 00 a0 e1 01 08 40 e2  |..............@.|
00013ad0  80 11 60 e0 01 13 80 e0  c1 17 a0 e1 0a 1b 81 e2  |..`.............|
00013ae0  7e 10 81 e2 00 c0 a0 e1  8c 20 b0 e1 00 c0 6c 22  |~........ ....l"|
00013af0  00 00 31 e3 00 10 61 42  af 2f a0 e1 02 2e a0 e1  |..1...aB./......|
00013b00  af f0 32 e1 01 08 1c e3  81 10 a0 11 ac c0 a0 11  |..2.............|
00013b10  21 28 a0 e1 02 18 c1 e1  9c 01 01 e0 02 09 11 e3  |!(..............|
00013b20  21 18 a0 e1 01 10 81 12  9c 12 21 e0 00 10 61 62  |!.........!...ab|
00013b30  15 1a 81 e2 be 1e 81 e2  00 c0 a0 e1 8c 20 b0 e1  |............. ..|
00013b40  00 c0 6c 22 00 00 31 e3  00 10 61 42 af 2f a0 e1  |..l"..1...aB./..|
00013b50  02 2e a0 e1 af f0 32 e1  01 08 1c e3 81 10 a0 11  |......2.........|
00013b60  ac c0 a0 11 21 28 a0 e1  02 18 c1 e1 9c 01 01 e0  |....!(..........|
00013b70  02 09 11 e3 21 18 a0 e1  01 10 81 12 9c 12 21 e0  |....!.........!.|
00013b80  00 10 61 62 07 18 81 e2  d7 1c 81 e2 7e 10 81 e2  |..ab........~...|
00013b90  00 c0 a0 e1 8c 20 b0 e1  00 c0 6c 22 00 00 31 e3  |..... ....l"..1.|
00013ba0  00 10 61 42 af 2f a0 e1  02 2e a0 e1 af f0 32 e1  |..aB./........2.|
00013bb0  01 08 1c e3 81 10 a0 11  ac c0 a0 11 21 28 a0 e1  |............!(..|
00013bc0  02 18 c1 e1 9c 01 01 e0  02 09 11 e3 21 18 a0 e1  |............!...|
00013bd0  01 10 81 12 9c 12 21 e0  00 10 61 62 16 18 81 e2  |......!...ab....|
00013be0  0a 1a 81 e2 a7 10 81 e2  41 02 a0 e1 00 00 53 e3  |........A.....S.|
00013bf0  00 30 63 b2 50 03 a0 b1  0e f0 b0 b1 10 03 b0 e1  |.0c.P...........|
00013c00  02 01 a0 43 01 00 40 42  0e f0 b0 e1 63 6f 73 31  |...C..@B....cos1|
00013c10  36 00 00 00 08 00 00 ff  80 30 20 e0 02 08 13 e3  |6........0 .....|
00013c20  00 30 a0 e3 01 30 a0 13  01 08 10 e3 00 08 a0 e1  |.0...0..........|
00013c30  20 08 a0 e1 01 08 60 02  80 00 a0 e1 01 08 40 e2  | .....`.......@.|
00013c40  80 11 60 e0 01 14 80 e0  41 18 a0 e1 0b 1b 81 e2  |..`.....A.......|
00013c50  86 10 81 e2 00 c0 a0 e1  8c 20 b0 e1 00 c0 6c 22  |......... ....l"|
00013c60  00 00 31 e3 00 10 61 42  af 2f a0 e1 02 2e a0 e1  |..1...aB./......|
00013c70  af f0 32 e1 01 08 1c e3  81 10 a0 11 ac c0 a0 11  |..2.............|
00013c80  21 28 a0 e1 02 18 c1 e1  9c 01 01 e0 02 09 11 e3  |!(..............|
00013c90  21 18 a0 e1 01 10 81 12  9c 12 21 e0 00 10 61 62  |!.........!...ab|
00013ca0  e9 1c 41 e2 bd 10 41 e2  00 c0 a0 e1 8c 20 b0 e1  |..A...A...... ..|
00013cb0  00 c0 6c 22 00 00 31 e3  00 10 61 42 af 2f a0 e1  |..l"..1...aB./..|
00013cc0  02 2e a0 e1 af f0 32 e1  01 08 1c e3 81 10 a0 11  |......2.........|
00013cd0  ac c0 a0 11 21 28 a0 e1  02 18 c1 e1 9c 01 01 e0  |....!(..........|
00013ce0  02 09 11 e3 21 18 a0 e1  01 10 81 12 9c 12 21 e0  |....!.........!.|
00013cf0  00 10 61 62 03 18 41 e2  1f 1b 41 e2 c6 10 41 e2  |..ab..A...A...A.|
00013d00  00 c0 a0 e1 8c 20 b0 e1  00 c0 6c 22 00 00 31 e3  |..... ....l"..1.|
00013d10  00 10 61 42 af 2f a0 e1  02 2e a0 e1 af f0 32 e1  |..aB./........2.|
00013d20  01 08 1c e3 81 10 a0 11  ac c0 a0 11 21 28 a0 e1  |............!(..|
00013d30  02 18 c1 e1 9c 01 01 e0  02 09 11 e3 21 18 a0 e1  |............!...|
00013d40  01 10 81 12 9c 12 21 e0  00 10 61 62 02 17 81 e2  |......!...ab....|
00013d50  e2 1c 81 e2 bd 10 81 e2  00 c0 a0 e1 8c 20 b0 e1  |............. ..|
00013d60  00 c0 6c 22 00 00 31 e3  00 10 61 42 af 2f a0 e1  |..l"..1...aB./..|
00013d70  02 2e a0 e1 af f0 32 e1  01 08 1c e3 81 10 a0 11  |......2.........|
00013d80  ac c0 a0 11 21 28 a0 e1  02 18 c1 e1 9c 01 01 e0  |....!(..........|
00013d90  02 09 11 e3 21 18 a0 e1  01 10 81 12 9c 12 21 e0  |....!.........!.|
00013da0  00 10 61 62 0b 18 81 e2  05 1a 81 e2 50 10 81 e2  |..ab........P...|
00013db0  41 02 a0 e1 01 00 13 e3  00 00 60 12 0e f0 b0 e1  |A.........`.....|
00013dc0  73 69 6e 31 36 00 00 00  08 00 00 ff 02 08 10 e3  |sin16...........|
00013dd0  00 30 a0 e3 01 30 a0 13  01 08 10 e3 00 08 a0 e1  |.0...0..........|
00013de0  20 08 a0 e1 01 08 60 12  80 00 a0 e1 01 08 40 e2  | .....`.......@.|
00013df0  80 11 60 e0 01 14 80 e0  41 18 a0 e1 0b 1b 81 e2  |..`.....A.......|
00013e00  86 10 81 e2 00 c0 a0 e1  8c 20 b0 e1 00 c0 6c 22  |......... ....l"|
00013e10  00 00 31 e3 00 10 61 42  af 2f a0 e1 02 2e a0 e1  |..1...aB./......|
00013e20  af f0 32 e1 01 08 1c e3  81 10 a0 11 ac c0 a0 11  |..2.............|
00013e30  21 28 a0 e1 02 18 c1 e1  9c 01 01 e0 02 09 11 e3  |!(..............|
00013e40  21 18 a0 e1 01 10 81 12  9c 12 21 e0 00 10 61 62  |!.........!...ab|
00013e50  e9 1c 41 e2 bd 10 41 e2  00 c0 a0 e1 8c 20 b0 e1  |..A...A...... ..|
00013e60  00 c0 6c 22 00 00 31 e3  00 10 61 42 af 2f a0 e1  |..l"..1...aB./..|
00013e70  02 2e a0 e1 af f0 32 e1  01 08 1c e3 81 10 a0 11  |......2.........|
00013e80  ac c0 a0 11 21 28 a0 e1  02 18 c1 e1 9c 01 01 e0  |....!(..........|
00013e90  02 09 11 e3 21 18 a0 e1  01 10 81 12 9c 12 21 e0  |....!.........!.|
00013ea0  00 10 61 62 03 18 41 e2  1f 1b 41 e2 c6 10 41 e2  |..ab..A...A...A.|
00013eb0  00 c0 a0 e1 8c 20 b0 e1  00 c0 6c 22 00 00 31 e3  |..... ....l"..1.|
00013ec0  00 10 61 42 af 2f a0 e1  02 2e a0 e1 af f0 32 e1  |..aB./........2.|
00013ed0  01 08 1c e3 81 10 a0 11  ac c0 a0 11 21 28 a0 e1  |............!(..|
00013ee0  02 18 c1 e1 9c 01 01 e0  02 09 11 e3 21 18 a0 e1  |............!...|
00013ef0  01 10 81 12 9c 12 21 e0  00 10 61 62 02 17 81 e2  |......!...ab....|
00013f00  e2 1c 81 e2 bd 10 81 e2  00 c0 a0 e1 8c 20 b0 e1  |............. ..|
00013f10  00 c0 6c 22 00 00 31 e3  00 10 61 42 af 2f a0 e1  |..l"..1...aB./..|
00013f20  02 2e a0 e1 af f0 32 e1  01 08 1c e3 81 10 a0 11  |......2.........|
00013f30  ac c0 a0 11 21 28 a0 e1  02 18 c1 e1 9c 01 01 e0  |....!(..........|
00013f40  02 09 11 e3 21 18 a0 e1  01 10 81 12 9c 12 21 e0  |....!.........!.|
00013f50  00 10 61 62 0b 18 81 e2  05 1a 81 e2 50 10 81 e2  |..ab........P...|
00013f60  41 02 a0 e1 01 00 13 e3  00 00 60 12 0e f0 b0 e1  |A.........`.....|
00013f70  61 63 73 31 36 00 00 00  08 00 00 ff 01 08 50 e3  |acs16.........P.|
00013f80  00 00 a0 a3 0e f0 b0 a1  01 08 70 e3 02 08 a0 d3  |..........p.....|
00013f90  0e f0 b0 d1 00 40 2d e9  00 00 50 e3 00 00 60 42  |.....@-...P...`B|
00013fa0  01 30 a0 43 00 30 a0 53  b5 1c 40 e2 05 10 51 e2  |.0.C.0.S..@...Q.|
00013fb0  c4 00 00 ba 02 30 83 e3  90 00 01 e0 21 08 a0 e1  |.....0......!...|
00013fc0  01 08 60 e2 00 10 a0 e1  01 e0 a0 e3 00 00 a0 e3  |..`.............|
00013fd0  00 c0 a0 e3 03 21 01 e2  22 2f a0 e1 02 c0 8c e1  |.....!.."/......|
00013fe0  80 20 8e e0 02 00 5c e1  02 c0 4c a0 01 00 80 a2  |. ....\...L.....|
00013ff0  80 00 a0 e1 0c c1 a0 e1  03 22 01 e2 22 2e a0 e1  |.........".."...|
00014000  02 c0 8c e1 80 20 8e e0  02 00 5c e1 02 c0 4c a0  |..... ....\...L.|
00014010  01 00 80 a2 80 00 a0 e1  0c c1 a0 e1 03 23 01 e2  |.............#..|
00014020  22 2d a0 e1 02 c0 8c e1  80 20 8e e0 02 00 5c e1  |"-....... ....\.|
00014030  02 c0 4c a0 01 00 80 a2  80 00 a0 e1 0c c1 a0 e1  |..L.............|
00014040  03 24 01 e2 22 2c a0 e1  02 c0 8c e1 80 20 8e e0  |.$..",....... ..|
00014050  02 00 5c e1 02 c0 4c a0  01 00 80 a2 80 00 a0 e1  |..\...L.........|
00014060  0c c1 a0 e1 03 25 01 e2  22 2b a0 e1 02 c0 8c e1  |.....%.."+......|
00014070  80 20 8e e0 02 00 5c e1  02 c0 4c a0 01 00 80 a2  |. ....\...L.....|
00014080  80 00 a0 e1 0c c1 a0 e1  03 26 01 e2 22 2a a0 e1  |.........&.."*..|
00014090  02 c0 8c e1 80 20 8e e0  02 00 5c e1 02 c0 4c a0  |..... ....\...L.|
000140a0  01 00 80 a2 80 00 a0 e1  0c c1 a0 e1 03 27 01 e2  |.............'..|
000140b0  22 29 a0 e1 02 c0 8c e1  80 20 8e e0 02 00 5c e1  |")....... ....\.|
000140c0  02 c0 4c a0 01 00 80 a2  80 00 a0 e1 0c c1 a0 e1  |..L.............|
000140d0  03 28 01 e2 22 28 a0 e1  02 c0 8c e1 80 20 8e e0  |.(.."(....... ..|
000140e0  02 00 5c e1 02 c0 4c a0  01 00 80 a2 80 00 a0 e1  |..\...L.........|
000140f0  0c c1 a0 e1 03 29 01 e2  22 27 a0 e1 02 c0 8c e1  |.....).."'......|
00014100  80 20 8e e0 02 00 5c e1  02 c0 4c a0 01 00 80 a2  |. ....\...L.....|
00014110  80 00 a0 e1 0c c1 a0 e1  03 2a 01 e2 22 26 a0 e1  |.........*.."&..|
00014120  02 c0 8c e1 80 20 8e e0  02 00 5c e1 02 c0 4c a0  |..... ....\...L.|
00014130  01 00 80 a2 80 00 a0 e1  0c c1 a0 e1 03 2b 01 e2  |.............+..|
00014140  22 25 a0 e1 02 c0 8c e1  80 20 8e e0 02 00 5c e1  |"%....... ....\.|
00014150  02 c0 4c a0 01 00 80 a2  80 00 a0 e1 0c c1 a0 e1  |..L.............|
00014160  03 2c 01 e2 22 24 a0 e1  02 c0 8c e1 80 20 8e e0  |.,.."$....... ..|
00014170  02 00 5c e1 02 c0 4c a0  01 00 80 a2 80 00 a0 e1  |..\...L.........|
00014180  0c c1 a0 e1 c0 20 01 e2  22 23 a0 e1 02 c0 8c e1  |..... .."#......|
00014190  80 20 8e e0 02 00 5c e1  02 c0 4c a0 01 00 80 a2  |. ....\...L.....|
000141a0  80 00 a0 e1 0c c1 a0 e1  30 20 01 e2 22 22 a0 e1  |........0 ..""..|
000141b0  02 c0 8c e1 80 20 8e e0  02 00 5c e1 02 c0 4c a0  |..... ....\...L.|
000141c0  01 00 80 a2 80 00 a0 e1  0c c1 a0 e1 0c 20 01 e2  |............. ..|
000141d0  22 21 a0 e1 02 c0 8c e1  80 20 8e e0 02 00 5c e1  |"!....... ....\.|
000141e0  02 c0 4c a0 01 00 80 a2  80 00 a0 e1 0c c1 a0 e1  |..L.............|
000141f0  03 20 01 e2 02 c0 8c e1  80 20 8e e0 02 00 5c e1  |. ....... ....\.|
00014200  02 c0 4c a0 01 00 80 a2  80 00 a0 e1 0c c1 a0 e1  |..L.............|
00014210  80 20 8e e0 02 00 5c e1  02 c0 4c a0 01 00 80 a2  |. ....\...L.....|
00014220  80 00 a0 e1 0c c1 a0 e1  80 20 8e e0 02 00 5c e1  |......... ....\.|
00014230  02 c0 4c a0 01 00 80 a2  80 00 a0 e1 0c c1 a0 e1  |..L.............|
00014240  80 20 8e e0 02 00 5c e1  02 c0 4c a0 01 00 80 a2  |. ....\...L.....|
00014250  80 00 a0 e1 0c c1 a0 e1  80 20 8e e0 02 00 5c e1  |......... ....\.|
00014260  02 c0 4c a0 01 00 80 a2  80 00 a0 e1 0c c1 a0 e1  |..L.............|
00014270  80 20 8e e0 02 00 5c e1  02 c0 4c a0 01 00 80 a2  |. ....\...L.....|
00014280  80 00 a0 e1 0c c1 a0 e1  80 20 8e e0 02 00 5c e1  |......... ....\.|
00014290  02 c0 4c a0 01 00 80 a2  80 00 a0 e1 0c c1 a0 e1  |..L.............|
000142a0  80 20 8e e0 02 00 5c e1  02 c0 4c a0 01 00 80 a2  |. ....\...L.....|
000142b0  80 00 a0 e1 0c c1 a0 e1  80 20 8e e0 02 00 5c e1  |......... ....\.|
000142c0  02 c0 4c a0 01 00 80 a2  00 21 80 e0 00 12 82 e0  |..L......!......|
000142d0  82 12 81 e0 42 14 81 e0  20 10 81 e2 41 03 a0 e1  |....B... ...A...|
000142e0  01 08 40 e2 00 11 80 e0  81 12 81 e0 41 17 a0 e1  |..@.........A...|
000142f0  05 1c 81 e2 ae 10 81 e2  00 c0 a0 e1 8c 20 b0 e1  |............. ..|
00014300  00 c0 6c 22 00 00 31 e3  00 10 61 42 af 2f a0 e1  |..l"..1...aB./..|
00014310  02 2e a0 e1 af f0 32 e1  01 08 1c e3 81 10 a0 11  |......2.........|
00014320  ac c0 a0 11 21 28 a0 e1  02 18 c1 e1 9c 01 01 e0  |....!(..........|
00014330  02 09 11 e3 21 18 a0 e1  01 10 81 12 9c 12 21 e0  |....!.........!.|
00014340  00 10 61 62 02 1b 81 e2  88 10 81 e2 00 c0 a0 e1  |..ab............|
00014350  8c 20 b0 e1 00 c0 6c 22  00 00 31 e3 00 10 61 42  |. ....l"..1...aB|
00014360  af 2f a0 e1 02 2e a0 e1  af f0 32 e1 01 08 1c e3  |./........2.....|
00014370  81 10 a0 11 ac c0 a0 11  21 28 a0 e1 02 18 c1 e1  |........!(......|
00014380  9c 01 01 e0 02 09 11 e3  21 18 a0 e1 01 10 81 12  |........!.......|
00014390  9c 12 21 e0 00 10 61 62  02 1a 81 e2 9a 10 81 e2  |..!...ab........|
000143a0  00 c0 a0 e1 8c 20 b0 e1  00 c0 6c 22 00 00 31 e3  |..... ....l"..1.|
000143b0  00 10 61 42 af 2f a0 e1  02 2e a0 e1 af f0 32 e1  |..aB./........2.|
000143c0  01 08 1c e3 81 10 a0 11  ac c0 a0 11 21 28 a0 e1  |............!(..|
000143d0  02 18 c1 e1 9c 01 01 e0  02 09 11 e3 21 18 a0 e1  |............!...|
000143e0  01 10 81 12 9c 12 21 e0  00 10 61 62 46 1c 81 e2  |......!...abF...|
000143f0  9a 10 81 e2 00 c0 a0 e1  8c 20 b0 e1 00 c0 6c 22  |......... ....l"|
00014400  00 00 31 e3 00 10 61 42  af 2f a0 e1 02 2e a0 e1  |..1...aB./......|
00014410  af f0 32 e1 01 08 1c e3  81 10 a0 11 ac c0 a0 11  |..2.............|
00014420  21 28 a0 e1 02 18 c1 e1  9c 01 01 e0 02 09 11 e3  |!(..............|
00014430  21 18 a0 e1 01 10 81 12  9c 12 21 e0 00 10 61 62  |!.........!...ab|
00014440  03 18 81 e2 d9 1c 81 e2  b4 10 81 e2 00 c0 a0 e1  |................|
00014450  8c 20 b0 e1 00 c0 6c 22  00 00 31 e3 00 10 61 42  |. ....l"..1...aB|
00014460  af 2f a0 e1 02 2e a0 e1  af f0 32 e1 01 08 1c e3  |./........2.....|
00014470  81 10 a0 11 ac c0 a0 11  21 28 a0 e1 02 18 c1 e1  |........!(......|
00014480  9c 01 01 e0 02 09 11 e3  21 18 a0 e1 01 10 81 12  |........!.......|
00014490  9c 12 21 e0 00 10 61 62  03 18 81 e2 ae 1c 81 e2  |..!...ab........|
000144a0  52 10 81 e2 41 02 a0 e1  02 00 13 e3 01 08 60 02  |R...A.........`.|
000144b0  01 00 13 e3 02 08 60 12  00 80 fd e8 61 73 6e 31  |......`.....asn1|
000144c0  36 00 00 00 08 00 00 ff  01 08 50 e3 01 08 a0 a3  |6.........P.....|
000144d0  0e f0 b0 a1 01 18 90 e2  01 00 40 d0 0e f0 b0 d1  |..........@.....|
000144e0  00 40 2d e9 00 00 50 e3  00 00 60 42 01 30 a0 43  |.@-...P...`B.0.C|
000144f0  00 30 a0 53 b5 1c 40 e2  05 10 51 e2 c4 00 00 ba  |.0.S..@...Q.....|
00014500  02 30 83 e3 90 00 01 e0  21 08 a0 e1 01 08 60 e2  |.0......!.....`.|
00014510  00 10 a0 e1 01 e0 a0 e3  00 00 a0 e3 00 c0 a0 e3  |................|
00014520  03 21 01 e2 22 2f a0 e1  02 c0 8c e1 80 20 8e e0  |.!.."/....... ..|
00014530  02 00 5c e1 02 c0 4c a0  01 00 80 a2 80 00 a0 e1  |..\...L.........|
00014540  0c c1 a0 e1 03 22 01 e2  22 2e a0 e1 02 c0 8c e1  |....."..".......|
00014550  80 20 8e e0 02 00 5c e1  02 c0 4c a0 01 00 80 a2  |. ....\...L.....|
00014560  80 00 a0 e1 0c c1 a0 e1  03 23 01 e2 22 2d a0 e1  |.........#.."-..|
00014570  02 c0 8c e1 80 20 8e e0  02 00 5c e1 02 c0 4c a0  |..... ....\...L.|
00014580  01 00 80 a2 80 00 a0 e1  0c c1 a0 e1 03 24 01 e2  |.............$..|
00014590  22 2c a0 e1 02 c0 8c e1  80 20 8e e0 02 00 5c e1  |",....... ....\.|
000145a0  02 c0 4c a0 01 00 80 a2  80 00 a0 e1 0c c1 a0 e1  |..L.............|
000145b0  03 25 01 e2 22 2b a0 e1  02 c0 8c e1 80 20 8e e0  |.%.."+....... ..|
000145c0  02 00 5c e1 02 c0 4c a0  01 00 80 a2 80 00 a0 e1  |..\...L.........|
000145d0  0c c1 a0 e1 03 26 01 e2  22 2a a0 e1 02 c0 8c e1  |.....&.."*......|
000145e0  80 20 8e e0 02 00 5c e1  02 c0 4c a0 01 00 80 a2  |. ....\...L.....|
000145f0  80 00 a0 e1 0c c1 a0 e1  03 27 01 e2 22 29 a0 e1  |.........'..")..|
00014600  02 c0 8c e1 80 20 8e e0  02 00 5c e1 02 c0 4c a0  |..... ....\...L.|
00014610  01 00 80 a2 80 00 a0 e1  0c c1 a0 e1 03 28 01 e2  |.............(..|
00014620  22 28 a0 e1 02 c0 8c e1  80 20 8e e0 02 00 5c e1  |"(....... ....\.|
00014630  02 c0 4c a0 01 00 80 a2  80 00 a0 e1 0c c1 a0 e1  |..L.............|
00014640  03 29 01 e2 22 27 a0 e1  02 c0 8c e1 80 20 8e e0  |.).."'....... ..|
00014650  02 00 5c e1 02 c0 4c a0  01 00 80 a2 80 00 a0 e1  |..\...L.........|
00014660  0c c1 a0 e1 03 2a 01 e2  22 26 a0 e1 02 c0 8c e1  |.....*.."&......|
00014670  80 20 8e e0 02 00 5c e1  02 c0 4c a0 01 00 80 a2  |. ....\...L.....|
00014680  80 00 a0 e1 0c c1 a0 e1  03 2b 01 e2 22 25 a0 e1  |.........+.."%..|
00014690  02 c0 8c e1 80 20 8e e0  02 00 5c e1 02 c0 4c a0  |..... ....\...L.|
000146a0  01 00 80 a2 80 00 a0 e1  0c c1 a0 e1 03 2c 01 e2  |.............,..|
000146b0  22 24 a0 e1 02 c0 8c e1  80 20 8e e0 02 00 5c e1  |"$....... ....\.|
000146c0  02 c0 4c a0 01 00 80 a2  80 00 a0 e1 0c c1 a0 e1  |..L.............|
000146d0  c0 20 01 e2 22 23 a0 e1  02 c0 8c e1 80 20 8e e0  |. .."#....... ..|
000146e0  02 00 5c e1 02 c0 4c a0  01 00 80 a2 80 00 a0 e1  |..\...L.........|
000146f0  0c c1 a0 e1 30 20 01 e2  22 22 a0 e1 02 c0 8c e1  |....0 ..""......|
00014700  80 20 8e e0 02 00 5c e1  02 c0 4c a0 01 00 80 a2  |. ....\...L.....|
00014710  80 00 a0 e1 0c c1 a0 e1  0c 20 01 e2 22 21 a0 e1  |......... .."!..|
00014720  02 c0 8c e1 80 20 8e e0  02 00 5c e1 02 c0 4c a0  |..... ....\...L.|
00014730  01 00 80 a2 80 00 a0 e1  0c c1 a0 e1 03 20 01 e2  |............. ..|
00014740  02 c0 8c e1 80 20 8e e0  02 00 5c e1 02 c0 4c a0  |..... ....\...L.|
00014750  01 00 80 a2 80 00 a0 e1  0c c1 a0 e1 80 20 8e e0  |............. ..|
00014760  02 00 5c e1 02 c0 4c a0  01 00 80 a2 80 00 a0 e1  |..\...L.........|
00014770  0c c1 a0 e1 80 20 8e e0  02 00 5c e1 02 c0 4c a0  |..... ....\...L.|
00014780  01 00 80 a2 80 00 a0 e1  0c c1 a0 e1 80 20 8e e0  |............. ..|
00014790  02 00 5c e1 02 c0 4c a0  01 00 80 a2 80 00 a0 e1  |..\...L.........|
000147a0  0c c1 a0 e1 80 20 8e e0  02 00 5c e1 02 c0 4c a0  |..... ....\...L.|
000147b0  01 00 80 a2 80 00 a0 e1  0c c1 a0 e1 80 20 8e e0  |............. ..|
000147c0  02 00 5c e1 02 c0 4c a0  01 00 80 a2 80 00 a0 e1  |..\...L.........|
000147d0  0c c1 a0 e1 80 20 8e e0  02 00 5c e1 02 c0 4c a0  |..... ....\...L.|
000147e0  01 00 80 a2 80 00 a0 e1  0c c1 a0 e1 80 20 8e e0  |............. ..|
000147f0  02 00 5c e1 02 c0 4c a0  01 00 80 a2 80 00 a0 e1  |..\...L.........|
00014800  0c c1 a0 e1 80 20 8e e0  02 00 5c e1 02 c0 4c a0  |..... ....\...L.|
00014810  01 00 80 a2 00 21 80 e0  00 12 82 e0 82 12 81 e0  |.....!..........|
00014820  42 14 81 e0 20 10 81 e2  41 03 a0 e1 01 08 40 e2  |B... ...A.....@.|
00014830  00 11 80 e0 81 12 81 e0  41 17 a0 e1 05 1c 81 e2  |........A.......|
00014840  ae 10 81 e2 00 c0 a0 e1  8c 20 b0 e1 00 c0 6c 22  |......... ....l"|
00014850  00 00 31 e3 00 10 61 42  af 2f a0 e1 02 2e a0 e1  |..1...aB./......|
00014860  af f0 32 e1 01 08 1c e3  81 10 a0 11 ac c0 a0 11  |..2.............|
00014870  21 28 a0 e1 02 18 c1 e1  9c 01 01 e0 02 09 11 e3  |!(..............|
00014880  21 18 a0 e1 01 10 81 12  9c 12 21 e0 00 10 61 62  |!.........!...ab|
00014890  02 1b 81 e2 88 10 81 e2  00 c0 a0 e1 8c 20 b0 e1  |............. ..|
000148a0  00 c0 6c 22 00 00 31 e3  00 10 61 42 af 2f a0 e1  |..l"..1...aB./..|
000148b0  02 2e a0 e1 af f0 32 e1  01 08 1c e3 81 10 a0 11  |......2.........|
000148c0  ac c0 a0 11 21 28 a0 e1  02 18 c1 e1 9c 01 01 e0  |....!(..........|
000148d0  02 09 11 e3 21 18 a0 e1  01 10 81 12 9c 12 21 e0  |....!.........!.|
000148e0  00 10 61 62 02 1a 81 e2  9a 10 81 e2 00 c0 a0 e1  |..ab............|
000148f0  8c 20 b0 e1 00 c0 6c 22  00 00 31 e3 00 10 61 42  |. ....l"..1...aB|
00014900  af 2f a0 e1 02 2e a0 e1  af f0 32 e1 01 08 1c e3  |./........2.....|
00014910  81 10 a0 11 ac c0 a0 11  21 28 a0 e1 02 18 c1 e1  |........!(......|
00014920  9c 01 01 e0 02 09 11 e3  21 18 a0 e1 01 10 81 12  |........!.......|
00014930  9c 12 21 e0 00 10 61 62  46 1c 81 e2 9a 10 81 e2  |..!...abF.......|
00014940  00 c0 a0 e1 8c 20 b0 e1  00 c0 6c 22 00 00 31 e3  |..... ....l"..1.|
00014950  00 10 61 42 af 2f a0 e1  02 2e a0 e1 af f0 32 e1  |..aB./........2.|
00014960  01 08 1c e3 81 10 a0 11  ac c0 a0 11 21 28 a0 e1  |............!(..|
00014970  02 18 c1 e1 9c 01 01 e0  02 09 11 e3 21 18 a0 e1  |............!...|
00014980  01 10 81 12 9c 12 21 e0  00 10 61 62 03 18 81 e2  |......!...ab....|
00014990  d9 1c 81 e2 b4 10 81 e2  00 c0 a0 e1 8c 20 b0 e1  |............. ..|
000149a0  00 c0 6c 22 00 00 31 e3  00 10 61 42 af 2f a0 e1  |..l"..1...aB./..|
000149b0  02 2e a0 e1 af f0 32 e1  01 08 1c e3 81 10 a0 11  |......2.........|
000149c0  ac c0 a0 11 21 28 a0 e1  02 18 c1 e1 9c 01 01 e0  |....!(..........|
000149d0  02 09 11 e3 21 18 a0 e1  01 10 81 12 9c 12 21 e0  |....!.........!.|
000149e0  00 10 61 62 03 18 81 e2  ae 1c 81 e2 52 10 81 e2  |..ab........R...|
000149f0  41 02 a0 e1 02 00 13 e3  01 08 60 12 01 00 13 e3  |A.........`.....|
00014a00  00 00 60 12 00 80 fd e8  67 61 75 73 73 31 36 00  |..`.....gauss16.|
00014a10  08 00 00 ff b4 00 8f e2  06 00 90 e8 a2 20 b0 e1  |............. ..|
00014a20  61 30 b0 e1 02 20 a2 e0  01 36 23 e0 23 1a 23 e0  |a0... ...6#.#.#.|
00014a30  21 c8 a0 e1 01 38 a0 e1  23 c8 8c e0 a2 20 b0 e1  |!....8..#.... ..|
00014a40  61 30 b0 e1 02 20 a2 e0  01 36 23 e0 23 1a 23 e0  |a0... ...6#.#.#.|
00014a50  21 c8 8c e0 01 38 a0 e1  23 c8 8c e0 a2 20 b0 e1  |!....8..#.... ..|
00014a60  61 30 b0 e1 02 20 a2 e0  01 36 23 e0 23 1a 23 e0  |a0... ...6#.#.#.|
00014a70  21 c8 8c e0 01 38 a0 e1  23 c8 8c e0 a2 20 b0 e1  |!....8..#.... ..|
00014a80  61 30 b0 e1 02 20 a2 e0  01 36 23 e0 23 1a 23 e0  |a0... ...6#.#.#.|
00014a90  21 c8 8c e0 01 38 a0 e1  23 c8 8c e0 06 00 80 e8  |!....8..#.......|
00014aa0  8c 01 6c e0 0c 11 6c e0  00 02 81 e0 8c 04 80 e0  |..l...l.........|
00014ab0  0c 12 8c e0 0c 13 81 e0  21 05 80 e0 a0 04 a0 e1  |........!.......|
00014ac0  4e 0a 40 e2 62 0e 40 e2  04 00 40 e2 0e f0 b0 e1  |N.@.b.@...@.....|
00014ad0  ff ff ff ff ff ff ff ff  73 67 61 75 73 73 31 36  |........sgauss16|
00014ae0  00 00 00 00 0c 00 00 ff  20 10 4f e2 01 20 a0 e3  |........ .O.. ..|
00014af0  05 00 81 e8 0e f0 b0 e1  64 69 76 5f 66 72 61 63  |........div_frac|
00014b00  31 36 00 00 0c 00 00 ff  81 30 b0 e1 00 10 61 22  |16.......0....a"|
00014b10  02 20 a2 e0 00 00 30 e3  00 00 60 42 01 20 22 42  |. ....0...`B. "B|
00014b20  20 38 a0 e1 00 08 a0 e1  80 00 b0 e1 03 30 a3 e0  | 8...........0..|
00014b30  01 00 53 e1 01 30 43 20  01 00 80 23 80 00 b0 e1  |..S..0C ...#....|
00014b40  03 30 a3 e0 01 00 53 e1  01 30 43 20 01 00 80 23  |.0....S..0C ...#|
00014b50  80 00 b0 e1 03 30 a3 e0  01 00 53 e1 01 30 43 20  |.....0....S..0C |
00014b60  01 00 80 23 80 00 b0 e1  03 30 a3 e0 01 00 53 e1  |...#.....0....S.|
00014b70  01 30 43 20 01 00 80 23  80 00 b0 e1 03 30 a3 e0  |.0C ...#.....0..|
00014b80  01 00 53 e1 01 30 43 20  01 00 80 23 80 00 b0 e1  |..S..0C ...#....|
00014b90  03 30 a3 e0 01 00 53 e1  01 30 43 20 01 00 80 23  |.0....S..0C ...#|
00014ba0  80 00 b0 e1 03 30 a3 e0  01 00 53 e1 01 30 43 20  |.....0....S..0C |
00014bb0  01 00 80 23 80 00 b0 e1  03 30 a3 e0 01 00 53 e1  |...#.....0....S.|
00014bc0  01 30 43 20 01 00 80 23  80 00 b0 e1 03 30 a3 e0  |.0C ...#.....0..|
00014bd0  01 00 53 e1 01 30 43 20  01 00 80 23 80 00 b0 e1  |..S..0C ...#....|
00014be0  03 30 a3 e0 01 00 53 e1  01 30 43 20 01 00 80 23  |.0....S..0C ...#|
00014bf0  80 00 b0 e1 03 30 a3 e0  01 00 53 e1 01 30 43 20  |.....0....S..0C |
00014c00  01 00 80 23 80 00 b0 e1  03 30 a3 e0 01 00 53 e1  |...#.....0....S.|
00014c10  01 30 43 20 01 00 80 23  80 00 b0 e1 03 30 a3 e0  |.0C ...#.....0..|
00014c20  01 00 53 e1 01 30 43 20  01 00 80 23 80 00 b0 e1  |..S..0C ...#....|
00014c30  03 30 a3 e0 01 00 53 e1  01 30 43 20 01 00 80 23  |.0....S..0C ...#|
00014c40  80 00 b0 e1 03 30 a3 e0  01 00 53 e1 01 30 43 20  |.....0....S..0C |
00014c50  01 00 80 23 80 00 b0 e1  03 30 a3 e0 01 00 53 e1  |...#.....0....S.|
00014c60  01 30 43 20 01 00 80 23  80 00 b0 e1 03 30 a3 e0  |.0C ...#.....0..|
00014c70  01 00 53 e1 01 30 43 20  01 00 80 23 80 00 b0 e1  |..S..0C ...#....|
00014c80  03 30 a3 e0 01 00 53 e1  01 30 43 20 01 00 80 23  |.0....S..0C ...#|
00014c90  80 00 b0 e1 03 30 a3 e0  01 00 53 e1 01 30 43 20  |.....0....S..0C |
00014ca0  01 00 80 23 80 00 b0 e1  03 30 a3 e0 01 00 53 e1  |...#.....0....S.|
00014cb0  01 30 43 20 01 00 80 23  80 00 b0 e1 03 30 a3 e0  |.0C ...#.....0..|
00014cc0  01 00 53 e1 01 30 43 20  01 00 80 23 80 00 b0 e1  |..S..0C ...#....|
00014cd0  03 30 a3 e0 01 00 53 e1  01 30 43 20 01 00 80 23  |.0....S..0C ...#|
00014ce0  80 00 b0 e1 03 30 a3 e0  01 00 53 e1 01 30 43 20  |.....0....S..0C |
00014cf0  01 00 80 23 80 00 b0 e1  03 30 a3 e0 01 00 53 e1  |...#.....0....S.|
00014d00  01 30 43 20 01 00 80 23  80 00 b0 e1 03 30 a3 e0  |.0C ...#.....0..|
00014d10  01 00 53 e1 01 30 43 20  01 00 80 23 80 00 b0 e1  |..S..0C ...#....|
00014d20  03 30 a3 e0 01 00 53 e1  01 30 43 20 01 00 80 23  |.0....S..0C ...#|
00014d30  80 00 b0 e1 03 30 a3 e0  01 00 53 e1 01 30 43 20  |.....0....S..0C |
00014d40  01 00 80 23 80 00 b0 e1  03 30 a3 e0 01 00 53 e1  |...#.....0....S.|
00014d50  01 30 43 20 01 00 80 23  80 00 b0 e1 03 30 a3 e0  |.0C ...#.....0..|
00014d60  01 00 53 e1 01 30 43 20  01 00 80 23 80 00 b0 e1  |..S..0C ...#....|
00014d70  03 30 a3 e0 01 00 53 e1  01 30 43 20 01 00 80 23  |.0....S..0C ...#|
00014d80  80 00 b0 e1 03 30 a3 e0  01 00 53 e1 01 30 43 20  |.....0....S..0C |
00014d90  01 00 80 23 80 00 b0 e1  03 30 a3 e0 01 00 53 e1  |...#.....0....S.|
00014da0  01 30 43 20 01 00 80 23  c1 00 53 e1 01 00 80 a2  |.0C ...#..S.....|
00014db0  01 00 12 e3 00 00 60 12  0e f0 b0 e1 6d 75 6c 5f  |......`.....mul_|
00014dc0  66 72 61 63 31 36 00 00  0c 00 00 ff 81 c0 b0 e1  |frac16..........|
00014dd0  00 10 61 22 00 00 30 e3  00 00 60 42 af cf a0 e1  |..a"..0...`B....|
00014de0  0c ce a0 e1 af f0 3c e1  20 c8 a0 e1 0c 08 c0 e1  |......<. .......|
00014df0  21 38 a0 e1 03 18 c1 e1  91 00 02 e0 02 09 12 e3  |!8..............|
00014e00  22 28 a0 e1 01 20 82 12  90 23 22 e0 91 2c 22 e0  |"(... ...#"..,".|
00014e10  9c 03 00 e0 00 08 82 e0  00 00 60 62 0e f0 b0 e1  |..........`b....|
00014e20  6d 75 6c 5f 66 72 61 63  31 36 63 00 0c 00 00 ff  |mul_frac16c.....|
00014e30  81 20 b0 e1 00 10 61 22  00 00 30 e3 00 00 60 42  |. ....a"..0...`B|
00014e40  af 2f a0 e1 02 2e a0 e1  af f0 32 e1 01 08 11 e3  |./........2.....|
00014e50  80 00 a0 11 a1 10 a0 11  20 28 a0 e1 02 08 c0 e1  |........ (......|
00014e60  91 00 00 e0 02 09 10 e3  20 08 a0 e1 01 00 80 12  |........ .......|
00014e70  91 02 20 e0 00 00 60 62  0e f0 b0 e1 73 71 72 74  |.. ...`b....sqrt|
00014e80  5f 66 72 61 63 31 36 00  0c 00 00 ff 00 10 a0 e1  |_frac16.........|
00014e90  01 c0 a0 e3 00 00 a0 e3  00 30 a0 e3 03 21 01 e2  |.........0...!..|
00014ea0  22 2f a0 e1 02 30 83 e1  80 20 8c e0 02 00 53 e1  |"/...0... ....S.|
00014eb0  02 30 43 a0 01 00 80 a2  80 00 a0 e1 03 31 a0 e1  |.0C..........1..|
00014ec0  03 22 01 e2 22 2e a0 e1  02 30 83 e1 80 20 8c e0  |.".."....0... ..|
00014ed0  02 00 53 e1 02 30 43 a0  01 00 80 a2 80 00 a0 e1  |..S..0C.........|
00014ee0  03 31 a0 e1 03 23 01 e2  22 2d a0 e1 02 30 83 e1  |.1...#.."-...0..|
00014ef0  80 20 8c e0 02 00 53 e1  02 30 43 a0 01 00 80 a2  |. ....S..0C.....|
00014f00  80 00 a0 e1 03 31 a0 e1  03 24 01 e2 22 2c a0 e1  |.....1...$..",..|
00014f10  02 30 83 e1 80 20 8c e0  02 00 53 e1 02 30 43 a0  |.0... ....S..0C.|
00014f20  01 00 80 a2 80 00 a0 e1  03 31 a0 e1 03 25 01 e2  |.........1...%..|
00014f30  22 2b a0 e1 02 30 83 e1  80 20 8c e0 02 00 53 e1  |"+...0... ....S.|
00014f40  02 30 43 a0 01 00 80 a2  80 00 a0 e1 03 31 a0 e1  |.0C..........1..|
00014f50  03 26 01 e2 22 2a a0 e1  02 30 83 e1 80 20 8c e0  |.&.."*...0... ..|
00014f60  02 00 53 e1 02 30 43 a0  01 00 80 a2 80 00 a0 e1  |..S..0C.........|
00014f70  03 31 a0 e1 03 27 01 e2  22 29 a0 e1 02 30 83 e1  |.1...'..")...0..|
00014f80  80 20 8c e0 02 00 53 e1  02 30 43 a0 01 00 80 a2  |. ....S..0C.....|
00014f90  80 00 a0 e1 03 31 a0 e1  03 28 01 e2 22 28 a0 e1  |.....1...(.."(..|
00014fa0  02 30 83 e1 80 20 8c e0  02 00 53 e1 02 30 43 a0  |.0... ....S..0C.|
00014fb0  01 00 80 a2 80 00 a0 e1  03 31 a0 e1 03 29 01 e2  |.........1...)..|
00014fc0  22 27 a0 e1 02 30 83 e1  80 20 8c e0 02 00 53 e1  |"'...0... ....S.|
00014fd0  02 30 43 a0 01 00 80 a2  80 00 a0 e1 03 31 a0 e1  |.0C..........1..|
00014fe0  03 2a 01 e2 22 26 a0 e1  02 30 83 e1 80 20 8c e0  |.*.."&...0... ..|
00014ff0  02 00 53 e1 02 30 43 a0  01 00 80 a2 80 00 a0 e1  |..S..0C.........|
00015000  03 31 a0 e1 03 2b 01 e2  22 25 a0 e1 02 30 83 e1  |.1...+.."%...0..|
00015010  80 20 8c e0 02 00 53 e1  02 30 43 a0 01 00 80 a2  |. ....S..0C.....|
00015020  80 00 a0 e1 03 31 a0 e1  03 2c 01 e2 22 24 a0 e1  |.....1...,.."$..|
00015030  02 30 83 e1 80 20 8c e0  02 00 53 e1 02 30 43 a0  |.0... ....S..0C.|
00015040  01 00 80 a2 80 00 a0 e1  03 31 a0 e1 c0 20 01 e2  |.........1... ..|
00015050  22 23 a0 e1 02 30 83 e1  80 20 8c e0 02 00 53 e1  |"#...0... ....S.|
00015060  02 30 43 a0 01 00 80 a2  80 00 a0 e1 03 31 a0 e1  |.0C..........1..|
00015070  30 20 01 e2 22 22 a0 e1  02 30 83 e1 80 20 8c e0  |0 ..""...0... ..|
00015080  02 00 53 e1 02 30 43 a0  01 00 80 a2 80 00 a0 e1  |..S..0C.........|
00015090  03 31 a0 e1 0c 20 01 e2  22 21 a0 e1 02 30 83 e1  |.1... .."!...0..|
000150a0  80 20 8c e0 02 00 53 e1  02 30 43 a0 01 00 80 a2  |. ....S..0C.....|
000150b0  80 00 a0 e1 03 31 a0 e1  03 20 01 e2 02 30 83 e1  |.....1... ...0..|
000150c0  80 20 8c e0 02 00 53 e1  02 30 43 a0 01 00 80 a2  |. ....S..0C.....|
000150d0  80 00 a0 e1 03 31 a0 e1  80 20 8c e0 02 00 53 e1  |.....1... ....S.|
000150e0  02 30 43 a0 01 00 80 a2  80 00 a0 e1 03 31 a0 e1  |.0C..........1..|
000150f0  80 20 8c e0 02 00 53 e1  02 30 43 a0 01 00 80 a2  |. ....S..0C.....|
00015100  80 00 a0 e1 03 31 a0 e1  80 20 8c e0 02 00 53 e1  |.....1... ....S.|
00015110  02 30 43 a0 01 00 80 a2  80 00 a0 e1 03 31 a0 e1  |.0C..........1..|
00015120  80 20 8c e0 02 00 53 e1  02 30 43 a0 01 00 80 a2  |. ....S..0C.....|
00015130  80 00 a0 e1 03 31 a0 e1  80 20 8c e0 02 00 53 e1  |.....1... ....S.|
00015140  02 30 43 a0 01 00 80 a2  80 00 a0 e1 03 31 a0 e1  |.0C..........1..|
00015150  80 20 8c e0 02 00 53 e1  02 30 43 a0 01 00 80 a2  |. ....S..0C.....|
00015160  80 00 a0 e1 03 31 a0 e1  80 20 8c e0 02 00 53 e1  |.....1... ....S.|
00015170  02 30 43 a0 01 00 80 a2  80 00 a0 e1 03 31 a0 e1  |.0C..........1..|
00015180  80 20 8c e0 02 00 53 e1  02 30 43 a0 01 00 80 a2  |. ....S..0C.....|
00015190  0e f0 b0 e1 71 75 69 63  6b 64 69 76 5f 69 6e 69  |....quickdiv_ini|
000151a0  74 00 00 00 10 00 00 ff  f0 4f 2d e9 68 10 8f e2  |t........O-.h...|
000151b0  00 20 a0 e3 0c 30 a0 e3  01 40 a0 e3 02 50 a0 e3  |. ...0...@...P..|
000151c0  03 60 a0 e3 74 00 00 eb  00 00 50 e3 f0 8f fd b8  |.`..t.....P.....|
000151d0  44 10 8f e2 00 10 81 e0  6d 2f 8f e2 02 00 51 e1  |D.......m/....Q.|
000151e0  20 00 9f 85 30 00 8f 85  06 00 e0 83 f0 8f fd 88  | ...0...........|
000151f0  0c 20 8f e2 18 00 92 e8  18 00 a1 e8 08 00 80 e2  |. ..............|
00015200  f0 8f fd e8 0c 00 a0 e1  0e f0 b0 e1 71 75 69 63  |............quic|
00015210  6b 64 69 76 00 00 00 00  0c 00 00 ff 0e f0 b0 e1  |kdiv............|
00015220  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00015390  00 00 00 00 00 00 00 00  00 00 00 00 00 00 50 e3  |..............P.|
000153a0  00 00 e0 03 0e f0 b0 01  00 40 2d e9 01 c0 a0 e3  |.........@-.....|
000153b0  00 00 60 42 00 c0 e0 43  2c c6 8f e5 24 16 8f e5  |..`B...C,...$...|
000153c0  00 b0 a0 e1 e9 02 00 eb  20 b6 8f e5 00 b0 a0 e1  |........ .......|
000153d0  a1 02 00 eb 01 00 7b e3  24 c6 9f 15 0b c0 8c 11  |......{.$.......|
000153e0  04 c6 8c 11 04 c8 8c 11  18 c6 8f 15 05 c0 a0 01  |................|
000153f0  00 c0 e0 13 01 00 75 03  01 00 e0 03 00 80 fd 08  |......u.........|
00015400  0c 50 a0 e1 00 00 53 e3  00 00 54 a3 00 00 52 a3  |.P....S...T...R.|
00015410  01 00 75 a3 01 00 76 a3  02 00 e0 b3 00 80 fd b8  |..u...v.........|
00015420  0e 00 53 e3 0e 00 54 d3  0e 00 52 d3 0e 00 55 d3  |..S...T...R...U.|
00015430  0e 00 56 d3 02 00 e0 c3  00 80 fd c8 04 00 53 e1  |..V...........S.|
00015440  02 00 53 11 02 00 54 11  03 00 e0 03 00 80 fd 08  |..S...T.........|
00015450  06 00 53 e1 06 00 54 11  06 00 52 11 02 00 00 1a  |..S...T...R.....|
00015460  01 00 76 e3 03 00 e0 13  00 80 fd 18 05 00 53 e1  |..v...........S.|
00015470  05 00 54 11 05 00 52 11  05 00 56 11 02 00 00 1a  |..T...R...V.....|
00015480  01 00 75 e3 03 00 e0 13  00 80 fd 18 01 00 50 e3  |..u...........P.|
00015490  0f 00 00 1a 00 00 51 e3  08 00 a0 03 00 80 fd 08  |......Q.........|
000154a0  64 c5 9f e5 04 c6 8c e1  04 c0 81 e4 38 a5 9f e5  |d...........8...|
000154b0  01 00 5a e3 54 c5 9f 05  54 c5 9f 15 03 c6 8c e1  |..Z.T...T.......|
000154c0  02 c0 8c 01 02 c8 8c 11  04 c0 81 e4 08 00 a0 e3  |................|
000154d0  00 80 fd e8 01 00 76 e3  0a 00 00 0a 00 00 51 e3  |......v.......Q.|
000154e0  08 10 81 02 07 00 00 0a  28 c5 9f e5 06 c6 8c e1  |........(.......|
000154f0  02 c8 8c e1 04 c0 81 e4  1c c5 9f e5 02 c6 8c e1  |................|
00015500  02 c8 8c e1 04 c0 81 e4  e0 c4 9f e5 01 a0 a0 e3  |................|
00015510  1a ac a0 e1 0a 00 50 e1  10 00 00 1a c4 a4 9f e5  |......P.........|
00015520  00 00 5a e3 08 10 81 02  0c 01 00 0a dc a4 9f e5  |..Z.............|
00015530  03 a6 8a e1 02 a0 8a e1  20 a0 8a e3 8c a3 8a e1  |........ .......|
00015540  04 a0 81 e4 d4 a4 9f e5  04 a6 8a e1 02 a8 8a e1  |................|
00015550  03 a0 8a e1 8c a3 8a e1  04 a0 81 e4 ff 00 00 ea  |................|
00015560  00 c0 a0 e3 88 c4 8f e5  01 00 75 e3 3f 00 00 0a  |..........u.?...|
00015570  00 70 a0 e1 00 a0 a0 e3  01 00 17 e3 e7 7f a0 01  |.p..............|
00015580  01 a0 8a 02 fb ff ff 0a  00 04 2d e9 00 80 a0 e3  |..........-.....|
00015590  01 90 a0 e3 00 c0 a0 e3  01 80 88 e2 89 90 a0 e1  |................|
000155a0  09 00 17 e1 20 00 58 13  fa ff ff 1a 20 00 58 e3  |.... .X..... .X.|
000155b0  0c 00 00 aa 08 e0 a0 e1  01 80 88 e2 89 90 a0 e1  |................|
000155c0  09 00 17 e1 01 00 00 1a  20 00 58 e3 f9 ff ff 1a  |........ .X.....|
000155d0  0e a0 48 e0 0c 00 5a e1  0e b0 a0 c1 0a c0 a0 c1  |..H...Z.........|
000155e0  20 00 58 e3 eb ff ff ba  00 04 bd e8 00 00 5c e3  | .X...........\.|
000155f0  0c 80 8b c0 77 78 a0 c1  20 80 68 c2 08 a0 8a c0  |....wx.. .h.....|
00015600  01 00 1a e3 e7 7f a0 11  01 a0 8a 12 1f a0 0a e2  |................|
00015610  ff 80 07 e2 cc c3 9f e5  00 00 5c e3 04 10 81 02  |..........\.....|
00015620  e4 e3 9f 15 05 e6 8e 11  8a e3 8e 11 08 e0 8e 11  |................|
00015630  04 e0 81 14 27 74 b0 e1  0c 00 00 0a 08 a0 4a e2  |....'t........J.|
00015640  1f a0 0a e2 ff 80 17 e2  f9 ff ff 0a 00 00 5c e3  |..............\.|
00015650  04 10 81 02 c8 e3 9f 15  05 e6 8e 11 05 e8 8e 11  |................|
00015660  8a e3 8e 11 08 e0 8e 11  04 e0 81 14 f0 ff ff ea  |................|
00015670  78 a3 9f e5 7c a3 8f e5  30 0a a0 e1 01 c0 a0 e3  |x...|...0.......|
00015680  00 80 a0 e3 00 90 a0 e3  00 00 5c e1 00 c0 4c a0  |..........\...L.|
00015690  01 80 88 a2 00 00 5c e3  04 00 00 0a 0c c0 ac e0  |......\.........|
000156a0  88 80 a0 e1 01 90 89 e2  20 00 59 e3 f5 ff ff da  |........ .Y.....|
000156b0  08 b0 a0 e1 2d 02 00 eb  0b a0 4a e0 38 8b a0 e1  |....-.....J.8...|
000156c0  28 a3 8f e5 01 00 58 e3  16 00 00 0a 28 83 8f e5  |(.....X.....(...|
000156d0  28 93 8f e5 08 b0 a0 e1  e9 7f 8f e2 42 8e 8f e2  |(...........B...|
000156e0  40 c3 9f e5 02 98 82 e1  03 96 89 e1 09 c0 8c e1  |@...............|
000156f0  64 c3 8f e5 34 c3 9f e5  09 90 8c e1 60 93 8f e5  |d...4.......`...|
00015700  03 98 82 e1 03 96 89 e1  09 c0 8c e1 54 c3 8f e5  |............T...|
00015710  14 c3 9f e5 09 c0 8c e1  40 c3 8f e5 f8 00 00 eb  |........@.......|
00015720  d4 82 9f e5 d4 92 9f e5  08 b0 a0 e1 69 01 00 eb  |............i...|
00015730  01 c0 89 e2 ac a2 9f e5  00 00 5a e3 08 00 00 1a  |..........Z.....|
00015740  20 00 5c e3 1b 00 00 aa  01 00 58 e3 00 80 a0 03  | .\.......X.....|
00015750  04 10 81 e2 8c c0 a0 e1  20 00 5c e3 fb ff ff ba  |........ .\.....|
00015760  14 00 00 ea 20 00 5c e3  12 00 00 aa bc e2 9f e5  |.... .\.........|
00015770  03 e6 8e e1 01 00 58 e3  00 80 a0 03 02 a8 82 01  |......X.........|
00015780  03 a8 83 11 8c a3 8a e1  0a a0 8e e1 04 a0 81 e4  |................|
00015790  8c c0 a0 e1 20 00 5c e3  06 00 00 aa 03 a8 83 e1  |.... .\.........|
000157a0  0a e0 8e e1 8c a3 8e e1  04 a0 81 e4 8c c0 a0 e1  |................|
000157b0  20 00 5c e3 fa ff ff ba  28 c2 9f e5 01 00 58 e3  | .\.....(.....X.|
000157c0  05 00 00 1a 00 00 5c e3  04 10 81 02 3c a2 9f 15  |......\.....<...|
000157d0  03 a6 8a 11 02 a0 8a 11  04 a0 81 14 0c e2 9f e5  |................|
000157e0  09 e0 8e e0 0b e0 4e e0  02 e0 9e e2 06 00 00 da  |......N.........|
000157f0  00 00 5c e3 04 10 81 02  34 a2 9f 15 03 a6 8a 11  |..\.....4.......|
00015800  03 a0 8a 11 8e a3 8a 11  04 a0 81 14 00 b0 a0 e1  |................|
00015810  9b 7f 8f e2 ba 8f 8f e2  03 c8 83 e1 04 c6 8c e1  |................|
00015820  03 a8 84 e1 04 a6 8a e1  e0 e1 9f e5 0c 90 8e e1  |................|
00015830  34 92 8f e5 0a 90 8e e1  30 92 8f e5 e4 e1 9f e5  |4.......0.......|
00015840  0c 90 8e e1 28 92 8f e5  0a 90 8e e1 24 92 8f e5  |....(.......$...|
00015850  e0 e1 9f e5 0c 90 8e e1  1c 92 8f e5 0a 90 8e e1  |................|
00015860  18 92 8f e5 e5 00 00 eb  78 91 9f e5 84 e1 9f e5  |........x.......|
00015870  10 0e a0 e1 00 00 59 e3  04 10 81 02 b8 c1 9f 15  |......Y.........|
00015880  04 c6 8c 11 02 c8 8c 11  04 c0 8c 11 8e c3 8c 11  |................|
00015890  04 c0 81 14 58 c1 9f e5  03 00 00 1a 00 00 5c e3  |....X.........\.|
000158a0  0c 10 81 02 14 10 81 12  2c 00 00 ea 01 00 75 e3  |........,.....u.|
000158b0  13 00 00 1a 00 00 5c e3  80 c1 9f 15 03 c6 8c 11  |......\.........|
000158c0  03 c8 8c 11 04 c0 81 14  38 c1 9f e5 01 a1 8c 13  |........8.......|
000158d0  02 a5 8a 13 04 a0 81 14  0e a2 8c e3 15 a6 8a e3  |................|
000158e0  04 a0 81 e4 58 a1 9f e5  03 a6 8a e1 03 a8 8a e1  |....X...........|
000158f0  04 a0 81 e4 0a a2 8c e3  01 a5 8a e3 04 a0 81 e4  |................|
00015900  16 00 00 ea 00 00 5c e3  30 c1 9f 15 03 c6 8c 11  |......\.0.......|
00015910  03 c8 8c 11 04 c0 81 14  28 c1 9f 15 04 c6 8c 11  |........(.......|
00015920  04 c8 8c 11 05 c0 8c 11  04 c0 81 14 18 c1 9f e5  |................|
00015930  04 a8 8c e1 05 a0 8a e1  04 a0 81 e4 00 a1 9f e5  |................|
00015940  03 a6 8a e1 03 a8 8a e1  04 a0 81 e4 fc c0 9f e5  |................|
00015950  04 c6 8c e1 04 c8 8c e1  05 c0 8c e1 04 c0 81 e4  |................|
00015960  80 90 9f e5 80 e0 9f e5  01 00 76 e3 08 00 00 1a  |..........v.....|
00015970  01 00 7e e3 18 00 00 1a  00 00 59 e3 04 10 81 02  |..~.......Y.....|
00015980  8c c0 9f 15 03 c6 8c 11  03 c8 8c 11 04 c0 81 14  |................|
00015990  11 00 00 ea 00 00 59 e3  10 10 81 02 0e 00 00 0a  |......Y.........|
000159a0  ac c0 9f e5 06 c8 8c e1  04 c0 81 e4 a4 a0 9f e5  |................|
000159b0  02 c6 8a e1 02 c8 8c e1  04 c0 81 e4 04 c6 8a e1  |................|
000159c0  04 c8 8c e1 04 c0 81 e4  03 c6 8a e1 03 c8 8c e1  |................|
000159d0  01 00 7e e3 01 c2 8c 03  04 c0 81 e4 04 c0 9f e5  |..~.............|
000159e0  0c 00 41 e0 00 80 fd e8  00 00 00 00 00 00 00 00  |..A.............|
000159f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00015a00  00 00 00 00 00 00 00 02  00 00 00 00 00 00 a0 e3  |................|
00015a10  00 00 a0 e1 00 00 60 e2  02 01 10 e2 00 00 60 12  |......`.......`.|
00015a20  00 00 40 e0 00 00 80 e3  00 00 80 e0 20 00 40 e0  |..@......... .@.|
00015a30  20 00 80 e0 20 00 a0 e1  00 00 60 e0 00 00 50 e0  | ... .....`...P.|
00015a40  01 00 40 42 01 00 80 a2  00 00 80 40 00 00 50 e1  |..@B.......@..P.|
00015a50  00 00 40 a0 02 01 30 e3  00 00 60 02 00 00 00 00  |..@...0...`.....|
00015a60  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00015b00  00 00 00 00 08 00 57 e1  04 00 e0 a3 00 80 fd a8  |......W.........|
00015b10  0b 90 a0 e1 0e c0 a0 e1  6e 00 00 eb 01 e0 4b e2  |........n.....K.|
00015b20  00 50 a7 e8 03 a0 19 e2  02 00 5a 13 05 00 e0 03  |.P........Z.....|
00015b30  00 80 fd 08 01 00 5a e3  01 90 49 02 01 90 89 12  |......Z...I.....|
00015b40  01 c0 a0 13 58 c1 0f 15  09 b0 a0 e1 07 01 00 eb  |....X...........|
00015b50  39 9b a0 e1 01 00 59 e3  0f 00 00 1a 7c c1 1f e5  |9.....Y.....|...|
00015b60  00 00 5c e3 03 00 00 1a  01 00 5a e3 04 10 81 02  |..\.......Z.....|
00015b70  08 10 81 12 1f 00 00 ea  04 e0 17 e5 01 00 5a e3  |..............Z.|
00015b80  2c c1 1f 15 04 c0 81 14  30 c1 1f 15 30 c1 1f 05  |,.......0...0...|
00015b90  8e c3 8c e1 04 c0 81 e4  16 00 00 ea 01 00 5a e3  |..............Z.|
00015ba0  0a 00 00 0a 09 b0 a0 e1  d5 ff ff eb cc c1 1f e5  |................|
00015bb0  00 00 5c e3 04 10 81 02  0e 00 00 0a 04 b0 17 e5  |..\.............|
00015bc0  68 c1 1f e5 8b c3 8c e1  04 c0 81 e4 09 00 00 ea  |h...............|
00015bd0  09 b0 a0 e1 ca ff ff eb  f8 c1 1f e5 00 00 5c e3  |..............\.|
00015be0  04 10 81 02 03 00 00 0a  04 b0 17 e5 8c c1 1f e5  |................|
00015bf0  8b c3 8c e1 04 c0 81 e4  00 0c 37 e9 0a f0 b0 e1  |..........7.....|
00015c00  08 00 57 e1 04 00 e0 a3  00 80 fd a8 00 40 a7 e8  |..W..........@..|
00015c10  03 c0 1b e2 02 00 5c 13  0b 00 00 1a 0b 90 a0 e1  |......\.........|
00015c20  d2 00 00 eb 00 08 a7 e8  39 9b a0 e1 01 00 59 e3  |........9.....Y.|
00015c30  cc a1 1f 05 20 00 00 0a  09 b0 a0 e1 ef ff ff eb  |.... ...........|
00015c40  04 b0 17 e5 dc a1 1f e5  1b 00 00 ea 01 00 5c e3  |..............\.|
00015c50  0c 00 00 1a 01 b0 4b e2  0b 90 a0 e1 c3 00 00 eb  |......K.........|
00015c60  00 08 a7 e8 39 9b a0 e1  01 00 59 e3 00 a2 1f 05  |....9.....Y.....|
00015c70  11 00 00 0a 09 b0 a0 e1  e0 ff ff eb 04 b0 17 e5  |................|
00015c80  10 a2 1f e5 0c 00 00 ea  01 b0 8b e2 0b 90 a0 e1  |................|
00015c90  b6 00 00 eb 00 08 a7 e8  39 9b a0 e1 01 00 59 e3  |........9.....Y.|
00015ca0  2c a2 1f 05 04 00 00 0a  09 b0 a0 e1 d3 ff ff eb  |,...............|
00015cb0  04 b0 17 e5 3c a2 1f e5  ff ff ff ea dc c2 1f e5  |....<...........|
00015cc0  00 00 5c e3 04 10 81 02  8b a3 8a 11 04 a0 81 14  |..\.............|
00015cd0  00 0c 37 e9 0a f0 b0 e1  0b a0 b0 e1 00 b0 a0 e3  |..7.............|
00015ce0  01 b0 8b 12 aa a0 b0 11  0e f0 b0 01 01 b0 8b 12  |................|
00015cf0  aa a0 b0 11 0e f0 b0 01  01 b0 8b 12 aa a0 b0 11  |................|
00015d00  0e f0 b0 01 01 b0 8b 12  aa a0 b0 11 0e f0 b0 01  |................|
00015d10  01 b0 8b 12 aa a0 b0 11  0e f0 b0 01 01 b0 8b 12  |................|
00015d20  aa a0 b0 11 0e f0 b0 01  01 b0 8b 12 aa a0 b0 11  |................|
00015d30  0e f0 b0 01 01 b0 8b 12  aa a0 b0 11 0e f0 b0 01  |................|
00015d40  01 b0 8b 12 aa a0 b0 11  0e f0 b0 01 01 b0 8b 12  |................|
00015d50  aa a0 b0 11 0e f0 b0 01  01 b0 8b 12 aa a0 b0 11  |................|
00015d60  0e f0 b0 01 01 b0 8b 12  aa a0 b0 11 0e f0 b0 01  |................|
00015d70  01 b0 8b 12 aa a0 b0 11  0e f0 b0 01 01 b0 8b 12  |................|
00015d80  aa a0 b0 11 0e f0 b0 01  01 b0 8b 12 aa a0 b0 11  |................|
00015d90  0e f0 b0 01 01 b0 8b 12  aa a0 b0 11 0e f0 b0 01  |................|
00015da0  01 b0 8b 12 aa a0 b0 11  0e f0 b0 01 01 b0 8b 12  |................|
00015db0  aa a0 b0 11 0e f0 b0 01  01 b0 8b 12 aa a0 b0 11  |................|
00015dc0  0e f0 b0 01 01 b0 8b 12  aa a0 b0 11 0e f0 b0 01  |................|
00015dd0  01 b0 8b 12 aa a0 b0 11  0e f0 b0 01 01 b0 8b 12  |................|
00015de0  aa a0 b0 11 0e f0 b0 01  01 b0 8b 12 aa a0 b0 11  |................|
00015df0  0e f0 b0 01 01 b0 8b 12  aa a0 b0 11 0e f0 b0 01  |................|
00015e00  01 b0 8b 12 aa a0 b0 11  0e f0 b0 01 01 b0 8b 12  |................|
00015e10  aa a0 b0 11 0e f0 b0 01  01 b0 8b 12 aa a0 b0 11  |................|
00015e20  0e f0 b0 01 01 b0 8b 12  aa a0 b0 11 0e f0 b0 01  |................|
00015e30  01 b0 8b 12 aa a0 b0 11  0e f0 b0 01 01 b0 8b 12  |................|
00015e40  aa a0 b0 11 0e f0 b0 01  01 b0 8b 12 aa a0 b0 11  |................|
00015e50  0e f0 b0 01 01 b0 8b e2  0e f0 b0 e1 00 c0 a0 e3  |................|
00015e60  ff a0 db e3 3f 00 00 0a  6b bf a0 e1 01 cc 8c e2  |....?...k.......|
00015e70  ff a0 db e3 3b 00 00 0a  6b bf a0 e1 01 cc 8c e2  |....;...k.......|
00015e80  ff a0 db e3 37 00 00 0a  6b bf a0 e1 01 cc 8c e2  |....7...k.......|
00015e90  ff a0 db e3 33 00 00 0a  6b bf a0 e1 01 cc 8c e2  |....3...k.......|
00015ea0  ff a0 db e3 2f 00 00 0a  6b bf a0 e1 01 cc 8c e2  |..../...k.......|
00015eb0  ff a0 db e3 2b 00 00 0a  6b bf a0 e1 01 cc 8c e2  |....+...k.......|
00015ec0  ff a0 db e3 27 00 00 0a  6b bf a0 e1 01 cc 8c e2  |....'...k.......|
00015ed0  ff a0 db e3 23 00 00 0a  6b bf a0 e1 01 cc 8c e2  |....#...k.......|
00015ee0  ff a0 db e3 1f 00 00 0a  6b bf a0 e1 01 cc 8c e2  |........k.......|
00015ef0  ff a0 db e3 1b 00 00 0a  6b bf a0 e1 01 cc 8c e2  |........k.......|
00015f00  ff a0 db e3 17 00 00 0a  6b bf a0 e1 01 cc 8c e2  |........k.......|
00015f10  ff a0 db e3 13 00 00 0a  6b bf a0 e1 01 cc 8c e2  |........k.......|
00015f20  ff a0 db e3 0f 00 00 0a  6b bf a0 e1 01 cc 8c e2  |........k.......|
00015f30  ff a0 db e3 0b 00 00 0a  6b bf a0 e1 01 cc 8c e2  |........k.......|
00015f40  ff a0 db e3 07 00 00 0a  6b bf a0 e1 01 cc 8c e2  |........k.......|
00015f50  ff a0 db e3 03 00 00 0a  6b bf a0 e1 01 cc 8c e2  |........k.......|
00015f60  00 b0 e0 e3 0e f0 b0 e1  0b b0 8c e1 0e f0 b0 e1  |................|
00015f70  0b c0 b0 e1 00 b0 a0 e3  0e f0 b0 01 ac c0 b0 e1  |................|
00015f80  01 b0 8b 32 0e f0 b0 21  ac c0 b0 e1 01 b0 8b 32  |...2...!.......2|
00015f90  0e f0 b0 21 ac c0 b0 e1  01 b0 8b 32 0e f0 b0 21  |...!.......2...!|
00015fa0  ac c0 b0 e1 01 b0 8b 32  0e f0 b0 21 ac c0 b0 e1  |.......2...!....|
00015fb0  01 b0 8b 32 0e f0 b0 21  ac c0 b0 e1 01 b0 8b 32  |...2...!.......2|
00015fc0  0e f0 b0 21 ac c0 b0 e1  01 b0 8b 32 0e f0 b0 21  |...!.......2...!|
00015fd0  ac c0 b0 e1 01 b0 8b 32  0e f0 b0 21 ac c0 b0 e1  |.......2...!....|
00015fe0  01 b0 8b 32 0e f0 b0 21  ac c0 b0 e1 01 b0 8b 32  |...2...!.......2|
00015ff0  0e f0 b0 21 ac c0 b0 e1  01 b0 8b 32 0e f0 b0 21  |...!.......2...!|
00016000  ac c0 b0 e1 01 b0 8b 32  0e f0 b0 21 ac c0 b0 e1  |.......2...!....|
00016010  01 b0 8b 32 0e f0 b0 21  ac c0 b0 e1 01 b0 8b 32  |...2...!.......2|
00016020  0e f0 b0 21 ac c0 b0 e1  01 b0 8b 32 0e f0 b0 21  |...!.......2...!|
00016030  ac c0 b0 e1 01 b0 8b 32  0e f0 b0 21 ac c0 b0 e1  |.......2...!....|
00016040  01 b0 8b 32 0e f0 b0 21  ac c0 b0 e1 01 b0 8b 32  |...2...!.......2|
00016050  0e f0 b0 21 ac c0 b0 e1  01 b0 8b 32 0e f0 b0 21  |...!.......2...!|
00016060  ac c0 b0 e1 01 b0 8b 32  0e f0 b0 21 ac c0 b0 e1  |.......2...!....|
00016070  01 b0 8b 32 0e f0 b0 21  ac c0 b0 e1 01 b0 8b 32  |...2...!.......2|
00016080  0e f0 b0 21 ac c0 b0 e1  01 b0 8b 32 0e f0 b0 21  |...!.......2...!|
00016090  ac c0 b0 e1 01 b0 8b 32  0e f0 b0 21 ac c0 b0 e1  |.......2...!....|
000160a0  01 b0 8b 32 0e f0 b0 21  ac c0 b0 e1 01 b0 8b 32  |...2...!.......2|
000160b0  0e f0 b0 21 ac c0 b0 e1  01 b0 8b 32 0e f0 b0 21  |...!.......2...!|
000160c0  ac c0 b0 e1 01 b0 8b 32  0e f0 b0 21 ac c0 b0 e1  |.......2...!....|
000160d0  01 b0 8b 32 0e f0 b0 21  ac c0 b0 e1 01 b0 8b 32  |...2...!.......2|
000160e0  0e f0 b0 21 ac c0 b0 e1  01 b0 8b 32 0e f0 b0 21  |...!.......2...!|
000160f0  0e f0 b0 e1 2c 2c 00 00  00 00 00 00 00 00 00 00  |....,,..........|
00016100  1d 00 00 ea 1c 00 00 ea  14 00 00 ea 32 00 00 ea  |............2...|
00016110  07 00 00 ea 00 80 bd e8  00 80 bd e8 20 00 00 00  |............ ...|
00016120  56 6f 69 63 65 4f 66 43  68 61 6f 73 00 00 00 00  |VoiceOfChaos....|
00016130  00 00 00 00 1f 00 2d e9  00 00 a0 e3 00 10 a0 e3  |......-.........|
00016140  00 20 a0 e3 00 30 a0 e3  00 40 a0 e3 40 01 06 ef  |. ...0...@..@...|
00016150  0c 00 93 75 2c 00 0f 75  00 00 8d 64 1f 80 bd e8  |...u,..u...d....|
00016160  70 00 1f e5 10 00 89 e5  18 00 89 e5 44 00 1f e5  |p...........D...|
00016170  14 00 89 e5 80 00 1f e5  1c 00 89 e5 fe 01 99 e8  |................|
00016180  7f 10 01 e2 81 10 d6 e7  a1 10 a0 e1 7f 10 61 e2  |..............a.|
00016190  01 00 d5 e4 08 00 55 e1  07 50 a0 21 81 00 50 e0  |......U..P.!..P.|
000161a0  00 00 a0 43 0b 00 cc e6  01 00 d5 e4 08 00 55 e1  |...C..........U.|
000161b0  07 50 a0 21 81 00 50 e0  00 00 a0 43 0b 00 cc e6  |.P.!..P....C....|
000161c0  0a 00 5c e1 f1 ff ff ba  01 40 54 e2 3c 00 89 e9  |..\......@T.<...|
000161d0  08 00 a0 53 02 00 a0 43  00 80 bd e8 00 00 a0 e3  |...S...C........|
000161e0  0b 00 cc e6 0b 00 cc e6  0a 00 5c e1 fb ff ff ba  |..........\.....|
000161f0  01 00 a0 e3 00 80 bd e8  70 69 74 63 68 31 36 00  |........pitch16.|
00016200  08 00 00 ff 02 09 50 e3  0e f0 b0 21 40 36 a0 e1  |......P....!@6..|
00016210  03 06 c0 e1 80 02 a0 e1  01 08 40 e2 00 21 80 e0  |..........@..!..|
00016220  80 11 82 e0 80 13 81 e0  82 15 81 e0 41 18 a0 e1  |............A...|
00016230  01 18 81 e2 5f 1c 81 e2  62 10 81 e2 00 c0 a0 e1  |...._...b.......|
00016240  8c 20 b0 e1 00 c0 6c 22  00 00 31 e3 00 10 61 42  |. ....l"..1...aB|
00016250  af 2f a0 e1 02 2e a0 e1  af f0 32 e1 01 08 1c e3  |./........2.....|
00016260  81 10 a0 11 ac c0 a0 11  21 28 a0 e1 02 18 c1 e1  |........!(......|
00016270  9c 01 01 e0 02 09 11 e3  21 18 a0 e1 01 10 81 12  |........!.......|
00016280  9c 12 21 e0 00 10 61 62  07 18 81 e2 d7 1c 81 e2  |..!...ab........|
00016290  73 10 81 e2 00 c0 a0 e1  8c 20 b0 e1 00 c0 6c 22  |s........ ....l"|
000162a0  00 00 31 e3 00 10 61 42  af 2f a0 e1 02 2e a0 e1  |..1...aB./......|
000162b0  af f0 32 e1 01 08 1c e3  81 10 a0 11 ac c0 a0 11  |..2.............|
000162c0  21 28 a0 e1 02 18 c1 e1  9c 01 01 e0 02 09 11 e3  |!(..............|
000162d0  21 18 a0 e1 01 10 81 12  9c 12 21 e0 00 10 61 62  |!.........!...ab|
000162e0  16 18 81 e2 0a 1a 81 e2  2e 10 81 e2 81 01 61 e0  |..............a.|
000162f0  01 21 61 e0 02 02 80 e0  02 04 80 e0 18 30 63 e2  |.!a..........0c.|
00016300  30 03 b0 e1 00 00 a0 e2  0e f0 b0 e1 20 2c 00 00  |0........... ,..|
00016310  00 00 02 00 04 00 00 00  01 00 00 00 00 00 00 00  |................|
00016320  04 00 00 00 0c 00 00 00  03 00 00 00 0c 00 00 00  |................|
00016330  04 00 00 00 14 00 00 00  03 00 00 00 a0 01 00 00  |................|
00016340  04 00 00 00 1a 00 00 00  03 00 00 00 68 02 00 00  |............h...|
00016350  04 00 00 00 1f 00 00 00  03 00 00 00 94 05 00 00  |................|
00016360  04 00 00 00 25 00 00 00  03 00 00 00 44 07 00 00  |....%.......D...|
00016370  04 00 00 00 2b 00 00 00  03 00 00 00 f8 08 00 00  |....+...........|
00016380  04 00 00 00 31 00 00 00  03 00 00 00 a8 0a 00 00  |....1...........|
00016390  04 00 00 00 37 00 00 00  03 00 00 00 f4 0f 00 00  |....7...........|
000163a0  04 00 00 00 3d 00 00 00  03 00 00 00 40 15 00 00  |....=.......@...|
000163b0  04 00 00 00 45 00 00 00  03 00 00 00 14 16 00 00  |....E...........|
000163c0  04 00 00 00 4e 00 00 00  03 00 00 00 34 16 00 00  |....N.......4...|
000163d0  04 00 00 00 59 00 00 00  03 00 00 00 f8 18 00 00  |....Y...........|
000163e0  04 00 00 00 64 00 00 00  03 00 00 00 5c 19 00 00  |....d.......\...|
000163f0  04 00 00 00 70 00 00 00  03 00 00 00 b8 19 00 00  |....p...........|
00016400  04 00 00 00 7c 00 00 00  03 00 00 00 d4 1c 00 00  |....|...........|
00016410  04 00 00 00 8a 00 00 00  03 00 00 00 48 1d 00 00  |............H...|
00016420  04 00 00 00 93 00 00 00  03 00 00 00 20 2c 00 00  |............ ,..|
00016430  04 00 00 00 9e 00 00 00  03 00 00 00 24 2c 00 00  |............$,..|
00016440  04 00 00 00 a8 00 00 00  03 00 00 00 28 2c 00 00  |............(,..|
00016450  04 00 00 00 b1 00 00 00  03 00 00 00 30 2d 00 00  |............0-..|
00016460  04 00 00 00 b9 00 00 00  43 24 24 63 6f 64 65 00  |........C$$code.|
00016470  72 62 62 63 69 6e 63 00  70 6f 77 31 36 00 6c 6e  |rbbcinc.pow16.ln|
00016480  31 36 00 65 78 70 31 36  00 63 6f 73 31 36 00 73  |16.exp16.cos16.s|
00016490  69 6e 31 36 00 61 63 73  31 36 00 61 73 6e 31 36  |in16.acs16.asn16|
000164a0  00 67 61 75 73 73 31 36  00 73 67 61 75 73 73 31  |.gauss16.sgauss1|
000164b0  36 00 64 69 76 5f 66 72  61 63 31 36 00 6d 75 6c  |6.div_frac16.mul|
000164c0  5f 66 72 61 63 31 36 00  6d 75 6c 5f 66 72 61 63  |_frac16.mul_frac|
000164d0  31 36 63 00 73 71 72 74  5f 66 72 61 63 31 36 00  |16c.sqrt_frac16.|
000164e0  71 75 69 63 6b 64 69 76  5f 69 6e 69 74 00 71 75  |quickdiv_init.qu|
000164f0  69 63 6b 64 69 76 00 76  6f 69 63 65 5f 62 61 73  |ickdiv.voice_bas|
00016500  65 00 77 61 76 65 5f 62  61 73 65 00 77 61 76 65  |e.wave_base.wave|
00016510  5f 65 6e 64 00 70 69 74  63 68 31 36 00 00 00 00  |_end.pitch16....|
00016520  41 52 4d 20 41 4f 46 20  4d 61 63 72 6f 20 41 73  |ARM AOF Macro As|
00016530  73 65 6d 62 6c 65 72 20  56 65 72 73 69 6f 6e 20  |sembler Version |
00016540  32 2e 30 30 00 00 00 00  1a 80 1a 82 73 00 00 00  |2.00........s...|
00016550  00 00 00 00 00 00 00 00  00 de c8 00 00 a8 20 77  |.............. w|
00016560  6a 00 00 de c8 00 00 46  dc fd ff de b2 17 cb 00  |j......F........|
00016570  00 00 00 1a 82 67 65 6e  65 72 61 74 6f 72 63 00  |.....generatorc.|
00016580  00 00 56 4a 00 00 a1 20  41 9f 70 2b 56 4a 00 00  |..VJ... A.p+VJ..|
00016590  46 ff ff ff ec 4e a1 c7  03 00 00 00 3b 20 71 75  |F....N......; qu|
000165a0  69 63 6b 64 69 76 5f 69  6e 69 74 0a 3b 20 61 20  |ickdiv_init.; a |
000165b0  6c 65 61 66 20 41 50 43  53 20 66 75 6e 63 74 69  |leaf APCS functi|
000165c0  6f 6e 0a 3b 0a 3b 20 43  20 70 72 6f 74 6f 74 79  |on.;.; C prototy|
000165d0  70 65 3a 0a 3b 20 69 6e  74 20 71 75 69 63 6b 64  |pe:.; int quickd|
000165e0  69 76 5f 69 6e 69 74 28  69 6e 74 20 64 69 76 69  |iv_init(int divi|
000165f0  73 6f 72 29 0a 3b 0a 3b  20 61 73 73 65 6d 62 6c  |sor).;.; assembl|
00016600  65 73 20 74 68 65 20 43  20 66 75 6e 63 74 69 6f  |es the C functio|
00016610  6e 20 71 75 69 63 6b 64  69 76 2c 20 62 65 6c 6f  |n quickdiv, belo|
00016620  77 2c 20 74 6f 20 63 61  72 72 79 20 6f 75 74 20  |w, to carry out |
00016630  72 61 70 69 64 20 64 69  76 69 73 69 6f 6e 20 62  |rapid division b|
00016640  79 20 74 68 65 20 73 75  70 70 6c 69 65 64 20 64  |y the supplied d|
00016650  69 76 69 73 6f 72 20 2d  0a 3b 20 61 66 74 65 72  |ivisor -.; after|
00016660  20 63 61 6c 6c 69 6e 67  20 74 68 69 73 20 66 6e  | calling this fn|
00016670  2c 20 63 61 72 72 79 20  6f 75 74 20 61 20 64 69  |, carry out a di|
00016680  76 69 73 69 6f 6e 20 76  69 61 20 71 75 6f 74 69  |vision via quoti|
00016690  65 6e 74 3d 71 75 69 63  6b 64 69 76 28 6e 75 6d  |ent=quickdiv(num|
000166a0  65 72 61 74 6f 72 29 3b  0a 3b 0a 3b 20 65 67 20  |erator);.;.; eg |
000166b0  75 73 65 3a 09 66 6f 72  20 28 69 3d 30 3b 69 3c  |use:.for (i=0;i<|
000166c0  31 30 30 30 30 3b 69 2b  2b 29 20 70 72 69 6e 74  |10000;i++) print|
000166d0  66 28 22 25 69 22 2c 20  69 2f 6e 29 3b 0a 3b 20  |f("%i", i/n);.; |
000166e0  72 65 70 6c 61 63 65 20  77 69 74 68 3a 09 71 75  |replace with:.qu|
000166f0  69 63 6b 64 69 76 5f 69  6e 69 74 28 6e 29 3b 20  |ickdiv_init(n); |
00016700  66 6f 72 20 28 69 3d 30  3b 69 3c 31 30 30 30 30  |for (i=0;i<10000|
00016710  3b 69 2b 2b 29 20 70 72  69 6e 74 66 28 22 25 69  |;i++) printf("%i|
00016720  22 2c 20 71 75 69 63 6b  64 69 76 28 69 29 29 3b  |", quickdiv(i));|
00016730  0a 3b 0a 3b 20 6e 62 20  69 6e 69 74 20 65 78 65  |.;.; nb init exe|
00016740  63 75 74 65 73 20 69 6e  20 61 62 6f 75 74 20 32  |cutes in about 2|
00016750  30 20 78 20 74 69 6d 65  20 6f 66 20 61 20 64 65  |0 x time of a de|
00016760  63 65 6e 74 20 66 6f 75  72 69 65 72 20 64 69 76  |cent fourier div|
00016770  20 72 6f 75 74 69 6e 65  2c 20 77 68 69 6c 65 20  | routine, while |
00016780  71 75 69 63 6b 64 69 76  20 74 79 70 69 63 61 6c  |quickdiv typical|
00016790  6c 79 20 65 78 65 63 75  74 65 73 0a 3b 20 69 6e  |ly executes.; in|
000167a0  20 75 6e 64 65 72 20 30  2e 32 20 78 20 74 69 6d  | under 0.2 x tim|
000167b0  65 20 66 64 69 76 20 72  6f 75 74 69 6e 65 2c 20  |e fdiv routine, |
000167c0  74 68 75 73 20 69 6e 20  61 62 6f 76 65 20 6c 6f  |thus in above lo|
000167d0  6f 70 20 63 61 6c 63 20  77 65 20 6d 61 6b 65 20  |op calc we make |
000167e0  73 70 65 65 64 20 73 61  76 69 6e 67 20 61 66 74  |speed saving aft|
000167f0  65 72 20 6c 6f 6f 70 20  65 78 63 65 65 64 73 20  |er loop exceeds |
00016800  7e 32 35 0a 3b 20 61 6e  64 20 66 6f 72 20 66 75  |~25.; and for fu|
00016810  6c 6c 20 31 30 30 30 30  20 6c 69 6d 69 74 2c 20  |ll 10000 limit, |
00016820  67 65 74 20 73 70 65 65  64 20 69 6e 63 72 65 61  |get speed increa|
00016830  73 65 20 69 6e 20 64 69  76 20 63 61 6c 63 20 6f  |se in div calc o|
00016840  66 20 61 62 6f 75 74 20  34 2e 39 35 0a 3b 0a 3b  |f about 4.95.;.;|
00016850  20 6e 62 32 20 77 68 65  6e 20 69 6e 20 64 69 72  | nb2 when in dir|
00016860  65 63 74 20 63 6f 6d 70  61 72 69 73 6f 6e 20 77  |ect comparison w|
00016870  69 74 68 20 41 63 6f 72  6e 27 73 20 64 69 76 69  |ith Acorn's divi|
00016880  73 69 6f 6e 20 63 6f 64  65 2c 20 6e 6f 74 65 20  |sion code, note |
00016890  69 74 20 69 73 20 6f 70  74 69 6d 69 73 65 64 20  |it is optimised |
000168a0  66 6f 72 20 6c 6f 77 20  6e 75 6d 65 72 61 74 6f  |for low numerato|
000168b0  72 2c 20 61 6e 64 0a 3b  20 77 69 6c 6c 20 74 68  |r, and.; will th|
000168c0  65 6e 20 65 71 75 61 6c  20 6f 72 20 6f 75 74 70  |en equal or outp|
000168d0  65 72 66 6f 72 6d 20 74  68 69 73 20 63 6f 64 65  |erform this code|
000168e0  2c 20 68 6f 77 65 76 65  72 20 6f 6e 63 65 20 6e  |, however once n|
000168f0  75 6d 65 72 61 74 6f 72  20 67 65 74 73 20 62 69  |umerator gets bi|
00016900  67 67 65 72 20 74 68 61  6e 20 7e 32 5e 39 20 61  |gger than ~2^9 a|
00016910  6e 64 20 68 61 76 65 20  6c 6f 6f 70 3e 7e 32 35  |nd have loop>~25|
00016920  0a 3b 20 77 65 20 6d 61  6b 65 20 73 61 76 69 6e  |.; we make savin|
00016930  67 73 3b 20 74 68 65 73  65 20 62 65 63 6f 6d 65  |gs; these become|
00016940  20 33 30 30 25 2d 36 30  30 25 20 66 6f 72 20 6e  | 300%-600% for n|
00016950  75 6d 65 72 61 74 6f 72  20 7e 31 36 20 62 69 74  |umerator ~16 bit|
00016960  73 20 6f 72 20 6d 6f 72  65 20 61 6e 64 20 6c 61  |s or more and la|
00016970  72 67 65 20 6c 6f 6f 70  73 2e 0a 3b 0a 3b 20 72  |rge loops..;.; r|
00016980  65 74 75 72 6e 20 63 6f  64 65 73 20 61 73 20 66  |eturn codes as f|
00016990  6f 72 20 67 65 6e 20 62  65 6c 6f 77 2c 20 70 6c  |or gen below, pl|
000169a0  75 73 3a 20 2d 37 20 69  6e 64 69 63 61 74 69 6e  |us: -7 indicatin|
000169b0  67 20 70 72 6f 67 72 61  6d 20 65 72 72 6f 72 20  |g program error |
000169c0  2d 20 73 65 72 69 6f 75  73 20 63 6f 72 72 75 70  |- serious corrup|
000169d0  74 69 6f 6e 20 64 75 65  20 74 6f 20 63 6f 64 65  |tion due to code|
000169e0  0a 3b 09 09 09 09 09 09  09 09 20 20 20 20 20 6f  |.;........     o|
000169f0  76 65 72 66 6c 6f 77 69  6e 67 20 71 75 69 63 6b  |verflowing quick|
00016a00  64 69 76 20 62 75 66 66  65 72 0a 3b 0a 0a 20 20  |div buffer.;..  |
00016a10  20 20 20 20 20 20 45 58  50 4f 52 54 20 20 71 75  |      EXPORT  qu|
00016a20  69 63 6b 64 69 76 5f 69  6e 69 74 0a 0a 71 69 6e  |ickdiv_init..qin|
00016a30  73 74 61 20 20 44 43 42  20 20 20 20 20 22 71 75  |sta  DCB     "qu|
00016a40  69 63 6b 64 69 76 5f 69  6e 69 74 22 2c 20 30 0a  |ickdiv_init", 0.|
00016a50  20 20 20 20 20 20 20 20  41 4c 49 47 4e 0a 71 69  |        ALIGN.qi|
00016a60  6e 65 6e 64 20 20 44 43  44 20 20 20 20 20 26 66  |nend  DCD     &f|
00016a70  66 30 30 30 30 30 30 20  2b 20 71 69 6e 65 6e 64  |f000000 + qinend|
00016a80  20 2d 20 71 69 6e 73 74  61 0a 0a 71 75 69 63 6b  | - qinsta..quick|
00016a90  64 69 76 5f 69 6e 69 74  0a 0a 09 53 54 4d 46 44  |div_init...STMFD|
00016aa0  09 73 70 21 2c 20 7b 76  31 2d 76 36 2c 20 73 6c  |.sp!, {v1-v6, sl|
00016ab0  2c 20 66 70 2c 20 6c 72  7d 0a 09 41 44 52 09 72  |, fp, lr}..ADR.r|
00016ac0  31 2c 20 71 75 69 63 6b  64 69 76 0a 09 4d 4f 56  |1, quickdiv..MOV|
00016ad0  09 72 32 2c 20 23 30 0a  09 4d 4f 56 09 72 33 2c  |.r2, #0..MOV.r3,|
00016ae0  20 23 31 32 0a 09 4d 4f  56 09 72 34 2c 20 23 31  | #12..MOV.r4, #1|
00016af0  0a 09 4d 4f 56 09 72 35  2c 20 23 32 0a 09 4d 4f  |..MOV.r5, #2..MO|
00016b00  56 09 72 36 2c 20 23 33  0a 09 42 4c 09 67 65 6e  |V.r6, #3..BL.gen|
00016b10  0a 09 43 4d 50 09 72 30  2c 20 23 30 0a 09 4c 44  |..CMP.r0, #0..LD|
00016b20  4d 4c 54 46 44 09 73 70  21 2c 20 7b 76 31 2d 76  |MLTFD.sp!, {v1-v|
00016b30  36 2c 20 73 6c 2c 20 66  70 2c 20 70 63 7d 5e 0a  |6, sl, fp, pc}^.|
00016b40  09 41 44 52 09 72 31 2c  20 71 75 69 63 6b 64 69  |.ADR.r1, quickdi|
00016b50  76 0a 09 41 44 44 09 72  31 2c 20 72 31 2c 20 72  |v..ADD.r1, r1, r|
00016b60  30 0a 09 41 44 52 09 72  32 2c 20 71 75 69 63 6b  |0..ADR.r2, quick|
00016b70  64 69 76 65 6e 64 2d 38  0a 09 43 4d 50 09 72 31  |divend-8..CMP.r1|
00016b80  2c 20 72 32 0a 09 4c 44  52 48 49 09 72 30 2c 20  |, r2..LDRHI.r0, |
00016b90  71 75 69 63 6b 64 69 76  5f 69 6e 69 74 5f 6f 70  |quickdiv_init_op|
00016ba0  73 2b 34 0a 09 53 54 52  48 49 09 72 30 2c 20 71  |s+4..STRHI.r0, q|
00016bb0  75 69 63 6b 64 69 76 0a  09 4d 4f 56 48 49 09 72  |uickdiv..MOVHI.r|
00016bc0  30 2c 20 23 2d 37 0a 09  4c 44 4d 48 49 46 44 09  |0, #-7..LDMHIFD.|
00016bd0  73 70 21 2c 20 7b 76 31  2d 76 36 2c 20 73 6c 2c  |sp!, {v1-v6, sl,|
00016be0  20 66 70 2c 20 70 63 7d  5e 0a 09 41 44 52 09 72  | fp, pc}^..ADR.r|
00016bf0  32 2c 20 71 75 69 63 6b  64 69 76 5f 69 6e 69 74  |2, quickdiv_init|
00016c00  5f 6f 70 73 0a 09 4c 44  4d 49 41 09 72 32 2c 20  |_ops..LDMIA.r2, |
00016c10  7b 72 33 2c 20 72 34 7d  0a 09 53 54 4d 49 41 09  |{r3, r4}..STMIA.|
00016c20  72 31 21 2c 20 7b 72 33  2c 20 72 34 7d 0a 09 41  |r1!, {r3, r4}..A|
00016c30  44 44 09 72 30 2c 20 72  30 2c 20 23 38 0a 09 4c  |DD.r0, r0, #8..L|
00016c40  44 4d 46 44 09 73 70 21  2c 20 7b 76 31 2d 76 36  |DMFD.sp!, {v1-v6|
00016c50  2c 20 73 6c 2c 20 66 70  2c 20 70 63 7d 5e 0a 0a  |, sl, fp, pc}^..|
00016c60  71 75 69 63 6b 64 69 76  5f 69 6e 69 74 5f 6f 70  |quickdiv_init_op|
00016c70  73 0a 09 4d 4f 56 09 72  30 2c 20 72 31 32 0a 09  |s..MOV.r0, r12..|
00016c80  4d 4f 56 53 09 70 63 2c  20 6c 72 0a 0a 0a 0a 3b  |MOVS.pc, lr....;|
00016c90  20 71 75 69 63 6b 64 69  76 0a 3b 20 61 20 6c 65  | quickdiv.; a le|
00016ca0  61 66 20 41 50 43 53 20  66 75 6e 63 74 69 6f 6e  |af APCS function|
00016cb0  0a 3b 0a 3b 20 43 20 70  72 6f 74 6f 74 79 70 65  |.;.; C prototype|
00016cc0  3a 0a 3b 20 69 6e 74 20  71 75 69 63 6b 64 69 76  |:.; int quickdiv|
00016cd0  28 69 6e 74 20 6e 75 6d  65 72 61 74 6f 72 29 0a  |(int numerator).|
00016ce0  3b 0a 3b 20 72 65 74 75  72 6e 73 20 6e 75 6d 65  |;.; returns nume|
00016cf0  72 61 74 6f 72 2f 64 69  76 69 73 6f 72 2c 20 77  |rator/divisor, w|
00016d00  68 65 72 65 20 64 69 76  69 73 6f 72 20 77 61 73  |here divisor was|
00016d10  20 74 68 65 20 61 72 67  75 6d 65 6e 74 20 66 6f  | the argument fo|
00016d20  72 6d 65 72 6c 79 20 70  61 73 73 65 64 20 74 6f  |rmerly passed to|
00016d30  20 71 75 69 63 6b 64 69  76 5f 69 6e 69 74 0a 3b  | quickdiv_init.;|
00016d40  20 28 77 68 6f 73 65 20  70 75 72 70 6f 73 65 20  | (whose purpose |
00016d50  77 61 73 20 74 6f 20 61  73 73 65 6d 62 6c 65 20  |was to assemble |
00016d60  74 68 69 73 20 66 75 6e  63 74 69 6f 6e 29 0a 3b  |this function).;|
00016d70  0a 0a 20 20 20 20 20 20  20 20 45 58 50 4f 52 54  |..        EXPORT|
00016d80  20 20 71 75 69 63 6b 64  69 76 0a 0a 71 64 6e 73  |  quickdiv..qdns|
00016d90  74 61 20 20 44 43 42 20  20 20 20 20 22 71 75 69  |ta  DCB     "qui|
00016da0  63 6b 64 69 76 22 2c 20  30 0a 20 20 20 20 20 20  |ckdiv", 0.      |
00016db0  20 20 41 4c 49 47 4e 0a  71 64 6e 65 6e 64 20 20  |  ALIGN.qdnend  |
00016dc0  44 43 44 20 20 20 20 20  26 66 66 30 30 30 30 30  |DCD     &ff00000|
00016dd0  30 20 2b 20 71 64 6e 65  6e 64 20 2d 20 71 64 6e  |0 + qdnend - qdn|
00016de0  73 74 61 0a 0a 71 75 69  63 6b 64 69 76 0a 0a 09  |sta..quickdiv...|
00016df0  4d 4f 56 53 09 70 63 2c  20 6c 72 0a 09 25 09 33  |MOVS.pc, lr..%.3|
00016e00  38 30 0a 71 75 69 63 6b  64 69 76 65 6e 64 0a 0a  |80.quickdivend..|
00016e10  0a 0a 3b 0a 3b 20 4e 61  6d 65 3a 09 47 65 6e 65  |..;.; Name:.Gene|
00016e20  72 61 74 6f 72 2e 0a 3b  0a 3b 20 41 75 74 68 6f  |rator..;.; Autho|
00016e30  72 3a 0a 3b 09 4d 69 63  68 61 65 6c 20 52 6f 7a  |r:.;.Michael Roz|
00016e40  64 6f 62 61 2c 20 66 72  6f 6d 20 61 6e 20 61 6c  |doba, from an al|
00016e50  67 6f 72 69 74 68 6d 20  6f 72 69 67 69 6e 61 6c  |gorithm original|
00016e60  6c 79 20 62 61 73 65 64  20 6f 6e 20 74 68 65 20  |ly based on the |
00016e70  77 6f 72 6b 20 6f 66 20  53 61 6d 75 65 6c 20 4b  |work of Samuel K|
00016e80  2e 52 2e 20 53 6d 69 74  68 2e 0a 3b 0a 3b 20 46  |.R. Smith..;.; F|
00016e90  75 6e 63 74 69 6f 6e 3a  0a 3b 20 09 43 6f 6d 70  |unction:.; .Comp|
00016ea0  69 6c 65 20 63 6f 64 65  20 74 6f 20 63 61 72 72  |ile code to carr|
00016eb0  79 20 6f 75 74 20 72 61  70 69 64 20 61 73 73 65  |y out rapid asse|
00016ec0  6d 62 6c 65 72 20 64 69  76 69 73 6f 6e 20 62 79  |mbler divison by|
00016ed0  20 61 6e 20 61 72 62 69  74 72 61 72 79 20 63 6f  | an arbitrary co|
00016ee0  6e 73 74 61 6e 74 2e 0a  3b 0a 3b 20 41 72 67 75  |nstant..;.; Argu|
00016ef0  6d 65 6e 74 73 3a 0a 3b  20 72 30 09 64 69 76 69  |ments:.; r0.divi|
00016f00  73 6f 72 20 63 6f 6e 73  74 61 6e 74 0a 3b 20 72  |sor constant.; r|
00016f10  31 09 70 74 72 20 74 6f  20 62 75 66 66 65 72 20  |1.ptr to buffer |
00016f20  66 6f 72 20 63 6f 64 65  20 28 70 61 73 73 69 6e  |for code (passin|
00016f30  67 20 30 20 69 6e 64 69  63 61 74 65 73 20 6e 6f  |g 0 indicates no|
00016f40  20 63 6f 64 65 20 74 6f  20 62 65 20 63 6f 6d 70  | code to be comp|
00016f50  69 6c 65 64 20 2d 20 61  6c 6c 6f 77 73 20 72 6f  |iled - allows ro|
00016f60  75 74 69 6e 65 20 74 6f  20 62 65 20 63 61 6c 6c  |utine to be call|
00016f70  65 64 20 74 6f 0a 3b 09  63 61 6c 63 75 6c 61 74  |ed to.;.calculat|
00016f80  65 20 73 69 7a 65 20 6f  66 20 62 75 66 66 65 72  |e size of buffer|
00016f90  20 72 65 71 75 69 72 65  64 29 0a 3b 20 72 32 09  | required).; r2.|
00016fa0  6e 75 6d 62 65 72 20 6f  66 20 6e 75 6d 65 72 61  |number of numera|
00016fb0  74 6f 72 20 72 65 67 69  73 74 65 72 20 66 6f 72  |tor register for|
00016fc0  20 72 6f 75 74 69 6e 65  20 74 6f 20 62 65 20 63  | routine to be c|
00016fd0  6f 6d 70 69 6c 65 64 0a  3b 20 72 33 09 6e 75 6d  |ompiled.; r3.num|
00016fe0  62 65 72 20 6f 66 20 6f  75 74 70 75 74 20 71 75  |ber of output qu|
00016ff0  6f 74 69 65 6e 74 20 72  65 67 69 73 74 65 72 0a  |otient register.|
00017000  3b 20 72 34 09 6e 75 6d  62 65 72 20 6f 66 20 6f  |; r4.number of o|
00017010  75 74 70 75 74 20 72 65  6d 61 69 6e 64 65 72 20  |utput remainder |
00017020  72 65 67 69 73 74 65 72  0a 3b 20 72 35 09 73 63  |register.; r5.sc|
00017030  72 61 74 63 68 20 2d 20  77 6f 72 6b 20 72 65 67  |ratch - work reg|
00017040  69 73 74 65 72 20 2d 20  6e 6f 74 20 6e 65 65 64  |ister - not need|
00017050  65 64 20 69 66 20 64 69  76 69 73 6f 72 20 69 73  |ed if divisor is|
00017060  20 61 20 76 61 6c 69 64  20 69 6d 6d 65 64 69 61  | a valid immedia|
00017070  74 65 20 63 6f 6e 73 74  61 6e 74 20 28 6e 62 20  |te constant (nb |
00017080  69 66 20 77 6f 72 6b 20  73 75 70 70 6c 69 65 64  |if work supplied|
00017090  20 69 6e 0a 3b 09 61 6e  79 20 63 61 73 65 2c 20  | in.;.any case, |
000170a0  62 75 74 20 6e 6f 74 20  6e 65 65 64 65 64 2c 20  |but not needed, |
000170b0  69 74 20 77 69 6c 6c 20  62 65 20 69 67 6e 6f 72  |it will be ignor|
000170c0  65 64 20 2d 20 69 66 20  63 61 6c 6c 65 72 20 6b  |ed - if caller k|
000170d0  6e 6f 77 73 20 69 74 20  77 69 6c 6c 20 6e 6f 74  |nows it will not|
000170e0  20 62 65 20 6e 65 65 64  65 64 2c 20 2d 31 20 6d  | be needed, -1 m|
000170f0  61 79 20 62 65 0a 3b 09  70 61 73 73 65 64 29 0a  |ay be.;.passed).|
00017100  3b 20 72 36 09 73 63 72  61 74 63 68 20 2d 20 73  |; r6.scratch - s|
00017110  69 67 6e 20 70 72 65 73  65 72 76 61 74 69 6f 6e  |ign preservation|
00017120  20 72 65 67 69 73 74 65  72 20 28 6f 66 20 6e 75  | register (of nu|
00017130  6d 65 72 61 74 6f 72 29  20 2d 20 69 66 20 6e 75  |merator) - if nu|
00017140  6d 65 72 61 74 6f 72 20  69 73 20 6b 6e 6f 77 6e  |merator is known|
00017150  20 74 6f 20 61 6c 77 61  79 73 20 62 65 20 70 6f  | to always be po|
00017160  73 69 74 69 76 65 0a 3b  09 6d 61 79 20 70 61 73  |sitive.;.may pas|
00017170  73 20 2d 31 20 74 6f 20  69 6e 64 69 63 61 74 65  |s -1 to indicate|
00017180  20 74 68 69 73 2c 20 77  68 69 63 68 20 77 69 6c  | this, which wil|
00017190  6c 20 73 61 76 65 20 75  73 65 20 6f 66 20 73 69  |l save use of si|
000171a0  67 6e 70 72 65 73 20 72  65 67 69 73 74 65 72 20  |gnpres register |
000171b0  26 20 77 69 6c 6c 20 72  65 64 75 63 65 20 63 6f  |& will reduce co|
000171c0  6d 70 69 6c 65 64 20 63  6f 64 65 0a 3b 09 73 69  |mpiled code.;.si|
000171d0  7a 65 20 62 79 20 36 20  69 6e 73 74 72 75 63 74  |ze by 6 instruct|
000171e0  69 6f 6e 73 20 74 79 70  69 63 61 6c 6c 79 20 28  |ions typically (|
000171f0  63 66 20 74 79 70 69 63  61 6c 20 63 6f 64 65 20  |cf typical code |
00017200  73 69 7a 65 20 32 30 20  74 6f 20 32 37 20 69 6e  |size 20 to 27 in|
00017210  73 74 72 75 63 74 69 6f  6e 73 2c 20 77 68 65 6e  |structions, when|
00017220  20 73 69 67 6e 20 70 72  65 73 65 72 76 61 74 69  | sign preservati|
00017230  6f 6e 0a 3b 09 69 73 20  61 63 74 69 76 65 2c 20  |on.;.is active, |
00017240  74 68 65 6e 63 65 20 72  65 64 75 63 65 64 20 74  |thence reduced t|
00017250  6f 20 31 34 20 74 6f 20  32 31 20 69 6e 73 74 72  |o 14 to 21 instr|
00017260  75 63 74 69 6f 6e 73 29  0a 3b 0a 3b 09 4e 42 20  |uctions).;.;.NB |
00017270  41 6c 6c 20 73 75 70 70  6c 69 65 64 20 72 65 67  |All supplied reg|
00017280  69 73 74 65 72 20 6e 75  6d 62 65 72 73 20 28 6f  |ister numbers (o|
00017290  74 68 65 72 20 74 68 61  6e 20 77 6f 72 6b 20 26  |ther than work &|
000172a0  20 73 69 67 6e 70 72 65  73 20 77 68 65 6e 20 6e  | signpres when n|
000172b0  6f 74 20 6e 65 65 64 65  64 20 26 20 70 61 73 73  |ot needed & pass|
000172c0  65 64 20 61 73 20 2d 31  29 20 4d 55 53 54 20 62  |ed as -1) MUST b|
000172d0  65 0a 3b 09 20 20 20 64  69 73 74 69 6e 63 74 2e  |e.;.   distinct.|
000172e0  0a 3b 0a 3b 20 52 65 74  75 72 6e 73 3a 0a 3b 20  |.;.; Returns:.; |
000172f0  72 30 09 73 69 7a 65 20  6f 66 20 63 6f 6d 70 69  |r0.size of compi|
00017300  6c 65 64 20 63 6f 64 65  20 69 6e 20 62 79 74 65  |led code in byte|
00017310  73 0a 3b 09 61 20 76 61  6c 75 65 20 6f 66 20 73  |s.;.a value of s|
00017320  69 7a 65 3c 30 20 69 6e  64 69 63 61 74 65 73 20  |ize<0 indicates |
00017330  61 6e 20 65 72 72 6f 72  20 6f 63 63 75 72 72 65  |an error occurre|
00017340  64 20 64 75 72 69 6e 67  20 63 6f 6d 70 69 6c 61  |d during compila|
00017350  74 69 6f 6e 3b 20 63 6f  64 65 20 61 73 20 66 6f  |tion; code as fo|
00017360  6c 6c 6f 77 73 3a 0a 3b  20 2d 31 09 67 65 6e 65  |llows:.; -1.gene|
00017370  72 61 74 6f 72 20 63 61  6c 6c 65 64 20 77 69 74  |rator called wit|
00017380  68 20 30 20 64 69 76 69  73 6f 72 0a 3b 20 2d 32  |h 0 divisor.; -2|
00017390  09 77 6f 72 6b 20 72 65  67 20 6e 65 65 64 65 64  |.work reg needed|
000173a0  20 62 75 74 20 6e 6f 74  20 73 75 70 70 6c 69 65  | but not supplie|
000173b0  64 0a 3b 20 2d 33 09 69  6e 76 61 6c 69 64 20 72  |d.; -3.invalid r|
000173c0  65 67 69 73 74 65 72 20  6e 75 6d 62 65 72 0a 3b  |egister number.;|
000173d0  20 2d 34 09 72 65 67 69  73 74 65 72 20 6e 75 6d  | -4.register num|
000173e0  62 65 72 20 63 6c 61 73  68 20 28 74 68 65 20 72  |ber clash (the r|
000173f0  65 67 69 73 74 65 72 73  20 6d 75 73 74 20 62 65  |egisters must be|
00017400  20 64 69 73 74 69 6e 63  74 29 0a 3b 20 2d 35 09  | distinct).; -5.|
00017410  70 72 6f 67 72 61 6d 20  65 72 72 6f 72 20 2d 20  |program error - |
00017420  69 6e 74 65 72 6e 61 6c  20 72 65 63 75 72 73 69  |internal recursi|
00017430  6f 6e 20 73 74 61 63 6b  20 65 78 68 61 75 73 74  |on stack exhaust|
00017440  65 64 0a 3b 20 2d 36 09  70 72 6f 67 72 61 6d 20  |ed.; -6.program |
00017450  65 72 72 6f 72 20 2d 20  66 61 73 74 64 69 76 61  |error - fastdiva|
00017460  69 64 20 6c 6f 67 69 63  20 33 0a 3b 0a 3b 20 41  |id logic 3.;.; A|
00017470  64 64 69 74 69 6f 6e 61  6c 20 6e 6f 74 65 73 3a  |dditional notes:|
00017480  0a 3b 09 41 73 73 75 6d  65 73 20 61 20 73 75 69  |.;.Assumes a sui|
00017490  74 61 62 6c 65 20 65 78  74 65 72 6e 61 6c 20 72  |table external r|
000174a0  31 33 20 73 74 61 63 6b  20 65 78 69 73 74 73 2e  |13 stack exists.|
000174b0  0a 3b 0a 0a 63 6f 6e 73  74 09 52 4e 09 72 30 0a  |.;..const.RN.r0.|
000174c0  63 70 74 72 09 52 4e 09  72 31 0a 6e 75 6d 09 52  |cptr.RN.r1.num.R|
000174d0  4e 09 72 32 0a 6f 75 74  71 09 52 4e 09 72 33 0a  |N.r2.outq.RN.r3.|
000174e0  6f 75 74 72 09 52 4e 09  72 34 0a 77 6f 72 6b 09  |outr.RN.r4.work.|
000174f0  52 4e 09 72 35 0a 73 69  67 6e 70 72 65 73 09 52  |RN.r5.signpres.R|
00017500  4e 09 72 36 0a 74 31 09  52 4e 09 72 31 32 0a 66  |N.r6.t1.RN.r12.f|
00017510  6e 09 52 4e 09 72 31 31  09 09 09 09 3b 61 72 67  |n.RN.r11....;arg|
00017520  73 2f 72 65 73 75 6c 74  73 20 74 6f 2f 66 72 6f  |s/results to/fro|
00017530  6d 20 73 75 62 72 6f 75  74 73 0a 74 32 09 52 4e  |m subrouts.t2.RN|
00017540  09 72 31 30 0a 74 33 09  52 4e 09 72 31 34 0a 74  |.r10.t3.RN.r14.t|
00017550  34 09 52 4e 09 72 39 0a  0a 70 73 09 52 4e 09 72  |4.RN.r9..ps.RN.r|
00017560  38 0a 70 6d 09 52 4e 09  72 39 0a 0a 73 74 6b 09  |8.pm.RN.r9..stk.|
00017570  52 4e 09 72 37 0a 73 74  6b 6c 09 52 4e 09 72 38  |RN.r7.stkl.RN.r8|
00017580  0a 0a 6d 5f 76 09 52 4e  09 72 37 0a 6d 5f 69 09  |..m_v.RN.r7.m_i.|
00017590  52 4e 09 72 38 0a 6d 5f  6d 09 52 4e 09 72 39 0a  |RN.r8.m_m.RN.r9.|
000175a0  6d 5f 72 09 52 4e 09 72  31 30 0a 6d 5f 6d 69 09  |m_r.RN.r10.m_mi.|
000175b0  52 4e 09 72 31 31 0a 6d  5f 6d 6c 09 52 4e 09 72  |RN.r11.m_ml.RN.r|
000175c0  31 32 0a 6d 5f 6c 69 09  52 4e 09 72 31 34 0a 0a  |12.m_li.RN.r14..|
000175d0  67 65 6e 09 43 4d 50 09  63 6f 6e 73 74 2c 20 23  |gen.CMP.const, #|
000175e0  30 0a 09 4d 56 4e 45 51  09 72 30 2c 20 23 30 09  |0..MVNEQ.r0, #0.|
000175f0  09 09 09 3b 45 52 52 4f  52 3a 20 30 20 64 69 76  |...;ERROR: 0 div|
00017600  69 73 6f 72 0a 09 4d 4f  56 45 51 53 09 70 63 2c  |isor..MOVEQS.pc,|
00017610  20 6c 72 0a 0a 09 53 54  4d 46 44 09 73 70 21 2c  | lr...STMFD.sp!,|
00017620  20 7b 6c 72 7d 0a 0a 09  4d 4f 56 09 74 31 2c 20  | {lr}...MOV.t1, |
00017630  23 31 0a 09 52 53 42 4d  49 09 63 6f 6e 73 74 2c  |#1..RSBMI.const,|
00017640  20 63 6f 6e 73 74 2c 20  23 30 0a 09 4d 4f 56 4d  | const, #0..MOVM|
00017650  49 09 74 31 2c 20 23 2d  31 0a 09 53 54 52 09 74  |I.t1, #-1..STR.t|
00017660  31 2c 20 6e 73 69 67 6e  70 72 65 73 0a 0a 09 53  |1, nsignpres...S|
00017670  54 52 09 63 70 74 72 2c  20 69 6e 69 74 69 61 6c  |TR.cptr, initial|
00017680  5f 63 70 74 72 0a 0a 09  4d 4f 56 09 66 6e 2c 20  |_cptr...MOV.fn, |
00017690  63 6f 6e 73 74 0a 09 42  4c 09 70 6f 77 65 72 6f  |const..BL.powero|
000176a0  66 32 0a 09 53 54 52 09  66 6e 2c 20 70 6f 77 65  |f2..STR.fn, powe|
000176b0  72 5f 6f 66 5f 32 0a 0a  09 4d 4f 56 09 66 6e 2c  |r_of_2...MOV.fn,|
000176c0  20 63 6f 6e 73 74 0a 09  42 4c 09 69 6d 6f 70 32  | const..BL.imop2|
000176d0  0a 09 43 4d 50 09 66 6e  2c 20 23 2d 31 0a 09 4c  |..CMP.fn, #-1..L|
000176e0  44 52 4e 45 09 74 31 2c  20 6f 70 31 0a 09 4f 52  |DRNE.t1, op1..OR|
000176f0  52 4e 45 09 74 31 2c 20  74 31 2c 20 66 6e 09 09  |RNE.t1, t1, fn..|
00017700  09 3b 69 6e 73 65 72 74  20 6f 70 65 72 61 6e 64  |.;insert operand|
00017710  20 32 0a 09 4f 52 52 4e  45 09 74 31 2c 20 74 31  | 2..ORRNE.t1, t1|
00017720  2c 20 6f 75 74 72 2c 20  4c 53 4c 20 23 31 32 09  |, outr, LSL #12.|
00017730  09 3b 20 20 20 20 20 20  20 64 65 73 74 69 6e 61  |.;       destina|
00017740  74 69 6f 6e 20 72 65 67  0a 09 4f 52 52 4e 45 09  |tion reg..ORRNE.|
00017750  74 31 2c 20 74 31 2c 20  6f 75 74 72 2c 20 4c 53  |t1, t1, outr, LS|
00017760  4c 20 23 31 36 09 09 3b  20 20 20 20 20 20 20 6f  |L #16..;       o|
00017770  70 65 72 61 6e 64 20 31  20 72 65 67 69 73 74 65  |perand 1 registe|
00017780  72 0a 09 53 54 52 4e 45  09 74 31 2c 20 6f 70 32  |r..STRNE.t1, op2|
00017790  09 09 09 09 3b 6e 6f 74  65 2c 20 6f 70 63 6f 64  |....;note, opcod|
000177a0  65 20 26 20 63 6f 6e 64  69 74 69 6f 6e 20 77 69  |e & condition wi|
000177b0  6c 6c 20 62 65 20 61 64  64 65 64 20 6c 61 74 65  |ll be added late|
000177c0  72 20 28 61 73 20 6e 65  65 64 20 6d 61 6e 79 29  |r (as need many)|
000177d0  0a 09 4d 4f 56 45 51 09  74 31 2c 20 77 6f 72 6b  |..MOVEQ.t1, work|
000177e0  0a 09 4d 4f 56 4e 45 09  74 31 2c 20 23 2d 31 09  |..MOVNE.t1, #-1.|
000177f0  09 09 09 3b 74 31 20 3d  20 63 6f 6e 73 74 20 76  |...;t1 = const v|
00017800  61 6c 69 64 20 3f 20 2d  31 20 3a 20 77 6f 72 6b  |alid ? -1 : work|
00017810  20 72 65 67 0a 09 43 4d  50 45 51 09 77 6f 72 6b  | reg..CMPEQ.work|
00017820  2c 20 23 2d 31 0a 09 4d  4f 56 45 51 09 72 30 2c  |, #-1..MOVEQ.r0,|
00017830  20 23 2d 32 0a 09 4c 44  4d 45 51 46 44 09 73 70  | #-2..LDMEQFD.sp|
00017840  21 2c 20 7b 70 63 7d 5e  09 09 09 3b 45 52 52 4f  |!, {pc}^...;ERRO|
00017850  52 3a 20 77 6f 72 6b 20  72 65 67 20 6e 65 65 64  |R: work reg need|
00017860  65 64 20 62 75 74 20 6e  6f 74 20 73 75 70 70 6c  |ed but not suppl|
00017870  69 65 64 0a 09 4d 4f 56  09 77 6f 72 6b 2c 20 74  |ied..MOV.work, t|
00017880  31 09 09 09 3b 65 69 74  68 65 72 20 6c 65 61 76  |1...;either leav|
00017890  65 20 77 6f 72 6b 20 61  6c 6f 6e 65 2c 20 69 66  |e work alone, if|
000178a0  20 6e 65 65 64 65 64 2c  20 65 6c 73 65 20 72 65  | needed, else re|
000178b0  73 65 74 20 74 6f 20 2d  31 0a 0a 09 43 4d 50 09  |set to -1...CMP.|
000178c0  6f 75 74 71 2c 20 23 30  0a 09 43 4d 50 47 45 09  |outq, #0..CMPGE.|
000178d0  6f 75 74 72 2c 20 23 30  0a 09 43 4d 50 47 45 09  |outr, #0..CMPGE.|
000178e0  6e 75 6d 2c 20 23 30 0a  09 43 4d 50 47 45 09 77  |num, #0..CMPGE.w|
000178f0  6f 72 6b 2c 20 23 2d 31  0a 09 43 4d 50 47 45 09  |ork, #-1..CMPGE.|
00017900  73 69 67 6e 70 72 65 73  2c 20 23 2d 31 0a 09 4d  |signpres, #-1..M|
00017910  4f 56 4c 54 09 72 30 2c  20 23 2d 33 0a 09 4c 44  |OVLT.r0, #-3..LD|
00017920  4d 4c 54 46 44 09 73 70  21 2c 20 7b 70 63 7d 5e  |MLTFD.sp!, {pc}^|
00017930  09 09 09 3b 45 52 52 4f  52 3a 20 69 6e 76 61 6c  |...;ERROR: inval|
00017940  69 64 20 72 65 67 69 73  74 65 72 20 6e 75 6d 62  |id register numb|
00017950  65 72 0a 09 43 4d 50 09  6f 75 74 71 2c 20 23 31  |er..CMP.outq, #1|
00017960  34 0a 09 43 4d 50 4c 45  09 6f 75 74 72 2c 20 23  |4..CMPLE.outr, #|
00017970  31 34 0a 09 43 4d 50 4c  45 09 6e 75 6d 2c 20 23  |14..CMPLE.num, #|
00017980  31 34 0a 09 43 4d 50 4c  45 09 77 6f 72 6b 2c 20  |14..CMPLE.work, |
00017990  23 31 34 0a 09 43 4d 50  4c 45 09 73 69 67 6e 70  |#14..CMPLE.signp|
000179a0  72 65 73 2c 20 23 31 34  0a 09 4d 4f 56 47 54 09  |res, #14..MOVGT.|
000179b0  72 30 2c 20 23 2d 33 0a  09 4c 44 4d 47 54 46 44  |r0, #-3..LDMGTFD|
000179c0  09 73 70 21 2c 20 7b 70  63 7d 5e 09 09 09 3b 45  |.sp!, {pc}^...;E|
000179d0  52 52 4f 52 3a 20 69 6e  76 61 6c 69 64 20 72 65  |RROR: invalid re|
000179e0  67 69 73 74 65 72 20 6e  75 6d 62 65 72 0a 09 43  |gister number..C|
000179f0  4d 50 09 6f 75 74 71 2c  20 6f 75 74 72 0a 09 43  |MP.outq, outr..C|
00017a00  4d 50 4e 45 09 6f 75 74  71 2c 20 6e 75 6d 0a 09  |MPNE.outq, num..|
00017a10  43 4d 50 4e 45 09 6f 75  74 72 2c 20 6e 75 6d 0a  |CMPNE.outr, num.|
00017a20  09 4d 4f 56 45 51 09 72  30 2c 20 23 2d 34 0a 09  |.MOVEQ.r0, #-4..|
00017a30  4c 44 4d 45 51 46 44 09  73 70 21 2c 20 7b 70 63  |LDMEQFD.sp!, {pc|
00017a40  7d 5e 09 09 09 3b 45 52  52 4f 52 3a 20 72 65 67  |}^...;ERROR: reg|
00017a50  69 73 74 65 72 20 63 6c  61 73 68 0a 09 43 4d 50  |ister clash..CMP|
00017a60  09 6f 75 74 71 2c 20 73  69 67 6e 70 72 65 73 0a  |.outq, signpres.|
00017a70  09 43 4d 50 4e 45 09 6f  75 74 72 2c 20 73 69 67  |.CMPNE.outr, sig|
00017a80  6e 70 72 65 73 0a 09 43  4d 50 4e 45 09 6e 75 6d  |npres..CMPNE.num|
00017a90  2c 20 73 69 67 6e 70 72  65 73 0a 09 42 4e 45 09  |, signpres..BNE.|
00017aa0  6c 31 0a 09 43 4d 50 09  73 69 67 6e 70 72 65 73  |l1..CMP.signpres|
00017ab0  2c 20 23 2d 31 0a 09 4d  4f 56 4e 45 09 72 30 2c  |, #-1..MOVNE.r0,|
00017ac0  20 23 2d 34 0a 09 4c 44  4d 4e 45 46 44 09 73 70  | #-4..LDMNEFD.sp|
00017ad0  21 2c 20 7b 70 63 7d 5e  09 09 09 3b 45 52 52 4f  |!, {pc}^...;ERRO|
00017ae0  52 3a 20 72 65 67 69 73  74 65 72 20 63 6c 61 73  |R: register clas|
00017af0  68 0a 6c 31 09 43 4d 50  09 6f 75 74 71 2c 20 77  |h.l1.CMP.outq, w|
00017b00  6f 72 6b 0a 09 43 4d 50  4e 45 09 6f 75 74 72 2c  |ork..CMPNE.outr,|
00017b10  20 77 6f 72 6b 0a 09 43  4d 50 4e 45 09 6e 75 6d  | work..CMPNE.num|
00017b20  2c 20 77 6f 72 6b 0a 09  43 4d 50 4e 45 09 73 69  |, work..CMPNE.si|
00017b30  67 6e 70 72 65 73 2c 20  77 6f 72 6b 0a 09 42 4e  |gnpres, work..BN|
00017b40  45 09 6c 32 0a 09 43 4d  50 09 77 6f 72 6b 2c 20  |E.l2..CMP.work, |
00017b50  23 2d 31 0a 09 4d 4f 56  4e 45 09 72 30 2c 20 23  |#-1..MOVNE.r0, #|
00017b60  2d 34 0a 09 4c 44 4d 4e  45 46 44 09 73 70 21 2c  |-4..LDMNEFD.sp!,|
00017b70  20 7b 70 63 7d 5e 09 09  09 3b 45 52 52 4f 52 3a  | {pc}^...;ERROR:|
00017b80  20 72 65 67 69 73 74 65  72 20 63 6c 61 73 68 0a  | register clash.|
00017b90  6c 32 0a 09 43 4d 50 09  63 6f 6e 73 74 2c 20 23  |l2..CMP.const, #|
00017ba0  31 0a 09 42 4e 45 09 6e  6f 74 5f 6f 6e 65 0a 09  |1..BNE.not_one..|
00017bb0  43 4d 50 09 63 70 74 72  2c 20 23 30 0a 09 4d 4f  |CMP.cptr, #0..MO|
00017bc0  56 45 51 09 72 30 2c 20  23 38 0a 09 4c 44 4d 45  |VEQ.r0, #8..LDME|
00017bd0  51 46 44 09 73 70 21 2c  20 7b 70 63 7d 5e 09 09  |QFD.sp!, {pc}^..|
00017be0  09 3b 72 65 74 75 72 6e  20 73 69 7a 65 20 6f 66  |.;return size of|
00017bf0  20 63 6f 64 65 20 6e 65  65 64 65 64 20 74 6f 20  | code needed to |
00017c00  64 69 76 69 64 65 20 62  79 20 b1 31 0a 09 4c 44  |divide by .1..LD|
00017c10  52 09 74 31 2c 20 6f 70  5f 6d 6f 76 5f 30 0a 09  |R.t1, op_mov_0..|
00017c20  4f 52 52 09 74 31 2c 20  74 31 2c 20 6f 75 74 72  |ORR.t1, t1, outr|
00017c30  2c 20 4c 53 4c 20 23 31  32 0a 09 53 54 52 09 74  |, LSL #12..STR.t|
00017c40  31 2c 20 5b 63 70 74 72  5d 2c 20 23 34 09 09 09  |1, [cptr], #4...|
00017c50  3b 6d 6f 76 20 6f 75 74  72 2c 20 23 30 0a 09 4c  |;mov outr, #0..L|
00017c60  44 52 09 74 32 2c 20 6e  73 69 67 6e 70 72 65 73  |DR.t2, nsignpres|
00017c70  0a 09 43 4d 50 09 74 32  2c 20 23 31 0a 09 4c 44  |..CMP.t2, #1..LD|
00017c80  52 45 51 09 74 31 2c 20  6f 70 5f 6d 6f 76 5f 72  |REQ.t1, op_mov_r|
00017c90  30 0a 09 4c 44 52 4e 45  09 74 31 2c 20 6f 70 5f  |0..LDRNE.t1, op_|
00017ca0  72 73 62 5f 30 0a 09 4f  52 52 09 74 31 2c 20 74  |rsb_0..ORR.t1, t|
00017cb0  31 2c 20 6f 75 74 71 2c  20 4c 53 4c 20 23 31 32  |1, outq, LSL #12|
00017cc0  0a 09 4f 52 52 45 51 09  74 31 2c 20 74 31 2c 20  |..ORREQ.t1, t1, |
00017cd0  6e 75 6d 09 09 09 3b 6d  6f 76 20 6f 75 74 71 2c  |num...;mov outq,|
00017ce0  20 6e 75 6d 09 09 2d 20  69 66 20 63 6f 6e 73 74  | num..- if const|
00017cf0  20 3e 20 30 0a 09 4f 52  52 4e 45 09 74 31 2c 20  | > 0..ORRNE.t1, |
00017d00  74 31 2c 20 6e 75 6d 2c  20 4c 53 4c 20 23 31 36  |t1, num, LSL #16|
00017d10  09 09 3b 72 73 62 20 6f  75 74 71 2c 20 6e 75 6d  |..;rsb outq, num|
00017d20  2c 20 23 30 09 2d 20 69  66 20 63 6f 6e 73 74 20  |, #0.- if const |
00017d30  3c 20 30 0a 09 53 54 52  09 74 31 2c 20 5b 63 70  |< 0..STR.t1, [cp|
00017d40  74 72 5d 2c 20 23 34 0a  09 4d 4f 56 09 72 30 2c  |tr], #4..MOV.r0,|
00017d50  20 23 38 0a 09 4c 44 4d  46 44 09 73 70 21 2c 20  | #8..LDMFD.sp!, |
00017d60  7b 70 63 7d 5e 09 09 09  3b 72 65 74 75 72 6e 20  |{pc}^...;return |
00017d70  61 66 74 65 72 20 63 6f  6d 70 69 6c 69 6e 67 20  |after compiling |
00017d80  63 6f 64 65 20 74 6f 20  64 69 76 69 64 65 20 62  |code to divide b|
00017d90  79 20 b1 31 0a 6e 6f 74  5f 6f 6e 65 0a 09 43 4d  |y .1.not_one..CM|
00017da0  50 09 73 69 67 6e 70 72  65 73 2c 20 23 2d 31 0a  |P.signpres, #-1.|
00017db0  09 42 45 51 09 6e 6f 74  5f 73 69 67 6e 70 72 65  |.BEQ.not_signpre|
00017dc0  73 5f 31 0a 09 43 4d 50  09 63 70 74 72 2c 20 23  |s_1..CMP.cptr, #|
00017dd0  30 0a 09 41 44 44 45 51  09 63 70 74 72 2c 20 63  |0..ADDEQ.cptr, c|
00017de0  70 74 72 2c 20 23 38 0a  09 42 45 51 09 6e 6f 74  |ptr, #8..BEQ.not|
00017df0  5f 73 69 67 6e 70 72 65  73 5f 31 0a 09 4c 44 52  |_signpres_1..LDR|
00017e00  09 74 31 2c 20 6f 70 5f  61 6e 64 73 5f 73 69 67  |.t1, op_ands_sig|
00017e10  6e 0a 09 4f 52 52 09 74  31 2c 20 74 31 2c 20 73  |n..ORR.t1, t1, s|
00017e20  69 67 6e 70 72 65 73 2c  20 4c 53 4c 20 23 31 32  |ignpres, LSL #12|
00017e30  0a 09 4f 52 52 09 74 31  2c 20 74 31 2c 20 6e 75  |..ORR.t1, t1, nu|
00017e40  6d 2c 20 4c 53 4c 20 23  31 36 0a 09 53 54 52 09  |m, LSL #16..STR.|
00017e50  74 31 2c 20 5b 63 70 74  72 5d 2c 20 23 34 09 09  |t1, [cptr], #4..|
00017e60  09 3b 61 6e 64 73 20 73  69 67 6e 70 72 65 73 2c  |.;ands signpres,|
00017e70  20 6e 75 6d 2c 20 23 26  38 30 30 30 30 30 30 30  | num, #&80000000|
00017e80  0a 09 4c 44 52 09 74 31  2c 20 6f 70 5f 72 73 62  |..LDR.t1, op_rsb|
00017e90  6e 65 5f 30 0a 09 4f 52  52 09 74 31 2c 20 74 31  |ne_0..ORR.t1, t1|
00017ea0  2c 20 6e 75 6d 2c 20 4c  53 4c 20 23 31 32 0a 09  |, num, LSL #12..|
00017eb0  4f 52 52 09 74 31 2c 20  74 31 2c 20 6e 75 6d 2c  |ORR.t1, t1, num,|
00017ec0  20 4c 53 4c 20 23 31 36  0a 09 53 54 52 09 74 31  | LSL #16..STR.t1|
00017ed0  2c 20 5b 63 70 74 72 5d  2c 20 23 34 09 09 09 3b  |, [cptr], #4...;|
00017ee0  72 73 62 6e 65 20 6e 75  6d 2c 20 6e 75 6d 2c 20  |rsbne num, num, |
00017ef0  23 30 0a 6e 6f 74 5f 73  69 67 6e 70 72 65 73 5f  |#0.not_signpres_|
00017f00  31 0a 09 4c 44 52 09 74  31 2c 20 70 6f 77 65 72  |1..LDR.t1, power|
00017f10  5f 6f 66 5f 32 0a 09 4d  4f 56 09 74 32 2c 20 23  |_of_2..MOV.t2, #|
00017f20  31 0a 09 4d 4f 56 09 74  32 2c 20 74 32 2c 20 4c  |1..MOV.t2, t2, L|
00017f30  53 4c 20 74 31 0a 09 43  4d 50 09 63 6f 6e 73 74  |SL t1..CMP.const|
00017f40  2c 20 74 32 0a 09 42 4e  45 09 6e 6f 74 5f 61 5f  |, t2..BNE.not_a_|
00017f50  70 6f 77 65 72 5f 6f 66  5f 32 0a 09 09 09 09 09  |power_of_2......|
00017f60  09 3b 68 61 76 65 20 64  69 76 69 73 69 6f 6e 20  |.;have division |
00017f70  62 79 20 61 20 70 6f 77  65 72 20 6f 66 20 32 0a  |by a power of 2.|
00017f80  09 4c 44 52 09 74 32 2c  20 69 6e 69 74 69 61 6c  |.LDR.t2, initial|
00017f90  5f 63 70 74 72 0a 09 43  4d 50 09 74 32 2c 20 23  |_cptr..CMP.t2, #|
00017fa0  30 0a 09 41 44 44 45 51  09 63 70 74 72 2c 20 63  |0..ADDEQ.cptr, c|
00017fb0  70 74 72 2c 20 23 38 0a  09 42 45 51 09 6e 6f 77  |ptr, #8..BEQ.now|
00017fc0  5f 72 65 73 74 6f 72 65  5f 73 69 67 6e 73 0a 09  |_restore_signs..|
00017fd0  4c 44 52 09 74 32 2c 20  6f 70 5f 6d 6f 76 5f 72  |LDR.t2, op_mov_r|
00017fe0  30 0a 09 4f 52 52 09 74  32 2c 20 74 32 2c 20 6f  |0..ORR.t2, t2, o|
00017ff0  75 74 71 2c 20 4c 53 4c  20 23 31 32 0a 09 4f 52  |utq, LSL #12..OR|
00018000  52 09 74 32 2c 20 74 32  2c 20 6e 75 6d 09 09 09  |R.t2, t2, num...|
00018010  3b 6d 6f 76 20 6f 75 74  71 2c 20 6e 75 6d 2c 20  |;mov outq, num, |
00018020  6c 73 6c 20 23 30 0a 09  4f 52 52 09 74 32 2c 20  |lsl #0..ORR.t2, |
00018030  74 32 2c 20 23 32 5f 30  31 20 3c 3c 20 35 09 09  |t2, #2_01 << 5..|
00018040  3b 63 68 61 6e 67 65 64  20 74 6f 20 6c 73 72 20  |;changed to lsr |
00018050  23 30 20 28 77 68 69 63  68 20 68 61 70 70 65 6e  |#0 (which happen|
00018060  73 20 74 6f 20 6d 65 61  6e 20 6c 73 72 20 23 33  |s to mean lsr #3|
00018070  32 29 0a 09 4f 52 52 09  74 32 2c 20 74 32 2c 20  |2)..ORR.t2, t2, |
00018080  74 31 2c 20 4c 53 4c 20  23 37 0a 09 53 54 52 09  |t1, LSL #7..STR.|
00018090  74 32 2c 20 5b 63 70 74  72 5d 2c 20 23 34 09 09  |t2, [cptr], #4..|
000180a0  09 3b 6d 6f 76 20 6f 75  74 71 2c 20 6e 75 6d 2c  |.;mov outq, num,|
000180b0  20 6c 73 72 20 23 70 6f  77 65 72 5f 6f 66 5f 32  | lsr #power_of_2|
000180c0  20 28 73 61 66 65 20 61  73 20 70 6f 77 65 72 20  | (safe as power |
000180d0  74 77 65 65 6e 20 31 20  26 20 33 31 29 0a 09 4c  |tween 1 & 31)..L|
000180e0  44 52 09 74 32 2c 20 6f  70 5f 73 75 62 5f 30 5f  |DR.t2, op_sub_0_|
000180f0  30 0a 09 4f 52 52 09 74  32 2c 20 74 32 2c 20 6f  |0..ORR.t2, t2, o|
00018100  75 74 72 2c 20 4c 53 4c  20 23 31 32 0a 09 4f 52  |utr, LSL #12..OR|
00018110  52 09 74 32 2c 20 74 32  2c 20 6e 75 6d 2c 20 4c  |R.t2, t2, num, L|
00018120  53 4c 20 23 31 36 0a 09  4f 52 52 09 74 32 2c 20  |SL #16..ORR.t2, |
00018130  74 32 2c 20 6f 75 74 71  0a 09 4f 52 52 09 74 32  |t2, outq..ORR.t2|
00018140  2c 20 74 32 2c 20 74 31  2c 20 4c 53 4c 20 23 37  |, t2, t1, LSL #7|
00018150  0a 09 53 54 52 09 74 32  2c 20 5b 63 70 74 72 5d  |..STR.t2, [cptr]|
00018160  2c 20 23 34 09 09 09 3b  73 75 62 20 6f 75 74 72  |, #4...;sub outr|
00018170  2c 20 6e 75 6d 2c 20 6f  75 74 71 2c 20 4c 53 4c  |, num, outq, LSL|
00018180  20 23 70 6f 77 65 72 5f  6f 66 5f 32 0a 09 42 09  | #power_of_2..B.|
00018190  6e 6f 77 5f 72 65 73 74  6f 72 65 5f 73 69 67 6e  |now_restore_sign|
000181a0  73 0a 6e 6f 74 5f 61 5f  70 6f 77 65 72 5f 6f 66  |s.not_a_power_of|
000181b0  5f 32 0a 09 4d 4f 56 09  74 31 2c 20 23 30 0a 09  |_2..MOV.t1, #0..|
000181c0  53 54 52 09 74 31 2c 20  73 75 62 66 6c 61 67 0a  |STR.t1, subflag.|
000181d0  09 43 4d 50 09 77 6f 72  6b 2c 20 23 2d 31 0a 09  |.CMP.work, #-1..|
000181e0  42 45 51 09 6e 6f 74 5f  77 6f 72 6b 5f 31 0a 09  |BEQ.not_work_1..|
000181f0  09 09 09 09 09 3b 6e 6f  77 20 77 65 20 68 61 76  |.....;now we hav|
00018200  65 20 74 6f 20 64 6f 20  6d 65 67 61 6d 6f 76 20  |e to do megamov |
00018210  77 6f 72 6b 2c 20 23 63  6f 6e 73 74 20 20 20 2d  |work, #const   -|
00018220  20 61 73 73 75 6d 69 6e  67 20 63 6f 6e 73 74 3c  | assuming const<|
00018230  3e 30 0a 09 4d 4f 56 09  6d 5f 76 2c 20 63 6f 6e  |>0..MOV.m_v, con|
00018240  73 74 0a 09 4d 4f 56 09  6d 5f 72 2c 20 23 30 0a  |st..MOV.m_r, #0.|
00018250  6d 5f 6c 31 09 54 53 54  09 6d 5f 76 2c 20 23 31  |m_l1.TST.m_v, #1|
00018260  0a 09 4d 4f 56 45 51 09  6d 5f 76 2c 20 6d 5f 76  |..MOVEQ.m_v, m_v|
00018270  2c 20 52 4f 52 20 23 33  31 0a 09 41 44 44 45 51  |, ROR #31..ADDEQ|
00018280  09 6d 5f 72 2c 20 6d 5f  72 2c 20 23 31 0a 09 42  |.m_r, m_r, #1..B|
00018290  45 51 09 6d 5f 6c 31 0a  09 53 54 4d 46 44 09 73  |EQ.m_l1..STMFD.s|
000182a0  70 21 2c 20 7b 6d 5f 72  7d 09 09 09 3b 74 6f 20  |p!, {m_r}...;to |
000182b0  61 6c 6c 6f 77 20 74 32  20 28 3d 6d 5f 72 29 20  |allow t2 (=m_r) |
000182c0  74 6f 20 62 65 20 75 73  65 64 20 61 73 20 73 63  |to be used as sc|
000182d0  72 61 74 63 68 0a 09 4d  4f 56 09 6d 5f 69 2c 20  |ratch..MOV.m_i, |
000182e0  23 30 0a 09 4d 4f 56 09  6d 5f 6d 2c 20 23 31 0a  |#0..MOV.m_m, #1.|
000182f0  09 4d 4f 56 09 6d 5f 6d  6c 2c 20 23 30 0a 6d 5f  |.MOV.m_ml, #0.m_|
00018300  6c 32 09 41 44 44 09 6d  5f 69 2c 20 6d 5f 69 2c  |l2.ADD.m_i, m_i,|
00018310  20 23 31 0a 09 4d 4f 56  09 6d 5f 6d 2c 20 6d 5f  | #1..MOV.m_m, m_|
00018320  6d 2c 20 4c 53 4c 20 23  31 0a 09 54 53 54 09 6d  |m, LSL #1..TST.m|
00018330  5f 76 2c 20 6d 5f 6d 0a  09 43 4d 50 4e 45 09 6d  |_v, m_m..CMPNE.m|
00018340  5f 69 2c 20 23 33 32 0a  09 42 4e 45 09 6d 5f 6c  |_i, #32..BNE.m_l|
00018350  32 0a 09 43 4d 50 09 6d  5f 69 2c 20 23 33 32 0a  |2..CMP.m_i, #32.|
00018360  09 42 47 45 09 6d 5f 6c  33 0a 09 4d 4f 56 09 6d  |.BGE.m_l3..MOV.m|
00018370  5f 6c 69 2c 20 6d 5f 69  0a 6d 5f 6c 34 09 41 44  |_li, m_i.m_l4.AD|
00018380  44 09 6d 5f 69 2c 20 6d  5f 69 2c 20 23 31 0a 09  |D.m_i, m_i, #1..|
00018390  4d 4f 56 09 6d 5f 6d 2c  20 6d 5f 6d 2c 20 4c 53  |MOV.m_m, m_m, LS|
000183a0  4c 20 23 31 0a 09 54 53  54 09 6d 5f 76 2c 20 6d  |L #1..TST.m_v, m|
000183b0  5f 6d 0a 09 42 4e 45 09  6d 5f 6c 35 0a 09 43 4d  |_m..BNE.m_l5..CM|
000183c0  50 09 6d 5f 69 2c 20 23  33 32 0a 09 42 4e 45 09  |P.m_i, #32..BNE.|
000183d0  6d 5f 6c 34 0a 6d 5f 6c  35 09 53 55 42 09 74 32  |m_l4.m_l5.SUB.t2|
000183e0  2c 20 6d 5f 69 2c 20 6d  5f 6c 69 0a 09 43 4d 50  |, m_i, m_li..CMP|
000183f0  09 74 32 2c 20 6d 5f 6d  6c 0a 09 4d 4f 56 47 54  |.t2, m_ml..MOVGT|
00018400  09 6d 5f 6d 69 2c 20 6d  5f 6c 69 0a 09 4d 4f 56  |.m_mi, m_li..MOV|
00018410  47 54 09 6d 5f 6d 6c 2c  20 74 32 0a 09 43 4d 50  |GT.m_ml, t2..CMP|
00018420  09 6d 5f 69 2c 20 23 33  32 0a 09 42 4c 54 09 6d  |.m_i, #32..BLT.m|
00018430  5f 6c 32 0a 6d 5f 6c 33  09 4c 44 4d 46 44 09 73  |_l2.m_l3.LDMFD.s|
00018440  70 21 2c 20 7b 6d 5f 72  7d 09 09 09 3b 61 6c 73  |p!, {m_r}...;als|
00018450  6f 20 6e 6f 74 65 20 6d  5f 6c 69 20 6e 6f 77 20  |o note m_li now |
00018460  66 72 65 65 20 73 6f 20  63 61 6e 20 72 65 73 75  |free so can resu|
00018470  6d 65 20 75 73 65 20 6f  66 20 74 33 20 28 3d 6d  |me use of t3 (=m|
00018480  5f 6c 69 29 0a 09 43 4d  50 09 6d 5f 6d 6c 2c 20  |_li)..CMP.m_ml, |
00018490  23 30 0a 09 41 44 44 47  54 09 6d 5f 69 2c 20 6d  |#0..ADDGT.m_i, m|
000184a0  5f 6d 69 2c 20 6d 5f 6d  6c 0a 09 4d 4f 56 47 54  |_mi, m_ml..MOVGT|
000184b0  09 6d 5f 76 2c 20 6d 5f  76 2c 20 52 4f 52 20 6d  |.m_v, m_v, ROR m|
000184c0  5f 69 0a 09 52 53 42 47  54 09 6d 5f 69 2c 20 6d  |_i..RSBGT.m_i, m|
000184d0  5f 69 2c 20 23 33 32 0a  09 41 44 44 47 54 09 6d  |_i, #32..ADDGT.m|
000184e0  5f 72 2c 20 6d 5f 72 2c  20 6d 5f 69 0a 09 54 53  |_r, m_r, m_i..TS|
000184f0  54 09 6d 5f 72 2c 20 23  31 0a 09 4d 4f 56 4e 45  |T.m_r, #1..MOVNE|
00018500  09 6d 5f 76 2c 20 6d 5f  76 2c 20 52 4f 52 20 23  |.m_v, m_v, ROR #|
00018510  33 31 0a 09 41 44 44 4e  45 09 6d 5f 72 2c 20 6d  |31..ADDNE.m_r, m|
00018520  5f 72 2c 20 23 31 0a 0a  09 41 4e 44 09 6d 5f 72  |_r, #1...AND.m_r|
00018530  2c 20 6d 5f 72 2c 20 23  33 31 0a 09 41 4e 44 09  |, m_r, #31..AND.|
00018540  6d 5f 69 2c 20 6d 5f 76  2c 20 23 32 35 35 0a 09  |m_i, m_v, #255..|
00018550  4c 44 52 09 74 31 2c 20  69 6e 69 74 69 61 6c 5f  |LDR.t1, initial_|
00018560  63 70 74 72 0a 09 43 4d  50 09 74 31 2c 20 23 30  |cptr..CMP.t1, #0|
00018570  0a 09 41 44 44 45 51 09  63 70 74 72 2c 20 63 70  |..ADDEQ.cptr, cp|
00018580  74 72 2c 20 23 34 0a 09  4c 44 52 4e 45 09 74 33  |tr, #4..LDRNE.t3|
00018590  2c 20 6f 70 5f 6d 6f 76  5f 30 0a 09 4f 52 52 4e  |, op_mov_0..ORRN|
000185a0  45 09 74 33 2c 20 74 33  2c 20 77 6f 72 6b 2c 20  |E.t3, t3, work, |
000185b0  4c 53 4c 20 23 31 32 0a  09 4f 52 52 4e 45 09 74  |LSL #12..ORRNE.t|
000185c0  33 2c 20 74 33 2c 20 6d  5f 72 2c 20 4c 53 4c 20  |3, t3, m_r, LSL |
000185d0  23 38 2d 31 0a 09 4f 52  52 4e 45 09 74 33 2c 20  |#8-1..ORRNE.t3, |
000185e0  74 33 2c 20 6d 5f 69 0a  09 53 54 52 4e 45 09 74  |t3, m_i..STRNE.t|
000185f0  33 2c 20 5b 63 70 74 72  5d 2c 20 23 34 09 09 09  |3, [cptr], #4...|
00018600  3b 6d 6f 76 20 77 6f 72  6b 2c 20 23 6d 5f 69 20  |;mov work, #m_i |
00018610  72 6f 72 20 6d 5f 72 0a  6d 5f 6c 36 0a 09 4d 4f  |ror m_r.m_l6..MO|
00018620  56 53 09 6d 5f 76 2c 20  6d 5f 76 2c 20 4c 53 52  |VS.m_v, m_v, LSR|
00018630  20 23 38 0a 09 42 45 51  09 6e 6f 74 5f 77 6f 72  | #8..BEQ.not_wor|
00018640  6b 5f 31 0a 09 53 55 42  09 6d 5f 72 2c 20 6d 5f  |k_1..SUB.m_r, m_|
00018650  72 2c 20 23 38 0a 09 41  4e 44 09 6d 5f 72 2c 20  |r, #8..AND.m_r, |
00018660  6d 5f 72 2c 20 23 33 31  0a 09 41 4e 44 53 09 6d  |m_r, #31..ANDS.m|
00018670  5f 69 2c 20 6d 5f 76 2c  20 23 32 35 35 0a 09 42  |_i, m_v, #255..B|
00018680  45 51 09 6d 5f 6c 36 0a  09 43 4d 50 09 74 31 2c  |EQ.m_l6..CMP.t1,|
00018690  20 23 30 0a 09 41 44 44  45 51 09 63 70 74 72 2c  | #0..ADDEQ.cptr,|
000186a0  20 63 70 74 72 2c 20 23  34 0a 09 4c 44 52 4e 45  | cptr, #4..LDRNE|
000186b0  09 74 33 2c 20 6f 70 5f  6f 72 72 5f 30 0a 09 4f  |.t3, op_orr_0..O|
000186c0  52 52 4e 45 09 74 33 2c  20 74 33 2c 20 77 6f 72  |RRNE.t3, t3, wor|
000186d0  6b 2c 20 4c 53 4c 20 23  31 32 0a 09 4f 52 52 4e  |k, LSL #12..ORRN|
000186e0  45 09 74 33 2c 20 74 33  2c 20 77 6f 72 6b 2c 20  |E.t3, t3, work, |
000186f0  4c 53 4c 20 23 31 36 0a  09 4f 52 52 4e 45 09 74  |LSL #16..ORRNE.t|
00018700  33 2c 20 74 33 2c 20 6d  5f 72 2c 20 4c 53 4c 20  |3, t3, m_r, LSL |
00018710  23 38 2d 31 0a 09 4f 52  52 4e 45 09 74 33 2c 20  |#8-1..ORRNE.t3, |
00018720  74 33 2c 20 6d 5f 69 0a  09 53 54 52 4e 45 09 74  |t3, m_i..STRNE.t|
00018730  33 2c 20 5b 63 70 74 72  5d 2c 20 23 34 09 09 09  |3, [cptr], #4...|
00018740  3b 6f 72 72 20 77 6f 72  6b 2c 20 77 6f 72 6b 2c  |;orr work, work,|
00018750  20 23 6d 5f 69 20 72 6f  72 20 6d 5f 72 0a 09 42  | #m_i ror m_r..B|
00018760  09 6d 5f 6c 36 0a 6e 6f  74 5f 77 6f 72 6b 5f 31  |.m_l6.not_work_1|
00018770  0a 09 4c 44 52 09 74 32  2c 20 70 6f 77 65 72 5f  |..LDR.t2, power_|
00018780  6f 66 5f 32 0a 09 53 54  52 09 74 32 2c 20 6e 70  |of_2..STR.t2, np|
00018790  6f 77 65 72 5f 6f 66 5f  32 0a 09 4d 4f 56 09 63  |ower_of_2..MOV.c|
000187a0  6f 6e 73 74 2c 20 63 6f  6e 73 74 2c 20 4c 53 52  |onst, const, LSR|
000187b0  20 74 32 0a 0a 09 4d 4f  56 09 74 31 2c 20 23 31  | t2...MOV.t1, #1|
000187c0  0a 09 4d 4f 56 09 70 73  2c 20 23 30 09 09 09 09  |..MOV.ps, #0....|
000187d0  3b 73 25 20 69 6e 20 42  61 73 69 63 20 76 65 72  |;s% in Basic ver|
000187e0  73 69 6f 6e 0a 09 4d 4f  56 09 70 6d 2c 20 23 30  |sion..MOV.pm, #0|
000187f0  09 09 09 09 3b 6d 25 20  69 6e 20 42 61 73 69 63  |....;m% in Basic|
00018800  20 76 65 72 73 69 6f 6e  0a 63 61 6c 63 5f 72 65  | version.calc_re|
00018810  70 65 61 74 0a 09 43 4d  50 09 74 31 2c 20 63 6f  |peat..CMP.t1, co|
00018820  6e 73 74 0a 09 53 55 42  47 45 09 74 31 2c 20 74  |nst..SUBGE.t1, t|
00018830  31 2c 20 63 6f 6e 73 74  0a 09 41 44 44 47 45 09  |1, const..ADDGE.|
00018840  70 73 2c 20 70 73 2c 20  23 31 0a 09 43 4d 50 09  |ps, ps, #1..CMP.|
00018850  74 31 2c 20 23 30 0a 09  42 45 51 09 72 65 70 65  |t1, #0..BEQ.repe|
00018860  61 74 5f 63 61 6c 63 64  0a 09 41 44 43 09 74 31  |at_calcd..ADC.t1|
00018870  2c 20 74 31 2c 20 74 31  09 09 09 3b 6e 62 20 61  |, t1, t1...;nb a|
00018880  62 6f 76 65 20 43 4d 50  20 65 6e 73 75 72 65 73  |bove CMP ensures|
00018890  20 43 20 61 6c 77 61 79  73 20 73 65 74 2c 20 73  | C always set, s|
000188a0  6f 20 74 68 69 73 20 69  73 20 74 31 3d 32 2a 74  |o this is t1=2*t|
000188b0  31 2b 31 0a 09 4d 4f 56  09 70 73 2c 20 70 73 2c  |1+1..MOV.ps, ps,|
000188c0  20 4c 53 4c 20 23 31 0a  09 41 44 44 09 70 6d 2c  | LSL #1..ADD.pm,|
000188d0  20 70 6d 2c 20 23 31 0a  09 43 4d 50 09 70 6d 2c  | pm, #1..CMP.pm,|
000188e0  20 23 33 32 0a 09 42 4c  45 09 63 61 6c 63 5f 72  | #32..BLE.calc_r|
000188f0  65 70 65 61 74 0a 72 65  70 65 61 74 5f 63 61 6c  |epeat.repeat_cal|
00018900  63 64 0a 09 4d 4f 56 09  66 6e 2c 20 70 73 0a 09  |cd..MOV.fn, ps..|
00018910  42 4c 09 70 6f 77 65 72  6f 66 32 0a 09 53 55 42  |BL.powerof2..SUB|
00018920  09 74 32 2c 20 74 32 2c  20 66 6e 0a 09 4d 4f 56  |.t2, t2, fn..MOV|
00018930  09 70 73 2c 20 70 73 2c  20 4c 53 52 20 66 6e 0a  |.ps, ps, LSR fn.|
00018940  09 53 54 52 09 74 32 2c  20 70 6f 77 65 72 5f 6f  |.STR.t2, power_o|
00018950  66 5f 32 0a 09 43 4d 50  09 70 73 2c 20 23 31 0a  |f_2..CMP.ps, #1.|
00018960  09 42 45 51 09 73 5f 61  70 70 6c 69 65 64 0a 09  |.BEQ.s_applied..|
00018970  53 54 52 09 70 73 2c 20  61 73 0a 09 53 54 52 09  |STR.ps, as..STR.|
00018980  70 6d 2c 20 61 6d 0a 09  4d 4f 56 09 66 6e 2c 20  |pm, am..MOV.fn, |
00018990  70 73 0a 09 41 44 52 09  73 74 6b 2c 20 61 73 74  |ps..ADR.stk, ast|
000189a0  6b 0a 09 41 44 52 09 73  74 6b 6c 2c 20 61 73 74  |k..ADR.stkl, ast|
000189b0  6b 5f 65 6e 64 0a 09 4c  44 52 09 74 31 2c 20 6f  |k_end..LDR.t1, o|
000189c0  70 5f 61 64 64 5f 30 5f  30 09 09 09 3b 63 61 6c  |p_add_0_0...;cal|
000189d0  63 20 69 6e 74 65 72 6d  65 64 69 61 74 65 20 69  |c intermediate i|
000189e0  6e 73 74 72 75 63 74 69  6f 6e 73 20 75 73 65 64  |nstructions used|
000189f0  20 62 79 20 66 61 73 74  64 69 76 61 69 64 0a 09  | by fastdivaid..|
00018a00  4f 52 52 09 74 34 2c 20  6e 75 6d 2c 20 6e 75 6d  |ORR.t4, num, num|
00018a10  2c 20 4c 53 4c 20 23 31  36 0a 09 4f 52 52 09 74  |, LSL #16..ORR.t|
00018a20  34 2c 20 74 34 2c 20 6f  75 74 71 2c 20 4c 53 4c  |4, t4, outq, LSL|
00018a30  20 23 31 32 09 09 3b 64  61 74 61 20 70 72 6f 63  | #12..;data proc|
00018a40  65 73 73 69 6e 67 20 61  72 67 73 20 6f 75 74 71  |essing args outq|
00018a50  2c 20 6e 75 6d 2c 20 6e  75 6d 0a 09 4f 52 52 09  |, num, num..ORR.|
00018a60  74 31 2c 20 74 31 2c 20  74 34 0a 09 53 54 52 09  |t1, t1, t4..STR.|
00018a70  74 31 2c 20 6f 70 5f 66  64 31 09 09 09 3b 61 64  |t1, op_fd1...;ad|
00018a80  64 20 6f 75 74 71 2c 20  6e 75 6d 2c 20 6e 75 6d  |d outq, num, num|
00018a90  0a 09 4c 44 52 09 74 31  2c 20 6f 70 5f 61 64 64  |..LDR.t1, op_add|
00018aa0  5f 30 5f 30 5f 6c 73 72  0a 09 4f 52 52 09 74 34  |_0_0_lsr..ORR.t4|
00018ab0  2c 20 74 31 2c 20 74 34  0a 09 53 54 52 09 74 34  |, t1, t4..STR.t4|
00018ac0  2c 20 6f 70 5f 66 64 33  09 09 09 3b 61 64 64 20  |, op_fd3...;add |
00018ad0  6f 75 74 71 2c 20 6e 75  6d 2c 20 6e 75 6d 2c 20  |outq, num, num, |
00018ae0  6c 73 72 20 23 33 32 0a  09 4f 52 52 09 74 34 2c  |lsr #32..ORR.t4,|
00018af0  20 6e 75 6d 2c 20 6f 75  74 71 2c 20 4c 53 4c 20  | num, outq, LSL |
00018b00  23 31 36 0a 09 4f 52 52  09 74 34 2c 20 74 34 2c  |#16..ORR.t4, t4,|
00018b10  20 6f 75 74 71 2c 20 4c  53 4c 20 23 31 32 09 09  | outq, LSL #12..|
00018b20  3b 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |;               |
00018b30  20 61 72 67 73 20 6f 75  74 71 2c 20 6f 75 74 71  | args outq, outq|
00018b40  2c 20 6e 75 6d 0a 09 4f  52 52 09 74 31 2c 20 74  |, num..ORR.t1, t|
00018b50  31 2c 20 74 34 0a 09 53  54 52 09 74 31 2c 20 6f  |1, t4..STR.t1, o|
00018b60  70 5f 66 64 34 09 09 09  3b 61 64 64 20 6f 75 74  |p_fd4...;add out|
00018b70  71 2c 20 6f 75 74 71 2c  20 6e 75 6d 2c 20 6c 73  |q, outq, num, ls|
00018b80  72 20 23 33 32 0a 09 4c  44 52 09 74 31 2c 20 6f  |r #32..LDR.t1, o|
00018b90  70 5f 73 75 62 5f 30 5f  30 5f 6c 73 72 0a 09 4f  |p_sub_0_0_lsr..O|
00018ba0  52 52 09 74 31 2c 20 74  31 2c 20 74 34 0a 09 53  |RR.t1, t1, t4..S|
00018bb0  54 52 09 74 31 2c 20 6f  70 5f 66 64 32 09 09 09  |TR.t1, op_fd2...|
00018bc0  3b 73 75 62 20 6f 75 74  71 2c 20 6f 75 74 71 2c  |;sub outq, outq,|
00018bd0  20 6e 75 6d 2c 20 6c 73  72 20 23 33 32 0a 09 42  | num, lsr #32..B|
00018be0  4c 09 66 61 73 74 64 69  76 61 69 64 0a 09 4c 44  |L.fastdivaid..LD|
00018bf0  52 09 70 73 2c 20 61 73  0a 09 4c 44 52 09 70 6d  |R.ps, as..LDR.pm|
00018c00  2c 20 61 6d 0a 73 5f 61  70 70 6c 69 65 64 09 09  |, am.s_applied..|
00018c10  09 09 09 3b 6e 62 20 74  32 3d 70 6f 77 65 72 5f  |...;nb t2=power_|
00018c20  6f 66 5f 32 20 6d 61 79  20 6e 6f 20 6c 6f 6e 67  |of_2 may no long|
00018c30  65 72 20 62 65 20 76 61  6c 69 64 2c 20 62 75 74  |er be valid, but|
00018c40  20 70 73 20 26 20 70 6d  20 61 72 65 0a 09 4d 4f  | ps & pm are..MO|
00018c50  56 09 66 6e 2c 20 70 73  0a 09 42 4c 09 62 69 74  |V.fn, ps..BL.bit|
00018c60  70 61 74 6c 65 6e 09 09  09 3b 66 6e 20 69 73 20  |patlen...;fn is |
00018c70  6e 6f 77 20 6c 73 25 0a  09 41 44 44 09 74 31 2c  |now ls%..ADD.t1,|
00018c80  20 70 6d 2c 20 23 31 0a  09 4c 44 52 09 74 32 2c  | pm, #1..LDR.t2,|
00018c90  20 69 6e 69 74 69 61 6c  5f 63 70 74 72 0a 09 43  | initial_cptr..C|
00018ca0  4d 50 09 74 32 2c 20 23  30 0a 09 42 4e 45 09 64  |MP.t2, #0..BNE.d|
00018cb0  6f 5f 65 78 74 65 6e 64  0a 09 43 4d 50 09 74 31  |o_extend..CMP.t1|
00018cc0  2c 20 23 33 32 0a 09 42  47 45 09 62 69 74 73 5f  |, #32..BGE.bits_|
00018cd0  65 78 74 65 6e 64 65 64  0a 09 43 4d 50 09 70 73  |extended..CMP.ps|
00018ce0  2c 20 23 31 0a 09 4d 4f  56 45 51 09 70 73 2c 20  |, #1..MOVEQ.ps, |
00018cf0  23 30 0a 70 73 65 75 64  6f 5f 65 78 74 65 6e 64  |#0.pseudo_extend|
00018d00  5f 62 69 74 73 5f 6c 6f  6f 70 0a 09 41 44 44 09  |_bits_loop..ADD.|
00018d10  63 70 74 72 2c 20 63 70  74 72 2c 20 23 34 0a 09  |cptr, cptr, #4..|
00018d20  4d 4f 56 09 74 31 2c 20  74 31 2c 20 4c 53 4c 20  |MOV.t1, t1, LSL |
00018d30  23 31 0a 09 43 4d 50 09  74 31 2c 20 23 33 32 0a  |#1..CMP.t1, #32.|
00018d40  09 42 4c 54 09 70 73 65  75 64 6f 5f 65 78 74 65  |.BLT.pseudo_exte|
00018d50  6e 64 5f 62 69 74 73 5f  6c 6f 6f 70 0a 09 42 09  |nd_bits_loop..B.|
00018d60  62 69 74 73 5f 65 78 74  65 6e 64 65 64 0a 64 6f  |bits_extended.do|
00018d70  5f 65 78 74 65 6e 64 0a  09 43 4d 50 09 74 31 2c  |_extend..CMP.t1,|
00018d80  20 23 33 32 0a 09 42 47  45 09 62 69 74 73 5f 65  | #32..BGE.bits_e|
00018d90  78 74 65 6e 64 65 64 0a  09 4c 44 52 09 74 33 2c  |xtended..LDR.t3,|
00018da0  20 6f 70 5f 61 64 64 5f  30 5f 30 5f 6c 73 72 0a  | op_add_0_0_lsr.|
00018db0  09 4f 52 52 09 74 33 2c  20 74 33 2c 20 6f 75 74  |.ORR.t3, t3, out|
00018dc0  71 2c 20 4c 53 4c 20 23  31 32 0a 09 43 4d 50 09  |q, LSL #12..CMP.|
00018dd0  70 73 2c 20 23 31 0a 09  4d 4f 56 45 51 09 70 73  |ps, #1..MOVEQ.ps|
00018de0  2c 20 23 30 0a 09 4f 52  52 45 51 09 74 32 2c 20  |, #0..ORREQ.t2, |
00018df0  6e 75 6d 2c 20 6e 75 6d  2c 20 4c 53 4c 20 23 31  |num, num, LSL #1|
00018e00  36 0a 09 4f 52 52 4e 45  09 74 32 2c 20 6f 75 74  |6..ORRNE.t2, out|
00018e10  71 2c 20 6f 75 74 71 2c  20 4c 53 4c 20 23 31 36  |q, outq, LSL #16|
00018e20  0a 09 4f 52 52 09 74 32  2c 20 74 32 2c 20 74 31  |..ORR.t2, t2, t1|
00018e30  2c 20 4c 53 4c 20 23 37  0a 09 4f 52 52 09 74 32  |, LSL #7..ORR.t2|
00018e40  2c 20 74 33 2c 20 74 32  09 09 09 3b 69 66 20 45  |, t3, t2...;if E|
00018e50  51 20 27 61 64 64 20 6f  75 74 71 2c 20 6e 75 6d  |Q 'add outq, num|
00018e60  2c 20 6e 75 6d 2c 20 6c  73 72 20 23 74 31 25 27  |, num, lsr #t1%'|
00018e70  0a 09 53 54 52 09 74 32  2c 20 5b 63 70 74 72 5d  |..STR.t2, [cptr]|
00018e80  2c 20 23 34 09 09 09 3b  65 6c 73 65 20 20 27 61  |, #4...;else  'a|
00018e90  64 64 20 6f 75 74 71 2c  20 6f 75 74 71 2c 20 6f  |dd outq, outq, o|
00018ea0  75 74 71 2c 20 6c 73 72  20 23 74 31 25 27 0a 09  |utq, lsr #t1%'..|
00018eb0  4d 4f 56 09 74 31 2c 20  74 31 2c 20 4c 53 4c 20  |MOV.t1, t1, LSL |
00018ec0  23 31 0a 09 43 4d 50 09  74 31 2c 20 23 33 32 0a  |#1..CMP.t1, #32.|
00018ed0  09 42 47 45 09 62 69 74  73 5f 65 78 74 65 6e 64  |.BGE.bits_extend|
00018ee0  65 64 0a 09 4f 52 52 09  74 32 2c 20 6f 75 74 71  |ed..ORR.t2, outq|
00018ef0  2c 20 6f 75 74 71 2c 20  4c 53 4c 20 23 31 36 0a  |, outq, LSL #16.|
00018f00  09 4f 52 52 09 74 33 2c  20 74 33 2c 20 74 32 0a  |.ORR.t3, t3, t2.|
00018f10  65 78 74 65 6e 64 5f 62  69 74 73 5f 6c 6f 6f 70  |extend_bits_loop|
00018f20  0a 09 4f 52 52 09 74 32  2c 20 74 33 2c 20 74 31  |..ORR.t2, t3, t1|
00018f30  2c 20 4c 53 4c 20 23 37  0a 09 53 54 52 09 74 32  |, LSL #7..STR.t2|
00018f40  2c 20 5b 63 70 74 72 5d  2c 20 23 34 09 09 09 3b  |, [cptr], #4...;|
00018f50  61 64 64 20 6f 75 74 71  2c 20 6f 75 74 71 2c 20  |add outq, outq, |
00018f60  6f 75 74 71 2c 20 6c 73  72 20 23 74 31 25 0a 09  |outq, lsr #t1%..|
00018f70  4d 4f 56 09 74 31 2c 20  74 31 2c 20 4c 53 4c 20  |MOV.t1, t1, LSL |
00018f80  23 31 0a 09 43 4d 50 09  74 31 2c 20 23 33 32 0a  |#1..CMP.t1, #32.|
00018f90  09 42 4c 54 09 65 78 74  65 6e 64 5f 62 69 74 73  |.BLT.extend_bits|
00018fa0  5f 6c 6f 6f 70 0a 62 69  74 73 5f 65 78 74 65 6e  |_loop.bits_exten|
00018fb0  64 65 64 0a 09 4c 44 52  09 74 31 2c 20 69 6e 69  |ded..LDR.t1, ini|
00018fc0  74 69 61 6c 5f 63 70 74  72 0a 09 43 4d 50 09 70  |tial_cptr..CMP.p|
00018fd0  73 2c 20 23 31 0a 09 42  4e 45 09 6c 61 72 67 65  |s, #1..BNE.large|
00018fe0  5f 64 69 76 5f 70 61 74  63 68 5f 64 6f 6e 65 0a  |_div_patch_done.|
00018ff0  09 43 4d 50 09 74 31 2c  20 23 30 0a 09 41 44 44  |.CMP.t1, #0..ADD|
00019000  45 51 09 63 70 74 72 2c  20 63 70 74 72 2c 20 23  |EQ.cptr, cptr, #|
00019010  34 0a 09 4c 44 52 4e 45  09 74 32 2c 20 6f 70 5f  |4..LDRNE.t2, op_|
00019020  6d 6f 76 5f 72 30 0a 09  4f 52 52 4e 45 09 74 32  |mov_r0..ORRNE.t2|
00019030  2c 20 74 32 2c 20 6f 75  74 71 2c 20 4c 53 4c 20  |, t2, outq, LSL |
00019040  23 31 32 0a 09 4f 52 52  4e 45 09 74 32 2c 20 74  |#12..ORRNE.t2, t|
00019050  32 2c 20 6e 75 6d 0a 09  53 54 52 4e 45 09 74 32  |2, num..STRNE.t2|
00019060  2c 20 5b 63 70 74 72 5d  2c 20 23 34 09 09 09 3b  |, [cptr], #4...;|
00019070  6d 6f 76 20 6f 75 74 71  2c 20 6e 75 6d 0a 6c 61  |mov outq, num.la|
00019080  72 67 65 5f 64 69 76 5f  70 61 74 63 68 5f 64 6f  |rge_div_patch_do|
00019090  6e 65 0a 09 4c 44 52 09  74 33 2c 20 70 6f 77 65  |ne..LDR.t3, powe|
000190a0  72 5f 6f 66 5f 32 0a 09  41 44 44 09 74 33 2c 20  |r_of_2..ADD.t3, |
000190b0  74 33 2c 20 70 6d 0a 09  53 55 42 09 74 33 2c 20  |t3, pm..SUB.t3, |
000190c0  74 33 2c 20 66 6e 0a 09  41 44 44 53 09 74 33 2c  |t3, fn..ADDS.t3,|
000190d0  20 74 33 2c 20 23 32 0a  09 42 4c 45 09 66 69 6e  | t3, #2..BLE.fin|
000190e0  61 6c 5f 73 68 69 66 74  5f 64 6f 6e 65 0a 09 43  |al_shift_done..C|
000190f0  4d 50 09 74 31 2c 20 23  30 0a 09 41 44 44 45 51  |MP.t1, #0..ADDEQ|
00019100  09 63 70 74 72 2c 20 63  70 74 72 2c 20 23 34 0a  |.cptr, cptr, #4.|
00019110  09 4c 44 52 4e 45 09 74  32 2c 20 6f 70 5f 6d 6f  |.LDRNE.t2, op_mo|
00019120  76 5f 72 30 5f 6c 73 72  0a 09 4f 52 52 4e 45 09  |v_r0_lsr..ORRNE.|
00019130  74 32 2c 20 74 32 2c 20  6f 75 74 71 2c 20 4c 53  |t2, t2, outq, LS|
00019140  4c 20 23 31 32 0a 09 4f  52 52 4e 45 09 74 32 2c  |L #12..ORRNE.t2,|
00019150  20 74 32 2c 20 6f 75 74  71 0a 09 4f 52 52 4e 45  | t2, outq..ORRNE|
00019160  09 74 32 2c 20 74 32 2c  20 74 33 2c 20 4c 53 4c  |.t2, t2, t3, LSL|
00019170  20 23 37 0a 09 53 54 52  4e 45 09 74 32 2c 20 5b  | #7..STRNE.t2, [|
00019180  63 70 74 72 5d 2c 20 23  34 09 09 09 3b 6d 6f 76  |cptr], #4...;mov|
00019190  20 6f 75 74 71 2c 20 6f  75 74 71 2c 20 6c 73 72  | outq, outq, lsr|
000191a0  20 23 70 6f 77 65 72 5f  6f 66 5f 32 0a 66 69 6e  | #power_of_2.fin|
000191b0  61 6c 5f 73 68 69 66 74  5f 64 6f 6e 65 0a 09 4d  |al_shift_done..M|
000191c0  4f 56 09 66 6e 2c 20 63  6f 6e 73 74 0a 09 41 44  |OV.fn, const..AD|
000191d0  52 09 73 74 6b 2c 20 61  73 74 6b 0a 09 41 44 52  |R.stk, astk..ADR|
000191e0  09 73 74 6b 6c 2c 20 61  73 74 6b 5f 65 6e 64 0a  |.stkl, astk_end.|
000191f0  09 4f 52 52 09 74 31 2c  20 6f 75 74 71 2c 20 6f  |.ORR.t1, outq, o|
00019200  75 74 71 2c 20 4c 53 4c  20 23 31 36 09 09 3b 63  |utq, LSL #16..;c|
00019210  61 6c 63 20 69 6e 74 65  72 6d 65 64 69 61 74 65  |alc intermediate|
00019220  20 69 6e 73 74 72 75 63  74 69 6f 6e 73 20 75 73  | instructions us|
00019230  65 64 20 62 79 20 66 61  73 74 6d 75 6c 0a 09 4f  |ed by fastmul..O|
00019240  52 52 09 74 31 2c 20 74  31 2c 20 6f 75 74 72 2c  |RR.t1, t1, outr,|
00019250  20 4c 53 4c 20 23 31 32  0a 09 4f 52 52 09 74 32  | LSL #12..ORR.t2|
00019260  2c 20 6f 75 74 72 2c 20  6f 75 74 71 2c 20 4c 53  |, outr, outq, LS|
00019270  4c 20 23 31 36 0a 09 4f  52 52 09 74 32 2c 20 74  |L #16..ORR.t2, t|
00019280  32 2c 20 6f 75 74 72 2c  20 4c 53 4c 20 23 31 32  |2, outr, LSL #12|
00019290  0a 09 4c 44 52 09 74 33  2c 20 6f 70 5f 6d 6f 76  |..LDR.t3, op_mov|
000192a0  5f 72 30 0a 09 4f 52 52  09 74 34 2c 20 74 33 2c  |_r0..ORR.t4, t3,|
000192b0  20 74 31 0a 09 53 54 52  09 74 34 2c 20 6f 70 5f  | t1..STR.t4, op_|
000192c0  66 6d 31 0a 09 4f 52 52  09 74 34 2c 20 74 33 2c  |fm1..ORR.t4, t3,|
000192d0  20 74 32 0a 09 53 54 52  09 74 34 2c 20 6f 70 5f  | t2..STR.t4, op_|
000192e0  66 6d 32 0a 09 4c 44 52  09 74 33 2c 20 6f 70 5f  |fm2..LDR.t3, op_|
000192f0  61 64 64 5f 30 5f 30 0a  09 4f 52 52 09 74 34 2c  |add_0_0..ORR.t4,|
00019300  20 74 33 2c 20 74 31 0a  09 53 54 52 09 74 34 2c  | t3, t1..STR.t4,|
00019310  20 6f 70 5f 66 6d 33 0a  09 4f 52 52 09 74 34 2c  | op_fm3..ORR.t4,|
00019320  20 74 33 2c 20 74 32 0a  09 53 54 52 09 74 34 2c  | t3, t2..STR.t4,|
00019330  20 6f 70 5f 66 6d 34 0a  09 4c 44 52 09 74 33 2c  | op_fm4..LDR.t3,|
00019340  20 6f 70 5f 72 73 62 5f  30 5f 30 0a 09 4f 52 52  | op_rsb_0_0..ORR|
00019350  09 74 34 2c 20 74 33 2c  20 74 31 0a 09 53 54 52  |.t4, t3, t1..STR|
00019360  09 74 34 2c 20 6f 70 5f  66 6d 35 0a 09 4f 52 52  |.t4, op_fm5..ORR|
00019370  09 74 34 2c 20 74 33 2c  20 74 32 0a 09 53 54 52  |.t4, t3, t2..STR|
00019380  09 74 34 2c 20 6f 70 5f  66 6d 36 0a 09 42 4c 09  |.t4, op_fm6..BL.|
00019390  66 61 73 74 6d 75 6c 0a  09 4c 44 52 09 74 34 2c  |fastmul..LDR.t4,|
000193a0  20 69 6e 69 74 69 61 6c  5f 63 70 74 72 0a 09 4c  | initial_cptr..L|
000193b0  44 52 09 74 33 2c 20 6e  70 6f 77 65 72 5f 6f 66  |DR.t3, npower_of|
000193c0  5f 32 0a 09 4d 4f 56 09  63 6f 6e 73 74 2c 20 63  |_2..MOV.const, c|
000193d0  6f 6e 73 74 2c 20 4c 53  4c 20 74 33 0a 09 43 4d  |onst, LSL t3..CM|
000193e0  50 09 74 34 2c 20 23 30  0a 09 41 44 44 45 51 09  |P.t4, #0..ADDEQ.|
000193f0  63 70 74 72 2c 20 63 70  74 72 2c 20 23 34 0a 09  |cptr, cptr, #4..|
00019400  4c 44 52 4e 45 09 74 31  2c 20 6f 70 5f 73 75 62  |LDRNE.t1, op_sub|
00019410  73 5f 30 5f 30 0a 09 4f  52 52 4e 45 09 74 31 2c  |s_0_0..ORRNE.t1,|
00019420  20 74 31 2c 20 6f 75 74  72 2c 20 4c 53 4c 20 23  | t1, outr, LSL #|
00019430  31 32 0a 09 4f 52 52 4e  45 09 74 31 2c 20 74 31  |12..ORRNE.t1, t1|
00019440  2c 20 6e 75 6d 2c 20 4c  53 4c 20 23 31 36 0a 09  |, num, LSL #16..|
00019450  4f 52 52 4e 45 09 74 31  2c 20 74 31 2c 20 6f 75  |ORRNE.t1, t1, ou|
00019460  74 72 0a 09 4f 52 52 4e  45 09 74 31 2c 20 74 31  |tr..ORRNE.t1, t1|
00019470  2c 20 74 33 2c 20 4c 53  4c 20 23 37 0a 09 53 54  |, t3, LSL #7..ST|
00019480  52 4e 45 09 74 31 2c 20  5b 63 70 74 72 5d 2c 20  |RNE.t1, [cptr], |
00019490  23 34 09 09 09 3b 73 75  62 73 20 6f 75 74 72 2c  |#4...;subs outr,|
000194a0  20 6e 75 6d 2c 20 6f 75  74 72 2c 20 6c 73 6c 20  | num, outr, lsl |
000194b0  23 6e 70 6f 77 65 72 5f  6f 66 5f 32 20 28 70 6f  |#npower_of_2 (po|
000194c0  73 73 69 62 6c 79 20 30  29 0a 09 4c 44 52 09 74  |ssibly 0)..LDR.t|
000194d0  31 2c 20 73 75 62 66 6c  61 67 0a 09 42 4e 45 09  |1, subflag..BNE.|
000194e0  64 6f 5f 63 68 65 63 6b  0a 09 43 4d 50 09 74 31  |do_check..CMP.t1|
000194f0  2c 20 23 30 0a 09 41 44  44 45 51 09 63 70 74 72  |, #0..ADDEQ.cptr|
00019500  2c 20 63 70 74 72 2c 20  23 31 32 0a 09 41 44 44  |, cptr, #12..ADD|
00019510  4e 45 09 63 70 74 72 2c  20 63 70 74 72 2c 20 23  |NE.cptr, cptr, #|
00019520  32 30 0a 09 42 09 6e 6f  77 5f 72 65 73 74 6f 72  |20..B.now_restor|
00019530  65 5f 73 69 67 6e 73 0a  64 6f 5f 63 68 65 63 6b  |e_signs.do_check|
00019540  0a 09 43 4d 50 09 77 6f  72 6b 2c 20 23 2d 31 0a  |..CMP.work, #-1.|
00019550  09 42 4e 45 09 75 73 65  5f 77 6f 72 6b 0a 09 43  |.BNE.use_work..C|
00019560  4d 50 09 74 31 2c 20 23  30 0a 09 4c 44 52 4e 45  |MP.t1, #0..LDRNE|
00019570  09 74 31 2c 20 6f 70 5f  73 75 62 6d 69 5f 30 5f  |.t1, op_submi_0_|
00019580  6e 31 0a 09 4f 52 52 4e  45 09 74 31 2c 20 74 31  |n1..ORRNE.t1, t1|
00019590  2c 20 6f 75 74 71 2c 20  4c 53 4c 20 23 31 32 0a  |, outq, LSL #12.|
000195a0  09 4f 52 52 4e 45 09 74  31 2c 20 74 31 2c 20 6f  |.ORRNE.t1, t1, o|
000195b0  75 74 71 2c 20 4c 53 4c  20 23 31 36 0a 09 53 54  |utq, LSL #16..ST|
000195c0  52 4e 45 09 74 31 2c 20  5b 63 70 74 72 5d 2c 20  |RNE.t1, [cptr], |
000195d0  23 34 09 09 09 3b 73 75  62 6d 69 20 6f 75 74 71  |#4...;submi outq|
000195e0  2c 20 6f 75 74 71 2c 20  23 31 0a 09 4c 44 52 09  |, outq, #1..LDR.|
000195f0  74 31 2c 20 6f 70 32 0a  09 4f 52 52 4e 45 09 74  |t1, op2..ORRNE.t|
00019600  32 2c 20 74 31 2c 20 23  32 5f 30 31 30 30 3c 3c  |2, t1, #2_0100<<|
00019610  32 38 09 09 3b 63 6f 6e  64 20 6d 69 0a 09 4f 52  |28..;cond mi..OR|
00019620  52 4e 45 09 74 32 2c 20  74 32 2c 20 23 32 5f 30  |RNE.t2, t2, #2_0|
00019630  31 30 30 3c 3c 32 31 09  09 3b 6f 70 63 6f 64 65  |100<<21..;opcode|
00019640  20 61 64 64 0a 09 53 54  52 4e 45 09 74 32 2c 20  | add..STRNE.t2, |
00019650  5b 63 70 74 72 5d 2c 20  23 34 09 09 09 3b 61 64  |[cptr], #4...;ad|
00019660  64 6d 69 20 6f 75 74 72  2c 20 6f 75 74 72 2c 20  |dmi outr, outr, |
00019670  23 63 6f 6e 73 74 0a 09  4f 52 52 09 74 32 2c 20  |#const..ORR.t2, |
00019680  74 31 2c 20 23 32 5f 31  31 31 30 3c 3c 32 38 09  |t1, #2_1110<<28.|
00019690  09 3b 63 6f 6e 64 20 61  6c 0a 09 4f 52 52 09 74  |.;cond al..ORR.t|
000196a0  32 2c 20 74 32 2c 20 23  32 5f 31 30 31 30 31 3c  |2, t2, #2_10101<|
000196b0  3c 32 30 09 09 3b 6f 70  63 6f 64 65 20 63 6d 70  |<20..;opcode cmp|
000196c0  73 0a 09 53 54 52 09 74  32 2c 20 5b 63 70 74 72  |s..STR.t2, [cptr|
000196d0  5d 2c 20 23 34 09 09 09  3b 63 6d 70 20 6f 75 74  |], #4...;cmp out|
000196e0  72 2c 20 23 63 6f 6e 73  74 0a 09 4c 44 52 09 74  |r, #const..LDR.t|
000196f0  32 2c 20 6f 70 5f 61 64  64 67 65 5f 30 5f 6e 31  |2, op_addge_0_n1|
00019700  0a 09 4f 52 52 09 74 32  2c 20 74 32 2c 20 6f 75  |..ORR.t2, t2, ou|
00019710  74 71 2c 20 4c 53 4c 20  23 31 32 0a 09 4f 52 52  |tq, LSL #12..ORR|
00019720  09 74 32 2c 20 74 32 2c  20 6f 75 74 71 2c 20 4c  |.t2, t2, outq, L|
00019730  53 4c 20 23 31 36 0a 09  53 54 52 09 74 32 2c 20  |SL #16..STR.t2, |
00019740  5b 63 70 74 72 5d 2c 20  23 34 09 09 09 3b 61 64  |[cptr], #4...;ad|
00019750  64 67 65 20 6f 75 74 71  2c 20 6f 75 74 71 2c 20  |dge outq, outq, |
00019760  23 31 0a 09 4f 52 52 09  74 32 2c 20 74 31 2c 20  |#1..ORR.t2, t1, |
00019770  23 32 5f 31 30 31 30 3c  3c 32 38 09 09 3b 63 6f  |#2_1010<<28..;co|
00019780  6e 64 20 67 65 0a 09 4f  52 52 09 74 32 2c 20 74  |nd ge..ORR.t2, t|
00019790  32 2c 20 23 32 5f 30 30  31 30 3c 3c 32 31 09 09  |2, #2_0010<<21..|
000197a0  3b 6f 70 63 6f 64 65 20  73 75 62 0a 09 53 54 52  |;opcode sub..STR|
000197b0  09 74 32 2c 20 5b 63 70  74 72 5d 2c 20 23 34 09  |.t2, [cptr], #4.|
000197c0  09 09 3b 73 75 62 67 65  20 6f 75 74 72 2c 20 6f  |..;subge outr, o|
000197d0  75 74 72 2c 20 23 63 6f  6e 73 74 0a 09 42 09 6e  |utr, #const..B.n|
000197e0  6f 77 5f 72 65 73 74 6f  72 65 5f 73 69 67 6e 73  |ow_restore_signs|
000197f0  0a 75 73 65 5f 77 6f 72  6b 0a 09 43 4d 50 09 74  |.use_work..CMP.t|
00019800  31 2c 20 23 30 0a 09 4c  44 52 4e 45 09 74 31 2c  |1, #0..LDRNE.t1,|
00019810  20 6f 70 5f 73 75 62 6d  69 5f 30 5f 6e 31 0a 09  | op_submi_0_n1..|
00019820  4f 52 52 4e 45 09 74 31  2c 20 74 31 2c 20 6f 75  |ORRNE.t1, t1, ou|
00019830  74 71 2c 20 4c 53 4c 20  23 31 32 0a 09 4f 52 52  |tq, LSL #12..ORR|
00019840  4e 45 09 74 31 2c 20 74  31 2c 20 6f 75 74 71 2c  |NE.t1, t1, outq,|
00019850  20 4c 53 4c 20 23 31 36  0a 09 53 54 52 4e 45 09  | LSL #16..STRNE.|
00019860  74 31 2c 20 5b 63 70 74  72 5d 2c 20 23 34 09 09  |t1, [cptr], #4..|
00019870  09 3b 73 75 62 6d 69 20  6f 75 74 71 2c 20 6f 75  |.;submi outq, ou|
00019880  74 71 2c 20 23 31 0a 09  4c 44 52 4e 45 09 74 31  |tq, #1..LDRNE.t1|
00019890  2c 20 6f 70 5f 61 64 64  6d 69 5f 30 5f 30 0a 09  |, op_addmi_0_0..|
000198a0  4f 52 52 4e 45 09 74 31  2c 20 74 31 2c 20 6f 75  |ORRNE.t1, t1, ou|
000198b0  74 72 2c 20 4c 53 4c 20  23 31 32 0a 09 4f 52 52  |tr, LSL #12..ORR|
000198c0  4e 45 09 74 31 2c 20 74  31 2c 20 6f 75 74 72 2c  |NE.t1, t1, outr,|
000198d0  20 4c 53 4c 20 23 31 36  0a 09 4f 52 52 4e 45 09  | LSL #16..ORRNE.|
000198e0  74 31 2c 20 74 31 2c 20  77 6f 72 6b 0a 09 53 54  |t1, t1, work..ST|
000198f0  52 4e 45 09 74 31 2c 20  5b 63 70 74 72 5d 2c 20  |RNE.t1, [cptr], |
00019900  23 34 09 09 09 3b 61 64  64 6d 69 20 6f 75 74 72  |#4...;addmi outr|
00019910  2c 20 6f 75 74 72 2c 20  77 6f 72 6b 0a 09 4c 44  |, outr, work..LD|
00019920  52 09 74 31 2c 20 6f 70  5f 63 6d 70 5f 30 5f 30  |R.t1, op_cmp_0_0|
00019930  0a 09 4f 52 52 09 74 32  2c 20 74 31 2c 20 6f 75  |..ORR.t2, t1, ou|
00019940  74 72 2c 20 4c 53 4c 20  23 31 36 0a 09 4f 52 52  |tr, LSL #16..ORR|
00019950  09 74 32 2c 20 74 32 2c  20 77 6f 72 6b 0a 09 53  |.t2, t2, work..S|
00019960  54 52 09 74 32 2c 20 5b  63 70 74 72 5d 2c 20 23  |TR.t2, [cptr], #|
00019970  34 09 09 09 3b 63 6d 70  20 6f 75 74 72 2c 20 77  |4...;cmp outr, w|
00019980  6f 72 6b 0a 09 4c 44 52  09 74 32 2c 20 6f 70 5f  |ork..LDR.t2, op_|
00019990  61 64 64 67 65 5f 30 5f  6e 31 0a 09 4f 52 52 09  |addge_0_n1..ORR.|
000199a0  74 32 2c 20 74 32 2c 20  6f 75 74 71 2c 20 4c 53  |t2, t2, outq, LS|
000199b0  4c 20 23 31 32 0a 09 4f  52 52 09 74 32 2c 20 74  |L #12..ORR.t2, t|
000199c0  32 2c 20 6f 75 74 71 2c  20 4c 53 4c 20 23 31 36  |2, outq, LSL #16|
000199d0  0a 09 53 54 52 09 74 32  2c 20 5b 63 70 74 72 5d  |..STR.t2, [cptr]|
000199e0  2c 20 23 34 09 09 09 3b  61 64 64 67 65 20 6f 75  |, #4...;addge ou|
000199f0  74 71 2c 20 6f 75 74 71  2c 20 23 31 0a 09 4c 44  |tq, outq, #1..LD|
00019a00  52 09 74 31 2c 20 6f 70  5f 73 75 62 67 65 5f 30  |R.t1, op_subge_0|
00019a10  5f 30 0a 09 4f 52 52 09  74 31 2c 20 74 31 2c 20  |_0..ORR.t1, t1, |
00019a20  6f 75 74 72 2c 20 4c 53  4c 20 23 31 32 0a 09 4f  |outr, LSL #12..O|
00019a30  52 52 09 74 31 2c 20 74  31 2c 20 6f 75 74 72 2c  |RR.t1, t1, outr,|
00019a40  20 4c 53 4c 20 23 31 36  0a 09 4f 52 52 09 74 31  | LSL #16..ORR.t1|
00019a50  2c 20 74 31 2c 20 77 6f  72 6b 0a 09 53 54 52 09  |, t1, work..STR.|
00019a60  74 31 2c 20 5b 63 70 74  72 5d 2c 20 23 34 09 09  |t1, [cptr], #4..|
00019a70  09 3b 73 75 62 67 65 20  6f 75 74 72 2c 20 6f 75  |.;subge outr, ou|
00019a80  74 72 2c 20 77 6f 72 6b  0a 6e 6f 77 5f 72 65 73  |tr, work.now_res|
00019a90  74 6f 72 65 5f 73 69 67  6e 73 0a 09 4c 44 52 09  |tore_signs..LDR.|
00019aa0  74 34 2c 20 69 6e 69 74  69 61 6c 5f 63 70 74 72  |t4, initial_cptr|
00019ab0  0a 09 4c 44 52 09 74 33  2c 20 6e 73 69 67 6e 70  |..LDR.t3, nsignp|
00019ac0  72 65 73 0a 09 43 4d 50  09 73 69 67 6e 70 72 65  |res..CMP.signpre|
00019ad0  73 2c 20 23 2d 31 0a 09  42 4e 45 09 73 69 67 6e  |s, #-1..BNE.sign|
00019ae0  70 72 65 73 64 0a 09 43  4d 50 09 74 33 2c 20 23  |presd..CMP.t3, #|
00019af0  2d 31 0a 09 42 4e 45 09  61 6c 6c 5f 64 6f 6e 65  |-1..BNE.all_done|
00019b00  0a 09 43 4d 50 09 74 34  2c 20 23 30 0a 09 41 44  |..CMP.t4, #0..AD|
00019b10  44 45 51 09 63 70 74 72  2c 20 63 70 74 72 2c 20  |DEQ.cptr, cptr, |
00019b20  23 34 0a 09 4c 44 52 4e  45 09 74 31 2c 20 6f 70  |#4..LDRNE.t1, op|
00019b30  5f 72 73 62 5f 30 0a 09  4f 52 52 4e 45 09 74 31  |_rsb_0..ORRNE.t1|
00019b40  2c 20 74 31 2c 20 6f 75  74 71 2c 20 4c 53 4c 20  |, t1, outq, LSL |
00019b50  23 31 32 0a 09 4f 52 52  4e 45 09 74 31 2c 20 74  |#12..ORRNE.t1, t|
00019b60  31 2c 20 6f 75 74 71 2c  20 4c 53 4c 20 23 31 36  |1, outq, LSL #16|
00019b70  0a 09 53 54 52 4e 45 09  74 31 2c 20 5b 63 70 74  |..STRNE.t1, [cpt|
00019b80  72 5d 2c 20 23 34 09 09  09 3b 72 73 62 20 6f 75  |r], #4...;rsb ou|
00019b90  74 71 2c 20 6f 75 74 71  2c 20 23 30 0a 09 42 09  |tq, outq, #0..B.|
00019ba0  61 6c 6c 5f 64 6f 6e 65  0a 73 69 67 6e 70 72 65  |all_done.signpre|
00019bb0  73 64 0a 09 43 4d 50 09  74 34 2c 20 23 30 0a 09  |sd..CMP.t4, #0..|
00019bc0  41 44 44 45 51 09 63 70  74 72 2c 20 63 70 74 72  |ADDEQ.cptr, cptr|
00019bd0  2c 20 23 31 36 0a 09 42  45 51 09 61 6c 6c 5f 64  |, #16..BEQ.all_d|
00019be0  6f 6e 65 0a 09 4c 44 52  09 74 31 2c 20 6f 70 5f  |one..LDR.t1, op_|
00019bf0  74 65 71 73 5f 73 69 67  6e 0a 09 4f 52 52 09 74  |teqs_sign..ORR.t|
00019c00  31 2c 20 74 31 2c 20 73  69 67 6e 70 72 65 73 2c  |1, t1, signpres,|
00019c10  20 4c 53 4c 20 23 31 36  0a 09 53 54 52 09 74 31  | LSL #16..STR.t1|
00019c20  2c 20 5b 63 70 74 72 5d  2c 20 23 34 09 09 09 3b  |, [cptr], #4...;|
00019c30  74 65 71 73 20 73 69 67  6e 70 72 65 73 2c 20 23  |teqs signpres, #|
00019c40  26 38 30 30 30 30 30 30  30 0a 09 4c 44 52 09 74  |&80000000..LDR.t|
00019c50  32 2c 20 6f 70 5f 72 73  62 65 71 5f 30 0a 09 4f  |2, op_rsbeq_0..O|
00019c60  52 52 09 74 31 2c 20 74  32 2c 20 6e 75 6d 2c 20  |RR.t1, t2, num, |
00019c70  4c 53 4c 20 23 31 32 0a  09 4f 52 52 09 74 31 2c  |LSL #12..ORR.t1,|
00019c80  20 74 31 2c 20 6e 75 6d  2c 20 4c 53 4c 20 23 31  | t1, num, LSL #1|
00019c90  36 0a 09 53 54 52 09 74  31 2c 20 5b 63 70 74 72  |6..STR.t1, [cptr|
00019ca0  5d 2c 20 23 34 09 09 09  3b 72 73 62 65 71 20 6e  |], #4...;rsbeq n|
00019cb0  75 6d 2c 20 6e 75 6d 2c  20 23 30 0a 09 4f 52 52  |um, num, #0..ORR|
00019cc0  09 74 31 2c 20 74 32 2c  20 6f 75 74 72 2c 20 4c  |.t1, t2, outr, L|
00019cd0  53 4c 20 23 31 32 0a 09  4f 52 52 09 74 31 2c 20  |SL #12..ORR.t1, |
00019ce0  74 31 2c 20 6f 75 74 72  2c 20 4c 53 4c 20 23 31  |t1, outr, LSL #1|
00019cf0  36 0a 09 53 54 52 09 74  31 2c 20 5b 63 70 74 72  |6..STR.t1, [cptr|
00019d00  5d 2c 20 23 34 09 09 09  3b 72 73 62 65 71 20 6f  |], #4...;rsbeq o|
00019d10  75 74 72 2c 20 6f 75 74  72 2c 20 23 30 0a 09 4f  |utr, outr, #0..O|
00019d20  52 52 09 74 31 2c 20 74  32 2c 20 6f 75 74 71 2c  |RR.t1, t2, outq,|
00019d30  20 4c 53 4c 20 23 31 32  0a 09 4f 52 52 09 74 31  | LSL #12..ORR.t1|
00019d40  2c 20 74 31 2c 20 6f 75  74 71 2c 20 4c 53 4c 20  |, t1, outq, LSL |
00019d50  23 31 36 0a 09 43 4d 50  09 74 33 2c 20 23 2d 31  |#16..CMP.t3, #-1|
00019d60  0a 09 4f 52 52 45 51 09  74 31 2c 20 74 31 2c 20  |..ORREQ.t1, t1, |
00019d70  23 32 5f 30 30 30 31 3c  3c 32 38 09 09 3b 63 6f  |#2_0001<<28..;co|
00019d80  6e 64 20 6e 65 0a 09 53  54 52 09 74 31 2c 20 5b  |nd ne..STR.t1, [|
00019d90  63 70 74 72 5d 2c 20 23  34 09 09 09 3b 69 66 20  |cptr], #4...;if |
00019da0  6e 65 20 27 72 73 62 65  71 20 6f 75 74 71 2c 20  |ne 'rsbeq outq, |
00019db0  6f 75 74 71 2c 20 23 30  27 2c 20 65 6c 73 65 20  |outq, #0', else |
00019dc0  66 6c 69 70 20 63 6f 6e  64 20 74 6f 20 72 73 62  |flip cond to rsb|
00019dd0  6e 65 0a 61 6c 6c 5f 64  6f 6e 65 0a 09 4c 44 52  |ne.all_done..LDR|
00019de0  09 74 31 2c 20 69 6e 69  74 69 61 6c 5f 63 70 74  |.t1, initial_cpt|
00019df0  72 0a 09 53 55 42 09 72  30 2c 20 63 70 74 72 2c  |r..SUB.r0, cptr,|
00019e00  20 74 31 0a 09 4c 44 4d  46 44 09 73 70 21 2c 20  | t1..LDMFD.sp!, |
00019e10  7b 70 63 7d 5e 0a 0a 69  6e 69 74 69 61 6c 5f 63  |{pc}^..initial_c|
00019e20  70 74 72 09 44 43 44 09  30 0a 6e 73 69 67 6e 70  |ptr.DCD.0.nsignp|
00019e30  72 65 73 09 44 43 44 09  30 0a 70 6f 77 65 72 5f  |res.DCD.0.power_|
00019e40  6f 66 5f 32 09 44 43 44  09 30 0a 73 75 62 66 6c  |of_2.DCD.0.subfl|
00019e50  61 67 09 09 44 43 44 09  30 0a 6e 70 6f 77 65 72  |ag..DCD.0.npower|
00019e60  5f 6f 66 5f 32 09 44 43  44 09 30 0a 61 73 09 09  |_of_2.DCD.0.as..|
00019e70  44 43 44 09 30 0a 61 6d  09 09 44 43 44 09 30 0a  |DCD.0.am..DCD.0.|
00019e80  0a 6f 70 31 09 41 4e 44  45 51 09 72 30 2c 20 72  |.op1.ANDEQ.r0, r|
00019e90  30 2c 20 23 30 2c 30 09  09 09 3b 75 73 65 64 20  |0, #0,0...;used |
00019ea0  74 6f 20 62 75 69 6c 64  20 6f 70 32 3b 20 6e 6f  |to build op2; no|
00019eb0  74 65 20 41 4e 44 2c 20  45 51 20 65 74 63 20 63  |te AND, EQ etc c|
00019ec0  68 6f 73 65 6e 20 61 73  20 67 69 76 65 20 30 20  |hosen as give 0 |
00019ed0  62 69 74 73 0a 6f 70 32  09 44 43 44 09 30 09 09  |bits.op2.DCD.0..|
00019ee0  09 09 3b 77 69 6c 6c 20  73 74 6f 72 65 20 64 61  |..;will store da|
00019ef0  74 61 20 70 72 6f 63 65  73 73 69 6e 67 20 69 6e  |ta processing in|
00019f00  73 74 72 75 63 74 69 6f  6e 20 6f 66 20 66 6f 72  |struction of for|
00019f10  6d 0a 09 09 09 09 09 09  3b 3c 63 6f 6e 64 3e 3c  |m.......;<cond><|
00019f20  6f 70 63 6f 64 65 3e 20  5b 6f 75 74 72 5d 2c 5b  |opcode> [outr],[|
00019f30  6f 75 74 72 5d 2c 23 5b  63 6f 6e 73 74 5d 0a 09  |outr],#[const]..|
00019f40  09 09 09 09 09 3b 4e 42  20 6f 75 74 72 20 69 73  |.....;NB outr is|
00019f50  20 72 34 2c 20 5b 6f 75  74 72 5d 20 6d 65 61 6e  | r4, [outr] mean|
00019f60  73 20 74 68 65 20 72 65  67 69 73 74 65 72 20 77  |s the register w|
00019f70  68 6f 73 65 20 6e 75 6d  62 65 72 20 69 73 0a 09  |hose number is..|
00019f80  09 09 09 09 09 3b 73 74  6f 72 65 64 20 69 6e 20  |.....;stored in |
00019f90  72 34 20 77 68 65 6e 20  67 65 6e 65 72 61 74 6f  |r4 when generato|
00019fa0  72 20 63 6f 64 65 20 65  78 65 63 75 74 65 64 20  |r code executed |
00019fb0  2d 20 64 6f 6e 27 74 20  63 6f 6e 66 75 73 65 0a  |- don't confuse.|
00019fc0  09 09 09 09 09 09 3b 74  68 69 73 20 77 69 74 68  |......;this with|
00019fd0  20 72 65 67 69 73 74 65  72 20 72 34 20 69 74 73  | register r4 its|
00019fe0  65 6c 66 2e 0a 6f 70 5f  6d 6f 76 5f 30 09 4d 4f  |elf..op_mov_0.MO|
00019ff0  56 09 72 30 2c 20 23 30  2c 30 0a 6f 70 5f 6d 6f  |V.r0, #0,0.op_mo|
0001a000  76 5f 72 30 09 4d 4f 56  09 72 30 2c 20 72 30 0a  |v_r0.MOV.r0, r0.|
0001a010  6f 70 5f 72 73 62 5f 30  09 52 53 42 09 72 30 2c  |op_rsb_0.RSB.r0,|
0001a020  20 72 30 2c 20 23 30 2c  30 0a 6f 70 5f 61 6e 64  | r0, #0,0.op_and|
0001a030  73 5f 73 69 67 6e 09 41  4e 44 53 09 72 30 2c 20  |s_sign.ANDS.r0, |
0001a040  72 30 2c 20 23 26 38 30  30 30 30 30 30 30 0a 6f  |r0, #&80000000.o|
0001a050  70 5f 72 73 62 6e 65 5f  30 09 52 53 42 4e 45 09  |p_rsbne_0.RSBNE.|
0001a060  72 30 2c 20 72 30 2c 20  23 30 2c 30 0a 6f 70 5f  |r0, r0, #0,0.op_|
0001a070  73 75 62 5f 30 5f 30 09  53 55 42 09 72 30 2c 20  |sub_0_0.SUB.r0, |
0001a080  72 30 2c 20 72 30 0a 6f  70 5f 6f 72 72 5f 30 09  |r0, r0.op_orr_0.|
0001a090  4f 52 52 09 72 30 2c 20  72 30 2c 20 23 30 2c 30  |ORR.r0, r0, #0,0|
0001a0a0  0a 6f 70 5f 61 64 64 5f  30 5f 30 09 41 44 44 09  |.op_add_0_0.ADD.|
0001a0b0  72 30 2c 20 72 30 2c 20  72 30 0a 6f 70 5f 73 75  |r0, r0, r0.op_su|
0001a0c0  62 5f 30 5f 30 5f 6c 73  72 09 53 55 42 09 72 30  |b_0_0_lsr.SUB.r0|
0001a0d0  2c 20 72 30 2c 20 72 30  2c 20 4c 53 52 20 23 33  |, r0, r0, LSR #3|
0001a0e0  32 09 3b 6e 62 20 4c 53  52 20 23 33 32 20 72 65  |2.;nb LSR #32 re|
0001a0f0  70 72 65 73 65 6e 74 65  64 20 69 6e 20 62 69 74  |presented in bit|
0001a100  20 66 69 65 6c 64 20 62  79 20 4c 53 52 20 23 30  | field by LSR #0|
0001a110  0a 6f 70 5f 61 64 64 5f  30 5f 30 5f 6c 73 72 09  |.op_add_0_0_lsr.|
0001a120  41 44 44 09 72 30 2c 20  72 30 2c 20 72 30 2c 20  |ADD.r0, r0, r0, |
0001a130  4c 53 52 20 23 33 32 0a  6f 70 5f 6d 6f 76 5f 72  |LSR #32.op_mov_r|
0001a140  30 5f 6c 73 72 09 4d 4f  56 09 72 30 2c 20 72 30  |0_lsr.MOV.r0, r0|
0001a150  2c 20 4c 53 52 20 23 33  32 0a 6f 70 5f 72 73 62  |, LSR #32.op_rsb|
0001a160  5f 30 5f 30 09 52 53 42  09 72 30 2c 20 72 30 2c  |_0_0.RSB.r0, r0,|
0001a170  20 72 30 0a 6f 70 5f 73  75 62 73 5f 30 5f 30 09  | r0.op_subs_0_0.|
0001a180  53 55 42 53 09 72 30 2c  20 72 30 2c 20 72 30 0a  |SUBS.r0, r0, r0.|
0001a190  6f 70 5f 73 75 62 6d 69  5f 30 5f 6e 31 09 53 55  |op_submi_0_n1.SU|
0001a1a0  42 4d 49 09 72 30 2c 20  72 30 2c 20 23 31 0a 6f  |BMI.r0, r0, #1.o|
0001a1b0  70 5f 61 64 64 67 65 5f  30 5f 6e 31 09 41 44 44  |p_addge_0_n1.ADD|
0001a1c0  47 45 09 72 30 2c 20 72  30 2c 20 23 31 0a 6f 70  |GE.r0, r0, #1.op|
0001a1d0  5f 61 64 64 6d 69 5f 30  5f 30 09 41 44 44 4d 49  |_addmi_0_0.ADDMI|
0001a1e0  09 72 30 2c 20 72 30 2c  20 72 30 0a 6f 70 5f 63  |.r0, r0, r0.op_c|
0001a1f0  6d 70 5f 30 5f 30 09 43  4d 50 09 72 30 2c 20 72  |mp_0_0.CMP.r0, r|
0001a200  30 0a 6f 70 5f 73 75 62  67 65 5f 30 5f 30 09 53  |0.op_subge_0_0.S|
0001a210  55 42 47 45 09 72 30 2c  20 72 30 2c 20 72 30 0a  |UBGE.r0, r0, r0.|
0001a220  6f 70 5f 74 65 71 73 5f  73 69 67 6e 09 54 45 51  |op_teqs_sign.TEQ|
0001a230  53 09 72 30 2c 20 23 26  38 30 30 30 30 30 30 30  |S.r0, #&80000000|
0001a240  0a 6f 70 5f 72 73 62 65  71 5f 30 09 52 53 42 45  |.op_rsbeq_0.RSBE|
0001a250  51 09 72 30 2c 20 72 30  2c 20 23 30 2c 30 0a 0a  |Q.r0, r0, #0,0..|
0001a260  6f 70 5f 66 64 31 09 09  44 43 44 09 30 0a 6f 70  |op_fd1..DCD.0.op|
0001a270  5f 66 64 32 09 09 44 43  44 09 30 0a 6f 70 5f 66  |_fd2..DCD.0.op_f|
0001a280  64 33 09 09 44 43 44 09  30 0a 6f 70 5f 66 64 34  |d3..DCD.0.op_fd4|
0001a290  09 09 44 43 44 09 30 0a  6f 70 5f 66 6d 31 09 09  |..DCD.0.op_fm1..|
0001a2a0  44 43 44 09 30 0a 6f 70  5f 66 6d 32 09 09 44 43  |DCD.0.op_fm2..DC|
0001a2b0  44 09 30 0a 6f 70 5f 66  6d 33 09 09 44 43 44 09  |D.0.op_fm3..DCD.|
0001a2c0  30 0a 6f 70 5f 66 6d 34  09 09 44 43 44 09 30 0a  |0.op_fm4..DCD.0.|
0001a2d0  6f 70 5f 66 6d 35 09 09  44 43 44 09 30 0a 6f 70  |op_fm5..DCD.0.op|
0001a2e0  5f 66 6d 36 09 09 44 43  44 09 30 0a 0a 61 73 74  |_fm6..DCD.0..ast|
0001a2f0  6b 09 25 09 31 36 2a 38  09 09 09 09 3b 31 36 20  |k.%.16*8....;16 |
0001a300  65 6e 74 72 69 65 73 20  6f 66 20 32 20 77 6f 72  |entries of 2 wor|
0001a310  64 73 20 28 61 6e 20 65  6d 70 74 79 20 61 73 63  |ds (an empty asc|
0001a320  65 6e 64 69 6e 67 20 73  74 61 63 6b 29 0a 61 73  |ending stack).as|
0001a330  74 6b 5f 65 6e 64 0a 0a  66 61 73 74 64 69 76 61  |tk_end..fastdiva|
0001a340  69 64 0a 09 43 4d 50 09  73 74 6b 2c 20 73 74 6b  |id..CMP.stk, stk|
0001a350  6c 0a 09 4d 4f 56 47 45  09 72 30 2c 20 23 2d 35  |l..MOVGE.r0, #-5|
0001a360  0a 09 4c 44 4d 47 45 46  44 09 73 70 21 2c 20 7b  |..LDMGEFD.sp!, {|
0001a370  70 63 7d 5e 0a 09 4d 4f  56 09 74 34 2c 20 66 6e  |pc}^..MOV.t4, fn|
0001a380  09 09 09 09 3b 74 34 20  68 6f 6c 64 73 20 6c 6f  |....;t4 holds lo|
0001a390  63 61 6c 20 63 6f 6e 73  74 25 0a 09 4d 4f 56 09  |cal const%..MOV.|
0001a3a0  74 31 2c 20 6c 72 0a 09  42 4c 09 62 69 74 70 61  |t1, lr..BL.bitpa|
0001a3b0  74 6c 65 6e 09 09 09 3b  66 6e 20 6e 6f 77 20 68  |tlen...;fn now h|
0001a3c0  6f 6c 64 73 20 42 61 73  69 63 20 6c 73 25 0a 09  |olds Basic ls%..|
0001a3d0  53 55 42 09 74 33 2c 20  66 6e 2c 20 23 31 0a 09  |SUB.t3, fn, #1..|
0001a3e0  53 54 4d 45 41 09 73 74  6b 21 2c 20 7b 74 33 2c  |STMEA.stk!, {t3,|
0001a3f0  20 74 31 7d 09 09 09 3b  73 74 61 63 6b 20 6c 73  | t1}...;stack ls|
0001a400  25 2d 31 20 61 62 6f 76  65 20 72 65 74 75 72 6e  |%-1 above return|
0001a410  20 61 64 64 72 65 73 73  0a 09 41 4e 44 53 09 74  | address..ANDS.t|
0001a420  32 2c 20 74 34 2c 20 23  33 0a 09 43 4d 50 4e 45  |2, t4, #3..CMPNE|
0001a430  09 74 32 2c 20 23 32 0a  09 4d 4f 56 45 51 09 72  |.t2, #2..MOVEQ.r|
0001a440  30 2c 20 23 2d 36 0a 09  4c 44 4d 45 51 46 44 09  |0, #-6..LDMEQFD.|
0001a450  73 70 21 2c 20 7b 70 63  7d 5e 0a 09 43 4d 50 09  |sp!, {pc}^..CMP.|
0001a460  74 32 2c 20 23 31 0a 09  53 55 42 45 51 09 74 34  |t2, #1..SUBEQ.t4|
0001a470  2c 20 74 34 2c 20 23 31  0a 09 41 44 44 4e 45 09  |, t4, #1..ADDNE.|
0001a480  74 34 2c 20 74 34 2c 20  23 31 0a 09 4d 4f 56 4e  |t4, t4, #1..MOVN|
0001a490  45 09 74 31 2c 20 23 31  0a 09 53 54 52 4e 45 09  |E.t1, #1..STRNE.|
0001a4a0  74 31 2c 20 73 75 62 66  6c 61 67 0a 09 4d 4f 56  |t1, subflag..MOV|
0001a4b0  09 66 6e 2c 20 74 34 0a  09 42 4c 09 70 6f 77 65  |.fn, t4..BL.powe|
0001a4c0  72 6f 66 32 0a 09 4d 4f  56 09 74 34 2c 20 74 34  |rof2..MOV.t4, t4|
0001a4d0  2c 20 4c 53 52 20 66 6e  09 09 09 3b 6c 6f 63 61  |, LSR fn...;loca|
0001a4e0  6c 20 63 6f 6e 73 74 20  3d 20 63 6f 6e 73 74 20  |l const = const |
0001a4f0  3e 3e 3e 20 70 6f 77 65  72 6f 66 32 28 63 6f 6e  |>>> powerof2(con|
0001a500  73 74 29 0a 09 43 4d 50  09 74 34 2c 20 23 31 0a  |st)..CMP.t4, #1.|
0001a510  09 42 4e 45 09 66 64 61  5f 63 6f 6e 73 74 6f 76  |.BNE.fda_constov|
0001a520  65 72 6f 6e 65 0a 09 4c  44 52 09 74 31 2c 20 69  |erone..LDR.t1, i|
0001a530  6e 69 74 69 61 6c 5f 63  70 74 72 0a 09 43 4d 50  |nitial_cptr..CMP|
0001a540  09 74 31 2c 20 23 30 0a  09 42 4e 45 09 66 64 61  |.t1, #0..BNE.fda|
0001a550  5f 6c 31 0a 09 43 4d 50  09 74 32 2c 20 23 31 09  |_l1..CMP.t2, #1.|
0001a560  09 09 09 3b 45 51 20 69  6d 70 6c 69 65 73 20 64  |...;EQ implies d|
0001a570  69 76 69 6e 73 74 24 3d  22 41 44 44 22 0a 09 41  |ivinst$="ADD"..A|
0001a580  44 44 45 51 09 63 70 74  72 2c 20 63 70 74 72 2c  |DDEQ.cptr, cptr,|
0001a590  20 23 34 0a 09 41 44 44  4e 45 09 63 70 74 72 2c  | #4..ADDNE.cptr,|
0001a5a0  20 63 70 74 72 2c 20 23  38 0a 09 42 09 66 64 61  | cptr, #8..B.fda|
0001a5b0  5f 65 78 69 74 0a 66 64  61 5f 6c 31 09 4c 44 52  |_exit.fda_l1.LDR|
0001a5c0  09 74 33 2c 20 5b 73 74  6b 2c 20 23 2d 34 5d 09  |.t3, [stk, #-4].|
0001a5d0  09 09 3b 67 65 74 20 62  61 63 6b 20 6c 73 25 2d  |..;get back ls%-|
0001a5e0  31 0a 09 43 4d 50 09 74  32 2c 20 23 31 0a 09 4c  |1..CMP.t2, #1..L|
0001a5f0  44 52 4e 45 09 74 31 2c  20 6f 70 5f 66 64 31 0a  |DRNE.t1, op_fd1.|
0001a600  09 53 54 52 4e 45 09 74  31 2c 20 5b 63 70 74 72  |.STRNE.t1, [cptr|
0001a610  5d 2c 20 23 34 09 09 09  3b 61 64 64 20 6f 75 74  |], #4...;add out|
0001a620  71 2c 20 6e 75 6d 2c 20  6e 75 6d 0a 09 4c 44 52  |q, num, num..LDR|
0001a630  4e 45 09 74 31 2c 20 6f  70 5f 66 64 32 0a 09 4c  |NE.t1, op_fd2..L|
0001a640  44 52 45 51 09 74 31 2c  20 6f 70 5f 66 64 33 0a  |DREQ.t1, op_fd3.|
0001a650  09 4f 52 52 09 74 31 2c  20 74 31 2c 20 74 33 2c  |.ORR.t1, t1, t3,|
0001a660  20 4c 53 4c 20 23 37 0a  09 53 54 52 09 74 31 2c  | LSL #7..STR.t1,|
0001a670  20 5b 63 70 74 72 5d 2c  20 23 34 09 09 09 3b 69  | [cptr], #4...;i|
0001a680  66 20 4e 45 20 27 73 75  62 20 6f 75 74 71 2c 20  |f NE 'sub outq, |
0001a690  6f 75 74 71 2c 20 6e 75  6d 2c 20 6c 73 72 20 23  |outq, num, lsr #|
0001a6a0  6c 73 25 2d 31 27 0a 09  42 09 66 64 61 5f 65 78  |ls%-1'..B.fda_ex|
0001a6b0  69 74 09 09 09 3b 65 6c  73 65 20 20 27 61 64 64  |it...;else  'add|
0001a6c0  20 6f 75 74 71 2c 20 6e  75 6d 2c 20 6e 75 6d 2c  | outq, num, num,|
0001a6d0  20 6c 73 72 20 23 6c 73  25 2d 31 27 0a 66 64 61  | lsr #ls%-1'.fda|
0001a6e0  5f 63 6f 6e 73 74 6f 76  65 72 6f 6e 65 0a 09 43  |_constoverone..C|
0001a6f0  4d 50 09 74 32 2c 20 23  31 0a 09 42 45 51 09 66  |MP.t2, #1..BEQ.f|
0001a700  64 61 5f 6c 32 0a 09 09  09 09 09 09 3b 63 6f 6e  |da_l2.......;con|
0001a710  73 74 3e 31 20 26 20 64  69 76 69 6e 73 74 24 3d  |st>1 & divinst$=|
0001a720  22 53 55 42 22 0a 09 4d  4f 56 09 66 6e 2c 20 74  |"SUB"..MOV.fn, t|
0001a730  34 09 09 09 09 3b 66 69  72 73 74 20 72 65 63 75  |4....;first recu|
0001a740  72 73 65 0a 09 42 4c 09  66 61 73 74 64 69 76 61  |rse..BL.fastdiva|
0001a750  69 64 0a 09 4c 44 52 09  74 31 2c 20 69 6e 69 74  |id..LDR.t1, init|
0001a760  69 61 6c 5f 63 70 74 72  0a 09 43 4d 50 09 74 31  |ial_cptr..CMP.t1|
0001a770  2c 20 23 30 0a 09 41 44  44 45 51 09 63 70 74 72  |, #0..ADDEQ.cptr|
0001a780  2c 20 63 70 74 72 2c 20  23 34 0a 09 42 45 51 09  |, cptr, #4..BEQ.|
0001a790  66 64 61 5f 65 78 69 74  0a 09 4c 44 52 09 66 6e  |fda_exit..LDR.fn|
0001a7a0  2c 20 5b 73 74 6b 2c 20  23 2d 34 5d 0a 09 4c 44  |, [stk, #-4]..LD|
0001a7b0  52 09 74 31 2c 20 6f 70  5f 66 64 32 0a 09 4f 52  |R.t1, op_fd2..OR|
0001a7c0  52 09 74 31 2c 20 74 31  2c 20 66 6e 2c 20 4c 53  |R.t1, t1, fn, LS|
0001a7d0  4c 20 23 37 0a 09 53 54  52 09 74 31 2c 20 5b 63  |L #7..STR.t1, [c|
0001a7e0  70 74 72 5d 2c 20 23 34  0a 09 42 09 66 64 61 5f  |ptr], #4..B.fda_|
0001a7f0  65 78 69 74 0a 66 64 61  5f 6c 32 09 09 09 09 09  |exit.fda_l2.....|
0001a800  09 3b 63 6f 6e 73 74 3e  31 20 26 20 64 69 76 69  |.;const>1 & divi|
0001a810  6e 73 74 24 3d 22 41 44  44 22 0a 09 4d 4f 56 09  |nst$="ADD"..MOV.|
0001a820  66 6e 2c 20 74 34 09 09  09 09 3b 66 69 72 73 74  |fn, t4....;first|
0001a830  20 72 65 63 75 72 73 65  0a 09 42 4c 09 66 61 73  | recurse..BL.fas|
0001a840  74 64 69 76 61 69 64 0a  09 4c 44 52 09 74 31 2c  |tdivaid..LDR.t1,|
0001a850  20 69 6e 69 74 69 61 6c  5f 63 70 74 72 0a 09 43  | initial_cptr..C|
0001a860  4d 50 09 74 31 2c 20 23  30 0a 09 41 44 44 45 51  |MP.t1, #0..ADDEQ|
0001a870  09 63 70 74 72 2c 20 63  70 74 72 2c 20 23 34 0a  |.cptr, cptr, #4.|
0001a880  09 42 45 51 09 66 64 61  5f 65 78 69 74 0a 09 4c  |.BEQ.fda_exit..L|
0001a890  44 52 09 66 6e 2c 20 5b  73 74 6b 2c 20 23 2d 34  |DR.fn, [stk, #-4|
0001a8a0  5d 0a 09 4c 44 52 09 74  31 2c 20 6f 70 5f 66 64  |]..LDR.t1, op_fd|
0001a8b0  34 0a 09 4f 52 52 09 74  31 2c 20 74 31 2c 20 66  |4..ORR.t1, t1, f|
0001a8c0  6e 2c 20 4c 53 4c 20 23  37 0a 09 53 54 52 09 74  |n, LSL #7..STR.t|
0001a8d0  31 2c 20 5b 63 70 74 72  5d 2c 20 23 34 0a 66 64  |1, [cptr], #4.fd|
0001a8e0  61 5f 65 78 69 74 0a 09  4c 44 4d 45 41 09 73 74  |a_exit..LDMEA.st|
0001a8f0  6b 21 2c 20 7b 66 6e 2c  20 74 32 7d 09 09 09 3b  |k!, {fn, t2}...;|
0001a900  64 69 73 63 61 72 64 20  6c 73 25 2d 31 20 26 20  |discard ls%-1 & |
0001a910  72 65 74 75 72 6e 0a 09  4d 4f 56 53 09 70 63 2c  |return..MOVS.pc,|
0001a920  20 74 32 0a 0a 66 61 73  74 6d 75 6c 0a 09 43 4d  | t2..fastmul..CM|
0001a930  50 09 73 74 6b 2c 20 73  74 6b 6c 0a 09 4d 4f 56  |P.stk, stkl..MOV|
0001a940  47 45 09 72 30 2c 20 23  2d 35 0a 09 4c 44 4d 47  |GE.r0, #-5..LDMG|
0001a950  45 46 44 09 73 70 21 2c  20 7b 70 63 7d 5e 0a 09  |EFD.sp!, {pc}^..|
0001a960  53 54 4d 45 41 09 73 74  6b 21 2c 20 7b 6c 72 7d  |STMEA.stk!, {lr}|
0001a970  0a 09 41 4e 44 53 09 74  31 2c 20 66 6e 2c 20 23  |..ANDS.t1, fn, #|
0001a980  33 09 09 09 3b 66 6e 20  68 6f 6c 64 73 20 6c 6f  |3...;fn holds lo|
0001a990  63 61 6c 20 63 6f 6e 73  74 0a 09 43 4d 50 4e 45  |cal const..CMPNE|
0001a9a0  09 74 31 2c 20 23 32 0a  09 42 4e 45 09 66 6d 5f  |.t1, #2..BNE.fm_|
0001a9b0  74 72 79 5f 6f 6e 65 0a  09 4d 4f 56 09 74 34 2c  |try_one..MOV.t4,|
0001a9c0  20 66 6e 0a 09 42 4c 09  70 6f 77 65 72 6f 66 32  | fn..BL.powerof2|
0001a9d0  0a 09 53 54 4d 45 41 09  73 74 6b 21 2c 20 7b 66  |..STMEA.stk!, {f|
0001a9e0  6e 7d 09 09 09 3b 72 65  74 75 72 6e 20 61 64 64  |n}...;return add|
0001a9f0  72 65 73 73 20 26 20 6e  25 20 28 66 6e 29 20 20  |ress & n% (fn)  |
0001aa00  73 74 61 63 6b 65 64 2c  20 6c 6f 63 61 6c 20 63  |stacked, local c|
0001aa10  6f 6e 73 74 20 69 6e 20  74 34 0a 09 4d 4f 56 09  |onst in t4..MOV.|
0001aa20  74 34 2c 20 74 34 2c 20  4c 53 52 20 66 6e 0a 09  |t4, t4, LSR fn..|
0001aa30  43 4d 50 09 74 34 2c 20  23 31 0a 09 4c 44 52 45  |CMP.t4, #1..LDRE|
0001aa40  51 09 74 32 2c 20 6f 70  5f 66 6d 31 0a 09 42 45  |Q.t2, op_fm1..BE|
0001aa50  51 09 66 6d 5f 65 78 69  74 0a 09 4d 4f 56 09 66  |Q.fm_exit..MOV.f|
0001aa60  6e 2c 20 74 34 0a 09 42  4c 09 66 61 73 74 6d 75  |n, t4..BL.fastmu|
0001aa70  6c 09 09 09 09 3b 72 65  63 75 72 73 65 0a 09 4c  |l....;recurse..L|
0001aa80  44 52 09 66 6e 2c 20 5b  73 74 6b 2c 20 23 2d 34  |DR.fn, [stk, #-4|
0001aa90  5d 0a 09 4c 44 52 09 74  32 2c 20 6f 70 5f 66 6d  |]..LDR.t2, op_fm|
0001aaa0  32 0a 09 42 09 66 6d 5f  65 78 69 74 0a 66 6d 5f  |2..B.fm_exit.fm_|
0001aab0  74 72 79 5f 6f 6e 65 0a  09 43 4d 50 09 74 31 2c  |try_one..CMP.t1,|
0001aac0  20 23 31 0a 09 42 4e 45  09 66 6d 5f 69 73 5f 74  | #1..BNE.fm_is_t|
0001aad0  68 72 65 65 0a 09 53 55  42 09 66 6e 2c 20 66 6e  |hree..SUB.fn, fn|
0001aae0  2c 20 23 31 0a 09 4d 4f  56 09 74 34 2c 20 66 6e  |, #1..MOV.t4, fn|
0001aaf0  0a 09 42 4c 09 70 6f 77  65 72 6f 66 32 0a 09 53  |..BL.powerof2..S|
0001ab00  54 4d 45 41 09 73 74 6b  21 2c 20 7b 66 6e 7d 09  |TMEA.stk!, {fn}.|
0001ab10  09 09 3b 72 65 74 75 72  6e 20 61 64 64 72 65 73  |..;return addres|
0001ab20  73 20 26 20 6e 25 20 28  66 6e 29 20 20 73 74 61  |s & n% (fn)  sta|
0001ab30  63 6b 65 64 2c 20 6c 6f  63 61 6c 20 63 6f 6e 73  |cked, local cons|
0001ab40  74 20 69 6e 20 74 34 0a  09 4d 4f 56 09 74 34 2c  |t in t4..MOV.t4,|
0001ab50  20 74 34 2c 20 4c 53 52  20 66 6e 0a 09 43 4d 50  | t4, LSR fn..CMP|
0001ab60  09 74 34 2c 20 23 31 0a  09 4c 44 52 45 51 09 74  |.t4, #1..LDREQ.t|
0001ab70  32 2c 20 6f 70 5f 66 6d  33 0a 09 42 45 51 09 66  |2, op_fm3..BEQ.f|
0001ab80  6d 5f 65 78 69 74 0a 09  4d 4f 56 09 66 6e 2c 20  |m_exit..MOV.fn, |
0001ab90  74 34 0a 09 42 4c 09 66  61 73 74 6d 75 6c 09 09  |t4..BL.fastmul..|
0001aba0  09 09 3b 72 65 63 75 72  73 65 0a 09 4c 44 52 09  |..;recurse..LDR.|
0001abb0  66 6e 2c 20 5b 73 74 6b  2c 20 23 2d 34 5d 0a 09  |fn, [stk, #-4]..|
0001abc0  4c 44 52 09 74 32 2c 20  6f 70 5f 66 6d 34 0a 09  |LDR.t2, op_fm4..|
0001abd0  42 09 66 6d 5f 65 78 69  74 0a 66 6d 5f 69 73 5f  |B.fm_exit.fm_is_|
0001abe0  74 68 72 65 65 0a 09 41  44 44 09 66 6e 2c 20 66  |three..ADD.fn, f|
0001abf0  6e 2c 20 23 31 0a 09 4d  4f 56 09 74 34 2c 20 66  |n, #1..MOV.t4, f|
0001ac00  6e 0a 09 42 4c 09 70 6f  77 65 72 6f 66 32 0a 09  |n..BL.powerof2..|
0001ac10  53 54 4d 45 41 09 73 74  6b 21 2c 20 7b 66 6e 7d  |STMEA.stk!, {fn}|
0001ac20  09 09 09 3b 72 65 74 75  72 6e 20 61 64 64 72 65  |...;return addre|
0001ac30  73 73 20 26 20 6e 25 20  28 66 6e 29 20 20 73 74  |ss & n% (fn)  st|
0001ac40  61 63 6b 65 64 2c 20 6c  6f 63 61 6c 20 63 6f 6e  |acked, local con|
0001ac50  73 74 20 69 6e 20 74 34  0a 09 4d 4f 56 09 74 34  |st in t4..MOV.t4|
0001ac60  2c 20 74 34 2c 20 4c 53  52 20 66 6e 0a 09 43 4d  |, t4, LSR fn..CM|
0001ac70  50 09 74 34 2c 20 23 31  0a 09 4c 44 52 45 51 09  |P.t4, #1..LDREQ.|
0001ac80  74 32 2c 20 6f 70 5f 66  6d 35 0a 09 42 45 51 09  |t2, op_fm5..BEQ.|
0001ac90  66 6d 5f 65 78 69 74 0a  09 4d 4f 56 09 66 6e 2c  |fm_exit..MOV.fn,|
0001aca0  20 74 34 0a 09 42 4c 09  66 61 73 74 6d 75 6c 09  | t4..BL.fastmul.|
0001acb0  09 09 09 3b 72 65 63 75  72 73 65 0a 09 4c 44 52  |...;recurse..LDR|
0001acc0  09 66 6e 2c 20 5b 73 74  6b 2c 20 23 2d 34 5d 0a  |.fn, [stk, #-4].|
0001acd0  09 4c 44 52 09 74 32 2c  20 6f 70 5f 66 6d 36 0a  |.LDR.t2, op_fm6.|
0001ace0  09 42 09 66 6d 5f 65 78  69 74 0a 66 6d 5f 65 78  |.B.fm_exit.fm_ex|
0001acf0  69 74 0a 09 4c 44 52 09  74 31 2c 20 69 6e 69 74  |it..LDR.t1, init|
0001ad00  69 61 6c 5f 63 70 74 72  0a 09 43 4d 50 09 74 31  |ial_cptr..CMP.t1|
0001ad10  2c 20 23 30 0a 09 41 44  44 45 51 09 63 70 74 72  |, #0..ADDEQ.cptr|
0001ad20  2c 20 63 70 74 72 2c 20  23 34 0a 09 4f 52 52 4e  |, cptr, #4..ORRN|
0001ad30  45 09 74 32 2c 20 74 32  2c 20 66 6e 2c 20 4c 53  |E.t2, t2, fn, LS|
0001ad40  4c 20 23 37 0a 09 53 54  52 4e 45 09 74 32 2c 20  |L #7..STRNE.t2, |
0001ad50  5b 63 70 74 72 5d 2c 20  23 34 0a 09 4c 44 4d 45  |[cptr], #4..LDME|
0001ad60  41 09 73 74 6b 21 2c 20  7b 66 6e 2c 20 74 32 7d  |A.stk!, {fn, t2}|
0001ad70  09 09 09 3b 64 69 73 63  61 72 64 20 6e 25 20 26  |...;discard n% &|
0001ad80  20 72 65 74 75 72 6e 0a  09 4d 4f 56 53 09 70 63  | return..MOVS.pc|
0001ad90  2c 20 74 32 0a 0a 0a 09  47 42 4c 41 09 63 6f 75  |, t2....GBLA.cou|
0001ada0  6e 74 65 72 0a 0a 62 69  74 70 61 74 6c 65 6e 0a  |nter..bitpatlen.|
0001adb0  09 4d 4f 56 53 09 74 32  2c 20 66 6e 0a 09 4d 4f  |.MOVS.t2, fn..MO|
0001adc0  56 09 66 6e 2c 20 23 30  0a 63 6f 75 6e 74 65 72  |V.fn, #0.counter|
0001add0  09 53 45 54 41 09 33 31  0a 09 57 48 49 4c 45 09  |.SETA.31..WHILE.|
0001ade0  63 6f 75 6e 74 65 72 3e  30 0a 09 41 44 44 4e 45  |counter>0..ADDNE|
0001adf0  09 66 6e 2c 20 66 6e 2c  20 23 31 0a 09 4d 4f 56  |.fn, fn, #1..MOV|
0001ae00  4e 45 53 09 74 32 2c 20  74 32 2c 20 4c 53 52 20  |NES.t2, t2, LSR |
0001ae10  23 31 0a 09 4d 4f 56 45  51 53 09 70 63 2c 20 6c  |#1..MOVEQS.pc, l|
0001ae20  72 0a 63 6f 75 6e 74 65  72 09 53 45 54 41 09 63  |r.counter.SETA.c|
0001ae30  6f 75 6e 74 65 72 2d 31  0a 09 57 45 4e 44 0a 09  |ounter-1..WEND..|
0001ae40  41 44 44 09 66 6e 2c 20  66 6e 2c 20 23 31 0a 09  |ADD.fn, fn, #1..|
0001ae50  4d 4f 56 53 09 70 63 2c  20 6c 72 0a 0a 69 6d 6f  |MOVS.pc, lr..imo|
0001ae60  70 32 0a 09 4d 4f 56 09  74 31 2c 20 23 30 0a 63  |p2..MOV.t1, #0.c|
0001ae70  6f 75 6e 74 65 72 09 53  45 54 41 09 31 36 0a 09  |ounter.SETA.16..|
0001ae80  57 48 49 4c 45 09 63 6f  75 6e 74 65 72 3e 30 0a  |WHILE.counter>0.|
0001ae90  09 42 49 43 53 09 74 32  2c 20 66 6e 2c 20 23 32  |.BICS.t2, fn, #2|
0001aea0  35 35 0a 09 42 45 51 09  69 6d 6f 70 32 5f 6c 31  |55..BEQ.imop2_l1|
0001aeb0  0a 09 4d 4f 56 09 66 6e  2c 20 66 6e 2c 20 52 4f  |..MOV.fn, fn, RO|
0001aec0  52 20 23 33 30 0a 09 41  44 44 09 74 31 2c 20 74  |R #30..ADD.t1, t|
0001aed0  31 2c 20 23 32 35 36 0a  63 6f 75 6e 74 65 72 09  |1, #256.counter.|
0001aee0  53 45 54 41 09 63 6f 75  6e 74 65 72 2d 31 0a 09  |SETA.counter-1..|
0001aef0  57 45 4e 44 0a 09 4d 4f  56 09 66 6e 2c 20 23 2d  |WEND..MOV.fn, #-|
0001af00  31 0a 09 4d 4f 56 53 09  70 63 2c 20 6c 72 0a 69  |1..MOVS.pc, lr.i|
0001af10  6d 6f 70 32 5f 6c 31 0a  09 4f 52 52 09 66 6e 2c  |mop2_l1..ORR.fn,|
0001af20  20 74 31 2c 20 66 6e 0a  09 4d 4f 56 53 09 70 63  | t1, fn..MOVS.pc|
0001af30  2c 20 6c 72 0a 0a 70 6f  77 65 72 6f 66 32 0a 09  |, lr..powerof2..|
0001af40  4d 4f 56 53 09 74 31 2c  20 66 6e 0a 09 4d 4f 56  |MOVS.t1, fn..MOV|
0001af50  09 66 6e 2c 20 23 30 0a  09 4d 4f 56 45 51 53 09  |.fn, #0..MOVEQS.|
0001af60  70 63 2c 20 6c 72 0a 63  6f 75 6e 74 65 72 09 53  |pc, lr.counter.S|
0001af70  45 54 41 09 33 31 0a 09  57 48 49 4c 45 20 20 20  |ETA.31..WHILE   |
0001af80  63 6f 75 6e 74 65 72 3e  30 0a 09 4d 4f 56 53 09  |counter>0..MOVS.|
0001af90  74 31 2c 20 74 31 2c 20  4c 53 52 20 23 31 0a 09  |t1, t1, LSR #1..|
0001afa0  41 44 44 43 43 09 66 6e  2c 20 66 6e 2c 20 23 31  |ADDCC.fn, fn, #1|
0001afb0  0a 09 4d 4f 56 43 53 53  09 70 63 2c 20 6c 72 0a  |..MOVCSS.pc, lr.|
0001afc0  63 6f 75 6e 74 65 72 09  53 45 54 41 09 63 6f 75  |counter.SETA.cou|
0001afd0  6e 74 65 72 2d 31 0a 09  57 45 4e 44 0a 09 4d 4f  |nter-1..WEND..MO|
0001afe0  56 53 09 70 63 2c 20 6c  72 0a 0a 0a 0a 09 45 4e  |VS.pc, lr.....EN|
0001aff0  44 0a 1a 82 6d 61 63 72  6f 73 31 00 00 00 00 00  |D...macros1.....|
0001b000  00 b7 21 00 00 81 1f 38  65 00 fc b7 21 00 00 46  |..!....8e...!..F|
0001b010  ff ff ff 45 4f 32 79 03  00 00 00 3b 20 72 62 62  |...EO2y....; rbb|
0001b020  63 0a 3b 20 52 65 76 65  72 73 65 20 42 69 74 20  |c.; Reverse Bit |
0001b030  42 69 6e 61 72 79 20 43  6f 75 6e 74 65 72 2e 0a  |Binary Counter..|
0001b040  3b 20 41 20 6d 61 63 72  6f 20 74 6f 20 69 6e 63  |; A macro to inc|
0001b050  72 65 6d 65 6e 74 20 61  20 72 65 67 69 73 74 65  |rement a registe|
0001b060  72 20 61 63 63 6f 72 64  69 6e 67 20 74 6f 20 61  |r according to a|
0001b070  20 72 65 76 65 72 73 65  20 62 69 74 20 62 69 6e  | reverse bit bin|
0001b080  61 72 79 20 63 6f 75 6e  74 2e 0a 3b 20 49 74 20  |ary count..; It |
0001b090  74 61 6b 65 73 20 66 6f  75 72 20 70 61 72 61 6d  |takes four param|
0001b0a0  65 74 65 72 73 2c 20 65  61 63 68 20 6f 66 20 77  |eters, each of w|
0001b0b0  68 69 63 68 20 73 68 6f  75 6c 64 20 62 65 20 61  |hich should be a|
0001b0c0  20 72 65 67 69 73 74 65  72 20 6e 61 6d 65 2e 0a  | register name..|
0001b0d0  3b 0a 3b 20 24 72 3a 20  20 20 68 6f 6c 64 73 20  |;.; $r:   holds |
0001b0e0  76 61 6c 75 65 20 74 6f  20 62 65 20 72 62 62 63  |value to be rbbc|
0001b0f0  20 69 6e 63 72 65 6d 65  6e 74 65 64 2e 20 57 69  | incremented. Wi|
0001b100  6c 6c 20 62 65 20 6d 6f  64 69 66 69 65 64 0a 3b  |ll be modified.;|
0001b110  20 24 6b 3a 20 20 20 6b  20 69 73 20 73 74 20 6b  | $k:   k is st k|
0001b120  2d 31 3d 62 69 74 20 23  20 28 31 20 74 6f 20 33  |-1=bit # (1 to 3|
0001b130  31 29 20 6f 66 20 6d 73  62 20 69 6e 20 72 65 67  |1) of msb in reg|
0001b140  69 73 74 65 72 20 28 6c  73 62 20 69 6e 20 72 62  |ister (lsb in rb|
0001b150  62 63 29 20 28 74 68 65  6e 63 65 20 6f 6c 64 20  |bc) (thence old |
0001b160  77 3d 33 2a 28 33 32 2d  6b 29 29 2e 0a 3b 20 24  |w=3*(32-k))..; $|
0001b170  65 3a 20 20 20 73 63 72  61 74 63 68 20 72 65 67  |e:   scratch reg|
0001b180  69 73 74 65 72 20 75 73  65 64 20 74 6f 20 68 6f  |ister used to ho|
0001b190  6c 64 20 61 6e 20 61 64  64 72 65 73 73 20 69 6e  |ld an address in|
0001b1a0  20 74 68 65 20 63 6f 64  65 0a 3b 0a 20 20 20 20  | the code.;.    |
0001b1b0  20 20 20 20 4d 41 43 52  4f 0a 24 6c 61 62 65 6c  |    MACRO.$label|
0001b1c0  20 20 72 62 62 63 20 20  20 20 24 72 2c 20 24 6b  |  rbbc    $r, $k|
0001b1d0  2c 20 24 65 0a 0a 20 20  20 20 20 20 20 20 41 53  |, $e..        AS|
0001b1e0  53 45 52 54 20 20 24 72  20 3c 3e 20 24 6b 0a 20  |SERT  $r <> $k. |
0001b1f0  20 20 20 20 20 20 20 41  53 53 45 52 54 20 20 24  |       ASSERT  $|
0001b200  72 20 3c 3e 20 24 65 0a  20 20 20 20 20 20 20 20  |r <> $e.        |
0001b210  41 53 53 45 52 54 20 20  24 6b 20 3c 3e 20 24 65  |ASSERT  $k <> $e|
0001b220  0a 0a 20 20 20 20 20 20  20 20 4c 43 4c 41 20 20  |..        LCLA  |
0001b230  20 20 63 6f 75 6e 74 65  72 0a 63 6f 75 6e 74 65  |  counter.counte|
0001b240  72 20 53 45 54 41 20 20  20 20 33 31 0a 0a 24 6c  |r SETA    31..$l|
0001b250  61 62 65 6c 09 52 53 42  09 24 6b 2c 20 24 6b 2c  |abel.RSB.$k, $k,|
0001b260  20 23 33 32 0a 09 52 53  42 09 24 6b 2c 20 24 6b  | #32..RSB.$k, $k|
0001b270  2c 20 24 6b 2c 20 41 53  4c 20 23 32 0a 09 41 44  |, $k, ASL #2..AD|
0001b280  44 20 20 20 20 20 24 65  2c 20 70 63 2c 20 24 6b  |D     $e, pc, $k|
0001b290  2c 20 41 53 4c 20 23 32  20 20 20 20 20 20 3b 74  |, ASL #2      ;t|
0001b2a0  68 69 73 20 72 65 6c 79  73 20 6f 6e 20 74 68 65  |his relys on the|
0001b2b0  72 65 20 62 65 69 6e 67  20 65 78 61 63 74 6c 79  |re being exactly|
0001b2c0  20 6f 6e 65 20 69 6e 73  74 72 75 63 74 69 6f 6e  | one instruction|
0001b2d0  20 62 65 74 77 65 65 6e  20 68 65 72 65 20 26 20  | between here & |
0001b2e0  54 53 54 0a 20 20 20 20  20 20 20 20 4d 4f 56 20  |TST.        MOV |
0001b2f0  20 20 20 20 70 63 2c 20  24 65 0a 0a 20 20 20 20  |    pc, $e..    |
0001b300  20 20 20 20 57 48 49 4c  45 20 20 20 63 6f 75 6e  |    WHILE   coun|
0001b310  74 65 72 20 3e 20 31 0a  20 20 20 20 20 20 20 20  |ter > 1.        |
0001b320  54 53 54 20 20 20 20 20  24 72 2c 20 23 31 3c 3c  |TST     $r, #1<<|
0001b330  63 6f 75 6e 74 65 72 0a  20 20 20 20 20 20 20 20  |counter.        |
0001b340  45 4f 52 20 20 20 20 20  24 72 2c 20 24 72 2c 20  |EOR     $r, $r, |
0001b350  23 31 3c 3c 63 6f 75 6e  74 65 72 0a 20 20 20 20  |#1<<counter.    |
0001b360  20 20 20 20 42 45 51 20  20 20 20 20 25 66 74 30  |    BEQ     %ft0|
0001b370  0a 63 6f 75 6e 74 65 72  20 53 45 54 41 20 20 20  |.counter SETA   |
0001b380  20 63 6f 75 6e 74 65 72  2d 31 0a 20 20 20 20 20  | counter-1.     |
0001b390  20 20 20 57 45 4e 44 0a  0a 20 20 20 20 20 20 20  |   WEND..       |
0001b3a0  20 54 53 54 20 20 20 20  20 24 72 2c 20 23 31 3c  | TST     $r, #1<|
0001b3b0  3c 31 0a 20 20 20 20 20  20 20 20 45 4f 52 20 20  |<1.        EOR  |
0001b3c0  20 20 20 24 72 2c 20 24  72 2c 20 23 31 3c 3c 31  |   $r, $r, #1<<1|
0001b3d0  0a 20 20 20 20 20 20 20  20 45 4f 52 4e 45 20 20  |.        EORNE  |
0001b3e0  20 24 72 2c 20 24 72 2c  20 23 31 3c 3c 30 20 20  | $r, $r, #1<<0  |
0001b3f0  20 20 20 20 20 20 20 20  20 3b 6e 62 20 61 6e 20  |         ;nb an |
0001b400  72 62 62 63 20 63 61 72  72 79 20 77 69 6c 6c 20  |rbbc carry will |
0001b410  61 75 74 6f 6d 61 74 69  63 61 6c 6c 79 20 63 61  |automatically ca|
0001b420  75 73 65 20 61 20 77 72  61 70 20 61 72 6f 75 6e  |use a wrap aroun|
0001b430  64 20 62 61 63 6b 20 74  6f 20 7a 65 72 6f 0a 0a  |d back to zero..|
0001b440  30 0a 0a 20 20 20 20 20  20 20 20 4d 45 4e 44 0a  |0..        MEND.|
0001b450  0a 0a 0a 3b 20 64 69 76  31 36 0a 3b 20 61 73 73  |...; div16.; ass|
0001b460  75 6d 65 73 20 61 62 73  20 6e 75 6d 62 65 72 20  |umes abs number |
0001b470  3c 20 36 35 35 33 36 20  2a 20 61 62 73 20 64 69  |< 65536 * abs di|
0001b480  76 69 73 6f 72 2e 0a 3b  20 63 61 6c 63 75 6c 61  |visor..; calcula|
0001b490  74 65 73 20 69 6e 74 65  67 65 72 20 70 61 72 74  |tes integer part|
0001b4a0  20 6f 66 20 36 35 35 33  36 2a 6e 75 6d 62 65 72  | of 65536*number|
0001b4b0  2f 64 69 76 69 73 6f 72  2c 20 61 73 20 61 20 73  |/divisor, as a s|
0001b4c0  69 67 6e 65 64 20 33 32  20 62 69 74 20 6e 75 6d  |igned 32 bit num|
0001b4d0  62 65 72 2e 0a 3b 20 75  73 65 64 20 69 6e 20 6d  |ber..; used in m|
0001b4e0  61 74 72 69 78 20 69 6e  76 65 72 73 69 6f 6e 20  |atrix inversion |
0001b4f0  72 6f 75 74 69 6e 65 20  77 68 65 72 65 20 69 74  |routine where it|
0001b500  20 69 73 20 6e 65 63 65  73 73 61 72 79 20 74 6f  | is necessary to|
0001b510  20 64 69 76 69 64 65 20  74 77 6f 20 66 69 78 65  | divide two fixe|
0001b520  64 20 70 6f 69 6e 74 20  6e 75 6d 62 65 72 73 20  |d point numbers |
0001b530  28 31 36 20 62 69 74 20  66 72 61 63 74 69 6f 6e  |(16 bit fraction|
0001b540  29 2e 0a 3b 20 69 66 20  72 61 6e 67 65 20 63 68  |)..; if range ch|
0001b550  65 63 6b 20 6f 6e 20 61  62 6f 76 65 20 61 73 73  |eck on above ass|
0001b560  75 6d 70 74 69 6f 6e 20  69 73 20 72 65 71 75 69  |umption is requi|
0001b570  72 65 64 2c 20 74 68 65  20 63 61 6c 6c 65 72 20  |red, the caller |
0001b580  6d 75 73 74 20 70 65 72  66 6f 72 6d 20 69 74 2e  |must perform it.|
0001b590  0a 3b 20 49 74 20 74 61  6b 65 73 20 35 20 70 61  |.; It takes 5 pa|
0001b5a0  72 61 6d 65 74 65 72 73  20 2d 20 61 6c 6c 20 72  |rameters - all r|
0001b5b0  65 67 69 73 74 65 72 20  6e 61 6d 65 73 2e 0a 3b  |egister names..;|
0001b5c0  0a 3b 20 24 6e 75 6d 62  65 72 3a 20 20 20 20 20  |.; $number:     |
0001b5d0  20 6e 75 6d 62 65 72 0a  3b 20 24 64 69 76 69 73  | number.; $divis|
0001b5e0  6f 72 3a 20 20 20 20 20  64 69 76 69 73 6f 72 20  |or:     divisor |
0001b5f0  2d 20 73 69 67 6e 20 6f  66 20 64 69 76 69 73 6f  |- sign of diviso|
0001b600  72 20 6d 61 79 20 62 65  20 63 6f 72 72 75 70 74  |r may be corrupt|
0001b610  65 64 0a 3b 20 24 6e 75  6d 3a 20 20 20 20 20 20  |ed.; $num:      |
0001b620  20 20 20 73 63 72 61 74  63 68 20 26 20 72 65 73  |   scratch & res|
0001b630  75 6c 74 20 2d 20 6d 61  79 20 62 65 20 74 68 65  |ult - may be the|
0001b640  20 73 61 6d 65 20 61 73  20 24 6e 75 6d 62 65 72  | same as $number|
0001b650  0a 3b 20 24 73 69 67 6e  3a 20 20 20 20 20 20 20  |.; $sign:       |
0001b660  20 73 63 72 61 74 63 68  0a 3b 20 24 72 65 6d 3a  | scratch.; $rem:|
0001b670  20 20 20 20 20 20 20 20  20 73 63 72 61 74 63 68  |         scratch|
0001b680  0a 3b 0a 20 20 20 20 20  20 20 20 4d 41 43 52 4f  |.;.        MACRO|
0001b690  0a 24 6c 61 62 65 6c 20  20 64 69 76 31 36 20 20  |.$label  div16  |
0001b6a0  20 24 6e 75 6d 62 65 72  2c 20 24 64 69 76 69 73  | $number, $divis|
0001b6b0  6f 72 2c 20 24 6e 75 6d  2c 20 24 73 69 67 6e 2c  |or, $num, $sign,|
0001b6c0  20 24 72 65 6d 0a 0a 20  20 20 20 20 20 20 20 41  | $rem..        A|
0001b6d0  53 53 45 52 54 20 20 24  6e 75 6d 20 3c 3e 20 24  |SSERT  $num <> $|
0001b6e0  64 69 76 69 73 6f 72 0a  20 20 20 20 20 20 20 20  |divisor.        |
0001b6f0  41 53 53 45 52 54 20 20  24 6e 75 6d 20 3c 3e 20  |ASSERT  $num <> |
0001b700  24 73 69 67 6e 0a 20 20  20 20 20 20 20 20 41 53  |$sign.        AS|
0001b710  53 45 52 54 20 20 24 6e  75 6d 20 3c 3e 20 24 72  |SERT  $num <> $r|
0001b720  65 6d 0a 20 20 20 20 20  20 20 20 41 53 53 45 52  |em.        ASSER|
0001b730  54 20 20 24 6e 75 6d 62  65 72 20 3c 3e 20 24 64  |T  $number <> $d|
0001b740  69 76 69 73 6f 72 0a 20  20 20 20 20 20 20 20 41  |ivisor.        A|
0001b750  53 53 45 52 54 20 20 24  6e 75 6d 62 65 72 20 3c  |SSERT  $number <|
0001b760  3e 20 24 73 69 67 6e 0a  20 20 20 20 20 20 20 20  |> $sign.        |
0001b770  41 53 53 45 52 54 20 20  24 6e 75 6d 62 65 72 20  |ASSERT  $number |
0001b780  3c 3e 20 24 72 65 6d 0a  20 20 20 20 20 20 20 20  |<> $rem.        |
0001b790  41 53 53 45 52 54 20 20  24 64 69 76 69 73 6f 72  |ASSERT  $divisor|
0001b7a0  20 3c 3e 20 24 73 69 67  6e 0a 20 20 20 20 20 20  | <> $sign.      |
0001b7b0  20 20 41 53 53 45 52 54  20 20 24 64 69 76 69 73  |  ASSERT  $divis|
0001b7c0  6f 72 20 3c 3e 20 24 72  65 6d 0a 20 20 20 20 20  |or <> $rem.     |
0001b7d0  20 20 20 41 53 53 45 52  54 20 20 24 73 69 67 6e  |   ASSERT  $sign|
0001b7e0  20 3c 3e 20 24 72 65 6d  0a 0a 20 20 20 20 20 20  | <> $rem..      |
0001b7f0  20 20 4c 43 4c 41 20 20  20 20 63 6f 75 6e 74 65  |  LCLA    counte|
0001b800  72 0a 63 6f 75 6e 74 65  72 20 53 45 54 41 20 20  |r.counter SETA  |
0001b810  20 20 33 32 0a 0a 24 6c  61 62 65 6c 20 20 4d 4f  |  32..$label  MO|
0001b820  56 53 20 20 20 20 24 72  65 6d 2c 20 24 64 69 76  |VS    $rem, $div|
0001b830  69 73 6f 72 2c 20 4c 53  4c 20 23 31 0a 20 20 20  |isor, LSL #1.   |
0001b840  20 20 20 20 20 52 53 42  43 53 20 20 20 24 64 69  |     RSBCS   $di|
0001b850  76 69 73 6f 72 2c 20 24  64 69 76 69 73 6f 72 2c  |visor, $divisor,|
0001b860  20 23 30 0a 20 20 20 20  20 20 20 20 41 44 43 20  | #0.        ADC |
0001b870  20 20 20 20 24 73 69 67  6e 2c 20 24 73 69 67 6e  |    $sign, $sign|
0001b880  2c 20 24 73 69 67 6e 20  20 20 20 20 20 20 20 20  |, $sign         |
0001b890  20 20 20 20 3b 31 73 74  20 33 20 69 6e 73 74 72  |    ;1st 3 instr|
0001b8a0  75 63 74 69 6f 6e 73 20  61 6c 6c 6f 77 20 73 65  |uctions allow se|
0001b8b0  74 74 69 6e 67 20 6f 66  20 6c 6f 77 20 62 69 74  |tting of low bit|
0001b8c0  20 73 69 67 6e 20 61 73  20 65 69 74 68 65 72 20  | sign as either |
0001b8d0  30 0a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |0.              |
0001b8e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
0001b900  20 20 3b 6f 72 20 31 20  61 63 63 6f 72 64 69 6e  |  ;or 1 accordin|
0001b910  67 20 74 6f 20 73 69 67  6e 20 6f 66 20 64 69 76  |g to sign of div|
0001b920  69 73 6f 72 2c 20 69 6e  20 6f 6e 6c 79 20 31 20  |isor, in only 1 |
0001b930  69 6e 73 74 72 75 63 74  69 6f 6e 2e 0a 20 20 20  |instruction..   |
0001b940  20 20 20 20 20 54 45 51  20 20 20 20 20 24 6e 75  |     TEQ     $nu|
0001b950  6d 62 65 72 2c 20 23 30  0a 20 20 20 20 20 20 20  |mber, #0.       |
0001b960  20 52 53 42 4d 49 20 20  20 24 6e 75 6d 2c 20 24  | RSBMI   $num, $|
0001b970  6e 75 6d 62 65 72 2c 20  23 30 0a 20 20 20 20 20  |number, #0.     |
0001b980  20 20 20 5b 20 20 20 20  20 20 20 24 6e 75 6d 20  |   [       $num |
0001b990  3c 3e 20 24 6e 75 6d 62  65 72 0a 20 20 20 20 20  |<> $number.     |
0001b9a0  20 20 20 4d 4f 56 50 4c  20 20 20 24 6e 75 6d 2c  |   MOVPL   $num,|
0001b9b0  20 24 6e 75 6d 62 65 72  20 20 20 20 20 20 20 20  | $number        |
0001b9c0  20 20 20 20 20 20 20 20  20 20 20 3b 6f 6e 6c 79  |           ;only|
0001b9d0  20 61 73 73 65 6d 62 6c  65 20 74 68 69 73 20 63  | assemble this c|
0001b9e0  61 73 65 20 69 66 20 72  65 67 73 20 64 69 66 66  |ase if regs diff|
0001b9f0  65 72 65 6e 74 2c 20 61  73 20 69 73 20 6f 74 68  |erent, as is oth|
0001ba00  65 72 77 69 73 65 20 61  20 6e 6f 70 2e 0a 20 20  |erwise a nop..  |
0001ba10  20 20 20 20 20 20 5d 0a  20 20 20 20 20 20 20 20  |      ].        |
0001ba20  45 4f 52 4d 49 20 20 20  24 73 69 67 6e 2c 20 24  |EORMI   $sign, $|
0001ba30  73 69 67 6e 2c 20 23 31  0a 0a 20 20 20 20 20 20  |sign, #1..      |
0001ba40  20 20 4d 4f 56 20 20 20  20 20 24 72 65 6d 2c 20  |  MOV     $rem, |
0001ba50  24 6e 75 6d 2c 20 4c 53  52 20 23 31 36 0a 20 20  |$num, LSR #16.  |
0001ba60  20 20 20 20 20 20 4d 4f  56 20 20 20 20 20 24 6e  |      MOV     $n|
0001ba70  75 6d 2c 20 24 6e 75 6d  2c 20 4c 53 4c 20 23 31  |um, $num, LSL #1|
0001ba80  36 0a 0a 20 20 20 20 20  20 20 20 57 48 49 4c 45  |6..        WHILE|
0001ba90  20 20 20 63 6f 75 6e 74  65 72 20 3e 20 30 20 20  |   counter > 0  |
0001baa0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0001bab0  20 20 20 3b 75 6e 77 6f  75 6e 64 20 6c 6f 6f 70  |   ;unwound loop|
0001bac0  20 75 73 65 73 20 61 62  6f 75 74 20 36 30 30 20  | uses about 600 |
0001bad0  62 79 74 65 73 20 65 78  74 72 61 20 6d 65 6d 6f  |bytes extra memo|
0001bae0  72 79 0a 20 20 20 20 20  20 20 20 4d 4f 56 53 20  |ry.        MOVS |
0001baf0  20 20 20 24 6e 75 6d 2c  20 24 6e 75 6d 2c 20 41  |   $num, $num, A|
0001bb00  53 4c 20 23 31 20 20 20  20 20 20 20 20 20 20 20  |SL #1           |
0001bb10  20 20 20 3b 73 70 65 65  64 20 69 6e 63 72 65 61  |   ;speed increa|
0001bb20  73 65 20 28 41 52 4d 33  29 20 66 72 6f 6d 20 61  |se (ARM3) from a|
0001bb30  62 6f 75 74 20 31 2e 32  37 65 2d 35 20 74 6f 20  |bout 1.27e-5 to |
0001bb40  2e 37 35 65 2d 35 20 73  65 63 6f 6e 64 73 0a 20  |.75e-5 seconds. |
0001bb50  20 20 20 20 20 20 20 41  44 43 20 20 20 20 20 24  |       ADC     $|
0001bb60  72 65 6d 2c 20 24 72 65  6d 2c 20 24 72 65 6d 0a  |rem, $rem, $rem.|
0001bb70  20 20 20 20 20 20 20 20  43 4d 50 20 20 20 20 20  |        CMP     |
0001bb80  24 72 65 6d 2c 20 24 64  69 76 69 73 6f 72 0a 20  |$rem, $divisor. |
0001bb90  20 20 20 20 20 20 20 53  55 42 48 53 20 20 20 24  |       SUBHS   $|
0001bba0  72 65 6d 2c 20 24 72 65  6d 2c 20 24 64 69 76 69  |rem, $rem, $divi|
0001bbb0  73 6f 72 0a 20 20 20 20  20 20 20 20 4f 52 52 48  |sor.        ORRH|
0001bbc0  53 20 20 20 24 6e 75 6d  2c 20 24 6e 75 6d 2c 20  |S   $num, $num, |
0001bbd0  23 31 0a 63 6f 75 6e 74  65 72 20 53 45 54 41 20  |#1.counter SETA |
0001bbe0  20 20 20 63 6f 75 6e 74  65 72 2d 31 0a 20 20 20  |   counter-1.   |
0001bbf0  20 20 20 20 20 57 45 4e  44 0a 0a 20 20 20 20 20  |     WEND..     |
0001bc00  20 20 20 43 4d 50 20 20  20 20 20 24 72 65 6d 2c  |   CMP     $rem,|
0001bc10  20 24 64 69 76 69 73 6f  72 2c 20 41 53 52 20 23  | $divisor, ASR #|
0001bc20  31 0a 20 20 20 20 20 20  20 20 41 44 44 47 45 20  |1.        ADDGE |
0001bc30  20 20 24 6e 75 6d 2c 20  24 6e 75 6d 2c 20 23 31  |  $num, $num, #1|
0001bc40  0a 20 20 20 20 20 20 20  20 54 53 54 20 20 20 20  |.        TST    |
0001bc50  20 24 73 69 67 6e 2c 20  23 31 0a 20 20 20 20 20  | $sign, #1.     |
0001bc60  20 20 20 52 53 42 4e 45  20 20 20 24 6e 75 6d 2c  |   RSBNE   $num,|
0001bc70  20 24 6e 75 6d 2c 20 23  30 0a 0a 20 20 20 20 20  | $num, #0..     |
0001bc80  20 20 20 4d 45 4e 44 0a  0a 0a 0a 3b 20 6d 75 6c  |   MEND....; mul|
0001bc90  31 36 0a 3b 20 6d 75 6c  74 69 70 6c 69 63 61 74  |16.; multiplicat|
0001bca0  69 6f 6e 20 6f 66 20 61  6e 20 69 6e 74 65 67 65  |ion of an intege|
0001bcb0  72 20 78 20 62 79 20 61  20 31 36 2d 62 69 74 20  |r x by a 16-bit |
0001bcc0  66 69 78 65 64 20 70 6f  69 6e 74 20 6e 75 6d 62  |fixed point numb|
0001bcd0  65 72 20 61 2c 20 77 69  74 68 20 6e 6f 20 72 65  |er a, with no re|
0001bce0  73 74 72 69 63 74 69 6f  6e 73 20 6f 6e 20 78 20  |strictions on x |
0001bcf0  6f 72 20 61 0a 3b 20 6f  74 68 65 72 20 74 68 61  |or a.; other tha|
0001bd00  6e 20 74 68 61 74 20 78  2a 61 2f 36 35 35 33 36  |n that x*a/65536|
0001bd10  20 6d 75 73 74 20 66 69  74 20 69 6e 74 6f 20 61  | must fit into a|
0001bd20  20 73 69 67 6e 65 64 20  33 32 2d 62 69 74 20 72  | signed 32-bit r|
0001bd30  65 70 72 65 73 65 6e 74  61 74 69 6f 6e 2e 0a 3b  |epresentation..;|
0001bd40  20 63 61 6c 63 75 6c 61  74 65 73 20 72 3d 78 2a  | calculates r=x*|
0001bd50  61 2f 36 35 35 33 36 0a  3b 20 49 74 20 74 61 6b  |a/65536.; It tak|
0001bd60  65 73 20 36 20 70 61 72  61 6d 65 74 65 72 73 20  |es 6 parameters |
0001bd70  2d 20 61 6c 6c 20 72 65  67 69 73 74 65 72 20 6e  |- all register n|
0001bd80  61 6d 65 73 2e 0a 3b 0a  3b 20 24 78 3a 20 20 20  |ames..;.; $x:   |
0001bd90  78 0a 3b 20 24 61 3a 20  20 20 61 20 2d 20 61 20  |x.; $a:   a - a |
0001bda0  77 69 6c 6c 20 62 65 20  63 6f 72 72 75 70 74 65  |will be corrupte|
0001bdb0  64 0a 3b 20 24 72 3a 20  20 20 72 65 73 75 6c 74  |d.; $r:   result|
0001bdc0  20 2d 20 6d 61 79 20 62  65 20 74 68 65 20 73 61  | - may be the sa|
0001bdd0  6d 65 20 61 73 20 24 78  0a 3b 20 24 75 3a 20 20  |me as $x.; $u:  |
0001bde0  20 73 63 72 61 74 63 68  0a 3b 20 24 76 3a 20 20  | scratch.; $v:  |
0001bdf0  20 73 63 72 61 74 63 68  0a 3b 20 24 77 3a 20 20  | scratch.; $w:  |
0001be00  20 73 63 72 61 74 63 68  0a 3b 0a 20 20 20 20 20  | scratch.;.     |
0001be10  20 20 20 4d 41 43 52 4f  0a 24 6c 61 62 65 6c 20  |   MACRO.$label |
0001be20  20 6d 75 6c 31 36 20 20  20 24 78 2c 20 24 61 2c  | mul16   $x, $a,|
0001be30  20 24 72 2c 20 24 75 2c  20 24 76 2c 20 24 77 0a  | $r, $u, $v, $w.|
0001be40  0a 20 20 20 20 20 20 20  20 41 53 53 45 52 54 20  |.        ASSERT |
0001be50  20 24 72 20 3c 3e 20 24  61 0a 20 20 20 20 20 20  | $r <> $a.      |
0001be60  20 20 41 53 53 45 52 54  20 20 24 72 20 3c 3e 20  |  ASSERT  $r <> |
0001be70  24 75 0a 20 20 20 20 20  20 20 20 41 53 53 45 52  |$u.        ASSER|
0001be80  54 20 20 24 72 20 3c 3e  20 24 76 0a 20 20 20 20  |T  $r <> $v.    |
0001be90  20 20 20 20 41 53 53 45  52 54 20 20 24 72 20 3c  |    ASSERT  $r <|
0001bea0  3e 20 24 77 0a 20 20 20  20 20 20 20 20 41 53 53  |> $w.        ASS|
0001beb0  45 52 54 20 20 24 78 20  3c 3e 20 24 61 0a 20 20  |ERT  $x <> $a.  |
0001bec0  20 20 20 20 20 20 41 53  53 45 52 54 20 20 24 78  |      ASSERT  $x|
0001bed0  20 3c 3e 20 24 75 0a 20  20 20 20 20 20 20 20 41  | <> $u.        A|
0001bee0  53 53 45 52 54 20 20 24  78 20 3c 3e 20 24 76 0a  |SSERT  $x <> $v.|
0001bef0  20 20 20 20 20 20 20 20  41 53 53 45 52 54 20 20  |        ASSERT  |
0001bf00  24 78 20 3c 3e 20 24 77  0a 20 20 20 20 20 20 20  |$x <> $w.       |
0001bf10  20 41 53 53 45 52 54 20  20 24 61 20 3c 3e 20 24  | ASSERT  $a <> $|
0001bf20  75 0a 20 20 20 20 20 20  20 20 41 53 53 45 52 54  |u.        ASSERT|
0001bf30  20 20 24 61 20 3c 3e 20  24 76 0a 20 20 20 20 20  |  $a <> $v.     |
0001bf40  20 20 20 41 53 53 45 52  54 20 20 24 61 20 3c 3e  |   ASSERT  $a <>|
0001bf50  20 24 77 0a 20 20 20 20  20 20 20 20 41 53 53 45  | $w.        ASSE|
0001bf60  52 54 20 20 24 75 20 3c  3e 20 24 76 0a 20 20 20  |RT  $u <> $v.   |
0001bf70  20 20 20 20 20 41 53 53  45 52 54 20 20 24 75 20  |     ASSERT  $u |
0001bf80  3c 3e 20 24 77 0a 20 20  20 20 20 20 20 20 41 53  |<> $w.        AS|
0001bf90  53 45 52 54 20 20 24 76  20 3c 3e 20 24 77 0a 0a  |SERT  $v <> $w..|
0001bfa0  24 6c 61 62 65 6c 20 20  4d 4f 56 53 20 20 20 20  |$label  MOVS    |
0001bfb0  24 77 2c 20 24 61 2c 20  4c 53 4c 20 23 31 0a 20  |$w, $a, LSL #1. |
0001bfc0  20 20 20 20 20 20 20 52  53 42 43 53 20 20 20 24  |       RSBCS   $|
0001bfd0  61 2c 20 24 61 2c 20 23  30 0a 20 20 20 20 20 20  |a, $a, #0.      |
0001bfe0  20 20 54 45 51 20 20 20  20 20 24 78 2c 20 23 30  |  TEQ     $x, #0|
0001bff0  0a 20 20 20 20 20 20 20  20 52 53 42 4d 49 20 20  |.        RSBMI  |
0001c000  20 24 72 2c 20 24 78 2c  20 23 30 0a 20 20 20 20  | $r, $x, #0.    |
0001c010  20 20 20 20 5b 20 20 20  20 20 20 20 24 72 20 3c  |    [       $r <|
0001c020  3e 20 24 78 0a 20 20 20  20 20 20 20 20 4d 4f 56  |> $x.        MOV|
0001c030  50 4c 20 20 20 24 72 2c  20 24 78 0a 20 20 20 20  |PL   $r, $x.    |
0001c040  20 20 20 20 5d 20 20 20  20 20 20 20 20 20 20 20  |    ]           |
0001c050  20 20 20 20 20 20 20 20  20 20 20 20 3b 6e 6f 77  |            ;now|
0001c060  20 68 61 76 65 20 43 20  62 69 74 20 73 65 74 20  | have C bit set |
0001c070  69 66 66 20 61 3c 30 2c  20 4e 20 62 69 74 20 73  |iff a<0, N bit s|
0001c080  65 74 20 69 66 66 20 78  3c 30 0a 20 20 20 20 20  |et iff x<0.     |
0001c090  20 20 20 4d 4f 56 20 20  20 20 20 24 77 2c 20 70  |   MOV     $w, p|
0001c0a0  63 2c 20 4c 53 52 20 23  33 31 0a 20 20 20 20 20  |c, LSR #31.     |
0001c0b0  20 20 20 4d 4f 56 20 20  20 20 20 24 77 2c 20 24  |   MOV     $w, $|
0001c0c0  77 2c 20 4c 53 4c 20 23  32 38 20 3b 67 65 74 20  |w, LSL #28 ;get |
0001c0d0  77 3d 28 32 5e 32 38 29  2a 4e 20 7b 4e 20 69 73  |w=(2^28)*N {N is|
0001c0e0  20 62 33 31 2c 20 56 20  69 73 20 62 32 38 2c 20  | b31, V is b28, |
0001c0f0  43 20 69 73 20 62 32 39  20 69 6e 20 70 63 2f 70  |C is b29 in pc/p|
0001c100  73 72 7d 0a 20 20 20 20  20 20 20 20 54 45 51 50  |sr}.        TEQP|
0001c110  20 20 20 20 24 77 2c 20  70 63 2c 20 4c 53 52 20  |    $w, pc, LSR |
0001c120  23 31 20 20 3b 45 4f 52  20 77 20 69 6e 74 6f 20  |#1  ;EOR w into |
0001c130  70 63 2f 70 73 72 20 7b  69 65 20 4e 20 45 4f 52  |pc/psr {ie N EOR|
0001c140  20 43 20 69 73 20 70 75  74 20 69 6e 74 6f 20 56  | C is put into V|
0001c150  7d 20 20 2d 20 74 68 69  73 20 69 73 20 61 20 77  |}  - this is a w|
0001c160  61 79 20 6f 66 20 73 74  6f 72 69 6e 67 0a 20 20  |ay of storing.  |
0001c170  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0001c180  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3b 73  |              ;s|
0001c190  69 67 6e 20 6f 66 20 72  65 73 75 6c 74 20 69 6e  |ign of result in|
0001c1a0  20 6f 76 65 72 66 6c 6f  77 20 66 6c 61 67 2c 20  | overflow flag, |
0001c1b0  73 61 76 69 6e 67 20 6f  6e 20 61 20 72 65 67 69  |saving on a regi|
0001c1c0  73 74 65 72 0a 20 20 20  20 20 20 20 20 4d 4f 56  |ster.        MOV|
0001c1d0  20 20 20 20 20 24 77 2c  20 24 72 2c 20 4c 53 52  |     $w, $r, LSR|
0001c1e0  20 23 31 36 0a 20 20 20  20 20 20 20 20 42 49 43  | #16.        BIC|
0001c1f0  20 20 20 20 20 24 72 2c  20 24 72 2c 20 24 77 2c  |     $r, $r, $w,|
0001c200  20 4c 53 4c 20 23 31 36  0a 20 20 20 20 20 20 20  | LSL #16.       |
0001c210  20 4d 4f 56 20 20 20 20  20 24 76 2c 20 24 61 2c  | MOV     $v, $a,|
0001c220  20 4c 53 52 20 23 31 36  0a 20 20 20 20 20 20 20  | LSR #16.       |
0001c230  20 42 49 43 20 20 20 20  20 24 61 2c 20 24 61 2c  | BIC     $a, $a,|
0001c240  20 24 76 2c 20 4c 53 4c  20 23 31 36 0a 20 20 20  | $v, LSL #16.   |
0001c250  20 20 20 20 20 4d 55 4c  20 20 20 20 20 24 75 2c  |     MUL     $u,|
0001c260  20 24 61 2c 20 24 72 0a  20 20 20 20 20 20 20 20  | $a, $r.        |
0001c270  54 53 54 20 20 20 20 20  24 75 2c 20 23 31 3c 3c  |TST     $u, #1<<|
0001c280  31 35 20 20 20 20 20 20  3b 6e 6f 74 69 63 65 20  |15      ;notice |
0001c290  74 68 69 73 20 69 73 20  74 68 65 20 6f 6e 6c 79  |this is the only|
0001c2a0  20 6f 70 65 72 61 74 69  6f 6e 20 61 6c 74 65 72  | operation alter|
0001c2b0  69 6e 67 20 70 73 72 20  26 20 74 68 61 74 20 69  |ing psr & that i|
0001c2c0  74 20 77 69 6c 6c 20 6e  6f 74 20 63 6f 72 72 75  |t will not corru|
0001c2d0  70 74 20 56 0a 20 20 20  20 20 20 20 20 20 20 20  |pt V.           |
0001c2e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0001c2f0  20 20 20 20 20 3b 6e 6f  74 65 20 69 74 20 77 69  |     ;note it wi|
0001c300  6c 6c 20 63 6f 72 72 75  70 74 20 43 2c 20 61 73  |ll corrupt C, as|
0001c310  20 69 6d 6d 65 64 69 61  74 65 20 6f 70 65 72 61  | immediate opera|
0001c320  6e 64 20 33 32 37 36 38  20 72 65 71 75 69 72 65  |nd 32768 require|
0001c330  73 20 61 20 73 68 69 66  74 0a 20 20 20 20 20 20  |s a shift.      |
0001c340  20 20 4d 4f 56 20 20 20  20 20 24 75 2c 20 24 75  |  MOV     $u, $u|
0001c350  2c 20 4c 53 52 20 23 31  36 0a 20 20 20 20 20 20  |, LSR #16.      |
0001c360  20 20 41 44 44 4e 45 20  20 20 24 75 2c 20 24 75  |  ADDNE   $u, $u|
0001c370  2c 20 23 31 0a 20 20 20  20 20 20 20 20 4d 4c 41  |, #1.        MLA|
0001c380  20 20 20 20 20 24 75 2c  20 24 72 2c 20 24 76 2c  |     $u, $r, $v,|
0001c390  20 24 75 09 3b 36 2f 39  2f 39 34 20 2d 20 72 65  | $u.;6/9/94 - re|
0001c3a0  76 65 72 73 65 20 76 20  26 20 72 20 74 6f 20 6f  |verse v & r to o|
0001c3b0  70 74 69 6d 69 73 65 20  66 6f 72 20 61 72 67 75  |ptimise for argu|
0001c3c0  6d 65 6e 74 20 61 20 73  6d 61 6c 6c 0a 20 20 20  |ment a small.   |
0001c3d0  20 20 20 20 20 4d 4c 41  20 20 20 20 20 24 75 2c  |     MLA     $u,|
0001c3e0  20 24 61 2c 20 24 77 2c  20 24 75 0a 20 20 20 20  | $a, $w, $u.    |
0001c3f0  20 20 20 20 4d 55 4c 20  20 20 20 20 24 72 2c 20  |    MUL     $r, |
0001c400  24 77 2c 20 24 76 09 3b  36 2f 39 2f 39 34 20 2d  |$w, $v.;6/9/94 -|
0001c410  20 72 65 76 65 72 73 65  20 76 20 26 20 77 20 74  | reverse v & w t|
0001c420  6f 20 6f 70 74 69 6d 69  73 65 20 66 6f 72 20 61  |o optimise for a|
0001c430  72 67 75 6d 65 6e 74 20  61 20 73 6d 61 6c 6c 0a  |rgument a small.|
0001c440  20 20 20 20 20 20 20 20  41 44 44 20 20 20 20 20  |        ADD     |
0001c450  24 72 2c 20 24 75 2c 20  24 72 2c 20 4c 53 4c 20  |$r, $u, $r, LSL |
0001c460  23 31 36 0a 20 20 20 20  20 20 20 20 52 53 42 56  |#16.        RSBV|
0001c470  53 20 20 20 24 72 2c 20  24 72 2c 20 23 30 0a 0a  |S   $r, $r, #0..|
0001c480  20 20 20 20 20 20 20 20  4d 45 4e 44 0a 0a 0a 0a  |        MEND....|
0001c490  3b 20 6d 75 6c 31 36 63  0a 3b 20 6d 75 6c 74 69  |; mul16c.; multi|
0001c4a0  70 6c 69 63 61 74 69 6f  6e 20 6f 66 20 61 6e 20  |plication of an |
0001c4b0  69 6e 74 65 67 65 72 20  78 20 62 79 20 61 20 31  |integer x by a 1|
0001c4c0  36 2d 62 69 74 20 66 69  78 65 64 20 70 6f 69 6e  |6-bit fixed poin|
0001c4d0  74 20 6e 75 6d 62 65 72  20 61 2c 20 77 68 65 72  |t number a, wher|
0001c4e0  65 20 61 20 69 73 20 61  20 63 6f 6e 74 72 61 63  |e a is a contrac|
0001c4f0  74 69 6f 6e 0a 3b 20 69  65 20 63 61 6c 63 75 6c  |tion.; ie calcul|
0001c500  61 74 65 73 20 72 3d 78  2a 61 2f 36 35 35 33 36  |ates r=x*a/65536|
0001c510  2c 20 61 73 73 75 6d 69  6e 67 3a 20 61 62 73 20  |, assuming: abs |
0001c520  61 20 3c 20 36 35 35 33  36 0a 3b 20 69 66 20 74  |a < 65536.; if t|
0001c530  68 65 20 70 6f 73 73 69  62 69 6c 69 74 79 20 65  |he possibility e|
0001c540  78 69 73 74 73 20 74 68  61 74 20 61 3e 3d 36 35  |xists that a>=65|
0001c550  35 33 36 2c 20 63 61 6c  6c 65 72 20 73 68 6f 75  |536, caller shou|
0001c560  6c 64 20 63 68 65 63 6b  20 74 68 69 73 20 26 20  |ld check this & |
0001c570  65 69 74 68 65 72 20 6e  6f 74 20 63 61 6c 6c 20  |either not call |
0001c580  72 6f 75 74 69 6e 65 2c  20 6f 72 20 73 65 74 20  |routine, or set |
0001c590  61 3d 36 35 35 33 35 0a  3b 20 49 74 20 74 61 6b  |a=65535.; It tak|
0001c5a0  65 73 20 34 20 70 61 72  61 6d 65 74 65 72 73 20  |es 4 parameters |
0001c5b0  2d 20 61 6c 6c 20 72 65  67 69 73 74 65 72 20 6e  |- all register n|
0001c5c0  61 6d 65 73 2e 0a 3b 0a  3b 20 24 78 3a 20 20 20  |ames..;.; $x:   |
0001c5d0  78 0a 3b 20 24 61 3a 20  20 20 61 20 2d 20 72 65  |x.; $a:   a - re|
0001c5e0  71 75 69 72 65 20 61 62  73 20 61 20 3c 36 35 35  |quire abs a <655|
0001c5f0  33 36 2c 20 61 20 77 69  6c 6c 20 62 65 20 63 6f  |36, a will be co|
0001c600  72 72 75 70 74 65 64 0a  3b 20 24 72 3a 20 20 20  |rrupted.; $r:   |
0001c610  72 65 73 75 6c 74 20 2d  20 6d 61 79 20 62 65 20  |result - may be |
0001c620  74 68 65 20 73 61 6d 65  20 61 73 20 24 78 0a 3b  |the same as $x.;|
0001c630  20 24 77 3a 20 20 20 73  63 72 61 74 63 68 0a 3b  | $w:   scratch.;|
0001c640  0a 20 20 20 20 20 20 20  20 4d 41 43 52 4f 0a 24  |.        MACRO.$|
0001c650  6c 61 62 65 6c 20 20 6d  75 6c 31 36 63 20 20 24  |label  mul16c  $|
0001c660  78 2c 20 24 61 2c 20 24  72 2c 20 24 77 0a 0a 20  |x, $a, $r, $w.. |
0001c670  20 20 20 20 20 20 20 41  53 53 45 52 54 20 20 24  |       ASSERT  $|
0001c680  72 20 3c 3e 20 24 61 0a  20 20 20 20 20 20 20 20  |r <> $a.        |
0001c690  41 53 53 45 52 54 20 20  24 72 20 3c 3e 20 24 77  |ASSERT  $r <> $w|
0001c6a0  0a 20 20 20 20 20 20 20  20 41 53 53 45 52 54 20  |.        ASSERT |
0001c6b0  20 24 78 20 3c 3e 20 24  61 0a 20 20 20 20 20 20  | $x <> $a.      |
0001c6c0  20 20 41 53 53 45 52 54  20 20 24 78 20 3c 3e 20  |  ASSERT  $x <> |
0001c6d0  24 77 0a 20 20 20 20 20  20 20 20 41 53 53 45 52  |$w.        ASSER|
0001c6e0  54 20 20 24 61 20 3c 3e  20 24 77 0a 0a 24 6c 61  |T  $a <> $w..$la|
0001c6f0  62 65 6c 20 20 4d 4f 56  53 20 20 20 20 24 77 2c  |bel  MOVS    $w,|
0001c700  20 24 61 2c 20 4c 53 4c  20 23 31 0a 20 20 20 20  | $a, LSL #1.    |
0001c710  20 20 20 20 52 53 42 43  53 20 20 20 24 61 2c 20  |    RSBCS   $a, |
0001c720  24 61 2c 20 23 30 0a 20  20 20 20 20 20 20 20 54  |$a, #0.        T|
0001c730  45 51 20 20 20 20 20 24  78 2c 20 23 30 0a 20 20  |EQ     $x, #0.  |
0001c740  20 20 20 20 20 20 52 53  42 4d 49 20 20 20 24 72  |      RSBMI   $r|
0001c750  2c 20 24 78 2c 20 23 30  0a 20 20 20 20 20 20 20  |, $x, #0.       |
0001c760  20 5b 20 20 20 20 20 20  20 24 72 20 3c 3e 20 24  | [       $r <> $|
0001c770  78 0a 20 20 20 20 20 20  20 20 4d 4f 56 50 4c 20  |x.        MOVPL |
0001c780  20 20 24 72 2c 20 24 78  0a 20 20 20 20 20 20 20  |  $r, $x.       |
0001c790  20 5d 0a 20 20 20 20 20  20 20 20 4d 4f 56 20 20  | ].        MOV  |
0001c7a0  20 20 20 24 77 2c 20 70  63 2c 20 4c 53 52 20 23  |   $w, pc, LSR #|
0001c7b0  33 31 20 3b 73 65 65 20  6d 75 6c 31 36 20 61 62  |31 ;see mul16 ab|
0001c7c0  6f 76 65 2c 20 66 6f 72  20 63 6f 6d 6d 65 6e 74  |ove, for comment|
0001c7d0  73 20 72 65 20 74 68 69  73 20 70 61 72 74 0a 20  |s re this part. |
0001c7e0  20 20 20 20 20 20 20 4d  4f 56 20 20 20 20 20 24  |       MOV     $|
0001c7f0  77 2c 20 24 77 2c 20 4c  53 4c 20 23 32 38 0a 20  |w, $w, LSL #28. |
0001c800  20 20 20 20 20 20 20 54  45 51 50 20 20 20 20 24  |       TEQP    $|
0001c810  77 2c 20 70 63 2c 20 4c  53 52 20 23 31 0a 0a 20  |w, pc, LSR #1.. |
0001c820  20 20 20 20 20 20 20 54  53 54 20 20 20 20 20 24  |       TST     $|
0001c830  61 2c 20 23 31 3c 3c 31  36 20 20 20 20 20 20 3b  |a, #1<<16      ;|
0001c840  62 6f 64 67 65 20 74 6f  20 61 6c 6c 6f 77 20 63  |bodge to allow c|
0001c850  6f 64 65 20 74 6f 20 66  75 6e 63 74 69 6f 6e 20  |ode to function |
0001c860  69 66 20 24 61 20 69 73  20 75 70 74 6f 20 32 2a  |if $a is upto 2*|
0001c870  36 35 35 33 36 2d 31 0a  20 20 20 20 20 20 20 20  |65536-1.        |
0001c880  4d 4f 56 4e 45 20 20 20  24 72 2c 20 24 72 2c 20  |MOVNE   $r, $r, |
0001c890  4c 53 4c 20 23 31 20 20  3b 63 61 6e 20 6f 63 63  |LSL #1  ;can occ|
0001c8a0  75 72 20 69 6e 20 61 20  63 6f 6e 74 72 61 63 74  |ur in a contract|
0001c8b0  69 76 65 20 66 6e 20 64  75 65 20 74 6f 20 63 68  |ive fn due to ch|
0001c8c0  61 6e 67 65 20 6f 66 20  63 6f 6f 72 64 69 6e 61  |ange of coordina|
0001c8d0  74 65 73 20 74 6f 20 68  61 6e 64 6c 65 20 31 78  |tes to handle 1x|
0001c8e0  32 20 70 69 78 65 6c 20  61 73 70 65 63 74 20 72  |2 pixel aspect r|
0001c8f0  61 74 69 6f 0a 20 20 20  20 20 20 20 20 4d 4f 56  |atio.        MOV|
0001c900  4e 45 20 20 20 24 61 2c  20 24 61 2c 20 4c 53 52  |NE   $a, $a, LSR|
0001c910  20 23 31 20 20 3b 63 68  61 6e 67 65 20 6d 61 64  | #1  ;change mad|
0001c920  65 20 33 2f 34 2f 39 34  20 2d 20 65 73 74 69 6d  |e 3/4/94 - estim|
0001c930  61 74 65 20 6f 76 65 72  68 65 61 64 20 74 6f 20  |ate overhead to |
0001c940  72 69 61 20 6f 66 20 75  70 74 6f 20 33 25 0a 0a  |ria of upto 3%..|
0001c950  20 20 20 20 20 20 20 20  4d 4f 56 20 20 20 20 20  |        MOV     |
0001c960  24 77 2c 20 24 72 2c 20  4c 53 52 20 23 31 36 0a  |$w, $r, LSR #16.|
0001c970  20 20 20 20 20 20 20 20  42 49 43 20 20 20 20 20  |        BIC     |
0001c980  24 72 2c 20 24 72 2c 20  24 77 2c 20 4c 53 4c 20  |$r, $r, $w, LSL |
0001c990  23 31 36 0a 20 20 20 20  20 20 20 20 4d 55 4c 20  |#16.        MUL |
0001c9a0  20 20 20 20 24 72 2c 20  24 61 2c 20 24 72 0a 20  |    $r, $a, $r. |
0001c9b0  20 20 20 20 20 20 20 54  53 54 20 20 20 20 20 24  |       TST     $|
0001c9c0  72 2c 20 23 31 3c 3c 31  35 20 20 20 20 20 20 3b  |r, #1<<15      ;|
0001c9d0  72 65 6d 65 6d 62 65 72  2c 20 63 61 6e 27 74 20  |remember, can't |
0001c9e0  75 73 65 20 6d 6f 76 73  20 72 2c 72 2c 6c 73 72  |use movs r,r,lsr|
0001c9f0  20 23 31 36 2c 20 61 73  20 74 68 69 73 20 77 6f  | #16, as this wo|
0001ca00  75 6c 64 20 63 6f 72 72  75 70 74 20 56 2c 20 77  |uld corrupt V, w|
0001ca10  68 69 63 68 20 69 73 20  73 74 6f 72 69 6e 67 20  |hich is storing |
0001ca20  73 69 67 6e 20 6f 66 20  72 65 73 75 6c 74 0a 20  |sign of result. |
0001ca30  20 20 20 20 20 20 20 4d  4f 56 20 20 20 20 20 24  |       MOV     $|
0001ca40  72 2c 20 24 72 2c 20 4c  53 52 20 23 31 36 0a 20  |r, $r, LSR #16. |
0001ca50  20 20 20 20 20 20 20 41  44 44 4e 45 20 20 20 24  |       ADDNE   $|
0001ca60  72 2c 20 24 72 2c 20 23  31 0a 20 20 20 20 20 20  |r, $r, #1.      |
0001ca70  20 20 4d 4c 41 20 20 20  20 20 24 72 2c 20 24 61  |  MLA     $r, $a|
0001ca80  2c 20 24 77 2c 20 24 72  0a 0a 20 20 20 20 20 20  |, $w, $r..      |
0001ca90  20 20 52 53 42 56 53 20  20 20 24 72 2c 20 24 72  |  RSBVS   $r, $r|
0001caa0  2c 20 23 30 0a 0a 20 20  20 20 20 20 20 20 4d 45  |, #0..        ME|
0001cab0  4e 44 0a 0a 0a 0a 3b 20  73 71 72 74 31 36 0a 3b  |ND....; sqrt16.;|
0001cac0  20 69 6e 74 65 67 65 72  20 73 71 75 61 72 65 20  | integer square |
0001cad0  72 6f 6f 74 20 72 65 74  75 72 6e 69 6e 67 20 31  |root returning 1|
0001cae0  36 2d 62 69 74 20 66 69  78 65 64 20 70 6f 69 6e  |6-bit fixed poin|
0001caf0  74 20 6e 75 6d 62 65 72  2c 20 61 73 73 75 6d 69  |t number, assumi|
0001cb00  6e 67 20 78 20 69 73 20  31 36 2d 62 69 74 20 66  |ng x is 16-bit f|
0001cb10  69 78 65 64 20 70 6f 69  6e 74 0a 3b 20 69 65 20  |ixed point.; ie |
0001cb20  72 65 74 75 72 6e 73 20  73 71 72 74 28 78 3c 3c  |returns sqrt(x<<|
0001cb30  31 36 29 0a 3b 20 49 74  20 74 61 6b 65 73 20 36  |16).; It takes 6|
0001cb40  20 70 61 72 61 6d 65 74  65 72 73 20 2d 20 61 6c  | parameters - al|
0001cb50  6c 20 72 65 67 69 73 74  65 72 20 6e 61 6d 65 73  |l register names|
0001cb60  0a 3b 0a 3b 20 24 78 3a  20 20 20 78 0a 3b 20 24  |.;.; $x:   x.; $|
0001cb70  72 3a 20 20 20 72 65 73  75 6c 74 20 2d 20 6d 61  |r:   result - ma|
0001cb80  79 20 62 65 20 74 68 65  20 73 61 6d 65 20 61 73  |y be the same as|
0001cb90  20 78 0a 3b 20 24 6e 3a  20 20 20 63 6f 70 79 20  | x.; $n:   copy |
0001cba0  6f 66 20 78 20 75 73 65  64 20 64 75 72 69 6e 67  |of x used during|
0001cbb0  20 63 61 6c 63 75 6c 61  74 69 6f 6e 0a 3b 20 24  | calculation.; $|
0001cbc0  74 3a 20 20 20 74 72 61  6e 73 69 65 6e 74 20 73  |t:   transient s|
0001cbd0  63 72 61 74 63 68 0a 3b  20 24 64 3a 20 20 20 72  |cratch.; $d:   r|
0001cbe0  65 6d 61 69 6e 64 65 72  0a 3b 20 24 6f 3a 20 20  |emainder.; $o:  |
0001cbf0  20 63 6f 6e 73 74 61 6e  74 20 76 61 6c 75 65 20  | constant value |
0001cc00  6f 66 20 31 0a 3b 0a 20  20 20 20 20 20 20 20 4d  |of 1.;.        M|
0001cc10  41 43 52 4f 0a 24 6c 61  62 65 6c 20 20 73 71 72  |ACRO.$label  sqr|
0001cc20  74 31 36 20 20 24 78 2c  20 24 72 2c 20 24 6e 2c  |t16  $x, $r, $n,|
0001cc30  20 24 74 2c 20 24 64 2c  20 24 6f 0a 0a 20 20 20  | $t, $d, $o..   |
0001cc40  20 20 20 20 20 41 53 53  45 52 54 20 20 24 78 20  |     ASSERT  $x |
0001cc50  3c 3e 20 24 6e 0a 20 20  20 20 20 20 20 20 41 53  |<> $n.        AS|
0001cc60  53 45 52 54 20 20 24 78  20 3c 3e 20 24 74 0a 20  |SERT  $x <> $t. |
0001cc70  20 20 20 20 20 20 20 41  53 53 45 52 54 20 20 24  |       ASSERT  $|
0001cc80  78 20 3c 3e 20 24 64 0a  20 20 20 20 20 20 20 20  |x <> $d.        |
0001cc90  41 53 53 45 52 54 20 20  24 78 20 3c 3e 20 24 6f  |ASSERT  $x <> $o|
0001cca0  0a 20 20 20 20 20 20 20  20 41 53 53 45 52 54 20  |.        ASSERT |
0001ccb0  20 24 6e 20 3c 3e 20 24  74 0a 20 20 20 20 20 20  | $n <> $t.      |
0001ccc0  20 20 41 53 53 45 52 54  20 20 24 6e 20 3c 3e 20  |  ASSERT  $n <> |
0001ccd0  24 64 0a 20 20 20 20 20  20 20 20 41 53 53 45 52  |$d.        ASSER|
0001cce0  54 20 20 24 6e 20 3c 3e  20 24 6f 0a 20 20 20 20  |T  $n <> $o.    |
0001ccf0  20 20 20 20 41 53 53 45  52 54 20 20 24 74 20 3c  |    ASSERT  $t <|
0001cd00  3e 20 24 64 0a 20 20 20  20 20 20 20 20 41 53 53  |> $d.        ASS|
0001cd10  45 52 54 20 20 24 74 20  3c 3e 20 24 6f 0a 20 20  |ERT  $t <> $o.  |
0001cd20  20 20 20 20 20 20 41 53  53 45 52 54 20 20 24 64  |      ASSERT  $d|
0001cd30  20 3c 3e 20 24 6f 0a 0a  20 20 20 20 20 20 20 20  | <> $o..        |
0001cd40  4c 43 4c 41 20 20 20 20  63 6f 75 6e 74 65 72 0a  |LCLA    counter.|
0001cd50  0a 24 6c 61 62 65 6c 20  20 4d 4f 56 20 20 20 20  |.$label  MOV    |
0001cd60  20 24 6e 2c 20 24 78 0a  20 20 20 20 20 20 20 20  | $n, $x.        |
0001cd70  4d 4f 56 20 20 20 20 20  24 6f 2c 20 23 31 0a 20  |MOV     $o, #1. |
0001cd80  20 20 20 20 20 20 20 4d  4f 56 20 20 20 20 20 24  |       MOV     $|
0001cd90  78 2c 20 23 30 0a 20 20  20 20 20 20 20 20 4d 4f  |x, #0.        MO|
0001cda0  56 20 20 20 20 20 24 64  2c 20 23 30 0a 0a 20 20  |V     $d, #0..  |
0001cdb0  20 20 20 20 20 20 41 4e  44 20 20 20 20 20 24 74  |      AND     $t|
0001cdc0  2c 20 24 6e 2c 20 23 28  33 3c 3c 33 30 29 0a 20  |, $n, #(3<<30). |
0001cdd0  20 20 20 20 20 20 20 4d  4f 56 20 20 20 20 20 24  |       MOV     $|
0001cde0  74 2c 20 24 74 2c 20 4c  53 52 20 23 33 30 0a 20  |t, $t, LSR #30. |
0001cdf0  20 20 20 20 20 20 20 4f  52 52 20 20 20 20 20 24  |       ORR     $|
0001ce00  64 2c 20 24 64 2c 20 24  74 0a 20 20 20 20 20 20  |d, $d, $t.      |
0001ce10  20 20 41 44 44 20 20 20  20 20 24 74 2c 20 24 6f  |  ADD     $t, $o|
0001ce20  2c 20 24 78 2c 20 4c 53  4c 20 23 31 0a 20 20 20  |, $x, LSL #1.   |
0001ce30  20 20 20 20 20 43 4d 50  20 20 20 20 20 24 64 2c  |     CMP     $d,|
0001ce40  20 24 74 0a 20 20 20 20  20 20 20 20 53 55 42 47  | $t.        SUBG|
0001ce50  45 20 20 20 24 64 2c 20  24 64 2c 20 24 74 0a 20  |E   $d, $d, $t. |
0001ce60  20 20 20 20 20 20 20 41  44 44 47 45 20 20 20 24  |       ADDGE   $|
0001ce70  78 2c 20 24 78 2c 20 23  31 0a 0a 63 6f 75 6e 74  |x, $x, #1..count|
0001ce80  65 72 20 53 45 54 41 20  20 20 20 32 38 0a 20 20  |er SETA    28.  |
0001ce90  20 20 20 20 20 20 57 48  49 4c 45 20 20 20 63 6f  |      WHILE   co|
0001cea0  75 6e 74 65 72 20 3c 20  33 32 20 20 20 20 20 20  |unter < 32      |
0001ceb0  20 20 20 20 20 20 20 3b  77 61 6e 74 20 3e 3d 20  |       ;want >= |
0001cec0  30 2c 20 68 6f 77 65 76  65 72 20 63 6f 75 6e 74  |0, however count|
0001ced0  65 72 20 69 73 20 75 6e  73 69 67 6e 65 64 2c 20  |er is unsigned, |
0001cee0  73 6f 20 61 66 74 65 72  20 30 20 69 74 20 67 6f  |so after 0 it go|
0001cef0  65 73 20 68 69 67 68 2c  20 74 68 75 73 20 3c 20  |es high, thus < |
0001cf00  33 32 20 77 69 6c 6c 20  63 61 74 63 68 20 69 74  |32 will catch it|
0001cf10  21 0a 20 20 20 20 20 20  20 20 4d 4f 56 20 20 20  |!.        MOV   |
0001cf20  20 20 24 78 2c 20 24 78  2c 20 4c 53 4c 20 23 31  |  $x, $x, LSL #1|
0001cf30  0a 20 20 20 20 20 20 20  20 4d 4f 56 20 20 20 20  |.        MOV    |
0001cf40  20 24 64 2c 20 24 64 2c  20 4c 53 4c 20 23 32 0a  | $d, $d, LSL #2.|
0001cf50  20 20 20 20 20 20 20 20  41 4e 44 20 20 20 20 20  |        AND     |
0001cf60  24 74 2c 20 24 6e 2c 20  23 28 33 3c 3c 63 6f 75  |$t, $n, #(3<<cou|
0001cf70  6e 74 65 72 29 0a 20 20  20 20 20 20 20 20 5b 20  |nter).        [ |
0001cf80  20 20 20 20 20 20 63 6f  75 6e 74 65 72 20 3c 3e  |      counter <>|
0001cf90  20 30 0a 20 20 20 20 20  20 20 20 4d 4f 56 20 20  | 0.        MOV  |
0001cfa0  20 20 20 24 74 2c 20 24  74 2c 20 4c 53 52 20 23  |   $t, $t, LSR #|
0001cfb0  63 6f 75 6e 74 65 72 0a  20 20 20 20 20 20 20 20  |counter.        |
0001cfc0  5d 0a 20 20 20 20 20 20  20 20 4f 52 52 20 20 20  |].        ORR   |
0001cfd0  20 20 24 64 2c 20 24 64  2c 20 24 74 0a 20 20 20  |  $d, $d, $t.   |
0001cfe0  20 20 20 20 20 41 44 44  20 20 20 20 20 24 74 2c  |     ADD     $t,|
0001cff0  20 24 6f 2c 20 24 78 2c  20 4c 53 4c 20 23 31 0a  | $o, $x, LSL #1.|
0001d000  20 20 20 20 20 20 20 20  43 4d 50 20 20 20 20 20  |        CMP     |
0001d010  24 64 2c 20 24 74 0a 20  20 20 20 20 20 20 20 53  |$d, $t.        S|
0001d020  55 42 47 45 20 20 20 24  64 2c 20 24 64 2c 20 24  |UBGE   $d, $d, $|
0001d030  74 0a 20 20 20 20 20 20  20 20 41 44 44 47 45 20  |t.        ADDGE |
0001d040  20 20 24 78 2c 20 24 78  2c 20 23 31 0a 63 6f 75  |  $x, $x, #1.cou|
0001d050  6e 74 65 72 20 53 45 54  41 20 20 20 20 63 6f 75  |nter SETA    cou|
0001d060  6e 74 65 72 2d 32 0a 20  20 20 20 20 20 20 20 57  |nter-2.        W|
0001d070  45 4e 44 0a 0a 63 6f 75  6e 74 65 72 20 53 45 54  |END..counter SET|
0001d080  41 20 20 20 20 31 34 0a  20 20 20 20 20 20 20 20  |A    14.        |
0001d090  57 48 49 4c 45 20 20 20  63 6f 75 6e 74 65 72 20  |WHILE   counter |
0001d0a0  3c 20 33 32 0a 20 20 20  20 20 20 20 20 4d 4f 56  |< 32.        MOV|
0001d0b0  20 20 20 20 20 24 78 2c  20 24 78 2c 20 4c 53 4c  |     $x, $x, LSL|
0001d0c0  20 23 31 0a 20 20 20 20  20 20 20 20 4d 4f 56 20  | #1.        MOV |
0001d0d0  20 20 20 20 24 64 2c 20  24 64 2c 20 4c 53 4c 20  |    $d, $d, LSL |
0001d0e0  23 32 0a 20 20 20 20 20  20 20 20 41 44 44 20 20  |#2.        ADD  |
0001d0f0  20 20 20 24 74 2c 20 24  6f 2c 20 24 78 2c 20 4c  |   $t, $o, $x, L|
0001d100  53 4c 20 23 31 0a 20 20  20 20 20 20 20 20 43 4d  |SL #1.        CM|
0001d110  50 20 20 20 20 20 24 64  2c 20 24 74 0a 20 20 20  |P     $d, $t.   |
0001d120  20 20 20 20 20 53 55 42  47 45 20 20 20 24 64 2c  |     SUBGE   $d,|
0001d130  20 24 64 2c 20 24 74 0a  20 20 20 20 20 20 20 20  | $d, $t.        |
0001d140  41 44 44 47 45 20 20 20  24 78 2c 20 24 78 2c 20  |ADDGE   $x, $x, |
0001d150  23 31 0a 63 6f 75 6e 74  65 72 20 53 45 54 41 20  |#1.counter SETA |
0001d160  20 20 20 63 6f 75 6e 74  65 72 2d 32 0a 20 20 20  |   counter-2.   |
0001d170  20 20 20 20 20 57 45 4e  44 0a 0a 20 20 20 20 20  |     WEND..     |
0001d180  20 20 20 5b 20 20 20 20  20 20 20 24 72 20 3c 3e  |   [       $r <>|
0001d190  20 24 78 0a 20 20 20 20  20 20 20 20 4d 4f 56 20  | $x.        MOV |
0001d1a0  20 20 20 20 24 72 2c 20  24 78 0a 20 20 20 20 20  |    $r, $x.     |
0001d1b0  20 20 20 5d 0a 0a 20 20  20 20 20 20 20 20 4d 45  |   ]..        ME|
0001d1c0  4e 44 0a 0a 0a 0a 20 20  20 20 20 20 20 20 45 4e  |ND....        EN|
0001d1d0  44 0a 1a 82 6d 61 69 6e  5f 61 73 73 65 00 00 00  |D...main_asse...|
0001d1e0  00 c7 00 00 00 6d 20 33  9f 3d 45 c7 00 00 00 46  |.....m 3.=E....F|
0001d1f0  ff ff ff 9c 4f 65 ae 03  00 00 00 0a 20 20 20 20  |....Oe......    |
0001d200  20 20 20 20 47 45 54 20  20 20 20 20 68 2e 52 65  |    GET     h.Re|
0001d210  67 4e 61 6d 65 73 0a 20  20 20 20 20 20 20 20 47  |gNames.        G|
0001d220  45 54 20 20 20 20 20 68  2e 53 57 49 6e 61 6d 65  |ET     h.SWIname|
0001d230  73 0a 0a 20 20 20 20 20  20 20 20 41 52 45 41 20  |s..        AREA |
0001d240  20 20 20 7c 43 24 24 63  6f 64 65 7c 2c 20 43 4f  |   |C$$code|, CO|
0001d250  44 45 2c 20 52 45 41 44  4f 4e 4c 59 0a 0a 20 20  |DE, READONLY..  |
0001d260  20 20 20 20 20 20 47 45  54 20 20 20 20 20 73 2e  |      GET     s.|
0001d270  6d 61 63 72 6f 73 31 0a  20 20 20 20 20 20 20 20  |macros1.        |
0001d280  47 45 54 20 20 20 20 20  73 2e 73 75 62 72 6f 75  |GET     s.subrou|
0001d290  74 73 31 0a 09 47 45 54  09 73 2e 67 65 6e 65 72  |ts1..GET.s.gener|
0001d2a0  61 74 6f 72 63 0a 09 47  45 54 09 73 2e 73 6f 75  |atorc..GET.s.sou|
0001d2b0  6e 64 0a 0a 0a 0a 20 20  20 20 20 20 20 20 45 4e  |nd....        EN|
0001d2c0  44 0a 1a 82 73 6f 75 6e  64 00 00 00 00 00 00 00  |D...sound.......|
0001d2d0  00 83 0f 00 00 98 20 95  5b 5c 82 83 0f 00 00 46  |...... .[\.....F|
0001d2e0  ff ff ff 2f d4 d7 c3 03  00 00 00 0a 58 53 6f 75  |.../........XSou|
0001d2f0  6e 64 5f 43 6f 6e 66 69  67 75 72 65 09 2a 09 26  |nd_Configure.*.&|
0001d300  36 30 31 34 30 0a 0a 3b  0a 3b 20 43 20 70 72 6f  |60140..;.; C pro|
0001d310  74 6f 74 79 70 65 3a 0a  3b 20 63 68 61 72 20 2a  |totype:.; char *|
0001d320  76 6f 69 63 65 5f 62 61  73 65 0a 3b 20 70 6f 69  |voice_base.; poi|
0001d330  6e 74 73 20 74 6f 20 6e  65 77 20 76 6f 69 63 65  |nts to new voice|
0001d340  20 67 65 6e 65 72 61 74  6f 72 0a 3b 0a 3b 20 63  | generator.;.; c|
0001d350  68 61 72 20 2a 77 61 76  65 5f 62 61 73 65 0a 3b  |har *wave_base.;|
0001d360  20 70 6f 69 6e 74 73 20  74 6f 20 73 61 6d 70 6c  | points to sampl|
0001d370  65 20 74 6f 20 62 65 20  70 6c 61 79 65 64 0a 3b  |e to be played.;|
0001d380  20 6e 62 20 74 68 69 73  20 6d 75 73 74 20 62 65  | nb this must be|
0001d390  20 61 6c 6c 6f 63 61 74  65 64 20 61 6e 64 20 66  | allocated and f|
0001d3a0  69 6c 6c 65 64 20 62 79  20 43 20 63 6f 64 65 0a  |illed by C code.|
0001d3b0  3b 0a 3b 20 63 68 61 72  20 2a 77 61 76 65 5f 65  |;.; char *wave_e|
0001d3c0  6e 64 0a 3b 20 70 6f 69  6e 74 73 20 6f 6e 65 20  |nd.; points one |
0001d3d0  62 79 74 65 20 62 65 79  6f 6e 64 20 73 61 6d 70  |byte beyond samp|
0001d3e0  6c 65 20 65 6e 64 0a 3b  20 6e 62 20 74 68 69 73  |le end.; nb this|
0001d3f0  20 6d 75 73 74 20 62 65  20 73 65 74 20 62 79 20  | must be set by |
0001d400  43 20 63 6f 64 65 0a 3b  0a 0a 09 45 58 50 4f 52  |C code.;...EXPOR|
0001d410  54 09 76 6f 69 63 65 5f  62 61 73 65 0a 09 45 58  |T.voice_base..EX|
0001d420  50 4f 52 54 09 77 61 76  65 5f 62 61 73 65 0a 09  |PORT.wave_base..|
0001d430  45 58 50 4f 52 54 09 77  61 76 65 5f 65 6e 64 0a  |EXPORT.wave_end.|
0001d440  0a 76 6f 69 63 65 5f 62  61 73 65 0a 09 44 43 44  |.voice_base..DCD|
0001d450  09 76 6f 69 63 65 62 61  73 65 0a 77 61 76 65 5f  |.voicebase.wave_|
0001d460  62 61 73 65 0a 09 44 43  44 09 30 0a 77 61 76 65  |base..DCD.0.wave|
0001d470  5f 65 6e 64 0a 09 44 43  44 09 30 0a 0a 76 6f 69  |_end..DCD.0..voi|
0001d480  63 65 62 61 73 65 0a 09  42 09 66 69 6c 6c 0a 09  |cebase..B.fill..|
0001d490  42 09 66 69 6c 6c 0a 09  42 09 67 61 74 65 6f 6e  |B.fill..B.gateon|
0001d4a0  0a 09 42 09 67 61 74 65  6f 66 66 0a 09 42 09 69  |..B.gateoff..B.i|
0001d4b0  6e 73 74 61 6e 63 65 0a  09 4c 44 4d 46 44 09 73  |nstance..LDMFD.s|
0001d4c0  70 21 2c 20 7b 70 63 7d  0a 09 4c 44 4d 46 44 09  |p!, {pc}..LDMFD.|
0001d4d0  73 70 21 2c 20 7b 70 63  7d 0a 09 44 43 44 09 76  |sp!, {pc}..DCD.v|
0001d4e0  6f 69 63 65 6e 61 6d 65  2d 76 6f 69 63 65 62 61  |oicename-voiceba|
0001d4f0  73 65 0a 76 6f 69 63 65  6e 61 6d 65 0a 09 44 43  |se.voicename..DC|
0001d500  42 09 22 56 6f 69 63 65  4f 66 43 68 61 6f 73 22  |B."VoiceOfChaos"|
0001d510  2c 20 30 0a 09 41 4c 49  47 4e 0a 0a 6c 6f 67 61  |, 0..ALIGN..loga|
0001d520  6d 70 70 74 72 0a 09 44  43 44 09 30 0a 0a 69 6e  |mpptr..DCD.0..in|
0001d530  73 74 61 6e 63 65 0a 09  53 54 4d 46 44 09 73 70  |stance..STMFD.sp|
0001d540  21 2c 20 7b 72 30 2d 72  34 7d 0a 09 4d 4f 56 09  |!, {r0-r4}..MOV.|
0001d550  72 30 2c 20 23 30 0a 09  4d 4f 56 09 72 31 2c 20  |r0, #0..MOV.r1, |
0001d560  23 30 0a 09 4d 4f 56 09  72 32 2c 20 23 30 0a 09  |#0..MOV.r2, #0..|
0001d570  4d 4f 56 09 72 33 2c 20  23 30 0a 09 4d 4f 56 09  |MOV.r3, #0..MOV.|
0001d580  72 34 2c 20 23 30 0a 09  53 57 49 09 58 53 6f 75  |r4, #0..SWI.XSou|
0001d590  6e 64 5f 43 6f 6e 66 69  67 75 72 65 0a 09 4c 44  |nd_Configure..LD|
0001d5a0  52 56 43 09 72 30 2c 20  5b 72 33 2c 20 23 31 32  |RVC.r0, [r3, #12|
0001d5b0  5d 0a 09 53 54 52 56 43  09 72 30 2c 20 6c 6f 67  |]..STRVC.r0, log|
0001d5c0  61 6d 70 70 74 72 0a 09  53 54 52 56 53 09 72 30  |ampptr..STRVS.r0|
0001d5d0  2c 20 5b 73 70 5d 0a 09  4c 44 4d 46 44 09 73 70  |, [sp]..LDMFD.sp|
0001d5e0  21 2c 20 7b 72 30 2d 72  34 2c 20 70 63 7d 0a 0a  |!, {r0-r4, pc}..|
0001d5f0  67 61 74 65 6f 6e 0a 09  4c 44 52 09 72 30 2c 20  |gateon..LDR.r0, |
0001d600  77 61 76 65 5f 62 61 73  65 0a 09 53 54 52 09 72  |wave_base..STR.r|
0001d610  30 2c 20 5b 72 39 2c 20  23 31 36 5d 09 09 3b 77  |0, [r9, #16]..;w|
0001d620  6f 72 6b 20 72 65 67 20  35 20 20 2d 20 20 77 61  |ork reg 5  -  wa|
0001d630  76 65 70 74 72 0a 09 53  54 52 09 72 30 2c 20 5b  |veptr..STR.r0, [|
0001d640  72 39 2c 20 23 32 34 5d  09 09 3b 77 6f 72 6b 20  |r9, #24]..;work |
0001d650  72 65 67 20 37 20 20 2d  20 20 77 61 76 65 62 61  |reg 7  -  waveba|
0001d660  73 65 0a 09 4c 44 52 09  72 30 2c 20 6c 6f 67 61  |se..LDR.r0, loga|
0001d670  6d 70 70 74 72 0a 09 53  54 52 09 72 30 2c 20 5b  |mpptr..STR.r0, [|
0001d680  72 39 2c 20 23 32 30 5d  09 09 3b 77 6f 72 6b 20  |r9, #20]..;work |
0001d690  72 65 67 20 36 20 20 2d  20 20 6c 6f 67 20 61 6d  |reg 6  -  log am|
0001d6a0  70 20 74 61 62 6c 65 20  70 74 72 0a 09 4c 44 52  |p table ptr..LDR|
0001d6b0  09 72 30 2c 20 77 61 76  65 5f 65 6e 64 0a 09 53  |.r0, wave_end..S|
0001d6c0  54 52 09 72 30 2c 20 5b  72 39 2c 20 23 32 38 5d  |TR.r0, [r9, #28]|
0001d6d0  09 09 3b 77 6f 72 6b 20  72 65 67 20 38 20 20 2d  |..;work reg 8  -|
0001d6e0  20 20 77 61 76 65 65 6e  64 0a 0a 66 69 6c 6c 0a  |  waveend..fill.|
0001d6f0  09 4c 44 4d 49 41 09 72  39 2c 20 7b 72 31 2d 72  |.LDMIA.r9, {r1-r|
0001d700  38 7d 0a 09 41 4e 44 09  72 31 2c 20 72 31 2c 20  |8}..AND.r1, r1, |
0001d710  23 26 37 66 0a 09 4c 44  52 42 09 72 31 2c 20 5b  |#&7f..LDRB.r1, [|
0001d720  72 36 2c 20 72 31 2c 20  4c 53 4c 20 23 31 5d 0a  |r6, r1, LSL #1].|
0001d730  09 4d 4f 56 09 72 31 2c  20 72 31 2c 20 4c 53 52  |.MOV.r1, r1, LSR|
0001d740  20 23 31 0a 09 52 53 42  09 72 31 2c 20 72 31 2c  | #1..RSB.r1, r1,|
0001d750  20 23 31 32 37 0a 66 69  6c 6c 6c 6f 6f 70 0a 09  | #127.fillloop..|
0001d760  4c 44 52 42 09 72 30 2c  20 5b 72 35 5d 2c 20 23  |LDRB.r0, [r5], #|
0001d770  31 0a 09 43 4d 50 09 72  35 2c 20 72 38 0a 09 4d  |1..CMP.r5, r8..M|
0001d780  4f 56 48 53 09 72 35 2c  20 72 37 0a 09 53 55 42  |OVHS.r5, r7..SUB|
0001d790  53 09 72 30 2c 20 72 30  2c 20 72 31 2c 20 4c 53  |S.r0, r0, r1, LS|
0001d7a0  4c 20 23 31 0a 09 4d 4f  56 4d 49 09 72 30 2c 20  |L #1..MOVMI.r0, |
0001d7b0  23 30 0a 09 53 54 52 42  09 72 30 2c 20 5b 72 31  |#0..STRB.r0, [r1|
0001d7c0  32 5d 2c 20 72 31 31 0a  09 4c 44 52 42 09 72 30  |2], r11..LDRB.r0|
0001d7d0  2c 20 5b 72 35 5d 2c 20  23 31 0a 09 43 4d 50 09  |, [r5], #1..CMP.|
0001d7e0  72 35 2c 20 72 38 0a 09  4d 4f 56 48 53 09 72 35  |r5, r8..MOVHS.r5|
0001d7f0  2c 20 72 37 0a 09 53 55  42 53 09 72 30 2c 20 72  |, r7..SUBS.r0, r|
0001d800  30 2c 20 72 31 2c 20 4c  53 4c 20 23 31 0a 09 4d  |0, r1, LSL #1..M|
0001d810  4f 56 4d 49 09 72 30 2c  20 23 30 0a 09 53 54 52  |OVMI.r0, #0..STR|
0001d820  42 09 72 30 2c 20 5b 72  31 32 5d 2c 20 72 31 31  |B.r0, [r12], r11|
0001d830  0a 09 43 4d 50 09 72 31  32 2c 20 72 31 30 0a 09  |..CMP.r12, r10..|
0001d840  42 4c 54 09 66 69 6c 6c  6c 6f 6f 70 0a 0a 09 53  |BLT.fillloop...S|
0001d850  55 42 53 09 72 34 2c 20  72 34 2c 20 23 31 0a 09  |UBS.r4, r4, #1..|
0001d860  53 54 4d 49 42 09 72 39  2c 20 7b 72 32 2d 72 35  |STMIB.r9, {r2-r5|
0001d870  7d 0a 09 4d 4f 56 50 4c  09 72 30 2c 20 23 32 5f  |}..MOVPL.r0, #2_|
0001d880  30 30 30 30 31 30 30 30  0a 09 4d 4f 56 4d 49 09  |00001000..MOVMI.|
0001d890  72 30 2c 20 23 32 5f 30  30 30 30 30 30 31 30 0a  |r0, #2_00000010.|
0001d8a0  09 4c 44 4d 46 44 09 73  70 21 2c 20 7b 70 63 7d  |.LDMFD.sp!, {pc}|
0001d8b0  0a 0a 67 61 74 65 6f 66  66 0a 09 4d 4f 56 09 72  |..gateoff..MOV.r|
0001d8c0  30 2c 20 23 30 0a 66 6c  75 73 68 6c 6f 6f 70 0a  |0, #0.flushloop.|
0001d8d0  09 53 54 52 42 09 72 30  2c 20 5b 72 31 32 5d 2c  |.STRB.r0, [r12],|
0001d8e0  20 72 31 31 0a 09 53 54  52 42 09 72 30 2c 20 5b  | r11..STRB.r0, [|
0001d8f0  72 31 32 5d 2c 20 72 31  31 0a 09 43 4d 50 09 72  |r12], r11..CMP.r|
0001d900  31 32 2c 20 72 31 30 0a  09 42 4c 54 09 66 6c 75  |12, r10..BLT.flu|
0001d910  73 68 6c 6f 6f 70 0a 09  4d 4f 56 09 72 30 2c 20  |shloop..MOV.r0, |
0001d920  23 32 5f 30 30 30 30 30  30 30 31 0a 09 4c 44 4d  |#2_00000001..LDM|
0001d930  46 44 09 73 70 21 2c 20  7b 70 63 7d 0a 0a 0a 0a  |FD.sp!, {pc}....|
0001d940  3b 20 70 69 74 63 68 31  36 0a 3b 20 61 20 6c 65  |; pitch16.; a le|
0001d950  61 66 20 41 50 43 53 20  66 75 6e 63 74 69 6f 6e  |af APCS function|
0001d960  0a 3b 0a 3b 20 43 20 70  72 6f 74 6f 74 79 70 65  |.;.; C prototype|
0001d970  3a 0a 3b 20 69 6e 74 20  70 69 74 63 68 31 36 28  |:.; int pitch16(|
0001d980  69 6e 74 20 61 29 0a 3b  0a 3b 20 72 65 74 75 72  |int a).;.; retur|
0001d990  6e 73 20 31 36 20 62 69  74 20 70 68 61 73 65 20  |ns 16 bit phase |
0001d9a0  61 63 63 75 6d 75 6c 61  74 6f 72 20 69 6e 63 72  |accumulator incr|
0001d9b0  65 6d 65 6e 74 20 28 70  61 69 29 20 66 6f 72 20  |ement (pai) for |
0001d9c0  67 69 76 65 6e 20 70 69  74 63 68 20 61 2c 20 77  |given pitch a, w|
0001d9d0  68 65 72 65 20 61 20 68  61 73 20 73 74 61 6e 64  |here a has stand|
0001d9e0  61 72 64 20 66 6f 72 6d  61 74 3a 0a 3b 20 62 69  |ard format:.; bi|
0001d9f0  74 73 20 31 34 2d 31 32  20 67 69 76 69 6e 67 20  |ts 14-12 giving |
0001da00  74 68 65 20 6f 63 74 61  76 65 20 6e 75 6d 62 65  |the octave numbe|
0001da10  72 0a 3b 20 62 69 74 73  20 31 31 2d 30 20 67 69  |r.; bits 11-0 gi|
0001da20  76 69 6e 67 20 74 68 65  20 66 72 61 63 74 69 6f  |ving the fractio|
0001da30  6e 20 6f 66 20 61 6e 20  6f 63 74 61 76 65 20 69  |n of an octave i|
0001da40  6e 20 31 2f 34 30 39 36  27 74 68 73 20 6f 66 20  |n 1/4096'ths of |
0001da50  61 6e 20 6f 63 74 61 76  65 0a 3b 20 61 6e 64 20  |an octave.; and |
0001da60  77 68 65 72 65 20 61 20  76 61 6c 75 65 20 6f 66  |where a value of|
0001da70  20 30 78 34 30 30 30 20  63 6f 72 72 65 73 70 6f  | 0x4000 correspo|
0001da80  6e 64 73 20 74 6f 20 6d  69 64 64 6c 65 20 43 0a  |nds to middle C.|
0001da90  3b 0a 3b 20 6e 6f 74 65  20 74 68 69 73 20 69 73  |;.; note this is|
0001daa0  20 6f 6e 20 74 68 65 20  62 61 73 69 73 20 74 68  | on the basis th|
0001dab0  61 74 20 41 20 61 62 6f  76 65 20 6d 69 64 64 6c  |at A above middl|
0001dac0  65 20 43 20 68 61 73 20  66 72 65 71 75 65 6e 63  |e C has frequenc|
0001dad0  79 20 34 34 30 48 7a 2c  20 61 6e 64 20 77 65 20  |y 440Hz, and we |
0001dae0  61 64 6f 70 74 20 65 71  75 61 6c 20 74 65 6d 70  |adopt equal temp|
0001daf0  65 72 61 6d 65 6e 74 0a  3b 20 74 75 6e 69 6e 67  |erament.; tuning|
0001db00  20 6f 66 20 74 68 65 20  63 68 72 6f 6d 61 74 69  | of the chromati|
0001db10  63 20 73 63 61 6c 65 20  70 75 74 74 69 6e 67 20  |c scale putting |
0001db20  6d 69 64 64 6c 65 20 43  20 39 2f 31 32 27 74 68  |middle C 9/12'th|
0001db30  73 20 6f 66 20 61 6e 20  6f 63 74 61 76 65 20 62  |s of an octave b|
0001db40  65 6c 6f 77 20 34 34 30  48 7a 2c 20 69 65 20 61  |elow 440Hz, ie a|
0001db50  74 20 34 34 30 2f 28 32  5e 30 2e 37 35 29 0a 3b  |t 440/(2^0.75).;|
0001db60  0a 3b 20 6e 6f 74 65 73  20 6f 6e 20 61 63 74 75  |.; notes on actu|
0001db70  61 6c 20 63 61 6c 63 75  6c 61 74 69 6f 6e 3a 0a  |al calculation:.|
0001db80  3b 0a 3b 20 73 65 74 20  66 20 3d 20 66 72 65 71  |;.; set f = freq|
0001db90  75 65 6e 63 79 20 6f 66  20 6e 6f 74 65 20 6f 66  |uency of note of|
0001dba0  20 70 69 74 63 68 20 61  0a 3b 20 73 65 74 20 73  | pitch a.; set s|
0001dbb0  20 3d 20 73 61 6d 70 6c  65 20 70 65 72 69 6f 64  | = sample period|
0001dbc0  20 28 3d 31 2f 73 61 6d  70 6c 65 20 66 72 65 71  | (=1/sample freq|
0001dbd0  75 65 6e 63 79 29 0a 3b  20 74 68 65 6e 20 72 65  |uency).; then re|
0001dbe0  74 75 72 6e 65 64 20 70  61 69 20 3d 20 36 35 35  |turned pai = 655|
0001dbf0  33 36 2a 66 2a 73 0a 3b  20 61 73 73 75 6d 65 20  |36*f*s.; assume |
0001dc00  73 20 3d 20 64 65 66 61  75 6c 74 20 76 61 6c 75  |s = default valu|
0001dc10  65 20 6f 66 20 34 38 65  2d 36 20 73 65 63 6f 6e  |e of 48e-6 secon|
0001dc20  64 73 2c 20 67 69 76 69  6e 67 20 70 61 69 20 3d  |ds, giving pai =|
0001dc30  20 28 36 35 35 33 36 2a  34 38 65 2d 36 29 2a 66  | (65536*48e-6)*f|
0001dc40  0a 3b 0a 3b 20 66 75 72  74 68 65 72 20 6e 6f 74  |.;.; further not|
0001dc50  65 20 67 69 76 65 6e 20  61 62 6f 76 65 20 66 6f  |e given above fo|
0001dc60  72 6d 61 74 20 6f 66 20  61 20 61 6e 64 20 66 72  |rmat of a and fr|
0001dc70  65 71 75 65 6e 63 79 20  6f 66 20 6d 69 64 64 6c  |equency of middl|
0001dc80  65 20 43 2c 20 77 65 20  61 6c 73 6f 20 68 61 76  |e C, we also hav|
0001dc90  65 0a 3b 20 66 20 3d 20  28 32 32 30 2a 32 5e 30  |e.; f = (220*2^0|
0001dca0  2e 32 35 29 20 2a 20 32  5e 28 61 2f 34 30 39 36  |.25) * 2^(a/4096|
0001dcb0  20 2d 20 34 29 0a 3b 20  74 68 75 73 20 70 61 69  | - 4).; thus pai|
0001dcc0  20 3d 20 36 35 35 33 36  2a 28 34 38 65 2d 36 29  | = 65536*(48e-6)|
0001dcd0  2a 32 32 30 2a 28 32 5e  30 2e 32 35 29 2f 31 36  |*220*(2^0.25)/16|
0001dce0  20 2a 20 32 5e 28 61 2f  34 30 39 36 29 0a 3b 20  | * 2^(a/4096).; |
0001dcf0  69 65 20 73 65 74 74 69  6e 67 20 71 20 3d 20 34  |ie setting q = 4|
0001dd00  30 39 36 2a 28 34 38 65  2d 36 29 2a 32 32 30 2a  |096*(48e-6)*220*|
0001dd10  28 32 5e 30 2e 32 35 29  20 3d 20 35 31 2e 34 33  |(2^0.25) = 51.43|
0001dd20  37 36 37 39 31 34 20 28  61 70 70 72 6f 78 29 0a  |767914 (approx).|
0001dd30  3b 20 70 61 69 20 3d 20  71 2a 32 5e 28 61 2f 34  |; pai = q*2^(a/4|
0001dd40  30 39 36 29 0a 3b 0a 3b  20 74 6f 20 65 76 61 6c  |096).;.; to eval|
0001dd50  75 61 74 65 20 74 68 69  73 20 77 65 20 73 70 6c  |uate this we spl|
0001dd60  69 74 20 61 20 69 6e 74  6f 20 6f 63 74 61 76 65  |it a into octave|
0001dd70  20 6e 75 6d 62 65 72 20  69 20 61 6e 64 20 66 72  | number i and fr|
0001dd80  61 63 74 69 6f 6e 20 6d  2c 20 69 65 20 61 3d 34  |action m, ie a=4|
0001dd90  30 39 36 69 2b 6d 0a 3b  20 74 68 65 6e 63 65 20  |096i+m.; thence |
0001dda0  70 61 69 20 3d 20 71 2a  32 5e 28 69 2b 6d 2f 34  |pai = q*2^(i+m/4|
0001ddb0  30 39 36 29 20 3d 20 28  20 32 5e 28 6d 2f 34 30  |096) = ( 2^(m/40|
0001ddc0  39 36 29 20 2a 20 71 20  29 20 3c 3c 20 69 0a 3b  |96) * q ) << i.;|
0001ddd0  20 63 61 6c 63 20 6f 66  20 32 5e 28 6d 2f 34 30  | calc of 2^(m/40|
0001dde0  39 36 29 20 69 73 20 64  6f 6e 65 20 62 79 20 70  |96) is done by p|
0001ddf0  6f 6c 79 6e 6f 6d 69 61  6c 20 61 70 70 72 6f 78  |olynomial approx|
0001de00  69 6d 61 74 69 6f 6e 20  75 74 69 6c 69 73 69 6e  |imation utilisin|
0001de10  67 20 6d 69 6e 69 6d 61  6c 20 61 63 63 75 72 61  |g minimal accura|
0001de20  63 79 20 6e 65 65 64 65  64 20 74 6f 20 67 69 76  |cy needed to giv|
0001de30  65 20 70 61 69 0a 3b 20  61 63 63 75 72 61 74 65  |e pai.; accurate|
0001de40  20 74 6f 20 6e 65 61 72  65 73 74 20 69 6e 74 65  | to nearest inte|
0001de50  67 65 72 20 28 6d 6f 72  65 20 6f 72 20 6c 65 73  |ger (more or les|
0001de60  73 21 29 2c 20 77 69 74  68 20 6d 75 6c 20 62 79  |s!), with mul by|
0001de70  20 63 6f 6e 73 74 61 6e  74 20 71 20 63 6f 64 65  | constant q code|
0001de80  64 20 64 69 72 65 63 74  6c 79 20 75 73 69 6e 67  |d directly using|
0001de90  20 73 68 69 66 74 65 64  20 41 44 44 73 2c 53 55  | shifted ADDs,SU|
0001dea0  42 73 0a 3b 20 65 74 63  0a 3b 0a 3b 20 77 68 65  |Bs.; etc.;.; whe|
0001deb0  6e 20 75 73 69 6e 67 20  70 69 74 63 68 31 36 2c  |n using pitch16,|
0001dec0  20 61 6c 77 61 79 73 20  72 65 6d 65 6d 62 65 72  | always remember|
0001ded0  20 69 74 20 61 73 73 75  6d 65 73 20 74 68 65 20  | it assumes the |
0001dee0  64 65 66 61 75 6c 74 20  76 61 6c 75 65 20 66 6f  |default value fo|
0001def0  72 20 73 3d 34 38 65 2d  36 20 73 65 63 6f 6e 64  |r s=48e-6 second|
0001df00  73 0a 3b 20 70 69 74 63  68 31 36 20 69 73 20 61  |s.; pitch16 is a|
0001df10  62 6f 75 74 20 31 30 20  74 69 6d 65 73 20 66 61  |bout 10 times fa|
0001df20  73 74 65 72 20 74 68 61  6e 20 53 6f 75 6e 64 5f  |ster than Sound_|
0001df30  50 69 74 63 68 0a 3b 0a  0a 20 20 20 20 20 20 20  |Pitch.;..       |
0001df40  20 45 58 50 4f 52 54 20  20 70 69 74 63 68 31 36  | EXPORT  pitch16|
0001df50  0a 0a 70 68 6e 73 74 61  20 20 44 43 42 20 20 20  |..phnsta  DCB   |
0001df60  20 20 22 70 69 74 63 68  31 36 22 2c 20 30 0a 20  |  "pitch16", 0. |
0001df70  20 20 20 20 20 20 20 41  4c 49 47 4e 0a 70 68 6e  |       ALIGN.phn|
0001df80  65 6e 64 20 20 44 43 44  20 20 20 20 20 26 66 66  |end  DCD     &ff|
0001df90  30 30 30 30 30 30 20 2b  20 70 68 6e 65 6e 64 20  |000000 + phnend |
0001dfa0  2d 20 70 68 6e 73 74 61  0a 0a 70 69 74 63 68 31  |- phnsta..pitch1|
0001dfb0  36 0a 0a 09 43 4d 50 09  61 31 2c 20 23 26 38 30  |6...CMP.a1, #&80|
0001dfc0  30 30 0a 09 4d 4f 56 48  53 53 09 70 63 2c 20 6c  |00..MOVHSS.pc, l|
0001dfd0  72 0a 09 4d 4f 56 09 61  34 2c 20 61 31 2c 20 41  |r..MOV.a4, a1, A|
0001dfe0  53 52 20 23 31 32 0a 09  42 49 43 09 61 31 2c 20  |SR #12..BIC.a1, |
0001dff0  61 31 2c 20 61 34 2c 20  4c 53 4c 20 23 31 32 0a  |a1, a4, LSL #12.|
0001e000  09 4d 4f 56 09 61 31 2c  20 61 31 2c 20 4c 53 4c  |.MOV.a1, a1, LSL|
0001e010  20 23 35 0a 09 53 55 42  09 61 31 2c 20 61 31 2c  | #5..SUB.a1, a1,|
0001e020  20 23 26 31 30 30 30 30  0a 09 41 44 44 09 61 33  | #&10000..ADD.a3|
0001e030  2c 20 61 31 2c 20 61 31  2c 20 4c 53 4c 20 23 32  |, a1, a1, LSL #2|
0001e040  0a 09 41 44 44 09 61 32  2c 20 61 33 2c 20 61 31  |..ADD.a2, a3, a1|
0001e050  2c 20 4c 53 4c 20 23 33  0a 09 41 44 44 09 61 32  |, LSL #3..ADD.a2|
0001e060  2c 20 61 32 2c 20 61 31  2c 20 4c 53 4c 20 23 37  |, a2, a1, LSL #7|
0001e070  0a 09 41 44 44 09 61 32  2c 20 61 32 2c 20 61 33  |..ADD.a2, a2, a3|
0001e080  2c 20 4c 53 4c 20 23 31  31 0a 09 4d 4f 56 09 61  |, LSL #11..MOV.a|
0001e090  32 2c 20 61 32 2c 20 41  53 52 20 23 31 36 0a 09  |2, a2, ASR #16..|
0001e0a0  41 44 44 09 61 32 2c 20  61 32 2c 20 23 26 30 31  |ADD.a2, a2, #&01|
0001e0b0  30 30 30 30 0a 09 41 44  44 09 61 32 2c 20 61 32  |0000..ADD.a2, a2|
0001e0c0  2c 20 23 26 30 30 35 46  30 30 0a 09 41 44 44 09  |, #&005F00..ADD.|
0001e0d0  61 32 2c 20 61 32 2c 20  23 26 30 30 30 30 36 32  |a2, a2, #&000062|
0001e0e0  0a 20 20 20 20 20 20 20  20 4d 4f 56 09 69 70 2c  |.        MOV.ip,|
0001e0f0  20 61 31 0a 09 6d 75 6c  31 36 63 09 61 32 2c 20  | a1..mul16c.a2, |
0001e100  69 70 2c 20 61 32 2c 20  61 33 0a 09 41 44 44 09  |ip, a2, a3..ADD.|
0001e110  61 32 2c 20 61 32 2c 20  23 26 30 37 30 30 30 30  |a2, a2, #&070000|
0001e120  0a 09 41 44 44 09 61 32  2c 20 61 32 2c 20 23 26  |..ADD.a2, a2, #&|
0001e130  30 30 44 37 30 30 0a 09  41 44 44 09 61 32 2c 20  |00D700..ADD.a2, |
0001e140  61 32 2c 20 23 26 30 30  30 30 37 33 0a 20 20 20  |a2, #&000073.   |
0001e150  20 20 20 20 20 4d 4f 56  09 69 70 2c 20 61 31 0a  |     MOV.ip, a1.|
0001e160  09 6d 75 6c 31 36 63 09  61 32 2c 20 69 70 2c 20  |.mul16c.a2, ip, |
0001e170  61 32 2c 20 61 33 0a 09  41 44 44 09 61 32 2c 20  |a2, a3..ADD.a2, |
0001e180  61 32 2c 20 23 26 31 36  30 30 30 30 0a 09 41 44  |a2, #&160000..AD|
0001e190  44 09 61 32 2c 20 61 32  2c 20 23 26 30 30 41 30  |D.a2, a2, #&00A0|
0001e1a0  30 30 0a 09 41 44 44 09  61 32 2c 20 61 32 2c 20  |00..ADD.a2, a2, |
0001e1b0  23 26 30 30 30 30 32 45  0a 09 52 53 42 09 61 31  |#&00002E..RSB.a1|
0001e1c0  2c 20 61 32 2c 20 61 32  2c 20 4c 53 4c 20 23 33  |, a2, a2, LSL #3|
0001e1d0  0a 09 52 53 42 09 61 33  2c 20 61 32 2c 20 61 32  |..RSB.a3, a2, a2|
0001e1e0  2c 20 4c 53 4c 20 23 32  0a 09 41 44 44 09 61 31  |, LSL #2..ADD.a1|
0001e1f0  2c 20 61 31 2c 20 61 33  2c 20 4c 53 4c 20 23 34  |, a1, a3, LSL #4|
0001e200  0a 09 41 44 44 09 61 31  2c 20 61 31 2c 20 61 33  |..ADD.a1, a1, a3|
0001e210  2c 20 4c 53 4c 20 23 38  0a 09 52 53 42 09 61 34  |, LSL #8..RSB.a4|
0001e220  2c 20 61 34 2c 20 23 32  34 0a 09 4d 4f 56 53 09  |, a4, #24..MOVS.|
0001e230  61 31 2c 20 61 31 2c 20  4c 53 52 20 61 34 0a 09  |a1, a1, LSR a4..|
0001e240  41 44 43 09 61 31 2c 20  61 31 2c 20 23 30 0a 20  |ADC.a1, a1, #0. |
0001e250  20 20 20 20 20 20 20 4d  4f 56 53 20 20 20 20 70  |       MOVS    p|
0001e260  63 2c 20 6c 72 0a 0a 0a  0a 09 45 4e 44 0a 1a 82  |c, lr.....END...|
0001e270  73 75 62 72 6f 75 74 73  31 00 00 00 00 b8 4b 00  |subrouts1.....K.|
0001e280  00 89 20 77 61 d2 84 b8  4b 00 00 46 ff ff ff 34  |.. wa...K..F...4|
0001e290  3b 22 bc 03 00 00 00 0a  6d 61 78 31 36 09 2a 09  |;"......max16.*.|
0001e2a0  26 37 66 66 66 66 66 66  66 09 3b 6d 61 78 20 70  |&7fffffff.;max p|
0001e2b0  6f 73 69 74 69 76 65 20  6e 75 6d 62 65 72 20 69  |ositive number i|
0001e2c0  6e 20 31 36 20 62 69 74  20 66 69 78 65 64 20 70  |n 16 bit fixed p|
0001e2d0  6f 69 6e 74 20 66 6f 72  6d 61 74 20 28 32 5e 33  |oint format (2^3|
0001e2e0  31 2d 31 29 2f 36 35 35  33 36 0a 6d 69 6e 31 36  |1-1)/65536.min16|
0001e2f0  09 2a 09 26 38 30 30 30  30 30 30 30 09 3b 6d 69  |.*.&80000000.;mi|
0001e300  6e 20 6e 65 67 61 74 69  76 65 20 6e 75 6d 62 65  |n negative numbe|
0001e310  72 09 09 09 09 20 20 2d  32 5e 33 31 20 20 20 2f  |r....  -2^31   /|
0001e320  36 35 35 33 36 0a 6f 6e  65 09 2a 09 36 35 35 33  |65536.one.*.6553|
0001e330  36 0a 0a 0a 0a 3b 20 72  62 62 63 69 6e 63 0a 3b  |6....; rbbcinc.;|
0001e340  20 61 20 6c 65 61 66 20  41 50 43 53 20 66 75 6e  | a leaf APCS fun|
0001e350  63 74 69 6f 6e 0a 3b 0a  3b 20 43 20 70 72 6f 74  |ction.;.; C prot|
0001e360  6f 74 79 70 65 3a 0a 3b  20 69 6e 74 20 72 62 62  |otype:.; int rbb|
0001e370  63 69 6e 63 28 69 6e 74  20 72 2c 20 69 6e 74 20  |cinc(int r, int |
0001e380  6b 29 0a 3b 0a 3b 20 67  69 76 65 6e 20 6c 69 6d  |k).;.; given lim|
0001e390  69 74 73 20 30 20 3c 3d  20 72 20 3c 20 32 5e 6b  |its 0 <= r < 2^k|
0001e3a0  2c 20 72 65 74 75 72 6e  20 28 72 20 a4 20 31 29  |, return (r . 1)|
0001e3b0  20 77 68 65 72 65 20 a4  20 64 65 6e 6f 74 65 73  | where . denotes|
0001e3c0  20 61 20 72 65 76 65 72  73 65 64 20 62 69 74 20  | a reversed bit |
0001e3d0  6f 72 64 65 72 69 6e 67  20 69 6e 63 72 65 6d 65  |ordering increme|
0001e3e0  6e 74 2c 0a 3b 20 73 75  62 6a 65 63 74 20 74 6f  |nt,.; subject to|
0001e3f0  20 74 68 65 20 73 74 61  74 65 64 20 6c 69 6d 69  | the stated limi|
0001e400  74 73 2e 0a 3b 20 4e 42  20 69 6e 20 74 68 69 73  |ts..; NB in this|
0001e410  20 63 61 73 65 2c 20 66  6f 72 20 74 68 65 20 66  | case, for the f|
0001e420  75 6e 63 74 69 6f 6e 20  66 3a 20 6e 20 2d 3e 20  |unction f: n -> |
0001e430  7b 66 6f 72 20 28 6b 3d  63 3d 30 3b 20 63 3c 6e  |{for (k=c=0; c<n|
0001e440  3b 20 63 2b 2b 2c 20 6b  3d 72 62 62 63 69 6e 63  |; c++, k=rbbcinc|
0001e450  28 6b 2c 20 6c 29 3b 20  72 65 74 75 72 6e 20 6b  |(k, l); return k|
0001e460  3b 7d 2c 0a 3b 20 77 65  20 68 61 76 65 20 66 28  |;},.; we have f(|
0001e470  66 28 6e 29 29 3d 6e 2e  0a 3b 20 4e 42 32 20 61  |f(n))=n..; NB2 a|
0001e480  6c 67 6f 20 72 65 71 75  69 72 65 73 20 32 20 3c  |lgo requires 2 <|
0001e490  3d 20 6b 20 3c 3d 20 33  32 2c 20 62 75 74 20 64  |= k <= 32, but d|
0001e4a0  6f 65 73 6e 27 74 20 63  68 65 63 6b 20 66 6f 72  |oesn't check for|
0001e4b0  20 74 68 69 73 20 2d 20  42 45 57 41 52 45 21 0a  | this - BEWARE!.|
0001e4c0  3b 20 28 66 6f 72 20 6b  3d 31 20 67 65 74 20 6e  |; (for k=1 get n|
0001e4d0  6f 20 61 63 74 69 6f 6e  20 74 61 6b 65 6e 2c 20  |o action taken, |
0001e4e0  77 68 69 6c 65 20 66 6f  72 20 61 6e 79 20 6f 74  |while for any ot|
0001e4f0  68 65 72 20 62 61 64 20  6b 20 67 65 74 20 63 6f  |her bad k get co|
0001e500  64 65 20 65 78 65 63 75  74 65 64 20 61 74 20 75  |de executed at u|
0001e510  6e 69 6e 74 65 6e 64 65  64 20 61 64 64 72 65 73  |nintended addres|
0001e520  73 2c 0a 3b 20 20 68 65  6e 63 65 20 75 6e 70 72  |s,.;  hence unpr|
0001e530  65 64 69 63 74 61 62 6c  65 20 26 20 6c 69 6b 65  |edictable & like|
0001e540  6c 79 20 73 79 73 74 65  6d 20 66 61 74 61 6c 29  |ly system fatal)|
0001e550  2e 0a 3b 0a 0a 20 20 20  20 20 20 20 20 45 58 50  |..;..        EXP|
0001e560  4f 52 54 20 20 72 62 62  63 69 6e 63 0a 0a 72 62  |ORT  rbbcinc..rb|
0001e570  6e 73 74 61 20 20 44 43  42 20 20 20 20 20 22 72  |nsta  DCB     "r|
0001e580  62 62 63 69 6e 63 22 2c  20 30 0a 20 20 20 20 20  |bbcinc", 0.     |
0001e590  20 20 20 41 4c 49 47 4e  0a 72 62 6e 65 6e 64 20  |   ALIGN.rbnend |
0001e5a0  20 44 43 44 20 20 20 20  20 26 66 66 30 30 30 30  | DCD     &ff0000|
0001e5b0  30 30 20 2b 20 72 62 6e  65 6e 64 20 2d 20 72 62  |00 + rbnend - rb|
0001e5c0  6e 73 74 61 0a 0a 72 62  62 63 69 6e 63 0a 0a 20  |nsta..rbbcinc.. |
0001e5d0  20 20 20 20 20 20 20 72  62 62 63 20 20 20 20 61  |       rbbc    a|
0001e5e0  31 2c 20 61 32 2c 20 61  33 0a 20 20 20 20 20 20  |1, a2, a3.      |
0001e5f0  20 20 4d 4f 56 53 20 20  20 20 70 63 2c 20 6c 72  |  MOVS    pc, lr|
0001e600  0a 0a 0a 0a 3b 20 70 6f  77 31 36 0a 3b 20 61 20  |....; pow16.; a |
0001e610  6c 65 61 66 20 41 50 43  53 20 66 75 6e 63 74 69  |leaf APCS functi|
0001e620  6f 6e 0a 3b 0a 3b 20 43  20 70 72 6f 74 6f 74 79  |on.;.; C prototy|
0001e630  70 65 3a 0a 3b 20 69 6e  74 20 70 6f 77 31 36 28  |pe:.; int pow16(|
0001e640  69 6e 74 20 61 2c 20 69  6e 74 20 62 29 0a 3b 0a  |int a, int b).;.|
0001e650  3b 20 72 65 74 75 72 6e  73 20 36 35 35 33 36 20  |; returns 65536 |
0001e660  2a 20 28 61 2f 36 35 35  33 36 29 5e 28 62 2f 36  |* (a/65536)^(b/6|
0001e670  35 35 33 36 29 0a 3b 0a  3b 20 69 73 20 61 62 6f  |5536).;.; is abo|
0001e680  75 74 20 35 20 74 6f 20  34 30 20 74 69 6d 65 73  |ut 5 to 40 times|
0001e690  20 66 61 73 74 65 72 20  74 68 61 6e 20 46 50 45  | faster than FPE|
0001e6a0  6d 75 6c 61 74 6f 72 20  77 6f 72 6b 69 6e 67 20  |mulator working |
0001e6b0  77 69 74 68 20 64 6f 75  62 6c 65 20 66 6c 6f 61  |with double floa|
0001e6c0  74 73 0a 3b 0a 3b 20 6e  62 20 69 66 20 61 3c 30  |ts.;.; nb if a<0|
0001e6d0  20 72 65 71 75 69 72 65  20 62 20 61 6e 20 69 6e  | require b an in|
0001e6e0  74 65 67 65 72 0a 3b 0a  3b 20 6e 62 32 20 75 6e  |teger.;.; nb2 un|
0001e6f0  65 78 70 65 63 74 65 64  20 72 65 74 75 72 6e 20  |expected return |
0001e700  76 61 6c 75 65 73 3a 0a  3b 20 61 3d 62 3d 30 09  |values:.; a=b=0.|
0001e710  09 09 09 72 65 74 75 72  6e 73 20 31 09 61 63 74  |...returns 1.act|
0001e720  75 61 6c 20 76 61 6c 75  65 20 69 6c 6c 20 64 65  |ual value ill de|
0001e730  66 69 6e 65 64 0a 3b 20  61 3c 30 2c 20 62 20 6e  |fined.; a<0, b n|
0001e740  6f 6e 20 69 6e 74 65 67  65 72 09 09 72 65 74 75  |on integer..retu|
0001e750  72 6e 73 20 30 09 61 63  74 75 61 6c 20 76 61 6c  |rns 0.actual val|
0001e760  75 65 20 63 6f 6d 70 6c  65 78 0a 3b 20 61 62 73  |ue complex.; abs|
0001e770  28 62 6c 6e 28 61 29 29  20 3e 20 6d 61 78 31 36  |(bln(a)) > max16|
0001e780  09 09 75 6e 6b 6e 6f 77  6e 20 65 72 72 6f 72 73  |..unknown errors|
0001e790  20 6c 69 6b 65 6c 79 20  28 74 6f 20 61 76 6f 69  | likely (to avoi|
0001e7a0  64 2c 20 72 65 73 74 72  69 63 74 20 62 20 74 6f  |d, restrict b to|
0001e7b0  20 b1 28 32 5e 31 31 29  6f 6e 65 2c 20 72 6f 75  | .(2^11)one, rou|
0001e7c0  67 68 6c 79 29 0a 3b 20  61 3d 30 2c 20 62 3c 30  |ghly).; a=0, b<0|
0001e7d0  09 09 09 72 65 74 75 72  6e 73 20 6d 61 78 31 36  |...returns max16|
0001e7e0  09 61 63 74 75 61 6c 20  76 61 6c 75 65 20 2b 69  |.actual value +i|
0001e7f0  6e 66 69 6e 69 74 79 0a  3b 20 61 20 26 20 62 20  |nfinity.; a & b |
0001e800  73 74 20 72 65 73 75 6c  74 20 6f 75 74 20 6f 66  |st result out of|
0001e810  20 72 61 6e 67 65 09 75  6e 6b 6e 6f 77 6e 20 72  | range.unknown r|
0001e820  65 73 75 6c 74 0a 3b 0a  3b 20 6e 62 20 70 72 65  |esult.;.; nb pre|
0001e830  63 69 73 65 20 6e 61 74  75 72 65 20 6f 66 20 65  |cise nature of e|
0001e840  72 72 6f 72 73 20 66 6f  72 20 6f 74 68 65 72 20  |rrors for other |
0001e850  76 61 6c 75 65 73 20 6e  6f 74 20 79 65 74 20 63  |values not yet c|
0001e860  6f 6e 66 69 72 6d 65 64  20 61 63 63 65 70 74 61  |onfirmed accepta|
0001e870  62 6c 65 2c 20 74 68 6f  75 67 68 20 73 68 6f 75  |ble, though shou|
0001e880  6c 64 20 62 65 20 6f 6b  61 79 20 65 78 63 65 70  |ld be okay excep|
0001e890  74 0a 3b 20 70 65 72 68  61 70 73 20 69 6e 20 65  |t.; perhaps in e|
0001e8a0  78 74 72 65 6d 65 20 63  61 73 65 73 20 28 61 73  |xtreme cases (as|
0001e8b0  20 6f 66 20 32 32 2f 31  31 2f 39 35 29 0a 3b 0a  | of 22/11/95).;.|
0001e8c0  3b 20 46 65 77 20 73 75  62 73 65 71 75 65 6e 74  |; Few subsequent|
0001e8d0  20 6e 6f 74 65 73 20 6f  6e 20 65 72 72 6f 72 3a  | notes on error:|
0001e8e0  0a 3b 0a 3b 20 46 6f 72  20 72 65 73 75 6c 74 20  |.;.; For result |
0001e8f0  6d 75 63 68 20 62 69 67  67 65 72 20 74 68 61 6e  |much bigger than|
0001e900  20 6f 6e 65 3a 0a 3b 20  73 69 6e 63 65 20 65 78  | one:.; since ex|
0001e910  70 31 36 20 6f 6e 6c 79  20 79 69 65 6c 64 73 20  |p16 only yields |
0001e920  31 36 20 73 69 67 6e 69  66 69 63 61 6e 74 20 62  |16 significant b|
0001e930  69 74 73 2c 20 70 6f 77  31 36 20 67 69 76 65 73  |its, pow16 gives|
0001e940  20 6e 6f 20 6d 6f 72 65  20 74 68 61 6e 20 74 68  | no more than th|
0001e950  69 73 2c 20 68 65 6e 63  65 20 66 6f 72 20 72 65  |is, hence for re|
0001e960  73 75 6c 74 20 6d 75 63  68 20 62 69 67 67 65 72  |sult much bigger|
0001e970  0a 3b 20 74 68 61 6e 20  6f 6e 65 20 67 65 74 20  |.; than one get |
0001e980  69 6e 63 72 65 61 73 69  6e 67 20 65 72 72 6f 72  |increasing error|
0001e990  2c 20 65 67 20 66 6f 72  20 61 20 61 72 6f 75 6e  |, eg for a aroun|
0001e9a0  64 20 36 34 6f 6e 65 20  26 20 62 3d 31 2e 30 33  |d 64one & b=1.03|
0001e9b0  31 32 35 6f 6e 65 20 67  65 74 20 65 72 72 6f 72  |125one get error|
0001e9c0  73 20 73 74 20 61 6e 73  77 65 72 20 28 61 72 6f  |s st answer (aro|
0001e9d0  75 6e 64 20 37 33 6f 6e  65 29 0a 3b 20 69 73 20  |und 73one).; is |
0001e9e0  6f 6e 6c 79 20 63 6f 72  72 65 63 74 20 74 6f 20  |only correct to |
0001e9f0  74 6f 70 20 31 35 20 6f  72 20 31 36 20 62 69 74  |top 15 or 16 bit|
0001ea00  73 20 28 69 65 20 65 72  72 6f 72 20 75 70 74 6f  |s (ie error upto|
0001ea10  20 61 72 6f 75 6e 64 20  6f 6e 65 2f 31 30 32 34  | around one/1024|
0001ea20  20 74 6f 20 6f 6e 65 2f  32 35 36 29 0a 3b 0a 3b  | to one/256).;.;|
0001ea30  20 46 6f 72 20 30 3c 3d  61 3c 3d 6f 6e 65 2c 20  | For 0<=a<=one, |
0001ea40  26 20 62 20 65 67 20 32  6f 6e 65 2c 20 33 6f 6e  |& b eg 2one, 3on|
0001ea50  65 2c 20 31 33 2e 31 32  35 6f 6e 65 20 65 74 63  |e, 13.125one etc|
0001ea60  20 67 65 74 20 65 72 72  6f 72 20 74 79 70 69 63  | get error typic|
0001ea70  61 6c 6c 79 20 6e 6f 20  6d 6f 72 65 20 74 68 61  |ally no more tha|
0001ea80  6e 20 69 6e 20 6c 6f 77  20 31 20 6f 72 20 32 20  |n in low 1 or 2 |
0001ea90  62 69 74 73 0a 3b 0a 3b  20 46 6f 72 20 61 20 6c  |bits.;.; For a l|
0001eaa0  61 72 67 65 20 28 73 61  79 20 61 3e 6f 6e 65 29  |arge (say a>one)|
0001eab0  20 26 20 62 3c 30 20 67  65 74 20 65 72 72 6f 72  | & b<0 get error|
0001eac0  20 74 79 70 69 63 61 6c  6c 79 20 69 6e 20 6f 6e  | typically in on|
0001ead0  6c 79 20 6c 6f 77 65 73  74 20 62 69 74 20 6f 72  |ly lowest bit or|
0001eae0  20 6e 6f 20 65 72 72 6f  72 0a 3b 0a 3b 20 20 20  | no error.;.;   |
0001eaf0  2a 2a 2a 2a 20 20 53 74  72 6f 6e 67 6c 79 20 72  |****  Strongly r|
0001eb00  65 63 6f 6d 6d 65 6e 64  20 74 68 69 73 20 66 6e  |ecommend this fn|
0001eb10  20 69 73 20 6f 6e 6c 79  20 75 73 65 64 20 77 68  | is only used wh|
0001eb20  65 72 65 20 61 63 63 75  72 61 63 79 20 6e 6f 74  |ere accuracy not|
0001eb30  20 63 72 75 63 69 61 6c  20 6f 72 20 77 69 74 68  | crucial or with|
0001eb40  20 6c 69 6d 69 74 65 64  20 72 61 6e 67 65 20 2a  | limited range *|
0001eb50  2a 2a 2a 0a 3b 20 20 20  2a 2a 2a 2a 20 20 6f 66  |***.;   ****  of|
0001eb60  20 61 72 67 75 6d 65 6e  74 73 20 77 68 65 72 65  | arguments where|
0001eb70  20 79 6f 75 20 63 61 6e  20 63 6f 6e 66 69 72 6d  | you can confirm|
0001eb80  20 79 6f 75 72 73 65 6c  66 20 61 63 63 75 72 61  | yourself accura|
0001eb90  63 79 20 69 6e 20 74 68  61 74 20 72 61 6e 67 65  |cy in that range|
0001eba0  20 69 73 20 61 64 65 71  75 61 74 65 2e 20 20 20  | is adequate.   |
0001ebb0  20 20 20 20 20 20 20 2a  2a 2a 2a 0a 3b 0a 0a 20  |       ****.;.. |
0001ebc0  20 20 20 20 20 20 20 45  58 50 4f 52 54 20 20 70  |       EXPORT  p|
0001ebd0  6f 77 31 36 0a 0a 70 77  6e 73 74 61 20 20 44 43  |ow16..pwnsta  DC|
0001ebe0  42 20 20 20 20 20 22 70  6f 77 31 36 22 2c 20 30  |B     "pow16", 0|
0001ebf0  0a 20 20 20 20 20 20 20  20 41 4c 49 47 4e 0a 70  |.        ALIGN.p|
0001ec00  77 6e 65 6e 64 20 20 44  43 44 20 20 20 20 20 26  |wnend  DCD     &|
0001ec10  66 66 30 30 30 30 30 30  20 2b 20 70 77 6e 65 6e  |ff000000 + pwnen|
0001ec20  64 20 2d 20 70 77 6e 73  74 61 0a 0a 70 6f 77 31  |d - pwnsta..pow1|
0001ec30  36 0a 0a 09 43 4d 50 09  61 32 2c 20 23 30 0a 09  |6...CMP.a2, #0..|
0001ec40  4d 4f 56 45 51 09 61 31  2c 20 23 26 31 30 30 30  |MOVEQ.a1, #&1000|
0001ec50  30 09 09 3b 69 66 20 62  3d 30 20 72 65 74 75 72  |0..;if b=0 retur|
0001ec60  6e 20 6f 6e 65 20 64 69  72 65 63 74 6c 79 0a 09  |n one directly..|
0001ec70  4d 4f 56 45 51 53 09 70  63 2c 20 6c 72 0a 09 43  |MOVEQS.pc, lr..C|
0001ec80  4d 50 09 61 32 2c 20 23  26 31 30 30 30 30 0a 09  |MP.a2, #&10000..|
0001ec90  4d 4f 56 45 51 53 09 70  63 2c 20 6c 72 09 09 09  |MOVEQS.pc, lr...|
0001eca0  3b 68 61 6e 64 6c 65 20  74 72 69 76 61 6c 20 63  |;handle trival c|
0001ecb0  61 73 65 20 62 3d 6f 6e  65 20 64 69 72 65 63 74  |ase b=one direct|
0001ecc0  6c 79 2c 20 62 79 20 72  65 74 75 72 6e 69 6e 67  |ly, by returning|
0001ecd0  20 61 0a 09 43 4d 50 09  61 31 2c 20 23 30 0a 09  | a..CMP.a1, #0..|
0001ece0  4d 4f 56 47 54 09 69 70  2c 20 23 30 0a 09 42 47  |MOVGT.ip, #0..BG|
0001ecf0  54 09 70 6f 77 31 36 5f  61 70 6f 73 0a 09 42 4e  |T.pow16_apos..BN|
0001ed00  45 09 70 6f 77 31 36 5f  61 6e 65 67 0a 09 43 4d  |E.pow16_aneg..CM|
0001ed10  50 09 61 32 2c 20 23 30  0a 09 4d 4f 56 09 61 31  |P.a2, #0..MOV.a1|
0001ed20  2c 20 23 30 09 09 09 3b  69 66 20 61 3d 30 20 61  |, #0...;if a=0 a|
0001ed30  6e 64 20 62 3e 30 20 72  65 74 75 72 6e 20 30 0a  |nd b>0 return 0.|
0001ed40  09 4d 4f 56 4c 54 09 61  31 2c 20 23 6d 61 78 31  |.MOVLT.a1, #max1|
0001ed50  36 2b 31 09 09 3b 69 66  20 61 3d 30 20 61 6e 64  |6+1..;if a=0 and|
0001ed60  20 62 3c 30 20 72 65 74  75 72 6e 20 6d 61 78 31  | b<0 return max1|
0001ed70  36 0a 09 53 55 42 4c 54  09 61 31 2c 20 61 31 2c  |6..SUBLT.a1, a1,|
0001ed80  20 23 31 0a 09 4d 4f 56  53 09 70 63 2c 20 6c 72  | #1..MOVS.pc, lr|
0001ed90  0a 70 6f 77 31 36 5f 61  6e 65 67 0a 09 4d 4f 56  |.pow16_aneg..MOV|
0001eda0  53 09 69 70 2c 20 61 32  2c 20 4c 53 4c 20 23 31  |S.ip, a2, LSL #1|
0001edb0  36 0a 09 4d 4f 56 4e 45  09 61 31 2c 20 23 30 09  |6..MOVNE.a1, #0.|
0001edc0  09 09 3b 69 66 20 61 3c  30 20 61 6e 64 20 62 20  |..;if a<0 and b |
0001edd0  6e 6f 74 20 61 6e 20 69  6e 74 65 67 65 72 20 72  |not an integer r|
0001ede0  65 74 75 72 6e 20 30 0a  09 4d 4f 56 4e 45 53 09  |eturn 0..MOVNES.|
0001edf0  70 63 2c 20 6c 72 0a 09  41 4e 44 09 69 70 2c 20  |pc, lr..AND.ip, |
0001ee00  61 32 2c 20 23 26 31 30  30 30 30 09 09 3b 69 66  |a2, #&10000..;if|
0001ee10  20 61 3c 30 20 74 68 65  6e 20 67 6f 20 6f 6e 20  | a<0 then go on |
0001ee20  74 6f 20 65 76 61 6c 75  61 74 65 20 28 36 35 35  |to evaluate (655|
0001ee30  33 36 20 2a 20 28 2d 61  2f 36 35 35 33 36 29 5e  |36 * (-a/65536)^|
0001ee40  28 62 2f 36 35 35 33 36  29 29 0a 09 52 53 42 09  |(b/65536))..RSB.|
0001ee50  61 31 2c 20 61 31 2c 20  23 30 09 09 3b 77 69 74  |a1, a1, #0..;wit|
0001ee60  68 20 73 69 67 6e 20 73  75 62 73 65 71 75 65 6e  |h sign subsequen|
0001ee70  74 6c 79 20 66 6f 72 63  65 64 20 74 6f 20 2b 20  |tly forced to + |
0001ee80  6f 72 20 2d 20 61 63 63  6f 72 64 69 6e 67 20 74  |or - according t|
0001ee90  6f 20 77 68 65 74 68 65  72 20 62 2f 6f 6e 65 0a  |o whether b/one.|
0001eea0  70 6f 77 31 36 5f 61 70  6f 73 09 09 09 09 3b 69  |pow16_apos....;i|
0001eeb0  73 20 65 76 65 6e 20 6f  72 20 6f 64 64 20 28 20  |s even or odd ( |
0001eec0  65 67 20 28 2d 32 2e 35  29 5e 33 20 69 73 20 6a  |eg (-2.5)^3 is j|
0001eed0  75 73 74 20 28 2d 31 29  5e 33 20 2a 20 32 2e 35  |ust (-1)^3 * 2.5|
0001eee0  5e 33 20 29 0a 09 53 54  4d 46 44 09 73 70 21 2c  |^3 )..STMFD.sp!,|
0001eef0  20 7b 76 31 2c 20 76 32  2c 20 6c 72 7d 0a 09 4d  | {v1, v2, lr}..M|
0001ef00  4f 56 09 76 31 2c 20 69  70 09 09 09 3b 6e 6f 77  |OV.v1, ip...;now|
0001ef10  20 65 76 61 6c 75 61 74  65 20 28 36 35 35 33 36  | evaluate (65536|
0001ef20  20 2a 20 28 61 2f 36 35  35 33 36 29 5e 28 62 2f  | * (a/65536)^(b/|
0001ef30  36 35 35 33 36 29 29 2c  20 66 6f 72 20 61 3e 30  |65536)), for a>0|
0001ef40  0a 09 4d 4f 56 09 76 32  2c 20 61 32 09 09 09 3b  |..MOV.v2, a2...;|
0001ef50  76 69 61 20 65 78 70 31  36 28 20 6c 6e 31 36 28  |via exp16( ln16(|
0001ef60  61 29 20 2a 20 62 20 2f  20 36 35 35 33 36 20 29  |a) * b / 65536 )|
0001ef70  0a 09 42 4c 09 6c 6e 31  36 09 09 09 3b 6e 62 20  |..BL.ln16...;nb |
0001ef80  74 68 69 73 20 75 73 65  73 20 70 72 6f 70 65 72  |this uses proper|
0001ef90  74 79 20 74 68 61 74 20  65 78 70 28 62 2e 6c 6f  |ty that exp(b.lo|
0001efa0  67 28 61 29 29 20 3d 20  65 78 70 28 6c 6f 67 28  |g(a)) = exp(log(|
0001efb0  61 5e 62 29 29 20 3d 20  61 5e 62 0a 20 20 20 20  |a^b)) = a^b.    |
0001efc0  20 20 20 20 6d 75 6c 31  36 09 61 31 2c 20 76 32  |    mul16.a1, v2|
0001efd0  2c 20 61 31 2c 20 61 32  2c 20 61 33 2c 20 61 34  |, a1, a2, a3, a4|
0001efe0  0a 09 42 4c 09 65 78 70  31 36 0a 09 43 4d 50 09  |..BL.exp16..CMP.|
0001eff0  76 31 2c 20 23 30 0a 09  52 53 42 4e 45 09 61 31  |v1, #0..RSBNE.a1|
0001f000  2c 20 61 31 2c 20 23 30  09 09 3b 66 69 6e 61 6c  |, a1, #0..;final|
0001f010  6c 79 20 73 77 69 74 63  68 20 73 69 67 6e 20 6f  |ly switch sign o|
0001f020  6e 20 61 6e 73 77 65 72  20 69 66 20 6f 72 69 67  |n answer if orig|
0001f030  69 6e 61 6c 6c 79 20 61  3c 30 20 61 6e 64 20 62  |inally a<0 and b|
0001f040  2f 6f 6e 65 20 77 61 73  20 6f 64 64 0a 09 4c 44  |/one was odd..LD|
0001f050  4d 46 44 09 73 70 21 2c  20 7b 76 31 2c 20 76 32  |MFD.sp!, {v1, v2|
0001f060  2c 20 70 63 7d 5e 0a 0a  0a 0a 3b 20 6c 6e 31 36  |, pc}^....; ln16|
0001f070  0a 3b 20 61 20 6c 65 61  66 20 41 50 43 53 20 66  |.; a leaf APCS f|
0001f080  75 6e 63 74 69 6f 6e 0a  3b 0a 3b 20 43 20 70 72  |unction.;.; C pr|
0001f090  6f 74 6f 74 79 70 65 3a  0a 3b 20 69 6e 74 20 6c  |ototype:.; int l|
0001f0a0  6e 31 36 28 69 6e 74 20  61 29 0a 3b 0a 3b 20 72  |n16(int a).;.; r|
0001f0b0  65 74 75 72 6e 73 20 36  35 35 33 36 20 2a 20 6c  |eturns 65536 * l|
0001f0c0  6e 20 28 61 2f 36 35 35  33 36 29 0a 3b 0a 3b 20  |n (a/65536).;.; |
0001f0d0  69 73 20 61 62 6f 75 74  20 33 30 20 74 69 6d 65  |is about 30 time|
0001f0e0  73 20 66 61 73 74 65 72  20 74 68 61 6e 20 46 50  |s faster than FP|
0001f0f0  45 6d 75 6c 61 74 6f 72  20 77 6f 72 6b 69 6e 67  |Emulator working|
0001f100  20 77 69 74 68 20 64 6f  75 62 6c 65 20 66 6c 6f  | with double flo|
0001f110  61 74 73 0a 3b 0a 0a 20  20 20 20 20 20 20 20 45  |ats.;..        E|
0001f120  58 50 4f 52 54 20 20 6c  6e 31 36 0a 0a 6c 6e 6e  |XPORT  ln16..lnn|
0001f130  73 74 61 20 20 44 43 42  20 20 20 20 20 22 6c 6e  |sta  DCB     "ln|
0001f140  31 36 22 2c 20 30 0a 20  20 20 20 20 20 20 20 41  |16", 0.        A|
0001f150  4c 49 47 4e 0a 6c 6e 6e  65 6e 64 20 20 44 43 44  |LIGN.lnnend  DCD|
0001f160  20 20 20 20 20 26 66 66  30 30 30 30 30 30 20 2b  |     &ff000000 +|
0001f170  20 6c 6e 6e 65 6e 64 20  2d 20 6c 6e 6e 73 74 61  | lnnend - lnnsta|
0001f180  0a 0a 6c 6e 31 36 0a 0a  09 43 4d 50 09 61 31 2c  |..ln16...CMP.a1,|
0001f190  20 23 30 09 09 09 3b 69  66 20 61 3c 3d 30 20 72  | #0...;if a<=0 r|
0001f1a0  65 74 75 72 6e 20 6d 69  6e 31 36 0a 09 4d 4f 56  |eturn min16..MOV|
0001f1b0  4c 45 09 61 31 2c 20 23  6d 69 6e 31 36 0a 09 4d  |LE.a1, #min16..M|
0001f1c0  4f 56 4c 45 53 09 70 63  2c 20 6c 72 09 09 09 3b  |OVLES.pc, lr...;|
0001f1d0  65 6c 73 65 20 6d 6f 73  74 20 73 69 67 6e 69 66  |else most signif|
0001f1e0  69 63 61 6e 74 20 62 69  74 20 69 73 20 62 65 74  |icant bit is bet|
0001f1f0  77 65 65 6e 20 62 33 30  20 26 20 62 30 0a 09 47  |ween b30 & b0..G|
0001f200  42 4c 41 09 63 6f 75 6e  74 65 72 0a 63 6f 75 6e  |BLA.counter.coun|
0001f210  74 65 72 09 53 45 54 41  09 33 30 09 09 09 3b 66  |ter.SETA.30...;f|
0001f220  69 6e 64 20 6d 73 62 20  26 20 73 74 6f 72 65 20  |ind msb & store |
0001f230  28 6d 73 62 5f 69 6e 64  65 78 20 2d 20 31 35 29  |(msb_index - 15)|
0001f240  20 69 6e 20 61 34 0a 09  57 48 49 4c 45 09 63 6f  | in a4..WHILE.co|
0001f250  75 6e 74 65 72 20 3e 20  31 0a 09 54 53 54 09 61  |unter > 1..TST.a|
0001f260  31 2c 20 23 31 3c 3c 63  6f 75 6e 74 65 72 0a 09  |1, #1<<counter..|
0001f270  4d 4f 56 4e 45 09 61 34  2c 20 23 63 6f 75 6e 74  |MOVNE.a4, #count|
0001f280  65 72 2d 31 35 0a 09 42  4e 45 09 6c 6e 31 36 5f  |er-15..BNE.ln16_|
0001f290  67 6f 74 6d 73 62 0a 63  6f 75 6e 74 65 72 09 53  |gotmsb.counter.S|
0001f2a0  45 54 41 09 63 6f 75 6e  74 65 72 2d 31 0a 09 57  |ETA.counter-1..W|
0001f2b0  45 4e 44 0a 09 54 53 54  09 61 31 2c 20 23 31 3c  |END..TST.a1, #1<|
0001f2c0  3c 31 0a 09 4d 4f 56 4e  45 09 61 34 2c 20 23 31  |<1..MOVNE.a4, #1|
0001f2d0  2d 31 35 0a 09 4d 4f 56  45 51 09 61 34 2c 20 23  |-15..MOVEQ.a4, #|
0001f2e0  30 2d 31 35 0a 6c 6e 31  36 5f 67 6f 74 6d 73 62  |0-15.ln16_gotmsb|
0001f2f0  09 09 09 09 3b 69 66 20  77 65 20 73 65 74 20 7a  |....;if we set z|
0001f300  20 3d 20 61 31 2f 28 32  5e 61 34 29 2c 20 77 69  | = a1/(2^a4), wi|
0001f310  6c 6c 20 68 61 76 65 20  6c 6e 28 61 2f 6f 6e 65  |ll have ln(a/one|
0001f320  29 20 3d 20 6c 6e 28 7a  2f 6f 6e 65 20 2a 20 32  |) = ln(z/one * 2|
0001f330  5e 61 34 29 0a 09 43 4d  50 09 61 34 2c 20 23 32  |^a4)..CMP.a4, #2|
0001f340  09 09 09 3b 09 09 09 09  09 20 20 20 20 20 20 3d  |...;.....      =|
0001f350  20 6c 6e 28 7a 2f 6f 6e  65 29 20 2b 20 61 34 2a  | ln(z/one) + a4*|
0001f360  6c 6e 32 0a 09 53 55 42  47 54 09 61 32 2c 20 61  |ln2..SUBGT.a2, a|
0001f370  34 2c 20 23 32 09 09 3b  77 69 74 68 20 7a 20 69  |4, #2..;with z i|
0001f380  6e 20 72 61 6e 67 65 20  5b 30 2e 35 2c 31 29 0a  |n range [0.5,1).|
0001f390  09 4d 4f 56 47 54 09 61  31 2c 20 61 31 2c 20 4c  |.MOVGT.a1, a1, L|
0001f3a0  53 52 20 61 32 09 09 3b  73 6f 20 63 61 6c 63 20  |SR a2..;so calc |
0001f3b0  61 31 20 3d 20 34 2a 28  20 61 31 2f 28 32 5e 61  |a1 = 4*( a1/(2^a|
0001f3c0  34 29 20 29 20 2d 20 33  2a 6f 6e 65 0a 09 52 53  |4) ) - 3*one..RS|
0001f3d0  42 4c 45 09 61 32 2c 20  61 34 2c 20 23 32 09 09  |BLE.a2, a4, #2..|
0001f3e0  3b 77 68 69 63 68 20 70  75 74 73 20 61 31 20 69  |;which puts a1 i|
0001f3f0  6e 20 72 61 6e 67 65 20  b1 6f 6e 65 20 73 75 69  |n range .one sui|
0001f400  74 61 62 6c 65 20 66 6f  72 20 61 70 70 72 6f 78  |table for approx|
0001f410  69 6d 61 74 69 6f 6e 20  62 79 20 70 6f 6c 79 0a  |imation by poly.|
0001f420  09 4d 4f 56 4c 45 09 61  31 2c 20 61 31 2c 20 4c  |.MOVLE.a1, a1, L|
0001f430  53 4c 20 61 32 09 09 3b  6c 65 61 76 69 6e 67 20  |SL a2..;leaving |
0001f440  75 73 20 74 6f 20 63 61  6c 63 75 6c 61 74 65 20  |us to calculate |
0001f450  61 34 2a 6f 6e 65 2a 6c  6e 32 20 2b 20 6f 6e 65  |a4*one*ln2 + one|
0001f460  2a 6c 6e 28 28 61 31 2b  33 6f 6e 65 29 2f 34 6f  |*ln((a1+3one)/4o|
0001f470  6e 65 29 0a 09 53 55 42  09 61 31 2c 20 61 31 2c  |ne)..SUB.a1, a1,|
0001f480  20 23 26 33 30 30 30 30  0a 09 41 44 44 09 61 32  | #&30000..ADD.a2|
0001f490  2c 20 61 31 2c 20 61 31  2c 20 4c 53 4c 20 23 32  |, a1, a1, LSL #2|
0001f4a0  09 3b 73 74 61 72 74 20  70 6f 6c 79 6e 6f 6d 69  |.;start polynomi|
0001f4b0  61 6c 20 61 70 70 72 6f  78 69 6d 61 74 69 6f 6e  |al approximation|
0001f4c0  20 63 61 6c 63 75 6c 61  74 69 6f 6e 20 6f 6e 20  | calculation on |
0001f4d0  61 31 0a 09 52 53 42 09  61 32 2c 20 61 32 2c 20  |a1..RSB.a2, a2, |
0001f4e0  61 31 2c 20 4c 53 4c 20  23 31 30 0a 09 4d 4f 56  |a1, LSL #10..MOV|
0001f4f0  09 61 32 2c 20 61 32 2c  20 41 53 52 20 23 31 36  |.a2, a2, ASR #16|
0001f500  09 09 3b 66 6f 72 20 64  65 74 61 69 6c 73 20 6f  |..;for details o|
0001f510  66 20 68 6f 77 20 74 68  69 73 20 77 6f 72 6b 73  |f how this works|
0001f520  20 73 65 65 20 63 6f 6d  6d 65 6e 74 73 20 61 67  | see comments ag|
0001f530  61 69 6e 73 74 20 73 69  6d 69 6c 61 72 20 63 6f  |ainst similar co|
0001f540  64 65 0a 09 53 55 42 09  61 32 2c 20 61 32 2c 20  |de..SUB.a2, a2, |
0001f550  23 26 30 30 30 65 30 30  09 3b 69 6e 20 65 78 70  |#&000e00.;in exp|
0001f560  31 36 20 66 75 6e 63 74  69 6f 6e 2c 20 64 69 72  |16 function, dir|
0001f570  65 63 74 6c 79 20 62 65  6c 6f 77 20 74 68 69 73  |ectly below this|
0001f580  20 66 75 6e 63 74 69 6f  6e 0a 09 53 55 42 09 61  | function..SUB.a|
0001f590  32 2c 20 61 32 2c 20 23  26 30 30 30 30 33 34 0a  |2, a2, #&000034.|
0001f5a0  20 20 20 20 20 20 20 20  4d 4f 56 09 69 70 2c 20  |        MOV.ip, |
0001f5b0  61 31 0a 09 6d 75 6c 31  36 63 09 61 32 2c 20 69  |a1..mul16c.a2, i|
0001f5c0  70 2c 20 61 32 2c 20 61  33 0a 09 41 44 44 09 61  |p, a2, a3..ADD.a|
0001f5d0  32 2c 20 61 32 2c 20 23  26 30 30 33 32 30 30 0a  |2, a2, #&003200.|
0001f5e0  09 41 44 44 09 61 32 2c  20 61 32 2c 20 23 26 30  |.ADD.a2, a2, #&0|
0001f5f0  30 30 30 33 31 0a 20 20  20 20 20 20 20 20 4d 4f  |00031.        MO|
0001f600  56 09 69 70 2c 20 61 31  0a 09 6d 75 6c 31 36 63  |V.ip, a1..mul16c|
0001f610  09 61 32 2c 20 69 70 2c  20 61 32 2c 20 61 33 0a  |.a2, ip, a2, a3.|
0001f620  09 53 55 42 09 61 32 2c  20 61 32 2c 20 23 26 30  |.SUB.a2, a2, #&0|
0001f630  30 65 32 30 30 0a 09 53  55 42 09 61 32 2c 20 61  |0e200..SUB.a2, a|
0001f640  32 2c 20 23 26 30 30 30  30 66 32 0a 20 20 20 20  |2, #&0000f2.    |
0001f650  20 20 20 20 4d 4f 56 09  69 70 2c 20 61 31 0a 09  |    MOV.ip, a1..|
0001f660  6d 75 6c 31 36 63 09 61  32 2c 20 69 70 2c 20 61  |mul16c.a2, ip, a|
0001f670  32 2c 20 61 33 0a 09 41  44 44 09 61 32 2c 20 61  |2, a3..ADD.a2, a|
0001f680  32 2c 20 23 26 30 35 30  30 30 30 0a 09 41 44 44  |2, #&050000..ADD|
0001f690  09 61 32 2c 20 61 32 2c  20 23 26 30 30 35 35 30  |.a2, a2, #&00550|
0001f6a0  30 0a 09 41 44 44 09 61  32 2c 20 61 32 2c 20 23  |0..ADD.a2, a2, #|
0001f6b0  26 30 30 30 30 36 35 0a  20 20 20 20 20 20 20 20  |&000065.        |
0001f6c0  4d 4f 56 09 69 70 2c 20  61 31 0a 09 6d 75 6c 31  |MOV.ip, a1..mul1|
0001f6d0  36 63 09 61 32 2c 20 69  70 2c 20 61 32 2c 20 61  |6c.a2, ip, a2, a|
0001f6e0  33 0a 09 53 55 42 09 61  32 2c 20 61 32 2c 20 23  |3..SUB.a2, a2, #|
0001f6f0  26 30 34 30 30 30 30 0a  09 53 55 42 09 61 32 2c  |&040000..SUB.a2,|
0001f700  20 61 32 2c 20 23 26 30  30 39 61 30 30 09 3b 65  | a2, #&009a00.;e|
0001f710  6e 64 20 6f 66 20 70 6f  6c 79 6e 6f 6d 69 61 6c  |nd of polynomial|
0001f720  20 61 70 70 72 6f 78 69  6d 61 74 69 6f 6e 20 63  | approximation c|
0001f730  61 6c 63 75 6c 61 74 69  6f 6e 0a 09 53 55 42 09  |alculation..SUB.|
0001f740  61 31 2c 20 61 32 2c 20  23 26 30 30 30 30 35 39  |a1, a2, #&000059|
0001f750  09 3b 61 31 20 6e 6f 77  20 68 6f 6c 64 73 20 28  |.;a1 now holds (|
0001f760  32 5e 32 30 29 2a 28 61  70 70 72 6f 78 69 6d 61  |2^20)*(approxima|
0001f770  74 65 64 20 76 61 6c 75  65 29 0a 09 41 44 44 09  |ted value)..ADD.|
0001f780  69 70 2c 20 61 34 2c 20  61 34 2c 20 4c 53 4c 20  |ip, a4, a4, LSL |
0001f790  23 31 0a 09 41 44 44 09  61 32 2c 20 69 70 2c 20  |#1..ADD.a2, ip, |
0001f7a0  61 34 2c 20 4c 53 4c 20  23 33 09 3b 6e 6f 77 20  |a4, LSL #3.;now |
0001f7b0  61 64 64 20 69 6e 20 74  68 65 20 61 34 2a 6f 6e  |add in the a4*on|
0001f7c0  65 2a 6c 6e 32 20 74 65  72 6d 20 75 73 69 6e 67  |e*ln2 term using|
0001f7d0  20 61 6e 20 65 78 70 6c  69 63 69 74 20 62 69 6e  | an explicit bin|
0001f7e0  61 72 79 20 65 78 70 61  6e 73 69 6f 6e 0a 09 41  |ary expansion..A|
0001f7f0  44 44 09 61 32 2c 20 61  34 2c 20 61 32 2c 20 4c  |DD.a2, a4, a2, L|
0001f800  53 4c 20 23 34 09 3b 6f  66 20 61 70 70 72 6f 78  |SL #4.;of approx|
0001f810  69 6d 61 74 65 6c 79 20  6f 6e 65 2a 6c 6e 32 0a  |imately one*ln2.|
0001f820  09 52 53 42 09 61 33 2c  20 61 34 2c 20 61 34 2c  |.RSB.a3, a4, a4,|
0001f830  20 4c 53 4c 20 23 33 0a  09 41 44 44 09 61 32 2c  | LSL #3..ADD.a2,|
0001f840  20 61 33 2c 20 61 32 2c  20 4c 53 4c 20 23 34 09  | a3, a2, LSL #4.|
0001f850  3b 6e 62 20 77 65 20 61  63 74 75 61 6c 6c 79 20  |;nb we actually |
0001f860  61 64 64 20 61 70 70 72  6f 78 20 28 32 5e 32 30  |add approx (2^20|
0001f870  29 2a 6c 6e 32 2c 20 26  20 74 68 65 6e 20 64 69  |)*ln2, & then di|
0001f880  76 69 64 65 20 62 79 20  31 36 0a 09 41 44 44 09  |vide by 16..ADD.|
0001f890  61 32 2c 20 61 34 2c 20  61 32 2c 20 4c 53 4c 20  |a2, a4, a2, LSL |
0001f8a0  23 33 09 3b 74 6f 20 72  65 64 75 63 65 20 74 72  |#3.;to reduce tr|
0001f8b0  75 6e 63 61 74 69 6f 6e  20 65 72 72 6f 72 0a 09  |uncation error..|
0001f8c0  41 44 44 09 61 31 2c 20  61 31 2c 20 61 32 2c 20  |ADD.a1, a1, a2, |
0001f8d0  4c 53 4c 20 23 35 0a 09  41 44 44 09 61 31 2c 20  |LSL #5..ADD.a1, |
0001f8e0  61 31 2c 20 69 70 2c 20  41 53 52 20 23 31 0a 09  |a1, ip, ASR #1..|
0001f8f0  4d 4f 56 09 61 31 2c 20  61 31 2c 20 41 53 52 20  |MOV.a1, a1, ASR |
0001f900  23 34 0a 20 20 20 20 20  20 20 20 4d 4f 56 53 20  |#4.        MOVS |
0001f910  20 20 20 70 63 2c 20 6c  72 0a 0a 0a 0a 3b 20 65  |   pc, lr....; e|
0001f920  78 70 31 36 0a 3b 20 61  20 6c 65 61 66 20 41 50  |xp16.; a leaf AP|
0001f930  43 53 20 66 75 6e 63 74  69 6f 6e 0a 3b 0a 3b 20  |CS function.;.; |
0001f940  43 20 70 72 6f 74 6f 74  79 70 65 3a 0a 3b 20 69  |C prototype:.; i|
0001f950  6e 74 20 65 78 70 31 36  28 69 6e 74 20 61 29 0a  |nt exp16(int a).|
0001f960  3b 0a 3b 20 72 65 74 75  72 6e 73 20 36 35 35 33  |;.; returns 6553|
0001f970  36 20 2a 20 65 78 70 20  28 61 2f 36 35 35 33 36  |6 * exp (a/65536|
0001f980  29 0a 3b 0a 3b 20 69 73  20 61 62 6f 75 74 20 34  |).;.; is about 4|
0001f990  35 20 74 69 6d 65 73 20  66 61 73 74 65 72 20 74  |5 times faster t|
0001f9a0  68 61 6e 20 46 50 45 6d  75 6c 61 74 6f 72 20 77  |han FPEmulator w|
0001f9b0  6f 72 6b 69 6e 67 20 77  69 74 68 20 64 6f 75 62  |orking with doub|
0001f9c0  6c 65 20 66 6c 6f 61 74  73 0a 3b 0a 0a 20 20 20  |le floats.;..   |
0001f9d0  20 20 20 20 20 45 58 50  4f 52 54 20 20 65 78 70  |     EXPORT  exp|
0001f9e0  31 36 0a 0a 65 70 6e 73  74 61 20 20 44 43 42 20  |16..epnsta  DCB |
0001f9f0  20 20 20 20 22 65 78 70  31 36 22 2c 20 30 0a 20  |    "exp16", 0. |
0001fa00  20 20 20 20 20 20 20 41  4c 49 47 4e 0a 65 70 6e  |       ALIGN.epn|
0001fa10  65 6e 64 20 20 44 43 44  20 20 20 20 20 26 66 66  |end  DCD     &ff|
0001fa20  30 30 30 30 30 30 20 2b  20 65 70 6e 65 6e 64 20  |000000 + epnend |
0001fa30  2d 20 65 70 6e 73 74 61  0a 0a 65 78 70 31 36 09  |- epnsta..exp16.|
0001fa40  09 09 09 09 3b 74 68 69  73 20 66 6e 20 72 65 74  |....;this fn ret|
0001fa50  75 72 6e 73 20 61 20 76  61 6c 75 65 20 77 69 74  |urns a value wit|
0001fa60  68 20 6f 6e 6c 79 20 61  62 6f 75 74 20 31 37 20  |h only about 17 |
0001fa70  73 69 67 6e 69 66 69 63  61 6e 74 20 62 69 6e 61  |significant bina|
0001fa80  72 79 0a 09 09 09 09 09  3b 64 69 67 69 74 73 20  |ry......;digits |
0001fa90  2d 20 65 67 20 66 6f 72  20 27 61 27 20 73 6d 61  |- eg for 'a' sma|
0001faa0  6c 6c 20 6f 72 20 6e 65  67 61 74 69 76 65 2c 20  |ll or negative, |
0001fab0  67 65 74 20 6e 65 61 72  20 6d 61 78 69 6d 61 6c  |get near maximal|
0001fac0  20 61 63 63 75 72 61 63  79 0a 09 09 09 09 09 3b  | accuracy......;|
0001fad0  62 75 74 20 66 6f 72 20  27 61 27 20 6c 61 72 67  |but for 'a' larg|
0001fae0  65 20 28 75 70 74 6f 20  61 72 6f 75 6e 64 20 31  |e (upto around 1|
0001faf0  30 6f 6e 65 29 20 77 68  65 72 65 20 65 78 70 20  |0one) where exp |
0001fb00  68 61 73 20 76 61 6c 75  65 0a 09 43 4d 50 09 61  |has value..CMP.a|
0001fb10  31 2c 20 23 31 32 2a 36  35 35 33 36 09 09 3b 7e  |1, #12*65536..;~|
0001fb20  32 30 30 30 30 6f 6e 65  20 63 61 6e 20 67 65 74  |20000one can get|
0001fb30  20 65 72 72 6f 72 20 75  70 74 6f 20 72 6f 75 67  | error upto roug|
0001fb40  68 6c 79 20 30 2e 31 6f  6e 65 0a 09 4d 4f 56 47  |hly 0.1one..MOVG|
0001fb50  54 09 61 31 2c 20 23 6d  61 78 31 36 2b 31 0a 09  |T.a1, #max16+1..|
0001fb60  53 55 42 47 54 09 61 31  2c 20 61 31 2c 20 23 31  |SUBGT.a1, a1, #1|
0001fb70  0a 09 4d 4f 56 47 54 53  09 70 63 2c 20 6c 72 0a  |..MOVGTS.pc, lr.|
0001fb80  09 43 4d 50 09 61 31 2c  20 23 2d 31 32 2a 36 35  |.CMP.a1, #-12*65|
0001fb90  35 33 36 0a 09 4d 4f 56  4c 54 09 61 31 2c 20 23  |536..MOVLT.a1, #|
0001fba0  30 0a 09 4d 4f 56 4c 54  53 09 70 63 2c 20 6c 72  |0..MOVLTS.pc, lr|
0001fbb0  09 09 09 3b 6f 74 68 65  72 77 69 73 65 20 6b 6e  |...;otherwise kn|
0001fbc0  6f 77 20 7c 61 7c 20 3c  3d 20 31 32 6f 6e 65 0a  |ow |a| <= 12one.|
0001fbd0  09 52 53 42 09 61 32 2c  20 61 31 2c 20 61 31 2c  |.RSB.a2, a1, a1,|
0001fbe0  20 4c 53 4c 20 23 33 09  3b 6e 6f 77 20 73 65 74  | LSL #3.;now set|
0001fbf0  20 61 20 3d 20 61 2f 6c  6e 32 20 75 73 69 6e 67  | a = a/ln2 using|
0001fc00  20 65 78 70 6c 69 63 69  74 20 6d 75 6c 20 62 79  | explicit mul by|
0001fc10  20 32 5f 31 2e 30 31 31  31 30 30 30 31 30 31 30  | 2_1.01110001010|
0001fc20  31 30 31 30 30 30 31 31  31 0a 09 41 44 44 09 61  |101000111..ADD.a|
0001fc30  33 2c 20 61 31 2c 20 61  31 2c 20 4c 53 4c 20 23  |3, a1, a1, LSL #|
0001fc40  32 09 3b 6e 62 20 6f 6e  6c 79 20 6e 65 65 64 20  |2.;nb only need |
0001fc50  31 73 74 20 32 30 20 64  69 67 69 74 73 20 67 69  |1st 20 digits gi|
0001fc60  76 65 6e 20 72 61 6e 67  65 20 6f 6e 20 61 0a 09  |ven range on a..|
0001fc70  41 44 44 09 61 33 2c 20  61 33 2c 20 61 33 2c 20  |ADD.a3, a3, a3, |
0001fc80  4c 53 4c 20 23 34 09 3b  6e 62 32 20 74 68 69 73  |LSL #4.;nb2 this|
0001fc90  20 63 61 6c 63 20 69 73  20 61 70 70 72 6f 78 69  | calc is approxi|
0001fca0  6d 61 74 65 20 6f 6e 6c  79 2c 20 74 68 6f 75 67  |mate only, thoug|
0001fcb0  68 20 77 69 6c 6c 20 75  73 75 61 6c 6c 79 20 79  |h will usually y|
0001fcc0  69 65 6c 64 20 61 6e 0a  09 41 44 44 09 61 31 2c  |ield an..ADD.a1,|
0001fcd0  20 61 32 2c 20 61 31 2c  20 4c 53 4c 20 23 34 09  | a2, a1, LSL #4.|
0001fce0  3b 61 6e 73 77 65 72 20  63 6f 72 72 65 63 74 20  |;answer correct |
0001fcf0  74 6f 20 74 68 65 20 73  74 6f 72 65 64 20 31 36  |to the stored 16|
0001fd00  20 62 69 6e 61 72 79 20  70 6c 61 63 65 73 20 28  | binary places (|
0001fd10  65 6c 73 65 20 65 72 72  6f 72 20 6f 6e 65 2f 36  |else error one/6|
0001fd20  35 35 33 36 29 0a 09 41  44 44 09 61 31 2c 20 61  |5536)..ADD.a1, a|
0001fd30  31 2c 20 61 33 2c 20 41  53 52 20 23 31 30 0a 09  |1, a3, ASR #10..|
0001fd40  41 44 44 09 61 31 2c 20  61 31 2c 20 61 32 2c 20  |ADD.a1, a1, a2, |
0001fd50  41 53 52 20 23 31 36 09  3b 74 68 75 73 20 65 78  |ASR #16.;thus ex|
0001fd60  70 28 6f 72 69 67 69 6e  61 6c 20 61 29 20 20 3d  |p(original a)  =|
0001fd70  20 65 78 70 28 6e 65 77  20 61 20 2a 20 6c 6e 32  | exp(new a * ln2|
0001fd80  29 20 3d 20 32 5e 28 6e  65 77 20 61 29 2c 20 65  |) = 2^(new a), e|
0001fd90  76 61 6c 27 64 20 62 65  6c 6f 77 3a 0a 09 41 44  |val'd below:..AD|
0001fda0  44 09 61 31 2c 20 61 31  2c 20 23 38 0a 09 4d 4f  |D.a1, a1, #8..MO|
0001fdb0  56 09 61 31 2c 20 61 31  2c 20 41 53 52 20 23 34  |V.a1, a1, ASR #4|
0001fdc0  09 09 3b 63 61 6c 63 20  61 20 3d 20 61 2f 6c 6e  |..;calc a = a/ln|
0001fdd0  32 20 63 6f 6d 70 6c 65  74 65 0a 09 4d 4f 56 09  |2 complete..MOV.|
0001fde0  61 34 2c 20 61 31 2c 20  41 53 52 20 23 31 36 09  |a4, a1, ASR #16.|
0001fdf0  09 3b 61 34 20 6e 6f 77  20 68 6f 6c 64 73 20 69  |.;a4 now holds i|
0001fe00  6e 74 65 67 65 72 20 63  6f 6d 70 6f 6e 65 6e 74  |nteger component|
0001fe10  20 6f 66 20 61 0a 09 42  49 43 09 61 31 2c 20 61  | of a..BIC.a1, a|
0001fe20  31 2c 20 61 34 2c 20 4c  53 4c 20 23 31 36 09 3b  |1, a4, LSL #16.;|
0001fe30  61 31 20 6e 6f 77 20 68  6f 6c 64 73 20 66 72 61  |a1 now holds fra|
0001fe40  63 74 69 6f 6e 61 6c 20  63 6f 6d 70 6f 6e 65 6e  |ctional componen|
0001fe50  74 20 69 6e 20 72 61 6e  67 65 20 5b 30 2c 31 29  |t in range [0,1)|
0001fe60  2a 6f 6e 65 0a 09 43 4d  50 09 61 34 2c 20 23 31  |*one..CMP.a4, #1|
0001fe70  35 09 09 09 3b 64 6f 20  61 6e 6f 74 68 65 72 20  |5...;do another |
0001fe80  63 68 65 63 6b 20 6f 6e  20 61 20 74 6f 20 65 6e  |check on a to en|
0001fe90  73 75 72 65 20 65 78 70  28 61 29 20 69 73 20 69  |sure exp(a) is i|
0001fea0  6e 20 72 61 6e 67 65 0a  09 4d 4f 56 47 45 09 61  |n range..MOVGE.a|
0001feb0  31 2c 20 23 6d 61 78 31  36 2b 31 09 09 3b 26 20  |1, #max16+1..;& |
0001fec0  69 66 20 6e 6f 74 20 72  65 74 75 72 6e 20 6d 61  |if not return ma|
0001fed0  78 69 6d 61 6c 20 6f 72  20 6d 69 6e 69 6d 61 6c  |ximal or minimal|
0001fee0  20 76 61 6c 75 65 20 61  73 20 61 70 70 72 6f 70  | value as approp|
0001fef0  72 69 61 74 65 0a 09 53  55 42 47 45 09 61 31 2c  |riate..SUBGE.a1,|
0001ff00  20 61 31 2c 20 23 31 0a  09 4d 4f 56 47 45 09 70  | a1, #1..MOVGE.p|
0001ff10  63 2c 20 6c 72 0a 09 43  4d 50 09 61 34 2c 20 23  |c, lr..CMP.a4, #|
0001ff20  2d 31 36 0a 09 4d 4f 56  4c 54 09 61 31 2c 20 23  |-16..MOVLT.a1, #|
0001ff30  30 0a 09 4d 4f 56 4c 54  53 09 70 63 2c 20 6c 72  |0..MOVLTS.pc, lr|
0001ff40  09 09 09 3b 65 6c 73 65  20 6e 65 65 64 20 74 6f  |...;else need to|
0001ff50  20 72 65 74 75 72 6e 20  76 61 6c 75 65 20 28 6f  | return value (o|
0001ff60  6e 65 20 2a 20 32 5e 28  61 34 20 2b 20 61 31 2f  |ne * 2^(a4 + a1/|
0001ff70  6f 6e 65 29 29 0a 09 4d  4f 56 09 61 31 2c 20 61  |one))..MOV.a1, a|
0001ff80  31 2c 20 4c 53 4c 20 23  31 09 09 3b 09 09 09 20  |1, LSL #1..;... |
0001ff90  3d 20 28 6f 6e 65 20 2a  20 32 5e 28 61 31 2f 6f  |= (one * 2^(a1/o|
0001ffa0  6e 65 29 20 2a 20 32 5e  61 34 29 0a 09 53 55 42  |ne) * 2^a4)..SUB|
0001ffb0  09 61 31 2c 20 61 31 2c  20 23 26 31 30 30 30 30  |.a1, a1, #&10000|
0001ffc0  09 09 3b 63 6f 6e 76 65  72 74 20 61 31 20 74 6f  |..;convert a1 to|
0001ffd0  20 6c 69 65 20 69 6e 20  5b 2d 31 2c 2d 31 29 2c  | lie in [-1,-1),|
0001ffe0  20 74 68 65 6e 20 61 70  70 6c 79 20 70 6f 6c 79  | then apply poly|
0001fff0  20 61 70 70 72 6f 78 69  6d 61 74 69 6f 6e 3a 0a  | approximation:.|
00020000  09 52 53 42 09 61 32 2c  20 61 31 2c 20 61 31 2c  |.RSB.a2, a1, a1,|
00020010  20 4c 53 4c 20 23 33 0a  09 41 44 44 09 61 32 2c  | LSL #3..ADD.a2,|
00020020  20 61 31 2c 20 61 32 2c  20 4c 53 4c 20 23 36 0a  | a1, a2, LSL #6.|
00020030  09 4d 4f 56 09 61 32 2c  20 61 32 2c 20 41 53 52  |.MOV.a2, a2, ASR|
00020040  20 23 31 35 09 09 3b 61  32 20 3d 20 30 2e 30 30  | #15..;a2 = 0.00|
00020050  30 38 35 36 31 2a 28 32  5e 32 30 29 2a 28 61 31  |08561*(2^20)*(a1|
00020060  2f 6f 6e 65 29 0a 09 41  44 44 09 61 32 2c 20 61  |/one)..ADD.a2, a|
00020070  32 2c 20 23 26 30 30 32  38 30 30 0a 09 41 44 44  |2, #&002800..ADD|
00020080  09 61 32 2c 20 61 32 2c  20 23 26 30 30 30 30 37  |.a2, a2, #&00007|
00020090  65 09 3b 61 32 20 3d 20  30 2e 30 30 30 38 35 36  |e.;a2 = 0.000856|
000200a0  31 2a 28 32 5e 32 30 29  2a 28 61 31 2f 6f 6e 65  |1*(2^20)*(a1/one|
000200b0  29 20 2b 20 30 2e 30 30  39 38 38 35 37 2a 28 32  |) + 0.0098857*(2|
000200c0  5e 32 30 29 0a 20 20 20  20 20 20 20 20 4d 4f 56  |^20).        MOV|
000200d0  09 69 70 2c 20 61 31 0a  09 6d 75 6c 31 36 63 09  |.ip, a1..mul16c.|
000200e0  61 32 2c 20 69 70 2c 20  61 32 2c 20 61 33 09 09  |a2, ip, a2, a3..|
000200f0  3b 61 32 20 3d 20 30 2e  30 30 30 38 35 36 31 2a  |;a2 = 0.0008561*|
00020100  28 32 5e 32 30 29 2a 28  61 31 2f 6f 6e 65 29 5e  |(2^20)*(a1/one)^|
00020110  32 20 2b 20 30 2e 30 30  39 38 38 35 37 2a 28 32  |2 + 0.0098857*(2|
00020120  5e 32 30 29 2a 28 61 31  2f 6f 6e 65 29 0a 09 41  |^20)*(a1/one)..A|
00020130  44 44 09 61 32 2c 20 61  32 2c 20 23 26 30 31 35  |DD.a2, a2, #&015|
00020140  30 30 30 0a 09 41 44 44  09 61 32 2c 20 61 32 2c  |000..ADD.a2, a2,|
00020150  20 23 26 30 30 30 62 65  30 09 3b 20 65 74 63 0a  | #&000be0.; etc.|
00020160  20 20 20 20 20 20 20 20  4d 4f 56 09 69 70 2c 20  |        MOV.ip, |
00020170  61 31 0a 09 6d 75 6c 31  36 63 09 61 32 2c 20 69  |a1..mul16c.a2, i|
00020180  70 2c 20 61 32 2c 20 61  33 0a 09 41 44 44 09 61  |p, a2, a3..ADD.a|
00020190  32 2c 20 61 32 2c 20 23  26 30 37 30 30 30 30 0a  |2, a2, #&070000.|
000201a0  09 41 44 44 09 61 32 2c  20 61 32 2c 20 23 26 30  |.ADD.a2, a2, #&0|
000201b0  30 64 37 30 30 0a 09 41  44 44 09 61 32 2c 20 61  |0d700..ADD.a2, a|
000201c0  32 2c 20 23 26 30 30 30  30 37 65 0a 20 20 20 20  |2, #&00007e.    |
000201d0  20 20 20 20 4d 4f 56 09  69 70 2c 20 61 31 0a 09  |    MOV.ip, a1..|
000201e0  6d 75 6c 31 36 63 09 61  32 2c 20 69 70 2c 20 61  |mul16c.a2, ip, a|
000201f0  32 2c 20 61 33 09 09 3b  75 6e 74 69 6c 20 77 65  |2, a3..;until we|
00020200  20 68 61 76 65 0a 09 41  44 44 09 61 32 2c 20 61  | have..ADD.a2, a|
00020210  32 2c 20 23 26 31 36 30  30 30 30 09 3b 61 32 20  |2, #&160000.;a2 |
00020220  3d 20 28 32 5e 32 30 29  20 28 20 30 2e 30 30 30  |= (2^20) ( 0.000|
00020230  38 35 36 31 28 61 31 2f  6f 6e 65 29 5e 34 20 2b  |8561(a1/one)^4 +|
00020240  20 30 2e 30 30 39 38 38  35 37 28 61 31 2f 6f 6e  | 0.0098857(a1/on|
00020250  65 29 5e 33 20 2b 0a 09  41 44 44 09 61 32 2c 20  |e)^3 +..ADD.a2, |
00020260  61 32 2c 20 23 26 30 30  61 30 30 30 09 3b 09 20  |a2, #&00a000.;. |
00020270  20 20 20 20 20 20 30 2e  30 38 34 39 33 30 31 28  |      0.0849301(|
00020280  61 31 2f 6f 6e 65 29 5e  32 20 2b 20 30 2e 34 39  |a1/one)^2 + 0.49|
00020290  30 31 31 30 36 28 61 31  2f 6f 6e 65 29 20 2b 0a  |01106(a1/one) +.|
000202a0  09 41 44 44 09 61 32 2c  20 61 32 2c 20 23 26 30  |.ADD.a2, a2, #&0|
000202b0  30 30 30 61 37 09 3b 09  20 20 20 20 20 20 20 31  |000a7.;.       1|
000202c0  2e 31 34 31 34 32 31 33  38 28 61 31 2f 6f 6e 65  |.14142138(a1/one|
000202d0  29 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |)               |
000202e0  20 20 20 20 20 20 20 20  20 20 20 20 29 0a 09 4d  |            )..M|
000202f0  4f 56 09 61 31 2c 20 61  32 2c 20 41 53 52 20 23  |OV.a1, a2, ASR #|
00020300  34 09 09 3b 6e 6f 77 20  64 69 76 69 64 65 20 62  |4..;now divide b|
00020310  79 20 31 36 20 72 65 6d  6f 76 69 6e 67 20 6d 6f  |y 16 removing mo|
00020320  73 74 20 74 72 75 6e 63  61 74 69 6f 6e 20 65 72  |st truncation er|
00020330  72 6f 72 20 66 72 6f 6d  20 61 62 6f 76 65 20 63  |ror from above c|
00020340  61 6c 63 73 2c 0a 09 43  4d 50 09 61 34 2c 20 23  |alcs,..CMP.a4, #|
00020350  30 09 09 09 3b 6c 65 61  76 69 6e 67 20 61 32 20  |0...;leaving a2 |
00020360  3d 20 28 32 5e 31 36 29  2a 28 61 70 70 72 6f 78  |= (2^16)*(approx|
00020370  69 6d 61 74 65 64 20 76  61 6c 75 65 29 0a 09 52  |imated value)..R|
00020380  53 42 4c 54 09 61 34 2c  20 61 34 2c 20 23 30 0a  |SBLT.a4, a4, #0.|
00020390  09 4d 4f 56 4c 54 09 61  31 2c 20 61 31 2c 20 41  |.MOVLT.a1, a1, A|
000203a0  53 52 20 61 34 09 09 3b  66 69 6e 61 6c 6c 79 20  |SR a4..;finally |
000203b0  63 61 72 72 79 20 6f 75  74 20 74 68 65 20 28 61  |carry out the (a|
000203c0  32 20 3d 20 61 32 20 2a  20 32 5e 61 34 29 20 73  |2 = a2 * 2^a4) s|
000203d0  74 65 70 0a 09 4d 4f 56  4c 54 53 09 70 63 2c 20  |tep..MOVLTS.pc, |
000203e0  6c 72 0a 09 4d 4f 56 53  09 61 31 2c 20 61 31 2c  |lr..MOVS.a1, a1,|
000203f0  20 4c 53 4c 20 61 34 0a  09 4d 4f 56 4d 49 09 61  | LSL a4..MOVMI.a|
00020400  31 2c 20 23 6d 61 78 31  36 2b 31 0a 09 53 55 42  |1, #max16+1..SUB|
00020410  4d 49 09 61 31 2c 20 61  31 2c 20 23 31 0a 20 20  |MI.a1, a1, #1.  |
00020420  20 20 20 20 20 20 4d 4f  56 53 20 20 20 20 70 63  |      MOVS    pc|
00020430  2c 20 6c 72 0a 0a 0a 0a  3b 20 63 6f 73 31 36 0a  |, lr....; cos16.|
00020440  3b 20 61 20 6c 65 61 66  20 41 50 43 53 20 66 75  |; a leaf APCS fu|
00020450  6e 63 74 69 6f 6e 0a 3b  0a 3b 20 43 20 70 72 6f  |nction.;.; C pro|
00020460  74 6f 74 79 70 65 3a 0a  3b 20 69 6e 74 20 63 6f  |totype:.; int co|
00020470  73 31 36 28 69 6e 74 20  61 29 0a 3b 0a 3b 20 72  |s16(int a).;.; r|
00020480  65 74 75 72 6e 73 20 36  35 35 33 36 20 2a 20 63  |eturns 65536 * c|
00020490  6f 73 20 28 28 61 2f 36  35 35 33 36 29 28 70 69  |os ((a/65536)(pi|
000204a0  2f 32 29 29 0a 3b 0a 3b  20 69 73 20 61 62 6f 75  |/2)).;.; is abou|
000204b0  74 20 34 34 20 74 69 6d  65 73 20 66 61 73 74 65  |t 44 times faste|
000204c0  72 20 74 68 61 6e 20 46  50 45 6d 75 6c 61 74 6f  |r than FPEmulato|
000204d0  72 20 77 6f 72 6b 69 6e  67 20 77 69 74 68 20 64  |r working with d|
000204e0  6f 75 62 6c 65 20 66 6c  6f 61 74 73 0a 3b 0a 0a  |ouble floats.;..|
000204f0  20 20 20 20 20 20 20 20  45 58 50 4f 52 54 20 20  |        EXPORT  |
00020500  63 6f 73 31 36 0a 0a 63  73 6e 73 74 61 20 20 44  |cos16..csnsta  D|
00020510  43 42 20 20 20 20 20 22  63 6f 73 31 36 22 2c 20  |CB     "cos16", |
00020520  30 0a 20 20 20 20 20 20  20 20 41 4c 49 47 4e 0a  |0.        ALIGN.|
00020530  63 73 6e 65 6e 64 20 20  44 43 44 20 20 20 20 20  |csnend  DCD     |
00020540  26 66 66 30 30 30 30 30  30 20 2b 20 63 73 6e 65  |&ff000000 + csne|
00020550  6e 64 20 2d 20 63 73 6e  73 74 61 0a 0a 63 6f 73  |nd - csnsta..cos|
00020560  31 36 0a 0a 09 45 4f 52  09 61 34 2c 20 61 31 2c  |16...EOR.a4, a1,|
00020570  20 61 31 2c 20 4c 53 4c  20 23 31 09 3b 73 69 6e  | a1, LSL #1.;sin|
00020580  63 65 20 63 6f 73 20 69  73 20 70 65 72 69 6f 64  |ce cos is period|
00020590  69 63 20 61 6e 64 20 63  6f 73 28 28 61 2f 36 35  |ic and cos((a/65|
000205a0  35 33 36 29 28 70 69 2f  32 29 29 20 68 61 73 20  |536)(pi/2)) has |
000205b0  70 65 72 69 6f 64 20 34  2a 6f 6e 65 0a 09 54 53  |period 4*one..TS|
000205c0  54 09 61 34 2c 20 23 26  32 30 30 30 30 09 09 3b  |T.a4, #&20000..;|
000205d0  65 76 61 6c 20 69 73 20  73 69 6d 70 6c 65 72 20  |eval is simpler |
000205e0  74 68 61 6e 20 66 6f 72  20 6c 6e 20 6f 72 20 65  |than for ln or e|
000205f0  78 70 3a 0a 09 4d 4f 56  09 61 34 2c 20 23 30 09  |xp:..MOV.a4, #0.|
00020600  09 09 3b 77 65 20 6e 65  65 64 20 6f 6e 6c 79 20  |..;we need only |
00020610  74 6f 20 74 72 75 6e 63  61 74 65 20 61 20 74 6f  |to truncate a to|
00020620  20 5b 30 2c 34 6f 6e 65  29 20 61 6e 64 20 74 68  | [0,4one) and th|
00020630  65 6e 20 61 70 70 72 6f  78 20 74 68 65 20 66 75  |en approx the fu|
00020640  6e 63 74 69 6f 6e 0a 09  4d 4f 56 4e 45 09 61 34  |nction..MOVNE.a4|
00020650  2c 20 23 31 09 09 09 3b  76 69 61 20 61 20 70 6f  |, #1...;via a po|
00020660  6c 79 0a 09 54 53 54 09  61 31 2c 20 23 26 31 30  |ly..TST.a1, #&10|
00020670  30 30 30 0a 09 4d 4f 56  09 61 31 2c 20 61 31 2c  |000..MOV.a1, a1,|
00020680  20 4c 53 4c 20 23 31 36  09 09 3b 69 6e 20 66 61  | LSL #16..;in fa|
00020690  63 74 20 66 75 72 74 68  65 72 20 73 79 6d 6d 65  |ct further symme|
000206a0  74 72 69 65 73 20 69 6e  20 63 6f 73 20 6f 76 65  |tries in cos ove|
000206b0  72 20 74 68 69 73 20 72  61 6e 67 65 20 61 6c 6c  |r this range all|
000206c0  6f 77 20 75 73 20 74 6f  0a 09 4d 4f 56 09 61 31  |ow us to..MOV.a1|
000206d0  2c 20 61 31 2c 20 4c 53  52 20 23 31 36 09 09 3b  |, a1, LSR #16..;|
000206e0  61 63 74 75 61 6c 6c 79  20 6f 6e 6c 79 20 61 70  |actually only ap|
000206f0  70 72 6f 78 69 6d 61 74  65 20 66 75 6e 63 74 69  |proximate functi|
00020700  6f 6e 20 6f 76 65 72 20  72 61 6e 67 65 20 5b 30  |on over range [0|
00020710  2c 6f 6e 65 29 0a 09 52  53 42 45 51 09 61 31 2c  |,one)..RSBEQ.a1,|
00020720  20 61 31 2c 20 23 26 31  30 30 30 30 09 09 3b 61  | a1, #&10000..;a|
00020730  6e 64 20 72 65 63 6f 6e  73 74 72 75 63 74 20 69  |nd reconstruct i|
00020740  74 20 6f 76 65 72 20 72  65 6d 61 69 6e 64 65 72  |t over remainder|
00020750  20 6f 66 20 72 61 6e 67  65 20 5b 6f 6e 65 2c 34  | of range [one,4|
00020760  6f 6e 65 29 20 66 72 6f  6d 20 74 68 61 74 20 70  |one) from that p|
00020770  61 72 74 0a 09 4d 4f 56  09 61 31 2c 20 61 31 2c  |art..MOV.a1, a1,|
00020780  20 4c 53 4c 20 23 31 09  09 3b 65 67 20 20 63 6f  | LSL #1..;eg  co|
00020790  73 28 20 28 61 2f 36 35  35 33 36 29 28 70 69 2f  |s( (a/65536)(pi/|
000207a0  32 29 20 29 20 66 6f 72  20 61 20 69 6e 20 5b 32  |2) ) for a in [2|
000207b0  6f 6e 65 2c 20 33 6f 6e  65 29 0a 09 53 55 42 09  |one, 3one)..SUB.|
000207c0  61 31 2c 20 61 31 2c 20  23 26 31 30 30 30 30 09  |a1, a1, #&10000.|
000207d0  09 3b 20 3d 20 2d 63 6f  73 28 20 28 28 61 2d 32  |.; = -cos( ((a-2|
000207e0  6f 6e 65 29 2f 36 35 35  33 36 29 28 70 69 2f 32  |one)/65536)(pi/2|
000207f0  29 20 29 0a 09 52 53 42  09 61 32 2c 20 61 31 2c  |) )..RSB.a2, a1,|
00020800  20 61 31 2c 20 4c 53 4c  20 23 33 0a 09 41 44 44  | a1, LSL #3..ADD|
00020810  09 61 32 2c 20 61 31 2c  20 61 32 2c 20 4c 53 4c  |.a2, a1, a2, LSL|
00020820  20 23 38 0a 09 4d 4f 56  09 61 32 2c 20 61 32 2c  | #8..MOV.a2, a2,|
00020830  20 41 53 52 20 23 31 36  0a 09 41 44 44 09 61 32  | ASR #16..ADD.a2|
00020840  2c 20 61 32 2c 20 23 26  30 30 32 63 30 30 0a 09  |, a2, #&002c00..|
00020850  41 44 44 09 61 32 2c 20  61 32 2c 20 23 26 30 30  |ADD.a2, a2, #&00|
00020860  30 30 38 36 0a 20 20 20  20 20 20 20 20 4d 4f 56  |0086.        MOV|
00020870  09 69 70 2c 20 61 31 0a  09 6d 75 6c 31 36 63 09  |.ip, a1..mul16c.|
00020880  61 32 2c 20 69 70 2c 20  61 32 2c 20 61 33 0a 09  |a2, ip, a2, a3..|
00020890  53 55 42 09 61 32 2c 20  61 32 2c 20 23 26 30 30  |SUB.a2, a2, #&00|
000208a0  65 39 30 30 0a 09 53 55  42 09 61 32 2c 20 61 32  |e900..SUB.a2, a2|
000208b0  2c 20 23 26 30 30 30 30  62 64 0a 20 20 20 20 20  |, #&0000bd.     |
000208c0  20 20 20 4d 4f 56 09 69  70 2c 20 61 31 0a 09 6d  |   MOV.ip, a1..m|
000208d0  75 6c 31 36 63 09 61 32  2c 20 69 70 2c 20 61 32  |ul16c.a2, ip, a2|
000208e0  2c 20 61 33 0a 09 53 55  42 09 61 32 2c 20 61 32  |, a3..SUB.a2, a2|
000208f0  2c 20 23 26 30 33 30 30  30 30 0a 09 53 55 42 09  |, #&030000..SUB.|
00020900  61 32 2c 20 61 32 2c 20  23 26 30 30 37 63 30 30  |a2, a2, #&007c00|
00020910  0a 09 53 55 42 09 61 32  2c 20 61 32 2c 20 23 26  |..SUB.a2, a2, #&|
00020920  30 30 30 30 63 36 0a 20  20 20 20 20 20 20 20 4d  |0000c6.        M|
00020930  4f 56 09 69 70 2c 20 61  31 0a 09 6d 75 6c 31 36  |OV.ip, a1..mul16|
00020940  63 09 61 32 2c 20 69 70  2c 20 61 32 2c 20 61 33  |c.a2, ip, a2, a3|
00020950  0a 09 41 44 44 09 61 32  2c 20 61 32 2c 20 23 26  |..ADD.a2, a2, #&|
00020960  30 38 30 30 30 30 0a 09  41 44 44 09 61 32 2c 20  |080000..ADD.a2, |
00020970  61 32 2c 20 23 26 30 30  45 32 30 30 0a 09 41 44  |a2, #&00E200..AD|
00020980  44 09 61 32 2c 20 61 32  2c 20 23 26 30 30 30 30  |D.a2, a2, #&0000|
00020990  42 44 0a 20 20 20 20 20  20 20 20 4d 4f 56 09 69  |BD.        MOV.i|
000209a0  70 2c 20 61 31 0a 09 6d  75 6c 31 36 63 09 61 32  |p, a1..mul16c.a2|
000209b0  2c 20 69 70 2c 20 61 32  2c 20 61 33 0a 09 41 44  |, ip, a2, a3..AD|
000209c0  44 09 61 32 2c 20 61 32  2c 20 23 26 30 62 30 30  |D.a2, a2, #&0b00|
000209d0  30 30 0a 09 41 44 44 09  61 32 2c 20 61 32 2c 20  |00..ADD.a2, a2, |
000209e0  23 26 30 30 35 30 30 30  0a 09 41 44 44 09 61 32  |#&005000..ADD.a2|
000209f0  2c 20 61 32 2c 20 23 26  30 30 30 30 35 30 0a 09  |, a2, #&000050..|
00020a00  4d 4f 56 09 61 31 2c 20  61 32 2c 20 41 53 52 20  |MOV.a1, a2, ASR |
00020a10  23 34 0a 09 54 53 54 09  61 34 2c 20 23 31 0a 09  |#4..TST.a4, #1..|
00020a20  52 53 42 4e 45 09 61 31  2c 20 61 31 2c 20 23 30  |RSBNE.a1, a1, #0|
00020a30  0a 20 20 20 20 20 20 20  20 4d 4f 56 53 20 20 20  |.        MOVS   |
00020a40  20 70 63 2c 20 6c 72 0a  0a 0a 0a 3b 20 73 69 6e  | pc, lr....; sin|
00020a50  31 36 0a 3b 20 61 20 6c  65 61 66 20 41 50 43 53  |16.; a leaf APCS|
00020a60  20 66 75 6e 63 74 69 6f  6e 0a 3b 0a 3b 20 43 20  | function.;.; C |
00020a70  70 72 6f 74 6f 74 79 70  65 3a 0a 3b 20 69 6e 74  |prototype:.; int|
00020a80  20 73 69 6e 31 36 28 69  6e 74 20 61 29 0a 3b 0a  | sin16(int a).;.|
00020a90  3b 20 72 65 74 75 72 6e  73 20 36 35 35 33 36 20  |; returns 65536 |
00020aa0  2a 20 73 69 6e 20 28 28  61 2f 36 35 35 33 36 29  |* sin ((a/65536)|
00020ab0  28 70 69 2f 32 29 29 0a  3b 0a 3b 20 69 73 20 61  |(pi/2)).;.; is a|
00020ac0  62 6f 75 74 20 34 34 20  74 69 6d 65 73 20 66 61  |bout 44 times fa|
00020ad0  73 74 65 72 20 74 68 61  6e 20 46 50 45 6d 75 6c  |ster than FPEmul|
00020ae0  61 74 6f 72 20 77 6f 72  6b 69 6e 67 20 77 69 74  |ator working wit|
00020af0  68 20 64 6f 75 62 6c 65  20 66 6c 6f 61 74 73 0a  |h double floats.|
00020b00  3b 0a 0a 20 20 20 20 20  20 20 20 45 58 50 4f 52  |;..        EXPOR|
00020b10  54 20 20 73 69 6e 31 36  0a 0a 73 6e 6e 73 74 61  |T  sin16..snnsta|
00020b20  20 20 44 43 42 20 20 20  20 20 22 73 69 6e 31 36  |  DCB     "sin16|
00020b30  22 2c 20 30 0a 20 20 20  20 20 20 20 20 41 4c 49  |", 0.        ALI|
00020b40  47 4e 0a 73 6e 6e 65 6e  64 20 20 44 43 44 20 20  |GN.snnend  DCD  |
00020b50  20 20 20 26 66 66 30 30  30 30 30 30 20 2b 20 73  |   &ff000000 + s|
00020b60  6e 6e 65 6e 64 20 2d 20  73 6e 6e 73 74 61 0a 0a  |nnend - snnsta..|
00020b70  73 69 6e 31 36 0a 0a 09  54 53 54 09 61 31 2c 20  |sin16...TST.a1, |
00020b80  23 26 32 30 30 30 30 09  09 3b 65 76 61 6c 20 6f  |#&20000..;eval o|
00020b90  66 20 73 69 6e 20 69 73  20 61 6c 6d 6f 73 74 20  |f sin is almost |
00020ba0  69 64 65 6e 74 69 63 61  6c 20 74 6f 20 74 68 61  |identical to tha|
00020bb0  74 20 6f 66 20 63 6f 73  0a 09 4d 4f 56 09 61 34  |t of cos..MOV.a4|
00020bc0  2c 20 23 30 0a 09 4d 4f  56 4e 45 09 61 34 2c 20  |, #0..MOVNE.a4, |
00020bd0  23 31 0a 09 54 53 54 09  61 31 2c 20 23 26 31 30  |#1..TST.a1, #&10|
00020be0  30 30 30 0a 09 4d 4f 56  09 61 31 2c 20 61 31 2c  |000..MOV.a1, a1,|
00020bf0  20 4c 53 4c 20 23 31 36  0a 09 4d 4f 56 09 61 31  | LSL #16..MOV.a1|
00020c00  2c 20 61 31 2c 20 4c 53  52 20 23 31 36 0a 09 52  |, a1, LSR #16..R|
00020c10  53 42 4e 45 09 61 31 2c  20 61 31 2c 20 23 26 31  |SBNE.a1, a1, #&1|
00020c20  30 30 30 30 0a 09 4d 4f  56 09 61 31 2c 20 61 31  |0000..MOV.a1, a1|
00020c30  2c 20 4c 53 4c 20 23 31  0a 09 53 55 42 09 61 31  |, LSL #1..SUB.a1|
00020c40  2c 20 61 31 2c 20 23 26  31 30 30 30 30 0a 09 52  |, a1, #&10000..R|
00020c50  53 42 09 61 32 2c 20 61  31 2c 20 61 31 2c 20 4c  |SB.a2, a1, a1, L|
00020c60  53 4c 20 23 33 0a 09 41  44 44 09 61 32 2c 20 61  |SL #3..ADD.a2, a|
00020c70  31 2c 20 61 32 2c 20 4c  53 4c 20 23 38 0a 09 4d  |1, a2, LSL #8..M|
00020c80  4f 56 09 61 32 2c 20 61  32 2c 20 41 53 52 20 23  |OV.a2, a2, ASR #|
00020c90  31 36 0a 09 41 44 44 09  61 32 2c 20 61 32 2c 20  |16..ADD.a2, a2, |
00020ca0  23 26 30 30 32 63 30 30  0a 09 41 44 44 09 61 32  |#&002c00..ADD.a2|
00020cb0  2c 20 61 32 2c 20 23 26  30 30 30 30 38 36 0a 20  |, a2, #&000086. |
00020cc0  20 20 20 20 20 20 20 4d  4f 56 09 69 70 2c 20 61  |       MOV.ip, a|
00020cd0  31 0a 09 6d 75 6c 31 36  63 09 61 32 2c 20 69 70  |1..mul16c.a2, ip|
00020ce0  2c 20 61 32 2c 20 61 33  0a 09 53 55 42 09 61 32  |, a2, a3..SUB.a2|
00020cf0  2c 20 61 32 2c 20 23 26  30 30 65 39 30 30 0a 09  |, a2, #&00e900..|
00020d00  53 55 42 09 61 32 2c 20  61 32 2c 20 23 26 30 30  |SUB.a2, a2, #&00|
00020d10  30 30 62 64 0a 20 20 20  20 20 20 20 20 4d 4f 56  |00bd.        MOV|
00020d20  09 69 70 2c 20 61 31 0a  09 6d 75 6c 31 36 63 09  |.ip, a1..mul16c.|
00020d30  61 32 2c 20 69 70 2c 20  61 32 2c 20 61 33 0a 09  |a2, ip, a2, a3..|
00020d40  53 55 42 09 61 32 2c 20  61 32 2c 20 23 26 30 33  |SUB.a2, a2, #&03|
00020d50  30 30 30 30 0a 09 53 55  42 09 61 32 2c 20 61 32  |0000..SUB.a2, a2|
00020d60  2c 20 23 26 30 30 37 63  30 30 0a 09 53 55 42 09  |, #&007c00..SUB.|
00020d70  61 32 2c 20 61 32 2c 20  23 26 30 30 30 30 63 36  |a2, a2, #&0000c6|
00020d80  0a 20 20 20 20 20 20 20  20 4d 4f 56 09 69 70 2c  |.        MOV.ip,|
00020d90  20 61 31 0a 09 6d 75 6c  31 36 63 09 61 32 2c 20  | a1..mul16c.a2, |
00020da0  69 70 2c 20 61 32 2c 20  61 33 0a 09 41 44 44 09  |ip, a2, a3..ADD.|
00020db0  61 32 2c 20 61 32 2c 20  23 26 30 38 30 30 30 30  |a2, a2, #&080000|
00020dc0  0a 09 41 44 44 09 61 32  2c 20 61 32 2c 20 23 26  |..ADD.a2, a2, #&|
00020dd0  30 30 45 32 30 30 0a 09  41 44 44 09 61 32 2c 20  |00E200..ADD.a2, |
00020de0  61 32 2c 20 23 26 30 30  30 30 42 44 0a 20 20 20  |a2, #&0000BD.   |
00020df0  20 20 20 20 20 4d 4f 56  09 69 70 2c 20 61 31 0a  |     MOV.ip, a1.|
00020e00  09 6d 75 6c 31 36 63 09  61 32 2c 20 69 70 2c 20  |.mul16c.a2, ip, |
00020e10  61 32 2c 20 61 33 0a 09  41 44 44 09 61 32 2c 20  |a2, a3..ADD.a2, |
00020e20  61 32 2c 20 23 26 30 62  30 30 30 30 0a 09 41 44  |a2, #&0b0000..AD|
00020e30  44 09 61 32 2c 20 61 32  2c 20 23 26 30 30 35 30  |D.a2, a2, #&0050|
00020e40  30 30 0a 09 41 44 44 09  61 32 2c 20 61 32 2c 20  |00..ADD.a2, a2, |
00020e50  23 26 30 30 30 30 35 30  0a 09 4d 4f 56 09 61 31  |#&000050..MOV.a1|
00020e60  2c 20 61 32 2c 20 41 53  52 20 23 34 0a 09 54 53  |, a2, ASR #4..TS|
00020e70  54 09 61 34 2c 20 23 31  0a 09 52 53 42 4e 45 09  |T.a4, #1..RSBNE.|
00020e80  61 31 2c 20 61 31 2c 20  23 30 0a 20 20 20 20 20  |a1, a1, #0.     |
00020e90  20 20 20 4d 4f 56 53 20  20 20 20 70 63 2c 20 6c  |   MOVS    pc, l|
00020ea0  72 0a 0a 0a 0a 3b 20 61  63 73 31 36 0a 3b 20 61  |r....; acs16.; a|
00020eb0  20 6c 65 61 66 20 41 50  43 53 20 66 75 6e 63 74  | leaf APCS funct|
00020ec0  69 6f 6e 0a 3b 0a 3b 20  43 20 70 72 6f 74 6f 74  |ion.;.; C protot|
00020ed0  79 70 65 3a 0a 3b 20 69  6e 74 20 61 63 73 31 36  |ype:.; int acs16|
00020ee0  28 69 6e 74 20 61 29 0a  3b 0a 3b 20 72 65 74 75  |(int a).;.; retu|
00020ef0  72 6e 73 20 36 35 35 33  36 20 2a 20 32 2f 70 69  |rns 65536 * 2/pi|
00020f00  20 2a 20 61 72 63 63 6f  73 20 28 61 2f 36 35 35  | * arccos (a/655|
00020f10  33 36 29 0a 3b 0a 3b 20  66 6f 72 20 61 20 6f 75  |36).;.; for a ou|
00020f20  74 20 6f 66 20 72 61 6e  67 65 20 28 69 65 20 61  |t of range (ie a|
00020f30  62 73 20 61 20 3e 20 36  35 35 33 36 29 2c 20 72  |bs a > 65536), r|
00020f40  65 73 65 74 20 61 20 74  6f 20 b1 36 35 35 33 36  |eset a to .65536|
00020f50  20 61 73 20 61 70 70 72  6f 70 72 69 61 74 65 20  | as appropriate |
00020f60  62 65 66 6f 72 65 20 65  76 61 6c 0a 3b 0a 3b 20  |before eval.;.; |
00020f70  69 73 20 61 62 6f 75 74  20 32 34 20 74 69 6d 65  |is about 24 time|
00020f80  73 20 66 61 73 74 65 72  20 74 68 61 6e 20 46 50  |s faster than FP|
00020f90  45 6d 75 6c 61 74 6f 72  20 77 6f 72 6b 69 6e 67  |Emulator working|
00020fa0  20 77 69 74 68 20 64 6f  75 62 6c 65 20 66 6c 6f  | with double flo|
00020fb0  61 74 73 0a 3b 0a 0a 20  20 20 20 20 20 20 20 45  |ats.;..        E|
00020fc0  58 50 4f 52 54 20 20 61  63 73 31 36 0a 0a 61 63  |XPORT  acs16..ac|
00020fd0  6e 73 74 61 20 20 44 43  42 20 20 20 20 20 22 61  |nsta  DCB     "a|
00020fe0  63 73 31 36 22 2c 20 30  0a 20 20 20 20 20 20 20  |cs16", 0.       |
00020ff0  20 41 4c 49 47 4e 0a 61  63 6e 65 6e 64 20 20 44  | ALIGN.acnend  D|
00021000  43 44 20 20 20 20 20 26  66 66 30 30 30 30 30 30  |CD     &ff000000|
00021010  20 2b 20 61 63 6e 65 6e  64 20 2d 20 61 63 6e 73  | + acnend - acns|
00021020  74 61 0a 0a 61 63 73 31  36 0a 0a 09 43 4d 50 09  |ta..acs16...CMP.|
00021030  61 31 2c 20 23 36 35 35  33 36 0a 09 4d 4f 56 47  |a1, #65536..MOVG|
00021040  45 09 61 31 2c 20 23 30  0a 09 4d 4f 56 47 45 53  |E.a1, #0..MOVGES|
00021050  09 70 63 2c 20 6c 72 0a  09 43 4d 50 09 61 31 2c  |.pc, lr..CMP.a1,|
00021060  20 23 2d 36 35 35 33 36  0a 09 4d 4f 56 4c 45 09  | #-65536..MOVLE.|
00021070  61 31 2c 20 23 32 2a 36  35 35 33 36 0a 09 4d 4f  |a1, #2*65536..MO|
00021080  56 4c 45 53 09 70 63 2c  20 6c 72 0a 09 53 54 4d  |VLES.pc, lr..STM|
00021090  46 44 09 73 70 21 2c 20  7b 6c 72 7d 09 09 3b 6e  |FD.sp!, {lr}..;n|
000210a0  6f 77 20 68 61 76 65 20  61 72 67 20 69 6e 20 72  |ow have arg in r|
000210b0  61 6e 67 65 20 28 2d 6f  6e 65 2c 6f 6e 65 29 0a  |ange (-one,one).|
000210c0  09 43 4d 50 09 61 31 2c  20 23 30 0a 09 52 53 42  |.CMP.a1, #0..RSB|
000210d0  4d 49 09 61 31 2c 20 61  31 2c 20 23 30 0a 09 4d  |MI.a1, a1, #0..M|
000210e0  4f 56 4d 49 09 61 34 2c  20 23 31 09 09 09 3b 62  |OVMI.a4, #1...;b|
000210f0  30 20 69 6e 20 61 34 20  73 65 74 20 69 66 66 20  |0 in a4 set iff |
00021100  66 69 6e 61 6c 20 72 65  73 75 6c 74 20 72 20 6e  |final result r n|
00021110  65 65 64 73 20 72 65 70  6c 61 63 69 6e 67 20 62  |eeds replacing b|
00021120  79 20 32 2a 6f 6e 65 2d  72 0a 09 4d 4f 56 50 4c  |y 2*one-r..MOVPL|
00021130  09 61 34 2c 20 23 30 09  09 09 3b 6e 6f 77 20 68  |.a4, #0...;now h|
00021140  61 76 65 20 61 72 67 20  69 6e 20 72 61 6e 67 65  |ave arg in range|
00021150  20 5b 30 2c 6f 6e 65 29  0a 09 53 55 42 09 61 32  | [0,one)..SUB.a2|
00021160  2c 20 61 31 2c 20 23 26  62 35 30 30 0a 09 53 55  |, a1, #&b500..SU|
00021170  42 53 09 61 32 2c 20 61  32 2c 20 23 26 30 30 30  |BS.a2, a2, #&000|
00021180  35 0a 09 42 4c 54 09 61  63 73 31 36 5f 61 72 67  |5..BLT.acs16_arg|
00021190  6c 6f 77 09 09 3b 69 66  20 61 72 67 20 3c 20 6f  |low..;if arg < o|
000211a0  6e 65 2f 73 71 72 74 32  20 67 6f 20 61 6e 64 20  |ne/sqrt2 go and |
000211b0  61 70 70 6c 79 20 70 6f  6c 79 20 65 6c 73 65 20  |apply poly else |
000211c0  66 69 72 73 74 20 74 72  61 6e 73 6d 75 74 65 20  |first transmute |
000211d0  69 6e 74 6f 20 68 65 72  65 0a 09 4f 52 52 09 61  |into here..ORR.a|
000211e0  34 2c 20 61 34 2c 20 23  32 09 09 3b 62 31 20 69  |4, a4, #2..;b1 i|
000211f0  6e 20 61 34 20 63 6c 65  61 72 20 69 66 66 20 70  |n a4 clear iff p|
00021200  65 6e 75 6c 74 69 6d 61  74 65 20 72 65 73 75 6c  |enultimate resul|
00021210  74 20 72 20 6e 65 65 64  20 62 65 20 72 65 70 6c  |t r need be repl|
00021220  61 63 65 64 20 62 79 20  6f 6e 65 2d 72 0a 09 4d  |aced by one-r..M|
00021230  55 4c 09 61 32 2c 20 61  31 2c 20 61 31 0a 09 4d  |UL.a2, a1, a1..M|
00021240  4f 56 09 61 31 2c 20 61  32 2c 20 4c 53 52 20 23  |OV.a1, a2, LSR #|
00021250  31 36 0a 09 52 53 42 09  61 31 2c 20 61 31 2c 20  |16..RSB.a1, a1, |
00021260  23 36 35 35 33 36 0a 09  73 71 72 74 31 36 09 61  |#65536..sqrt16.a|
00021270  31 2c 20 61 31 2c 20 61  32 2c 20 61 33 2c 20 69  |1, a1, a2, a3, i|
00021280  70 2c 20 6c 72 09 3b 61  72 67 20 74 72 61 6e 73  |p, lr.;arg trans|
00021290  6d 75 74 65 64 20 28 69  65 20 72 65 70 6c 61 63  |muted (ie replac|
000212a0  65 64 20 62 79 20 6f 6e  65 2d 73 71 72 74 28 61  |ed by one-sqrt(a|
000212b0  72 67 5e 32 29 29 0a 61  63 73 31 36 5f 61 72 67  |rg^2)).acs16_arg|
000212c0  6c 6f 77 0a 09 41 44 44  09 61 33 2c 20 61 31 2c  |low..ADD.a3, a1,|
000212d0  20 61 31 2c 20 41 53 4c  20 23 32 0a 09 41 44 44  | a1, ASL #2..ADD|
000212e0  09 61 32 2c 20 61 33 2c  20 61 31 2c 20 41 53 4c  |.a2, a3, a1, ASL|
000212f0  20 23 34 0a 09 41 44 44  09 61 32 2c 20 61 32 2c  | #4..ADD.a2, a2,|
00021300  20 61 33 2c 20 41 53 4c  20 23 35 0a 09 41 44 44  | a3, ASL #5..ADD|
00021310  09 61 32 2c 20 61 32 2c  20 61 33 2c 20 41 53 52  |.a2, a2, a3, ASR|
00021320  09 23 38 0a 09 41 44 44  09 61 32 2c 20 61 32 2c  |.#8..ADD.a2, a2,|
00021330  20 23 33 32 0a 09 4d 4f  56 09 61 31 2c 20 61 32  | #32..MOV.a1, a2|
00021340  2c 20 41 53 52 20 23 36  09 09 3b 72 61 6e 67 65  |, ASR #6..;range|
00021350  20 74 72 61 6e 73 66 6f  72 6d 20 61 70 70 6c 69  | transform appli|
00021360  65 64 20 28 69 65 20 72  65 70 6c 61 63 65 64 20  |ed (ie replaced |
00021370  62 79 20 61 72 67 2a 32  73 71 72 74 32 2d 6f 6e  |by arg*2sqrt2-on|
00021380  65 29 0a 09 53 55 42 09  61 31 2c 20 61 31 2c 20  |e)..SUB.a1, a1, |
00021390  23 26 31 30 30 30 30 09  09 3b 73 6f 20 61 72 67  |#&10000..;so arg|
000213a0  20 6c 69 65 73 20 69 6e  20 72 61 6e 67 65 20 5b  | lies in range [|
000213b0  2d 31 2c 31 5d 0a 09 41  44 44 09 61 32 2c 20 61  |-1,1]..ADD.a2, a|
000213c0  31 2c 20 61 31 2c 20 4c  53 4c 20 23 32 09 3b 6e  |1, a1, LSL #2.;n|
000213d0  6f 77 20 61 70 70 6c 79  20 70 6f 6c 79 0a 09 41  |ow apply poly..A|
000213e0  44 44 09 61 32 2c 20 61  32 2c 20 61 32 2c 20 4c  |DD.a2, a2, a2, L|
000213f0  53 4c 20 23 35 0a 09 4d  4f 56 09 61 32 2c 20 61  |SL #5..MOV.a2, a|
00021400  32 2c 20 41 53 52 20 23  31 34 0a 09 41 44 44 09  |2, ASR #14..ADD.|
00021410  61 32 2c 20 61 32 2c 20  23 26 30 30 30 35 30 30  |a2, a2, #&000500|
00021420  0a 09 41 44 44 09 61 32  2c 20 61 32 2c 20 23 26  |..ADD.a2, a2, #&|
00021430  30 30 30 30 61 65 0a 20  20 20 20 20 20 20 20 4d  |0000ae.        M|
00021440  4f 56 09 69 70 2c 20 61  31 0a 09 6d 75 6c 31 36  |OV.ip, a1..mul16|
00021450  63 09 61 32 2c 20 69 70  2c 20 61 32 2c 20 61 33  |c.a2, ip, a2, a3|
00021460  0a 09 41 44 44 09 61 32  2c 20 61 32 2c 20 23 26  |..ADD.a2, a2, #&|
00021470  30 30 30 38 30 30 0a 09  41 44 44 09 61 32 2c 20  |000800..ADD.a2, |
00021480  61 32 2c 20 23 26 30 30  30 30 38 38 0a 20 20 20  |a2, #&000088.   |
00021490  20 20 20 20 20 4d 4f 56  09 69 70 2c 20 61 31 0a  |     MOV.ip, a1.|
000214a0  09 6d 75 6c 31 36 63 09  61 32 2c 20 69 70 2c 20  |.mul16c.a2, ip, |
000214b0  61 32 2c 20 61 33 0a 09  41 44 44 09 61 32 2c 20  |a2, a3..ADD.a2, |
000214c0  61 32 2c 20 23 26 30 30  32 30 30 30 0a 09 41 44  |a2, #&002000..AD|
000214d0  44 09 61 32 2c 20 61 32  2c 20 23 26 30 30 30 30  |D.a2, a2, #&0000|
000214e0  39 61 0a 20 20 20 20 20  20 20 20 4d 4f 56 09 69  |9a.        MOV.i|
000214f0  70 2c 20 61 31 0a 09 6d  75 6c 31 36 63 09 61 32  |p, a1..mul16c.a2|
00021500  2c 20 69 70 2c 20 61 32  2c 20 61 33 0a 09 41 44  |, ip, a2, a3..AD|
00021510  44 09 61 32 2c 20 61 32  2c 20 23 26 30 30 34 36  |D.a2, a2, #&0046|
00021520  30 30 0a 09 41 44 44 09  61 32 2c 20 61 32 2c 20  |00..ADD.a2, a2, |
00021530  23 26 30 30 30 30 39 61  0a 20 20 20 20 20 20 20  |#&00009a.       |
00021540  20 4d 4f 56 09 69 70 2c  20 61 31 0a 09 6d 75 6c  | MOV.ip, a1..mul|
00021550  31 36 63 09 61 32 2c 20  69 70 2c 20 61 32 2c 20  |16c.a2, ip, a2, |
00021560  61 33 0a 09 41 44 44 09  61 32 2c 20 61 32 2c 20  |a3..ADD.a2, a2, |
00021570  23 26 30 33 30 30 30 30  0a 09 41 44 44 09 61 32  |#&030000..ADD.a2|
00021580  2c 20 61 32 2c 20 23 26  30 30 64 39 30 30 0a 09  |, a2, #&00d900..|
00021590  41 44 44 09 61 32 2c 20  61 32 2c 20 23 26 30 30  |ADD.a2, a2, #&00|
000215a0  30 30 62 34 0a 20 20 20  20 20 20 20 20 4d 4f 56  |00b4.        MOV|
000215b0  09 69 70 2c 20 61 31 0a  09 6d 75 6c 31 36 63 09  |.ip, a1..mul16c.|
000215c0  61 32 2c 20 69 70 2c 20  61 32 2c 20 61 33 0a 09  |a2, ip, a2, a3..|
000215d0  41 44 44 09 61 32 2c 20  61 32 2c 20 23 26 30 33  |ADD.a2, a2, #&03|
000215e0  30 30 30 30 0a 09 41 44  44 09 61 32 2c 20 61 32  |0000..ADD.a2, a2|
000215f0  2c 20 23 26 30 30 61 65  30 30 0a 09 41 44 44 09  |, #&00ae00..ADD.|
00021600  61 32 2c 20 61 32 2c 20  23 26 30 30 30 30 35 32  |a2, a2, #&000052|
00021610  0a 09 4d 4f 56 09 61 31  2c 20 61 32 2c 20 41 53  |..MOV.a1, a2, AS|
00021620  52 20 23 34 0a 09 54 53  54 09 61 34 2c 20 23 32  |R #4..TST.a4, #2|
00021630  0a 09 52 53 42 45 51 09  61 31 2c 20 61 31 2c 20  |..RSBEQ.a1, a1, |
00021640  23 36 35 35 33 36 0a 09  54 53 54 09 61 34 2c 20  |#65536..TST.a4, |
00021650  23 31 0a 09 52 53 42 4e  45 09 61 31 2c 20 61 31  |#1..RSBNE.a1, a1|
00021660  2c 20 23 32 2a 36 35 35  33 36 0a 09 4c 44 4d 46  |, #2*65536..LDMF|
00021670  44 09 73 70 21 2c 20 7b  70 63 7d 5e 0a 0a 0a 0a  |D.sp!, {pc}^....|
00021680  3b 20 61 73 6e 31 36 0a  3b 20 61 20 6c 65 61 66  |; asn16.; a leaf|
00021690  20 41 50 43 53 20 66 75  6e 63 74 69 6f 6e 0a 3b  | APCS function.;|
000216a0  0a 3b 20 43 20 70 72 6f  74 6f 74 79 70 65 3a 0a  |.; C prototype:.|
000216b0  3b 20 69 6e 74 20 61 73  6e 31 36 28 69 6e 74 20  |; int asn16(int |
000216c0  61 29 0a 3b 0a 3b 20 72  65 74 75 72 6e 73 20 36  |a).;.; returns 6|
000216d0  35 35 33 36 20 2a 20 32  2f 70 69 20 2a 20 61 72  |5536 * 2/pi * ar|
000216e0  63 73 69 6e 20 28 61 2f  36 35 35 33 36 29 0a 3b  |csin (a/65536).;|
000216f0  0a 3b 20 66 6f 72 20 61  20 6f 75 74 20 6f 66 20  |.; for a out of |
00021700  72 61 6e 67 65 20 28 69  65 20 61 62 73 20 61 20  |range (ie abs a |
00021710  3e 20 36 35 35 33 36 29  2c 20 72 65 73 65 74 20  |> 65536), reset |
00021720  61 20 74 6f 20 b1 36 35  35 33 36 20 61 73 20 61  |a to .65536 as a|
00021730  70 70 72 6f 70 72 69 61  74 65 20 62 65 66 6f 72  |ppropriate befor|
00021740  65 20 65 76 61 6c 0a 3b  0a 3b 20 69 73 20 61 62  |e eval.;.; is ab|
00021750  6f 75 74 20 32 34 20 74  69 6d 65 73 20 66 61 73  |out 24 times fas|
00021760  74 65 72 20 74 68 61 6e  20 46 50 45 6d 75 6c 61  |ter than FPEmula|
00021770  74 6f 72 20 77 6f 72 6b  69 6e 67 20 77 69 74 68  |tor working with|
00021780  20 64 6f 75 62 6c 65 20  66 6c 6f 61 74 73 0a 3b  | double floats.;|
00021790  0a 0a 20 20 20 20 20 20  20 20 45 58 50 4f 52 54  |..        EXPORT|
000217a0  20 20 61 73 6e 31 36 0a  0a 61 73 6e 73 74 61 20  |  asn16..asnsta |
000217b0  20 44 43 42 20 20 20 20  20 22 61 73 6e 31 36 22  | DCB     "asn16"|
000217c0  2c 20 30 0a 20 20 20 20  20 20 20 20 41 4c 49 47  |, 0.        ALIG|
000217d0  4e 0a 61 73 6e 65 6e 64  20 20 44 43 44 20 20 20  |N.asnend  DCD   |
000217e0  20 20 26 66 66 30 30 30  30 30 30 20 2b 20 61 73  |  &ff000000 + as|
000217f0  6e 65 6e 64 20 2d 20 61  73 6e 73 74 61 0a 0a 61  |nend - asnsta..a|
00021800  73 6e 31 36 0a 0a 09 43  4d 50 09 61 31 2c 20 23  |sn16...CMP.a1, #|
00021810  36 35 35 33 36 0a 09 4d  4f 56 47 45 09 61 31 2c  |65536..MOVGE.a1,|
00021820  20 23 36 35 35 33 36 0a  09 4d 4f 56 47 45 53 09  | #65536..MOVGES.|
00021830  70 63 2c 20 6c 72 0a 09  41 44 44 53 09 61 32 2c  |pc, lr..ADDS.a2,|
00021840  20 61 31 2c 20 23 36 35  35 33 36 09 09 3b 65 71  | a1, #65536..;eq|
00021850  75 69 76 20 74 6f 20 43  4d 50 20 61 31 2c 23 2d  |uiv to CMP a1,#-|
00021860  36 35 35 33 36 0a 09 53  55 42 4c 45 09 61 31 2c  |65536..SUBLE.a1,|
00021870  20 61 31 2c 20 61 32 09  09 3b 65 71 75 69 76 20  | a1, a2..;equiv |
00021880  74 6f 20 4d 4f 56 4c 45  20 61 31 2c 23 2d 36 35  |to MOVLE a1,#-65|
00021890  35 33 36 20 28 77 68 69  63 68 20 77 6f 75 6c 64  |536 (which would|
000218a0  6e 27 74 20 77 6f 72 6b  20 64 75 65 20 74 6f 20  |n't work due to |
000218b0  62 61 64 20 63 6f 6e 73  74 61 6e 74 29 0a 09 4d  |bad constant)..M|
000218c0  4f 56 4c 45 53 09 70 63  2c 20 6c 72 0a 09 53 54  |OVLES.pc, lr..ST|
000218d0  4d 46 44 09 73 70 21 2c  20 7b 6c 72 7d 09 09 3b  |MFD.sp!, {lr}..;|
000218e0  6e 6f 77 20 68 61 76 65  20 61 72 67 20 69 6e 20  |now have arg in |
000218f0  72 61 6e 67 65 20 28 2d  6f 6e 65 2c 6f 6e 65 29  |range (-one,one)|
00021900  0a 09 43 4d 50 09 61 31  2c 20 23 30 0a 09 52 53  |..CMP.a1, #0..RS|
00021910  42 4d 49 09 61 31 2c 20  61 31 2c 20 23 30 0a 09  |BMI.a1, a1, #0..|
00021920  4d 4f 56 4d 49 09 61 34  2c 20 23 31 09 09 09 3b  |MOVMI.a4, #1...;|
00021930  62 30 20 69 6e 20 61 34  20 73 65 74 20 69 66 66  |b0 in a4 set iff|
00021940  20 66 69 6e 61 6c 20 72  65 73 75 6c 74 20 6e 65  | final result ne|
00021950  65 64 73 20 6e 65 67 61  74 69 6e 67 0a 09 4d 4f  |eds negating..MO|
00021960  56 50 4c 09 61 34 2c 20  23 30 09 09 09 3b 6e 6f  |VPL.a4, #0...;no|
00021970  77 20 68 61 76 65 20 61  72 67 20 69 6e 20 72 61  |w have arg in ra|
00021980  6e 67 65 20 5b 30 2c 6f  6e 65 29 0a 09 53 55 42  |nge [0,one)..SUB|
00021990  09 61 32 2c 20 61 31 2c  20 23 26 62 35 30 30 0a  |.a2, a1, #&b500.|
000219a0  09 53 55 42 53 09 61 32  2c 20 61 32 2c 20 23 26  |.SUBS.a2, a2, #&|
000219b0  30 30 30 35 0a 09 42 4c  54 09 61 73 6e 31 36 5f  |0005..BLT.asn16_|
000219c0  61 72 67 6c 6f 77 09 09  3b 69 66 20 61 72 67 20  |arglow..;if arg |
000219d0  3c 20 6f 6e 65 2f 73 71  72 74 32 20 67 6f 20 61  |< one/sqrt2 go a|
000219e0  6e 64 20 61 70 70 6c 79  20 70 6f 6c 79 20 65 6c  |nd apply poly el|
000219f0  73 65 20 66 69 72 73 74  20 74 72 61 6e 73 6d 75  |se first transmu|
00021a00  74 65 20 69 6e 74 6f 20  68 65 72 65 0a 09 4f 52  |te into here..OR|
00021a10  52 09 61 34 2c 20 61 34  2c 20 23 32 09 09 3b 62  |R.a4, a4, #2..;b|
00021a20  31 20 69 6e 20 61 34 20  73 65 74 20 69 66 66 20  |1 in a4 set iff |
00021a30  70 65 6e 75 6c 74 69 6d  61 74 65 20 72 65 73 75  |penultimate resu|
00021a40  6c 74 20 72 20 6e 65 65  64 73 20 74 6f 20 62 65  |lt r needs to be|
00021a50  20 72 65 70 6c 61 63 65  64 20 62 79 20 6f 6e 65  | replaced by one|
00021a60  2d 72 0a 09 4d 55 4c 09  61 32 2c 20 61 31 2c 20  |-r..MUL.a2, a1, |
00021a70  61 31 0a 09 4d 4f 56 09  61 31 2c 20 61 32 2c 20  |a1..MOV.a1, a2, |
00021a80  4c 53 52 20 23 31 36 0a  09 52 53 42 09 61 31 2c  |LSR #16..RSB.a1,|
00021a90  20 61 31 2c 20 23 36 35  35 33 36 0a 09 73 71 72  | a1, #65536..sqr|
00021aa0  74 31 36 09 61 31 2c 20  61 31 2c 20 61 32 2c 20  |t16.a1, a1, a2, |
00021ab0  61 33 2c 20 69 70 2c 20  6c 72 09 3b 61 72 67 20  |a3, ip, lr.;arg |
00021ac0  74 72 61 6e 73 6d 75 74  65 64 20 28 69 65 20 72  |transmuted (ie r|
00021ad0  65 70 6c 61 63 65 64 20  62 79 20 6f 6e 65 2d 73  |eplaced by one-s|
00021ae0  71 72 74 28 61 72 67 5e  32 29 29 0a 61 73 6e 31  |qrt(arg^2)).asn1|
00021af0  36 5f 61 72 67 6c 6f 77  0a 09 41 44 44 09 61 33  |6_arglow..ADD.a3|
00021b00  2c 20 61 31 2c 20 61 31  2c 20 41 53 4c 20 23 32  |, a1, a1, ASL #2|
00021b10  0a 09 41 44 44 09 61 32  2c 20 61 33 2c 20 61 31  |..ADD.a2, a3, a1|
00021b20  2c 20 41 53 4c 20 23 34  0a 09 41 44 44 09 61 32  |, ASL #4..ADD.a2|
00021b30  2c 20 61 32 2c 20 61 33  2c 20 41 53 4c 20 23 35  |, a2, a3, ASL #5|
00021b40  0a 09 41 44 44 09 61 32  2c 20 61 32 2c 20 61 33  |..ADD.a2, a2, a3|
00021b50  2c 20 41 53 52 09 23 38  0a 09 41 44 44 09 61 32  |, ASR.#8..ADD.a2|
00021b60  2c 20 61 32 2c 20 23 33  32 0a 09 4d 4f 56 09 61  |, a2, #32..MOV.a|
00021b70  31 2c 20 61 32 2c 20 41  53 52 20 23 36 09 09 3b  |1, a2, ASR #6..;|
00021b80  72 61 6e 67 65 20 74 72  61 6e 73 66 6f 72 6d 20  |range transform |
00021b90  61 70 70 6c 69 65 64 20  28 69 65 20 72 65 70 6c  |applied (ie repl|
00021ba0  61 63 65 64 20 62 79 20  61 72 67 2a 32 73 71 72  |aced by arg*2sqr|
00021bb0  74 32 2d 6f 6e 65 29 0a  09 53 55 42 09 61 31 2c  |t2-one)..SUB.a1,|
00021bc0  20 61 31 2c 20 23 26 31  30 30 30 30 09 09 3b 73  | a1, #&10000..;s|
00021bd0  6f 20 61 72 67 20 6c 69  65 73 20 69 6e 20 72 61  |o arg lies in ra|
00021be0  6e 67 65 20 5b 2d 31 2c  31 5d 0a 09 41 44 44 09  |nge [-1,1]..ADD.|
00021bf0  61 32 2c 20 61 31 2c 20  61 31 2c 20 4c 53 4c 20  |a2, a1, a1, LSL |
00021c00  23 32 09 3b 6e 6f 77 20  61 70 70 6c 79 20 70 6f  |#2.;now apply po|
00021c10  6c 79 0a 09 41 44 44 09  61 32 2c 20 61 32 2c 20  |ly..ADD.a2, a2, |
00021c20  61 32 2c 20 4c 53 4c 20  23 35 0a 09 4d 4f 56 09  |a2, LSL #5..MOV.|
00021c30  61 32 2c 20 61 32 2c 20  41 53 52 20 23 31 34 0a  |a2, a2, ASR #14.|
00021c40  09 41 44 44 09 61 32 2c  20 61 32 2c 20 23 26 30  |.ADD.a2, a2, #&0|
00021c50  30 30 35 30 30 0a 09 41  44 44 09 61 32 2c 20 61  |00500..ADD.a2, a|
00021c60  32 2c 20 23 26 30 30 30  30 61 65 0a 20 20 20 20  |2, #&0000ae.    |
00021c70  20 20 20 20 4d 4f 56 09  69 70 2c 20 61 31 0a 09  |    MOV.ip, a1..|
00021c80  6d 75 6c 31 36 63 09 61  32 2c 20 69 70 2c 20 61  |mul16c.a2, ip, a|
00021c90  32 2c 20 61 33 0a 09 41  44 44 09 61 32 2c 20 61  |2, a3..ADD.a2, a|
00021ca0  32 2c 20 23 26 30 30 30  38 30 30 0a 09 41 44 44  |2, #&000800..ADD|
00021cb0  09 61 32 2c 20 61 32 2c  20 23 26 30 30 30 30 38  |.a2, a2, #&00008|
00021cc0  38 0a 20 20 20 20 20 20  20 20 4d 4f 56 09 69 70  |8.        MOV.ip|
00021cd0  2c 20 61 31 0a 09 6d 75  6c 31 36 63 09 61 32 2c  |, a1..mul16c.a2,|
00021ce0  20 69 70 2c 20 61 32 2c  20 61 33 0a 09 41 44 44  | ip, a2, a3..ADD|
00021cf0  09 61 32 2c 20 61 32 2c  20 23 26 30 30 32 30 30  |.a2, a2, #&00200|
00021d00  30 0a 09 41 44 44 09 61  32 2c 20 61 32 2c 20 23  |0..ADD.a2, a2, #|
00021d10  26 30 30 30 30 39 61 0a  20 20 20 20 20 20 20 20  |&00009a.        |
00021d20  4d 4f 56 09 69 70 2c 20  61 31 0a 09 6d 75 6c 31  |MOV.ip, a1..mul1|
00021d30  36 63 09 61 32 2c 20 69  70 2c 20 61 32 2c 20 61  |6c.a2, ip, a2, a|
00021d40  33 0a 09 41 44 44 09 61  32 2c 20 61 32 2c 20 23  |3..ADD.a2, a2, #|
00021d50  26 30 30 34 36 30 30 0a  09 41 44 44 09 61 32 2c  |&004600..ADD.a2,|
00021d60  20 61 32 2c 20 23 26 30  30 30 30 39 61 0a 20 20  | a2, #&00009a.  |
00021d70  20 20 20 20 20 20 4d 4f  56 09 69 70 2c 20 61 31  |      MOV.ip, a1|
00021d80  0a 09 6d 75 6c 31 36 63  09 61 32 2c 20 69 70 2c  |..mul16c.a2, ip,|
00021d90  20 61 32 2c 20 61 33 0a  09 41 44 44 09 61 32 2c  | a2, a3..ADD.a2,|
00021da0  20 61 32 2c 20 23 26 30  33 30 30 30 30 0a 09 41  | a2, #&030000..A|
00021db0  44 44 09 61 32 2c 20 61  32 2c 20 23 26 30 30 64  |DD.a2, a2, #&00d|
00021dc0  39 30 30 0a 09 41 44 44  09 61 32 2c 20 61 32 2c  |900..ADD.a2, a2,|
00021dd0  20 23 26 30 30 30 30 62  34 0a 20 20 20 20 20 20  | #&0000b4.      |
00021de0  20 20 4d 4f 56 09 69 70  2c 20 61 31 0a 09 6d 75  |  MOV.ip, a1..mu|
00021df0  6c 31 36 63 09 61 32 2c  20 69 70 2c 20 61 32 2c  |l16c.a2, ip, a2,|
00021e00  20 61 33 0a 09 41 44 44  09 61 32 2c 20 61 32 2c  | a3..ADD.a2, a2,|
00021e10  20 23 26 30 33 30 30 30  30 0a 09 41 44 44 09 61  | #&030000..ADD.a|
00021e20  32 2c 20 61 32 2c 20 23  26 30 30 61 65 30 30 0a  |2, a2, #&00ae00.|
00021e30  09 41 44 44 09 61 32 2c  20 61 32 2c 20 23 26 30  |.ADD.a2, a2, #&0|
00021e40  30 30 30 35 32 0a 09 4d  4f 56 09 61 31 2c 20 61  |00052..MOV.a1, a|
00021e50  32 2c 20 41 53 52 20 23  34 0a 09 54 53 54 09 61  |2, ASR #4..TST.a|
00021e60  34 2c 20 23 32 0a 09 52  53 42 4e 45 09 61 31 2c  |4, #2..RSBNE.a1,|
00021e70  20 61 31 2c 20 23 36 35  35 33 36 0a 09 54 53 54  | a1, #65536..TST|
00021e80  09 61 34 2c 20 23 31 0a  09 52 53 42 4e 45 09 61  |.a4, #1..RSBNE.a|
00021e90  31 2c 20 61 31 2c 20 23  30 0a 09 4c 44 4d 46 44  |1, a1, #0..LDMFD|
00021ea0  09 73 70 21 2c 20 7b 70  63 7d 5e 0a 0a 0a 0a 3b  |.sp!, {pc}^....;|
00021eb0  20 67 61 75 73 73 31 36  0a 3b 20 61 20 6c 65 61  | gauss16.; a lea|
00021ec0  66 20 41 50 43 53 20 66  75 6e 63 74 69 6f 6e 0a  |f APCS function.|
00021ed0  3b 0a 3b 20 43 20 70 72  6f 74 6f 74 79 70 65 3a  |;.; C prototype:|
00021ee0  0a 3b 20 69 6e 74 20 67  61 75 73 73 31 36 28 76  |.; int gauss16(v|
00021ef0  6f 69 64 29 0a 3b 0a 3b  20 72 65 74 75 72 6e 73  |oid).;.; returns|
00021f00  20 36 35 35 33 36 20 2a  20 28 20 70 73 65 75 64  | 65536 * ( pseud|
00021f10  6f 20 72 61 6e 64 6f 6e  20 76 61 72 69 61 62 6c  |o randon variabl|
00021f20  65 20 77 69 74 68 20 61  70 70 72 6f 78 69 6d 61  |e with approxima|
00021f30  74 65 20 64 69 73 74 72  69 62 75 74 69 6f 6e 20  |te distribution |
00021f40  4e 28 30 2c 31 29 20 29  0a 3b 20 6e 6f 74 65 2c  |N(0,1) ).; note,|
00021f50  20 74 68 65 20 61 70 70  72 6f 78 69 6d 61 74 65  | the approximate|
00021f60  20 67 61 75 73 73 69 61  6e 20 64 69 73 74 72 69  | gaussian distri|
00021f70  62 75 74 69 6f 6e 20 69  73 20 61 63 68 69 65 76  |bution is achiev|
00021f80  65 64 20 76 69 61 20 74  68 65 20 73 75 6d 20 6f  |ed via the sum o|
00021f90  66 20 6e 20 70 73 65 75  64 6f 20 55 5b 30 2c 36  |f n pseudo U[0,6|
00021fa0  35 35 33 35 5d 0a 3b 20  20 20 20 20 20 20 72 61  |5535].;       ra|
00021fb0  6e 64 6f 6d 20 76 61 72  69 61 62 6c 65 73 20 26  |ndom variables &|
00021fc0  20 61 70 70 6c 69 63 61  74 69 6f 6e 20 6f 66 20  | application of |
00021fd0  74 68 65 20 63 65 6e 74  72 61 6c 20 6c 69 6d 69  |the central limi|
00021fe0  74 20 74 68 65 6f 72 65  6d 0a 3b 20 20 20 20 20  |t theorem.;     |
00021ff0  20 20 68 65 72 65 20 77  65 20 75 73 65 20 6e 3d  |  here we use n=|
00022000  38 2c 20 67 69 76 69 6e  67 20 61 6e 20 61 63 74  |8, giving an act|
00022010  75 61 6c 20 72 61 6e 67  65 20 6f 66 20 b1 28 73  |ual range of .(s|
00022020  71 72 74 32 34 29 20 28  2a 36 35 35 33 36 29 2e  |qrt24) (*65536).|
00022030  0a 3b 0a 3b 20 20 20 20  20 20 20 66 6f 72 20 67  |.;.;       for g|
00022040  65 6e 65 72 61 6c 20 6e  2c 20 72 65 63 61 6c 6c  |eneral n, recall|
00022050  20 77 65 20 6e 65 65 64  20 74 6f 20 72 65 74 75  | we need to retu|
00022060  72 6e 3a 0a 3b 20 20 20  20 20 20 20 28 73 75 6d  |rn:.;       (sum|
00022070  20 6e 20 55 5b 30 2c 36  35 35 33 35 5d 20 72 61  | n U[0,65535] ra|
00022080  6e 64 6f 6d 20 76 61 72  69 61 62 6c 65 73 29 20  |ndom variables) |
00022090  2a 20 32 73 71 72 74 28  33 6e 29 2a 36 35 35 33  |* 2sqrt(3n)*6553|
000220a0  36 2f 28 36 35 35 33 35  6e 29 20 20 2d 20 20 73  |6/(65535n)  -  s|
000220b0  71 72 74 28 33 6e 29 2a  36 35 35 33 36 0a 3b 0a  |qrt(3n)*65536.;.|
000220c0  0a 09 45 58 50 4f 52 54  09 67 61 75 73 73 31 36  |..EXPORT.gauss16|
000220d0  0a 0a 67 61 6e 73 74 61  20 20 44 43 42 20 20 20  |..gansta  DCB   |
000220e0  20 20 22 67 61 75 73 73  31 36 22 2c 20 30 0a 20  |  "gauss16", 0. |
000220f0  20 20 20 20 20 20 20 41  4c 49 47 4e 0a 67 61 6e  |       ALIGN.gan|
00022100  65 6e 64 20 20 44 43 44  20 20 20 20 20 26 66 66  |end  DCD     &ff|
00022110  30 30 30 30 30 30 20 2b  20 67 61 6e 65 6e 64 20  |000000 + ganend |
00022120  2d 20 67 61 6e 73 74 61  0a 0a 67 61 75 73 73 31  |- gansta..gauss1|
00022130  36 0a 0a 09 41 44 52 09  61 31 2c 20 67 61 75 73  |6...ADR.a1, gaus|
00022140  73 73 65 65 64 31 0a 09  4c 44 4d 49 41 09 61 31  |sseed1..LDMIA.a1|
00022150  2c 20 7b 61 32 2c 20 61  33 7d 0a 0a 09 4d 4f 56  |, {a2, a3}...MOV|
00022160  53 20 20 20 20 61 33 2c  20 61 33 2c 20 4c 53 52  |S    a3, a3, LSR|
00022170  20 23 31 0a 20 20 20 20  20 20 20 20 4d 4f 56 53  | #1.        MOVS|
00022180  20 20 20 20 61 34 2c 20  61 32 2c 20 52 52 58 0a  |    a4, a2, RRX.|
00022190  20 20 20 20 20 20 20 20  41 44 43 20 20 20 20 20  |        ADC     |
000221a0  61 33 2c 20 61 33 2c 20  61 33 0a 20 20 20 20 20  |a3, a3, a3.     |
000221b0  20 20 20 45 4f 52 20 20  20 20 20 61 34 2c 20 61  |   EOR     a4, a|
000221c0  34 2c 20 61 32 2c 20 4c  53 4c 20 23 31 32 0a 20  |4, a2, LSL #12. |
000221d0  20 20 20 20 20 20 20 45  4f 52 20 20 20 20 20 61  |       EOR     a|
000221e0  32 2c 20 61 34 2c 20 61  34 2c 20 4c 53 52 20 23  |2, a4, a4, LSR #|
000221f0  32 30 0a 09 4d 4f 56 09  69 70 2c 20 61 32 2c 20  |20..MOV.ip, a2, |
00022200  4c 53 52 20 23 31 36 0a  09 4d 4f 56 09 61 34 2c  |LSR #16..MOV.a4,|
00022210  20 61 32 2c 20 4c 53 4c  20 23 31 36 0a 09 41 44  | a2, LSL #16..AD|
00022220  44 09 69 70 2c 20 69 70  2c 20 61 34 2c 20 4c 53  |D.ip, ip, a4, LS|
00022230  52 20 23 31 36 0a 0a 09  4d 4f 56 53 20 20 20 20  |R #16...MOVS    |
00022240  61 33 2c 20 61 33 2c 20  4c 53 52 20 23 31 0a 20  |a3, a3, LSR #1. |
00022250  20 20 20 20 20 20 20 4d  4f 56 53 20 20 20 20 61  |       MOVS    a|
00022260  34 2c 20 61 32 2c 20 52  52 58 0a 20 20 20 20 20  |4, a2, RRX.     |
00022270  20 20 20 41 44 43 20 20  20 20 20 61 33 2c 20 61  |   ADC     a3, a|
00022280  33 2c 20 61 33 0a 20 20  20 20 20 20 20 20 45 4f  |3, a3.        EO|
00022290  52 20 20 20 20 20 61 34  2c 20 61 34 2c 20 61 32  |R     a4, a4, a2|
000222a0  2c 20 4c 53 4c 20 23 31  32 0a 20 20 20 20 20 20  |, LSL #12.      |
000222b0  20 20 45 4f 52 20 20 20  20 20 61 32 2c 20 61 34  |  EOR     a2, a4|
000222c0  2c 20 61 34 2c 20 4c 53  52 20 23 32 30 0a 09 41  |, a4, LSR #20..A|
000222d0  44 44 09 69 70 2c 20 69  70 2c 20 61 32 2c 20 4c  |DD.ip, ip, a2, L|
000222e0  53 52 20 23 31 36 0a 09  4d 4f 56 09 61 34 2c 20  |SR #16..MOV.a4, |
000222f0  61 32 2c 20 4c 53 4c 20  23 31 36 0a 09 41 44 44  |a2, LSL #16..ADD|
00022300  09 69 70 2c 20 69 70 2c  20 61 34 2c 20 4c 53 52  |.ip, ip, a4, LSR|
00022310  20 23 31 36 0a 0a 09 4d  4f 56 53 20 20 20 20 61  | #16...MOVS    a|
00022320  33 2c 20 61 33 2c 20 4c  53 52 20 23 31 0a 20 20  |3, a3, LSR #1.  |
00022330  20 20 20 20 20 20 4d 4f  56 53 20 20 20 20 61 34  |      MOVS    a4|
00022340  2c 20 61 32 2c 20 52 52  58 0a 20 20 20 20 20 20  |, a2, RRX.      |
00022350  20 20 41 44 43 20 20 20  20 20 61 33 2c 20 61 33  |  ADC     a3, a3|
00022360  2c 20 61 33 0a 20 20 20  20 20 20 20 20 45 4f 52  |, a3.        EOR|
00022370  20 20 20 20 20 61 34 2c  20 61 34 2c 20 61 32 2c  |     a4, a4, a2,|
00022380  20 4c 53 4c 20 23 31 32  0a 20 20 20 20 20 20 20  | LSL #12.       |
00022390  20 45 4f 52 20 20 20 20  20 61 32 2c 20 61 34 2c  | EOR     a2, a4,|
000223a0  20 61 34 2c 20 4c 53 52  20 23 32 30 0a 09 41 44  | a4, LSR #20..AD|
000223b0  44 09 69 70 2c 20 69 70  2c 20 61 32 2c 20 4c 53  |D.ip, ip, a2, LS|
000223c0  52 20 23 31 36 0a 09 4d  4f 56 09 61 34 2c 20 61  |R #16..MOV.a4, a|
000223d0  32 2c 20 4c 53 4c 20 23  31 36 0a 09 41 44 44 09  |2, LSL #16..ADD.|
000223e0  69 70 2c 20 69 70 2c 20  61 34 2c 20 4c 53 52 20  |ip, ip, a4, LSR |
000223f0  23 31 36 0a 0a 09 4d 4f  56 53 20 20 20 20 61 33  |#16...MOVS    a3|
00022400  2c 20 61 33 2c 20 4c 53  52 20 23 31 0a 20 20 20  |, a3, LSR #1.   |
00022410  20 20 20 20 20 4d 4f 56  53 20 20 20 20 61 34 2c  |     MOVS    a4,|
00022420  20 61 32 2c 20 52 52 58  0a 20 20 20 20 20 20 20  | a2, RRX.       |
00022430  20 41 44 43 20 20 20 20  20 61 33 2c 20 61 33 2c  | ADC     a3, a3,|
00022440  20 61 33 0a 20 20 20 20  20 20 20 20 45 4f 52 20  | a3.        EOR |
00022450  20 20 20 20 61 34 2c 20  61 34 2c 20 61 32 2c 20  |    a4, a4, a2, |
00022460  4c 53 4c 20 23 31 32 0a  20 20 20 20 20 20 20 20  |LSL #12.        |
00022470  45 4f 52 20 20 20 20 20  61 32 2c 20 61 34 2c 20  |EOR     a2, a4, |
00022480  61 34 2c 20 4c 53 52 20  23 32 30 0a 09 41 44 44  |a4, LSR #20..ADD|
00022490  09 69 70 2c 20 69 70 2c  20 61 32 2c 20 4c 53 52  |.ip, ip, a2, LSR|
000224a0  20 23 31 36 0a 09 4d 4f  56 09 61 34 2c 20 61 32  | #16..MOV.a4, a2|
000224b0  2c 20 4c 53 4c 20 23 31  36 0a 09 41 44 44 09 69  |, LSL #16..ADD.i|
000224c0  70 2c 20 69 70 2c 20 61  34 2c 20 4c 53 52 20 23  |p, ip, a4, LSR #|
000224d0  31 36 09 09 3b 73 75 6d  20 6e 6f 77 20 69 6e 20  |16..;sum now in |
000224e0  69 70 0a 0a 09 53 54 4d  49 41 09 61 31 2c 20 7b  |ip...STMIA.a1, {|
000224f0  61 32 2c 20 61 33 7d 0a  0a 09 52 53 42 09 61 31  |a2, a3}...RSB.a1|
00022500  2c 20 69 70 2c 20 69 70  2c 20 41 53 4c 20 23 33  |, ip, ip, ASL #3|
00022510  0a 09 52 53 42 09 61 32  2c 20 69 70 2c 20 69 70  |..RSB.a2, ip, ip|
00022520  2c 20 41 53 4c 20 23 32  0a 09 41 44 44 09 61 31  |, ASL #2..ADD.a1|
00022530  2c 20 61 32 2c 20 61 31  2c 20 41 53 4c 20 23 34  |, a2, a1, ASL #4|
00022540  0a 09 41 44 44 09 61 31  2c 20 61 31 2c 20 69 70  |..ADD.a1, a1, ip|
00022550  2c 20 41 53 4c 20 23 39  0a 09 41 44 44 09 61 32  |, ASL #9..ADD.a2|
00022560  2c 20 69 70 2c 20 69 70  2c 20 41 53 4c 20 23 34  |, ip, ip, ASL #4|
00022570  0a 09 41 44 44 09 61 32  2c 20 61 32 2c 20 69 70  |..ADD.a2, a2, ip|
00022580  2c 20 41 53 4c 20 23 36  0a 09 41 44 44 09 61 31  |, ASL #6..ADD.a1|
00022590  2c 20 61 31 2c 20 61 32  2c 20 4c 53 52 20 23 31  |, a1, a2, LSR #1|
000225a0  30 0a 09 4d 4f 56 09 61  31 2c 20 61 31 2c 20 4c  |0..MOV.a1, a1, L|
000225b0  53 52 20 23 39 0a 09 53  55 42 09 61 31 2c 20 61  |SR #9..SUB.a1, a|
000225c0  31 2c 20 23 26 34 45 30  30 30 0a 09 53 55 42 09  |1, #&4E000..SUB.|
000225d0  61 31 2c 20 61 31 2c 20  23 26 30 30 36 32 30 0a  |a1, a1, #&00620.|
000225e0  09 53 55 42 09 61 31 2c  20 61 31 2c 20 23 26 30  |.SUB.a1, a1, #&0|
000225f0  30 30 30 34 0a 0a 20 20  20 20 20 20 20 20 4d 4f  |0004..        MO|
00022600  56 53 20 20 20 20 70 63  2c 20 6c 72 0a 0a 67 61  |VS    pc, lr..ga|
00022610  75 73 73 73 65 65 64 31  09 44 43 44 09 2d 31 09  |ussseed1.DCD.-1.|
00022620  09 3b 62 69 74 73 20 62  30 2d 62 33 31 20 6f 66  |.;bits b0-b31 of|
00022630  20 73 65 65 64 0a 09 09  44 43 44 09 2d 31 09 09  | seed...DCD.-1..|
00022640  3b 62 69 74 20 20 62 33  32 20 6f 66 20 73 65 65  |;bit  b32 of see|
00022650  64 20 28 69 6e 20 6c 73  62 20 6f 66 20 77 6f 72  |d (in lsb of wor|
00022660  64 29 0a 0a 3b 20 73 67  61 75 73 73 31 36 0a 3b  |d)..; sgauss16.;|
00022670  20 61 20 6c 65 61 66 20  41 50 43 53 20 66 75 6e  | a leaf APCS fun|
00022680  63 74 69 6f 6e 0a 3b 0a  3b 20 43 20 70 72 6f 74  |ction.;.; C prot|
00022690  6f 74 79 70 65 3a 0a 3b  20 76 6f 69 64 20 73 67  |otype:.; void sg|
000226a0  61 75 73 73 31 36 28 69  6e 74 20 73 65 65 64 29  |auss16(int seed)|
000226b0  0a 3b 0a 3b 20 73 65 74  73 20 74 68 65 20 73 65  |.;.; sets the se|
000226c0  65 64 20 66 6f 72 20 67  61 75 73 73 31 36 0a 3b  |ed for gauss16.;|
000226d0  0a 0a 09 45 58 50 4f 52  54 09 73 67 61 75 73 73  |...EXPORT.sgauss|
000226e0  31 36 0a 0a 73 67 6e 73  74 61 20 20 44 43 42 20  |16..sgnsta  DCB |
000226f0  20 20 20 20 22 73 67 61  75 73 73 31 36 22 2c 20  |    "sgauss16", |
00022700  30 0a 20 20 20 20 20 20  20 20 41 4c 49 47 4e 0a  |0.        ALIGN.|
00022710  73 67 6e 65 6e 64 20 20  44 43 44 20 20 20 20 20  |sgnend  DCD     |
00022720  26 66 66 30 30 30 30 30  30 20 2b 20 73 67 6e 65  |&ff000000 + sgne|
00022730  6e 64 20 2d 20 73 67 6e  73 74 61 0a 0a 73 67 61  |nd - sgnsta..sga|
00022740  75 73 73 31 36 0a 0a 09  41 44 52 09 61 32 2c 20  |uss16...ADR.a2, |
00022750  67 61 75 73 73 73 65 65  64 31 0a 09 4d 4f 56 09  |gaussseed1..MOV.|
00022760  61 33 2c 20 23 31 0a 09  53 54 4d 49 41 09 61 32  |a3, #1..STMIA.a2|
00022770  2c 20 7b 61 31 2c 20 61  33 7d 0a 20 20 20 20 20  |, {a1, a3}.     |
00022780  20 20 20 4d 4f 56 53 20  20 20 20 70 63 2c 20 6c  |   MOVS    pc, l|
00022790  72 0a 0a 0a 0a 3b 20 64  69 76 5f 66 72 61 63 31  |r....; div_frac1|
000227a0  36 0a 3b 20 61 20 6c 65  61 66 20 41 50 43 53 20  |6.; a leaf APCS |
000227b0  66 75 6e 63 74 69 6f 6e  0a 3b 0a 3b 20 43 20 70  |function.;.; C p|
000227c0  72 6f 74 6f 74 79 70 65  3a 0a 3b 20 69 6e 74 20  |rototype:.; int |
000227d0  64 69 76 5f 66 72 61 63  31 36 28 69 6e 74 20 6e  |div_frac16(int n|
000227e0  75 6d 62 65 72 2c 20 69  6e 74 20 64 69 76 69 73  |umber, int divis|
000227f0  6f 72 29 0a 3b 0a 3b 20  72 65 74 75 72 6e 73 20  |or).;.; returns |
00022800  69 6e 74 65 67 65 72 20  70 61 72 74 20 6f 66 20  |integer part of |
00022810  36 35 35 33 36 2a 6e 75  6d 62 65 72 2f 64 69 76  |65536*number/div|
00022820  69 73 6f 72 0a 3b 20 61  73 73 75 6d 65 73 20 61  |isor.; assumes a|
00022830  62 73 20 6e 75 6d 62 65  72 20 3c 20 36 35 35 33  |bs number < 6553|
00022840  36 20 2a 20 61 62 73 20  64 69 76 69 73 6f 72 0a  |6 * abs divisor.|
00022850  3b 20 69 66 20 74 68 69  73 20 6e 65 65 64 73 20  |; if this needs |
00022860  63 68 65 63 6b 69 6e 67  2c 20 6d 75 73 74 20 62  |checking, must b|
00022870  65 20 64 6f 6e 65 20 62  79 20 63 61 6c 6c 65 72  |e done by caller|
00022880  0a 3b 0a 0a 20 20 20 20  20 20 20 20 45 58 50 4f  |.;..        EXPO|
00022890  52 54 20 20 64 69 76 5f  66 72 61 63 31 36 0a 0a  |RT  div_frac16..|
000228a0  64 66 6e 73 74 61 20 20  44 43 42 20 20 20 20 20  |dfnsta  DCB     |
000228b0  22 64 69 76 5f 66 72 61  63 31 36 22 2c 20 30 0a  |"div_frac16", 0.|
000228c0  20 20 20 20 20 20 20 20  41 4c 49 47 4e 0a 64 66  |        ALIGN.df|
000228d0  6e 65 6e 64 20 20 44 43  44 20 20 20 20 20 26 66  |nend  DCD     &f|
000228e0  66 30 30 30 30 30 30 20  2b 20 64 66 6e 65 6e 64  |f000000 + dfnend|
000228f0  20 2d 20 64 66 6e 73 74  61 0a 0a 64 69 76 5f 66  | - dfnsta..div_f|
00022900  72 61 63 31 36 0a 0a 20  20 20 20 20 20 20 20 64  |rac16..        d|
00022910  69 76 31 36 20 20 20 61  31 2c 20 61 32 2c 20 61  |iv16   a1, a2, a|
00022920  31 2c 20 61 33 2c 20 61  34 0a 20 20 20 20 20 20  |1, a3, a4.      |
00022930  20 20 4d 4f 56 53 20 20  20 20 70 63 2c 20 6c 72  |  MOVS    pc, lr|
00022940  0a 0a 0a 0a 3b 20 6d 75  6c 5f 66 72 61 63 31 36  |....; mul_frac16|
00022950  0a 3b 20 61 20 6c 65 61  66 20 41 50 43 53 20 66  |.; a leaf APCS f|
00022960  75 6e 63 74 69 6f 6e 0a  3b 0a 3b 20 43 20 70 72  |unction.;.; C pr|
00022970  6f 74 6f 74 79 70 65 3a  0a 3b 20 69 6e 74 20 6d  |ototype:.; int m|
00022980  75 6c 5f 66 72 61 63 31  36 28 69 6e 74 20 78 2c  |ul_frac16(int x,|
00022990  20 69 6e 74 20 61 29 0a  3b 0a 3b 20 72 65 74 75  | int a).;.; retu|
000229a0  72 6e 73 20 33 32 2d 62  69 74 20 73 69 67 6e 65  |rns 32-bit signe|
000229b0  64 20 69 6e 74 65 67 65  72 20 78 2a 61 2f 36 35  |d integer x*a/65|
000229c0  35 33 36 0a 3b 20 61 73  73 75 6d 65 73 20 72 65  |536.; assumes re|
000229d0  73 75 6c 74 20 66 69 74  73 20 69 6e 74 6f 20 33  |sult fits into 3|
000229e0  32 2d 62 69 74 20 73 69  67 6e 65 64 20 72 65 70  |2-bit signed rep|
000229f0  72 65 73 65 6e 74 61 74  69 6f 6e 0a 3b 20 6e 6f  |resentation.; no|
00022a00  74 65 2c 20 6e 6f 20 6f  74 68 65 72 20 72 65 73  |te, no other res|
00022a10  74 72 69 63 74 69 6f 6e  73 20 6f 6e 20 61 20 2d  |trictions on a -|
00022a20  20 69 66 20 63 61 6e 20  67 75 61 72 61 6e 74 65  | if can guarante|
00022a30  65 20 61 62 73 20 61 20  3c 20 36 35 35 33 36 2c  |e abs a < 65536,|
00022a40  20 75 73 65 20 6d 75 6c  5f 66 72 61 63 31 36 63  | use mul_frac16c|
00022a50  20 69 6e 73 74 65 61 64  20 61 73 20 69 73 20 71  | instead as is q|
00022a60  75 69 63 6b 65 72 0a 3b  0a 0a 20 20 20 20 20 20  |uicker.;..      |
00022a70  20 20 45 58 50 4f 52 54  20 20 6d 75 6c 5f 66 72  |  EXPORT  mul_fr|
00022a80  61 63 31 36 0a 0a 6d 66  6e 73 74 61 20 20 44 43  |ac16..mfnsta  DC|
00022a90  42 20 20 20 20 20 22 6d  75 6c 5f 66 72 61 63 31  |B     "mul_frac1|
00022aa0  36 22 2c 20 30 0a 20 20  20 20 20 20 20 20 41 4c  |6", 0.        AL|
00022ab0  49 47 4e 0a 6d 66 6e 65  6e 64 20 20 44 43 44 20  |IGN.mfnend  DCD |
00022ac0  20 20 20 20 26 66 66 30  30 30 30 30 30 20 2b 20  |    &ff000000 + |
00022ad0  6d 66 6e 65 6e 64 20 2d  20 6d 66 6e 73 74 61 0a  |mfnend - mfnsta.|
00022ae0  0a 6d 75 6c 5f 66 72 61  63 31 36 0a 0a 20 20 20  |.mul_frac16..   |
00022af0  20 20 20 20 20 6d 75 6c  31 36 20 20 20 61 31 2c  |     mul16   a1,|
00022b00  20 61 32 2c 20 61 31 2c  20 61 33 2c 20 61 34 2c  | a2, a1, a3, a4,|
00022b10  20 69 70 0a 20 20 20 20  20 20 20 20 4d 4f 56 53  | ip.        MOVS|
00022b20  20 20 20 20 70 63 2c 20  6c 72 0a 0a 0a 0a 3b 20  |    pc, lr....; |
00022b30  6d 75 6c 5f 66 72 61 63  31 36 63 0a 3b 20 61 20  |mul_frac16c.; a |
00022b40  6c 65 61 66 20 41 50 43  53 20 66 75 6e 63 74 69  |leaf APCS functi|
00022b50  6f 6e 0a 3b 0a 3b 20 43  20 70 72 6f 74 6f 74 79  |on.;.; C prototy|
00022b60  70 65 3a 0a 3b 20 69 6e  74 20 6d 75 6c 5f 66 72  |pe:.; int mul_fr|
00022b70  61 63 31 36 63 28 69 6e  74 20 78 2c 20 69 6e 74  |ac16c(int x, int|
00022b80  20 61 29 0a 3b 0a 3b 20  72 65 74 75 72 6e 73 20  | a).;.; returns |
00022b90  33 32 2d 62 69 74 20 73  69 67 6e 65 64 20 69 6e  |32-bit signed in|
00022ba0  74 65 67 65 72 20 78 2a  61 2f 36 35 35 33 36 0a  |teger x*a/65536.|
00022bb0  3b 20 61 73 73 75 6d 65  73 20 61 62 73 20 61 20  |; assumes abs a |
00022bc0  3c 3d 36 35 35 33 36 0a  3b 20 69 66 20 69 74 20  |<=65536.; if it |
00022bd0  69 73 20 70 6f 73 73 69  62 6c 65 20 74 68 61 74  |is possible that|
00022be0  20 61 62 73 20 61 20 3e  20 36 35 35 33 36 2c 20  | abs a > 65536, |
00022bf0  63 61 6c 6c 65 72 20 6d  75 73 74 20 63 68 65 63  |caller must chec|
00022c00  6b 20 72 61 6e 67 65 20  26 20 65 69 74 68 65 72  |k range & either|
00022c10  20 6e 6f 74 20 63 61 6c  6c 20 66 6e 20 6f 72 20  | not call fn or |
00022c20  72 6f 75 6e 64 20 64 6f  77 6e 20 74 6f 20 36 35  |round down to 65|
00022c30  35 33 36 0a 3b 0a 0a 20  20 20 20 20 20 20 20 45  |536.;..        E|
00022c40  58 50 4f 52 54 20 20 6d  75 6c 5f 66 72 61 63 31  |XPORT  mul_frac1|
00022c50  36 63 0a 0a 6d 66 63 6e  73 74 61 20 44 43 42 20  |6c..mfcnsta DCB |
00022c60  20 20 20 20 22 6d 75 6c  5f 66 72 61 63 31 36 63  |    "mul_frac16c|
00022c70  22 2c 20 30 0a 20 20 20  20 20 20 20 20 41 4c 49  |", 0.        ALI|
00022c80  47 4e 0a 6d 66 63 6e 65  6e 64 20 44 43 44 20 20  |GN.mfcnend DCD  |
00022c90  20 20 20 26 66 66 30 30  30 30 30 30 20 2b 20 6d  |   &ff000000 + m|
00022ca0  66 63 6e 65 6e 64 20 2d  20 6d 66 63 6e 73 74 61  |fcnend - mfcnsta|
00022cb0  0a 0a 6d 75 6c 5f 66 72  61 63 31 36 63 0a 0a 20  |..mul_frac16c.. |
00022cc0  20 20 20 20 20 20 20 6d  75 6c 31 36 63 20 20 61  |       mul16c  a|
00022cd0  31 2c 20 61 32 2c 20 61  31 2c 20 61 33 0a 20 20  |1, a2, a1, a3.  |
00022ce0  20 20 20 20 20 20 4d 4f  56 53 20 20 20 20 70 63  |      MOVS    pc|
00022cf0  2c 20 6c 72 0a 0a 0a 0a  3b 20 73 71 72 74 5f 66  |, lr....; sqrt_f|
00022d00  72 61 63 31 36 0a 3b 20  61 20 6c 65 61 66 20 41  |rac16.; a leaf A|
00022d10  50 43 53 20 66 75 6e 63  74 69 6f 6e 0a 3b 0a 3b  |PCS function.;.;|
00022d20  20 43 20 70 72 6f 74 6f  74 79 70 65 3a 0a 3b 20  | C prototype:.; |
00022d30  69 6e 74 20 73 71 72 74  5f 66 72 61 63 31 36 28  |int sqrt_frac16(|
00022d40  75 6e 73 69 67 6e 65 64  20 69 6e 74 20 78 29 0a  |unsigned int x).|
00022d50  3b 0a 3b 20 72 65 74 75  72 6e 73 20 33 32 2d 62  |;.; returns 32-b|
00022d60  69 74 20 69 6e 74 65 67  65 72 20 73 71 72 74 28  |it integer sqrt(|
00022d70  78 3c 3c 31 36 29 0a 3b  0a 0a 20 20 20 20 20 20  |x<<16).;..      |
00022d80  20 20 45 58 50 4f 52 54  20 20 73 71 72 74 5f 66  |  EXPORT  sqrt_f|
00022d90  72 61 63 31 36 0a 0a 73  71 66 6e 73 74 61 20 44  |rac16..sqfnsta D|
00022da0  43 42 20 20 20 20 20 22  73 71 72 74 5f 66 72 61  |CB     "sqrt_fra|
00022db0  63 31 36 22 2c 20 30 0a  20 20 20 20 20 20 20 20  |c16", 0.        |
00022dc0  41 4c 49 47 4e 0a 73 71  66 6e 65 6e 64 20 44 43  |ALIGN.sqfnend DC|
00022dd0  44 20 20 20 20 20 26 66  66 30 30 30 30 30 30 20  |D     &ff000000 |
00022de0  2b 20 73 71 66 6e 65 6e  64 20 2d 20 73 71 66 6e  |+ sqfnend - sqfn|
00022df0  73 74 61 0a 0a 73 71 72  74 5f 66 72 61 63 31 36  |sta..sqrt_frac16|
00022e00  0a 0a 20 20 20 20 20 20  20 20 73 71 72 74 31 36  |..        sqrt16|
00022e10  20 20 61 31 2c 20 61 31  2c 20 61 32 2c 20 61 33  |  a1, a1, a2, a3|
00022e20  2c 20 61 34 2c 20 69 70  0a 20 20 20 20 20 20 20  |, a4, ip.       |
00022e30  20 4d 4f 56 53 20 20 20  20 70 63 2c 20 6c 72 0a  | MOVS    pc, lr.|
00022e40  0a 0a 0a 20 20 20 20 20  20 20 20 45 4e 44 0a 1a  |...        END..|
00022e50  80 1a 80 1a 80                                    |.....|
00022e55