home *** CD-ROM | disk | FTP | other *** search
/ Audio 4.94 - Over 11,000 Files / audio-11000.iso / amiga / progrmr / exp_src / proto.h < prev    next >
C/C++ Source or Header  |  1991-05-16  |  7KB  |  347 lines

  1. /* proto.h */
  2.  
  3. /* prototypes for external functions
  4.  */
  5.  
  6. /* $Author: Espie $
  7.  * $Date: 91/05/16 15:06:02 $
  8.  * $Revision: 1.41 $
  9.  * $Log:    proto.h,v $
  10.  * Revision 1.41  91/05/16  15:06:02  Espie
  11.  * *** empty log message ***
  12.  * 
  13.  * Revision 1.40  91/05/12  19:54:50  Espie
  14.  * Moved private protos to lprotos, minor changes.
  15.  * 
  16.  * Revision 1.39  91/05/12  15:58:59  Espie
  17.  * *** empty log message ***
  18.  * 
  19.  * Revision 1.38  91/05/11  14:58:21  Espie
  20.  * *** empty log message ***
  21.  * 
  22.  * Revision 1.37  91/05/09  17:37:48  Espie
  23.  * Support for parameters and appwindow.
  24.  * 
  25.  * Revision 1.36  91/05/08  15:52:48  Espie
  26.  * New prototypes for files.c, and set_volume.
  27.  * 
  28.  * Revision 1.35  91/05/07  12:13:01  Espie
  29.  * *** empty log message ***
  30.  * 
  31.  * Revision 1.34  91/05/06  23:38:15  Espie
  32.  * Cleaned up some prototypes, libraries.c.
  33.  * 
  34.  * Revision 1.33  91/05/06  15:14:37  Espie
  35.  * *** empty log message ***
  36.  * 
  37.  * Revision 1.32  91/05/05  19:06:36  Espie
  38.  * *** empty log message ***
  39.  * 
  40.  * Revision 1.31  91/05/05  15:39:03  Espie
  41.  * Changed all audio_hard prototypes...
  42.  * 
  43.  * Revision 1.30  91/05/05  04:00:40  Espie
  44.  * *** empty log message ***
  45.  * 
  46.  * Revision 1.29  91/05/03  02:48:46  Espie
  47.  * *** empty log message ***
  48.  * 
  49.  * Revision 1.28  91/05/02  23:32:20  Espie
  50.  * *** empty log message ***
  51.  * 
  52.  * Revision 1.27  91/05/02  11:22:09  Espie
  53.  * New prototypes, still tidying up...
  54.  * 
  55.  * Revision 1.26  91/05/02  01:32:49  Espie
  56.  * New prototypes almost everywhere.
  57.  * 
  58.  * Revision 1.25  91/04/30  16:50:39  Espie
  59.  * Some minor interface details.
  60.  * 
  61.  * Revision 1.24  91/04/30  00:35:24  Espie
  62.  * Stable version III.
  63.  * 
  64.  * Revision 1.23  91/04/30  00:24:03  Espie
  65.  * Changed proto for unload_song().
  66.  * 
  67.  * Revision 1.22  91/04/29  23:54:21  Espie
  68.  * Prototypes for the file requester functions.
  69.  * 
  70.  * Revision 1.21  91/04/29  15:06:27  Espie
  71.  * Cleaned up interface for audio_hard/interrupt.c.
  72.  * 
  73.  * Revision 1.20  91/04/29  13:02:40  Espie
  74.  * Cleaned up interface to the audio software.
  75.  * 
  76.  * Revision 1.19  91/04/29  03:53:25  Espie
  77.  * New prototypes for inter.c and audio_soft.c
  78.  * 
  79.  * Revision 1.18  91/04/29  02:22:32  Espie
  80.  * New prototypes for the blossoming interface.
  81.  * 
  82.  * Revision 1.17  91/04/28  22:53:55  Espie
  83.  * New: init_periods().
  84.  * 
  85.  * Revision 1.16  91/04/27  20:49:18  Espie
  86.  * Change in set_tempo.
  87.  * 
  88.  * Revision 1.15  91/04/27  16:46:14  Espie
  89.  * New protos for enabling/disabling interrupts.
  90.  * 
  91.  * Revision 1.14  91/04/27  03:59:48  Espie
  92.  * *** empty log message ***
  93.  * 
  94.  * Revision 1.13  91/04/27  00:24:07  Espie
  95.  * Nothing important.
  96.  * 
  97.  * Revision 1.12  91/04/26  16:31:12  Espie
  98.  * New prototypes for turn_on_dma()/audio_soft() functions.
  99.  * 
  100.  * Revision 1.11  91/04/24  15:27:34  Espie
  101.  * New prototypes for audio_soft.
  102.  * 
  103.  * Revision 1.10  91/04/23  21:30:50  Espie
  104.  * New prototypes for new functions.
  105.  * 
  106.  * Revision 1.9  91/04/21  12:11:54  Espie
  107.  * Stable version, known as bunch II.
  108.  * Also features ``right'' log description.
  109.  * 
  110.  * Revision 1.8  91/04/21  11:16:31  Espie
  111.  * Prototypes for audio.c have been cleaned up.
  112.  *
  113.  * Revision 1.7  91/04/20  18:12:49  Espie
  114.  *
  115.  * Revision 1.6  91/04/19  13:20:24  Espie
  116.  *
  117.  * Revision 1.5  91/04/19  02:18:27  Espie
  118.  *
  119.  * Revision 1.4  91/04/18  20:23:17  Espie
  120.  * no big change in this file.
  121.  *
  122.  * Revision 1.3  91/04/18  02:26:07  Espie
  123.  * bunch I.
  124.  *
  125.  * Revision 1.2  91/04/18  02:18:42  Espie
  126.  * New prototypes (temporary) for audio/player.
  127.  *
  128.  * Revision 1.1  91/04/17  18:52:20  Espie
  129.  * Initial revision
  130.  *
  131.  */
  132.  
  133. /* my personal quirks */
  134.  
  135. #define FORWARD
  136. #define LOCAL static
  137. #define XT extern
  138. #define forever while(TRUE)
  139.  
  140. /* necessary... */
  141.  
  142. #define exit _exit
  143. #ifdef NDEBUG
  144. #define mayPanic(message) Panic(NULL)
  145. #else
  146. #define mayPanic(message) Panic(message)
  147. #endif
  148.  
  149. /***
  150.  *
  151.  *    audio_hard.c
  152.  *
  153.  ***/
  154.  
  155. XT void reset_audio(void);
  156.  
  157. XT void save_filter(void);
  158. XT void restore_filter(void);
  159.  
  160. /***
  161.  *
  162.  * audio_soft.c
  163.  *
  164.  ***/
  165.  
  166. /* obtain_audio(pri) set up structures for accessing the audio hardware.
  167.  * start_player() starts the player routine if possible.
  168.  * stop_player() stops the player routine when appropriate.
  169.  * 
  170.  */
  171.      
  172. XT ULONG obtain_audio(int priority);
  173.  
  174. XT void handle_audio(void);
  175. XT void start_player(void);
  176. XT void stop_player(void);
  177. XT void song_available(BOOL really);
  178.  
  179. /***
  180.  *
  181.  *    interrupt.c
  182.  *
  183.  ***/
  184.  
  185.  
  186. XT struct pub_play *obtain_player(void);
  187. XT void stop_timer(void);
  188. XT void start_timer(void);
  189.  
  190. XT void set_tempo(int tempo, int effect);
  191. XT void set_mode(int mode);
  192. XT void setup_song(struct song *s); 
  193. XT void launch_play(int patt);
  194.  
  195.  
  196. /***
  197.  *
  198.  *    load.c
  199.  *
  200.  ***/
  201.  
  202. XT struct song *load_song(char *arg);
  203. XT int load_error(void);
  204.  
  205. #define OUT_OF_MEMORY (-1)
  206. #define OUT_OF_CHIP (-2)
  207. #define MISSING_SAMPLE 1
  208. #define UNSUPPORTED 2
  209. #define FORMAT_ERROR 3
  210. #define NOTE_PROBLEM 4
  211. #define NOT_A_MOD 5
  212.  
  213. /* always returns NULL, but useful that way
  214.  */
  215. XT struct song *unload_song(struct song *s);
  216.  
  217. /***
  218.  *
  219.  *    play.c
  220.  *
  221.  ***/
  222.  
  223. #ifndef LATTICE
  224. #define __interrupt
  225. #define __asm
  226. #define __a1
  227. #endif
  228.  
  229. XT void __interrupt __asm do_play(register __a1 struct play *p);
  230.  
  231. XT void init_player(struct play *play);
  232.  
  233. /***
  234.  *
  235.  * crit.c
  236.  *
  237.  ***/
  238.  
  239. XT int nobreak(void);
  240.  
  241. /***
  242.  *
  243.  *    periods.c
  244.  *
  245.  ***/
  246.  
  247. XT void init_periods(UWORD **period_table);
  248. XT UBYTE find_note(UWORD period, UBYTE fine);
  249.  
  250. /* returns -1 if there is a problem */
  251.  
  252. XT BYTE normalize_finetune(UBYTE finetune);
  253.  
  254. /***
  255.  *
  256.  * interface.c
  257.  *
  258.  ***/
  259.  
  260. XT struct Window *init_interface(int xoffset, int yoffset);
  261. XT void message_interface(struct IntuiMessage *msg);
  262.  
  263. XT void handle_interface(void);
  264. XT BOOL did_abort(void);
  265. XT void clear_abort(void);
  266.  
  267. XT void update_title(int pos, int len, char *title);
  268. XT void new_title(int pos, int len, char *title);
  269. XT void no_title(void);
  270. XT void reset_tempo(void);
  271.  
  272. XT void temporary_title(char *message);
  273. XT void restore_title(void);
  274.  
  275. XT void pref_volume(int volume);
  276. XT void pref_speed(int speed);
  277. XT void pref_mode(int mode);
  278.  
  279. /***
  280.  *
  281.  *    events.c 
  282.  *
  283.  ***/
  284.  
  285. XT struct pub_play *init_events(int pri, int xoffset, int yoffset);
  286.  
  287. XT void check_abort(void);
  288. XT void wait_abort(void);
  289.  
  290. /* dump.c */
  291.  
  292.  
  293. XT void try_change_song(void);
  294. XT void add_some_songs(struct AppMessage *msg);
  295. XT void handle_player(void);
  296. XT BOOL safe_load_song(char *arg);
  297. XT BOOL safe_unload_song(void);
  298.  
  299. /* requester.c */
  300.  
  301. XT char *get_name(char *banner);
  302. XT BOOL init_requester(struct Window *w);
  303. XT BOOL is_info(char *name);
  304. /* libraries.c */
  305.  
  306. #define ARP 0
  307. #define OS_20 1
  308. #define NO_REQ 3
  309.  
  310. XT void open_libraries(void);
  311. XT BOOL running_20(void);
  312. XT int requester_type(void);
  313. XT BOOL icon_around(void);
  314. XT BOOL wb_around(void);
  315.  
  316. XT struct IntuitionBase *IntuitionBase;
  317. XT struct GfxBase *GfxBase;
  318. XT struct Library *AslBase, *ArpBase, *IconBase;
  319.  
  320. #ifdef SIZE_GADGET
  321. XT struct Library *LayersBase;
  322. #endif
  323.  
  324. /***
  325.  *
  326.  *        files.c
  327.  *
  328.  ***/
  329.  
  330. XT char *next_song(struct iterator **head, BOOL req);
  331. XT struct iterator *setup_arguments(int argc, char **argv);
  332. XT int do_get_arg(char *tooltype, int def);
  333. XT int do_map_arg(char *tooltype, char **names, int def);
  334. XT int get_arg(char **tools, char *tooltype, int def);
  335. XT int map_arg(char **tools, char *tooltype, char **names, int def);
  336. XT char **grab_tooltypes(struct iterator *it, char *arg);
  337. XT void insert_args(struct iterator **head, struct AppMessage *msg);
  338.  
  339. /***
  340.  *
  341.  *        workbench.c
  342.  *
  343.  ***/
  344.  
  345. XT ULONG init_appwindow(struct Window *w);
  346. XT void handle_app(void);
  347.