home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / sourcecode / routines / modplayer3.amos / modplayer3.amosSourceCode < prev    next >
AMOS Source Code  |  1993-03-15  |  23KB  |  934 lines

  1. '
  2. ' Mod player version 3.0 
  3. ' This is pretty good dont ya think??? 
  4. ' storm 1992-93  
  5. ' This code is pretty old now but its still usefull  
  6. ' OLD means I do things MUCH diffrently now. 
  7. '
  8. 'Command Line$="df1:mod.behind"
  9. '
  10. A#=0.0
  11. C$=Command Line$
  12. If C$<>"" Then Goto CHARGE
  13. Dim DLIST$(60),REAL$(30)
  14. Global DF$,DLIST$(),JEN,REAL$(),TEMP$,FSIZE,DKNAME$,T1$,T2$,Q1$,Q2$,RESPONSE
  15. Shared DF$,DLIST$(),JEN,REAL$(),TEMP$,FSIZE,DKNAME$,T1$,T2$,Q1$,Q2$,RESPONSE
  16. Global OPTS,SAMPLIST,SCREN
  17. OPTS=1 : SAMPLIST=1 : SCREN=260
  18. '
  19. '
  20. ' CLI Stuff use carefully! 
  21. '
  22. Goto BEGIN
  23. CHARGE:
  24. Amos Lock 
  25. Amos To Back 
  26. Open Port 1,"RAW:0/0/640/100/Mod Player V3.00 By Ejber Ozkan."
  27. Print #1,Chr$(27)+"[33mPlease Wait Loading..."+Chr$(27)+"[32m"
  28. If Exist(C$)=False
  29.    Bell 80
  30.    Print #1,"Sorry! File "+C$+" NOT FOUND!"
  31.    Wait 60
  32.    Print #1,"Bye Bye!!"
  33.    Amos Unlock 
  34.    End 
  35. End If 
  36.          Track Load C$,5
  37.          Print #1,Chr$(27)+"[33m Now Playing:"+Chr$(27)+"[32m"+C$+Chr$(27)+"[31m"
  38.          Track Play 5
  39.          Track Loop On 
  40. Print #1,"Press Esc to QUIT and stop music!"
  41. Do 
  42.    If Key State(69)=True
  43.       Track Stop 
  44.       Print #1,"Bye Bye!!!"
  45.        Erase 5
  46.       Amos Unlock 
  47.        End 
  48.    End If 
  49. Loop 
  50. '
  51. BEGIN:
  52. SETUP
  53. ICONS
  54. End 
  55. Procedure SETUP
  56. Screen Open 0,640,256,4,Hires
  57. Screen Hide 0
  58. _SCREENSET
  59. Screen Display 0,140,40,640,256
  60. Ink 1 : Bar 0,0 To 640,256
  61. Ink 0 : Box 0,33 To 232,140 : Ink 3 : Draw 0,33 To 232,33 : Draw 0,33 To 0,140
  62. Ink 3 : Draw 0,0 To 640,0 : Draw 0,0 To 0,200
  63. Limit Mouse 0,0 To 450,300
  64. 'Colour 19,$14 : Colour 17,$A64 : Colour 18,$742 
  65. Reserve Zone 20
  66. '
  67. SH[10,15,"SELECT PATH",3]
  68. Ink 0 : Box 5,6 To 105,20 : Ink 3 : Draw 5,6 To 105,6 : Draw 5,6 To 5,20
  69. Set Zone 1,5,6 To 105,20
  70. SH[115,15,"FULL DIRECTORY",3]
  71. Ink 0 : Box 107,6 To 235,20 : Ink 3 : Draw 107,6 To 235,6 : Draw 107,6 To 107,20
  72. Set Zone 2,107,6 To 235,20
  73. SH[320,200,"SAMPLE LIST",3] : SH[335,210,"0 - 15",3]
  74. Ink 0 : Box 310,189 To 420,220 : Ink 3 : Draw 310,189 To 420,189 : Draw 310,189 To 310,220
  75. Set Zone 3,310,189 To 420,220
  76. Ink 2 : Paint 321,201
  77. SH[435,200,"SAMPLE LIST",3] : SH[450,210,"16 - 31",3]
  78. Ink 0 : Box 422,189 To 535,220 : Ink 3 : Draw 422,189 To 535,189 : Draw 422,189 To 422,220
  79. Set Zone 4,422,189 To 535,220
  80. Ink 0 : Box 536,189 To 636,220 : Ink 3 : Draw 536,189 To 636,189 : Draw 536,189 To 536,220
  81. Set Zone 5,536,189 To 636,220
  82. SH[270,70,"/\",3]
  83. Ink 0 : Box 265,60 To 290,75 : Ink 3 : Draw 265,60 To 290,60 : Draw 265,60 To 265,91
  84. Set Zone 6,265,60 To 290,75
  85. SH[270,86,"\/",3]
  86. Set Zone 7,266,76 To 290,91
  87. SH[240,110,"ESCAPE",2]
  88. SH[254,120,"KEY",2]
  89. SH[243,130,"QUITS",2]
  90. Ink 0 : Box 266,76 To 290,91 : Ink 3 : Draw 266,76 To 290,76 : Draw 266,76 To 266,91
  91. '
  92. CN=7
  93. Ink 1,0
  94. For U=0 To 90 Step 8
  95.    Add CN,1
  96.    Set Zone CN,2,36+U To 248,43+U
  97. Next U
  98. Gr Writing 5
  99. Ink 0
  100. EQUALS
  101. Screen 0
  102. _STARTIT
  103. Screen Show 0
  104. End Proc
  105. Procedure ICONS
  106. Screen 0
  107. WAM=0
  108. Do 
  109. ZUP=Mouse Zone
  110. Screen 0
  111. If ZUP=1 and Mouse Key=1 Then Ink 2 : Paint 6,7 : SUP_LIST : Gosub OHNO : Ink 1 : Paint 6,7
  112. If ZUP=2 and Mouse Key=1 Then FULLDIR
  113. If ZUP=3 and Mouse Key=1 Then TRACKER_DETAIL
  114. If ZUP=4 and Mouse Key=1 Then TRACKER2
  115. If ZUP=5 and Mouse Key=1 Then Ink 2 : Paint 537,190 : _OPTIONS : Ink 1 : Paint 537,190
  116. 'If ZUP=6 and Mouse Key=1 Then Ink 2 : Paint 266,61 : Gosub OHNO3 : Ink 1 : Paint 266,61 
  117. 'If ZUP=7 and Mouse Key=1 Then Ink 2 : Paint 267,77 : Gosub OHNO2 : Ink 1 : Paint 267,77 
  118. If ZUP=6 and Mouse Key=1 Then Gosub OHNO3
  119. If ZUP=7 and Mouse Key=1 Then Gosub OHNO2
  120. If ZUP=>8 and Mouse Key=1 Then Gosub RL1
  121. If Key State(69)=True Then NYET
  122. If Key State(76)=True Then _SUP
  123. If Key State(77)=True Then _SDOWN
  124. Loop 
  125. '
  126. OHNO:
  127. Screen 0
  128. For T=0 To JEN-1
  129. REAL$(T)=Left$(DLIST$(T),30)
  130. Next T
  131. VN=0
  132. For U=0 To 90 Step 8
  133. Add VN,1
  134. If VN=>JEN Then Ink 1 : Bar 2,36+U To 200,50+U : Else SH[2,42+U,REAL$(VN),3]
  135. Next U
  136. Return 
  137. '
  138. OHNO2:
  139. Screen 0
  140. If WAM=>JEN-1 Then Return 
  141. Add WAM,1
  142. For T=0 To JEN-1
  143. REAL$(T)=Left$(DLIST$(T+WAM),30)
  144. Next T
  145. VN=0
  146.       For U=0 To 90 Step 8
  147. '      SH[2,42+U,"                               ",3]
  148.        Ink 1 : Bar 2,36+U To 200,50+U
  149.       Next U
  150. For U=0 To 90 Step 8
  151. Add VN,1
  152. If VN=>JEN Then Ink 1 : Bar 2,36+U To 200,50+U : Else SH[2,42+U,REAL$(VN),3]
  153. Next U
  154. Return 
  155. '
  156. OHNO3:
  157. Screen 0
  158. If WAM=<0 Then Return 
  159. Add WAM,-1
  160. For T=0 To JEN-1
  161.    REAL$(T)=Left$(DLIST$(T+WAM),30)
  162. Next T
  163. VN=0
  164.       For U=0 To 90 Step 8
  165. '      SH[2,42+U,"                               ",3]
  166.        Ink 1 : Bar 2,36+U To 200,50+U
  167.       Next U
  168. For U=0 To 90 Step 8
  169. Add VN,1
  170. If VN=>JEN Then Ink 1 : Bar 2,36+U To 200,50+U : Else SH[2,42+U,REAL$(VN),3]
  171. Next U
  172. Return 
  173. '
  174. '
  175. RL1:
  176. Screen 0
  177. CHS$=REAL$(ZUP-7)
  178. If CHS$="" Then Return 
  179. TEMP$=REAL$(ZUP-7)
  180. Ink 6 : CH[2,42+(ZUP-8)*8,TEMP$,2] : Ink 2 : JINGLE : SH[2,42+(ZUP-8)*8,TEMP$,3] : Return 
  181. Return 
  182. '
  183. '
  184. End Proc
  185. Procedure JINGLE
  186.  
  187. On Error Goto FISH
  188. '
  189. 'Construct REAL filename from original in memory 
  190. '
  191. Screen 0
  192. TEMP1$=TEMP$
  193. TEMP2$=Mid$(TEMP1$,2,30)
  194. F=Instr(TEMP2$,"  ")
  195. TEMP3$=Mid$(TEMP2$,1,F-1)
  196. TEMP4$=DF$+TEMP3$
  197. '
  198. 'load and play!
  199. '
  200. 'Ink 1 : Bar 2,23 To 299,32
  201. 'SH[2,30,"LOADING:"+TEMP4$,6]
  202. If Exist(TEMP4$)=False Then Error 23
  203. Track Load TEMP4$,5
  204. Track Play 5,0
  205. Track Loop On 
  206. SAMPLIST=2
  207. TRACKER_DETAIL
  208. TRACKER3
  209. '
  210. JIF:
  211. Pop Proc
  212. FISH:
  213. '
  214. 'Error reports!
  215. '
  216. If Errn=94 Then SUPERQ["SORRY COULDNT LOAD FILE!","","   DAMN!","   DAMN!"] : Resume JIF
  217. If Errn=24 Then SUPERQ["NOT ENOUGH MEMORY SORRY!","MODULE IS TO LARGE! (oe-er!)","   DAMN!","�  DAMN!"] : Resume JIF
  218. If Errn=23 Then SUPERQ["NO DISK OR FILE PRESENT!","I CANT LOAD IT AT ALL SORRY!","   DAMN!","   DAMN!"] : Resume JIF
  219. SUPERQ["AN ERROR REPORT OHNO!","ERROR NUMBER:"+Str$(Errn),"OKAY","OKAY"]
  220. Resume JIF
  221. PRIMEA:
  222. '
  223. 'CLI to front/back 
  224. '
  225. 'Print Errn
  226. 'Wait Key  
  227. 'If CLI=0 Then Amos To Back : CLI=1 : Return 
  228. 'If CLI=1 Then CLI=0 : Amos To Front : Return  
  229. 'Return  
  230. '
  231. FREC:
  232. 'Cls 0 : Home : Print  
  233. Print 
  234. Centre "no disk or file present!"
  235. Print 
  236. Centre "volume:"+DKNAME$+" is no longer present!" : Print 
  237. Wait 20
  238. Centre "suggest you select a new path... press mouse button!"
  239. Wait 40
  240. Repeat 
  241. Until Mouse Key=1
  242. 'Screen Close 1
  243. Screen 0
  244. Pop Proc
  245. End Proc
  246. Procedure _STARTIT
  247. Screen 0
  248. SH[550,196,"STORM",3]
  249. SH[550,206,"MODPLAYER",3]
  250. SH[550,216,"VERSION 3",3]
  251. SER=0
  252. SH[320,20,"Songname :",2]
  253.  
  254. '
  255. 'Get and print halve of instruments list to screen 
  256. '
  257. BTR=20
  258. For I=20 To 440 Step 30
  259. Add NO,1
  260. Add BTR,10
  261. CH[320,BTR,"INSTRNUM :"+Hex$(NO),2]
  262. Next I
  263. Ink 0 : Box 300,7 To 636,188 : Ink 3 : Draw 300,7 To 636,7 : Draw 300,7 To 300,188
  264. Ink 0 : Box 0,151 To 299,254 : Ink 3 : Draw 0,151 To 299,151 : Draw 0,151 To 0,254
  265. Ink 0 : Box 300,221 To 561,254 : Ink 3 : Draw 300,221 To 561,221 : Draw 300,221 To 300,254
  266. End Proc
  267. Procedure TRACKER_DETAIL
  268. '
  269. 'This procedure examines the song currently
  270. 'being played by the program!
  271. '
  272. Screen 0
  273.  NO=0
  274. If SAMPLIST=1 Then Pop Proc
  275. Ink 2 : Paint 311,190 : Ink 1 : Paint 423,190
  276.  
  277. Ink 1 : Bar 320,10 To 635,187
  278. SH[320,20,"SONGNAME :",2]
  279. ST=Start(5)
  280. '
  281. 'Get REAL song name from bank
  282. '
  283. SER=0
  284. For I=0 To 19
  285. Add SER,9
  286. AW=Peek(ST+I)
  287. If AW=0 Then SH[420+I*9,20,".",3] : Else SH[420+I*9,20,Chr$(AW),3]
  288. Next I
  289. '
  290. 'Get and print halve of instruments list to screen 
  291. '
  292. BTR=20
  293. For I=20 To 440 Step 30
  294. Add NO,1
  295. Add BTR,10
  296. CH[320,BTR,"INSTRNUM :"+Hex$(NO),2]
  297. For U=0 To 21
  298. AW=Peek(ST+I+U)
  299. If AW=0 Then CH[420+U*9,BTR,".",3] : Else CH[420+U*9,BTR,Chr$(AW),3]
  300. Next U
  301. Next I
  302. End Proc
  303. Procedure TRACKER2
  304. '
  305. 'Now print the second halve
  306. '
  307. Screen 0
  308. If SAMPLIST=1 Then Pop Proc
  309. Ink 2 : Paint 423,190 : Ink 1 : Paint 311,190
  310. Ink 1 : Bar 320,23 To 635,187
  311.  
  312. BTR=20
  313. NO=15
  314. ST=Start(5)
  315. For I=470 To 940 Step 30
  316.    Add NO,1
  317.    Add BTR,10 : CH[320,BTR,"INSTRNUM:"+Hex$(NO),2]
  318.    For U=0 To 21
  319.       AW=Peek(ST+I+U)
  320.       If AW=0 Then CH[420+U*9,BTR,".",3] : Else CH[420+U*9,BTR,Chr$(AW),3]
  321.    Next U
  322. Next I
  323. End Proc
  324. Procedure TRACKER3
  325. '
  326. 'Get length of module
  327. '
  328. Screen 0
  329. Ink 1 : Bar 2,154 To 298,253
  330. ST=Start(5)
  331. STL=Peek(ST+950)
  332. FSIZE=Length(5)
  333. SH[2,160,"SIZE OF MODULE:"+Str$(FSIZE)+" K",2]
  334. SH[2,170,"POSITION LENGTH:"+Hex$(STL)+"   ("+Str$(STL)+" )",3]
  335. SH[2,180,"PATTERNS PROGRAMMED AS FOLLOWS:",3]
  336.  
  337. '
  338. 'Make list of used patterns and sort 
  339. 'To get the highest and total amount used! 
  340. '
  341. DFE=-20 : DFF=190
  342. For T=0 To STL
  343. Add DFE,20
  344. PT=Peek(ST+952+T)
  345. AD$=Hex$(PT)
  346. D=Val(AD$)
  347. SH[DFE,DFF,Str$(D)+",",3]
  348. If DFE=>225 Then DFE=-20 : Add DFF,10
  349. Next T
  350. Ink 1 : Bar 310,226 To 560,253
  351. SH[320,230,"STORED IN MEMORY AT:"+Hex$(ST),3]
  352.  
  353. SH[320,240,"FAST MEM LEFT:"+Str$(Fast Free)+" K",3]
  354. CH=Chip Free
  355. If CH=<0 Then CH=0
  356. SH[320,250,"CHIP MEM LEFT:"+Str$(Chip Free)+" K",3]
  357. End Proc
  358. Procedure MEMORY
  359. 'CH=Chip Free
  360. 'If CH=<0 Then CH=0
  361. 'TTAL=Free+CH+Fast Free
  362. 'Ink 1 : Bar 2,139 To 200,155
  363. ''SH[2,146,"TOTAL FREE MEM:"+Str$(TTAL),3] 
  364. End Proc
  365. Procedure FULLDIR
  366. If DF$="" Then Goto NOD
  367. Screen Open 2,640,286,4,Hires
  368. Screen Display 2,140,40,640,256
  369. 'Curs Off : Flash Off  
  370. _SCREENSET
  371. Cls 1 : NO=0
  372. Paper 1 : Pen 3
  373. Home 
  374. Print "Full directory of last device used:"
  375. Screen To Front 2
  376. F$=Dir First$(DF$)
  377. While F$<>""
  378.    Print F$
  379.    F$=Dir Next$
  380.    If Y Curs=24 Then Gosub KYTV
  381. Wend 
  382. '
  383. A$=Disc Info$(DF$)
  384. C=Instr(A$,":")
  385. N$=Left$(A$,C)
  386. Pen 3
  387. Print 
  388. Print "volume name : ";N$
  389. Print "press space to continue"
  390. Repeat 
  391. Until Key State(64)=True
  392. Cls 1 : Home : Screen Close 2
  393. Pop Proc
  394. '
  395. KYTV:
  396. Pen 2
  397. Print "press space to continue"
  398. Repeat 
  399. Until Key State(64)=True
  400. Cls 1 : Home 
  401. Return 
  402. '
  403. NOD:
  404. W$="No directory/path yet selected!!!!!!"
  405. SUPERQ[W$,"","  OOPS!","   OOPS!"]
  406. Pop Proc
  407. End Proc
  408. Procedure SUP_LIST
  409. Screen Open 1,640,220,4,Hires
  410. Screen Hide 1
  411. Screen Display 1,140,220,640,27
  412. _SCREENSET
  413. Ink 1 : Bar 0,0 To 640,220 : Ink 3 : Draw 0,0 To 640,0 : Draw 0,0 To 0,220
  414. SCUM:
  415. On Error Goto PIST
  416. If Exist("df1:")=True Then CHD=1 Else CHD=0
  417. If Exist("df0:")=True Then CHE=1 Else CHE=0
  418. '
  419. 'Search for mod files only (change to suite!)
  420. '
  421. Reserve Zone 35
  422. If CHD=1
  423. SH[50,10,"PATH DF1:",3]
  424. Ink 0 : Box 40,2 To 130,16 : Ink 3 : Draw 40,2 To 130,2 : Draw 40,2 To 40,16
  425. Set Zone 1,40,2 To 130,16
  426. End If 
  427. If CHE=1
  428. SH[145,10,"PATH DF0:",3]
  429. Ink 0 : Box 132,2 To 225,16 : Ink 3 : Draw 132,2 To 225,2 : Draw 132,2 To 132,16
  430. Set Zone 2,132,2 To 225,16
  431. End If 
  432. If CHD=1
  433. SH[240,10,"ROOT DF1:",3]
  434. Ink 0 : Box 227,2 To 325,16 : Ink 3 : Draw 227,2 To 325,2 : Draw 227,2 To 227,16
  435. Set Zone 3,227,2 To 325,16
  436. End If 
  437. If CHE=1
  438. SH[340,10,"ROOT DF0:",3]
  439. Ink 0 : Box 327,2 To 420,16 : Ink 3 : Draw 327,2 To 420,2 : Draw 327,2 To 327,16
  440. Set Zone 4,327,2 To 420,16
  441. End If 
  442. SH[440,10,"CANCEL",3]
  443. Ink 0 : Box 422,2 To 510,16 : Ink 3 : Draw 422,2 To 510,2 : Draw 422,2 To 422,16
  444. Set Zone 5,422,2 To 510,16
  445. Ink 0 : Box 180,28 To 457,218 : Ink 3 : Draw 180,28 To 457,28 : Draw 180,28 To 180,218
  446. Screen Show 1
  447.  
  448. Screen Display 1,,,640,27
  449. Do 
  450. MOT=Mouse Zone
  451. If MOT=1 and Mouse Key=1 Then DF$="df1:" : Gosub ERAZE : Ink 2 : Paint 41,3 : Gosub LSD
  452. If MOT=2 and Mouse Key=1 Then DF$="df0:" : Gosub ERAZE : Ink 2 : Paint 133,3 : Gosub LSD
  453. If MOT=3 and Mouse Key=1 Then DF$="df1:" : Gosub ERAZE : Ink 2 : Paint 228,3 : Gosub MAN
  454. If MOT=4 and Mouse Key=1 Then DF$="df0:" : Gosub ERAZE : Ink 2 : Paint 228,3 : Gosub MAN
  455. If MOT=5 and Mouse Key=1 Then Ink 2 : Paint 423,3 : Wait 20 : Screen Close 1 : Screen 0 : Pop Proc
  456. Loop 
  457. '  
  458. ERAZE:
  459. For I=0 To 60 : DLIST$(I)="" : Next I
  460. For I=0 To 30 : REAL$(I)="" : Next I
  461. Screen 0
  462. Ink 1,1
  463. Bar 2,36 To 220,138
  464. Screen 1
  465. Return 
  466. '
  467. LSD:
  468. For W=220 To 40 Step -1
  469. Screen Display 1,,W,,
  470. Wait Vbl 
  471. Next W
  472. For W=27 To 220
  473. Screen Display 1,,,,W
  474. Wait Vbl 
  475. Next W
  476. Ink 1 : Paint 41,3
  477. A$=Disc Info$(DF$)
  478. C=Instr(A$,":")
  479. DKNAME$=Left$(A$,C)
  480. SH[150,25,"LOCATING AVAILABLE DIRECTORIES IN DRIVE "+DF$,3]
  481. S$=Dir First$(DF$+"*.*")
  482. If Left$(S$,1)="*" Then SNAKE=1
  483. If Left$(S$,1)="*" Then SNAKE=1
  484. If SNAKE=1 Then JEN=1 : DLIST$(JEN)=S$ : Add JEN,1
  485. '
  486. 'Build directory of files in ram .Leave out sub dirs "*" 
  487. '
  488. While S$<>""
  489. S$=Dir Next$
  490. If Left$(S$,1)<>"*" Then Goto SUM2 Else Add JEN,1 : DLIST$(JEN)=S$
  491. DLIST$(JEN)=S$
  492. SUM2:
  493. Wend 
  494. If JEN=<0
  495. Ink 1
  496. Bar 150,17 To 630,27
  497. SH[150,25,"      NO DIRECTORIES FOUND SORRY!!!",2]
  498. Wait 80
  499. Goto ENT
  500. End If 
  501. SHT=0
  502. Ink 1 : Bar 150,17 To 630,27
  503. SH[150,25,"CLICK ON A DIRECTORY TO SEARCH FOR MODULES IN!",3]
  504.  
  505. Print 
  506. CHP=20 : POL=0
  507. Reset Zone 
  508. For I=0 To JEN
  509.    Add SHT,1 : Add CHP,10
  510. SH[200,CHP+10,DLIST$(I),3]
  511. Set Zone SHT,200,CHP To 350,CHP+10
  512. Next I
  513. Do 
  514.    For I=1 To JEN+1
  515.    If Mouse Zone=I and Mouse Key=1 Then Goto DIT
  516. Next I
  517. Loop 
  518. '
  519. DIT:
  520. ER=Instr(DLIST$(I-1)," ")
  521. EF$=Mid$(DLIST$(I-1),2,ER-2)
  522. PF$=DF$+EF$+"/"
  523. 'Print PF$ 
  524. DF$=PF$
  525. JEN=0
  526. '
  527. 'Check to see if there are any mod files in memory!
  528. '
  529. MAN:
  530. For I=0 To 60 : DLIST$(I)="" : Next I
  531. For I=0 To 30 : REAL$(I)="" : Next I
  532. JEN=0
  533. A$=Disc Info$(DF$)
  534. C=Instr(A$,":")
  535. DKNAME$=Left$(A$,C)
  536. Screen 1
  537. Ink 1 : Bar 140,17 To 600,27
  538. SH[150,25,"SEARCHING DIRECTORY:"+DF$,3]
  539. S$=""
  540. S$=Dir First$(DF$+"mod.*")
  541. If Left$(S$,4)=" mod" Then SNAKE=1
  542. If Left$(S$,4)=" MOD" Then SNAKE=1
  543. If Left$(S$,1)="*" Then Goto WISH
  544. If SNAKE=1 Then JEN=1 : DLIST$(JEN)=S$ : Rem Add JEN,1
  545. '
  546. 'Build directory of files in ram .Leave out sub dirs "*" 
  547. '
  548. WISH:
  549. While S$<>""
  550. S$=Dir Next$
  551. If Left$(S$,1)="*" Then Goto SUM3 Else Add JEN,1 : DLIST$(JEN)=S$
  552. DLIST$(JEN)=S$
  553. SUM3:
  554. Wend 
  555. '
  556. 'Check to see if there are any mod files in memory!
  557. '
  558. Screen 1
  559. For U=0 To JEN-1
  560. If Left$(DLIST$(U),4)=" mod" Then NHS=1
  561. If Left$(DLIST$(U),4)=" MOD" Then NHS=1
  562. Next U
  563. If NHS=>1 Then Gosub ENT Else Goto RIP
  564. '
  565. End 
  566. '
  567. 'Error no path found!  
  568. '
  569. PIST:
  570. If Errn=81 Then Resume SCUM
  571. Resume RIP
  572. '
  573. 'No mod files found! 
  574. '
  575. RIP:
  576. Ink 1 : Bar 140,17 To 600,27
  577. SUPERQ["Didnt find any files with 'mod.' prefix!","","  OKAY",""]
  578. DF$=""
  579. For I=0 To 60 : DLIST$(I)="" : Next I
  580. For I=0 To 30 : REAL$(I)="" : Next I
  581. JEN=0
  582. 'Screen 1
  583. 'Ink 1 : Bar 181,28 To 456,218 
  584. 'Goto SCUM 
  585. '
  586. ENT:
  587. Screen Close 1
  588. Screen 0
  589. Ink 1 : Bar 2,23 To 299,32
  590. If JEN=<0 Then JEN=1
  591. SH[2,30,Str$(JEN-1)+" 'MOD' FILES FOUND!",2]
  592. End Proc
  593. Procedure NYET
  594. A$="     ARE YOU SURE YOU WANT TO QUIT?"
  595. C$="             MOD PLAYER V 3.0"
  596. SUPERQ[A$,C$,"  OKAY","  CANCEL"]
  597. If RESPONSE=2 Then Pop Proc
  598. Erase 5
  599. End 
  600. End Proc
  601. Procedure SH[TX,TY,T$,I]
  602.    '   Colour 3,$FB5
  603.    Gr Writing 0
  604.    Ink 0 : Text TX+1,TY+1,T$
  605.    '    Text TX-1,TY-1,T$ 
  606.    Ink I : Text TX,TY,T$
  607. End Proc
  608. Procedure CH[TX,TY,T$,I]
  609.    '   Colour 3,$FB5
  610. '   Gr Writing 1 
  611. '   Ink 0 : Text TX+1,TY+1,T$
  612.    '    Text TX-1,TY-1,T$ 
  613.    Ink I : Text TX,TY,T$
  614. End Proc
  615. Procedure SUPERQ[T1$,T2$,Q1$,Q2$]
  616.    Screen Open 7,640,81,4,Hires
  617.    Screen Hide 7
  618.    Screen Display 7,140,40,,1
  619.     Reserve Zone 3
  620.    Shared RESPONSE
  621.    _SCREENSET
  622.    Cls 1
  623.    LTH=Len(T1$) : LTH2=Len(T2$) : LTH3=Len(Q1$) : LTH4=Len(Q2$)
  624.    If LTH=>40 Then T1$=Left$(T1$,40)
  625.    If LTH2=>40 Then T2$=Left$(T2$,40)
  626.    If LTH3=>10 Then Q1$=Left$(Q1$,10)
  627.    If LTH4=>10 Then Q2$=Left$(Q2$,10)
  628.    Screen 7
  629.    Limit Mouse 189,40 To 365,77
  630.    '
  631.    Ink 1
  632.    Bar 120,0 To 500,50
  633.    '
  634.    Ink 3
  635.    Draw 140,7 To 470,7 : Ink 0 : Draw 470,7 To 470,30
  636.    Ink 0
  637.    Draw 470,30 To 140,30 : Ink 3 : Draw 140,30 To 140,7 : Draw 139,30 To 139,7
  638.    '
  639.    Ink 3
  640.    Draw 120,0 To 500,0 : Draw 120,0 To 120,50
  641.    Ink 0
  642.    Draw 500,50 To 500,0 : Ink 0 : Draw 120,50 To 500,50
  643.    '
  644.    If LTH3>0
  645.       SH[135,42,Q1$,3]
  646.       Ink 3
  647.       Draw 130,33 To 220,33 : Ink 0 : Draw 220,33 To 220,47
  648.       Ink 0
  649.       Draw 220,47 To 130,47 : Ink 3 : Draw 130,47 To 130,33
  650.       Set Zone 1,130,33 To 220,47
  651.    End If 
  652.    '
  653.    If LTH4>0
  654.       Ink 3,4
  655.       SH[405,42,Q2$,3]
  656.       Ink 3
  657.       Draw 400,33 To 490,33 : Ink 0 : Draw 490,33 To 490,47
  658.       Ink 0
  659.       Draw 490,47 To 400,47 : Ink 3 : Draw 400,47 To 400,33
  660.       Set Zone 2,400,33 To 490,47
  661.    End If 
  662.    '
  663.    SH[145,16,T1$,3]
  664.    SH[145,26,T2$,3]
  665.    '
  666.    Screen Show 7
  667.    If ERNO=23 Then Screen To Front 2 : DEF=200 : Goto DER
  668.    DEF=250
  669.    DER:
  670.    For I=0 To 51
  671.       Add DEF,-1
  672.       Screen Display 7,,40,,I
  673.       Wait Vbl 
  674.    Next I
  675.    '
  676.    Do 
  677.       MZ=Mouse Zone
  678.       Screen 7
  679.       If MZ=1 and Mouse Key=1 Then Gosub RP1 : RESPONSE=1 : Reset Zone : Gosub HAS : Screen Close 7 : Screen 0 : Limit Mouse : Pop Proc
  680.       If MZ=2 and Mouse Key=1 Then Gosub RP2 : RESPONSE=2 : Reset Zone : Gosub HAS : Screen Close 7 : Screen 0 : Limit Mouse : Pop Proc
  681.    Loop 
  682.    '
  683.    '
  684.    HAS:
  685.    DEF=DEF-1
  686.    For I=51 To 0 Step -1
  687.       Add DEF,1
  688.       Screen Display 7,,40,,I
  689.       Wait Vbl 
  690.    Next I
  691.    Return 
  692.    '
  693.    RP1:
  694.    Ink 2
  695.    Paint 136,34
  696.    Ink 3,2
  697.    SH[135,42,Q1$,3]
  698.    Ink 3
  699.    Draw 130,33 To 220,33 : Ink 0 : Draw 220,33 To 220,47
  700.    Ink 0
  701.    Draw 220,47 To 130,47 : Ink 3 : Draw 130,47 To 130,33
  702.    Wait 10
  703.    Return 
  704.    '
  705.    RP2:
  706.    Ink 2
  707.    Paint 405,34
  708.    Ink 3,2
  709.    SH[405,42,Q2$,3]
  710.    Ink 3
  711.    Draw 400,33 To 490,33 : Ink 0 : Draw 490,33 To 490,47
  712.    Ink 0
  713.    Draw 490,47 To 400,47 : Ink 3 : Draw 400,47 To 400,33
  714.    Wait 10
  715.    Return 
  716. End Proc
  717. Procedure _SUP
  718. If SCREN=<10 Then Pop Proc
  719. Add SCREN,-1
  720. Amreg(0)=SCREN
  721. End Proc
  722. Procedure _SDOWN
  723. If SCREN=>260 Then Pop Proc
  724. Add SCREN,1
  725. Amreg(0)=SCREN
  726. End Proc
  727. Procedure EQUALS
  728. Screen Open 4,320,80,4,Lowres
  729. Screen Display 4,140,260,320,50
  730. _SCREENSET
  731. Ink 1
  732. Bar 0,0 To 320,80
  733. Ink 3
  734. Draw 0,0 To 320,0
  735. Draw 0,0 To 0,80
  736. Ink 0 : Box 115,0 To 201,50 : Ink 3 : Draw 115,0 To 201,0 : Draw 115,0 To 115,50
  737. Screen 4
  738. SH[10,10,"MODPLAYER V3",3]
  739. SH[25,20,"CODED BY",3]
  740. SH[37,30,"STORM",2]
  741. SH[10,40,"DATE: 2/1/93",3]
  742. SH[202,10,"USE CURSOR KEYS",3]
  743. SH[212,20,"TO MOVE THIS",3]
  744. SH[232,30,"SCREEN",3]
  745. SH[219,40,"UP N DOWN!",3]
  746. ABD
  747. Amreg(0)=260
  748. Channel 5 To Screen Display 4
  749. A$="L: Let Y=RA ;Jump Loop"
  750. Amal 5,A$ : Amal On 
  751. End Proc
  752. Procedure ABD
  753. ' Equalizers.... 
  754. ' This is a routine which is quite easy to do
  755. ' If you think it through! 
  756. ' Have a look at the code but dont change anything! YET! 
  757. ' Use it at will but mention who REALLY did it please... 
  758. ' Ejber Ozkan
  759. Double Buffer 
  760. Bob 2,120,50,1
  761. Bob 3,140,50,1
  762. Bob 4,160,50,1
  763. Bob 5,180,50,1
  764. Channel 1 To Bob 2
  765. A$="  AUtotest ( Let R1=Vu(0); Let Y=83; If R1=0 eXit else Direct Start )"
  766. A$=A$+"Start: For R2=0 To R1 ; Let Y=R2*2 ; Next R2; "
  767. A$=A$+"For R2=0-R1 To 0 ; Let Y=R2*4 ;Next R2; W "
  768. Amal 1,A$ : Amal On 
  769. Channel 2 To Bob 3
  770. A$="  AUtotest ( Let R1=Vu(1); Let Y=83 ;If R1=0 eXit else Direct Start )"
  771. A$=A$+"Start: For R2=0 To R1 ; Let Y=R2*2 ; Next R2; "
  772. A$=A$+"For R2=0-R1 To 0; Let Y=R2*4 ;Next R2; W"
  773. Amal 2,A$ : Amal On 
  774. Channel 3 To Bob 4
  775. A$="  AUtotest ( Let R1=Vu(2); Let Y=83 ;If R1=0 eXit else Direct Start )"
  776. A$=A$+"Start: For R2=0 To R1 ; Let Y=R2*2 ; Next R2; "
  777. A$=A$+"For R2=0-R1 To 0; Let Y=R2*4 ;Next R2; W"
  778. Amal 3,A$ : Amal On 
  779. Channel 4 To Bob 5
  780. A$="  AUtotest ( Let R1=Vu(3); Let Y=83 ;If R1=0 eXit else Direct Start )"
  781. A$=A$+"Start: For R2=0 To R1 ; Let Y=R2*2 ; Next R2; "
  782. A$=A$+"For R2=0-R1 To 0; Let Y=R2*4 ;Next R2; W"
  783. Amal 4,A$ : Amal On 
  784. 'Cls 0 
  785. End Proc
  786. Procedure _OPTIONS
  787. '   Screen 1 : Ink 2 : Paint 453,24
  788.    Screen Open 3,640,90,4,Hires
  789.    Screen Hide 3
  790.    _SCREENSET
  791.    Screen Display 3,140,169,640,80
  792.    'Limit Mouse 128,60 To 447,229 
  793.    Cls 1 : Ink 0
  794.    Box 0,0 To 639,169 : Ink 3 : Draw 0,0 To 639,0 : Draw 0,0 To 0,169
  795.    If Chip Free<0 Then CH=0 Else CH=Chip Free
  796.    FH=Fast Free+Free
  797.    SH[240,10,"STORM MODULE PLAYER V3.00",2]
  798.    SH[100,20,"Free Fast Mem:"+Str$(FH),3]
  799.    SH[100,30,"Free Chip Mem:"+Str$(CH),3]
  800.    SH[100,40,"Totl Free Mem:"+Str$(FH+CH),3]
  801.    SH[400,20,"THIS IS FREEWARE",3]
  802.    SH[400,30,"SPREAD IT EVERYWHERE",3]
  803.    SH[400,40,"AND ANYWHERE YOU CAN!",3]
  804.    '
  805.    If Exist("df0:")=True Then Dir$="df0:" : SH[100,50,"Free Df0:"+Str$(Dfree),3]
  806.    If Exist("df0:")=False Then SH[100,50,"Free Df0:NON",3]
  807.    If Exist("df1:")=True Then Dir$="df1:" : SH[400,50,"Free Df1:"+Str$(Dfree),3]
  808.    If Exist("df1:")=False Then SH[400,50,"Free Df1:NON",3]
  809.    Reserve Zone 7
  810. '
  811.    SH[100,70,"Palette Mode:",3]
  812.    Ink 0 : Box 89,60 To 250,77 : Ink 3 : Draw 89,60 To 250,60 : Draw 89,60 To 89,77
  813. '
  814.    SH[260,70,"+",3]
  815.    Set Zone 1,252,60 To 275,77
  816.    Ink 0 : Box 252,60 To 275,77 : Ink 3 : Draw 252,60 To 275,60 : Draw 252,60 To 252,77
  817. '
  818.    SH[285,70,"-",3]
  819.    Set Zone 2,277,60 To 300,77
  820.    Ink 0 : Box 277,60 To 300,77 : Ink 3 : Draw 277,60 To 300,60 : Draw 277,60 To 277,77
  821. '
  822. '   SH[400,70,"MUSIC:",3]
  823. '   Ink 0 : Box 395,60 To 455,77 : Ink 3 : Draw 395,60 To 455,60 : Draw 395,60 To 395,77 
  824. '
  825. '   SH[460,70,"ON",3]
  826. '  Ink 0 : Box 457,60 To 480,77 : Ink 3 : Draw 457,60 To 480,60 : Draw 457,60 To 457,77
  827. '   Set Zone 4,457,60 To 480,77
  828. 'If DMUS=1 Then Ink 2 : Paint 458,61 : Ink 1 
  829. '
  830. '   SH[485,70,"OFF",3] 
  831. '   Ink 0 : Box 482,60 To 515,77 : Ink 3 : Draw 482,60 To 515,60 : Draw 482,60 To 482,77 
  832. '   Set Zone 5,482,60 To 515,77
  833. ' If DMUS=0 Then Ink 2 : Paint 483,61 : Ink 1
  834. '
  835. '   SH[520,70,"CLEAR",3] 
  836. '   Ink 0 : Box 517,60 To 570,77 : Ink 3 : Draw 517,60 To 570,60 : Draw 517,60 To 517,77 
  837. '   Set Zone 6,517,60 To 570,77
  838. '   If NOMUS=1 Then Set Pattern 2 : Ink 1 : Paint 396,61 : Paint 458,61 : Paint 483,61 : Paint 518,61 : Set Pattern 0 : Ink 1
  839. '
  840.    SH[590,70,"OKAY",3]
  841.    Ink 0 : Box 580,60 To 635,77 : Ink 3 : Draw 580,60 To 635,60 : Draw 580,60 To 580,77
  842.    Set Zone 3,580,60 To 635,77
  843.    Screen Show 3
  844. '
  845.    SH[210,70,Str$(OPTS),3]
  846. '
  847.    Do 
  848.       ZD=Mouse Zone
  849.       If ZD=1 and Mouse Key=1 Then Gosub UPAL
  850.       If ZD=2 and Mouse Key=1 Then Gosub DPAL
  851.       If ZD=3 and Mouse Key=1 Then Gosub FIN
  852.  '     If ZD=4 and Mouse Key=1 Then Gosub MUON
  853.  '     If ZD=5 and Mouse Key=1 Then Gosub MOFF
  854.  '     If ZD=6 and Mouse Key=1 Then Gosub CLMUSIC 
  855.    Loop 
  856.    '
  857.    FIN:
  858.    Ink 2 : Paint 581,61
  859.    Get Palette 3
  860.    ET=169
  861.    For I=80 To 0 Step -2
  862.       Add ET,1
  863.       Screen Display 3,,ET,,I
  864.       Wait Vbl 
  865.    Next I
  866.    Reset Zone 
  867.    Screen 0 : Get Palette 3 : Screen 4 : Get Palette 3
  868.    Screen Close 3
  869.    Screen 0
  870.    Limit Mouse 0,0 To 450,300
  871.    Pop Proc
  872. '
  873.    UPAL:
  874.    If OPTS=>8 Then Return 
  875.    Ink 2 : Paint 253,61
  876.    Add OPTS,1
  877.    '_CLSNUM3
  878.    SH[210,70,Str$(OPTS),3]
  879.    _PALS[OPTS]
  880.    Ink 1 : Paint 253,61
  881.    Return 
  882.    '
  883.    DPAL:
  884.    If OPTS=<1 Then Return 
  885.    Add OPTS,-1
  886.    Ink 2 : Paint 278,61
  887.    '_CLSNUM3
  888.    SH[210,70,Str$(OPTS),3]
  889.    _PALS[OPTS]
  890.    Ink 1 : Paint 278,61
  891.    Return 
  892. Return 
  893. End Proc
  894. Procedure _SCREENSET
  895.    Curs Off : Flash Off : Pen 2 : Paper 0 : Ink 2,0 : Cls 0
  896.    _PALS[OPTS]
  897.    ' Mouse colours
  898.    Colour 17,$FFF : Colour 18,$888 : Colour 19,$111
  899. End Proc
  900. Procedure _PALS[AW]
  901.    If AW=1 Then Gosub T1 : Pop Proc
  902.    If AW=2 Then Gosub T8 : Pop Proc
  903.    If AW=3 Then Gosub T3 : Pop Proc
  904.    If AW=4 Then Gosub T4 : Pop Proc
  905.    If AW=5 Then Gosub T5 : Pop Proc
  906.    If AW=6 Then Gosub T6 : Pop Proc
  907.    If AW=7 Then Gosub T7 : Pop Proc
  908.    If AW=8 Then Gosub T2 : Pop Proc
  909.    Pop Proc
  910.    T1:
  911.    Palette $0,$AAA,$27D,$FFF,$F00,$FF0,$F0,$5F
  912.    Return 
  913.    T2:
  914.    Palette $0,$A70,$853,$FF6,$F00,$FF0,$F0,$5F
  915.    Return 
  916.    T3:
  917.    Palette $0,$A0A,$404,$F7F,$F00,$FF0,$F0,$5F
  918.    Return 
  919.    T4:
  920.    Palette $0,$A0,$40,$F7,$F00,$FF0,$F0,$5F
  921.    Return 
  922.    T5:
  923.    Palette $0,$A00,$411,$F70,$F00,$FF0,$F0,$5F
  924.    Return 
  925.    T6:
  926.    Palette $0,$A,$4,$6F,$F00,$FF0,$F0,$FF0
  927.    Return 
  928.    T7:
  929.    Palette $0,$38,$124,$AF,$F00,$FF0,$F0,$5FF
  930.    Return 
  931.    T8:
  932.    Palette $0,$521,$660,$DD0,$F00,$FF0,$F0,$5F
  933.    Return 
  934. End Proc