OpenCBM
Data Structures | Macros | Typedefs | Functions
cbm.c File Reference

Shared library / DLL for accessing the driver. More...

#include "debug.h"
#include <stdlib.h>
#include <string.h>
#include "libmisc.h"
#include "opencbm.h"
#include "archlib.h"
#include "opencbm-plugin.h"
#include "getpluginaddress.h"
#include "configuration.h"
#include "arch.h"

Go to the source code of this file.

Data Structures

struct  plugin_information_s
 @@@ More...
 
struct  plugin_read_pointer
 
struct  plugin_read_pointer_group
 

Macros

#define DBG_USERMODE
 
#define DBG_PROGNAME   "OPENCBM.DLL"
 
#define DLL
 mark: We are building the DLL */
 
#define OFFSETOF(_type, _element)   ((UINT_PTR) (void *) &((_type *)0)->_element)
 
#define GETELEMENT(_type, _structpointer, _elementoffset)   ((_type *)(((char*)(_structpointer)) + (_elementoffset)))
 
#define PLUGIN_POINTER_DEF(_xxx)   { OFFSETOF(plugin_information_t, Plugin._xxx), #_xxx }
 
#define PLUGIN_POINTER_GET(_what, _element)   GEELEMENT(void, _what, _element)
 
#define PLUGIN_POINTER_END()   { 0, NULL }
 

Typedefs

typedef struct plugin_information_s plugin_information_t
 @@@ More...
 

Functions

int plugin_is_active (opencbm_configuration_handle Handle, const char PluginName[])
 @@@ More...
 
int plugin_set_active (const char PluginName[])
 @@@ More...
 
int plugin_set_inactive (const char PluginName[])
 @@@ More...
 
const char *CBMAPIDECL cbm_get_driver_name_ex (char *Adapter)
 Get the name of the driver for a specific parallel port, extended version. More...
 
const char *CBMAPIDECL cbm_get_driver_name (int PortNumber)
 Get the name of the driver for a specific parallel port. More...
 
int CBMAPIDECL cbm_driver_open_ex (CBM_FILE *HandleDevice, char *Adapter)
 Opens the driver, extended version. More...
 
int CBMAPIDECL cbm_driver_open (CBM_FILE *HandleDevice, int PortNumber)
 Opens the driver. More...
 
void CBMAPIDECL cbm_driver_close (CBM_FILE HandleDevice)
 Closes the driver. More...
 
void CBMAPIDECL cbm_lock (CBM_FILE HandleDevice)
 Lock the parallel port for the driver. More...
 
void CBMAPIDECL cbm_unlock (CBM_FILE HandleDevice)
 Unlock the parallel port for the driver. More...
 
int CBMAPIDECL cbm_raw_write (CBM_FILE HandleDevice, const void *Buffer, size_t Count)
 Write data to the IEC serial bus. More...
 
int CBMAPIDECL cbm_raw_read (CBM_FILE HandleDevice, void *Buffer, size_t Count)
 Read data from the IEC serial bus. More...
 
int CBMAPIDECL cbm_listen (CBM_FILE HandleDevice, unsigned char DeviceAddress, unsigned char SecondaryAddress)
 Send a LISTEN on the IEC serial bus. More...
 
int CBMAPIDECL cbm_talk (CBM_FILE HandleDevice, unsigned char DeviceAddress, unsigned char SecondaryAddress)
 Send a TALK on the IEC serial bus. More...
 
int CBMAPIDECL cbm_open (CBM_FILE HandleDevice, unsigned char DeviceAddress, unsigned char SecondaryAddress, const void *Filename, size_t FilenameLength)
 Open a file on the IEC serial bus. More...
 
int CBMAPIDECL cbm_close (CBM_FILE HandleDevice, unsigned char DeviceAddress, unsigned char SecondaryAddress)
 Close a file on the IEC serial bus. More...
 
int CBMAPIDECL cbm_unlisten (CBM_FILE HandleDevice)
 Send an UNLISTEN on the IEC serial bus. More...
 
int CBMAPIDECL cbm_untalk (CBM_FILE HandleDevice)
 Send an UNTALK on the IEC serial bus. More...
 
int CBMAPIDECL cbm_get_eoi (CBM_FILE HandleDevice)
 Get EOI flag after bus read. More...
 
int CBMAPIDECL cbm_clear_eoi (CBM_FILE HandleDevice)
 Reset the EOI flag. More...
 
int CBMAPIDECL cbm_reset (CBM_FILE HandleDevice)
 RESET all devices. More...
 
unsigned char CBMAPIDECL cbm_pp_read (CBM_FILE HandleDevice)
 Read a byte from a XP1541/XP1571 cable. More...
 
void CBMAPIDECL cbm_pp_write (CBM_FILE HandleDevice, unsigned char Byte)
 Write a byte to a XP1541/XP1571 cable. More...
 
int CBMAPIDECL cbm_iec_poll (CBM_FILE HandleDevice)
 Read status of all bus lines. More...
 
void CBMAPIDECL cbm_iec_set (CBM_FILE HandleDevice, int Line)
 Activate a line on the IEC serial bus. More...
 
void CBMAPIDECL cbm_iec_release (CBM_FILE HandleDevice, int Line)
 Deactivate a line on the IEC serial bus. More...
 
void CBMAPIDECL cbm_iec_setrelease (CBM_FILE HandleDevice, int Set, int Release)
 Activate and deactive a line on the IEC serial bus. More...
 
int CBMAPIDECL cbm_iec_wait (CBM_FILE HandleDevice, int Line, int State)
 Wait for a line to have a specific state. More...
 
int CBMAPIDECL cbm_iec_get (CBM_FILE HandleDevice, int Line)
 Get the (logical) state of a line on the IEC serial bus. More...
 
int CBMAPIDECL cbm_device_status (CBM_FILE HandleDevice, unsigned char DeviceAddress, void *Buffer, size_t BufferLength)
 Read the drive status from a floppy. More...
 
int CBMAPIDECL cbm_exec_command (CBM_FILE HandleDevice, unsigned char DeviceAddress, const void *Command, size_t Size)
 Executes a command in the floppy drive. More...
 
unsigned char CBMAPIDECL cbm_parallel_burst_read (CBM_FILE HandleDevice)
 PARBURST: Read from the parallel port. More...
 
void CBMAPIDECL cbm_parallel_burst_write (CBM_FILE HandleDevice, unsigned char Value)
 PARBURST: Write to the parallel port. More...
 
int CBMAPIDECL cbm_parallel_burst_read_n (CBM_FILE HandleDevice, unsigned char *Buffer, unsigned int Length)
 
int CBMAPIDECL cbm_parallel_burst_write_n (CBM_FILE HandleDevice, unsigned char *Buffer, unsigned int Length)
 
int CBMAPIDECL cbm_parallel_burst_read_track (CBM_FILE HandleDevice, unsigned char *Buffer, unsigned int Length)
 PARBURST: Read a complete track. More...
 
int CBMAPIDECL cbm_parallel_burst_read_track_var (CBM_FILE HandleDevice, unsigned char *Buffer, unsigned int Length)
 PARBURST: Read a variable length track. More...
 
int CBMAPIDECL cbm_parallel_burst_write_track (CBM_FILE HandleDevice, unsigned char *Buffer, unsigned int Length)
 PARBURST: Write a complete track. More...
 
unsigned char CBMAPIDECL cbm_srq_burst_read (CBM_FILE HandleDevice)
 PARBURST: Read from the parallel port. More...
 
void CBMAPIDECL cbm_srq_burst_write (CBM_FILE HandleDevice, unsigned char Value)
 PARBURST: Write to the parallel port. More...
 
int CBMAPIDECL cbm_srq_burst_read_n (CBM_FILE HandleDevice, unsigned char *Buffer, unsigned int Length)
 
int CBMAPIDECL cbm_srq_burst_write_n (CBM_FILE HandleDevice, unsigned char *Buffer, unsigned int Length)
 
int CBMAPIDECL cbm_srq_burst_read_track (CBM_FILE HandleDevice, unsigned char *Buffer, unsigned int Length)
 PARBURST: Read a complete track. More...
 
int CBMAPIDECL cbm_srq_burst_write_track (CBM_FILE HandleDevice, unsigned char *Buffer, unsigned int Length)
 PARBURST: Write a complete track. More...
 
int CBMAPIDECL cbm_tap_prepare_capture (CBM_FILE HandleDevice, int *Status)
 TAPE: Prepare capture. More...
 
int CBMAPIDECL cbm_tap_prepare_write (CBM_FILE HandleDevice, int *Status)
 TAPE: Prepare write. More...
 
int CBMAPIDECL cbm_tap_get_sense (CBM_FILE HandleDevice, int *Status)
 TAPE: Get tape sense. More...
 
int CBMAPIDECL cbm_tap_wait_for_stop_sense (CBM_FILE HandleDevice, int *Status)
 TAPE: Wait for <STOP> sense. More...
 
int CBMAPIDECL cbm_tap_wait_for_play_sense (CBM_FILE HandleDevice, int *Status)
 TAPE: Wait for <PLAY> sense. More...
 
int CBMAPIDECL cbm_tap_motor_on (CBM_FILE HandleDevice, int *Status)
 TAPE: Motor on. More...
 
int CBMAPIDECL cbm_tap_motor_off (CBM_FILE HandleDevice, int *Status)
 TAPE: Motor off. More...
 
int CBMAPIDECL cbm_tap_start_capture (CBM_FILE HandleDevice, unsigned char *Buffer, unsigned int Buffer_Length, int *Status, int *BytesRead)
 TAPE: Start capture. More...
 
int CBMAPIDECL cbm_tap_start_write (CBM_FILE HandleDevice, unsigned char *Buffer, unsigned int Length, int *Status, int *BytesWritten)
 TAPE: Start write. More...
 
int CBMAPIDECL cbm_tap_get_ver (CBM_FILE HandleDevice, int *Status)
 TAPE: Return tape firmware version. More...
 
int CBMAPIDECL cbm_tap_break (CBM_FILE HandleDevice)
 
int CBMAPIDECL cbm_tap_download_config (CBM_FILE HandleDevice, unsigned char *Buffer, unsigned int Buffer_Length, int *Status, int *BytesRead)
 TAPE: Download configuration. More...
 
int CBMAPIDECL cbm_tap_upload_config (CBM_FILE HandleDevice, unsigned char *Buffer, unsigned int Length, int *Status, int *BytesWritten)
 TAPE: Upload configuration. More...
 
void *CBMAPIDECL cbm_get_plugin_function_address (const char *Functionname)
 Get the function pointer for a function in a plugin. More...
 
int CBMAPIDECL cbm_iec_dbg_read (CBM_FILE HandleDevice)
 Read a byte from the parallel port input register. More...
 
int CBMAPIDECL cbm_iec_dbg_write (CBM_FILE HandleDevice, unsigned char Value)
 Write a byte to the parallel port output register. More...
 

Detailed Description

Shared library / DLL for accessing the driver.



Author
Michael Klein, Spiro Trikaliotis

Definition in file cbm.c.

Macro Definition Documentation

#define DBG_PROGNAME   "OPENCBM.DLL"

The name of the executable

Definition at line 25 of file cbm.c.

#define DBG_USERMODE

Mark: We are in user-space (for debug.h)

Definition at line 22 of file cbm.c.

Typedef Documentation

@@@

Todo:
document

Definition at line 122 of file cbm.c.

Function Documentation

int CBMAPIDECL cbm_clear_eoi ( CBM_FILE  HandleDevice)

Reset the EOI flag.

This function resets the EOI ("End of Information") flag which might be still set after reading the IEC serial bus.

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
Returns
0 on success, != 0 means an error has occured.

If cbm_driver_open() did not succeed, it is illegal to call this function.

Definition at line 1180 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE_INT, opencbm_plugin_s::opencbm_plugin_clear_eoi, and plugin_information_s::Plugin.

Referenced by vdd_clear_eoi().

int CBMAPIDECL cbm_close ( CBM_FILE  HandleDevice,
unsigned char  DeviceAddress,
unsigned char  SecondaryAddress 
)

Close a file on the IEC serial bus.

This function closes a file on the IEC serial bus.

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
DeviceAddressThe address of the device on the IEC serial bus. This is known as primary address, too.
SecondaryAddressThe secondary address for the device on the IEC serial bus.
Returns
0 on success, else failure

If cbm_driver_open() did not succeed, it is illegal to call this function.

Definition at line 1072 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE_INT, opencbm_plugin_s::opencbm_plugin_close, and plugin_information_s::Plugin.

Referenced by vdd_close().

int CBMAPIDECL cbm_device_status ( CBM_FILE  HandleDevice,
unsigned char  DeviceAddress,
void *  Buffer,
size_t  BufferLength 
)

Read the drive status from a floppy.

This function reads the drive status of a connected floppy drive.

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
DeviceAddressThe address of the device on the IEC serial bus. This is known as primary address, too.
BufferPointer to a buffer which will hold the drive's status after successfull calling,
BufferLengthThe length of the buffer pointed to by Buffer in bytes.
Returns
Returns the int representation of the drive status, that is, the numerical value of the first return value from the drive. This is the error number.

This function will never write more than BufferLength bytes. Nevertheless, the buffer will always be terminated with a trailing zero.

If an error occurs, this function returns a "99, DRIVER ERROR,00,00\r" and the value 99.

If cbm_driver_open() did not succeed, it is illegal to call this function.

Definition at line 1525 of file cbm.c.

References cbm_raw_read(), cbm_talk(), cbm_untalk(), DBG_ASSERT, FUNC_ENTER, and FUNC_LEAVE_INT.

Referenced by vdd_device_status().

void CBMAPIDECL cbm_driver_close ( CBM_FILE  HandleDevice)

Closes the driver.

Closes the driver, which has be opened with cbm_driver_open() before.

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.

cbm_driver_close() should be called to balance a previous call to cbm_driver_open().

If cbm_driver_open() did not succeed, it is illegal to call cbm_driver_close().

Definition at line 768 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE, opencbm_plugin_s::opencbm_plugin_driver_close, and plugin_information_s::Plugin.

Referenced by vdd_cbmfile_closeall(), vdd_driver_close(), and vdd_driver_open().

int CBMAPIDECL cbm_driver_open ( CBM_FILE HandleDevice,
int  PortNumber 
)

Opens the driver.

This function Opens the driver.

Parameters
HandleDevicePointer to a CBM_FILE which will contain the file handle of the driver.
PortNumberThe port number of the driver to open. 0 means "default" driver, while values != 0 enumerate each driver.
Returns
==0: This function completed successfully !=0: otherwise

PortNumber is not allowed to exceed 10.

Note
Do not use this function. It is only available for compatibility reasons with older applications. Use cbm_driver_open_ex() instead!

cbm_driver_open() should be balanced with cbm_driver_close().

Definition at line 740 of file cbm.c.

References cbm_driver_open_ex(), FUNC_ENTER, and FUNC_LEAVE_INT.

Referenced by vdd_driver_open().

int CBMAPIDECL cbm_driver_open_ex ( CBM_FILE HandleDevice,
char *  Adapter 
)

Opens the driver, extended version.

This function Opens the driver.

Parameters
HandleDevicePointer to a CBM_FILE which will contain the file handle of the driver.
AdapterThe name of the adapter to be used. The format is given in the documentation for cbm_split_adapter_in_name_and_port().
Returns
==0: This function completed successfully !=0: otherwise
Remarks
cbm_driver_open_ex() should be balanced with cbm_driver_close().

Definition at line 683 of file cbm.c.

References cbmlibmisc_strfree(), DBG_PREFIX, DBG_PRINT, FUNC_ENTER, FUNC_LEAVE_INT, opencbm_plugin_s::opencbm_plugin_driver_open, and plugin_information_s::Plugin.

Referenced by cbm_driver_open().

int CBMAPIDECL cbm_exec_command ( CBM_FILE  HandleDevice,
unsigned char  DeviceAddress,
const void *  Command,
size_t  Size 
)

Executes a command in the floppy drive.

This function Executes a command in the connected floppy drive.

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
DeviceAddressThe address of the device on the IEC serial bus. This is known as primary address, too.
CommandPointer to a string which holds the command to be executed.
SizeThe length of the command in bytes. If zero, the Command has to be a null-terminated string.
Returns
0 on success.

If cbm_driver_open() did not succeed, it is illegal to call this function.

Definition at line 1599 of file cbm.c.

References cbm_listen(), cbm_raw_write(), cbm_unlisten(), FUNC_ENTER, and FUNC_LEAVE_INT.

Referenced by cbm_identify(), and vdd_exec_command().

const char* CBMAPIDECL cbm_get_driver_name ( int  PortNumber)

Get the name of the driver for a specific parallel port.

Get the name of the driver for a specific parallel port.

Parameters
PortNumberThe port number for the driver to open. 0 means "default" driver, while values != 0 enumerate each driver.
Returns
Returns a pointer to a null-terminated string containing the driver name, or NULL if an error occurred.
Bug:
PortNumber is not allowed to exceed 10.
Note
Do not use this function. It is only there for compatibility reasons with older applications. Use cbm_get_driver_name_ex() instead!

Definition at line 650 of file cbm.c.

References cbm_get_driver_name_ex(), FUNC_ENTER, and FUNC_LEAVE_STRING.

Referenced by vdd_get_driver_name().

const char* CBMAPIDECL cbm_get_driver_name_ex ( char *  Adapter)

Get the name of the driver for a specific parallel port, extended version.

Get the name of the driver for a specific parallel port.

Parameters
AdapterThe name of the adapter to be used. The format is given in the documentation for cbm_split_adapter_in_name_and_port().
Returns
Returns a pointer to a null-terminated string containing the driver name, or NULL if an error occurred.

Definition at line 583 of file cbm.c.

References cbmlibmisc_strdup(), cbmlibmisc_strfree(), DBG_PREFIX, DBG_PRINT, FUNC_ENTER, FUNC_LEAVE_STRING, opencbm_plugin_s::opencbm_plugin_get_driver_name, and plugin_information_s::Plugin.

Referenced by cbm_get_driver_name().

int CBMAPIDECL cbm_get_eoi ( CBM_FILE  HandleDevice)

Get EOI flag after bus read.

This function gets the EOI ("End of Information") flag after reading the IEC serial bus.

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
Returns
!= 0 if EOI was signalled, else 0.

If a previous read returned less than the specified number of bytes, there are two possible reasons: Either an error occurred on the IEC serial bus, or an EOI was signalled. To find out the cause, check with this function.

If cbm_driver_open() did not succeed, it is illegal to call this function.

Definition at line 1157 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE_INT, opencbm_plugin_s::opencbm_plugin_get_eoi, and plugin_information_s::Plugin.

Referenced by vdd_get_eoi().

void* CBMAPIDECL cbm_get_plugin_function_address ( const char *  Functionname)

Get the function pointer for a function in a plugin.

This function gets the function pointer for a function which resides in the plugin.

Parameters
FunctionnameThe name of the function of which to get the address
Returns
Pointer to the function if successfull; 0 if not.

If cbm_driver_open() did not succeed, it is illegal to call this function.

Definition at line 2449 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE_PTR, plugin_information_s::Library, and plugin_get_address().

int CBMAPIDECL cbm_iec_dbg_read ( CBM_FILE  HandleDevice)

Read a byte from the parallel port input register.

This function reads a byte from the parallel port input register. (STATUS_PORT). It is a helper function for debugging the cable (i.e., for the XCDETECT tool) only!

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
Returns
If the routine succeeds, it returns a non-negative value which corresponds to the data in the parallel port input register (status port).

If the routine fails, the return value is -1.

Remarks
Do not use this function in anything but a debugging aid tool like XCDETECT!

This functions masks some bits off. The bits that are not masked off are defined in PARALLEL_STATUS_PORT_MASK_VALUES.

Definition at line 2485 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE_INT, opencbm_plugin_s::opencbm_plugin_iec_dbg_read, and plugin_information_s::Plugin.

int CBMAPIDECL cbm_iec_dbg_write ( CBM_FILE  HandleDevice,
unsigned char  Value 
)

Write a byte to the parallel port output register.

This function writes a byte to the parallel port output register. (CONTROL_PORT). It is a helper function for debugging the cable (i.e., for the XCDETECT tool) only!

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
ValueThe value to set the control port to
Returns
If the routine succeeds, it returns 0.

If the routine fails, it returns -1.

Remarks
Do not use this function in anything but a debugging aid tool like XCDETECT!

After this function has been called, it is NOT safe to use the parallel port again unless you close the driver (cbm_driver_close()) and open it again (cbm_driver_open())!

This functions masks some bits off. That is, the bits not in the mask are not changed at all. The bits that are not masked off are defined in PARALLEL_CONTROL_PORT_MASK_VALUES.

Definition at line 2528 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE_INT, opencbm_plugin_s::opencbm_plugin_iec_dbg_write, and plugin_information_s::Plugin.

int CBMAPIDECL cbm_iec_get ( CBM_FILE  HandleDevice,
int  Line 
)

Get the (logical) state of a line on the IEC serial bus.

This function gets the (logical) state of a line on the IEC serial bus.

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
LineThe line to be tested. This must be exactly one of IEC_DATA, IEC_CLOCK, IEC_ATN, and IEC_RESET.
Returns
1 if the line is set, 0 if it is not

If cbm_driver_open() did not succeed, it is illegal to call this function.

Bug:
This function can't signal an error, thus, be careful!

Definition at line 1477 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE_INT, opencbm_plugin_s::opencbm_plugin_iec_poll, and plugin_information_s::Plugin.

Referenced by vdd_iec_get().

int CBMAPIDECL cbm_iec_poll ( CBM_FILE  HandleDevice)

Read status of all bus lines.

This function reads the state of all lines on the IEC serial bus.

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
Returns
The state of the lines. The result is an OR between the bit flags IEC_DATA, IEC_CLOCK, IEC_ATN, and IEC_RESET.

This function just reads the port. No handshaking is performed at all.

If cbm_driver_open() did not succeed, it is illegal to call this function.

Bug:
This function can't signal an error, thus, be careful!

Definition at line 1314 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE_INT, opencbm_plugin_s::opencbm_plugin_iec_poll, and plugin_information_s::Plugin.

Referenced by vdd_iec_poll().

void CBMAPIDECL cbm_iec_release ( CBM_FILE  HandleDevice,
int  Line 
)

Deactivate a line on the IEC serial bus.

This function deactivates (sets to 5V) a line on the IEC serial bus.

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
LineThe line to be deactivated. This must be exactly one of IEC_DATA, IEC_CLOCK, IEC_ATN, or IEC_RESET.

If cbm_driver_open() did not succeed, it is illegal to call this function.

Bug:
This function can't signal an error, thus, be careful!

Definition at line 1372 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE, opencbm_plugin_s::opencbm_plugin_iec_release, opencbm_plugin_s::opencbm_plugin_iec_setrelease, and plugin_information_s::Plugin.

Referenced by vdd_iec_release().

void CBMAPIDECL cbm_iec_set ( CBM_FILE  HandleDevice,
int  Line 
)

Activate a line on the IEC serial bus.

This function activates (sets to 0V) a line on the IEC serial bus.

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
LineThe line to be activated. This must be exactly one of IEC_DATA, IEC_CLOCK, IEC_ATN, or IEC_RESET.

If cbm_driver_open() did not succeed, it is illegal to call this function.

Bug:
This function can't signal an error, thus, be careful!

Definition at line 1341 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE, opencbm_plugin_s::opencbm_plugin_iec_set, opencbm_plugin_s::opencbm_plugin_iec_setrelease, and plugin_information_s::Plugin.

Referenced by vdd_iec_set().

void CBMAPIDECL cbm_iec_setrelease ( CBM_FILE  HandleDevice,
int  Set,
int  Release 
)

Activate and deactive a line on the IEC serial bus.

This function activates (sets to 0V, L) and deactivates (set to 5V, H) lines on the IEC serial bus.

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
SetThe mask of which lines should be set. This has to be a bitwise OR between the constants IEC_DATA, IEC_CLOCK, IEC_ATN, and IEC_RESET
ReleaseThe mask of which lines should be released. This has to be a bitwise OR between the constants IEC_DATA, IEC_CLOCK, IEC_ATN, and IEC_RESET

If cbm_driver_open() did not succeed, it is illegal to call this function.

Bug:
This function can't signal an error, thus, be careful!
Remarks
If a bit is specified in the Set as well as in the Release mask, the effect is undefined.

Definition at line 1412 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE, opencbm_plugin_s::opencbm_plugin_iec_setrelease, and plugin_information_s::Plugin.

Referenced by vdd_iec_setrelease().

int CBMAPIDECL cbm_iec_wait ( CBM_FILE  HandleDevice,
int  Line,
int  State 
)

Wait for a line to have a specific state.

This function waits for a line to enter a specific state on the IEC serial bus.

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
LineThe line to be deactivated. This must be exactly one of IEC_DATA, IEC_CLOCK, IEC_ATN, and IEC_RESET.
StateIf zero, then wait for this line to be deactivated.
If not zero, then wait for this line to be activated.
Returns
The state of the IEC bus on return (like cbm_iec_poll).

If cbm_driver_open() did not succeed, it is illegal to call this function.

Bug:
This function can't signal an error, thus, be careful!

Definition at line 1448 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE_INT, opencbm_plugin_s::opencbm_plugin_iec_wait, and plugin_information_s::Plugin.

Referenced by vdd_iec_wait().

int CBMAPIDECL cbm_listen ( CBM_FILE  HandleDevice,
unsigned char  DeviceAddress,
unsigned char  SecondaryAddress 
)

Send a LISTEN on the IEC serial bus.

This function sends a LISTEN on the IEC serial bus. This prepares a LISTENer, so that it will wait for our bytes we will write in the future.

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
DeviceAddressThe address of the device on the IEC serial bus. This is known as primary address, too.
SecondaryAddressThe secondary address for the device on the IEC serial bus.
Returns
0 means success, else failure

If cbm_driver_open() did not succeed, it is illegal to call this function.

Definition at line 945 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE_INT, opencbm_plugin_s::opencbm_plugin_listen, and plugin_information_s::Plugin.

Referenced by cbm_exec_command(), cbm_upload(), and vdd_listen().

void CBMAPIDECL cbm_lock ( CBM_FILE  HandleDevice)

Lock the parallel port for the driver.

This function locks the driver onto the parallel port. This way, no other program or driver can allocate the parallel port and interfere with the communication.

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.

If cbm_driver_open() did not succeed, it is illegal to call cbm_driver_close().

Remarks
A call to cbm_lock() is undone with a call to cbm_unlock().

Note that it is not necessary to call this function (or cbm_unlock()) when all communication is done with the handle to opencbm open (that is, between cbm_driver_open() and cbm_driver_close(). You only need this function to pin the driver to the port even when cbm_driver_close() is to be executed (for example, because the program terminates).

Definition at line 804 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE, opencbm_plugin_s::opencbm_plugin_lock, and plugin_information_s::Plugin.

Referenced by cbm_execute_devicecontrol().

int CBMAPIDECL cbm_open ( CBM_FILE  HandleDevice,
unsigned char  DeviceAddress,
unsigned char  SecondaryAddress,
const void *  Filename,
size_t  FilenameLength 
)

Open a file on the IEC serial bus.

This function opens a file on the IEC serial bus.

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
DeviceAddressThe address of the device on the IEC serial bus. This is known as primary address, too.
SecondaryAddressThe secondary address for the device on the IEC serial bus.
FilenameThe filename of the file to be opened
FilenameLengthThe size of the Filename. If zero, the Filename has to be a null-terminated string.
Returns
0 means success, else failure

If cbm_driver_open() did not succeed, it is illegal to call this function.

Definition at line 1012 of file cbm.c.

References cbm_raw_write(), cbm_unlisten(), DBG_PREFIX, DBG_WARN, FUNC_ENTER, FUNC_LEAVE_INT, opencbm_plugin_s::opencbm_plugin_open, and plugin_information_s::Plugin.

Referenced by vdd_open().

unsigned char CBMAPIDECL cbm_parallel_burst_read ( CBM_FILE  HandleDevice)

PARBURST: Read from the parallel port.

This function is a helper function for parallel burst: It reads from the parallel port.

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
Returns
The value read from the parallel port

If cbm_driver_open() did not succeed, it is illegal to call this function.

Note that a plugin is not required to implement this function.

Definition at line 1635 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE_UCHAR, opencbm_plugin_s::opencbm_plugin_parallel_burst_read, and plugin_information_s::Plugin.

int CBMAPIDECL cbm_parallel_burst_read_track ( CBM_FILE  HandleDevice,
unsigned char *  Buffer,
unsigned int  Length 
)

PARBURST: Read a complete track.

This function is a helper function for parallel burst: It reads a complete track from the disk

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
BufferPointer to a buffer which will hold the bytes read.
LengthThe length of the Buffer.
Returns
!= 0 on success.

If cbm_driver_open() did not succeed, it is illegal to call this function.

Note that a plugin is not required to implement this function. If this function is not implemented, it will return -1.

Definition at line 1746 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE_INT, opencbm_plugin_s::opencbm_plugin_parallel_burst_read_track, and plugin_information_s::Plugin.

int CBMAPIDECL cbm_parallel_burst_read_track_var ( CBM_FILE  HandleDevice,
unsigned char *  Buffer,
unsigned int  Length 
)

PARBURST: Read a variable length track.

This function is a helper function for parallel burst: It reads a variable length track from the disk

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
BufferPointer to a buffer which will hold the bytes read.
LengthThe length of the Buffer.
Returns
!= 0 on success.

If cbm_driver_open() did not succeed, it is illegal to call this function.

Definition at line 1780 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE_INT, opencbm_plugin_s::opencbm_plugin_parallel_burst_read_track, opencbm_plugin_s::opencbm_plugin_parallel_burst_read_track_var, and plugin_information_s::Plugin.

void CBMAPIDECL cbm_parallel_burst_write ( CBM_FILE  HandleDevice,
unsigned char  Value 
)

PARBURST: Write to the parallel port.

This function is a helper function for parallel burst: It writes to the parallel port.

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
ValueThe value to be written to the parallel port

If cbm_driver_open() did not succeed, it is illegal to call this function.

Note that a plugin is not required to implement this function.

Definition at line 1665 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE, opencbm_plugin_s::opencbm_plugin_parallel_burst_write, and plugin_information_s::Plugin.

int CBMAPIDECL cbm_parallel_burst_write_track ( CBM_FILE  HandleDevice,
unsigned char *  Buffer,
unsigned int  Length 
)

PARBURST: Write a complete track.

This function is a helper function for parallel burst: It writes a complete track to the disk

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
BufferPointer to a buffer which hold the bytes to be written.
LengthThe length of the Buffer.
Returns
!= 0 on success.

If cbm_driver_open() did not succeed, it is illegal to call this function.

Note that a plugin is not required to implement this function. If this function is not implemented, it will return -1.

Definition at line 1817 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE_INT, opencbm_plugin_s::opencbm_plugin_parallel_burst_write_track, and plugin_information_s::Plugin.

unsigned char CBMAPIDECL cbm_pp_read ( CBM_FILE  HandleDevice)

Read a byte from a XP1541/XP1571 cable.

This function reads a single byte from the parallel portion of an XP1541/1571 cable.

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
Returns
the byte which was received on the parallel port

This function reads the current state of the port. No handshaking is performed at all.

If cbm_driver_open() did not succeed, it is illegal to call this function.

Note that a plugin is not required to implement this function.

Bug:
This function can't signal an error, thus, be careful!

Definition at line 1244 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE_UCHAR, opencbm_plugin_s::opencbm_plugin_pp_read, and plugin_information_s::Plugin.

Referenced by cbm_identify_xp1541(), and vdd_pp_read().

void CBMAPIDECL cbm_pp_write ( CBM_FILE  HandleDevice,
unsigned char  Byte 
)

Write a byte to a XP1541/XP1571 cable.

This function writes a single byte to the parallel portion of a XP1541/1571 cable.

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
Bytethe byte to be output on the parallel port

This function just writes on the port. No handshaking is performed at all.

If cbm_driver_open() did not succeed, it is illegal to call this function.

Note that a plugin is not required to implement this function.

Bug:
This function can't signal an error, thus, be careful!

Definition at line 1282 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE, opencbm_plugin_s::opencbm_plugin_pp_write, and plugin_information_s::Plugin.

Referenced by vdd_pp_write().

int CBMAPIDECL cbm_raw_read ( CBM_FILE  HandleDevice,
void *  Buffer,
size_t  Count 
)

Read data from the IEC serial bus.

This function retrieves data after a cbm_talk().

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
BufferPointer to a buffer which will hold the bytes read.
CountNumber of bytes to be read at most.
Returns
>= 0: The actual number of bytes read. <0 indicates an error.

At most Count bytes are read.

If cbm_driver_open() did not succeed, it is illegal to call this function.

Definition at line 906 of file cbm.c.

References DBG_MEMDUMP, FUNC_ENTER, FUNC_LEAVE_INT, opencbm_plugin_s::opencbm_plugin_raw_read, and plugin_information_s::Plugin.

Referenced by cbm_device_status(), cbm_identify(), and vdd_raw_read().

int CBMAPIDECL cbm_raw_write ( CBM_FILE  HandleDevice,
const void *  Buffer,
size_t  Count 
)

Write data to the IEC serial bus.

This function sends data after a cbm_listen().

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
BufferPointer to a buffer which hold the bytes to write to the bus.
CountNumber of bytes to be written.
Returns
>= 0: The actual number of bytes written. <0 indicates an error.

This function tries to write Count bytes. Anyway, if an error occurs, this function can stop prematurely.

If cbm_driver_open() did not succeed, it is illegal to call this function.

Definition at line 870 of file cbm.c.

References DBG_MEMDUMP, FUNC_ENTER, FUNC_LEAVE_INT, opencbm_plugin_s::opencbm_plugin_raw_write, and plugin_information_s::Plugin.

Referenced by cbm_exec_command(), cbm_open(), cbm_upload(), and vdd_raw_write().

int CBMAPIDECL cbm_reset ( CBM_FILE  HandleDevice)

RESET all devices.

This function performs a hardware RESET of all devices on the IEC serial bus.

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
Returns
0 on success, else failure

Don't overuse this function! Normally, an initial RESET should be enough.

Control is returned after a delay which ensures that all devices are ready again.

If cbm_driver_open() did not succeed, it is illegal to call this function.

Definition at line 1209 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE_INT, opencbm_plugin_s::opencbm_plugin_reset, and plugin_information_s::Plugin.

Referenced by vdd_reset().

unsigned char CBMAPIDECL cbm_srq_burst_read ( CBM_FILE  HandleDevice)

PARBURST: Read from the parallel port.

This function is a helper function for parallel burst: It reads from the parallel port.

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
Returns
The value read from the parallel port

If cbm_driver_open() did not succeed, it is illegal to call this function.

Note that a plugin is not required to implement this function.

Definition at line 1847 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE_UCHAR, opencbm_plugin_s::opencbm_plugin_srq_burst_read, and plugin_information_s::Plugin.

int CBMAPIDECL cbm_srq_burst_read_track ( CBM_FILE  HandleDevice,
unsigned char *  Buffer,
unsigned int  Length 
)

PARBURST: Read a complete track.

This function is a helper function for parallel burst: It reads a complete track from the disk

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
BufferPointer to a buffer which will hold the bytes read.
LengthThe length of the Buffer.
Returns
!= 0 on success.

If cbm_driver_open() did not succeed, it is illegal to call this function.

Note that a plugin is not required to implement this function. If this function is not implemented, it will return -1.

Definition at line 1958 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE_INT, opencbm_plugin_s::opencbm_plugin_srq_burst_read_track, and plugin_information_s::Plugin.

void CBMAPIDECL cbm_srq_burst_write ( CBM_FILE  HandleDevice,
unsigned char  Value 
)

PARBURST: Write to the parallel port.

This function is a helper function for parallel burst: It writes to the parallel port.

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
ValueThe value to be written to the parallel port

If cbm_driver_open() did not succeed, it is illegal to call this function.

Note that a plugin is not required to implement this function.

Definition at line 1877 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE, opencbm_plugin_s::opencbm_plugin_srq_burst_write, and plugin_information_s::Plugin.

int CBMAPIDECL cbm_srq_burst_write_track ( CBM_FILE  HandleDevice,
unsigned char *  Buffer,
unsigned int  Length 
)

PARBURST: Write a complete track.

This function is a helper function for parallel burst: It writes a complete track to the disk

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
BufferPointer to a buffer which hold the bytes to be written.
LengthThe length of the Buffer.
Returns
!= 0 on success.

If cbm_driver_open() did not succeed, it is illegal to call this function.

Note that a plugin is not required to implement this function. If this function is not implemented, it will return -1.

Definition at line 1995 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE_INT, opencbm_plugin_s::opencbm_plugin_srq_burst_write_track, and plugin_information_s::Plugin.

int CBMAPIDECL cbm_talk ( CBM_FILE  HandleDevice,
unsigned char  DeviceAddress,
unsigned char  SecondaryAddress 
)

Send a TALK on the IEC serial bus.

This function sends a TALK on the IEC serial bus. This prepares a TALKer, so that it will prepare to send us some bytes in the future.

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
DeviceAddressThe address of the device on the IEC serial bus. This is known as primary address, too.
SecondaryAddressThe secondary address for the device on the IEC serial bus.
Returns
0 means success, else failure

If cbm_driver_open() did not succeed, it is illegal to call this function.

Definition at line 976 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE_INT, opencbm_plugin_s::opencbm_plugin_talk, and plugin_information_s::Plugin.

Referenced by cbm_device_status(), cbm_identify(), and vdd_talk().

int CBMAPIDECL cbm_tap_download_config ( CBM_FILE  HandleDevice,
unsigned char *  Buffer,
unsigned int  Buffer_Length,
int *  Status,
int *  BytesRead 
)

TAPE: Download configuration.

This function is a helper function for tape: It reads the active configuration.

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
BufferPointer to a buffer which holds the bytes that are read.
Buffer_LengthThe length of the Buffer.
StatusThe return status.
BytesReadThe number of bytes read.
Returns
!= 0 on success.

If cbm_driver_open() did not succeed, it is illegal to call this function.

Note that a plugin is not required to implement this function.

Definition at line 2377 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE_INT, opencbm_plugin_s::opencbm_plugin_tap_download_config, and plugin_information_s::Plugin.

int CBMAPIDECL cbm_tap_get_sense ( CBM_FILE  HandleDevice,
int *  Status 
)

TAPE: Get tape sense.

This function is a helper function for tape: It returns the current tape sense state.

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
Returns
The tape sense state

If cbm_driver_open() did not succeed, it is illegal to call this function.

Note that a plugin is not required to implement this function.

Definition at line 2085 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE_INT, opencbm_plugin_s::opencbm_plugin_tap_get_sense, and plugin_information_s::Plugin.

int CBMAPIDECL cbm_tap_get_ver ( CBM_FILE  HandleDevice,
int *  Status 
)

TAPE: Return tape firmware version.

This function is a helper function for tape: It returns the tape firmware version.

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
Returns
!= 0 on success.

If cbm_driver_open() did not succeed, it is illegal to call this function.

Note that a plugin is not required to implement this function.

Definition at line 2320 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE_INT, opencbm_plugin_s::opencbm_plugin_tap_get_ver, and plugin_information_s::Plugin.

int CBMAPIDECL cbm_tap_motor_off ( CBM_FILE  HandleDevice,
int *  Status 
)

TAPE: Motor off.

This function is a helper function for tape: It turns the tape drive motor off.

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
Returns
!= 0 on success.

If cbm_driver_open() did not succeed, it is illegal to call this function.

Note that a plugin is not required to implement this function.

Definition at line 2205 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE_INT, opencbm_plugin_s::opencbm_plugin_tap_motor_off, and plugin_information_s::Plugin.

int CBMAPIDECL cbm_tap_motor_on ( CBM_FILE  HandleDevice,
int *  Status 
)

TAPE: Motor on.

This function is a helper function for tape: It turns the tape drive motor on.

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
Returns
!= 0 on success.

If cbm_driver_open() did not succeed, it is illegal to call this function.

Note that a plugin is not required to implement this function.

Definition at line 2175 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE_INT, opencbm_plugin_s::opencbm_plugin_tap_motor_on, and plugin_information_s::Plugin.

int CBMAPIDECL cbm_tap_prepare_capture ( CBM_FILE  HandleDevice,
int *  Status 
)

TAPE: Prepare capture.

This function is a helper function for tape: It prepares the ZoomFloppy hardware for tape capture.

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
Returns
!= 0 on success.

If cbm_driver_open() did not succeed, it is illegal to call this function.

Note that a plugin is not required to implement this function.

Definition at line 2025 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE_INT, opencbm_plugin_s::opencbm_plugin_tap_prepare_capture, and plugin_information_s::Plugin.

int CBMAPIDECL cbm_tap_prepare_write ( CBM_FILE  HandleDevice,
int *  Status 
)

TAPE: Prepare write.

This function is a helper function for tape: It prepares the ZoomFloppy hardware for tape write.

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
Returns
!= 0 on success.

If cbm_driver_open() did not succeed, it is illegal to call this function.

Note that a plugin is not required to implement this function.

Definition at line 2055 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE_INT, opencbm_plugin_s::opencbm_plugin_tap_prepare_write, and plugin_information_s::Plugin.

int CBMAPIDECL cbm_tap_start_capture ( CBM_FILE  HandleDevice,
unsigned char *  Buffer,
unsigned int  Buffer_Length,
int *  Status,
int *  BytesRead 
)

TAPE: Start capture.

This function is a helper function for tape: It starts the actual tape capture.

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
BufferPointer to a buffer which holds the bytes that are read.
Buffer_LengthThe length of the Buffer.
StatusThe return status.
BytesReadThe number of bytes read.
Returns
!= 0 on success.

If cbm_driver_open() did not succeed, it is illegal to call this function.

Note that a plugin is not required to implement this function.

Definition at line 2247 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE_INT, opencbm_plugin_s::opencbm_plugin_tap_start_capture, and plugin_information_s::Plugin.

int CBMAPIDECL cbm_tap_start_write ( CBM_FILE  HandleDevice,
unsigned char *  Buffer,
unsigned int  Length,
int *  Status,
int *  BytesWritten 
)

TAPE: Start write.

This function is a helper function for tape: It starts the actual tape write.

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
BufferPointer to a buffer which holds the bytes to be written.
LengthThe number of bytes to write.
StatusThe return status.
BytesWrittenThe number of bytes written.
Returns
!= 0 on success.

If cbm_driver_open() did not succeed, it is illegal to call this function.

Note that a plugin is not required to implement this function.

Definition at line 2289 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE_INT, opencbm_plugin_s::opencbm_plugin_tap_start_write, and plugin_information_s::Plugin.

int CBMAPIDECL cbm_tap_upload_config ( CBM_FILE  HandleDevice,
unsigned char *  Buffer,
unsigned int  Length,
int *  Status,
int *  BytesWritten 
)

TAPE: Upload configuration.

This function is a helper function for tape: It writes the active configuration.

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
BufferPointer to a buffer which holds the bytes to be written.
LengthThe number of bytes to write.
StatusThe return status.
BytesWrittenThe number of bytes written.
Returns
!= 0 on success.

If cbm_driver_open() did not succeed, it is illegal to call this function.

Note that a plugin is not required to implement this function.

Definition at line 2419 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE_INT, opencbm_plugin_s::opencbm_plugin_tap_upload_config, and plugin_information_s::Plugin.

int CBMAPIDECL cbm_tap_wait_for_play_sense ( CBM_FILE  HandleDevice,
int *  Status 
)

TAPE: Wait for <PLAY> sense.

This function is a helper function for tape: It waits until the user presses play on tape.

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
Returns
!= 0 on success.

If cbm_driver_open() did not succeed, it is illegal to call this function.

Note that a plugin is not required to implement this function.

Definition at line 2145 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE_INT, opencbm_plugin_s::opencbm_plugin_tap_wait_for_play_sense, and plugin_information_s::Plugin.

int CBMAPIDECL cbm_tap_wait_for_stop_sense ( CBM_FILE  HandleDevice,
int *  Status 
)

TAPE: Wait for <STOP> sense.

This function is a helper function for tape: It waits until the user stops the tape.

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
Returns
!= 0 on success.

If cbm_driver_open() did not succeed, it is illegal to call this function.

Note that a plugin is not required to implement this function.

Definition at line 2115 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE_INT, opencbm_plugin_s::opencbm_plugin_tap_wait_for_stop_sense, and plugin_information_s::Plugin.

int CBMAPIDECL cbm_unlisten ( CBM_FILE  HandleDevice)

Send an UNLISTEN on the IEC serial bus.

This function sends an UNLISTEN on the IEC serial bus. Other than LISTEN and TALK, an UNLISTEN is not directed to just one device, but to all devices on that IEC serial bus.

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
Returns
0 on success, else failure

At least on a 1541 floppy drive, an UNLISTEN also undoes a previous TALK.

If cbm_driver_open() did not succeed, it is illegal to call this function.

Definition at line 1100 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE_INT, opencbm_plugin_s::opencbm_plugin_unlisten, and plugin_information_s::Plugin.

Referenced by cbm_exec_command(), cbm_open(), cbm_upload(), and vdd_unlisten().

void CBMAPIDECL cbm_unlock ( CBM_FILE  HandleDevice)

Unlock the parallel port for the driver.

This function unlocks the driver from the parallel port. This way, other programs and drivers can allocate the parallel port and do their own communication with whatever device they use.

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.

If cbm_driver_open() did not succeed, it is illegal to call cbm_driver_close().

Remarks
Look at cbm_lock() for an explanation of this function.

Definition at line 832 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE, opencbm_plugin_s::opencbm_plugin_unlock, and plugin_information_s::Plugin.

Referenced by cbm_execute_devicecontrol().

int CBMAPIDECL cbm_untalk ( CBM_FILE  HandleDevice)

Send an UNTALK on the IEC serial bus.

This function sends an UNTALK on the IEC serial bus. Other than LISTEN and TALK, an UNTALK is not directed to just one device, but to all devices on that IEC serial bus.

Parameters
HandleDeviceA CBM_FILE which contains the file handle of the driver.
Returns
0 on success, else failure

At least on a 1541 floppy drive, an UNTALK also undoes a previous LISTEN.

If cbm_driver_open() did not succeed, it is illegal to call this function.

Definition at line 1128 of file cbm.c.

References FUNC_ENTER, FUNC_LEAVE_INT, opencbm_plugin_s::opencbm_plugin_untalk, and plugin_information_s::Plugin.

Referenced by cbm_device_status(), cbm_identify(), and vdd_untalk().

int plugin_is_active ( opencbm_configuration_handle  Handle,
const char  PluginName[] 
)

@@@

Todo:
document
Parameters
Handle
PluginName
Returns

Definition at line 55 of file cbm.c.

References cbmlibmisc_strfree(), DBG_PREFIX, DBG_WARN, FUNC_ENTER, FUNC_LEAVE_INT, and opencbm_configuration_get_data().

int plugin_set_active ( const char  PluginName[])

@@@

Todo:
document
Parameters
PluginName
Returns

Definition at line 93 of file cbm.c.

References FUNC_ENTER, and FUNC_LEAVE_INT.

int plugin_set_inactive ( const char  PluginName[])

@@@

Todo:
document
Parameters
PluginName
Returns

Definition at line 107 of file cbm.c.

References FUNC_ENTER, and FUNC_LEAVE_INT.