Main Page | Data Structures | Directories | File List | Data Fields | Globals | Related Pages

opencbm.h

Go to the documentation of this file.
00001 /*
00002  *  This program is free software; you can redistribute it and/or
00003  *  modify it under the terms of the GNU General Public License
00004  *  as published by the Free Software Foundation; either version
00005  *  2 of the License, or (at your option) any later version.
00006  *
00007  *  Copyright 1999-2005 Michael Klein <michael(dot)klein(at)puffin(dot)lb(dot)shuttle(dot)de>
00008  *  Copyright 2001-2005 Spiro Trikaliotis
00009  */
00010 
00022 #ifndef OPENCBM_H
00023 #define OPENCBM_H
00024 
00025 #ifdef __cplusplus
00026 extern "C" {
00027 #endif
00028 
00029 #include <sys/types.h>
00030 
00031 #ifdef WIN32
00032   /* we have windows */
00033 
00034 #include <windows.h>
00035 
00036 #ifdef DEFINE_ULONG_PTR
00037 #define ULONG_PTR ULONG
00038 #endif /* #ifdef DEFINE_ULONG_PTR */
00039 
00040 
00041 # if defined DLL
00042 #  define EXTERN __declspec(dllexport) 
00043 # else
00044 #  define EXTERN __declspec(dllimport) 
00045 # endif
00046 
00047 
00048 #define CBMAPIDECL __cdecl 
00049 # define __u_char unsigned char 
00050 # define CBM_FILE HANDLE 
00051 # define CBM_FILE_INVALID INVALID_HANDLE_VALUE
00052 
00053 #elif defined(__MSDOS__)
00054 
00055   /* we have MS-DOS */
00056 
00057 #include <stdlib.h>
00058                                                          
00059 # define EXTERN extern 
00060 # define CBMAPIDECL 
00061 # define WINAPI 
00062 # define CBM_FILE int 
00063 # define CBM_FILE_INVALID ((CBM_FILE)-1)
00064 # define __u_char unsigned char 
00066 extern int vdd_init(void);
00067 extern void vdd_uninit(void);
00068 extern int vdd_install_iohook(CBM_FILE f, int IoBaseAddress, int CableType);
00069 extern int vdd_uninstall_iohook(CBM_FILE f);
00070 extern void vdd_usleep(CBM_FILE f, unsigned int howlong);
00071 #else
00072 
00073   /* we have linux */
00074 
00075 # define EXTERN extern 
00076 # define CBMAPIDECL 
00077 # define WINAPI 
00078 # define CBM_FILE int 
00079 # define CBM_FILE_INVALID ((CBM_FILE)-1)
00080 
00081 #endif
00082 
00083 /* specifiers for the lines */
00084 #define IEC_DATA   0x01 
00085 #define IEC_CLOCK  0x02 
00086 #define IEC_ATN    0x04 
00087 #define IEC_RESET  0x08 
00090 enum cbm_device_type_e 
00091 {
00092     cbm_dt_unknown = -1, 
00093     cbm_dt_cbm1541,      
00094     cbm_dt_cbm1570,      
00095     cbm_dt_cbm1571,      
00096     cbm_dt_cbm1581       
00097 };
00098 
00100 enum cbm_cable_type_e
00101 {
00102     cbm_ct_unknown = -1, 
00103     cbm_ct_none,         
00104     cbm_ct_xp1541        
00105 };
00106 
00108 EXTERN int CBMAPIDECL cbm_driver_open(CBM_FILE *f, int port);
00109 EXTERN void CBMAPIDECL cbm_driver_close(CBM_FILE f);
00110 EXTERN void CBMAPIDECL cbm_lock(CBM_FILE f);
00111 EXTERN void CBMAPIDECL cbm_unlock(CBM_FILE f);
00112 
00114 EXTERN const char * CBMAPIDECL cbm_get_driver_name(int port);
00115 
00116 EXTERN int CBMAPIDECL cbm_listen(CBM_FILE f, __u_char dev, __u_char secadr);
00117 EXTERN int CBMAPIDECL cbm_talk(CBM_FILE f, __u_char dev, __u_char secadr);
00118 
00119 EXTERN int CBMAPIDECL cbm_open(CBM_FILE f, __u_char dev, __u_char secadr, const void *fname, size_t len);
00120 EXTERN int CBMAPIDECL cbm_close(CBM_FILE f, __u_char dev, __u_char secadr);
00121 
00122 EXTERN int CBMAPIDECL cbm_raw_read(CBM_FILE f, void *buf, size_t size);
00123 EXTERN int CBMAPIDECL cbm_raw_write(CBM_FILE f, const void *buf, size_t size);
00124 
00125 EXTERN int CBMAPIDECL cbm_unlisten(CBM_FILE f);
00126 EXTERN int CBMAPIDECL cbm_untalk(CBM_FILE f);
00127 
00128 EXTERN int CBMAPIDECL cbm_get_eoi(CBM_FILE f);
00129 EXTERN int CBMAPIDECL cbm_clear_eoi(CBM_FILE f);
00130 
00131 EXTERN int CBMAPIDECL cbm_reset(CBM_FILE f);
00132 
00133 EXTERN __u_char CBMAPIDECL cbm_pp_read(CBM_FILE f);
00134 EXTERN void CBMAPIDECL cbm_pp_write(CBM_FILE f, __u_char c);
00135 
00136 EXTERN int CBMAPIDECL cbm_iec_poll(CBM_FILE f);
00137 EXTERN int CBMAPIDECL cbm_iec_get(CBM_FILE f, int line);
00138 EXTERN void CBMAPIDECL cbm_iec_set(CBM_FILE f, int line);
00139 EXTERN void CBMAPIDECL cbm_iec_release(CBM_FILE f, int line);
00140 EXTERN void CBMAPIDECL cbm_iec_setrelease(CBM_FILE f, int set, int release);
00141 EXTERN int CBMAPIDECL cbm_iec_wait(CBM_FILE f, int line, int state);
00142 
00143 EXTERN int CBMAPIDECL cbm_upload(CBM_FILE f, __u_char dev, int adr, const void *prog, size_t size);
00144 
00145 EXTERN int CBMAPIDECL cbm_device_status(CBM_FILE f, __u_char dev, void *buf, size_t bufsize);
00146 EXTERN int CBMAPIDECL cbm_exec_command(CBM_FILE f, __u_char dev, const void *cmd, size_t len);
00147 
00148 EXTERN int CBMAPIDECL cbm_identify(CBM_FILE f, __u_char drv,
00149                                    enum cbm_device_type_e *t,
00150                                    const char **type_str);
00151 
00152 EXTERN int CBMAPIDECL cbm_identify_xp1541(CBM_FILE HandleDevice,
00153                                           __u_char DeviceAddress,
00154                                           enum cbm_device_type_e *CbmDeviceType,
00155                                           enum cbm_cable_type_e *CableType);
00156 
00157 
00158 EXTERN char CBMAPIDECL cbm_petscii2ascii_c(char character);
00159 EXTERN char CBMAPIDECL cbm_ascii2petscii_c(char character);
00160 EXTERN char * CBMAPIDECL cbm_petscii2ascii(char *str);
00161 EXTERN char * CBMAPIDECL cbm_ascii2petscii(char *str);
00162 
00163 #if DBG
00164 EXTERN int CBMAPIDECL cbm_get_debugging_buffer(CBM_FILE HandleDevice, char *buffer, size_t len);
00165 #endif
00166 
00167 /* functions specifically for parallel burst */
00168 
00169 EXTERN __u_char CBMAPIDECL cbm_parallel_burst_read(CBM_FILE f);
00170 EXTERN void CBMAPIDECL cbm_parallel_burst_write(CBM_FILE f, __u_char c);
00171 EXTERN int CBMAPIDECL  cbm_parallel_burst_read_track(CBM_FILE f, __u_char *buffer, unsigned int length);
00172 EXTERN int CBMAPIDECL cbm_parallel_burst_write_track(CBM_FILE f, __u_char *buffer, unsigned int length);
00173 
00174 /* parallel burst functions end */
00175 
00176 #ifdef __cplusplus
00177 }
00178 #endif
00179 
00180 #endif /* OPENCBM_H */

Generated on Sun Apr 30 18:45:55 2006 for opencbm by  doxygen 1.4.2