00001
00002
00003
00004
00005
00006
00007
00008
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
00033
00034 #include <windows.h>
00035
00036 #ifdef DEFINE_ULONG_PTR
00037 #define ULONG_PTR ULONG
00038 #endif
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
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
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
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
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
00175
00176 #ifdef __cplusplus
00177 }
00178 #endif
00179
00180 #endif