Home » Archimedes archive » Micro User » MU 1992-04.adf » Listings » 32bit/!SnScope/!Run

32bit/!SnScope/!Run

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-04.adf » Listings
Filename: 32bit/!SnScope/!Run
Read OK:
File size: 1B63 bytes
Load address: 0000
Exec address: 0000
File contents
   10REM >!SnScope.!Run
   20MODE9
   30MSP%=9
   40DIM CODE% &200, BP% &400,S1%(MSP%),S2%(MSP%)
   50PRINT TAB(0,5)"THE BEEB BODY BUILDING COURSE"
   60PRINT TAB(0,8)"By Mike Cook"
   70PRINT TAB(0,10)"Sound Sampler Oscilloscope"
   80PRINT TAB(0,15)"You need the Sound Sampler for this"
   90PRINT"Any key to continue"
  100A$=GET$
  110SPEED%=0:PROC_CSU
  120SW%=1:T%=180
  130MARK=FALSE:TRIG=TRUE
  140JOIN=FALSE:Sing=TRUE
  150SYS"OS_ReadDynamicArea",2 TO ,A%
  160SP%=&2000000-A%
  170
  180FOR A%=BP% TO BP%+640
  190?A%=128
  200NEXT
  210
  220*POINTER 1
  230MOUSE RECTANGLE 0,500,1280,512
  240PROC_SETUP
  250GCOL 3,2
  260LINE 0,760,1279,760
  270
  280REPEAT
  290PROC_LAB
  300DP%=BP%+320*(SW% EOR 1)
  310IF JOIN THEN PROC_JOIN
  320GCOL 3,1
  330MOUSE LX%,Y%,B1%
  340LINE LX%,508,LX%,1019
  350REPEAT
  360MOUSE X%,Y%,B1%
  370IF X%<>LX% THEN
  380   GCOL 3,1
  390   LINE LX%,508,LX%,1019
  400   LINE X%,508,X%,1019
  410   LX%=X%
  420   PRINTTAB(10,22);X%>>2;SPC(3)
  430   PRINTSPC(10);((X%>>2)*S2%(SPEED%))/1000;"mS";SPC(3)
  440   PRINTTAB(10,25);255-?(DP%+(X%>>2));SPC(3)
  450   IF MARK THEN
  460      PRINTTAB(15,22);"Time Difference ";(X%>>2)-MKT%;SPC(3)
  470      PRINTTAB(32,23);(((X%>>2)-MKT%)*S2%(SPEED%))/1000;"mS";SPC(3)
  480      PRINTTAB(15,25);"Amplitude Difference ";(255-?(DP%+(X%>>2)))-MKA%;SPC(3)
  490   ENDIF
  500ENDIF
  510
  520IF B1%=4 THEN PROC_SETUP:PRINT TAB(0,20);"RUNNING":PROC_RUN:PRINTTAB(0,20);SPC(7)
  530IF B1%=2 THEN PROC_OPTIONS
  540IF B1%=1 THEN PROC_MARK
  550UNTIL B1%=4 OR B1%=2
  560UNTIL FALSE
  570
  580DEF PROC_LAB
  590PRINTTAB(0,18)"Select - Run | Menu | Adjust - Mark"
  600FOR A%=19 TO 28
  610PRINT TAB(0,A%)SPC(40)
  620NEXT
  630PRINTTAB(0,27);S2%(SPEED%);"uS per sample"
  640PRINTTAB(0,22)"Time step"
  650PRINTTAB(0,25)"Amplitude"
  660IF JOIN THEN PRINTTAB(0,20)"Joined" ELSE PRINTTAB(0,20)"Dots  "
  670IF Sing THEN PRINTTAB(13,20)"Single Shot" ELSE PRINTTAB(13,20)"Repetitive"
  680IF TRIG THEN PRINTTAB(28,20)"Trigger ";T% ELSE PRINTTAB(28,20)"Trigger OFF"
  690ENDPROC
  700
  710DEF PROC_MARK
  720IF MARK THEN
  730 MARK=FALSE
  740 GCOL 3,4
  750 LINE MX%,508,MX%,1019
  760 PRINTTAB(15,22);SPC(24)
  770 PRINTTAB(17,23);SPC(22)
  780 PRINTTAB(15,25);SPC(24)
  790ELSE
  800 MARK=TRUE
  810 MKA%=255-?(DP%+(X%>>2))
  820 MKT%=X%>>2
  830 MX%=X%
  840 GCOL 1,4
  850 LINE MX%,508,MX%,1019
  860ENDIF
  870PROC_EMPTY
  880ENDPROC
  890
  900DEF PROC_OPTIONS
  910LINE X%,508,X%,1019
  920PRINTTAB(0,27)SPC(20)
  930PRINTTAB(0,20)"Options:-";SPC(30)
  940PRINT"T : Trigger ON/OFF   V : Trigger Value"
  950PRINT"S : Single shot      R : Repetitive"
  960PRINT"J : Join the dots    D : Sample Dots"
  970PRINT"+ : Increment Time   - : Decrement Time"
  980PRINT SPC(30)
  990PRINTTAB(0,25)"Choice? ";
 1000A$=GET$:PRINTA$
 1010IF A$="J" OR A$="j" THEN JOIN=TRUE:PROC_JOIN
 1020IF A$="T" OR A$="t" THEN TRIG=NOT(TRIG)
 1030IF A$="D" OR A$="d" THEN JOIN=FALSE:PROC_DOTS
 1040IF A$="S" OR A$="s" THEN Sing=TRUE
 1050IF A$="R" OR A$="r" THEN Sing=FALSE
 1060IF A$="V" OR A$="v" THEN PROC_TRIGV
 1070IF A$="+" OR A$="=" THEN SPEED%+=1:IF SPEED%=MSP% THEN SPEED%-=1
 1080IF A$="-" OR A$="_" THEN SPEED%-=1:IF SPEED%<0 THEN SPEED%=0
 1090ENDPROC
 1100
 1110DEF PROC_JOIN
 1120PROC_DD(5)
 1130ENDPROC
 1140
 1150DEF PROC_DOTS
 1160GCOL 0,0
 1170RECTANGLEFILL 4,508,1270,508
 1180PROC_DD(69)
 1190ENDPROC
 1200
 1210DEF PROC_DD(P%)
 1220GCOL 0,2:DX%=1
 1230PLOT 69,0,1019-(?DP%)*2
 1240FOR A%=4 TO 1279 STEP 4
 1250PLOT P%,A%,1019-(?(DP%+DX%))*2
 1260DX%+=1
 1270NEXT
 1280ENDPROC
 1290
 1300DEF PROC_TRIGV
 1310LOCAL t%
 1320REPEAT
 1330PRINTTAB(0,26)"Trigger Value between 128 and 230"
 1340PRINT"Current Trigger ";T%;SPC(3)
 1350PRINTTAB(0,28)SPC(25)
 1360PRINTTAB(0,28)"Enter new value ";
 1370INPUT t%
 1380UNTIL t%>127 AND t%< 231
 1390T%=t%
 1400ENDPROC
 1410
 1420DEF PROC_SETUP
 1430CLS:CLG
 1440GCOL 0,7
 1450RECTANGLE 0,504,1279,516
 1460IF Sing AND TRIG THEN PRINTTAB(0,18)"Waiting for trigger" ELSE PRINT TAB(0,18);"Space to freeze";SPC(6)
 1470ENDPROC
 1480
 1490DEF PROC_RUN
 1500*POINTER 0
 1510SW=1:MARK=FALSE
 1520FOR A%=0 TO 640 STEP 4
 1530BP%!A%=0
 1540NEXT
 1550GCOL 3,2
 1560LINE 0,1019,1279,1019
 1570IF TRIG THEN ?TVAL=255-T% ELSE ?TVAL=0
 1580!SPE1=(S1%(SPEED%) AND &FF)<<16
 1590!SPE2=(S1%(SPEED%) >> 8)<<16
 1600REPEAT
 1610PROC_SAMPLE
 1620PROC_DISPLAY
 1630UNTIL INKEY(-99) OR Sing
 1640PROC_EMPTY
 1650*POINTER 1
 1660MOUSE RECTANGLE 0,500,1280,512
 1670ENDPROC
 1680
 1690DEF PROC_EMPTY
 1700REPEAT
 1710MOUSE X%,Y%,B%
 1720UNTIL B%=0
 1730ENDPROC
 1740
 1750DEF PROC_DISPLAY
 1760A%=BP%
 1770B%=SP%
 1780CALL DISP
 1790ENDPROC
 1800
 1810DEF PROC_SAMPLE
 1820G%=BP%+320*SW%:H%=320
 1830SW%=SW% EOR 1
 1840CALL SAMP
 1850ENDPROC
 1860
 1870DEF PROC_CSU :REM CODE SETUP
 1880FOR A=0 TO 2 STEP 2
 1890P%=CODE%
 1900[
 1910OPT A
 1920.SAMP
 1930MOV R0,#&18 \ UNUSED VECTOR NUMBER
 1940ADR R1,GS \ ROUTINE TO CALL ON UNKNOWN SWI
 1950MOV R2,#0 \ NUMBER TO PASS TO CALLING ROUTINE
 1960SWI "OS_Claim" \ CLAME VECTOR
 1970SWI &80101 \ UNUSED VECTOR TO CALL READ IN ROUTINE
 1980MOV R2,#0
 1990MOV R0,#&18 \ VECTOR NUMBER
 2000ADR R1,GS
 2010SWI &20 \ RELESE VECTOR
 2020MOV R15,R14 \ BACK TO BASIC
 2030
 2040.TVAL EQUD 0 \ TRIGGER VALUE
 2050.SPE1 EQUD 0 \ LSB OF SPEED
 2060.SPE2 EQUD 0 \ MSB OF SPEED
 2070.GS \ GATHER SOUND
 2080TEQP R15,#&C000003 \DISABLE INTERRUPTS
 2090MOV R0,#&3200000 \ BASE ADDRESS OF IOC
 2100ADD R1,R0,#&50000 \ BASE OF PRINTER LATCH
 2110
 2120\ HOLD FOR TRIGGER
 2130LDR R2,TVAL
 2140CMP R2,#0
 2150BEQ TRUN \ SKIP THIS IF TRIGGER VALUE IS 0
 2160.THOLD
 2170MOV R2,#0 \ CHIP SELECT LOW
 2180STR R2,[R1,#&10]
 2190MOV R3,#&A \ BITS TO READ IN
 2200MOV R5,#0 \ COLLECT BITS HERE
 2210.LOOP2
 2220LDR R4,[R0,#&10] \ GET DATA
 2230MOV R2,#&10000 \ CLOCK HIGH
 2240STR R2,[R1,#&10] \ PUT OUT TO PRINTER
 2250AND R4,R4,#1 \ MASK DATA BIT
 2260MOV R5,R5,LSL #1 \ PREPARE R5 TO RECIEVE IT
 2270ORR R5,R5,R4 \ MIX IT IN WITH R5
 2280MOV R2,#0 \ CLOCK LOW
 2290STR R2,[R1,#&10]
 2300SUBS R3,R3,#1
 2310BNE LOOP2
 2320MOV R2,#&20000 \ CHIP SELECT HIGH
 2330STR R2,[R1,#&10]
 2340AND R5,R5,#&FF \ MASK OFF START BIT
 2350\R5 NOW HAS SAMPLE
 2360LDR R2,TVAL
 2370CMP R2,R5
 2380BLS THOLD
 2390
 2400.TRUN
 2410LDR R2,SPE2 \ T1 VALUE HIGH
 2420STR R2,[R0,#&54] \ T1 LATCH HIGH
 2430LDR R2,SPE1 \ T1 VALUE LOW
 2440STR R2,[R0,#&50] \ T1 LATCH LOW
 2450
 2460LDR R2,[R0,#&18] \ GET IRQ MASK
 2470ORR R2,R2,#&40 \ ENABLE T1
 2480MOV  R2,R2,LSL #16
 2490STR R2,[R0,#&18] \ MASK REG
 2500
 2510MOV R2,#&400000 \ CLEAR T1 INTERRUPT
 2520STR R2,[R0,#&14] \ IRQ CLEAR
 2530STR  R2,[R0,#&58] \ GO T1
 2540
 2550.TLOOP \ DELAY LOOP FOR TIMER T1
 2560LDRB R2,[R0,#&10]
 2570TST R2,#&40
 2580BEQ TLOOP
 2590MOV R2,#&400000 \ CLEAR T1 INTERRUPT
 2600STR R2,[R0,#&14] \ IRQ CLEAR
 2610
 2620\ TAKE ONE SAMPLE
 2630MOV R2,#0 \ CHIP SELECT LOW
 2640STR R2,[R1,#&10]
 2650MOV R3,#&A \ BITS TO READ IN
 2660MOV R5,#0 \ COLLECT BITS HERE
 2670.LOOP1
 2680LDR R4,[R0,#&10] \ GET DATA
 2690MOV R2,#&10000 \ CLOCK HIGH
 2700STR R2,[R1,#&10] \ PUT OUT TO PRINTER
 2710AND R4,R4,#1 \ MASK DATA BIT
 2720MOV R5,R5,LSL #1 \ PREPARE R5 TO RECIEVE IT
 2730ORR R5,R5,R4 \ MIX IT IN WITH R5
 2740MOV R2,#0 \ CLOCK LOW
 2750STR R2,[R1,#&10]
 2760SUBS R3,R3,#1
 2770BNE LOOP1
 2780MOV R2,#&20000 \ CHIP SELECT HIGH
 2790STR R2,[R1,#&10]
 2800AND R5,R5,#&FF \ MASK OFF START BIT
 2810\R5 NOW HAS SAMPLE
 2820STRB R5,[R6],#1 \ PUT IT IN THE BUFFER
 2830SUBS R7,R7,#1  \ DECREMENT BYTES TO GO
 2840BNE  TLOOP \ BACK UNTILL ALL DONE
 2850
 2860\PREPARE TO EXIT
 2870MOV R2,#&400000 \ CLEAR T1 INTERRUPT
 2880STR R2,[R0,#&14] \ IRQ CLEAR
 2890LDR R2,[R0,#&18] \ GET IRQ MASK
 2900AND R2,R2,#&BF \ ENABLE T1
 2910MOV  R2,R2,LSL #16
 2920STR R2,[R0,#&18] \ MASK REG
 2930
 2940LDMFD R13!, {PC} \ BACK FROM WHENST YOU CAME
 2950
 2960.DISP \ DISPLAY THE BUFFER
 2970MOV R2,#0 \ X VALUE
 2980MOV R5,#160 \ BYTES PER ROW
 2990MOV R7,R0 \ RENUMBER START OF DATA BUFFER
 3000ADD R7,R7,#320 \ ADDRESS OF HALF BUFFER
 3010ADD R1,R1,#160 \ MOVE OFF TOP LINE
 3020.DLOOP
 3030LDRB R3,[R0],#1 \ Y VALUE
 3040MOV R3,R3,LSR #1
 3050MLA R4,R3,R5,R2 \ GET PIXEL OFFSET
 3060ADD R4,R4,R1 \ REAL ADDRESS
 3070LDRB R6,[R4] \ GET PIXEL
 3080EOR R6,R6,#&2 \ TOGGLE FIRST PIXEL
 3090STRB R6,[R4] \ PUT IT BACK
 3100LDRB R3,[R0],#1
 3110MOV R3,R3,LSR #1
 3120MLA R4,R3,R5,R2
 3130ADD R4,R4,R1
 3140LDRB R6,[R4]
 3150EOR R6,R6,#&20 \ TOGGLE SECOND PIXEL
 3160STRB R6,[R4]
 3170ADD R2,R2,#1 \ MOVE ALONG THE X
 3180CMP R0,R7 \ FINISHED ONE BUFFER
 3190MOVEQ R2,#0 \ X VALUE FOR NEXT PASS
 3200CMP R2,#160 \ FINISHED?
 3210BNE DLOOP
 3220MOV R15,R14 \ BACK TO BASIC
 3230]
 3240NEXT
 3250FOR A%=0 TO MSP%-1
 3260READ S1%(A%)
 3270S2%(A%)=S1%(A%)/2
 3280NEXT
 3290ENDPROC
 3300DATA 100,140,180,220,320,640,1280,2000,4000

� >!SnScope.!Run
�9

MSP%=9
(.� CODE% &200, BP% &400,S1%(MSP%),S2%(MSP%)
2*� �0,5)"THE BEEB BODY BUILDING COURSE"
<� �0,8)"By Mike Cook"
F(� �0,10)"Sound Sampler Oscilloscope"
P1� �0,15)"You need the Sound Sampler for this"
Z�"Any key to continue"
dA$=�
nSPEED%=0:�_CSU
xSW%=1:T%=180
�MARK=�:TRIG=�
�JOIN=�:Sing=�
�"ș"OS_ReadDynamicArea",2 � ,A%
�SP%=&2000000-A%
�
�� A%=BP% � BP%+640
�?A%=128
��
�
�*POINTER 1
�ȗ ȓ 0,500,1280,512
��_SETUP
�	� 3,2
� 0,760,1279,760

�
"	�_LAB
,DP%=BP%+320*(SW% � 1)
6� JOIN � �_JOIN
@	� 3,1
Jȗ LX%,Y%,B1%
T� LX%,508,LX%,1019
^�
hȗ X%,Y%,B1%
r� X%<>LX% �
|   � 3,1
�   � LX%,508,LX%,1019
�   � X%,508,X%,1019
�
   LX%=X%
�   �10,22);X%>>2;�(3)
�2   �(10);((X%>>2)*S2%(SPEED%))/1000;"mS";�(3)
�'   �10,25);255-?(DP%+(X%>>2));�(3)
�   � MARK �
�7      �15,22);"Time Difference ";(X%>>2)-MKT%;�(3)
�>      �32,23);(((X%>>2)-MKT%)*S2%(SPEED%))/1000;"mS";�(3)
�I      �15,25);"Amplitude Difference ";(255-?(DP%+(X%>>2)))-MKA%;�(3)
�   �
��
�
;� B1%=4 � �_SETUP:� �0,20);"RUNNING":�_RUN:�0,20);�(7)
� B1%=2 � �_OPTIONS
� B1%=1 � �_MARK
&� B1%=4 � B1%=2
0� �
:
D� �_LAB
N0�0,18)"Select - Run | Menu | Adjust - Mark"
X� A%=19 � 28
b� �0,A%)�(40)
l�
v'�0,27);S2%(SPEED%);"uS per sample"
��0,22)"Time step"
��0,25)"Amplitude"
�.� JOIN � �0,20)"Joined" � �0,20)"Dots  "
�9� Sing � �13,20)"Single Shot" � �13,20)"Repetitive"
�:� TRIG � �28,20)"Trigger ";T% � �28,20)"Trigger OFF"
��
�
�� �_MARK
�� MARK �
� MARK=�
�
 � 3,4
� � MX%,508,MX%,1019
� �15,22);�(24)
 �17,23);�(22)
 �15,25);�(24)
�
  MARK=�
* MKA%=255-?(DP%+(X%>>2))
4 MKT%=X%>>2
> MX%=X%
H
 � 1,4
R � MX%,508,MX%,1019
\�
f�_EMPTY
p�
z
�� �_OPTIONS
�� X%,508,X%,1019
��0,27)�(20)
��0,20)"Options:-";�(30)
�-�"T : Trigger ON/OFF   V : Trigger Value"
�*�"S : Single shot      R : Repetitive"
�+�"J : Join the dots    D : Sample Dots"
�.�"+ : Increment Time   - : Decrement Time"
�� �(30)
��0,25)"Choice? ";
�A$=�:�A$
�%� A$="J" � A$="j" � JOIN=�:�_JOIN
�$� A$="T" � A$="t" � TRIG=�(TRIG)
%� A$="D" � A$="d" � JOIN=�:�_DOTS
� A$="S" � A$="s" � Sing=�
� A$="R" � A$="r" � Sing=�
$� A$="V" � A$="v" � �_TRIGV
.;� A$="+" � A$="=" � SPEED%+=1:� SPEED%=MSP% � SPEED%-=1
87� A$="-" � A$="_" � SPEED%-=1:� SPEED%<0 � SPEED%=0
B�
L
V� �_JOIN
`�_DD(5)
j�
t
~� �_DOTS
�	� 0,0
�ȓȐ 4,508,1270,508
��_DD(69)
��
�
�� �_DD(P%)
�� 0,2:DX%=1
�� 69,0,1019-(?DP%)*2
�� A%=4 � 1279 � 4
�� P%,A%,1019-(?(DP%+DX%))*2
�
DX%+=1
��
�



� �_TRIGV
� t%
(�
2.�0,26)"Trigger Value between 128 and 230"
<�"Current Trigger ";T%;�(3)
F�0,28)�(25)
P�0,28)"Enter new value ";
Z� t%
d� t%>127 � t%< 231
n	T%=t%
x�
�
�
� �_SETUP
��:�
�	� 0,7
�ȓ 0,504,1279,516
�R� Sing � TRIG � �0,18)"Waiting for trigger" � � �0,18);"Space to freeze";�(6)
��
�
�� �_RUN
�*POINTER 0
�SW=1:MARK=�
�� A%=0 � 640 � 4
�BP%!A%=0
�
	� 3,2
� 0,1019,1279,1019
"#� TRIG � ?TVAL=255-T% � ?TVAL=0
,!!SPE1=(S1%(SPEED%) � &FF)<<16
6 !SPE2=(S1%(SPEED%) >> 8)<<16
@�
J�_SAMPLE
T
�_DISPLAY
^� �(-99) � Sing
h�_EMPTY
r*POINTER 1
|ȗ ȓ 0,500,1280,512
��
�
�
� �_EMPTY
��
�ȗ X%,Y%,B%
�
� B%=0
��
�
�� �_DISPLAY
�
A%=BP%
�
B%=SP%
�
� DISP
��

� �_SAMPLE
G%=BP%+320*SW%:H%=320
&SW%=SW% � 1
0
� SAMP
:�
D
N� �_CSU :� CODE SETUP
X� A=0 � 2 � 2
bP%=CODE%
l[
v	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" \ CLAME VECTOR
�/SWI &80101 \ UNUSED VECTOR � � � IN ROUTINE
�
MOV R2,#0
�MOV R0,#&18 \ VECTOR NUMBER
�
ADR R1,GS
�SWI &20 \ RELESE VECTOR
�MOV R15,R14 \ BACK � BASIC
�
�.TVAL EQUD 0 \ TRIGGER �UE
.SPE1 EQUD 0 \ LSB � SPEED
.SPE2 EQUD 0 \ MSB � SPEED
.GS \ GATHER �
 (TEQP R15,#&C000003 \DISABLE �ERRUPTS
*)MOV R0,#&3200000 \ BASE ADDRESS � IOC
4(ADD R1,R0,#&50000 \ BASE � �ER LATCH
>
H\ HOLD � TRIGGER
RLDR R2,TVAL
\
CMP R2,#0
f+BEQ TRUN \ SKIP THIS � TRIGGER �UE IS 0
p
.THOLD
zMOV R2,#0 \ CHIP SELECT LOW
�STR R2,[R1,#&10]
�MOV R3,#&A \ BITS � � IN
�!MOV R5,#0 \ COLLECT BITS HERE
�
.LOOP2
�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]
�SUBS R3,R3,#1
	
BNE LOOP2
	%MOV R2,#&20000 \ CHIP SELECT HIGH
	STR R2,[R1,#&10]
	$#� R5,R5,#&FF \ MASK � START BIT
	.\R5 NOW HAS SAMPLE
	8LDR R2,TVAL
	B
CMP R2,R5
	L
BLS THOLD
	V
	`	.TRUN
	jLDR R2,SPE2 \ T1 �UE HIGH
	t$STR R2,[R0,#&54] \ T1 LATCH HIGH
	~LDR R2,SPE1 \ 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
LDRB R2,[R0,#&10]

TST R2,#&40

BEQ TLOOP
"MOV R2,#&400000 \ � T1 �ERRUPT
(STR R2,[R0,#&14] \ IRQ �
2
<\ TAKE �E SAMPLE
FMOV R2,#0 \ CHIP SELECT LOW
PSTR R2,[R1,#&10]
ZMOV R3,#&A \ BITS � � IN
d!MOV R5,#0 \ COLLECT BITS HERE
n
.LOOP1
xLDR 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]
�SUBS R3,R3,#1
�
BNE LOOP1
�%MOV R2,#&20000 \ CHIP SELECT HIGH
�STR R2,[R1,#&10]
�#� R5,R5,#&FF \ MASK � START BIT
�\R5 NOW HAS SAMPLE
*STRB R5,[R6],#1 \ PUT IT IN THE BUFFER
)SUBS R7,R7,#1  \ DECREMENT BYTES � GO
!BNE  TLOOP \ BACK �L ALL DONE
"
,\PREPARE � EXIT
6"MOV R2,#&400000 \ � T1 �ERRUPT
@STR R2,[R0,#&14] \ IRQ �
J!LDR R2,[R0,#&18] \ � IRQ MASK
T� R2,R2,#&BF \ ENABLE T1
^MOV  R2,R2,LSL #16
hSTR R2,[R0,#&18] \ MASK REG
r
|-LDMFD R13!, {PC} \ BACK FROM �ST YOU CAME
�
�.DISP \ DISPLAY THE BUFFER
�MOV R2,#0 \ X �UE
�MOV R5,#160 \ BYTES PER ROW
�#MOV R7,R0 \ Ǚ START � � BUFFER
�*ADD R7,R7,#320 \ ADDRESS � HALF BUFFER
�ADD R1,R1,#160 \ � � �P �
�
.DLOOP
�LDRB R3,[R0],#1 \ Y �UE
�MOV R3,R3,LSR #1
�"MLA R4,R3,R5,R2 \ � PIXEL �SET
�ADD R4,R4,R1 \ REAL ADDRESS
�LDRB R6,[R4] \ � PIXEL
#� R6,R6,#&2 \ �GGLE FIRST PIXEL
STRB R6,[R4] \ PUT IT BACK
LDRB R3,[R0],#1
&MOV R3,R3,LSR #1
0MLA R4,R3,R5,R2
:ADD R4,R4,R1
DLDRB R6,[R4]
N%� R6,R6,#&20 \ �GGLE SECOND PIXEL
XSTRB R6,[R4]
b ADD R2,R2,#1 \ � ALONG THE X
l"CMP R0,R7 \ FINISHED �E BUFFER
v�Q R2,#0 \ X �UE � � PASS
�CMP R2,#160 \ FINISHED?
�
BNE DLOOP
�MOV R15,R14 \ BACK � BASIC
�]
��
�� A%=0 � MSP%-1
�
� S1%(A%)
�S2%(A%)=S1%(A%)/2
��
��
�,� 100,140,180,220,320,640,1280,2000,4000
�
00000000  0d 00 0a 14 f4 20 3e 21  53 6e 53 63 6f 70 65 2e  |..... >!SnScope.|
00000010  21 52 75 6e 0d 00 14 06  eb 39 0d 00 1e 0a 4d 53  |!Run.....9....MS|
00000020  50 25 3d 39 0d 00 28 2e  de 20 43 4f 44 45 25 20  |P%=9..(.. CODE% |
00000030  26 32 30 30 2c 20 42 50  25 20 26 34 30 30 2c 53  |&200, BP% &400,S|
00000040  31 25 28 4d 53 50 25 29  2c 53 32 25 28 4d 53 50  |1%(MSP%),S2%(MSP|
00000050  25 29 0d 00 32 2a f1 20  8a 30 2c 35 29 22 54 48  |%)..2*. .0,5)"TH|
00000060  45 20 42 45 45 42 20 42  4f 44 59 20 42 55 49 4c  |E BEEB BODY BUIL|
00000070  44 49 4e 47 20 43 4f 55  52 53 45 22 0d 00 3c 19  |DING COURSE"..<.|
00000080  f1 20 8a 30 2c 38 29 22  42 79 20 4d 69 6b 65 20  |. .0,8)"By Mike |
00000090  43 6f 6f 6b 22 0d 00 46  28 f1 20 8a 30 2c 31 30  |Cook"..F(. .0,10|
000000a0  29 22 53 6f 75 6e 64 20  53 61 6d 70 6c 65 72 20  |)"Sound Sampler |
000000b0  4f 73 63 69 6c 6c 6f 73  63 6f 70 65 22 0d 00 50  |Oscilloscope"..P|
000000c0  31 f1 20 8a 30 2c 31 35  29 22 59 6f 75 20 6e 65  |1. .0,15)"You ne|
000000d0  65 64 20 74 68 65 20 53  6f 75 6e 64 20 53 61 6d  |ed the Sound Sam|
000000e0  70 6c 65 72 20 66 6f 72  20 74 68 69 73 22 0d 00  |pler for this"..|
000000f0  5a 1a f1 22 41 6e 79 20  6b 65 79 20 74 6f 20 63  |Z.."Any key to c|
00000100  6f 6e 74 69 6e 75 65 22  0d 00 64 08 41 24 3d be  |ontinue"..d.A$=.|
00000110  0d 00 6e 12 53 50 45 45  44 25 3d 30 3a f2 5f 43  |..n.SPEED%=0:._C|
00000120  53 55 0d 00 78 10 53 57  25 3d 31 3a 54 25 3d 31  |SU..x.SW%=1:T%=1|
00000130  38 30 0d 00 82 11 4d 41  52 4b 3d a3 3a 54 52 49  |80....MARK=.:TRI|
00000140  47 3d b9 0d 00 8c 11 4a  4f 49 4e 3d a3 3a 53 69  |G=.....JOIN=.:Si|
00000150  6e 67 3d b9 0d 00 96 22  c8 99 22 4f 53 5f 52 65  |ng=....".."OS_Re|
00000160  61 64 44 79 6e 61 6d 69  63 41 72 65 61 22 2c 32  |adDynamicArea",2|
00000170  20 b8 20 2c 41 25 0d 00  a0 13 53 50 25 3d 26 32  | . ,A%....SP%=&2|
00000180  30 30 30 30 30 30 2d 41  25 0d 00 aa 04 0d 00 b4  |000000-A%.......|
00000190  16 e3 20 41 25 3d 42 50  25 20 b8 20 42 50 25 2b  |.. A%=BP% . BP%+|
000001a0  36 34 30 0d 00 be 0b 3f  41 25 3d 31 32 38 0d 00  |640....?A%=128..|
000001b0  c8 05 ed 0d 00 d2 04 0d  00 dc 0e 2a 50 4f 49 4e  |...........*POIN|
000001c0  54 45 52 20 31 0d 00 e6  18 c8 97 20 c8 93 20 30  |TER 1...... .. 0|
000001d0  2c 35 30 30 2c 31 32 38  30 2c 35 31 32 0d 00 f0  |,500,1280,512...|
000001e0  0b f2 5f 53 45 54 55 50  0d 00 fa 09 e6 20 33 2c  |.._SETUP..... 3,|
000001f0  32 0d 01 04 14 86 20 30  2c 37 36 30 2c 31 32 37  |2..... 0,760,127|
00000200  39 2c 37 36 30 0d 01 0e  04 0d 01 18 05 f5 0d 01  |9,760...........|
00000210  22 09 f2 5f 4c 41 42 0d  01 2c 19 44 50 25 3d 42  |".._LAB..,.DP%=B|
00000220  50 25 2b 33 32 30 2a 28  53 57 25 20 82 20 31 29  |P%+320*(SW% . 1)|
00000230  0d 01 36 13 e7 20 4a 4f  49 4e 20 8c 20 f2 5f 4a  |..6.. JOIN . ._J|
00000240  4f 49 4e 0d 01 40 09 e6  20 33 2c 31 0d 01 4a 11  |OIN..@.. 3,1..J.|
00000250  c8 97 20 4c 58 25 2c 59  25 2c 42 31 25 0d 01 54  |.. LX%,Y%,B1%..T|
00000260  16 86 20 4c 58 25 2c 35  30 38 2c 4c 58 25 2c 31  |.. LX%,508,LX%,1|
00000270  30 31 39 0d 01 5e 05 f5  0d 01 68 10 c8 97 20 58  |019..^....h... X|
00000280  25 2c 59 25 2c 42 31 25  0d 01 72 0f e7 20 58 25  |%,Y%,B1%..r.. X%|
00000290  3c 3e 4c 58 25 20 8c 0d  01 7c 0c 20 20 20 e6 20  |<>LX% ...|.   . |
000002a0  33 2c 31 0d 01 86 19 20  20 20 86 20 4c 58 25 2c  |3,1....   . LX%,|
000002b0  35 30 38 2c 4c 58 25 2c  31 30 31 39 0d 01 90 17  |508,LX%,1019....|
000002c0  20 20 20 86 20 58 25 2c  35 30 38 2c 58 25 2c 31  |   . X%,508,X%,1|
000002d0  30 31 39 0d 01 9a 0d 20  20 20 4c 58 25 3d 58 25  |019....   LX%=X%|
000002e0  0d 01 a4 1a 20 20 20 f1  8a 31 30 2c 32 32 29 3b  |....   ..10,22);|
000002f0  58 25 3e 3e 32 3b 89 28  33 29 0d 01 ae 32 20 20  |X%>>2;.(3)...2  |
00000300  20 f1 89 28 31 30 29 3b  28 28 58 25 3e 3e 32 29  | ..(10);((X%>>2)|
00000310  2a 53 32 25 28 53 50 45  45 44 25 29 29 2f 31 30  |*S2%(SPEED%))/10|
00000320  30 30 3b 22 6d 53 22 3b  89 28 33 29 0d 01 b8 27  |00;"mS";.(3)...'|
00000330  20 20 20 f1 8a 31 30 2c  32 35 29 3b 32 35 35 2d  |   ..10,25);255-|
00000340  3f 28 44 50 25 2b 28 58  25 3e 3e 32 29 29 3b 89  |?(DP%+(X%>>2));.|
00000350  28 33 29 0d 01 c2 0f 20  20 20 e7 20 4d 41 52 4b  |(3)....   . MARK|
00000360  20 8c 0d 01 cc 37 20 20  20 20 20 20 f1 8a 31 35  | ....7      ..15|
00000370  2c 32 32 29 3b 22 54 69  6d 65 20 44 69 66 66 65  |,22);"Time Diffe|
00000380  72 65 6e 63 65 20 22 3b  28 58 25 3e 3e 32 29 2d  |rence ";(X%>>2)-|
00000390  4d 4b 54 25 3b 89 28 33  29 0d 01 d6 3e 20 20 20  |MKT%;.(3)...>   |
000003a0  20 20 20 f1 8a 33 32 2c  32 33 29 3b 28 28 28 58  |   ..32,23);(((X|
000003b0  25 3e 3e 32 29 2d 4d 4b  54 25 29 2a 53 32 25 28  |%>>2)-MKT%)*S2%(|
000003c0  53 50 45 45 44 25 29 29  2f 31 30 30 30 3b 22 6d  |SPEED%))/1000;"m|
000003d0  53 22 3b 89 28 33 29 0d  01 e0 49 20 20 20 20 20  |S";.(3)...I     |
000003e0  20 f1 8a 31 35 2c 32 35  29 3b 22 41 6d 70 6c 69  | ..15,25);"Ampli|
000003f0  74 75 64 65 20 44 69 66  66 65 72 65 6e 63 65 20  |tude Difference |
00000400  22 3b 28 32 35 35 2d 3f  28 44 50 25 2b 28 58 25  |";(255-?(DP%+(X%|
00000410  3e 3e 32 29 29 29 2d 4d  4b 41 25 3b 89 28 33 29  |>>2)))-MKA%;.(3)|
00000420  0d 01 ea 08 20 20 20 cd  0d 01 f4 05 cd 0d 01 fe  |....   .........|
00000430  04 0d 02 08 3b e7 20 42  31 25 3d 34 20 8c 20 f2  |....;. B1%=4 . .|
00000440  5f 53 45 54 55 50 3a f1  20 8a 30 2c 32 30 29 3b  |_SETUP:. .0,20);|
00000450  22 52 55 4e 4e 49 4e 47  22 3a f2 5f 52 55 4e 3a  |"RUNNING":._RUN:|
00000460  f1 8a 30 2c 32 30 29 3b  89 28 37 29 0d 02 12 17  |..0,20);.(7)....|
00000470  e7 20 42 31 25 3d 32 20  8c 20 f2 5f 4f 50 54 49  |. B1%=2 . ._OPTI|
00000480  4f 4e 53 0d 02 1c 14 e7  20 42 31 25 3d 31 20 8c  |ONS..... B1%=1 .|
00000490  20 f2 5f 4d 41 52 4b 0d  02 26 13 fd 20 42 31 25  | ._MARK..&.. B1%|
000004a0  3d 34 20 84 20 42 31 25  3d 32 0d 02 30 07 fd 20  |=4 . B1%=2..0.. |
000004b0  a3 0d 02 3a 04 0d 02 44  0b dd 20 f2 5f 4c 41 42  |...:...D.. ._LAB|
000004c0  0d 02 4e 30 f1 8a 30 2c  31 38 29 22 53 65 6c 65  |..N0..0,18)"Sele|
000004d0  63 74 20 2d 20 52 75 6e  20 7c 20 4d 65 6e 75 20  |ct - Run | Menu |
000004e0  7c 20 41 64 6a 75 73 74  20 2d 20 4d 61 72 6b 22  || Adjust - Mark"|
000004f0  0d 02 58 10 e3 20 41 25  3d 31 39 20 b8 20 32 38  |..X.. A%=19 . 28|
00000500  0d 02 62 11 f1 20 8a 30  2c 41 25 29 89 28 34 30  |..b.. .0,A%).(40|
00000510  29 0d 02 6c 05 ed 0d 02  76 27 f1 8a 30 2c 32 37  |)..l....v'..0,27|
00000520  29 3b 53 32 25 28 53 50  45 45 44 25 29 3b 22 75  |);S2%(SPEED%);"u|
00000530  53 20 70 65 72 20 73 61  6d 70 6c 65 22 0d 02 80  |S per sample"...|
00000540  16 f1 8a 30 2c 32 32 29  22 54 69 6d 65 20 73 74  |...0,22)"Time st|
00000550  65 70 22 0d 02 8a 16 f1  8a 30 2c 32 35 29 22 41  |ep"......0,25)"A|
00000560  6d 70 6c 69 74 75 64 65  22 0d 02 94 2e e7 20 4a  |mplitude"..... J|
00000570  4f 49 4e 20 8c 20 f1 8a  30 2c 32 30 29 22 4a 6f  |OIN . ..0,20)"Jo|
00000580  69 6e 65 64 22 20 8b 20  f1 8a 30 2c 32 30 29 22  |ined" . ..0,20)"|
00000590  44 6f 74 73 20 20 22 0d  02 9e 39 e7 20 53 69 6e  |Dots  "...9. Sin|
000005a0  67 20 8c 20 f1 8a 31 33  2c 32 30 29 22 53 69 6e  |g . ..13,20)"Sin|
000005b0  67 6c 65 20 53 68 6f 74  22 20 8b 20 f1 8a 31 33  |gle Shot" . ..13|
000005c0  2c 32 30 29 22 52 65 70  65 74 69 74 69 76 65 22  |,20)"Repetitive"|
000005d0  0d 02 a8 3a e7 20 54 52  49 47 20 8c 20 f1 8a 32  |...:. TRIG . ..2|
000005e0  38 2c 32 30 29 22 54 72  69 67 67 65 72 20 22 3b  |8,20)"Trigger ";|
000005f0  54 25 20 8b 20 f1 8a 32  38 2c 32 30 29 22 54 72  |T% . ..28,20)"Tr|
00000600  69 67 67 65 72 20 4f 46  46 22 0d 02 b2 05 e1 0d  |igger OFF"......|
00000610  02 bc 04 0d 02 c6 0c dd  20 f2 5f 4d 41 52 4b 0d  |........ ._MARK.|
00000620  02 d0 0c e7 20 4d 41 52  4b 20 8c 0d 02 da 0b 20  |.... MARK ..... |
00000630  4d 41 52 4b 3d a3 0d 02  e4 0a 20 e6 20 33 2c 34  |MARK=..... . 3,4|
00000640  0d 02 ee 17 20 86 20 4d  58 25 2c 35 30 38 2c 4d  |.... . MX%,508,M|
00000650  58 25 2c 31 30 31 39 0d  02 f8 13 20 f1 8a 31 35  |X%,1019.... ..15|
00000660  2c 32 32 29 3b 89 28 32  34 29 0d 03 02 13 20 f1  |,22);.(24).... .|
00000670  8a 31 37 2c 32 33 29 3b  89 28 32 32 29 0d 03 0c  |.17,23);.(22)...|
00000680  13 20 f1 8a 31 35 2c 32  35 29 3b 89 28 32 34 29  |. ..15,25);.(24)|
00000690  0d 03 16 05 cc 0d 03 20  0b 20 4d 41 52 4b 3d b9  |....... . MARK=.|
000006a0  0d 03 2a 1c 20 4d 4b 41  25 3d 32 35 35 2d 3f 28  |..*. MKA%=255-?(|
000006b0  44 50 25 2b 28 58 25 3e  3e 32 29 29 0d 03 34 0f  |DP%+(X%>>2))..4.|
000006c0  20 4d 4b 54 25 3d 58 25  3e 3e 32 0d 03 3e 0b 20  | MKT%=X%>>2..>. |
000006d0  4d 58 25 3d 58 25 0d 03  48 0a 20 e6 20 31 2c 34  |MX%=X%..H. . 1,4|
000006e0  0d 03 52 17 20 86 20 4d  58 25 2c 35 30 38 2c 4d  |..R. . MX%,508,M|
000006f0  58 25 2c 31 30 31 39 0d  03 5c 05 cd 0d 03 66 0b  |X%,1019..\....f.|
00000700  f2 5f 45 4d 50 54 59 0d  03 70 05 e1 0d 03 7a 04  |._EMPTY..p....z.|
00000710  0d 03 84 0f dd 20 f2 5f  4f 50 54 49 4f 4e 53 0d  |..... ._OPTIONS.|
00000720  03 8e 14 86 20 58 25 2c  35 30 38 2c 58 25 2c 31  |.... X%,508,X%,1|
00000730  30 31 39 0d 03 98 10 f1  8a 30 2c 32 37 29 89 28  |019......0,27).(|
00000740  32 30 29 0d 03 a2 1c f1  8a 30 2c 32 30 29 22 4f  |20)......0,20)"O|
00000750  70 74 69 6f 6e 73 3a 2d  22 3b 89 28 33 30 29 0d  |ptions:-";.(30).|
00000760  03 ac 2d f1 22 54 20 3a  20 54 72 69 67 67 65 72  |..-."T : Trigger|
00000770  20 4f 4e 2f 4f 46 46 20  20 20 56 20 3a 20 54 72  | ON/OFF   V : Tr|
00000780  69 67 67 65 72 20 56 61  6c 75 65 22 0d 03 b6 2a  |igger Value"...*|
00000790  f1 22 53 20 3a 20 53 69  6e 67 6c 65 20 73 68 6f  |."S : Single sho|
000007a0  74 20 20 20 20 20 20 52  20 3a 20 52 65 70 65 74  |t      R : Repet|
000007b0  69 74 69 76 65 22 0d 03  c0 2b f1 22 4a 20 3a 20  |itive"...+."J : |
000007c0  4a 6f 69 6e 20 74 68 65  20 64 6f 74 73 20 20 20  |Join the dots   |
000007d0  20 44 20 3a 20 53 61 6d  70 6c 65 20 44 6f 74 73  | D : Sample Dots|
000007e0  22 0d 03 ca 2e f1 22 2b  20 3a 20 49 6e 63 72 65  |"....."+ : Incre|
000007f0  6d 65 6e 74 20 54 69 6d  65 20 20 20 2d 20 3a 20  |ment Time   - : |
00000800  44 65 63 72 65 6d 65 6e  74 20 54 69 6d 65 22 0d  |Decrement Time".|
00000810  03 d4 0b f1 20 89 28 33  30 29 0d 03 de 16 f1 8a  |.... .(30)......|
00000820  30 2c 32 35 29 22 43 68  6f 69 63 65 3f 20 22 3b  |0,25)"Choice? ";|
00000830  0d 03 e8 0c 41 24 3d be  3a f1 41 24 0d 03 f2 25  |....A$=.:.A$...%|
00000840  e7 20 41 24 3d 22 4a 22  20 84 20 41 24 3d 22 6a  |. A$="J" . A$="j|
00000850  22 20 8c 20 4a 4f 49 4e  3d b9 3a f2 5f 4a 4f 49  |" . JOIN=.:._JOI|
00000860  4e 0d 03 fc 24 e7 20 41  24 3d 22 54 22 20 84 20  |N...$. A$="T" . |
00000870  41 24 3d 22 74 22 20 8c  20 54 52 49 47 3d ac 28  |A$="t" . TRIG=.(|
00000880  54 52 49 47 29 0d 04 06  25 e7 20 41 24 3d 22 44  |TRIG)...%. A$="D|
00000890  22 20 84 20 41 24 3d 22  64 22 20 8c 20 4a 4f 49  |" . A$="d" . JOI|
000008a0  4e 3d a3 3a f2 5f 44 4f  54 53 0d 04 10 1e e7 20  |N=.:._DOTS..... |
000008b0  41 24 3d 22 53 22 20 84  20 41 24 3d 22 73 22 20  |A$="S" . A$="s" |
000008c0  8c 20 53 69 6e 67 3d b9  0d 04 1a 1e e7 20 41 24  |. Sing=...... A$|
000008d0  3d 22 52 22 20 84 20 41  24 3d 22 72 22 20 8c 20  |="R" . A$="r" . |
000008e0  53 69 6e 67 3d a3 0d 04  24 1f e7 20 41 24 3d 22  |Sing=...$.. A$="|
000008f0  56 22 20 84 20 41 24 3d  22 76 22 20 8c 20 f2 5f  |V" . A$="v" . ._|
00000900  54 52 49 47 56 0d 04 2e  3b e7 20 41 24 3d 22 2b  |TRIGV...;. A$="+|
00000910  22 20 84 20 41 24 3d 22  3d 22 20 8c 20 53 50 45  |" . A$="=" . SPE|
00000920  45 44 25 2b 3d 31 3a e7  20 53 50 45 45 44 25 3d  |ED%+=1:. SPEED%=|
00000930  4d 53 50 25 20 8c 20 53  50 45 45 44 25 2d 3d 31  |MSP% . SPEED%-=1|
00000940  0d 04 38 37 e7 20 41 24  3d 22 2d 22 20 84 20 41  |..87. A$="-" . A|
00000950  24 3d 22 5f 22 20 8c 20  53 50 45 45 44 25 2d 3d  |$="_" . SPEED%-=|
00000960  31 3a e7 20 53 50 45 45  44 25 3c 30 20 8c 20 53  |1:. SPEED%<0 . S|
00000970  50 45 45 44 25 3d 30 0d  04 42 05 e1 0d 04 4c 04  |PEED%=0..B....L.|
00000980  0d 04 56 0c dd 20 f2 5f  4a 4f 49 4e 0d 04 60 0b  |..V.. ._JOIN..`.|
00000990  f2 5f 44 44 28 35 29 0d  04 6a 05 e1 0d 04 74 04  |._DD(5)..j....t.|
000009a0  0d 04 7e 0c dd 20 f2 5f  44 4f 54 53 0d 04 88 09  |..~.. ._DOTS....|
000009b0  e6 20 30 2c 30 0d 04 92  17 c8 93 c8 90 20 34 2c  |. 0,0........ 4,|
000009c0  35 30 38 2c 31 32 37 30  2c 35 30 38 0d 04 9c 0c  |508,1270,508....|
000009d0  f2 5f 44 44 28 36 39 29  0d 04 a6 05 e1 0d 04 b0  |._DD(69)........|
000009e0  04 0d 04 ba 0e dd 20 f2  5f 44 44 28 50 25 29 0d  |...... ._DD(P%).|
000009f0  04 c4 0f e6 20 30 2c 32  3a 44 58 25 3d 31 0d 04  |.... 0,2:DX%=1..|
00000a00  ce 18 f0 20 36 39 2c 30  2c 31 30 31 39 2d 28 3f  |... 69,0,1019-(?|
00000a10  44 50 25 29 2a 32 0d 04  d8 15 e3 20 41 25 3d 34  |DP%)*2..... A%=4|
00000a20  20 b8 20 31 32 37 39 20  88 20 34 0d 04 e2 1f f0  | . 1279 . 4.....|
00000a30  20 50 25 2c 41 25 2c 31  30 31 39 2d 28 3f 28 44  | P%,A%,1019-(?(D|
00000a40  50 25 2b 44 58 25 29 29  2a 32 0d 04 ec 0a 44 58  |P%+DX%))*2....DX|
00000a50  25 2b 3d 31 0d 04 f6 05  ed 0d 05 00 05 e1 0d 05  |%+=1............|
00000a60  0a 04 0d 05 14 0d dd 20  f2 5f 54 52 49 47 56 0d  |....... ._TRIGV.|
00000a70  05 1e 08 ea 20 74 25 0d  05 28 05 f5 0d 05 32 2e  |.... t%..(....2.|
00000a80  f1 8a 30 2c 32 36 29 22  54 72 69 67 67 65 72 20  |..0,26)"Trigger |
00000a90  56 61 6c 75 65 20 62 65  74 77 65 65 6e 20 31 32  |Value between 12|
00000aa0  38 20 61 6e 64 20 32 33  30 22 0d 05 3c 1f f1 22  |8 and 230"..<.."|
00000ab0  43 75 72 72 65 6e 74 20  54 72 69 67 67 65 72 20  |Current Trigger |
00000ac0  22 3b 54 25 3b 89 28 33  29 0d 05 46 10 f1 8a 30  |";T%;.(3)..F...0|
00000ad0  2c 32 38 29 89 28 32 35  29 0d 05 50 1e f1 8a 30  |,28).(25)..P...0|
00000ae0  2c 32 38 29 22 45 6e 74  65 72 20 6e 65 77 20 76  |,28)"Enter new v|
00000af0  61 6c 75 65 20 22 3b 0d  05 5a 08 e8 20 74 25 0d  |alue ";..Z.. t%.|
00000b00  05 64 16 fd 20 74 25 3e  31 32 37 20 80 20 74 25  |.d.. t%>127 . t%|
00000b10  3c 20 32 33 31 0d 05 6e  09 54 25 3d 74 25 0d 05  |< 231..n.T%=t%..|
00000b20  78 05 e1 0d 05 82 04 0d  05 8c 0d dd 20 f2 5f 53  |x........... ._S|
00000b30  45 54 55 50 0d 05 96 07  db 3a da 0d 05 a0 09 e6  |ETUP.....:......|
00000b40  20 30 2c 37 0d 05 aa 15  c8 93 20 30 2c 35 30 34  | 0,7...... 0,504|
00000b50  2c 31 32 37 39 2c 35 31  36 0d 05 b4 52 e7 20 53  |,1279,516...R. S|
00000b60  69 6e 67 20 80 20 54 52  49 47 20 8c 20 f1 8a 30  |ing . TRIG . ..0|
00000b70  2c 31 38 29 22 57 61 69  74 69 6e 67 20 66 6f 72  |,18)"Waiting for|
00000b80  20 74 72 69 67 67 65 72  22 20 8b 20 f1 20 8a 30  | trigger" . . .0|
00000b90  2c 31 38 29 3b 22 53 70  61 63 65 20 74 6f 20 66  |,18);"Space to f|
00000ba0  72 65 65 7a 65 22 3b 89  28 36 29 0d 05 be 05 e1  |reeze";.(6).....|
00000bb0  0d 05 c8 04 0d 05 d2 0b  dd 20 f2 5f 52 55 4e 0d  |......... ._RUN.|
00000bc0  05 dc 0e 2a 50 4f 49 4e  54 45 52 20 30 0d 05 e6  |...*POINTER 0...|
00000bd0  0f 53 57 3d 31 3a 4d 41  52 4b 3d a3 0d 05 f0 14  |.SW=1:MARK=.....|
00000be0  e3 20 41 25 3d 30 20 b8  20 36 34 30 20 88 20 34  |. A%=0 . 640 . 4|
00000bf0  0d 05 fa 0c 42 50 25 21  41 25 3d 30 0d 06 04 05  |....BP%!A%=0....|
00000c00  ed 0d 06 0e 09 e6 20 33  2c 32 0d 06 18 16 86 20  |...... 3,2..... |
00000c10  30 2c 31 30 31 39 2c 31  32 37 39 2c 31 30 31 39  |0,1019,1279,1019|
00000c20  0d 06 22 23 e7 20 54 52  49 47 20 8c 20 3f 54 56  |.."#. TRIG . ?TV|
00000c30  41 4c 3d 32 35 35 2d 54  25 20 8b 20 3f 54 56 41  |AL=255-T% . ?TVA|
00000c40  4c 3d 30 0d 06 2c 21 21  53 50 45 31 3d 28 53 31  |L=0..,!!SPE1=(S1|
00000c50  25 28 53 50 45 45 44 25  29 20 80 20 26 46 46 29  |%(SPEED%) . &FF)|
00000c60  3c 3c 31 36 0d 06 36 20  21 53 50 45 32 3d 28 53  |<<16..6 !SPE2=(S|
00000c70  31 25 28 53 50 45 45 44  25 29 20 3e 3e 20 38 29  |1%(SPEED%) >> 8)|
00000c80  3c 3c 31 36 0d 06 40 05  f5 0d 06 4a 0c f2 5f 53  |<<16..@....J.._S|
00000c90  41 4d 50 4c 45 0d 06 54  0d f2 5f 44 49 53 50 4c  |AMPLE..T.._DISPL|
00000ca0  41 59 0d 06 5e 13 fd 20  a6 28 2d 39 39 29 20 84  |AY..^.. .(-99) .|
00000cb0  20 53 69 6e 67 0d 06 68  0b f2 5f 45 4d 50 54 59  | Sing..h.._EMPTY|
00000cc0  0d 06 72 0e 2a 50 4f 49  4e 54 45 52 20 31 0d 06  |..r.*POINTER 1..|
00000cd0  7c 18 c8 97 20 c8 93 20  30 2c 35 30 30 2c 31 32  ||... .. 0,500,12|
00000ce0  38 30 2c 35 31 32 0d 06  86 05 e1 0d 06 90 04 0d  |80,512..........|
00000cf0  06 9a 0d dd 20 f2 5f 45  4d 50 54 59 0d 06 a4 05  |.... ._EMPTY....|
00000d00  f5 0d 06 ae 0f c8 97 20  58 25 2c 59 25 2c 42 25  |....... X%,Y%,B%|
00000d10  0d 06 b8 0a fd 20 42 25  3d 30 0d 06 c2 05 e1 0d  |..... B%=0......|
00000d20  06 cc 04 0d 06 d6 0f dd  20 f2 5f 44 49 53 50 4c  |........ ._DISPL|
00000d30  41 59 0d 06 e0 0a 41 25  3d 42 50 25 0d 06 ea 0a  |AY....A%=BP%....|
00000d40  42 25 3d 53 50 25 0d 06  f4 0a d6 20 44 49 53 50  |B%=SP%..... DISP|
00000d50  0d 06 fe 05 e1 0d 07 08  04 0d 07 12 0e dd 20 f2  |.............. .|
00000d60  5f 53 41 4d 50 4c 45 0d  07 1c 19 47 25 3d 42 50  |_SAMPLE....G%=BP|
00000d70  25 2b 33 32 30 2a 53 57  25 3a 48 25 3d 33 32 30  |%+320*SW%:H%=320|
00000d80  0d 07 26 0f 53 57 25 3d  53 57 25 20 82 20 31 0d  |..&.SW%=SW% . 1.|
00000d90  07 30 0a d6 20 53 41 4d  50 0d 07 3a 05 e1 0d 07  |.0.. SAMP..:....|
00000da0  44 04 0d 07 4e 19 dd 20  f2 5f 43 53 55 20 3a f4  |D...N.. ._CSU :.|
00000db0  20 43 4f 44 45 20 53 45  54 55 50 0d 07 58 11 e3  | CODE SETUP..X..|
00000dc0  20 41 3d 30 20 b8 20 32  20 88 20 32 0d 07 62 0c  | A=0 . 2 . 2..b.|
00000dd0  50 25 3d 43 4f 44 45 25  0d 07 6c 05 5b 0d 07 76  |P%=CODE%..l.[..v|
00000de0  09 4f 50 54 20 41 0d 07  80 09 2e 53 41 4d 50 0d  |.OPT A.....SAMP.|
00000df0  07 8a 26 4d 4f 56 20 52  30 2c 23 26 31 38 20 5c  |..&MOV R0,#&18 \|
00000e00  20 55 4e 55 53 45 44 20  56 45 43 54 4f 52 20 4e  | UNUSED VECTOR N|
00000e10  55 4d 42 45 52 0d 07 94  29 41 44 52 20 52 31 2c  |UMBER...)ADR R1,|
00000e20  47 53 20 5c 20 52 4f 55  54 49 4e 45 20 b8 20 d6  |GS \ ROUTINE . .|
00000e30  20 ee 20 55 4e 4b 4e 4f  57 4e 20 53 57 49 0d 07  | . UNKNOWN SWI..|
00000e40  9e 2c 4d 4f 56 20 52 32  2c 23 30 20 5c 20 4e 55  |.,MOV R2,#0 \ NU|
00000e50  4d 42 45 52 20 b8 20 50  41 53 53 20 b8 20 d6 49  |MBER . PASS . .I|
00000e60  4e 47 20 52 4f 55 54 49  4e 45 0d 07 a8 21 53 57  |NG ROUTINE...!SW|
00000e70  49 20 22 4f 53 5f 43 6c  61 69 6d 22 20 5c 20 43  |I "OS_Claim" \ C|
00000e80  4c 41 4d 45 20 56 45 43  54 4f 52 0d 07 b2 2f 53  |LAME VECTOR.../S|
00000e90  57 49 20 26 38 30 31 30  31 20 5c 20 55 4e 55 53  |WI &80101 \ UNUS|
00000ea0  45 44 20 56 45 43 54 4f  52 20 b8 20 d6 20 f3 20  |ED VECTOR . . . |
00000eb0  49 4e 20 52 4f 55 54 49  4e 45 0d 07 bc 0d 4d 4f  |IN ROUTINE....MO|
00000ec0  56 20 52 32 2c 23 30 0d  07 c6 1f 4d 4f 56 20 52  |V R2,#0....MOV R|
00000ed0  30 2c 23 26 31 38 20 5c  20 56 45 43 54 4f 52 20  |0,#&18 \ VECTOR |
00000ee0  4e 55 4d 42 45 52 0d 07  d0 0d 41 44 52 20 52 31  |NUMBER....ADR R1|
00000ef0  2c 47 53 0d 07 da 1b 53  57 49 20 26 32 30 20 5c  |,GS....SWI &20 \|
00000f00  20 52 45 4c 45 53 45 20  56 45 43 54 4f 52 0d 07  | RELESE VECTOR..|
00000f10  e4 1e 4d 4f 56 20 52 31  35 2c 52 31 34 20 5c 20  |..MOV R15,R14 \ |
00000f20  42 41 43 4b 20 b8 20 42  41 53 49 43 0d 07 ee 04  |BACK . BASIC....|
00000f30  0d 07 f8 1e 2e 54 56 41  4c 20 45 51 55 44 20 30  |.....TVAL EQUD 0|
00000f40  20 5c 20 54 52 49 47 47  45 52 20 bb 55 45 0d 08  | \ TRIGGER .UE..|
00000f50  02 1e 2e 53 50 45 31 20  45 51 55 44 20 30 20 5c  |...SPE1 EQUD 0 \|
00000f60  20 4c 53 42 20 ca 20 53  50 45 45 44 0d 08 0c 1e  | LSB . SPEED....|
00000f70  2e 53 50 45 32 20 45 51  55 44 20 30 20 5c 20 4d  |.SPE2 EQUD 0 \ M|
00000f80  53 42 20 ca 20 53 50 45  45 44 0d 08 16 12 2e 47  |SB . SPEED.....G|
00000f90  53 20 5c 20 47 41 54 48  45 52 20 d4 0d 08 20 28  |S \ GATHER ... (|
00000fa0  54 45 51 50 20 52 31 35  2c 23 26 43 30 30 30 30  |TEQP R15,#&C0000|
00000fb0  30 33 20 5c 44 49 53 41  42 4c 45 20 a8 45 52 52  |03 \DISABLE .ERR|
00000fc0  55 50 54 53 0d 08 2a 29  4d 4f 56 20 52 30 2c 23  |UPTS..*)MOV R0,#|
00000fd0  26 33 32 30 30 30 30 30  20 5c 20 42 41 53 45 20  |&3200000 \ BASE |
00000fe0  41 44 44 52 45 53 53 20  ca 20 49 4f 43 0d 08 34  |ADDRESS . IOC..4|
00000ff0  28 41 44 44 20 52 31 2c  52 30 2c 23 26 35 30 30  |(ADD R1,R0,#&500|
00001000  30 30 20 5c 20 42 41 53  45 20 ca 20 f1 45 52 20  |00 \ BASE . .ER |
00001010  4c 41 54 43 48 0d 08 3e  04 0d 08 48 14 5c 20 48  |LATCH..>...H.\ H|
00001020  4f 4c 44 20 e3 20 54 52  49 47 47 45 52 0d 08 52  |OLD . TRIGGER..R|
00001030  0f 4c 44 52 20 52 32 2c  54 56 41 4c 0d 08 5c 0d  |.LDR R2,TVAL..\.|
00001040  43 4d 50 20 52 32 2c 23  30 0d 08 66 2b 42 45 51  |CMP R2,#0..f+BEQ|
00001050  20 54 52 55 4e 20 5c 20  53 4b 49 50 20 54 48 49  | TRUN \ SKIP THI|
00001060  53 20 e7 20 54 52 49 47  47 45 52 20 bb 55 45 20  |S . TRIGGER .UE |
00001070  49 53 20 30 0d 08 70 0a  2e 54 48 4f 4c 44 0d 08  |IS 0..p..THOLD..|
00001080  7a 1f 4d 4f 56 20 52 32  2c 23 30 20 5c 20 43 48  |z.MOV R2,#0 \ CH|
00001090  49 50 20 53 45 4c 45 43  54 20 4c 4f 57 0d 08 84  |IP SELECT LOW...|
000010a0  14 53 54 52 20 52 32 2c  5b 52 31 2c 23 26 31 30  |.STR R2,[R1,#&10|
000010b0  5d 0d 08 8e 1c 4d 4f 56  20 52 33 2c 23 26 41 20  |]....MOV R3,#&A |
000010c0  5c 20 42 49 54 53 20 b8  20 f3 20 49 4e 0d 08 98  |\ BITS . . IN...|
000010d0  21 4d 4f 56 20 52 35 2c  23 30 20 5c 20 43 4f 4c  |!MOV R5,#0 \ COL|
000010e0  4c 45 43 54 20 42 49 54  53 20 48 45 52 45 0d 08  |LECT BITS HERE..|
000010f0  a2 0a 2e 4c 4f 4f 50 32  0d 08 ac 1a 4c 44 52 20  |...LOOP2....LDR |
00001100  52 34 2c 5b 52 30 2c 23  26 31 30 5d 20 5c 20 a5  |R4,[R0,#&10] \ .|
00001110  20 dc 0d 08 b6 1f 4d 4f  56 20 52 32 2c 23 26 31  | .....MOV R2,#&1|
00001120  30 30 30 30 20 5c 20 43  4c 4f 43 4b 20 48 49 47  |0000 \ CLOCK HIG|
00001130  48 0d 08 c0 24 53 54 52  20 52 32 2c 5b 52 31 2c  |H...$STR R2,[R1,|
00001140  23 26 31 30 5d 20 5c 20  50 55 54 20 4f 55 54 20  |#&10] \ PUT OUT |
00001150  b8 20 f1 45 52 0d 08 ca  1b 80 20 52 34 2c 52 34  |. .ER..... R4,R4|
00001160  2c 23 31 20 5c 20 4d 41  53 4b 20 dc 20 42 49 54  |,#1 \ MASK . BIT|
00001170  0d 08 d4 2e 4d 4f 56 20  52 35 2c 52 35 2c 4c 53  |....MOV R5,R5,LS|
00001180  4c 20 23 31 20 5c 20 50  52 45 50 41 52 45 20 52  |L #1 \ PREPARE R|
00001190  35 20 b8 20 52 45 43 49  45 56 45 20 49 54 0d 08  |5 . RECIEVE IT..|
000011a0  de 23 84 52 20 52 35 2c  52 35 2c 52 34 20 5c 20  |.#.R R5,R5,R4 \ |
000011b0  4d 49 58 20 49 54 20 49  4e 20 57 49 54 48 20 52  |MIX IT IN WITH R|
000011c0  35 0d 08 e8 19 4d 4f 56  20 52 32 2c 23 30 20 5c  |5....MOV R2,#0 \|
000011d0  20 43 4c 4f 43 4b 20 4c  4f 57 0d 08 f2 14 53 54  | CLOCK LOW....ST|
000011e0  52 20 52 32 2c 5b 52 31  2c 23 26 31 30 5d 0d 08  |R R2,[R1,#&10]..|
000011f0  fc 11 53 55 42 53 20 52  33 2c 52 33 2c 23 31 0d  |..SUBS R3,R3,#1.|
00001200  09 06 0d 42 4e 45 20 4c  4f 4f 50 32 0d 09 10 25  |...BNE LOOP2...%|
00001210  4d 4f 56 20 52 32 2c 23  26 32 30 30 30 30 20 5c  |MOV R2,#&20000 \|
00001220  20 43 48 49 50 20 53 45  4c 45 43 54 20 48 49 47  | CHIP SELECT HIG|
00001230  48 0d 09 1a 14 53 54 52  20 52 32 2c 5b 52 31 2c  |H....STR R2,[R1,|
00001240  23 26 31 30 5d 0d 09 24  23 80 20 52 35 2c 52 35  |#&10]..$#. R5,R5|
00001250  2c 23 26 46 46 20 5c 20  4d 41 53 4b 20 87 20 53  |,#&FF \ MASK . S|
00001260  54 41 52 54 20 42 49 54  0d 09 2e 16 5c 52 35 20  |TART BIT....\R5 |
00001270  4e 4f 57 20 48 41 53 20  53 41 4d 50 4c 45 0d 09  |NOW HAS SAMPLE..|
00001280  38 0f 4c 44 52 20 52 32  2c 54 56 41 4c 0d 09 42  |8.LDR R2,TVAL..B|
00001290  0d 43 4d 50 20 52 32 2c  52 35 0d 09 4c 0d 42 4c  |.CMP R2,R5..L.BL|
000012a0  53 20 54 48 4f 4c 44 0d  09 56 04 0d 09 60 09 2e  |S THOLD..V...`..|
000012b0  54 52 55 4e 0d 09 6a 1d  4c 44 52 20 52 32 2c 53  |TRUN..j.LDR R2,S|
000012c0  50 45 32 20 5c 20 54 31  20 bb 55 45 20 48 49 47  |PE2 \ T1 .UE HIG|
000012d0  48 0d 09 74 24 53 54 52  20 52 32 2c 5b 52 30 2c  |H..t$STR R2,[R0,|
000012e0  23 26 35 34 5d 20 5c 20  54 31 20 4c 41 54 43 48  |#&54] \ T1 LATCH|
000012f0  20 48 49 47 48 0d 09 7e  1c 4c 44 52 20 52 32 2c  | HIGH..~.LDR R2,|
00001300  53 50 45 31 20 5c 20 54  31 20 bb 55 45 20 4c 4f  |SPE1 \ T1 .UE LO|
00001310  57 0d 09 88 23 53 54 52  20 52 32 2c 5b 52 30 2c  |W...#STR R2,[R0,|
00001320  23 26 35 30 5d 20 5c 20  54 31 20 4c 41 54 43 48  |#&50] \ T1 LATCH|
00001330  20 4c 4f 57 0d 09 92 04  0d 09 9c 21 4c 44 52 20  | LOW.......!LDR |
00001340  52 32 2c 5b 52 30 2c 23  26 31 38 5d 20 5c 20 a5  |R2,[R0,#&18] \ .|
00001350  20 49 52 51 20 4d 41 53  4b 0d 09 a6 1d 84 52 20  | IRQ MASK.....R |
00001360  52 32 2c 52 32 2c 23 26  34 30 20 5c 20 45 4e 41  |R2,R2,#&40 \ ENA|
00001370  42 4c 45 20 54 31 0d 09  b0 16 4d 4f 56 20 20 52  |BLE T1....MOV  R|
00001380  32 2c 52 32 2c 4c 53 4c  20 23 31 36 0d 09 ba 1f  |2,R2,LSL #16....|
00001390  53 54 52 20 52 32 2c 5b  52 30 2c 23 26 31 38 5d  |STR R2,[R0,#&18]|
000013a0  20 5c 20 4d 41 53 4b 20  52 45 47 0d 09 c4 04 0d  | \ MASK REG.....|
000013b0  09 ce 22 4d 4f 56 20 52  32 2c 23 26 34 30 30 30  |.."MOV R2,#&4000|
000013c0  30 30 20 5c 20 d8 20 54  31 20 a8 45 52 52 55 50  |00 \ . T1 .ERRUP|
000013d0  54 0d 09 d8 1c 53 54 52  20 52 32 2c 5b 52 30 2c  |T....STR R2,[R0,|
000013e0  23 26 31 34 5d 20 5c 20  49 52 51 20 d8 0d 09 e2  |#&14] \ IRQ ....|
000013f0  1d 53 54 52 20 20 52 32  2c 5b 52 30 2c 23 26 35  |.STR  R2,[R0,#&5|
00001400  38 5d 20 5c 20 47 4f 20  54 31 0d 09 ec 04 0d 09  |8] \ GO T1......|
00001410  f6 22 2e 54 4c 4f 4f 50  20 5c 20 44 45 4c 41 59  |.".TLOOP \ DELAY|
00001420  20 4c 4f 4f 50 20 e3 20  54 49 4d 45 52 20 54 31  | LOOP . TIMER T1|
00001430  0d 0a 00 15 4c 44 52 42  20 52 32 2c 5b 52 30 2c  |....LDRB R2,[R0,|
00001440  23 26 31 30 5d 0d 0a 0a  0f 54 53 54 20 52 32 2c  |#&10]....TST R2,|
00001450  23 26 34 30 0d 0a 14 0d  42 45 51 20 54 4c 4f 4f  |#&40....BEQ TLOO|
00001460  50 0d 0a 1e 22 4d 4f 56  20 52 32 2c 23 26 34 30  |P..."MOV R2,#&40|
00001470  30 30 30 30 20 5c 20 d8  20 54 31 20 a8 45 52 52  |0000 \ . T1 .ERR|
00001480  55 50 54 0d 0a 28 1c 53  54 52 20 52 32 2c 5b 52  |UPT..(.STR R2,[R|
00001490  30 2c 23 26 31 34 5d 20  5c 20 49 52 51 20 d8 0d  |0,#&14] \ IRQ ..|
000014a0  0a 32 04 0d 0a 3c 14 5c  20 54 41 4b 45 20 ee 45  |.2...<.\ TAKE .E|
000014b0  20 53 41 4d 50 4c 45 0d  0a 46 1f 4d 4f 56 20 52  | SAMPLE..F.MOV R|
000014c0  32 2c 23 30 20 5c 20 43  48 49 50 20 53 45 4c 45  |2,#0 \ CHIP SELE|
000014d0  43 54 20 4c 4f 57 0d 0a  50 14 53 54 52 20 52 32  |CT LOW..P.STR R2|
000014e0  2c 5b 52 31 2c 23 26 31  30 5d 0d 0a 5a 1c 4d 4f  |,[R1,#&10]..Z.MO|
000014f0  56 20 52 33 2c 23 26 41  20 5c 20 42 49 54 53 20  |V R3,#&A \ BITS |
00001500  b8 20 f3 20 49 4e 0d 0a  64 21 4d 4f 56 20 52 35  |. . IN..d!MOV R5|
00001510  2c 23 30 20 5c 20 43 4f  4c 4c 45 43 54 20 42 49  |,#0 \ COLLECT BI|
00001520  54 53 20 48 45 52 45 0d  0a 6e 0a 2e 4c 4f 4f 50  |TS HERE..n..LOOP|
00001530  31 0d 0a 78 1a 4c 44 52  20 52 34 2c 5b 52 30 2c  |1..x.LDR R4,[R0,|
00001540  23 26 31 30 5d 20 5c 20  a5 20 dc 0d 0a 82 1f 4d  |#&10] \ . .....M|
00001550  4f 56 20 52 32 2c 23 26  31 30 30 30 30 20 5c 20  |OV R2,#&10000 \ |
00001560  43 4c 4f 43 4b 20 48 49  47 48 0d 0a 8c 24 53 54  |CLOCK HIGH...$ST|
00001570  52 20 52 32 2c 5b 52 31  2c 23 26 31 30 5d 20 5c  |R R2,[R1,#&10] \|
00001580  20 50 55 54 20 4f 55 54  20 b8 20 f1 45 52 0d 0a  | PUT OUT . .ER..|
00001590  96 1b 80 20 52 34 2c 52  34 2c 23 31 20 5c 20 4d  |... R4,R4,#1 \ M|
000015a0  41 53 4b 20 dc 20 42 49  54 0d 0a a0 2e 4d 4f 56  |ASK . BIT....MOV|
000015b0  20 52 35 2c 52 35 2c 4c  53 4c 20 23 31 20 5c 20  | R5,R5,LSL #1 \ |
000015c0  50 52 45 50 41 52 45 20  52 35 20 b8 20 52 45 43  |PREPARE R5 . REC|
000015d0  49 45 56 45 20 49 54 0d  0a aa 23 84 52 20 52 35  |IEVE IT...#.R R5|
000015e0  2c 52 35 2c 52 34 20 5c  20 4d 49 58 20 49 54 20  |,R5,R4 \ MIX IT |
000015f0  49 4e 20 57 49 54 48 20  52 35 0d 0a b4 19 4d 4f  |IN WITH R5....MO|
00001600  56 20 52 32 2c 23 30 20  5c 20 43 4c 4f 43 4b 20  |V R2,#0 \ CLOCK |
00001610  4c 4f 57 0d 0a be 14 53  54 52 20 52 32 2c 5b 52  |LOW....STR R2,[R|
00001620  31 2c 23 26 31 30 5d 0d  0a c8 11 53 55 42 53 20  |1,#&10]....SUBS |
00001630  52 33 2c 52 33 2c 23 31  0d 0a d2 0d 42 4e 45 20  |R3,R3,#1....BNE |
00001640  4c 4f 4f 50 31 0d 0a dc  25 4d 4f 56 20 52 32 2c  |LOOP1...%MOV R2,|
00001650  23 26 32 30 30 30 30 20  5c 20 43 48 49 50 20 53  |#&20000 \ CHIP S|
00001660  45 4c 45 43 54 20 48 49  47 48 0d 0a e6 14 53 54  |ELECT HIGH....ST|
00001670  52 20 52 32 2c 5b 52 31  2c 23 26 31 30 5d 0d 0a  |R R2,[R1,#&10]..|
00001680  f0 23 80 20 52 35 2c 52  35 2c 23 26 46 46 20 5c  |.#. R5,R5,#&FF \|
00001690  20 4d 41 53 4b 20 87 20  53 54 41 52 54 20 42 49  | MASK . START BI|
000016a0  54 0d 0a fa 16 5c 52 35  20 4e 4f 57 20 48 41 53  |T....\R5 NOW HAS|
000016b0  20 53 41 4d 50 4c 45 0d  0b 04 2a 53 54 52 42 20  | SAMPLE...*STRB |
000016c0  52 35 2c 5b 52 36 5d 2c  23 31 20 5c 20 50 55 54  |R5,[R6],#1 \ PUT|
000016d0  20 49 54 20 49 4e 20 54  48 45 20 42 55 46 46 45  | IT IN THE BUFFE|
000016e0  52 0d 0b 0e 29 53 55 42  53 20 52 37 2c 52 37 2c  |R...)SUBS R7,R7,|
000016f0  23 31 20 20 5c 20 44 45  43 52 45 4d 45 4e 54 20  |#1  \ DECREMENT |
00001700  42 59 54 45 53 20 b8 20  47 4f 0d 0b 18 21 42 4e  |BYTES . GO...!BN|
00001710  45 20 20 54 4c 4f 4f 50  20 5c 20 42 41 43 4b 20  |E  TLOOP \ BACK |
00001720  fd 4c 20 41 4c 4c 20 44  4f 4e 45 0d 0b 22 04 0d  |.L ALL DONE.."..|
00001730  0b 2c 13 5c 50 52 45 50  41 52 45 20 b8 20 45 58  |.,.\PREPARE . EX|
00001740  49 54 0d 0b 36 22 4d 4f  56 20 52 32 2c 23 26 34  |IT..6"MOV R2,#&4|
00001750  30 30 30 30 30 20 5c 20  d8 20 54 31 20 a8 45 52  |00000 \ . T1 .ER|
00001760  52 55 50 54 0d 0b 40 1c  53 54 52 20 52 32 2c 5b  |RUPT..@.STR R2,[|
00001770  52 30 2c 23 26 31 34 5d  20 5c 20 49 52 51 20 d8  |R0,#&14] \ IRQ .|
00001780  0d 0b 4a 21 4c 44 52 20  52 32 2c 5b 52 30 2c 23  |..J!LDR R2,[R0,#|
00001790  26 31 38 5d 20 5c 20 a5  20 49 52 51 20 4d 41 53  |&18] \ . IRQ MAS|
000017a0  4b 0d 0b 54 1c 80 20 52  32 2c 52 32 2c 23 26 42  |K..T.. R2,R2,#&B|
000017b0  46 20 5c 20 45 4e 41 42  4c 45 20 54 31 0d 0b 5e  |F \ ENABLE T1..^|
000017c0  16 4d 4f 56 20 20 52 32  2c 52 32 2c 4c 53 4c 20  |.MOV  R2,R2,LSL |
000017d0  23 31 36 0d 0b 68 1f 53  54 52 20 52 32 2c 5b 52  |#16..h.STR R2,[R|
000017e0  30 2c 23 26 31 38 5d 20  5c 20 4d 41 53 4b 20 52  |0,#&18] \ MASK R|
000017f0  45 47 0d 0b 72 04 0d 0b  7c 2d 4c 44 4d 46 44 20  |EG..r...|-LDMFD |
00001800  52 31 33 21 2c 20 7b 50  43 7d 20 5c 20 42 41 43  |R13!, {PC} \ BAC|
00001810  4b 20 46 52 4f 4d 20 c9  53 54 20 59 4f 55 20 43  |K FROM .ST YOU C|
00001820  41 4d 45 0d 0b 86 04 0d  0b 90 1e 2e 44 49 53 50  |AME.........DISP|
00001830  20 5c 20 44 49 53 50 4c  41 59 20 54 48 45 20 42  | \ DISPLAY THE B|
00001840  55 46 46 45 52 0d 0b 9a  15 4d 4f 56 20 52 32 2c  |UFFER....MOV R2,|
00001850  23 30 20 5c 20 58 20 bb  55 45 0d 0b a4 1f 4d 4f  |#0 \ X .UE....MO|
00001860  56 20 52 35 2c 23 31 36  30 20 5c 20 42 59 54 45  |V R5,#160 \ BYTE|
00001870  53 20 50 45 52 20 52 4f  57 0d 0b ae 23 4d 4f 56  |S PER ROW...#MOV|
00001880  20 52 37 2c 52 30 20 5c  20 c7 99 20 53 54 41 52  | R7,R0 \ .. STAR|
00001890  54 20 ca 20 dc 20 42 55  46 46 45 52 0d 0b b8 2a  |T . . BUFFER...*|
000018a0  41 44 44 20 52 37 2c 52  37 2c 23 33 32 30 20 5c  |ADD R7,R7,#320 \|
000018b0  20 41 44 44 52 45 53 53  20 ca 20 48 41 4c 46 20  | ADDRESS . HALF |
000018c0  42 55 46 46 45 52 0d 0b  c2 1d 41 44 44 20 52 31  |BUFFER....ADD R1|
000018d0  2c 52 31 2c 23 31 36 30  20 5c 20 ec 20 87 20 b8  |,R1,#160 \ . . .|
000018e0  50 20 86 0d 0b cc 0a 2e  44 4c 4f 4f 50 0d 0b d6  |P ......DLOOP...|
000018f0  1b 4c 44 52 42 20 52 33  2c 5b 52 30 5d 2c 23 31  |.LDRB R3,[R0],#1|
00001900  20 5c 20 59 20 bb 55 45  0d 0b e0 14 4d 4f 56 20  | \ Y .UE....MOV |
00001910  52 33 2c 52 33 2c 4c 53  52 20 23 31 0d 0b ea 22  |R3,R3,LSR #1..."|
00001920  4d 4c 41 20 52 34 2c 52  33 2c 52 35 2c 52 32 20  |MLA R4,R3,R5,R2 |
00001930  5c 20 a5 20 50 49 58 45  4c 20 87 53 45 54 0d 0b  |\ . PIXEL .SET..|
00001940  f4 1f 41 44 44 20 52 34  2c 52 34 2c 52 31 20 5c  |..ADD R4,R4,R1 \|
00001950  20 52 45 41 4c 20 41 44  44 52 45 53 53 0d 0b fe  | REAL ADDRESS...|
00001960  1a 4c 44 52 42 20 52 36  2c 5b 52 34 5d 20 5c 20  |.LDRB R6,[R4] \ |
00001970  a5 20 50 49 58 45 4c 0d  0c 08 23 82 20 52 36 2c  |. PIXEL...#. R6,|
00001980  52 36 2c 23 26 32 20 5c  20 b8 47 47 4c 45 20 46  |R6,#&2 \ .GGLE F|
00001990  49 52 53 54 20 50 49 58  45 4c 0d 0c 12 1e 53 54  |IRST PIXEL....ST|
000019a0  52 42 20 52 36 2c 5b 52  34 5d 20 5c 20 50 55 54  |RB R6,[R4] \ PUT|
000019b0  20 49 54 20 42 41 43 4b  0d 0c 1c 13 4c 44 52 42  | IT BACK....LDRB|
000019c0  20 52 33 2c 5b 52 30 5d  2c 23 31 0d 0c 26 14 4d  | R3,[R0],#1..&.M|
000019d0  4f 56 20 52 33 2c 52 33  2c 4c 53 52 20 23 31 0d  |OV R3,R3,LSR #1.|
000019e0  0c 30 13 4d 4c 41 20 52  34 2c 52 33 2c 52 35 2c  |.0.MLA R4,R3,R5,|
000019f0  52 32 0d 0c 3a 10 41 44  44 20 52 34 2c 52 34 2c  |R2..:.ADD R4,R4,|
00001a00  52 31 0d 0c 44 10 4c 44  52 42 20 52 36 2c 5b 52  |R1..D.LDRB R6,[R|
00001a10  34 5d 0d 0c 4e 25 82 20  52 36 2c 52 36 2c 23 26  |4]..N%. R6,R6,#&|
00001a20  32 30 20 5c 20 b8 47 47  4c 45 20 53 45 43 4f 4e  |20 \ .GGLE SECON|
00001a30  44 20 50 49 58 45 4c 0d  0c 58 10 53 54 52 42 20  |D PIXEL..X.STRB |
00001a40  52 36 2c 5b 52 34 5d 0d  0c 62 20 41 44 44 20 52  |R6,[R4]..b ADD R|
00001a50  32 2c 52 32 2c 23 31 20  5c 20 ec 20 41 4c 4f 4e  |2,R2,#1 \ . ALON|
00001a60  47 20 54 48 45 20 58 0d  0c 6c 22 43 4d 50 20 52  |G THE X..l"CMP R|
00001a70  30 2c 52 37 20 5c 20 46  49 4e 49 53 48 45 44 20  |0,R7 \ FINISHED |
00001a80  ee 45 20 42 55 46 46 45  52 0d 0c 76 1d ec 51 20  |.E BUFFER..v..Q |
00001a90  52 32 2c 23 30 20 5c 20  58 20 bb 55 45 20 e3 20  |R2,#0 \ X .UE . |
00001aa0  ed 20 50 41 53 53 0d 0c  80 1b 43 4d 50 20 52 32  |. PASS....CMP R2|
00001ab0  2c 23 31 36 30 20 5c 20  46 49 4e 49 53 48 45 44  |,#160 \ FINISHED|
00001ac0  3f 0d 0c 8a 0d 42 4e 45  20 44 4c 4f 4f 50 0d 0c  |?....BNE DLOOP..|
00001ad0  94 1e 4d 4f 56 20 52 31  35 2c 52 31 34 20 5c 20  |..MOV R15,R14 \ |
00001ae0  42 41 43 4b 20 b8 20 42  41 53 49 43 0d 0c 9e 05  |BACK . BASIC....|
00001af0  5d 0d 0c a8 05 ed 0d 0c  b2 13 e3 20 41 25 3d 30  |].......... A%=0|
00001b00  20 b8 20 4d 53 50 25 2d  31 0d 0c bc 0d f3 20 53  | . MSP%-1..... S|
00001b10  31 25 28 41 25 29 0d 0c  c6 15 53 32 25 28 41 25  |1%(A%)....S2%(A%|
00001b20  29 3d 53 31 25 28 41 25  29 2f 32 0d 0c d0 05 ed  |)=S1%(A%)/2.....|
00001b30  0d 0c da 05 e1 0d 0c e4  2c dc 20 31 30 30 2c 31  |........,. 100,1|
00001b40  34 30 2c 31 38 30 2c 32  32 30 2c 33 32 30 2c 36  |40,180,220,320,6|
00001b50  34 30 2c 31 32 38 30 2c  32 30 30 30 2c 34 30 30  |40,1280,2000,400|
00001b60  30 0d ff                                          |0..|
00001b63