Home » Archimedes archive » Micro User » MU 1992-02.adf » Listings » 32/SampleS

32/SampleS

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 » Micro User » MU 1992-02.adf » Listings
Filename: 32/SampleS
Read OK:
File size: 0AB6 bytes
Load address: 0000
Exec address: 0000
File contents
   10REM > <BasicSave$Dir>.SampleS
   20REM (c) Mike Cook
   30MODE 0
   40DIM CODE% &100
   50SBUFS=&8000 : REM 32K Sound buffer
   60DIM SBUF SBUFS
   70PROC_CSU
   80PRINT"Testing the Sampler"
   90PRINT SBUFS/1024;" K Buffer ";
  100PRINT" at 12KHZ"
  110REPEAT
  120PRINT"PRESS SPACE TO SAMPLE OR S TO SAVE"
  130A$=GET$
  140CASE A$ OF
  150WHEN " ": PROC_SAMPLE:T=TIME:PROC_SHOW
  160WHEN "S": OSCLI("SAVE SAMP "+STR$~SBUF+" "+STR$~(SBUF+SBUFS)):OSCLI("SETTYPE SAMP ED0")
  170ENDCASE
  180UNTIL FALSE
  190END
  200
  210DEF PROC_SHOW
  220CLS
  230MOVE 0,?SBUF*4
  240X%=0
  250FOR A%=SBUF TO SBUF+SBUFS STEP (SBUFS/640)
  260DRAW X%,?A%*4
  270X%+=2
  280NEXT
  290ENDPROC
  300
  310DEF PROC_SAMPLE
  320G%=SBUF:H%=SBUFS
  340CALL SAMP
  360ENDPROC
  370
  380DEF PROC_CSU :REM CODE SETUP
  390FOR A=0 TO 2 STEP 2
  400P%=CODE%
  410[
  420OPT A
  430.SAMP
  440MOV R0,#&18 \ UNUSED VECTOR NUMBER
  450ADR R1,GS \ ROUTINE TO CALL ON UNKNOWN SWI
  460MOV R2,#0 \ NUMBER TO PASS TO CALLING ROUTINE
  470SWI "OS_Claim" \ CLAIM VECTOR
  480SWI &80101 \ UNUSED VECTOR TO CALL READ IN ROUTINE
  490MOV R2,#0
  500MOV R0,#&18 \ VECTOR NUMBER
  510ADR R1,GS
  520SWI &20 \ RELEASE VECTOR
  530MOV R15,R14 \ BACK TO BASIC
  540
  550.GS \ GATHER SOUND
  560TEQP R15,#&C000003 \ DISABLE INTERRUPTS
  570MOV R0,#&3200000 \ BASE ADDRESS OF IOC
  580ADD R1,R0,#&50000 \ BASE OF PRINTER LATCH
  590
  600\ DELAY VALUES FOR 8MHz Clock
  610\ 16B 5.5KHz sampling
  620\ 10E 7.4KHz sampling
  630\ 0B5 11KHz sampling
  640\ 0A6 12KHz sampling
  650\ 080 Maximum rate for a 310
  660
  670MOV R2,#&00000 \ T1 VALUE HIGH
  680STR R2,[R0,#&54] \ T1 LATCH HIGH
  690MOV R2,#&A60000 \ T1 VALUE LOW
  700STR R2,[R0,#&50] \ T1 LATCH LOW
  710
  720LDR R2,[R0,#&18] \ GET IRQ MASK
  730ORR R2,R2,#&40 \ ENABLE T1
  740MOV  R2,R2,LSL #16
  750STR R2,[R0,#&18] \ MASK REG
  760
  770MOV R2,#&400000 \ CLEAR T1 INTERRUPT
  780STR R2,[R0,#&14] \ IRQ CLEAR
  790STR  R2,[R0,#&58] \ GO T1
  800
  810.TLOOP \ DELAY LOOP FOR TIMER T1
  820LDRB R2,[R0,#&10]
  830TST R2,#&40
  840BEQ TLOOP
  850MOV R2,#&400000 \ CLEAR T1 INTERRUPT
  860STR R2,[R0,#&14] \ IRQ CLEAR
  870
  880\ TAKE ONE SAMPLE
  890MOV R2,#0 \ CHIP SELECT LOW
  900STR R2,[R1,#&10]
  910MOV R3,#&A \ BITS TO READ IN
  920MOV R5,#0 \ COLLECT BITS HERE
  930.LOOP1
  940LDR R4,[R0,#&10] \ GET DATA
  950MOV R2,#&10000 \ CLOCK HIGH
  960STR R2,[R1,#&10] \ PUT OUT TO PRINTER
  970AND R4,R4,#1 \ MASK DATA BIT
  980MOV R5,R5,LSL #1 \ PREPARE R5 TO RECIEVE IT
  990ORR R5,R5,R4 \ MIX IT IN WITH R5
 1000MOV R2,#0 \ CLOCK LOW
 1010STR R2,[R1,#&10]
 1020STR R2,[R1,#&10]
 1030SUBS R3,R3,#1
 1040BNE LOOP1
 1050MOV R2,#&20000 \ CHIP SELECT HIGH
 1060STR R2,[R1,#&10]
 1070AND R5,R5,#&FF \ MASK OFF START BIT
 1080EOR R5,R5,#&FF \ TURN RIGHT WAY UP
 1090\R5 NOW HAS SAMPLE
 1100STRB R5,[R6],#1 \ PUT IT IN THE BUFFER
 1110SUBS R7,R7,#1  \ DECREMENT BYTES TO GO
 1120BNE  TLOOP \ BACK UNTIL ALL DONE
 1130
 1140\PREPARE TO EXIT
 1150MOV R2,#&400000 \ CLEAR T1 INTERRUPT
 1160STR R2,[R0,#&14] \ IRQ CLEAR
 1170LDR R2,[R0,#&18] \ GET IRQ MASK
 1180AND R2,R2,#&BF \ ENABLE T1
 1190MOV  R2,R2,LSL #16
 1200STR R2,[R0,#&18] \ MASK REG
 1210
 1220LDMFD R13!, {PC} \ BACK FROM WHENCE YOU CAME
 1230]
 1240NEXT
 1250ENDPROC

� > <BasicSave$Dir>.SampleS
� (c) Mike Cook
� 0
(� CODE% &100
2$SBUFS=&8000 : � 32K Sound buffer
<� SBUF SBUFS
F	�_CSU
P�"Testing the Sampler"
Z� SBUFS/1024;" K Buffer ";
d�" at 12KHZ"
n�
x)�"PRESS SPACE TO SAMPLE OR S TO SAVE"
�A$=�
�Ȏ A$ �
�� " ": �_SAMPLE:T=�:�_SHOW
�J� "S": �("SAVE SAMP "+�~SBUF+" "+�~(SBUF+SBUFS)):�("SETTYPE SAMP ED0")
��
�� �
��
�
�� �_SHOW
��
�� 0,?SBUF*4
�X%=0
�(� A%=SBUF � SBUF+SBUFS � (SBUFS/640)
� X%,?A%*4
	X%+=2
�
"�
,
6� �_SAMPLE
@G%=SBUF:H%=SBUFS
T
� SAMP
h�
r
|� �_CSU :� CODE SETUP
�� A=0 � 2 � 2
�P%=CODE%
�[
�	OPT A
�	.SAMP
�&MOV R0,#&18 \ UNUSED VECTOR NUMBER
�)ADR R1,GS \ ROUTINE � � � UNKNOWN SWI
�,MOV R2,#0 \ NUMBER � PASS � �ING ROUTINE
�!SWI "OS_Claim" \ CLAIM VECTOR
�/SWI &80101 \ UNUSED VECTOR � � � IN ROUTINE
�
MOV R2,#0
�MOV R0,#&18 \ VECTOR NUMBER
�
ADR R1,GS
SWI &20 \ RELEASE VECTOR
MOV R15,R14 \ BACK � BASIC

&.GS \ GATHER �
0)TEQP R15,#&C000003 \ DISABLE �ERRUPTS
:)MOV R0,#&3200000 \ BASE ADDRESS � IOC
D(ADD R1,R0,#&50000 \ BASE � �ER LATCH
N
X\ DELAY �UES � 8MHz Clock
b\ 16B 5.5KHz sampling
l\ 10E 7.4KHz sampling
v\ 0B5 11KHz sampling
�\ 0A6 12KHz sampling
� \ 080 Maximum rate for a 310
�
� MOV R2,#&00000 \ T1 �UE HIGH
�$STR R2,[R0,#&54] \ T1 LATCH HIGH
� MOV R2,#&A60000 \ T1 �UE LOW
�#STR R2,[R0,#&50] \ T1 LATCH LOW
�
�!LDR R2,[R0,#&18] \ � IRQ MASK
��R R2,R2,#&40 \ ENABLE T1
�MOV  R2,R2,LSL #16
�STR R2,[R0,#&18] \ MASK REG
�
"MOV R2,#&400000 \ � T1 �ERRUPT
STR R2,[R0,#&14] \ IRQ �
STR  R2,[R0,#&58] \ GO T1
 
*".TLOOP \ DELAY LOOP � TIMER T1
4LDRB R2,[R0,#&10]
>TST R2,#&40
H
BEQ TLOOP
R"MOV R2,#&400000 \ � T1 �ERRUPT
\STR R2,[R0,#&14] \ IRQ �
f
p\ TAKE �E SAMPLE
zMOV R2,#0 \ CHIP SELECT LOW
�STR R2,[R1,#&10]
�MOV R3,#&A \ BITS � � IN
�!MOV R5,#0 \ COLLECT BITS HERE
�
.LOOP1
�LDR R4,[R0,#&10] \ � �
�MOV R2,#&10000 \ CLOCK HIGH
�$STR R2,[R1,#&10] \ PUT OUT � �ER
�� R4,R4,#1 \ MASK � BIT
�.MOV R5,R5,LSL #1 \ PREPARE R5 � RECIEVE IT
�#�R R5,R5,R4 \ MIX IT IN WITH R5
�MOV R2,#0 \ CLOCK LOW
�STR R2,[R1,#&10]
�STR R2,[R1,#&10]
SUBS R3,R3,#1

BNE LOOP1
%MOV R2,#&20000 \ CHIP SELECT HIGH
$STR R2,[R1,#&10]
.#� R5,R5,#&FF \ MASK � START BIT
8$� R5,R5,#&FF \ TURN RIGHT WAY UP
B\R5 NOW HAS SAMPLE
L*STRB R5,[R6],#1 \ PUT IT IN THE BUFFER
V)SUBS R7,R7,#1  \ DECREMENT BYTES � GO
` BNE  TLOOP \ BACK � ALL DONE
j
t\PREPARE � EXIT
~"MOV R2,#&400000 \ � T1 �ERRUPT
�STR R2,[R0,#&14] \ IRQ �
�!LDR R2,[R0,#&18] \ � IRQ MASK
�� R2,R2,#&BF \ ENABLE T1
�MOV  R2,R2,LSL #16
�STR R2,[R0,#&18] \ MASK REG
�
�-LDMFD R13!, {PC} \ BACK FROM �CE YOU CAME
�]
��
��
�
00000000  0d 00 0a 1f f4 20 3e 20  3c 42 61 73 69 63 53 61  |..... > <BasicSa|
00000010  76 65 24 44 69 72 3e 2e  53 61 6d 70 6c 65 53 0d  |ve$Dir>.SampleS.|
00000020  00 14 13 f4 20 28 63 29  20 4d 69 6b 65 20 43 6f  |.... (c) Mike Co|
00000030  6f 6b 0d 00 1e 07 eb 20  30 0d 00 28 10 de 20 43  |ok..... 0..(.. C|
00000040  4f 44 45 25 20 26 31 30  30 0d 00 32 24 53 42 55  |ODE% &100..2$SBU|
00000050  46 53 3d 26 38 30 30 30  20 3a 20 f4 20 33 32 4b  |FS=&8000 : . 32K|
00000060  20 53 6f 75 6e 64 20 62  75 66 66 65 72 0d 00 3c  | Sound buffer..<|
00000070  10 de 20 53 42 55 46 20  53 42 55 46 53 0d 00 46  |.. SBUF SBUFS..F|
00000080  09 f2 5f 43 53 55 0d 00  50 1a f1 22 54 65 73 74  |.._CSU..P.."Test|
00000090  69 6e 67 20 74 68 65 20  53 61 6d 70 6c 65 72 22  |ing the Sampler"|
000000a0  0d 00 5a 1e f1 20 53 42  55 46 53 2f 31 30 32 34  |..Z.. SBUFS/1024|
000000b0  3b 22 20 4b 20 42 75 66  66 65 72 20 22 3b 0d 00  |;" K Buffer ";..|
000000c0  64 10 f1 22 20 61 74 20  31 32 4b 48 5a 22 0d 00  |d.." at 12KHZ"..|
000000d0  6e 05 f5 0d 00 78 29 f1  22 50 52 45 53 53 20 53  |n....x)."PRESS S|
000000e0  50 41 43 45 20 54 4f 20  53 41 4d 50 4c 45 20 4f  |PACE TO SAMPLE O|
000000f0  52 20 53 20 54 4f 20 53  41 56 45 22 0d 00 82 08  |R S TO SAVE"....|
00000100  41 24 3d be 0d 00 8c 0b  c8 8e 20 41 24 20 ca 0d  |A$=....... A$ ..|
00000110  00 96 1e c9 20 22 20 22  3a 20 f2 5f 53 41 4d 50  |.... " ": ._SAMP|
00000120  4c 45 3a 54 3d 91 3a f2  5f 53 48 4f 57 0d 00 a0  |LE:T=.:._SHOW...|
00000130  4a c9 20 22 53 22 3a 20  ff 28 22 53 41 56 45 20  |J. "S": .("SAVE |
00000140  53 41 4d 50 20 22 2b c3  7e 53 42 55 46 2b 22 20  |SAMP "+.~SBUF+" |
00000150  22 2b c3 7e 28 53 42 55  46 2b 53 42 55 46 53 29  |"+.~(SBUF+SBUFS)|
00000160  29 3a ff 28 22 53 45 54  54 59 50 45 20 53 41 4d  |):.("SETTYPE SAM|
00000170  50 20 45 44 30 22 29 0d  00 aa 05 cb 0d 00 b4 07  |P ED0").........|
00000180  fd 20 a3 0d 00 be 05 e0  0d 00 c8 04 0d 00 d2 0c  |. ..............|
00000190  dd 20 f2 5f 53 48 4f 57  0d 00 dc 05 db 0d 00 e6  |. ._SHOW........|
000001a0  0f ec 20 30 2c 3f 53 42  55 46 2a 34 0d 00 f0 08  |.. 0,?SBUF*4....|
000001b0  58 25 3d 30 0d 00 fa 28  e3 20 41 25 3d 53 42 55  |X%=0...(. A%=SBU|
000001c0  46 20 b8 20 53 42 55 46  2b 53 42 55 46 53 20 88  |F . SBUF+SBUFS .|
000001d0  20 28 53 42 55 46 53 2f  36 34 30 29 0d 01 04 0e  | (SBUFS/640)....|
000001e0  df 20 58 25 2c 3f 41 25  2a 34 0d 01 0e 09 58 25  |. X%,?A%*4....X%|
000001f0  2b 3d 32 0d 01 18 05 ed  0d 01 22 05 e1 0d 01 2c  |+=2......."....,|
00000200  04 0d 01 36 0e dd 20 f2  5f 53 41 4d 50 4c 45 0d  |...6.. ._SAMPLE.|
00000210  01 40 14 47 25 3d 53 42  55 46 3a 48 25 3d 53 42  |.@.G%=SBUF:H%=SB|
00000220  55 46 53 0d 01 54 0a d6  20 53 41 4d 50 0d 01 68  |UFS..T.. SAMP..h|
00000230  05 e1 0d 01 72 04 0d 01  7c 19 dd 20 f2 5f 43 53  |....r...|.. ._CS|
00000240  55 20 3a f4 20 43 4f 44  45 20 53 45 54 55 50 0d  |U :. CODE SETUP.|
00000250  01 86 11 e3 20 41 3d 30  20 b8 20 32 20 88 20 32  |.... A=0 . 2 . 2|
00000260  0d 01 90 0c 50 25 3d 43  4f 44 45 25 0d 01 9a 05  |....P%=CODE%....|
00000270  5b 0d 01 a4 09 4f 50 54  20 41 0d 01 ae 09 2e 53  |[....OPT A.....S|
00000280  41 4d 50 0d 01 b8 26 4d  4f 56 20 52 30 2c 23 26  |AMP...&MOV R0,#&|
00000290  31 38 20 5c 20 55 4e 55  53 45 44 20 56 45 43 54  |18 \ UNUSED VECT|
000002a0  4f 52 20 4e 55 4d 42 45  52 0d 01 c2 29 41 44 52  |OR NUMBER...)ADR|
000002b0  20 52 31 2c 47 53 20 5c  20 52 4f 55 54 49 4e 45  | R1,GS \ ROUTINE|
000002c0  20 b8 20 d6 20 ee 20 55  4e 4b 4e 4f 57 4e 20 53  | . . . UNKNOWN S|
000002d0  57 49 0d 01 cc 2c 4d 4f  56 20 52 32 2c 23 30 20  |WI...,MOV R2,#0 |
000002e0  5c 20 4e 55 4d 42 45 52  20 b8 20 50 41 53 53 20  |\ NUMBER . PASS |
000002f0  b8 20 d6 49 4e 47 20 52  4f 55 54 49 4e 45 0d 01  |. .ING ROUTINE..|
00000300  d6 21 53 57 49 20 22 4f  53 5f 43 6c 61 69 6d 22  |.!SWI "OS_Claim"|
00000310  20 5c 20 43 4c 41 49 4d  20 56 45 43 54 4f 52 0d  | \ CLAIM VECTOR.|
00000320  01 e0 2f 53 57 49 20 26  38 30 31 30 31 20 5c 20  |../SWI &80101 \ |
00000330  55 4e 55 53 45 44 20 56  45 43 54 4f 52 20 b8 20  |UNUSED VECTOR . |
00000340  d6 20 f3 20 49 4e 20 52  4f 55 54 49 4e 45 0d 01  |. . IN ROUTINE..|
00000350  ea 0d 4d 4f 56 20 52 32  2c 23 30 0d 01 f4 1f 4d  |..MOV R2,#0....M|
00000360  4f 56 20 52 30 2c 23 26  31 38 20 5c 20 56 45 43  |OV R0,#&18 \ VEC|
00000370  54 4f 52 20 4e 55 4d 42  45 52 0d 01 fe 0d 41 44  |TOR NUMBER....AD|
00000380  52 20 52 31 2c 47 53 0d  02 08 1c 53 57 49 20 26  |R R1,GS....SWI &|
00000390  32 30 20 5c 20 52 45 4c  45 41 53 45 20 56 45 43  |20 \ RELEASE VEC|
000003a0  54 4f 52 0d 02 12 1e 4d  4f 56 20 52 31 35 2c 52  |TOR....MOV R15,R|
000003b0  31 34 20 5c 20 42 41 43  4b 20 b8 20 42 41 53 49  |14 \ BACK . BASI|
000003c0  43 0d 02 1c 04 0d 02 26  12 2e 47 53 20 5c 20 47  |C......&..GS \ G|
000003d0  41 54 48 45 52 20 d4 0d  02 30 29 54 45 51 50 20  |ATHER ...0)TEQP |
000003e0  52 31 35 2c 23 26 43 30  30 30 30 30 33 20 5c 20  |R15,#&C000003 \ |
000003f0  44 49 53 41 42 4c 45 20  a8 45 52 52 55 50 54 53  |DISABLE .ERRUPTS|
00000400  0d 02 3a 29 4d 4f 56 20  52 30 2c 23 26 33 32 30  |..:)MOV R0,#&320|
00000410  30 30 30 30 20 5c 20 42  41 53 45 20 41 44 44 52  |0000 \ BASE ADDR|
00000420  45 53 53 20 ca 20 49 4f  43 0d 02 44 28 41 44 44  |ESS . IOC..D(ADD|
00000430  20 52 31 2c 52 30 2c 23  26 35 30 30 30 30 20 5c  | R1,R0,#&50000 \|
00000440  20 42 41 53 45 20 ca 20  f1 45 52 20 4c 41 54 43  | BASE . .ER LATC|
00000450  48 0d 02 4e 04 0d 02 58  1d 5c 20 44 45 4c 41 59  |H..N...X.\ DELAY|
00000460  20 bb 55 45 53 20 e3 20  38 4d 48 7a 20 43 6c 6f  | .UES . 8MHz Clo|
00000470  63 6b 0d 02 62 19 5c 20  31 36 42 20 35 2e 35 4b  |ck..b.\ 16B 5.5K|
00000480  48 7a 20 73 61 6d 70 6c  69 6e 67 0d 02 6c 19 5c  |Hz sampling..l.\|
00000490  20 31 30 45 20 37 2e 34  4b 48 7a 20 73 61 6d 70  | 10E 7.4KHz samp|
000004a0  6c 69 6e 67 0d 02 76 18  5c 20 30 42 35 20 31 31  |ling..v.\ 0B5 11|
000004b0  4b 48 7a 20 73 61 6d 70  6c 69 6e 67 0d 02 80 18  |KHz sampling....|
000004c0  5c 20 30 41 36 20 31 32  4b 48 7a 20 73 61 6d 70  |\ 0A6 12KHz samp|
000004d0  6c 69 6e 67 0d 02 8a 20  5c 20 30 38 30 20 4d 61  |ling... \ 080 Ma|
000004e0  78 69 6d 75 6d 20 72 61  74 65 20 66 6f 72 20 61  |ximum rate for a|
000004f0  20 33 31 30 0d 02 94 04  0d 02 9e 20 4d 4f 56 20  | 310....... MOV |
00000500  52 32 2c 23 26 30 30 30  30 30 20 5c 20 54 31 20  |R2,#&00000 \ T1 |
00000510  bb 55 45 20 48 49 47 48  0d 02 a8 24 53 54 52 20  |.UE HIGH...$STR |
00000520  52 32 2c 5b 52 30 2c 23  26 35 34 5d 20 5c 20 54  |R2,[R0,#&54] \ T|
00000530  31 20 4c 41 54 43 48 20  48 49 47 48 0d 02 b2 20  |1 LATCH HIGH... |
00000540  4d 4f 56 20 52 32 2c 23  26 41 36 30 30 30 30 20  |MOV R2,#&A60000 |
00000550  5c 20 54 31 20 bb 55 45  20 4c 4f 57 0d 02 bc 23  |\ T1 .UE LOW...#|
00000560  53 54 52 20 52 32 2c 5b  52 30 2c 23 26 35 30 5d  |STR R2,[R0,#&50]|
00000570  20 5c 20 54 31 20 4c 41  54 43 48 20 4c 4f 57 0d  | \ T1 LATCH LOW.|
00000580  02 c6 04 0d 02 d0 21 4c  44 52 20 52 32 2c 5b 52  |......!LDR R2,[R|
00000590  30 2c 23 26 31 38 5d 20  5c 20 a5 20 49 52 51 20  |0,#&18] \ . IRQ |
000005a0  4d 41 53 4b 0d 02 da 1d  84 52 20 52 32 2c 52 32  |MASK.....R R2,R2|
000005b0  2c 23 26 34 30 20 5c 20  45 4e 41 42 4c 45 20 54  |,#&40 \ ENABLE T|
000005c0  31 0d 02 e4 16 4d 4f 56  20 20 52 32 2c 52 32 2c  |1....MOV  R2,R2,|
000005d0  4c 53 4c 20 23 31 36 0d  02 ee 1f 53 54 52 20 52  |LSL #16....STR R|
000005e0  32 2c 5b 52 30 2c 23 26  31 38 5d 20 5c 20 4d 41  |2,[R0,#&18] \ MA|
000005f0  53 4b 20 52 45 47 0d 02  f8 04 0d 03 02 22 4d 4f  |SK REG......."MO|
00000600  56 20 52 32 2c 23 26 34  30 30 30 30 30 20 5c 20  |V R2,#&400000 \ |
00000610  d8 20 54 31 20 a8 45 52  52 55 50 54 0d 03 0c 1c  |. T1 .ERRUPT....|
00000620  53 54 52 20 52 32 2c 5b  52 30 2c 23 26 31 34 5d  |STR R2,[R0,#&14]|
00000630  20 5c 20 49 52 51 20 d8  0d 03 16 1d 53 54 52 20  | \ IRQ .....STR |
00000640  20 52 32 2c 5b 52 30 2c  23 26 35 38 5d 20 5c 20  | R2,[R0,#&58] \ |
00000650  47 4f 20 54 31 0d 03 20  04 0d 03 2a 22 2e 54 4c  |GO T1.. ...*".TL|
00000660  4f 4f 50 20 5c 20 44 45  4c 41 59 20 4c 4f 4f 50  |OOP \ DELAY LOOP|
00000670  20 e3 20 54 49 4d 45 52  20 54 31 0d 03 34 15 4c  | . TIMER T1..4.L|
00000680  44 52 42 20 52 32 2c 5b  52 30 2c 23 26 31 30 5d  |DRB R2,[R0,#&10]|
00000690  0d 03 3e 0f 54 53 54 20  52 32 2c 23 26 34 30 0d  |..>.TST R2,#&40.|
000006a0  03 48 0d 42 45 51 20 54  4c 4f 4f 50 0d 03 52 22  |.H.BEQ TLOOP..R"|
000006b0  4d 4f 56 20 52 32 2c 23  26 34 30 30 30 30 30 20  |MOV R2,#&400000 |
000006c0  5c 20 d8 20 54 31 20 a8  45 52 52 55 50 54 0d 03  |\ . T1 .ERRUPT..|
000006d0  5c 1c 53 54 52 20 52 32  2c 5b 52 30 2c 23 26 31  |\.STR R2,[R0,#&1|
000006e0  34 5d 20 5c 20 49 52 51  20 d8 0d 03 66 04 0d 03  |4] \ IRQ ...f...|
000006f0  70 14 5c 20 54 41 4b 45  20 ee 45 20 53 41 4d 50  |p.\ TAKE .E SAMP|
00000700  4c 45 0d 03 7a 1f 4d 4f  56 20 52 32 2c 23 30 20  |LE..z.MOV R2,#0 |
00000710  5c 20 43 48 49 50 20 53  45 4c 45 43 54 20 4c 4f  |\ CHIP SELECT LO|
00000720  57 0d 03 84 14 53 54 52  20 52 32 2c 5b 52 31 2c  |W....STR R2,[R1,|
00000730  23 26 31 30 5d 0d 03 8e  1c 4d 4f 56 20 52 33 2c  |#&10]....MOV R3,|
00000740  23 26 41 20 5c 20 42 49  54 53 20 b8 20 f3 20 49  |#&A \ BITS . . I|
00000750  4e 0d 03 98 21 4d 4f 56  20 52 35 2c 23 30 20 5c  |N...!MOV R5,#0 \|
00000760  20 43 4f 4c 4c 45 43 54  20 42 49 54 53 20 48 45  | COLLECT BITS HE|
00000770  52 45 0d 03 a2 0a 2e 4c  4f 4f 50 31 0d 03 ac 1a  |RE.....LOOP1....|
00000780  4c 44 52 20 52 34 2c 5b  52 30 2c 23 26 31 30 5d  |LDR R4,[R0,#&10]|
00000790  20 5c 20 a5 20 dc 0d 03  b6 1f 4d 4f 56 20 52 32  | \ . .....MOV R2|
000007a0  2c 23 26 31 30 30 30 30  20 5c 20 43 4c 4f 43 4b  |,#&10000 \ CLOCK|
000007b0  20 48 49 47 48 0d 03 c0  24 53 54 52 20 52 32 2c  | HIGH...$STR R2,|
000007c0  5b 52 31 2c 23 26 31 30  5d 20 5c 20 50 55 54 20  |[R1,#&10] \ PUT |
000007d0  4f 55 54 20 b8 20 f1 45  52 0d 03 ca 1b 80 20 52  |OUT . .ER..... R|
000007e0  34 2c 52 34 2c 23 31 20  5c 20 4d 41 53 4b 20 dc  |4,R4,#1 \ MASK .|
000007f0  20 42 49 54 0d 03 d4 2e  4d 4f 56 20 52 35 2c 52  | BIT....MOV R5,R|
00000800  35 2c 4c 53 4c 20 23 31  20 5c 20 50 52 45 50 41  |5,LSL #1 \ PREPA|
00000810  52 45 20 52 35 20 b8 20  52 45 43 49 45 56 45 20  |RE R5 . RECIEVE |
00000820  49 54 0d 03 de 23 84 52  20 52 35 2c 52 35 2c 52  |IT...#.R R5,R5,R|
00000830  34 20 5c 20 4d 49 58 20  49 54 20 49 4e 20 57 49  |4 \ MIX IT IN WI|
00000840  54 48 20 52 35 0d 03 e8  19 4d 4f 56 20 52 32 2c  |TH R5....MOV R2,|
00000850  23 30 20 5c 20 43 4c 4f  43 4b 20 4c 4f 57 0d 03  |#0 \ CLOCK LOW..|
00000860  f2 14 53 54 52 20 52 32  2c 5b 52 31 2c 23 26 31  |..STR R2,[R1,#&1|
00000870  30 5d 0d 03 fc 14 53 54  52 20 52 32 2c 5b 52 31  |0]....STR R2,[R1|
00000880  2c 23 26 31 30 5d 0d 04  06 11 53 55 42 53 20 52  |,#&10]....SUBS R|
00000890  33 2c 52 33 2c 23 31 0d  04 10 0d 42 4e 45 20 4c  |3,R3,#1....BNE L|
000008a0  4f 4f 50 31 0d 04 1a 25  4d 4f 56 20 52 32 2c 23  |OOP1...%MOV R2,#|
000008b0  26 32 30 30 30 30 20 5c  20 43 48 49 50 20 53 45  |&20000 \ CHIP SE|
000008c0  4c 45 43 54 20 48 49 47  48 0d 04 24 14 53 54 52  |LECT HIGH..$.STR|
000008d0  20 52 32 2c 5b 52 31 2c  23 26 31 30 5d 0d 04 2e  | R2,[R1,#&10]...|
000008e0  23 80 20 52 35 2c 52 35  2c 23 26 46 46 20 5c 20  |#. R5,R5,#&FF \ |
000008f0  4d 41 53 4b 20 87 20 53  54 41 52 54 20 42 49 54  |MASK . START BIT|
00000900  0d 04 38 24 82 20 52 35  2c 52 35 2c 23 26 46 46  |..8$. R5,R5,#&FF|
00000910  20 5c 20 54 55 52 4e 20  52 49 47 48 54 20 57 41  | \ TURN RIGHT WA|
00000920  59 20 55 50 0d 04 42 16  5c 52 35 20 4e 4f 57 20  |Y UP..B.\R5 NOW |
00000930  48 41 53 20 53 41 4d 50  4c 45 0d 04 4c 2a 53 54  |HAS SAMPLE..L*ST|
00000940  52 42 20 52 35 2c 5b 52  36 5d 2c 23 31 20 5c 20  |RB R5,[R6],#1 \ |
00000950  50 55 54 20 49 54 20 49  4e 20 54 48 45 20 42 55  |PUT IT IN THE BU|
00000960  46 46 45 52 0d 04 56 29  53 55 42 53 20 52 37 2c  |FFER..V)SUBS R7,|
00000970  52 37 2c 23 31 20 20 5c  20 44 45 43 52 45 4d 45  |R7,#1  \ DECREME|
00000980  4e 54 20 42 59 54 45 53  20 b8 20 47 4f 0d 04 60  |NT BYTES . GO..`|
00000990  20 42 4e 45 20 20 54 4c  4f 4f 50 20 5c 20 42 41  | BNE  TLOOP \ BA|
000009a0  43 4b 20 fd 20 41 4c 4c  20 44 4f 4e 45 0d 04 6a  |CK . ALL DONE..j|
000009b0  04 0d 04 74 13 5c 50 52  45 50 41 52 45 20 b8 20  |...t.\PREPARE . |
000009c0  45 58 49 54 0d 04 7e 22  4d 4f 56 20 52 32 2c 23  |EXIT..~"MOV R2,#|
000009d0  26 34 30 30 30 30 30 20  5c 20 d8 20 54 31 20 a8  |&400000 \ . T1 .|
000009e0  45 52 52 55 50 54 0d 04  88 1c 53 54 52 20 52 32  |ERRUPT....STR R2|
000009f0  2c 5b 52 30 2c 23 26 31  34 5d 20 5c 20 49 52 51  |,[R0,#&14] \ IRQ|
00000a00  20 d8 0d 04 92 21 4c 44  52 20 52 32 2c 5b 52 30  | ....!LDR R2,[R0|
00000a10  2c 23 26 31 38 5d 20 5c  20 a5 20 49 52 51 20 4d  |,#&18] \ . IRQ M|
00000a20  41 53 4b 0d 04 9c 1c 80  20 52 32 2c 52 32 2c 23  |ASK..... R2,R2,#|
00000a30  26 42 46 20 5c 20 45 4e  41 42 4c 45 20 54 31 0d  |&BF \ ENABLE T1.|
00000a40  04 a6 16 4d 4f 56 20 20  52 32 2c 52 32 2c 4c 53  |...MOV  R2,R2,LS|
00000a50  4c 20 23 31 36 0d 04 b0  1f 53 54 52 20 52 32 2c  |L #16....STR R2,|
00000a60  5b 52 30 2c 23 26 31 38  5d 20 5c 20 4d 41 53 4b  |[R0,#&18] \ MASK|
00000a70  20 52 45 47 0d 04 ba 04  0d 04 c4 2d 4c 44 4d 46  | REG.......-LDMF|
00000a80  44 20 52 31 33 21 2c 20  7b 50 43 7d 20 5c 20 42  |D R13!, {PC} \ B|
00000a90  41 43 4b 20 46 52 4f 4d  20 c9 43 45 20 59 4f 55  |ACK FROM .CE YOU|
00000aa0  20 43 41 4d 45 0d 04 ce  05 5d 0d 04 d8 05 ed 0d  | CAME....]......|
00000ab0  04 e2 05 e1 0d ff                                 |......|
00000ab6