home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 5 / DATAFILE_PDCD5.iso / utilities / t / tripatron / !TripATron / Scroll3 < prev   
Encoding:
Text File  |  1992-01-03  |  7.9 KB  |  58 lines

  1.  
  2. 
  3.  
  4. ô>SCROLL3
  5. ë13
  6. 
  7. ( max=100
  8. 2+Þexit(max),exitbottom(max),exittop(max)
  9. <!Þexitright(max),exitleft(max)
  10. AÞexit2(max),exit3(max)
  11. PT%=&30000:code=&70000
  12. ZWSC=0:oldX=1:Y=2:XST=3:temp=4:SCEND=5:R=10:I=6:A=7:B=8:X=9:pixcnt=11:count=12:SC2=12
  13. d table=12
  14. nãP=0 ¸ 2 ⇦2:P%=code:[OPT P
  15. x.initialise
  16. ŵMOV R2,#T%
  17. ……MOV R0,#0:.L:MOV R3,R0,ASR#16:MUL R1,R3,R3:TST R1,#&E0000000:MOV R1,R1,ASR#13:MOV R1,R1,LSL#16:MOVNE R1,#&C0000000:STR R1,[R2,R0,LSR#14]
  18. „ADDS R0,R0,#&10000
  19.  BNE L:MOVS PC,R14
  20. ª.mandelbrot
  21. \do pass1
  22. ¾MOV table,#T%
  23. È .rowloop
  24. ÒMOV X,oldX
  25. ÜMOV pixcnt,#80:.dopixel
  26. æMOV R,X:MOV I,Y
  27. ð]:ãI%=1 ¸ max:òiter(I%):í
  28. úãI%=1 ¸ max:òexit(I%):í
  29. 
  30. [OPT P
  31.  .donerow
  32. $ADD Y,Y,XST,ASL#2:ADD SC,SC,#960
  33. "CMP SC,SCEND:BMI rowloop
  34. ,MOVS PC,R14
  35. 6
  36. .pass2
  37. @$ADD Y,Y,XST,ASL#1:ADD SC,SC,#640
  38. JMOV table,#T%
  39. T
  40. .rowloop2
  41. ^MOV X,oldX
  42. hMOV pixcnt,#160:.dopixel2
  43. r%LDRB I,[SC]:TST I,#128:BNE skipit
  44. |1LDRB R,[SC,#-640]:€ R,R,#127:CMP R,I:BNE doit
  45. ŷ0LDRB R,[SC,#640]:€ R,R,#127:CMP R,I:BNE doit
  46. ‘/LDRB R,[SC,#-2]:€ R,R,#127:CMP R,I:BNE doit
  47. Œ0LDRB R,[SC,#2]:€ R,R,#127:CMP R,I:BEQ skipit
  48. ¤    .doit
  49. ®MOV R,X:MOV I,Y
  50. ¸]:ãI%=1 ¸ max:òiter2(I%):í
  51. ÂãI%=1 ¸ max:òexit2(I%):í
  52. [OPT P
  53. Ö .skipit
  54. àEADD SC,SC,#2:ADD X,X,XST,ASL#1:SUBS pixcnt,pixcnt,#1:BNE dopixel2
  55. .donerow2
  56. ô$ADD Y,Y,XST,ASL#1:ADD SC,SC,#320
  57. þCMP SC,SCEND:BMI rowloop2
  58. MOVS PC,R14
  59. 
  60. .pass3
  61. ADD Y,Y,XST:ADD SC,SC,#320
  62. &MOV table,#T%
  63. 0
  64. .rowloop3
  65. :MOV X,oldX
  66. DMOV pixcnt,#320:.dopixel3
  67. N&LDRB I,[SC]:TST I,#128:BNE skipit2
  68. X2LDRB R,[SC,#-320]:€ R,R,#127:CMP R,I:BNE doit2
  69. b1LDRB R,[SC,#320]:€ R,R,#127:CMP R,I:BNE doit2
  70. l0LDRB R,[SC,#-1]:€ R,R,#127:CMP R,I:BNE doit2
  71. v1LDRB R,[SC,#1]:€ R,R,#127:CMP R,I:BEQ skipit2
  72. €
  73. .doit2
  74. ⇩MOV R,X:MOV I,Y
  75. “]:ãI%=1 ¸ max:òiter3(I%):í
  76. fiãI%=1 ¸ max:òexit3(I%):í
  77. [OPT P
  78. ² .skipit2
  79. ¼?ADD SC,SC,#1:ADD X,X,XST:SUBS pixcnt,pixcnt,#1:BNE dopixel3
  80. .donerow3
  81. ÐADD Y,Y,XST
  82. ÚCMP SC,SCEND:BMI rowloop3
  83. äMOVS PC,R14
  84. î .clearup
  85. ø4MOV 10,#127:☓R 10,10,10,ASL#8:☓R 10,10,10,ASL#16
  86. .clearloop
  87. 8LDMIA (SC),{1-4}:€ 1,1,10:€ 2,2,10:€ 3,3,10:€ 4,4,10
  88. 0STMIA (SC)!,{1-4}:CMP SC,SCEND:BMI clearloop
  89.  MOV PC,R14
  90. *.temp2 EQUD 0
  91. 4
  92. .scrollup
  93. >STR oldX,temp2:MOV 1,SCEND
  94. HADD SC2,SC,#320:.L9
  95. R*LDMIA (SC2)!,{4-11}:STMIA (SC)!,{4-11}
  96. \*LDMIA (SC2)!,{4-11}:STMIA (SC)!,{4-11}
  97. f*LDMIA (SC2)!,{4-11}:STMIA (SC)!,{4-11}
  98. p*LDMIA (SC2)!,{4-11}:STMIA (SC)!,{4-11}
  99. z*LDMIA (SC2)!,{4-11}:STMIA (SC)!,{4-11}
  100. ☓*LDMIA (SC2)!,{4-11}:STMIA (SC)!,{4-11}
  101. ‰*LDMIA (SC2)!,{4-11}:STMIA (SC)!,{4-11}
  102. —*LDMIA (SC2)!,{4-11}:STMIA (SC)!,{4-11}
  103. ¢*LDMIA (SC2)!,{4-11}:STMIA (SC)!,{4-11}
  104. ¬*LDMIA (SC2)!,{4-11}:STMIA (SC)!,{4-11}
  105. ¶CMP SC2,1:BMI L9
  106. ÀLDR X,temp2
  107. ÊMOV table,#T%
  108. Ô%ADD Y,Y,XST,ASL#8:MOV pixcnt,#320
  109. Þ.dopixelbottom
  110. èQMOV R,X:MOV I,Y:]:ãI%=1 ¸ max:òiterbottom(I%):í:ãI%=1 ¸ max:òexitbottom(I%):í
  111. ò
  112. [OPT P
  113. ü.donerowbottom MOVS PC,R14
  114.     .temp3 EQUD 0
  115.     .scrolldown
  116.     STR oldX,temp3:MOV 1,SC
  117.     $ADD SC,SC,#81920
  118.     .SUB SC2,SC,#320:.L10
  119.     8*LDMDB (SC2)!,{4-11}:STMDB (SC)!,{4-11}
  120.     B*LDMDB (SC2)!,{4-11}:STMDB (SC)!,{4-11}
  121.     L*LDMDB (SC2)!,{4-11}:STMDB (SC)!,{4-11}
  122.     V*LDMDB (SC2)!,{4-11}:STMDB (SC)!,{4-11}
  123.     `*LDMDB (SC2)!,{4-11}:STMDB (SC)!,{4-11}
  124.     j*LDMDB (SC2)!,{4-11}:STMDB (SC)!,{4-11}
  125.     t*LDMDB (SC2)!,{4-11}:STMDB (SC)!,{4-11}
  126.     ~*LDMDB (SC2)!,{4-11}:STMDB (SC)!,{4-11}
  127.     ⇦*LDMDB (SC2)!,{4-11}:STMDB (SC)!,{4-11}
  128.     ‹*LDMDB (SC2)!,{4-11}:STMDB (SC)!,{4-11}
  129.     †CMP SC2,1:BNE L10
  130.     ¦SUB SC,SC,#320
  131.     °LDR X,temp3
  132.     ºMOV table,#T%
  133.     ÄSUB Y,Y,XST:MOV pixcnt,#320
  134.     Î.dopixeltop
  135.     ØKMOV R,X:MOV I,Y:]:ãI%=1 ¸ max:òitertop(I%):í:ãI%=1 ¸ max:òexittop(I%):í
  136.     â
  137. [OPT P
  138.     ì.donerowtop MOVS PC,R14
  139.     ö.temp4 EQUD 0
  140. .scrollleft
  141.  
  142. STR oldX,temp4:MOV 1,SCEND
  143. .L11
  144. LDMIA (SC),{4-12}
  145. (]:ãI%=4 ¸ 11
  146. 2
  147. [OPT P
  148. <*MOV I%,I%,ASR#8:☓R I%,I%,(I%+1),ASL#24
  149. F]:íI%:[OPT P
  150. PSTMIA (SC)!,{4-11}
  151. ZCMP SC,1:BNE L11
  152. dQSUBS SC,SC,#81920:ADD SC,SC,#320:SUB SC,SC,#1:\set SC to top right hand pixel
  153. nLDR X,temp4
  154. xMADD X,X,XST,ASL#8:ADD X,X,XST,ASL#6:\set X to thing for right hand column
  155. ŵMOV table,#T%
  156. …MOV pixcnt,#256
  157. „.dopixelright
  158.  OMOV R,X:MOV I,Y:]:ãI%=1 ¸ max:òiterright(I%):í:ãI%=1 ¸ max:òexitright(I%):í
  159. ª
  160. [OPT P
  161. ´.donecolright MOVS PC,R14
  162. ¾.temp5 EQUD 0
  163. È.scrollright
  164. ÒSTR oldX,temp5:ADD 1,SC,#32
  165. ÜMOV SC,SCEND
  166. æ.L12
  167. ðLDMDB (SC),{4-12}
  168. ú]:ãI%=12 ¸ 5 ⇦ -1
  169. 
  170. [OPT P
  171. *MOV I%,I%,ASL#8:☓R I%,I%,(I%-1),ASR#24
  172. ]:íI%:[OPT P
  173. "STMDB (SC)!,{5-12}
  174. ,CMP SC,1:BNE L12
  175. 6;\special case, as can't allow a read to 'screenstart'-4
  176. @LDMDB (SC),{5-12}
  177. J]:ãI%=12 ¸ 5 ⇦ -1
  178. T
  179. [OPT P
  180. ^*MOV I%,I%,ASL#8:☓R I%,I%,(I%-1),ASR#24
  181. h]:íI%:[OPT P
  182. rSTMDB (SC)!,{5-12}
  183. |LDR X,temp5
  184. ŷMOV table,#T%
  185. ‘MOV pixcnt,#256
  186. Œ.dopixelleft
  187. ¤MMOV R,X:MOV I,Y:]:ãI%=1 ¸ max:òiterleft(I%):í:ãI%=1 ¸ max:òexitleft(I%):í
  188. ®
  189. [OPT P
  190. ¸.donecolleft MOVS PC,R14
  191. ÂMOV PC,R14
  192. Ì]:í
  193. ÖÖinitialise
  194. àA%=¤screenstart
  195. êX=-2:Y=-1.5:S=3/256
  196. ô3B%=(X*8192)<<16:C%=(Y*8192)<<16:D%=(S*8192)<<16
  197. þF%=A%+81920
  198. Ñ=0
  199. Ñ=0:Ömandelbrot:T%=’
  200. &AÖpass2:K%=’:Öpass2:U%=’:Öpass3:L%=’:Öpass3:V%=’:Öclearup:W%=’
  201. 0A=¥
  202. :çA=56 Öscrollup:C%+=D%
  203. DçA=50 Öscrolldown:C%-=D%
  204. NçA=52 Öscrollleft:B%+=D%
  205. XçA=54 Öscrollright:B%-=D%
  206. b'çA=49 S=S/1.3:D%=(S*8192)<<16:å™T\L
  207. l'çA=57 S=S*1.3:D%=(S*8192)<<16:å™T\L
  208. v    å™TpL
  209. ۈ
  210. øÝòiterbottom(I%)
  211.  
  212. 
  213. [OPT P
  214.  
  215. 1LDR A,[table,R,LSR#14]:LDR B,[table,I,LSR#14]
  216.  
  217. ADDS temp,A,B
  218.  
  219.  )BCS exitbottom(I%):BMI exitbottom(I%)
  220.  
  221. *;ADD I,R,I:LDR I,[table,I,LSR#14]:SUB I,I,temp:ADD I,I,Y
  222.  
  223. 4SUB R,A,B:ADD R,R,X
  224.  
  225. >]:á
  226.  
  227. HÝòexitbottom(I%)
  228.  
  229. R
  230. [OPT P
  231.  
  232. \Ŵ.exitbottom(I%):MOV A,#(-I%*(I%<>max)):STRB A,[SC],#1:ADD X,X,XST:SUBS pixcnt,pixcnt,#1:BNE dopixelbottom:B donerowbottom:]:á
  233.  
  234. fÝòitertop(I%)
  235.  
  236. p
  237. [OPT P
  238.  
  239. z1LDR A,[table,R,LSR#14]:LDR B,[table,I,LSR#14]
  240.  
  241. ☓ADDS temp,A,B
  242.  
  243. ‰#BCS exittop(I%):BMI exittop(I%)
  244.  
  245. —;ADD I,R,I:LDR I,[table,I,LSR#14]:SUB I,I,temp:ADD I,I,Y
  246.  
  247. ¢SUB R,A,B:ADD R,R,X
  248.  
  249. ¬]:á
  250.  
  251. ¶Ýòexittop(I%)
  252.  
  253. À
  254. [OPT P
  255.  
  256. Êx.exittop(I%):MOV A,#(-I%*(I%<>max)):STRB A,[SC],#1:ADD X,X,XST:SUBS pixcnt,pixcnt,#1:BNE dopixeltop:B donerowtop:]:á
  257.  
  258. ÔÝòiterright(I%)
  259.  
  260. Þ
  261. [OPT P
  262.  
  263. è1LDR A,[table,R,LSR#14]:LDR B,[table,I,LSR#14]
  264.  
  265. òADDS temp,A,B
  266.  
  267. ü'BCS exitright(I%):BMI exitright(I%)
  268. ;ADD I,R,I:LDR I,[table,I,LSR#14]:SUB I,I,temp:ADD I,I,Y
  269. SUB R,A,B:ADD R,R,X
  270. ]:á
  271. $Ýòexitright(I%)
  272. .
  273. [OPT P
  274. 8€.exitright(I%):MOV A,#(-I%*(I%<>max)):STRB A,[SC],#320:ADD Y,Y,XST:SUBS pixcnt,pixcnt,#1:BNE dopixelright:B donecolright:]:á
  275. BÝòiterleft(I%)
  276. L
  277. [OPT P
  278. V1LDR A,[table,R,LSR#14]:LDR B,[table,I,LSR#14]
  279. `ADDS temp,A,B
  280. j%BCS exitleft(I%):BMI exitleft(I%)
  281. t;ADD I,R,I:LDR I,[table,I,LSR#14]:SUB I,I,temp:ADD I,I,Y
  282. ~SUB R,A,B:ADD R,R,X
  283. ⇦]:á
  284. ‹Ýòexitleft(I%)
  285. †
  286. [OPT P
  287. ¦}.exitleft(I%):MOV A,#(-I%*(I%<>max)):STRB A,[SC],#320:ADD Y,Y,XST:SUBS pixcnt,pixcnt,#1:BNE dopixelleft:B donecolleft:]:á
  288. °
  289. ºÝòiter2(I%)
  290. [OPT P
  291. Î1LDR A,[table,R,LSR#14]:LDR B,[table,I,LSR#14]
  292. ØADDS temp,A,B
  293. âBCS exit2(I%):BMI exit2(I%)
  294. ì;ADD I,R,I:LDR I,[table,I,LSR#14]:SUB I,I,temp:ADD I,I,Y
  295. öSUB R,A,B:ADD R,R,X
  296. ]:á
  297. 
  298. Ýòexit2(I%)
  299. 
  300. [OPT P
  301. ¹.exit2(I%):MOV A,#(-I%*(I%<>max))€127:STRB A,[SC,#320]:STRB A,[SC,#321]:STRB A,[SC,#1]:☓R A,A,#128:STRB A,[SC],#2:ADD X,X,XST,ASL#1:SUBS pixcnt,pixcnt,#1:BNE dopixel2:B donerow2:]:á
  302. (Ýòiter3(I%)
  303. 2
  304. [OPT P
  305. <1LDR A,[table,R,LSR#14]:LDR B,[table,I,LSR#14]
  306. FADDS temp,A,B
  307. PBCS exit3(I%):BMI exit3(I%)
  308. Z;ADD I,R,I:LDR I,[table,I,LSR#14]:SUB I,I,temp:ADD I,I,Y
  309. dSUB R,A,B:ADD R,R,X
  310. n]:á
  311. xÝòexit3(I%)
  312. [OPT P
  313. …|.exit3(I%):MOV A,#((-I%*(I%<>max))€127)+128:STRB A,[SC],#1:ADD X,X,XST:SUBS pixcnt,pixcnt,#1:BNE dopixel3:B donerow3:]:á
  314. ¦Ýòiter(I%)
  315. [OPT P
  316. º1LDR A,[table,R,LSR#14]:LDR B,[table,I,LSR#14]
  317. ÄADDS temp,A,B
  318. ÎBCS exit(I%):BMI exit(I%)
  319. Ø;ADD I,R,I:LDR I,[table,I,LSR#14]:SUB I,I,temp:ADD I,I,Y
  320. âSUB R,A,B:ADD R,R,X
  321. ì]:á
  322. öÝòexit(I%)
  323. 
  324. [OPT P
  325. 
  326. Ç.exit(I%):MOV A,#(-I%*(I%<>max))€127:☓R A,A,A,LSL#8:☓R A,A,A,LSL#16:STR A,[SC,#320]:STR A,[SC,#640]:STR A,[SC,#960]:STR A,[SC],#4:ADD X,X,XST,ASL#2:SUBS pixcnt,pixcnt,#1:BNE dopixel:B donerow:]:á
  327. ô:
  328. þݤscreenstart
  329. Þ screen% 8
  330. !screen%=148
  331. screen%!4=-1
  332. &+È−"OS_ReadVduVariables",screen%,screen%
  333. 0
  334. =!screen%
  335. ÿ