MUSIC.C 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554
  1. #include "main.h"
  2. #include "default.h"
  3. #include "keys.h"
  4. //
  5. // Choose MIDI port
  6. //
  7. enum
  8. {
  9. MIDI_220,
  10. MIDI_230,
  11. MIDI_240,
  12. MIDI_250,
  13. MIDI_300,
  14. MIDI_320,
  15. MIDI_330,
  16. MIDI_332,
  17. MIDI_334,
  18. MIDI_336,
  19. MIDI_340,
  20. MIDI_360,
  21. MIDI_MAX
  22. };
  23. item_t midiportitems[]=
  24. {
  25. {MIDI_220, 32,6,13, -1,-1},
  26. {MIDI_230, 32,7,13, -1,-1},
  27. {MIDI_240, 32,8,13, -1,-1},
  28. {MIDI_250, 32,9,13, -1,-1},
  29. {MIDI_300, 32,10,13, -1,-1},
  30. {MIDI_320, 32,11,13, -1,-1},
  31. {MIDI_330, 32,12,13, -1,-1},
  32. {MIDI_332, 32,13,13, -1,-1},
  33. {MIDI_334, 32,14,13, -1,-1},
  34. {MIDI_336, 32,15,13, -1,-1},
  35. {MIDI_340, 32,16,13, -1,-1},
  36. {MIDI_360, 32,17,13, -1,-1}
  37. };
  38. menu_t midiportmenu=
  39. {
  40. &midiportitems[0],
  41. MIDI_330,
  42. MIDI_MAX,
  43. 0x7f
  44. };
  45. int ChooseMidiPort (DMXCARD * card)
  46. {
  47. short field;
  48. short key;
  49. int rval = 0;
  50. SaveScreen();
  51. DrawPup(&midiport);
  52. // DEFAULT FIELD ========================================
  53. switch ( card->midiport )
  54. {
  55. default:
  56. case 0x220:
  57. field = MIDI_220;
  58. break;
  59. case 0x230:
  60. field = MIDI_230;
  61. break;
  62. case 0x240:
  63. field = MIDI_240;
  64. break;
  65. case 0x250:
  66. field = MIDI_250;
  67. break;
  68. case 0x300:
  69. field = MIDI_300;
  70. break;
  71. case 0x320:
  72. field = MIDI_320;
  73. break;
  74. case 0x330:
  75. field = MIDI_330;
  76. break;
  77. case 0x332:
  78. field = MIDI_332;
  79. break;
  80. case 0x334:
  81. field = MIDI_334;
  82. break;
  83. case 0x336:
  84. field = MIDI_336;
  85. break;
  86. case 0x340:
  87. field = MIDI_340;
  88. break;
  89. case 0x360:
  90. field = MIDI_360;
  91. break;
  92. }
  93. while(1)
  94. {
  95. SetupMenu(&midiportmenu);
  96. field = GetMenuInput();
  97. key = menukey;
  98. switch ( key )
  99. {
  100. case KEY_ESC:
  101. rval = -1;
  102. goto func_exit;
  103. case KEY_ENTER:
  104. case KEY_F10:
  105. switch ( field )
  106. {
  107. case MIDI_220:
  108. card->midiport = 0x220;
  109. goto func_exit;
  110. case MIDI_230:
  111. card->midiport = 0x230;
  112. goto func_exit;
  113. case MIDI_240:
  114. card->midiport = 0x240;
  115. goto func_exit;
  116. case MIDI_250:
  117. card->midiport = 0x250;
  118. goto func_exit;
  119. case MIDI_300:
  120. card->midiport = 0x300;
  121. goto func_exit;
  122. case MIDI_320:
  123. card->midiport = 0x320;
  124. goto func_exit;
  125. case MIDI_330:
  126. card->midiport = 0x330;
  127. goto func_exit;
  128. case MIDI_332:
  129. card->midiport = 0x332;
  130. goto func_exit;
  131. case MIDI_334:
  132. card->midiport = 0x334;
  133. goto func_exit;
  134. case MIDI_336:
  135. card->midiport = 0x336;
  136. goto func_exit;
  137. case MIDI_340:
  138. card->midiport = 0x340;
  139. goto func_exit;
  140. case MIDI_360:
  141. card->midiport = 0x360;
  142. goto func_exit;
  143. default:
  144. break;
  145. }
  146. break;
  147. }
  148. }
  149. func_exit:
  150. RestoreScreen();
  151. return ( rval );
  152. }
  153. //
  154. // Choose which SoundBlaster port to use (or any port!)
  155. //
  156. enum
  157. {
  158. SB_PORT_210,
  159. SB_PORT_220,
  160. SB_PORT_230,
  161. SB_PORT_240,
  162. SB_PORT_250,
  163. SB_PORT_260,
  164. SB_PORT_280,
  165. SB_PORT_MAX
  166. };
  167. item_t sbportitems[]=
  168. {
  169. {SB_PORT_210, 32,9,13, -1,-1},
  170. {SB_PORT_220, 32,10,13, -1,-1},
  171. {SB_PORT_230, 32,11,13, -1,-1},
  172. {SB_PORT_240, 32,12,13, -1,-1},
  173. {SB_PORT_250, 32,13,13, -1,-1},
  174. {SB_PORT_260, 32,14,13, -1,-1},
  175. {SB_PORT_280, 32,15,13, -1,-1}
  176. };
  177. menu_t sbportmenu =
  178. {
  179. &sbportitems[0],
  180. SB_PORT_220,
  181. SB_PORT_MAX,
  182. 0x7f
  183. };
  184. int ChooseSbPort (DMXCARD * card) // RETURN: 0 = OK, -1 == ABORT
  185. {
  186. short field;
  187. short key;
  188. int rval = 0;
  189. SaveScreen();
  190. DrawPup(&sbport);
  191. // DEFAULT FIELD ========================================
  192. switch ( card->port )
  193. {
  194. default:
  195. field = SB_PORT_220;
  196. break;
  197. case 0x210:
  198. field = SB_PORT_210;
  199. break;
  200. case 0x220:
  201. field = SB_PORT_220;
  202. break;
  203. case 0x230:
  204. field = SB_PORT_230;
  205. break;
  206. case 0x240:
  207. field = SB_PORT_240;
  208. break;
  209. case 0x250:
  210. field = SB_PORT_250;
  211. break;
  212. case 0x260:
  213. field = SB_PORT_260;
  214. break;
  215. case 0x280:
  216. field = SB_PORT_280;
  217. break;
  218. }
  219. sbportmenu.startitem = field;
  220. while(1)
  221. {
  222. SetupMenu(&sbportmenu);
  223. field = GetMenuInput();
  224. key = menukey;
  225. switch ( key )
  226. {
  227. case KEY_ESC:
  228. rval = -1;
  229. goto func_exit;
  230. case KEY_ENTER:
  231. case KEY_F10:
  232. switch ( field )
  233. {
  234. case SB_PORT_210:
  235. card->port = 0x210;
  236. goto func_exit;
  237. case SB_PORT_220:
  238. card->port = 0x220;
  239. goto func_exit;
  240. case SB_PORT_230:
  241. card->port = 0x230;
  242. goto func_exit;
  243. case SB_PORT_240:
  244. card->port = 0x240;
  245. goto func_exit;
  246. case SB_PORT_250:
  247. card->port = 0x250;
  248. goto func_exit;
  249. case SB_PORT_260:
  250. card->port = 0x260;
  251. goto func_exit;
  252. case SB_PORT_280:
  253. card->port = 0x280;
  254. goto func_exit;
  255. default:
  256. break;
  257. }
  258. break;
  259. }
  260. }
  261. func_exit:
  262. RestoreScreen();
  263. return ( rval );
  264. }
  265. //
  266. // Menu for choosing Music Card
  267. //
  268. enum
  269. {
  270. MCARD_GMIDI,
  271. MCARD_SBAWE32,
  272. MCARD_CANVAS,
  273. MCARD_WAVE,
  274. MCARD_GUS,
  275. MCARD_PAS,
  276. MCARD_SB,
  277. MCARD_ADLIB,
  278. MCARD_NONE,
  279. MCARD_MAX
  280. };
  281. item_t mcarditems[]=
  282. {
  283. {MCARD_GMIDI, 26,8,28, -1,-1},
  284. {MCARD_SBAWE32,26,9,28, -1,-1},
  285. {MCARD_CANVAS, 26,10,28, -1,-1},
  286. {MCARD_WAVE, 26,11,28, -1,-1},
  287. {MCARD_GUS, 26,12,28, -1,-1},
  288. {MCARD_PAS, 26,13,28, -1,-1},
  289. {MCARD_SB, 26,14,28, -1,-1},
  290. {MCARD_ADLIB, 26,15,28, -1,-1},
  291. {MCARD_NONE, 26,16,28, -1,-1}
  292. };
  293. menu_t mcardmenu =
  294. {
  295. &mcarditems[0],
  296. MCARD_NONE,
  297. MCARD_MAX,
  298. 0x7f
  299. };
  300. int ChooseMusicCard (void) // RETURN: 0 = OK, -1 == ABORT
  301. {
  302. short key;
  303. short field;
  304. int rval = 0;
  305. switch ( newc.m.card )
  306. {
  307. default:
  308. case M_NONE:
  309. field = MCARD_NONE;
  310. break;
  311. case M_ADLIB:
  312. field = MCARD_ADLIB;
  313. break;
  314. case M_PAS:
  315. field = MCARD_PAS;
  316. break;
  317. case M_GUS:
  318. field = MCARD_GUS;
  319. break;
  320. case M_SB:
  321. field = MCARD_SB;
  322. break;
  323. case M_WAVE:
  324. field = MCARD_WAVE;
  325. break;
  326. case M_CANVAS:
  327. field = MCARD_CANVAS;
  328. break;
  329. case M_SBAWE32:
  330. field = MCARD_SBAWE32;
  331. break;
  332. case M_GMIDI:
  333. field = MCARD_GMIDI;
  334. break;
  335. }
  336. mcardmenu.startitem = field;
  337. SaveScreen();
  338. DrawPup(&mcard);
  339. while(1)
  340. {
  341. SetupMenu(&mcardmenu);
  342. field = GetMenuInput();
  343. key = menukey;
  344. switch ( key )
  345. {
  346. case KEY_ESC:
  347. rval = -1;
  348. goto func_exit;
  349. case KEY_ENTER:
  350. case KEY_F10:
  351. switch ( field )
  352. {
  353. case MCARD_SBAWE32:
  354. newc.m.card = M_SBAWE32;
  355. newc.m.port = -1;
  356. newc.m.irq = -1;
  357. newc.m.dma = -1;
  358. goto func_exit;
  359. case MCARD_GMIDI:
  360. newc.m.card = M_GMIDI;
  361. newc.m.port = -1;
  362. newc.m.irq = -1;
  363. newc.m.dma = -1;
  364. goto func_exit;
  365. case MCARD_CANVAS:
  366. newc.m.card = M_CANVAS;
  367. newc.m.port = -1;
  368. newc.m.irq = -1;
  369. newc.m.dma = -1;
  370. goto func_exit;
  371. case MCARD_WAVE:
  372. newc.m.card = M_WAVE;
  373. newc.m.port = -1;
  374. newc.m.irq = -1;
  375. newc.m.dma = -1;
  376. goto func_exit;
  377. case MCARD_SB:
  378. newc.m.card = M_SB;
  379. goto func_exit;
  380. case MCARD_PAS:
  381. newc.m.card = M_PAS;
  382. newc.m.midiport = -1;
  383. goto func_exit;
  384. case MCARD_GUS:
  385. newc.m.card = M_GUS;
  386. newc.m.midiport = -1;
  387. goto func_exit;
  388. case MCARD_ADLIB:
  389. newc.m.card = M_ADLIB;
  390. newc.m.port = -1;
  391. newc.m.midiport = -1;
  392. newc.m.irq = -1;
  393. newc.m.dma = -1;
  394. goto func_exit;
  395. case MCARD_NONE:
  396. newc.m.card = M_NONE;
  397. newc.m.port = -1;
  398. newc.m.midiport = -1;
  399. newc.m.irq = -1;
  400. newc.m.dma = -1;
  401. goto func_exit;
  402. default:
  403. break;
  404. }
  405. break;
  406. }
  407. }
  408. func_exit:
  409. RestoreScreen();
  410. return ( rval );
  411. }
  412. //
  413. // Choose Music Card menu
  414. //
  415. int SetupMusic (void)
  416. {
  417. if ( ChooseMusicCard() == -1 ) return ( -1 );
  418. DrawCurrentConfig();
  419. switch ( newc.m.card )
  420. {
  421. default:
  422. savemusic = FALSE;
  423. break;
  424. case M_NONE:
  425. savemusic = TRUE;
  426. break;
  427. case M_ADLIB:
  428. savemusic = TRUE;
  429. break;
  430. case M_PAS:
  431. case M_GUS:
  432. savemusic = TRUE;
  433. break;
  434. case M_SB:
  435. if ( ChooseSbPort( &newc.m ) == -1 ) return ( -1 );
  436. savemusic = TRUE;
  437. break;
  438. case M_WAVE:
  439. if ( ChooseMidiPort( &newc.m ) == -1 ) return ( -1 );
  440. savemusic = TRUE;
  441. break;
  442. case M_SBAWE32:
  443. case M_CANVAS:
  444. newc.m.midiport = 0x330;
  445. if ( ChooseMidiPort( &newc.m ) == -1 ) return ( -1 );
  446. savemusic = TRUE;
  447. break;
  448. case M_GMIDI:
  449. if ( ChooseMidiPort( &newc.m ) == -1 ) return ( -1 );
  450. savemusic = TRUE;
  451. break;
  452. }
  453. return 0;
  454. }