Home » Archimedes archive » Acorn User » AU 1994-03.adf » !GraphDemo_GraphDemo » aFreeBarl!

aFreeBarl!

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

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

Tape/disk: Home » Archimedes archive » Acorn User » AU 1994-03.adf » !GraphDemo_GraphDemo
Filename: aFreeBarl!
Read OK:
File size: 1DB9 bytes
Load address: 0000
Exec address: 0000
File contents
   10REM > REVOLUTION
   20REM
   30REM  (C) 1994 ArmOric for Arm'S Tech
   40REM
   50REM THIS PROGRAM SHADES ANY REVOLUTION OBJECT
   60REM
   70REM  * WITH COLORS FOR :
   80REM     - THE OBJECT (BI-COLOR !!)
   90REM     - A VERY FAR LIGHT ( RAYS ARE // )
  100REM     - AN AMBIENT LIGHTING
  110REM      (automatic gain for maximum contrast)
  120REM  * WITHOUT ANY SHADOWS
  130REM  * USING
  140REM     - PATTERNING IN A 16 COLORS MODE
  150REM     - ORDERED DITHERING
  160REM         ( less colour-accurate than error diffusing ones,
  170REM            but nicer for low-res.
  180REM            Complexity is same as simple dithering )
  190REM     - A PROCEDURAL MODEL FOR THE OBJECT
  200REM         (see at end to create your one...)
  210
  220
  230REM *************** LIST OF PARAMETERS *****************
  240
  250MD =12              : REM OR AN OTHER 16 COLORS ONE...
  260MD2=15              : REM ANY ONE THAT TEST DOUBLE MEMORY
  270
  280R=48                : REM SCALES THE IMAGE :
  290                    : REM  HEIGHT WILL BE 2*R LINES
  300                    : REM  WIDTH  WILL BE 4*R PIXELS
  310
  320RO1=50:GO1=10:BO1= 0: REM  OBJECT  COLOR PROPORTIONS
  321RO2=50:GO2=50:BO2=50: REM  OBJECT  COLOR PROPORTIONS
  330
  340RA= 20:GA=  0:BA=  0: REM  AMBIENT LIGHT COLOR } PROPORTION
  350RL= 50:GL= 50:BL= 30: REM CYLINDER LIGHT COLOR }
  360
  370LAM=100             : REM DIFFUSING  }  PROPORTION
  380RFL=150             : REM MIRRORING  }
  390
  400SP=1.2              : REM  DIFFUSE SPREADING   . < 1
  410T=60                : REM  SHINY SPREADING  1 < . < 50
  420MI=.0:MA=1          : REM  SHINY THRESHOLDS 0 <.<.< 1
  430
  440DITHR=TRUE          : REM  FOR ORDERED DITHERING / NONE
  450
  460REM **************** END OF PARAMETERS *****************
  470
  480MODE MD2:MODE MD:OFF
  490ORIGIN 640,512
  500
  510PROCass
  520
  530MOUSE ON 129
  540X=2:Y=2:E=1
  550A=TIME
  560REPEAT
  570 MOUSE DX,DY,T
  580 X+=(DX/100-X)/10:Y+=(DY/512*PI/2-Y)/10
  590 Z=256*COS(Y)
  600 A%=Z*SIN(X):B%=-256*SIN(Y):C%=Z*COS(X)
  610 POINT TO A%+A%,-B%-B%
  620 VDU 19,2,25,(C%>0),(C%>0),(C%>0)
  630 VDU 19,0,24,255,0,0:CALL AFF
  640 VDU 19,0,24,0,0,0:WAIT
  650 PRINT TAB(1,29)TIME-A:A=TIME
  660 SYS "OS_Byte",&71,E
  670 E=3-E:SYS "OS_Byte",&70,E
  680UNTIL 0
  690
  700END
  710:
  720DEF PROCshade
  730
  740IF RO1>GO1 THEN N=RO1 ELSE N=GO1
  750IF BO1>N THEN N=BO1
  760RO1=RO1/N:GO1=GO1/N:BO1=BO1/N
  770
  780IF RO2>GO2 THEN N=RO2 ELSE N=GO2
  790IF BO2>N THEN N=BO2
  800RO2=RO2/N:GO2=GO2/N:BO2=BO2/N
  810
  820IF RO1>RO2 THEN RO=RO1 ELSE RO=RO2
  821IF GO1>GO2 THEN GO=GO1 ELSE GO=GO2
  822IF BO1>BO2 THEN BO=BO1 ELSE BO=BO2
  840
  850N=1/(LAM+RFL)
  860LAM=LAM*N:RFL=RFL*N
  870
  880N=(RA+RL)*LAM*RO+RFL*RL
  890M=(GA+GL)*LAM*GO+RFL*GL:IF M>N THEN N=M
  900M=(BA+BL)*LAM*BO+RFL*BL:IF M>N THEN N=M
  910N=255/N
  920RL=RL*N:RA=RA*N
  930GL=GL*N:GA=GA*N
  940BL=BL*N:BA=BA*N
  950          
  960LVL=-1:NC=1
  970FOR I=0 TO 256
  980 IF I<>0 THEN J=(I/256)^T ELSE J=0
  990 IF J<MI THEN J=MI
 1000 IF J>MA THEN J=MA
 1010 J=(J-MI)/(MA-MI)
 1020 J=(3*J*J-2*J*J*J)
 1030 IF J<0 THEN J=0 ELSE IF J>1 THEN J=1
 1040 IF I=0 THEN K=0 ELSE K=(I/256)^SP
 1050 IF K>1 THEN K=1
 1060 L=K*LAM+J*RFL
 1070 CSTBL?I=L*255
 1080 CSTBL?-I=0
 1090 WHILE L>=LVL
 1100   RS=(RA+RL*K)*LAM*RO1+J*RL*RFL
 1110   GS=(GA+GL*K)*LAM*GO1+J*GL*RFL
 1120   BS=(BA+BL*K)*LAM*BO1+J*BL*RFL
 1130   COLOUR NC,RS,GS,BS
 1140   RS=(RA+RL*K)*LAM*RO2+J*RL*RFL
 1150   GS=(GA+GL*K)*LAM*GO2+J*GL*RFL
 1160   BS=(BA+BL*K)*LAM*BO2+J*BL*RFL
 1170   COLOUR NC+8,RS,GS,BS
 1180   NC+=1:LVL=(LAM+RFL)*NC/7
 1190 ENDWHILE
 1200NEXT I
 1210
 1220C=COLTBL:A=1
 1230FOR I=0 TO 15
 1240 N=A-(A<>7)
 1250 C?(2*I)=A*17
 1260 C?(2*I+1)=A*16+N
 1270 C?(64+2*I)=A*17
 1280 C?(64+2*I+1)=N*16+A
 1290 A=N
 1300NEXT I
 1310C!30=&77777777:C!(64+30)=&77777777
 1320
 1330ENDPROC
 1340:
 1350DEF PROCass
 1360
 1370DIM COD% 300*1024
 1380
 1390XECR=0
 1400FOR I=0 TO 2 STEP 2
 1410P%=COD%
 1420[        OPT  I
 1430.FCLS     LDR R0,ECR
 1440          SUB 11,R0,#(R+15) AND (1023-15)
 1450          MOV R3,#0:MOV R4,#0:MOV R5,#0:MOV R6,#0
 1460          MOV R7,#0:MOV R8,#0:MOV R9,#0:MOV 10,#0
 1470          MOV R1,#2*R
 1480.YCLS     MOV R2,#2*((R+15)AND(1023-15))
 1490          MOV R0,R11
 1500.XCLS     STMIA R0!,{R3-10}
 1510         SUBS R2,R2,#32:BNE XCLS
 1520          ADD 11,11,#XECR
 1530         SUBS R1,R1,#1:BNE YCLS
 1540         
 1550         MOV PC,R14
 1560
 1570.ECR      DCD 149:DCD 149:DCD 6:DCD 7:DCD 149:DCD -1
 1580.aBAL     DCD BAL
 1590.aCSTBL   DCD CSTBL
 1600.aCOLTBL  DCD COLTBL
 1610.RET14    DCD 0
 1620
 1630.AROND    DCD &0E4A2C68       ; NIBBLE PATTERN
 1640                              ; FOR ORDERED DITHERING
 1650
 1660.AFF      STR R14,RET14
 1670
 1680          LDR R14,AROND
 1690
 1700          MOV R8,R0
 1710          MOV R9,R1
 1720          MOV 10,R2           ; 8,9,10 = LIGHT SOURCE
 1730          LDR R6,aCOLTBL
 1740          LDR R12,ECR         ; R12    = ECR
 1750          LDR R11,aBAL        ; R11    = DATA PTR
 1760          LDR R7,aCSTBL       ; R7     = pCos^q
 1770          MOV R0,#R*2         ; R0     = Y LOOP
 1780.YLOP     LDMIA R11!,{R1,R3}  ; R1     = X LOOP
 1790          MUL R3,R9,R3
 1800          STMFD R13!,{R12}
 1810          BIC R2,R1,#255:MOV R2,R1,LSL#2
 1820          MOV R14,R14,ROR#4
 1830          MOV R5,R14,ROR R2
 1840          SUB R12,R12,R1,LSR#9
 1850          SUB R1,R1,#256
 1860.XLOP
 1870          LDMIA R11!,{R2}
 1880          MOV R4,R2,ASR#16
 1890          MOV R2,R2,LSL#16:MOV R2,R2,ASR#16
 1900          MLA R2,R8,R2,R3
 1910          MLA R2,10,R4,R2     ; OUTER PROD. -> COS
 1920          LDRB R2,[R7,R2,ASR#8]
 1930          ADD R4,R2,R5,LSR#28:MOV R5,R5,ROR#28
 1940          LDRB R2,[R6,R4,LSR#3]
 1950          ORR R2,R2,R1
 1960          STRB R2,[R12],#1
 1970         SUBS R1,R1,#256:BPL XLOP
 1980         
 1990          LDMFD R13!,{R12}
 2000          ADD R12,R12,#XECR
 2010          EOR R6,R6,#64
 2020         SUBS R0,R0,#1:BNE YLOP
 2030         
 2040          LDR R0,ECR:LDR R1,ECR+4
 2050          STR R1,ECR:STR R0,ECR+4
 2060         LDR PC,RET14
 2070         
 2080.aREF     DCD REF
 2090         
 2100.CERC     ; R0 = @ STO
 2110          ; R1 = Radius*2
 2120          ; R2 = Facteur*256
 2130          ; R3 = Step*256
 2140          
 2150          STR R1,[R0],#8
 2160          
 2170          MOV R4,#R<<256
 2180          RSB R4,R4,#128      ; R4 = POSITION
 2190          LDR R5,aREF         ; R5 = REF MIDDLE
 2200          
 2210.CERCL    ADD R4,R4,R3
 2220          MOV R9,R4,ASR#8
 2230          LDR R9,[R5,R9,LSL#2]
 2240          MOV R8,R9,LSL#16:MOV R8,R8,ASR#16
 2250          MOV R9,R9,ASR#16
 2260          MUL R6,R8,R2:MOV R6,R6,LSR#16
 2270          MUL R7,R9,R2:MOV R7,R7,LSR#16
 2280          ADD R6,R6,R7,LSL#16
 2290          STR R6,[R0],#4
 2300         SUBS R1,R1,#1:BNE CERCL
 2310          
 2320         MOV PC,R14
 2330]
 2340 SYS "OS_ReadVduVariables",ECR,ECR
 2350  !ECR+=ECR!8*(.5-R)+ECR!12/2
 2360  XECR=ECR!8:ECR!4=!ECR+ECR!12
 2370 P%=(P%+127)AND (-128)
 2380 COLTBL=P%:P%+=128
 2390 CSTBL=P%+256:P%+=256+257+3
 2400 REF=P%:P%+=4*R*2
 2410 BAL=P%
 2420NEXT I
 2430          
 2440IF DITHR=FALSE THEN !AROND=&88888888
 2450          
 2460R2=R*R:RF=REF
 2470FOR I=-R+.5 TO R-.5
 2480 RF!0=255*I/R
 2490 RF!4=255*SQR(1-I*I/R2)
 2500 RF?2=RF?4:RF?3=RF?5
 2510 RF+=4
 2520NEXT I
 2530
 2540PROCshade
 2550          
 2560A%=BAL
 2570OP=0
 2580SYS "Hourglass_On"
 2590FOR Y=-R+.5 TO R-.5
 2600  SYS "Hourglass_Percentage",(Y/R+1)*50
 2610  PROCmodel
 2620  L=INT(ABS(L))
 2630  IF L=0 THEN L=1
 2640  IF L>R THEN L=R
 2650  N=256/SQR(1+V*V)
 2660  !A%=2*L*256:A%!4=-V*N:IF P THEN !A%+=8*17
 2670  A%+=8
 2680  NK=-L+L/4
 2690  FOR K=-L+.5 TO L-.5:X=K/L
 2700   Z=SQR(1-X*X)
 2710   IF NOT(P) AND K>NK THEN NK+=L/4:SWAP X,Z:X=X*SGN(Z):Z=ABS(Z)
 2720   !A%=X*N:A%!2=Z*N
 2730   A%+=4
 2740  NEXT K
 2750NEXT Y
 2760SYS "Hourglass_Off"
 2770
 2780ENDPROC
 2790:
 2800DEF PROCmodel
 2810
 2820 REM **** BEGIN MODIFIABLE ****
 2830 
 2840  P=(ABS(ABS(Y/R)-3/4)<1/10)+(ABS(Y/R)<1/10)
 2850  L=R*(1-(Y/R)^2/3)-P*R/16
 2860  V=L-OP
 2870  OP=L
 2880  
 2890 REM **** END MODIFIABLE ****
 2900 
 2910ENDPROC
 2920:
 2930REM TO CHANGE THE OBJECT MODIFY PROCmodel :
 2940REM
 2950REM IN THIS BLOCK YOU MUST PROVIDE :
 2960REM  * L : THE RADIUS VALUE FOR Y
 2970REM          ( MUST BE 0 < . < R )
 2980REM  * V : IT'S DERIVATIVE / Y
 2990REM          ( SIGN AND AMPLITUDE MUST BE CORRECT! )
 3000REM WITH Y BEEING : -R < Y < R
 3010REM ( R IS THE SCALE PARAMETER ...)
 3020REM
 3030REM WARNING: USE LOCAL VAR IF NOT SURE ...
 3040REM

� > REVOLUTION
�
&�  (C) 1994 ArmOric for Arm'S Tech
(�
2/� THIS PROGRAM SHADES ANY REVOLUTION OBJECT
<�
F�  * WITH COLORS FOR :
P$�     - THE OBJECT (BI-COLOR !!)
Z,�     - A VERY FAR LIGHT ( RAYS ARE // )
d�     - AN AMBIENT LIGHTING
n0�      (automatic gain for maximum contrast)
x�  * WITHOUT ANY SHADOWS
��  * USING
�*�     - PATTERNING IN A 16 COLORS MODE
��     - ORDERED DITHERING
�?�         ( less colour-accurate than error diffusing ones,
�'�            but nicer for low-res.
�9�            Complexity is same as simple dithering )
�-�     - A PROCEDURAL MODEL FOR THE OBJECT
�0�         (see at end to create your one...)
�
�
�:� *************** LIST OF PARAMETERS *****************
�
�8MD =12              : � OR AN OTHER 16 COLORS ONE...
;MD2=15              : � ANY ONE THAT TEST DOUBLE MEMORY

.R=48                : � SCALES THE IMAGE :
"5                    : �  HEIGHT WILL BE 2*R LINES
,6                    : �  WIDTH  WILL BE 4*R PIXELS
6
@6RO1=50:GO1=10:BO1= 0: �  OBJECT  COLOR PROPORTIONS
A6RO2=50:GO2=50:BO2=50: �  OBJECT  COLOR PROPORTIONS
J
T=RA= 20:GA=  0:BA=  0: �  AMBIENT LIGHT COLOR } PROPORTION
^2RL= 50:GL= 50:BL= 30: � CYLINDER LIGHT COLOR }
h
r4LAM=100             : � DIFFUSING  }  PROPORTION
|(RFL=150             : � MIRRORING  }
�
�6SP=1.2              : �  DIFFUSE SPREADING   . < 1
�8T=60                : �  SHINY SPREADING  1 < . < 50
�7MI=.0:MA=1          : �  SHINY THRESHOLDS 0 <.<.< 1
�
�6DITHR=�          : �  FOR ORDERED DITHERING / NONE
�
�:� **************** END OF PARAMETERS *****************
�
�� MD2:� MD:�
�ȑ 640,512
�
��ass

ȗ � 129
X=2:Y=2:E=1
&A=�
0�
: ȗ DX,DY,T
D* X+=(DX/100-X)/10:Y+=(DY/512*�/2-Y)/10
N Z=256*�(Y)
X% A%=Z*�(X):B%=-256*�(Y):C%=Z*�(X)
b Ȓ � A%+A%,-B%-B%
l# � 19,2,25,(C%>0),(C%>0),(C%>0)
v � 19,0,24,255,0,0:� AFF
� � 19,0,24,0,0,0:Ȗ
� � �1,29)�-A:A=�
� ș "OS_Byte",&71,E
� E=3-E:ș "OS_Byte",&70,E
�� 0
�
��
�:
�� �shade
�
�� RO1>GO1 � N=RO1 � N=GO1
�� BO1>N � N=BO1
�!RO1=RO1/N:GO1=GO1/N:BO1=BO1/N

� RO2>GO2 � N=RO2 � N=GO2
� BO2>N � N=BO2
 !RO2=RO2/N:GO2=GO2/N:BO2=BO2/N
*
4� RO1>RO2 � RO=RO1 � RO=RO2
5� GO1>GO2 � GO=GO1 � GO=GO2
6� BO1>BO2 � BO=BO1 � BO=BO2
H
RN=1/(LAM+RFL)
\LAM=LAM*N:RFL=RFL*N
f
pN=(RA+RL)*LAM*RO+RFL*RL
z'M=(GA+GL)*LAM*GO+RFL*GL:� M>N � N=M
�'M=(BA+BL)*LAM*BO+RFL*BL:� M>N � N=M
�N=255/N
�RL=RL*N:RA=RA*N
�GL=GL*N:GA=GA*N
�BL=BL*N:BA=BA*N
�          
�LVL=-1:NC=1
�� I=0 � 256
� � I<>0 � J=(I/256)^T � J=0
� � J<MI � J=MI
� � J>MA � J=MA
� J=(J-MI)/(MA-MI)
� J=(3*J*J-2*J*J*J)
 � J<0 � J=0 � � J>1 � J=1
 � I=0 � K=0 � K=(I/256)^SP
 � K>1 � K=1
$ L=K*LAM+J*RFL
. CSTBL?I=L*255
8 CSTBL?-I=0
B ȕ L>=LVL
L$   RS=(RA+RL*K)*LAM*RO1+J*RL*RFL
V$   GS=(GA+GL*K)*LAM*GO1+J*GL*RFL
`$   BS=(BA+BL*K)*LAM*BO1+J*BL*RFL
j   � NC,RS,GS,BS
t$   RS=(RA+RL*K)*LAM*RO2+J*RL*RFL
~$   GS=(GA+GL*K)*LAM*GO2+J*GL*RFL
�$   BS=(BA+BL*K)*LAM*BO2+J*BL*RFL
�   � NC+8,RS,GS,BS
�   NC+=1:LVL=(LAM+RFL)*NC/7
� �
�� I
�
�C=COLTBL:A=1
�� I=0 � 15
� N=A-(A<>7)
� C?(2*I)=A*17
� C?(2*I+1)=A*16+N
� C?(64+2*I)=A*17
 C?(64+2*I+1)=N*16+A

 A=N
� I
&C!30=&77777777:C!(64+30)=&77777777
(
2�
<:
F
� �ass
P
Z� COD% 300*1024
d
n
XECR=0
x� I=0 � 2 � 2
�P%=COD%
�[        OPT  I
�.FCLS     LDR R0,ECR
�+          SUB 11,R0,#(R+15) � (1023-15)
�5          MOV R3,#0:MOV R4,#0:MOV R5,#0:MOV R6,#0
�5          MOV R7,#0:MOV R8,#0:MOV R9,#0:MOV 10,#0
�          MOV R1,#2*R
�*.YCLS     MOV R2,#2*((R+15)�(1023-15))
�          MOV R0,R11
�.XCLS     STMIA R0!,{R3-10}
�$         SUBS R2,R2,#32:BNE XCLS
�          ADD 11,11,#XECR
�#         SUBS R1,R1,#1:BNE YCLS

         
         MOV PC,R14

"8.ECR      DCD 149:DCD 149:DCD 6:DCD 7:DCD 149:DCD -1
,.aBAL     DCD BAL
6.aCSTBL   DCD CSTBL
@.aCOLTBL  DCD COLTBL
J.RET14    DCD 0
T
^2.AROND    DCD &0E4A2C68       ; NIBBLE PATTERN
h6                              ; � �DERED DITHERING
r
|.AFF      STR R14,RET14
�
�          LDR R14,AROND
�
�          MOV R8,R0
�          MOV R9,R1
�9          MOV 10,R2           ; 8,9,10 = LIGHT SOURCE
�          LDR R6,aCOLTBL
�0          LDR R12,ECR         ; R12    = ECR
�2          LDR R11,aBAL        ; R11    = � PTR
�3          LDR R7,aCSTBL       ; R7     = pCos^q
�3          MOV R0,#R*2         ; R0     = Y LOOP
�3.YLOP     LDMIA R11!,{R1,R3}  ; R1     = X LOOP
�          MUL R3,R9,R3
          STMFD R13!,{R12}
,          BIC R2,R1,#255:MOV R2,R1,LSL#2
          MOV R14,R14,ROR#4
&          MOV R5,R14,ROR R2
0"          SUB R12,R12,R1,LSR#9
:          SUB R1,R1,#256
D	.XLOP
N          LDMIA R11!,{R2}
X          MOV R4,R2,ASR#16
b/          MOV R2,R2,LSL#16:MOV R2,R2,ASR#16
l          MLA R2,R8,R2,R3
v4          MLA R2,10,R4,R2     ; OUTER PROD. -> �
�#          LDRB R2,[R7,R2,ASR#8]
�2          ADD R4,R2,R5,LSR#28:MOV R5,R5,ROR#28
�#          LDRB R2,[R6,R4,LSR#3]
�          �R R2,R2,R1
�          STRB R2,[R12],#1
�%         SUBS R1,R1,#256:BPL XLOP
�
         
�          LDMFD R13!,{R12}
�          ADD R12,R12,#XECR
�          � R6,R6,#64
�#         SUBS R0,R0,#1:BNE YLOP
�
         
�%          LDR R0,ECR:LDR R1,ECR+4
%          STR R1,ECR:STR R0,ECR+4
         LDR PC,RET14

         
 .aREF     DCD REF
*
         
4.CERC     ; R0 = @ STO
>          ; R1 = Radius*2
H           ; R2 = Facteur*256
R          ; R3 = Step*256
\          
f          STR R1,[R0],#8
p          
z          MOV R4,#R<<256
�1          RSB R4,R4,#128      ; R4 = POSITION
�3          LDR R5,aREF         ; R5 = REF MIDDLE
�          
�.CERCL    ADD R4,R4,R3
�          MOV R9,R4,ASR#8
�"          LDR R9,[R5,R9,LSL#2]
�/          MOV R8,R9,LSL#16:MOV R8,R8,ASR#16
�          MOV R9,R9,ASR#16
�+          MUL R6,R8,R2:MOV R6,R6,LSR#16
�+          MUL R7,R9,R2:MOV R7,R7,LSR#16
�!          ADD R6,R6,R7,LSL#16
�          STR R6,[R0],#4
�$         SUBS R1,R1,#1:BNE CERCL
	          
	         MOV PC,R14
	]
	$% ș "OS_ReadVduVariables",ECR,ECR
	.!  !ECR+=ECR!8*(.5-R)+ECR!12/2
	8"  XECR=ECR!8:ECR!4=!ECR+ECR!12
	B P%=(P%+127)� (-128)
	L COLTBL=P%:P%+=128
	V CSTBL=P%+256:P%+=256+257+3
	` REF=P%:P%+=4*R*2
	j BAL=P%
	t� I
	~          
	� � DITHR=� � !AROND=&88888888
	�          
	�R2=R*R:RF=REF
	�� I=-R+.5 � R-.5
	� RF!0=255*I/R
	� RF!4=255*�(1-I*I/R2)
	� RF?2=RF?4:RF?3=RF?5
	�
 RF+=4
	�� I
	�
	�
�shade
	�          

A%=BAL

OP=0
ș "Hourglass_On"
� Y=-R+.5 � R-.5
(*  ș "Hourglass_Percentage",(Y/R+1)*50
2  �model
<  L=�(�(L))
F  � L=0 � L=1
P  � L>R � L=R
Z  N=256/�(1+V*V)
d+  !A%=2*L*256:A%!4=-V*N:� P � !A%+=8*17
n  A%+=8
x  NK=-L+L/4
�  � K=-L+.5 � L-.5:X=K/L
�   Z=�(1-X*X)
�5   � �(P) � K>NK � NK+=L/4:Ȕ X,Z:X=X*�(Z):Z=�(Z)
�   !A%=X*N:A%!2=Z*N
�   A%+=4
�	  � K
�� Y
�ș "Hourglass_Off"
�
��
�:
�� �model
�
! � **** BEGIN MODIFIABLE ****
 
*  P=(�(�(Y/R)-3/4)<1/10)+(�(Y/R)<1/10)
"  L=R*(1-(Y/R)^2/3)-P*R/16
,  V=L-OP
6
  OP=L
@  
J � **** END MODIFIABLE ****
T 
^�
h:
r-� TO CHANGE THE OBJECT MODIFY PROCmodel :
|�
�&� IN THIS BLOCK YOU MUST PROVIDE :
�#�  * L : THE RADIUS VALUE FOR Y
�$�          ( MUST BE 0 < . < R )
� �  * V : IT'S DERIVATIVE / Y
�6�          ( SIGN AND AMPLITUDE MUST BE CORRECT! )
� � WITH Y BEEING : -R < Y < R
�%� ( R IS THE SCALE PARAMETER ...)
��
�,� WARNING: USE LOCAL VAR IF NOT SURE ...
��
�
00000000  0d 00 0a 12 f4 20 3e 20  52 45 56 4f 4c 55 54 49  |..... > REVOLUTI|
00000010  4f 4e 0d 00 14 05 f4 0d  00 1e 26 f4 20 20 28 43  |ON........&.  (C|
00000020  29 20 31 39 39 34 20 41  72 6d 4f 72 69 63 20 66  |) 1994 ArmOric f|
00000030  6f 72 20 41 72 6d 27 53  20 54 65 63 68 0d 00 28  |or Arm'S Tech..(|
00000040  05 f4 0d 00 32 2f f4 20  54 48 49 53 20 50 52 4f  |....2/. THIS PRO|
00000050  47 52 41 4d 20 53 48 41  44 45 53 20 41 4e 59 20  |GRAM SHADES ANY |
00000060  52 45 56 4f 4c 55 54 49  4f 4e 20 4f 42 4a 45 43  |REVOLUTION OBJEC|
00000070  54 0d 00 3c 05 f4 0d 00  46 1a f4 20 20 2a 20 57  |T..<....F..  * W|
00000080  49 54 48 20 43 4f 4c 4f  52 53 20 46 4f 52 20 3a  |ITH COLORS FOR :|
00000090  0d 00 50 24 f4 20 20 20  20 20 2d 20 54 48 45 20  |..P$.     - THE |
000000a0  4f 42 4a 45 43 54 20 28  42 49 2d 43 4f 4c 4f 52  |OBJECT (BI-COLOR|
000000b0  20 21 21 29 0d 00 5a 2c  f4 20 20 20 20 20 2d 20  | !!)..Z,.     - |
000000c0  41 20 56 45 52 59 20 46  41 52 20 4c 49 47 48 54  |A VERY FAR LIGHT|
000000d0  20 28 20 52 41 59 53 20  41 52 45 20 2f 2f 20 29  | ( RAYS ARE // )|
000000e0  0d 00 64 1f f4 20 20 20  20 20 2d 20 41 4e 20 41  |..d..     - AN A|
000000f0  4d 42 49 45 4e 54 20 4c  49 47 48 54 49 4e 47 0d  |MBIENT LIGHTING.|
00000100  00 6e 30 f4 20 20 20 20  20 20 28 61 75 74 6f 6d  |.n0.      (autom|
00000110  61 74 69 63 20 67 61 69  6e 20 66 6f 72 20 6d 61  |atic gain for ma|
00000120  78 69 6d 75 6d 20 63 6f  6e 74 72 61 73 74 29 0d  |ximum contrast).|
00000130  00 78 1c f4 20 20 2a 20  57 49 54 48 4f 55 54 20  |.x..  * WITHOUT |
00000140  41 4e 59 20 53 48 41 44  4f 57 53 0d 00 82 0e f4  |ANY SHADOWS.....|
00000150  20 20 2a 20 55 53 49 4e  47 0d 00 8c 2a f4 20 20  |  * USING...*.  |
00000160  20 20 20 2d 20 50 41 54  54 45 52 4e 49 4e 47 20  |   - PATTERNING |
00000170  49 4e 20 41 20 31 36 20  43 4f 4c 4f 52 53 20 4d  |IN A 16 COLORS M|
00000180  4f 44 45 0d 00 96 1d f4  20 20 20 20 20 2d 20 4f  |ODE.....     - O|
00000190  52 44 45 52 45 44 20 44  49 54 48 45 52 49 4e 47  |RDERED DITHERING|
000001a0  0d 00 a0 3f f4 20 20 20  20 20 20 20 20 20 28 20  |...?.         ( |
000001b0  6c 65 73 73 20 63 6f 6c  6f 75 72 2d 61 63 63 75  |less colour-accu|
000001c0  72 61 74 65 20 74 68 61  6e 20 65 72 72 6f 72 20  |rate than error |
000001d0  64 69 66 66 75 73 69 6e  67 20 6f 6e 65 73 2c 0d  |diffusing ones,.|
000001e0  00 aa 27 f4 20 20 20 20  20 20 20 20 20 20 20 20  |..'.            |
000001f0  62 75 74 20 6e 69 63 65  72 20 66 6f 72 20 6c 6f  |but nicer for lo|
00000200  77 2d 72 65 73 2e 0d 00  b4 39 f4 20 20 20 20 20  |w-res....9.     |
00000210  20 20 20 20 20 20 20 43  6f 6d 70 6c 65 78 69 74  |       Complexit|
00000220  79 20 69 73 20 73 61 6d  65 20 61 73 20 73 69 6d  |y is same as sim|
00000230  70 6c 65 20 64 69 74 68  65 72 69 6e 67 20 29 0d  |ple dithering ).|
00000240  00 be 2d f4 20 20 20 20  20 2d 20 41 20 50 52 4f  |..-.     - A PRO|
00000250  43 45 44 55 52 41 4c 20  4d 4f 44 45 4c 20 46 4f  |CEDURAL MODEL FO|
00000260  52 20 54 48 45 20 4f 42  4a 45 43 54 0d 00 c8 30  |R THE OBJECT...0|
00000270  f4 20 20 20 20 20 20 20  20 20 28 73 65 65 20 61  |.         (see a|
00000280  74 20 65 6e 64 20 74 6f  20 63 72 65 61 74 65 20  |t end to create |
00000290  79 6f 75 72 20 6f 6e 65  2e 2e 2e 29 0d 00 d2 04  |your one...)....|
000002a0  0d 00 dc 04 0d 00 e6 3a  f4 20 2a 2a 2a 2a 2a 2a  |.......:. ******|
000002b0  2a 2a 2a 2a 2a 2a 2a 2a  2a 20 4c 49 53 54 20 4f  |********* LIST O|
000002c0  46 20 50 41 52 41 4d 45  54 45 52 53 20 2a 2a 2a  |F PARAMETERS ***|
000002d0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 0d 00  |**************..|
000002e0  f0 04 0d 00 fa 38 4d 44  20 3d 31 32 20 20 20 20  |.....8MD =12    |
000002f0  20 20 20 20 20 20 20 20  20 20 3a 20 f4 20 4f 52  |          : . OR|
00000300  20 41 4e 20 4f 54 48 45  52 20 31 36 20 43 4f 4c  | AN OTHER 16 COL|
00000310  4f 52 53 20 4f 4e 45 2e  2e 2e 0d 01 04 3b 4d 44  |ORS ONE......;MD|
00000320  32 3d 31 35 20 20 20 20  20 20 20 20 20 20 20 20  |2=15            |
00000330  20 20 3a 20 f4 20 41 4e  59 20 4f 4e 45 20 54 48  |  : . ANY ONE TH|
00000340  41 54 20 54 45 53 54 20  44 4f 55 42 4c 45 20 4d  |AT TEST DOUBLE M|
00000350  45 4d 4f 52 59 0d 01 0e  04 0d 01 18 2e 52 3d 34  |EMORY........R=4|
00000360  38 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |8               |
00000370  20 3a 20 f4 20 53 43 41  4c 45 53 20 54 48 45 20  | : . SCALES THE |
00000380  49 4d 41 47 45 20 3a 0d  01 22 35 20 20 20 20 20  |IMAGE :.."5     |
00000390  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3a  |               :|
000003a0  20 f4 20 20 48 45 49 47  48 54 20 57 49 4c 4c 20  | .  HEIGHT WILL |
000003b0  42 45 20 32 2a 52 20 4c  49 4e 45 53 0d 01 2c 36  |BE 2*R LINES..,6|
000003c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000003d0  20 20 20 20 3a 20 f4 20  20 57 49 44 54 48 20 20  |    : .  WIDTH  |
000003e0  57 49 4c 4c 20 42 45 20  34 2a 52 20 50 49 58 45  |WILL BE 4*R PIXE|
000003f0  4c 53 0d 01 36 04 0d 01  40 36 52 4f 31 3d 35 30  |LS..6...@6RO1=50|
00000400  3a 47 4f 31 3d 31 30 3a  42 4f 31 3d 20 30 3a 20  |:GO1=10:BO1= 0: |
00000410  f4 20 20 4f 42 4a 45 43  54 20 20 43 4f 4c 4f 52  |.  OBJECT  COLOR|
00000420  20 50 52 4f 50 4f 52 54  49 4f 4e 53 0d 01 41 36  | PROPORTIONS..A6|
00000430  52 4f 32 3d 35 30 3a 47  4f 32 3d 35 30 3a 42 4f  |RO2=50:GO2=50:BO|
00000440  32 3d 35 30 3a 20 f4 20  20 4f 42 4a 45 43 54 20  |2=50: .  OBJECT |
00000450  20 43 4f 4c 4f 52 20 50  52 4f 50 4f 52 54 49 4f  | COLOR PROPORTIO|
00000460  4e 53 0d 01 4a 04 0d 01  54 3d 52 41 3d 20 32 30  |NS..J...T=RA= 20|
00000470  3a 47 41 3d 20 20 30 3a  42 41 3d 20 20 30 3a 20  |:GA=  0:BA=  0: |
00000480  f4 20 20 41 4d 42 49 45  4e 54 20 4c 49 47 48 54  |.  AMBIENT LIGHT|
00000490  20 43 4f 4c 4f 52 20 7d  20 50 52 4f 50 4f 52 54  | COLOR } PROPORT|
000004a0  49 4f 4e 0d 01 5e 32 52  4c 3d 20 35 30 3a 47 4c  |ION..^2RL= 50:GL|
000004b0  3d 20 35 30 3a 42 4c 3d  20 33 30 3a 20 f4 20 43  |= 50:BL= 30: . C|
000004c0  59 4c 49 4e 44 45 52 20  4c 49 47 48 54 20 43 4f  |YLINDER LIGHT CO|
000004d0  4c 4f 52 20 7d 0d 01 68  04 0d 01 72 34 4c 41 4d  |LOR }..h...r4LAM|
000004e0  3d 31 30 30 20 20 20 20  20 20 20 20 20 20 20 20  |=100            |
000004f0  20 3a 20 f4 20 44 49 46  46 55 53 49 4e 47 20 20  | : . DIFFUSING  |
00000500  7d 20 20 50 52 4f 50 4f  52 54 49 4f 4e 0d 01 7c  |}  PROPORTION..||
00000510  28 52 46 4c 3d 31 35 30  20 20 20 20 20 20 20 20  |(RFL=150        |
00000520  20 20 20 20 20 3a 20 f4  20 4d 49 52 52 4f 52 49  |     : . MIRRORI|
00000530  4e 47 20 20 7d 0d 01 86  04 0d 01 90 36 53 50 3d  |NG  }.......6SP=|
00000540  31 2e 32 20 20 20 20 20  20 20 20 20 20 20 20 20  |1.2             |
00000550  20 3a 20 f4 20 20 44 49  46 46 55 53 45 20 53 50  | : .  DIFFUSE SP|
00000560  52 45 41 44 49 4e 47 20  20 20 2e 20 3c 20 31 0d  |READING   . < 1.|
00000570  01 9a 38 54 3d 36 30 20  20 20 20 20 20 20 20 20  |..8T=60         |
00000580  20 20 20 20 20 20 20 3a  20 f4 20 20 53 48 49 4e  |       : .  SHIN|
00000590  59 20 53 50 52 45 41 44  49 4e 47 20 20 31 20 3c  |Y SPREADING  1 <|
000005a0  20 2e 20 3c 20 35 30 0d  01 a4 37 4d 49 3d 2e 30  | . < 50...7MI=.0|
000005b0  3a 4d 41 3d 31 20 20 20  20 20 20 20 20 20 20 3a  |:MA=1          :|
000005c0  20 f4 20 20 53 48 49 4e  59 20 54 48 52 45 53 48  | .  SHINY THRESH|
000005d0  4f 4c 44 53 20 30 20 3c  2e 3c 2e 3c 20 31 0d 01  |OLDS 0 <.<.< 1..|
000005e0  ae 04 0d 01 b8 36 44 49  54 48 52 3d b9 20 20 20  |.....6DITHR=.   |
000005f0  20 20 20 20 20 20 20 3a  20 f4 20 20 46 4f 52 20  |       : .  FOR |
00000600  4f 52 44 45 52 45 44 20  44 49 54 48 45 52 49 4e  |ORDERED DITHERIN|
00000610  47 20 2f 20 4e 4f 4e 45  0d 01 c2 04 0d 01 cc 3a  |G / NONE.......:|
00000620  f4 20 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |. **************|
00000630  2a 2a 20 45 4e 44 20 4f  46 20 50 41 52 41 4d 45  |** END OF PARAME|
00000640  54 45 52 53 20 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |TERS ***********|
00000650  2a 2a 2a 2a 2a 2a 0d 01  d6 04 0d 01 e0 10 eb 20  |******......... |
00000660  4d 44 32 3a eb 20 4d 44  3a 87 0d 01 ea 0e c8 91  |MD2:. MD:.......|
00000670  20 36 34 30 2c 35 31 32  0d 01 f4 04 0d 01 fe 08  | 640,512........|
00000680  f2 61 73 73 0d 02 08 04  0d 02 12 0c c8 97 20 ee  |.ass.......... .|
00000690  20 31 32 39 0d 02 1c 0f  58 3d 32 3a 59 3d 32 3a  | 129....X=2:Y=2:|
000006a0  45 3d 31 0d 02 26 07 41  3d 91 0d 02 30 05 f5 0d  |E=1..&.A=...0...|
000006b0  02 3a 0f 20 c8 97 20 44  58 2c 44 59 2c 54 0d 02  |.:. .. DX,DY,T..|
000006c0  44 2a 20 58 2b 3d 28 44  58 2f 31 30 30 2d 58 29  |D* X+=(DX/100-X)|
000006d0  2f 31 30 3a 59 2b 3d 28  44 59 2f 35 31 32 2a af  |/10:Y+=(DY/512*.|
000006e0  2f 32 2d 59 29 2f 31 30  0d 02 4e 0f 20 5a 3d 32  |/2-Y)/10..N. Z=2|
000006f0  35 36 2a 9b 28 59 29 0d  02 58 25 20 41 25 3d 5a  |56*.(Y)..X% A%=Z|
00000700  2a b5 28 58 29 3a 42 25  3d 2d 32 35 36 2a b5 28  |*.(X):B%=-256*.(|
00000710  59 29 3a 43 25 3d 5a 2a  9b 28 58 29 0d 02 62 16  |Y):C%=Z*.(X)..b.|
00000720  20 c8 92 20 b8 20 41 25  2b 41 25 2c 2d 42 25 2d  | .. . A%+A%,-B%-|
00000730  42 25 0d 02 6c 23 20 ef  20 31 39 2c 32 2c 32 35  |B%..l# . 19,2,25|
00000740  2c 28 43 25 3e 30 29 2c  28 43 25 3e 30 29 2c 28  |,(C%>0),(C%>0),(|
00000750  43 25 3e 30 29 0d 02 76  1c 20 ef 20 31 39 2c 30  |C%>0)..v. . 19,0|
00000760  2c 32 34 2c 32 35 35 2c  30 2c 30 3a d6 20 41 46  |,24,255,0,0:. AF|
00000770  46 0d 02 80 17 20 ef 20  31 39 2c 30 2c 32 34 2c  |F.... . 19,0,24,|
00000780  30 2c 30 2c 30 3a c8 96  0d 02 8a 14 20 f1 20 8a  |0,0,0:...... . .|
00000790  31 2c 32 39 29 91 2d 41  3a 41 3d 91 0d 02 94 17  |1,29).-A:A=.....|
000007a0  20 c8 99 20 22 4f 53 5f  42 79 74 65 22 2c 26 37  | .. "OS_Byte",&7|
000007b0  31 2c 45 0d 02 9e 1d 20  45 3d 33 2d 45 3a c8 99  |1,E.... E=3-E:..|
000007c0  20 22 4f 53 5f 42 79 74  65 22 2c 26 37 30 2c 45  | "OS_Byte",&70,E|
000007d0  0d 02 a8 07 fd 20 30 0d  02 b2 04 0d 02 bc 05 e0  |..... 0.........|
000007e0  0d 02 c6 05 3a 0d 02 d0  0c dd 20 f2 73 68 61 64  |....:..... .shad|
000007f0  65 0d 02 da 04 0d 02 e4  1d e7 20 52 4f 31 3e 47  |e......... RO1>G|
00000800  4f 31 20 8c 20 4e 3d 52  4f 31 20 8b 20 4e 3d 47  |O1 . N=RO1 . N=G|
00000810  4f 31 0d 02 ee 13 e7 20  42 4f 31 3e 4e 20 8c 20  |O1..... BO1>N . |
00000820  4e 3d 42 4f 31 0d 02 f8  21 52 4f 31 3d 52 4f 31  |N=BO1...!RO1=RO1|
00000830  2f 4e 3a 47 4f 31 3d 47  4f 31 2f 4e 3a 42 4f 31  |/N:GO1=GO1/N:BO1|
00000840  3d 42 4f 31 2f 4e 0d 03  02 04 0d 03 0c 1d e7 20  |=BO1/N......... |
00000850  52 4f 32 3e 47 4f 32 20  8c 20 4e 3d 52 4f 32 20  |RO2>GO2 . N=RO2 |
00000860  8b 20 4e 3d 47 4f 32 0d  03 16 13 e7 20 42 4f 32  |. N=GO2..... BO2|
00000870  3e 4e 20 8c 20 4e 3d 42  4f 32 0d 03 20 21 52 4f  |>N . N=BO2.. !RO|
00000880  32 3d 52 4f 32 2f 4e 3a  47 4f 32 3d 47 4f 32 2f  |2=RO2/N:GO2=GO2/|
00000890  4e 3a 42 4f 32 3d 42 4f  32 2f 4e 0d 03 2a 04 0d  |N:BO2=BO2/N..*..|
000008a0  03 34 1f e7 20 52 4f 31  3e 52 4f 32 20 8c 20 52  |.4.. RO1>RO2 . R|
000008b0  4f 3d 52 4f 31 20 8b 20  52 4f 3d 52 4f 32 0d 03  |O=RO1 . RO=RO2..|
000008c0  35 1f e7 20 47 4f 31 3e  47 4f 32 20 8c 20 47 4f  |5.. GO1>GO2 . GO|
000008d0  3d 47 4f 31 20 8b 20 47  4f 3d 47 4f 32 0d 03 36  |=GO1 . GO=GO2..6|
000008e0  1f e7 20 42 4f 31 3e 42  4f 32 20 8c 20 42 4f 3d  |.. BO1>BO2 . BO=|
000008f0  42 4f 31 20 8b 20 42 4f  3d 42 4f 32 0d 03 48 04  |BO1 . BO=BO2..H.|
00000900  0d 03 52 11 4e 3d 31 2f  28 4c 41 4d 2b 52 46 4c  |..R.N=1/(LAM+RFL|
00000910  29 0d 03 5c 17 4c 41 4d  3d 4c 41 4d 2a 4e 3a 52  |)..\.LAM=LAM*N:R|
00000920  46 4c 3d 52 46 4c 2a 4e  0d 03 66 04 0d 03 70 1b  |FL=RFL*N..f...p.|
00000930  4e 3d 28 52 41 2b 52 4c  29 2a 4c 41 4d 2a 52 4f  |N=(RA+RL)*LAM*RO|
00000940  2b 52 46 4c 2a 52 4c 0d  03 7a 27 4d 3d 28 47 41  |+RFL*RL..z'M=(GA|
00000950  2b 47 4c 29 2a 4c 41 4d  2a 47 4f 2b 52 46 4c 2a  |+GL)*LAM*GO+RFL*|
00000960  47 4c 3a e7 20 4d 3e 4e  20 8c 20 4e 3d 4d 0d 03  |GL:. M>N . N=M..|
00000970  84 27 4d 3d 28 42 41 2b  42 4c 29 2a 4c 41 4d 2a  |.'M=(BA+BL)*LAM*|
00000980  42 4f 2b 52 46 4c 2a 42  4c 3a e7 20 4d 3e 4e 20  |BO+RFL*BL:. M>N |
00000990  8c 20 4e 3d 4d 0d 03 8e  0b 4e 3d 32 35 35 2f 4e  |. N=M....N=255/N|
000009a0  0d 03 98 13 52 4c 3d 52  4c 2a 4e 3a 52 41 3d 52  |....RL=RL*N:RA=R|
000009b0  41 2a 4e 0d 03 a2 13 47  4c 3d 47 4c 2a 4e 3a 47  |A*N....GL=GL*N:G|
000009c0  41 3d 47 41 2a 4e 0d 03  ac 13 42 4c 3d 42 4c 2a  |A=GA*N....BL=BL*|
000009d0  4e 3a 42 41 3d 42 41 2a  4e 0d 03 b6 0e 20 20 20  |N:BA=BA*N....   |
000009e0  20 20 20 20 20 20 20 0d  03 c0 0f 4c 56 4c 3d 2d  |       ....LVL=-|
000009f0  31 3a 4e 43 3d 31 0d 03  ca 0f e3 20 49 3d 30 20  |1:NC=1..... I=0 |
00000a00  b8 20 32 35 36 0d 03 d4  1f 20 e7 20 49 3c 3e 30  |. 256.... . I<>0|
00000a10  20 8c 20 4a 3d 28 49 2f  32 35 36 29 5e 54 20 8b  | . J=(I/256)^T .|
00000a20  20 4a 3d 30 0d 03 de 12  20 e7 20 4a 3c 4d 49 20  | J=0.... . J<MI |
00000a30  8c 20 4a 3d 4d 49 0d 03  e8 12 20 e7 20 4a 3e 4d  |. J=MI.... . J>M|
00000a40  41 20 8c 20 4a 3d 4d 41  0d 03 f2 15 20 4a 3d 28  |A . J=MA.... J=(|
00000a50  4a 2d 4d 49 29 2f 28 4d  41 2d 4d 49 29 0d 03 fc  |J-MI)/(MA-MI)...|
00000a60  16 20 4a 3d 28 33 2a 4a  2a 4a 2d 32 2a 4a 2a 4a  |. J=(3*J*J-2*J*J|
00000a70  2a 4a 29 0d 04 06 1e 20  e7 20 4a 3c 30 20 8c 20  |*J).... . J<0 . |
00000a80  4a 3d 30 20 8b 20 e7 20  4a 3e 31 20 8c 20 4a 3d  |J=0 . . J>1 . J=|
00000a90  31 0d 04 10 1f 20 e7 20  49 3d 30 20 8c 20 4b 3d  |1.... . I=0 . K=|
00000aa0  30 20 8b 20 4b 3d 28 49  2f 32 35 36 29 5e 53 50  |0 . K=(I/256)^SP|
00000ab0  0d 04 1a 10 20 e7 20 4b  3e 31 20 8c 20 4b 3d 31  |.... . K>1 . K=1|
00000ac0  0d 04 24 12 20 4c 3d 4b  2a 4c 41 4d 2b 4a 2a 52  |..$. L=K*LAM+J*R|
00000ad0  46 4c 0d 04 2e 12 20 43  53 54 42 4c 3f 49 3d 4c  |FL.... CSTBL?I=L|
00000ae0  2a 32 35 35 0d 04 38 0f  20 43 53 54 42 4c 3f 2d  |*255..8. CSTBL?-|
00000af0  49 3d 30 0d 04 42 0e 20  c8 95 20 4c 3e 3d 4c 56  |I=0..B. .. L>=LV|
00000b00  4c 0d 04 4c 24 20 20 20  52 53 3d 28 52 41 2b 52  |L..L$   RS=(RA+R|
00000b10  4c 2a 4b 29 2a 4c 41 4d  2a 52 4f 31 2b 4a 2a 52  |L*K)*LAM*RO1+J*R|
00000b20  4c 2a 52 46 4c 0d 04 56  24 20 20 20 47 53 3d 28  |L*RFL..V$   GS=(|
00000b30  47 41 2b 47 4c 2a 4b 29  2a 4c 41 4d 2a 47 4f 31  |GA+GL*K)*LAM*GO1|
00000b40  2b 4a 2a 47 4c 2a 52 46  4c 0d 04 60 24 20 20 20  |+J*GL*RFL..`$   |
00000b50  42 53 3d 28 42 41 2b 42  4c 2a 4b 29 2a 4c 41 4d  |BS=(BA+BL*K)*LAM|
00000b60  2a 42 4f 31 2b 4a 2a 42  4c 2a 52 46 4c 0d 04 6a  |*BO1+J*BL*RFL..j|
00000b70  14 20 20 20 fb 20 4e 43  2c 52 53 2c 47 53 2c 42  |.   . NC,RS,GS,B|
00000b80  53 0d 04 74 24 20 20 20  52 53 3d 28 52 41 2b 52  |S..t$   RS=(RA+R|
00000b90  4c 2a 4b 29 2a 4c 41 4d  2a 52 4f 32 2b 4a 2a 52  |L*K)*LAM*RO2+J*R|
00000ba0  4c 2a 52 46 4c 0d 04 7e  24 20 20 20 47 53 3d 28  |L*RFL..~$   GS=(|
00000bb0  47 41 2b 47 4c 2a 4b 29  2a 4c 41 4d 2a 47 4f 32  |GA+GL*K)*LAM*GO2|
00000bc0  2b 4a 2a 47 4c 2a 52 46  4c 0d 04 88 24 20 20 20  |+J*GL*RFL...$   |
00000bd0  42 53 3d 28 42 41 2b 42  4c 2a 4b 29 2a 4c 41 4d  |BS=(BA+BL*K)*LAM|
00000be0  2a 42 4f 32 2b 4a 2a 42  4c 2a 52 46 4c 0d 04 92  |*BO2+J*BL*RFL...|
00000bf0  16 20 20 20 fb 20 4e 43  2b 38 2c 52 53 2c 47 53  |.   . NC+8,RS,GS|
00000c00  2c 42 53 0d 04 9c 1f 20  20 20 4e 43 2b 3d 31 3a  |,BS....   NC+=1:|
00000c10  4c 56 4c 3d 28 4c 41 4d  2b 52 46 4c 29 2a 4e 43  |LVL=(LAM+RFL)*NC|
00000c20  2f 37 0d 04 a6 06 20 ce  0d 04 b0 07 ed 20 49 0d  |/7.... ...... I.|
00000c30  04 ba 04 0d 04 c4 10 43  3d 43 4f 4c 54 42 4c 3a  |.......C=COLTBL:|
00000c40  41 3d 31 0d 04 ce 0e e3  20 49 3d 30 20 b8 20 31  |A=1..... I=0 . 1|
00000c50  35 0d 04 d8 0f 20 4e 3d  41 2d 28 41 3c 3e 37 29  |5.... N=A-(A<>7)|
00000c60  0d 04 e2 11 20 43 3f 28  32 2a 49 29 3d 41 2a 31  |.... C?(2*I)=A*1|
00000c70  37 0d 04 ec 15 20 43 3f  28 32 2a 49 2b 31 29 3d  |7.... C?(2*I+1)=|
00000c80  41 2a 31 36 2b 4e 0d 04  f6 14 20 43 3f 28 36 34  |A*16+N.... C?(64|
00000c90  2b 32 2a 49 29 3d 41 2a  31 37 0d 05 00 18 20 43  |+2*I)=A*17.... C|
00000ca0  3f 28 36 34 2b 32 2a 49  2b 31 29 3d 4e 2a 31 36  |?(64+2*I+1)=N*16|
00000cb0  2b 41 0d 05 0a 08 20 41  3d 4e 0d 05 14 07 ed 20  |+A.... A=N..... |
00000cc0  49 0d 05 1e 26 43 21 33  30 3d 26 37 37 37 37 37  |I...&C!30=&77777|
00000cd0  37 37 37 3a 43 21 28 36  34 2b 33 30 29 3d 26 37  |777:C!(64+30)=&7|
00000ce0  37 37 37 37 37 37 37 0d  05 28 04 0d 05 32 05 e1  |7777777..(...2..|
00000cf0  0d 05 3c 05 3a 0d 05 46  0a dd 20 f2 61 73 73 0d  |..<.:..F.. .ass.|
00000d00  05 50 04 0d 05 5a 13 de  20 43 4f 44 25 20 33 30  |.P...Z.. COD% 30|
00000d10  30 2a 31 30 32 34 0d 05  64 04 0d 05 6e 0a 58 45  |0*1024..d...n.XE|
00000d20  43 52 3d 30 0d 05 78 11  e3 20 49 3d 30 20 b8 20  |CR=0..x.. I=0 . |
00000d30  32 20 88 20 32 0d 05 82  0b 50 25 3d 43 4f 44 25  |2 . 2....P%=COD%|
00000d40  0d 05 8c 13 5b 20 20 20  20 20 20 20 20 4f 50 54  |....[        OPT|
00000d50  20 20 49 0d 05 96 18 2e  46 43 4c 53 20 20 20 20  |  I.....FCLS    |
00000d60  20 4c 44 52 20 52 30 2c  45 43 52 0d 05 a0 2b 20  | LDR R0,ECR...+ |
00000d70  20 20 20 20 20 20 20 20  20 53 55 42 20 31 31 2c  |         SUB 11,|
00000d80  52 30 2c 23 28 52 2b 31  35 29 20 80 20 28 31 30  |R0,#(R+15) . (10|
00000d90  32 33 2d 31 35 29 0d 05  aa 35 20 20 20 20 20 20  |23-15)...5      |
00000da0  20 20 20 20 4d 4f 56 20  52 33 2c 23 30 3a 4d 4f  |    MOV R3,#0:MO|
00000db0  56 20 52 34 2c 23 30 3a  4d 4f 56 20 52 35 2c 23  |V R4,#0:MOV R5,#|
00000dc0  30 3a 4d 4f 56 20 52 36  2c 23 30 0d 05 b4 35 20  |0:MOV R6,#0...5 |
00000dd0  20 20 20 20 20 20 20 20  20 4d 4f 56 20 52 37 2c  |         MOV R7,|
00000de0  23 30 3a 4d 4f 56 20 52  38 2c 23 30 3a 4d 4f 56  |#0:MOV R8,#0:MOV|
00000df0  20 52 39 2c 23 30 3a 4d  4f 56 20 31 30 2c 23 30  | R9,#0:MOV 10,#0|
00000e00  0d 05 be 19 20 20 20 20  20 20 20 20 20 20 4d 4f  |....          MO|
00000e10  56 20 52 31 2c 23 32 2a  52 0d 05 c8 2a 2e 59 43  |V R1,#2*R...*.YC|
00000e20  4c 53 20 20 20 20 20 4d  4f 56 20 52 32 2c 23 32  |LS     MOV R2,#2|
00000e30  2a 28 28 52 2b 31 35 29  80 28 31 30 32 33 2d 31  |*((R+15).(1023-1|
00000e40  35 29 29 0d 05 d2 18 20  20 20 20 20 20 20 20 20  |5))....         |
00000e50  20 4d 4f 56 20 52 30 2c  52 31 31 0d 05 dc 1f 2e  | MOV R0,R11.....|
00000e60  58 43 4c 53 20 20 20 20  20 53 54 4d 49 41 20 52  |XCLS     STMIA R|
00000e70  30 21 2c 7b 52 33 2d 31  30 7d 0d 05 e6 24 20 20  |0!,{R3-10}...$  |
00000e80  20 20 20 20 20 20 20 53  55 42 53 20 52 32 2c 52  |       SUBS R2,R|
00000e90  32 2c 23 33 32 3a 42 4e  45 20 58 43 4c 53 0d 05  |2,#32:BNE XCLS..|
00000ea0  f0 1d 20 20 20 20 20 20  20 20 20 20 41 44 44 20  |..          ADD |
00000eb0  31 31 2c 31 31 2c 23 58  45 43 52 0d 05 fa 23 20  |11,11,#XECR...# |
00000ec0  20 20 20 20 20 20 20 20  53 55 42 53 20 52 31 2c  |        SUBS R1,|
00000ed0  52 31 2c 23 31 3a 42 4e  45 20 59 43 4c 53 0d 06  |R1,#1:BNE YCLS..|
00000ee0  04 0d 20 20 20 20 20 20  20 20 20 0d 06 0e 17 20  |..         .... |
00000ef0  20 20 20 20 20 20 20 20  4d 4f 56 20 50 43 2c 52  |        MOV PC,R|
00000f00  31 34 0d 06 18 04 0d 06  22 38 2e 45 43 52 20 20  |14......"8.ECR  |
00000f10  20 20 20 20 44 43 44 20  31 34 39 3a 44 43 44 20  |    DCD 149:DCD |
00000f20  31 34 39 3a 44 43 44 20  36 3a 44 43 44 20 37 3a  |149:DCD 6:DCD 7:|
00000f30  44 43 44 20 31 34 39 3a  44 43 44 20 2d 31 0d 06  |DCD 149:DCD -1..|
00000f40  2c 15 2e 61 42 41 4c 20  20 20 20 20 44 43 44 20  |,..aBAL     DCD |
00000f50  42 41 4c 0d 06 36 17 2e  61 43 53 54 42 4c 20 20  |BAL..6..aCSTBL  |
00000f60  20 44 43 44 20 43 53 54  42 4c 0d 06 40 18 2e 61  | DCD CSTBL..@..a|
00000f70  43 4f 4c 54 42 4c 20 20  44 43 44 20 43 4f 4c 54  |COLTBL  DCD COLT|
00000f80  42 4c 0d 06 4a 13 2e 52  45 54 31 34 20 20 20 20  |BL..J..RET14    |
00000f90  44 43 44 20 30 0d 06 54  04 0d 06 5e 32 2e 41 52  |DCD 0..T...^2.AR|
00000fa0  4f 4e 44 20 20 20 20 44  43 44 20 26 30 45 34 41  |OND    DCD &0E4A|
00000fb0  32 43 36 38 20 20 20 20  20 20 20 3b 20 4e 49 42  |2C68       ; NIB|
00000fc0  42 4c 45 20 50 41 54 54  45 52 4e 0d 06 68 36 20  |BLE PATTERN..h6 |
00000fd0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000fe0  20 20 20 20 20 20 20 20  20 20 20 20 20 3b 20 e3  |             ; .|
00000ff0  20 84 44 45 52 45 44 20  44 49 54 48 45 52 49 4e  | .DERED DITHERIN|
00001000  47 0d 06 72 04 0d 06 7c  1b 2e 41 46 46 20 20 20  |G..r...|..AFF   |
00001010  20 20 20 53 54 52 20 52  31 34 2c 52 45 54 31 34  |   STR R14,RET14|
00001020  0d 06 86 04 0d 06 90 1b  20 20 20 20 20 20 20 20  |........        |
00001030  20 20 4c 44 52 20 52 31  34 2c 41 52 4f 4e 44 0d  |  LDR R14,AROND.|
00001040  06 9a 04 0d 06 a4 17 20  20 20 20 20 20 20 20 20  |.......         |
00001050  20 4d 4f 56 20 52 38 2c  52 30 0d 06 ae 17 20 20  | MOV R8,R0....  |
00001060  20 20 20 20 20 20 20 20  4d 4f 56 20 52 39 2c 52  |        MOV R9,R|
00001070  31 0d 06 b8 39 20 20 20  20 20 20 20 20 20 20 4d  |1...9          M|
00001080  4f 56 20 31 30 2c 52 32  20 20 20 20 20 20 20 20  |OV 10,R2        |
00001090  20 20 20 3b 20 38 2c 39  2c 31 30 20 3d 20 4c 49  |   ; 8,9,10 = LI|
000010a0  47 48 54 20 53 4f 55 52  43 45 0d 06 c2 1c 20 20  |GHT SOURCE....  |
000010b0  20 20 20 20 20 20 20 20  4c 44 52 20 52 36 2c 61  |        LDR R6,a|
000010c0  43 4f 4c 54 42 4c 0d 06  cc 30 20 20 20 20 20 20  |COLTBL...0      |
000010d0  20 20 20 20 4c 44 52 20  52 31 32 2c 45 43 52 20  |    LDR R12,ECR |
000010e0  20 20 20 20 20 20 20 20  3b 20 52 31 32 20 20 20  |        ; R12   |
000010f0  20 3d 20 45 43 52 0d 06  d6 32 20 20 20 20 20 20  | = ECR...2      |
00001100  20 20 20 20 4c 44 52 20  52 31 31 2c 61 42 41 4c  |    LDR R11,aBAL|
00001110  20 20 20 20 20 20 20 20  3b 20 52 31 31 20 20 20  |        ; R11   |
00001120  20 3d 20 dc 20 50 54 52  0d 06 e0 33 20 20 20 20  | = . PTR...3    |
00001130  20 20 20 20 20 20 4c 44  52 20 52 37 2c 61 43 53  |      LDR R7,aCS|
00001140  54 42 4c 20 20 20 20 20  20 20 3b 20 52 37 20 20  |TBL       ; R7  |
00001150  20 20 20 3d 20 70 43 6f  73 5e 71 0d 06 ea 33 20  |   = pCos^q...3 |
00001160  20 20 20 20 20 20 20 20  20 4d 4f 56 20 52 30 2c  |         MOV R0,|
00001170  23 52 2a 32 20 20 20 20  20 20 20 20 20 3b 20 52  |#R*2         ; R|
00001180  30 20 20 20 20 20 3d 20  59 20 4c 4f 4f 50 0d 06  |0     = Y LOOP..|
00001190  f4 33 2e 59 4c 4f 50 20  20 20 20 20 4c 44 4d 49  |.3.YLOP     LDMI|
000011a0  41 20 52 31 31 21 2c 7b  52 31 2c 52 33 7d 20 20  |A R11!,{R1,R3}  |
000011b0  3b 20 52 31 20 20 20 20  20 3d 20 58 20 4c 4f 4f  |; R1     = X LOO|
000011c0  50 0d 06 fe 1a 20 20 20  20 20 20 20 20 20 20 4d  |P....          M|
000011d0  55 4c 20 52 33 2c 52 39  2c 52 33 0d 07 08 1e 20  |UL R3,R9,R3.... |
000011e0  20 20 20 20 20 20 20 20  20 53 54 4d 46 44 20 52  |         STMFD R|
000011f0  31 33 21 2c 7b 52 31 32  7d 0d 07 12 2c 20 20 20  |13!,{R12}...,   |
00001200  20 20 20 20 20 20 20 42  49 43 20 52 32 2c 52 31  |       BIC R2,R1|
00001210  2c 23 32 35 35 3a 4d 4f  56 20 52 32 2c 52 31 2c  |,#255:MOV R2,R1,|
00001220  4c 53 4c 23 32 0d 07 1c  1f 20 20 20 20 20 20 20  |LSL#2....       |
00001230  20 20 20 4d 4f 56 20 52  31 34 2c 52 31 34 2c 52  |   MOV R14,R14,R|
00001240  4f 52 23 34 0d 07 26 1f  20 20 20 20 20 20 20 20  |OR#4..&.        |
00001250  20 20 4d 4f 56 20 52 35  2c 52 31 34 2c 52 4f 52  |  MOV R5,R14,ROR|
00001260  20 52 32 0d 07 30 22 20  20 20 20 20 20 20 20 20  | R2..0"         |
00001270  20 53 55 42 20 52 31 32  2c 52 31 32 2c 52 31 2c  | SUB R12,R12,R1,|
00001280  4c 53 52 23 39 0d 07 3a  1c 20 20 20 20 20 20 20  |LSR#9..:.       |
00001290  20 20 20 53 55 42 20 52  31 2c 52 31 2c 23 32 35  |   SUB R1,R1,#25|
000012a0  36 0d 07 44 09 2e 58 4c  4f 50 0d 07 4e 1d 20 20  |6..D..XLOP..N.  |
000012b0  20 20 20 20 20 20 20 20  4c 44 4d 49 41 20 52 31  |        LDMIA R1|
000012c0  31 21 2c 7b 52 32 7d 0d  07 58 1e 20 20 20 20 20  |1!,{R2}..X.     |
000012d0  20 20 20 20 20 4d 4f 56  20 52 34 2c 52 32 2c 41  |     MOV R4,R2,A|
000012e0  53 52 23 31 36 0d 07 62  2f 20 20 20 20 20 20 20  |SR#16..b/       |
000012f0  20 20 20 4d 4f 56 20 52  32 2c 52 32 2c 4c 53 4c  |   MOV R2,R2,LSL|
00001300  23 31 36 3a 4d 4f 56 20  52 32 2c 52 32 2c 41 53  |#16:MOV R2,R2,AS|
00001310  52 23 31 36 0d 07 6c 1d  20 20 20 20 20 20 20 20  |R#16..l.        |
00001320  20 20 4d 4c 41 20 52 32  2c 52 38 2c 52 32 2c 52  |  MLA R2,R8,R2,R|
00001330  33 0d 07 76 34 20 20 20  20 20 20 20 20 20 20 4d  |3..v4          M|
00001340  4c 41 20 52 32 2c 31 30  2c 52 34 2c 52 32 20 20  |LA R2,10,R4,R2  |
00001350  20 20 20 3b 20 4f 55 54  45 52 20 50 52 4f 44 2e  |   ; OUTER PROD.|
00001360  20 2d 3e 20 9b 0d 07 80  23 20 20 20 20 20 20 20  | -> ....#       |
00001370  20 20 20 4c 44 52 42 20  52 32 2c 5b 52 37 2c 52  |   LDRB R2,[R7,R|
00001380  32 2c 41 53 52 23 38 5d  0d 07 8a 32 20 20 20 20  |2,ASR#8]...2    |
00001390  20 20 20 20 20 20 41 44  44 20 52 34 2c 52 32 2c  |      ADD R4,R2,|
000013a0  52 35 2c 4c 53 52 23 32  38 3a 4d 4f 56 20 52 35  |R5,LSR#28:MOV R5|
000013b0  2c 52 35 2c 52 4f 52 23  32 38 0d 07 94 23 20 20  |,R5,ROR#28...#  |
000013c0  20 20 20 20 20 20 20 20  4c 44 52 42 20 52 32 2c  |        LDRB R2,|
000013d0  5b 52 36 2c 52 34 2c 4c  53 52 23 33 5d 0d 07 9e  |[R6,R4,LSR#3]...|
000013e0  19 20 20 20 20 20 20 20  20 20 20 84 52 20 52 32  |.          .R R2|
000013f0  2c 52 32 2c 52 31 0d 07  a8 1e 20 20 20 20 20 20  |,R2,R1....      |
00001400  20 20 20 20 53 54 52 42  20 52 32 2c 5b 52 31 32  |    STRB R2,[R12|
00001410  5d 2c 23 31 0d 07 b2 25  20 20 20 20 20 20 20 20  |],#1...%        |
00001420  20 53 55 42 53 20 52 31  2c 52 31 2c 23 32 35 36  | SUBS R1,R1,#256|
00001430  3a 42 50 4c 20 58 4c 4f  50 0d 07 bc 0d 20 20 20  |:BPL XLOP....   |
00001440  20 20 20 20 20 20 0d 07  c6 1e 20 20 20 20 20 20  |      ....      |
00001450  20 20 20 20 4c 44 4d 46  44 20 52 31 33 21 2c 7b  |    LDMFD R13!,{|
00001460  52 31 32 7d 0d 07 d0 1f  20 20 20 20 20 20 20 20  |R12}....        |
00001470  20 20 41 44 44 20 52 31  32 2c 52 31 32 2c 23 58  |  ADD R12,R12,#X|
00001480  45 43 52 0d 07 da 19 20  20 20 20 20 20 20 20 20  |ECR....         |
00001490  20 82 20 52 36 2c 52 36  2c 23 36 34 0d 07 e4 23  | . R6,R6,#64...#|
000014a0  20 20 20 20 20 20 20 20  20 53 55 42 53 20 52 30  |         SUBS R0|
000014b0  2c 52 30 2c 23 31 3a 42  4e 45 20 59 4c 4f 50 0d  |,R0,#1:BNE YLOP.|
000014c0  07 ee 0d 20 20 20 20 20  20 20 20 20 0d 07 f8 25  |...         ...%|
000014d0  20 20 20 20 20 20 20 20  20 20 4c 44 52 20 52 30  |          LDR R0|
000014e0  2c 45 43 52 3a 4c 44 52  20 52 31 2c 45 43 52 2b  |,ECR:LDR R1,ECR+|
000014f0  34 0d 08 02 25 20 20 20  20 20 20 20 20 20 20 53  |4...%          S|
00001500  54 52 20 52 31 2c 45 43  52 3a 53 54 52 20 52 30  |TR R1,ECR:STR R0|
00001510  2c 45 43 52 2b 34 0d 08  0c 19 20 20 20 20 20 20  |,ECR+4....      |
00001520  20 20 20 4c 44 52 20 50  43 2c 52 45 54 31 34 0d  |   LDR PC,RET14.|
00001530  08 16 0d 20 20 20 20 20  20 20 20 20 0d 08 20 15  |...         .. .|
00001540  2e 61 52 45 46 20 20 20  20 20 44 43 44 20 52 45  |.aREF     DCD RE|
00001550  46 0d 08 2a 0d 20 20 20  20 20 20 20 20 20 0d 08  |F..*.         ..|
00001560  34 1a 2e 43 45 52 43 20  20 20 20 20 3b 20 52 30  |4..CERC     ; R0|
00001570  20 3d 20 40 20 53 54 4f  0d 08 3e 1d 20 20 20 20  | = @ STO..>.    |
00001580  20 20 20 20 20 20 3b 20  52 31 20 3d 20 52 61 64  |      ; R1 = Rad|
00001590  69 75 73 2a 32 0d 08 48  20 20 20 20 20 20 20 20  |ius*2..H        |
000015a0  20 20 20 3b 20 52 32 20  3d 20 46 61 63 74 65 75  |   ; R2 = Facteu|
000015b0  72 2a 32 35 36 0d 08 52  1d 20 20 20 20 20 20 20  |r*256..R.       |
000015c0  20 20 20 3b 20 52 33 20  3d 20 53 74 65 70 2a 32  |   ; R3 = Step*2|
000015d0  35 36 0d 08 5c 0e 20 20  20 20 20 20 20 20 20 20  |56..\.          |
000015e0  0d 08 66 1c 20 20 20 20  20 20 20 20 20 20 53 54  |..f.          ST|
000015f0  52 20 52 31 2c 5b 52 30  5d 2c 23 38 0d 08 70 0e  |R R1,[R0],#8..p.|
00001600  20 20 20 20 20 20 20 20  20 20 0d 08 7a 1c 20 20  |          ..z.  |
00001610  20 20 20 20 20 20 20 20  4d 4f 56 20 52 34 2c 23  |        MOV R4,#|
00001620  52 3c 3c 32 35 36 0d 08  84 31 20 20 20 20 20 20  |R<<256...1      |
00001630  20 20 20 20 52 53 42 20  52 34 2c 52 34 2c 23 31  |    RSB R4,R4,#1|
00001640  32 38 20 20 20 20 20 20  3b 20 52 34 20 3d 20 50  |28      ; R4 = P|
00001650  4f 53 49 54 49 4f 4e 0d  08 8e 33 20 20 20 20 20  |OSITION...3     |
00001660  20 20 20 20 20 4c 44 52  20 52 35 2c 61 52 45 46  |     LDR R5,aREF|
00001670  20 20 20 20 20 20 20 20  20 3b 20 52 35 20 3d 20  |         ; R5 = |
00001680  52 45 46 20 4d 49 44 44  4c 45 0d 08 98 0e 20 20  |REF MIDDLE....  |
00001690  20 20 20 20 20 20 20 20  0d 08 a2 1a 2e 43 45 52  |        .....CER|
000016a0  43 4c 20 20 20 20 41 44  44 20 52 34 2c 52 34 2c  |CL    ADD R4,R4,|
000016b0  52 33 0d 08 ac 1d 20 20  20 20 20 20 20 20 20 20  |R3....          |
000016c0  4d 4f 56 20 52 39 2c 52  34 2c 41 53 52 23 38 0d  |MOV R9,R4,ASR#8.|
000016d0  08 b6 22 20 20 20 20 20  20 20 20 20 20 4c 44 52  |.."          LDR|
000016e0  20 52 39 2c 5b 52 35 2c  52 39 2c 4c 53 4c 23 32  | R9,[R5,R9,LSL#2|
000016f0  5d 0d 08 c0 2f 20 20 20  20 20 20 20 20 20 20 4d  |].../          M|
00001700  4f 56 20 52 38 2c 52 39  2c 4c 53 4c 23 31 36 3a  |OV R8,R9,LSL#16:|
00001710  4d 4f 56 20 52 38 2c 52  38 2c 41 53 52 23 31 36  |MOV R8,R8,ASR#16|
00001720  0d 08 ca 1e 20 20 20 20  20 20 20 20 20 20 4d 4f  |....          MO|
00001730  56 20 52 39 2c 52 39 2c  41 53 52 23 31 36 0d 08  |V R9,R9,ASR#16..|
00001740  d4 2b 20 20 20 20 20 20  20 20 20 20 4d 55 4c 20  |.+          MUL |
00001750  52 36 2c 52 38 2c 52 32  3a 4d 4f 56 20 52 36 2c  |R6,R8,R2:MOV R6,|
00001760  52 36 2c 4c 53 52 23 31  36 0d 08 de 2b 20 20 20  |R6,LSR#16...+   |
00001770  20 20 20 20 20 20 20 4d  55 4c 20 52 37 2c 52 39  |       MUL R7,R9|
00001780  2c 52 32 3a 4d 4f 56 20  52 37 2c 52 37 2c 4c 53  |,R2:MOV R7,R7,LS|
00001790  52 23 31 36 0d 08 e8 21  20 20 20 20 20 20 20 20  |R#16...!        |
000017a0  20 20 41 44 44 20 52 36  2c 52 36 2c 52 37 2c 4c  |  ADD R6,R6,R7,L|
000017b0  53 4c 23 31 36 0d 08 f2  1c 20 20 20 20 20 20 20  |SL#16....       |
000017c0  20 20 20 53 54 52 20 52  36 2c 5b 52 30 5d 2c 23  |   STR R6,[R0],#|
000017d0  34 0d 08 fc 24 20 20 20  20 20 20 20 20 20 53 55  |4...$         SU|
000017e0  42 53 20 52 31 2c 52 31  2c 23 31 3a 42 4e 45 20  |BS R1,R1,#1:BNE |
000017f0  43 45 52 43 4c 0d 09 06  0e 20 20 20 20 20 20 20  |CERCL....       |
00001800  20 20 20 0d 09 10 17 20  20 20 20 20 20 20 20 20  |   ....         |
00001810  4d 4f 56 20 50 43 2c 52  31 34 0d 09 1a 05 5d 0d  |MOV PC,R14....].|
00001820  09 24 25 20 c8 99 20 22  4f 53 5f 52 65 61 64 56  |.$% .. "OS_ReadV|
00001830  64 75 56 61 72 69 61 62  6c 65 73 22 2c 45 43 52  |duVariables",ECR|
00001840  2c 45 43 52 0d 09 2e 21  20 20 21 45 43 52 2b 3d  |,ECR...!  !ECR+=|
00001850  45 43 52 21 38 2a 28 2e  35 2d 52 29 2b 45 43 52  |ECR!8*(.5-R)+ECR|
00001860  21 31 32 2f 32 0d 09 38  22 20 20 58 45 43 52 3d  |!12/2..8"  XECR=|
00001870  45 43 52 21 38 3a 45 43  52 21 34 3d 21 45 43 52  |ECR!8:ECR!4=!ECR|
00001880  2b 45 43 52 21 31 32 0d  09 42 18 20 50 25 3d 28  |+ECR!12..B. P%=(|
00001890  50 25 2b 31 32 37 29 80  20 28 2d 31 32 38 29 0d  |P%+127). (-128).|
000018a0  09 4c 16 20 43 4f 4c 54  42 4c 3d 50 25 3a 50 25  |.L. COLTBL=P%:P%|
000018b0  2b 3d 31 32 38 0d 09 56  1f 20 43 53 54 42 4c 3d  |+=128..V. CSTBL=|
000018c0  50 25 2b 32 35 36 3a 50  25 2b 3d 32 35 36 2b 32  |P%+256:P%+=256+2|
000018d0  35 37 2b 33 0d 09 60 15  20 52 45 46 3d 50 25 3a  |57+3..`. REF=P%:|
000018e0  50 25 2b 3d 34 2a 52 2a  32 0d 09 6a 0b 20 42 41  |P%+=4*R*2..j. BA|
000018f0  4c 3d 50 25 0d 09 74 07  ed 20 49 0d 09 7e 0e 20  |L=P%..t.. I..~. |
00001900  20 20 20 20 20 20 20 20  20 0d 09 88 20 e7 20 44  |         ... . D|
00001910  49 54 48 52 3d a3 20 8c  20 21 41 52 4f 4e 44 3d  |ITHR=. . !AROND=|
00001920  26 38 38 38 38 38 38 38  38 0d 09 92 0e 20 20 20  |&88888888....   |
00001930  20 20 20 20 20 20 20 0d  09 9c 11 52 32 3d 52 2a  |       ....R2=R*|
00001940  52 3a 52 46 3d 52 45 46  0d 09 a6 14 e3 20 49 3d  |R:RF=REF..... I=|
00001950  2d 52 2b 2e 35 20 b8 20  52 2d 2e 35 0d 09 b0 11  |-R+.5 . R-.5....|
00001960  20 52 46 21 30 3d 32 35  35 2a 49 2f 52 0d 09 ba  | RF!0=255*I/R...|
00001970  19 20 52 46 21 34 3d 32  35 35 2a b6 28 31 2d 49  |. RF!4=255*.(1-I|
00001980  2a 49 2f 52 32 29 0d 09  c4 18 20 52 46 3f 32 3d  |*I/R2).... RF?2=|
00001990  52 46 3f 34 3a 52 46 3f  33 3d 52 46 3f 35 0d 09  |RF?4:RF?3=RF?5..|
000019a0  ce 0a 20 52 46 2b 3d 34  0d 09 d8 07 ed 20 49 0d  |.. RF+=4..... I.|
000019b0  09 e2 04 0d 09 ec 0a f2  73 68 61 64 65 0d 09 f6  |........shade...|
000019c0  0e 20 20 20 20 20 20 20  20 20 20 0d 0a 00 0a 41  |.          ....A|
000019d0  25 3d 42 41 4c 0d 0a 0a  08 4f 50 3d 30 0d 0a 14  |%=BAL....OP=0...|
000019e0  15 c8 99 20 22 48 6f 75  72 67 6c 61 73 73 5f 4f  |... "Hourglass_O|
000019f0  6e 22 0d 0a 1e 14 e3 20  59 3d 2d 52 2b 2e 35 20  |n"..... Y=-R+.5 |
00001a00  b8 20 52 2d 2e 35 0d 0a  28 2a 20 20 c8 99 20 22  |. R-.5..(*  .. "|
00001a10  48 6f 75 72 67 6c 61 73  73 5f 50 65 72 63 65 6e  |Hourglass_Percen|
00001a20  74 61 67 65 22 2c 28 59  2f 52 2b 31 29 2a 35 30  |tage",(Y/R+1)*50|
00001a30  0d 0a 32 0c 20 20 f2 6d  6f 64 65 6c 0d 0a 3c 0f  |..2.  .model..<.|
00001a40  20 20 4c 3d a8 28 94 28  4c 29 29 0d 0a 46 11 20  |  L=.(.(L))..F. |
00001a50  20 e7 20 4c 3d 30 20 8c  20 4c 3d 31 0d 0a 50 11  | . L=0 . L=1..P.|
00001a60  20 20 e7 20 4c 3e 52 20  8c 20 4c 3d 52 0d 0a 5a  |  . L>R . L=R..Z|
00001a70  14 20 20 4e 3d 32 35 36  2f b6 28 31 2b 56 2a 56  |.  N=256/.(1+V*V|
00001a80  29 0d 0a 64 2b 20 20 21  41 25 3d 32 2a 4c 2a 32  |)..d+  !A%=2*L*2|
00001a90  35 36 3a 41 25 21 34 3d  2d 56 2a 4e 3a e7 20 50  |56:A%!4=-V*N:. P|
00001aa0  20 8c 20 21 41 25 2b 3d  38 2a 31 37 0d 0a 6e 0b  | . !A%+=8*17..n.|
00001ab0  20 20 41 25 2b 3d 38 0d  0a 78 0f 20 20 4e 4b 3d  |  A%+=8..x.  NK=|
00001ac0  2d 4c 2b 4c 2f 34 0d 0a  82 1c 20 20 e3 20 4b 3d  |-L+L/4....  . K=|
00001ad0  2d 4c 2b 2e 35 20 b8 20  4c 2d 2e 35 3a 58 3d 4b  |-L+.5 . L-.5:X=K|
00001ae0  2f 4c 0d 0a 8c 11 20 20  20 5a 3d b6 28 31 2d 58  |/L....   Z=.(1-X|
00001af0  2a 58 29 0d 0a 96 35 20  20 20 e7 20 ac 28 50 29  |*X)...5   . .(P)|
00001b00  20 80 20 4b 3e 4e 4b 20  8c 20 4e 4b 2b 3d 4c 2f  | . K>NK . NK+=L/|
00001b10  34 3a c8 94 20 58 2c 5a  3a 58 3d 58 2a b4 28 5a  |4:.. X,Z:X=X*.(Z|
00001b20  29 3a 5a 3d 94 28 5a 29  0d 0a a0 17 20 20 20 21  |):Z=.(Z)....   !|
00001b30  41 25 3d 58 2a 4e 3a 41  25 21 32 3d 5a 2a 4e 0d  |A%=X*N:A%!2=Z*N.|
00001b40  0a aa 0c 20 20 20 41 25  2b 3d 34 0d 0a b4 09 20  |...   A%+=4.... |
00001b50  20 ed 20 4b 0d 0a be 07  ed 20 59 0d 0a c8 16 c8  | . K..... Y.....|
00001b60  99 20 22 48 6f 75 72 67  6c 61 73 73 5f 4f 66 66  |. "Hourglass_Off|
00001b70  22 0d 0a d2 04 0d 0a dc  05 e1 0d 0a e6 05 3a 0d  |".............:.|
00001b80  0a f0 0c dd 20 f2 6d 6f  64 65 6c 0d 0a fa 04 0d  |.... .model.....|
00001b90  0b 04 21 20 f4 20 2a 2a  2a 2a 20 42 45 47 49 4e  |..! . **** BEGIN|
00001ba0  20 4d 4f 44 49 46 49 41  42 4c 45 20 2a 2a 2a 2a  | MODIFIABLE ****|
00001bb0  0d 0b 0e 05 20 0d 0b 18  2a 20 20 50 3d 28 94 28  |.... ...*  P=(.(|
00001bc0  94 28 59 2f 52 29 2d 33  2f 34 29 3c 31 2f 31 30  |.(Y/R)-3/4)<1/10|
00001bd0  29 2b 28 94 28 59 2f 52  29 3c 31 2f 31 30 29 0d  |)+(.(Y/R)<1/10).|
00001be0  0b 22 1e 20 20 4c 3d 52  2a 28 31 2d 28 59 2f 52  |.".  L=R*(1-(Y/R|
00001bf0  29 5e 32 2f 33 29 2d 50  2a 52 2f 31 36 0d 0b 2c  |)^2/3)-P*R/16..,|
00001c00  0c 20 20 56 3d 4c 2d 4f  50 0d 0b 36 0a 20 20 4f  |.  V=L-OP..6.  O|
00001c10  50 3d 4c 0d 0b 40 06 20  20 0d 0b 4a 1f 20 f4 20  |P=L..@.  ..J. . |
00001c20  2a 2a 2a 2a 20 45 4e 44  20 4d 4f 44 49 46 49 41  |**** END MODIFIA|
00001c30  42 4c 45 20 2a 2a 2a 2a  0d 0b 54 05 20 0d 0b 5e  |BLE ****..T. ..^|
00001c40  05 e1 0d 0b 68 05 3a 0d  0b 72 2d f4 20 54 4f 20  |....h.:..r-. TO |
00001c50  43 48 41 4e 47 45 20 54  48 45 20 4f 42 4a 45 43  |CHANGE THE OBJEC|
00001c60  54 20 4d 4f 44 49 46 59  20 50 52 4f 43 6d 6f 64  |T MODIFY PROCmod|
00001c70  65 6c 20 3a 0d 0b 7c 05  f4 0d 0b 86 26 f4 20 49  |el :..|.....&. I|
00001c80  4e 20 54 48 49 53 20 42  4c 4f 43 4b 20 59 4f 55  |N THIS BLOCK YOU|
00001c90  20 4d 55 53 54 20 50 52  4f 56 49 44 45 20 3a 0d  | MUST PROVIDE :.|
00001ca0  0b 90 23 f4 20 20 2a 20  4c 20 3a 20 54 48 45 20  |..#.  * L : THE |
00001cb0  52 41 44 49 55 53 20 56  41 4c 55 45 20 46 4f 52  |RADIUS VALUE FOR|
00001cc0  20 59 0d 0b 9a 24 f4 20  20 20 20 20 20 20 20 20  | Y...$.         |
00001cd0  20 28 20 4d 55 53 54 20  42 45 20 30 20 3c 20 2e  | ( MUST BE 0 < .|
00001ce0  20 3c 20 52 20 29 0d 0b  a4 20 f4 20 20 2a 20 56  | < R )... .  * V|
00001cf0  20 3a 20 49 54 27 53 20  44 45 52 49 56 41 54 49  | : IT'S DERIVATI|
00001d00  56 45 20 2f 20 59 0d 0b  ae 36 f4 20 20 20 20 20  |VE / Y...6.     |
00001d10  20 20 20 20 20 28 20 53  49 47 4e 20 41 4e 44 20  |     ( SIGN AND |
00001d20  41 4d 50 4c 49 54 55 44  45 20 4d 55 53 54 20 42  |AMPLITUDE MUST B|
00001d30  45 20 43 4f 52 52 45 43  54 21 20 29 0d 0b b8 20  |E CORRECT! )... |
00001d40  f4 20 57 49 54 48 20 59  20 42 45 45 49 4e 47 20  |. WITH Y BEEING |
00001d50  3a 20 2d 52 20 3c 20 59  20 3c 20 52 0d 0b c2 25  |: -R < Y < R...%|
00001d60  f4 20 28 20 52 20 49 53  20 54 48 45 20 53 43 41  |. ( R IS THE SCA|
00001d70  4c 45 20 50 41 52 41 4d  45 54 45 52 20 2e 2e 2e  |LE PARAMETER ...|
00001d80  29 0d 0b cc 05 f4 0d 0b  d6 2c f4 20 57 41 52 4e  |)........,. WARN|
00001d90  49 4e 47 3a 20 55 53 45  20 4c 4f 43 41 4c 20 56  |ING: USE LOCAL V|
00001da0  41 52 20 49 46 20 4e 4f  54 20 53 55 52 45 20 2e  |AR IF NOT SURE .|
00001db0  2e 2e 0d 0b e0 05 f4 0d  ff                       |.........|
00001db9