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

opencbm.h File Reference

DLL interface for accessing the driver. More...

#include <sys/types.h>

Go to the source code of this file.

Defines

#define EXTERN   extern
#define CBMAPIDECL
#define WINAPI
#define CBM_FILE   int
#define CBM_FILE_INVALID   ((CBM_FILE)-1)
#define IEC_DATA   0x01
#define IEC_CLOCK   0x02
#define IEC_ATN   0x04
#define IEC_RESET   0x08

Enumerations

enum  cbm_device_type_e {
  cbm_dt_unknown = -1, cbm_dt_cbm1541, cbm_dt_cbm1570, cbm_dt_cbm1571,
  cbm_dt_cbm1581
}
enum  cbm_cable_type_e { cbm_ct_unknown = -1, cbm_ct_none, cbm_ct_xp1541 }

Functions

EXTERN int CBMAPIDECL cbm_driver_open (CBM_FILE *f, int port)
 Opens the driver.
EXTERN void CBMAPIDECL cbm_driver_close (CBM_FILE f)
 Closes the driver.
EXTERN void CBMAPIDECL cbm_lock (CBM_FILE f)
 Lock the parallel port for the driver.
EXTERN void CBMAPIDECL cbm_unlock (CBM_FILE f)
 Unlock the parallel port for the driver.
EXTERN const char *CBMAPIDECL cbm_get_driver_name (int port)
 Get the name of the driver for a specific parallel port.
EXTERN int CBMAPIDECL cbm_listen (CBM_FILE f, __u_char dev, __u_char secadr)
 Send a LISTEN on the IEC serial bus.
EXTERN int CBMAPIDECL cbm_talk (CBM_FILE f, __u_char dev, __u_char secadr)
 Send a TALK on the IEC serial bus.
EXTERN int CBMAPIDECL cbm_open (CBM_FILE f, __u_char dev, __u_char secadr, const void *fname, size_t len)
 Open a file on the IEC serial bus.
EXTERN int CBMAPIDECL cbm_close (CBM_FILE f, __u_char dev, __u_char secadr)
 Close a file on the IEC serial bus.
EXTERN int CBMAPIDECL cbm_raw_read (CBM_FILE f, void *buf, size_t size)
 Read data from the IEC serial bus.
EXTERN int CBMAPIDECL cbm_raw_write (CBM_FILE f, const void *buf, size_t size)
 Write data to the IEC serial bus.
EXTERN int CBMAPIDECL cbm_unlisten (CBM_FILE f)
 Send an UNLISTEN on the IEC serial bus.
EXTERN int CBMAPIDECL cbm_untalk (CBM_FILE f)
 Send an UNTALK on the IEC serial bus.
EXTERN int CBMAPIDECL cbm_get_eoi (CBM_FILE f)
 Get EOI flag after bus read.
EXTERN int CBMAPIDECL cbm_clear_eoi (CBM_FILE f)
 Reset the EOI flag.
EXTERN int CBMAPIDECL cbm_reset (CBM_FILE f)
 RESET all devices.
EXTERN __u_char CBMAPIDECL cbm_pp_read (CBM_FILE f)
 Read a byte from a XP1541/XP1571 cable.
EXTERN void CBMAPIDECL cbm_pp_write (CBM_FILE f, __u_char c)
 Write a byte to a XP1541/XP1571 cable.
EXTERN int CBMAPIDECL cbm_iec_poll (CBM_FILE f)
 Read status of all bus lines.
EXTERN int CBMAPIDECL cbm_iec_get (CBM_FILE f, int line)
 Get the (logical) state of a line on the IEC serial bus.
EXTERN void CBMAPIDECL cbm_iec_set (CBM_FILE f, int line)
 Activate a line on the IEC serial bus.
EXTERN void CBMAPIDECL cbm_iec_release (CBM_FILE f, int line)
 Deactivate a line on the IEC serial bus.
EXTERN void CBMAPIDECL cbm_iec_setrelease (CBM_FILE f, int set, int release)
 Activate and deactive a line on the IEC serial bus.
EXTERN int CBMAPIDECL cbm_iec_wait (CBM_FILE f, int line, int state)
 Wait for a line to have a specific state.
EXTERN int CBMAPIDECL cbm_upload (CBM_FILE f, __u_char dev, int adr, const void *prog, size_t size)
 Upload a program into a floppy's drive memory.
EXTERN int CBMAPIDECL cbm_device_status (CBM_FILE f, __u_char dev, void *buf, size_t bufsize)
 Read the drive status from a floppy.
EXTERN int CBMAPIDECL cbm_exec_command (CBM_FILE f, __u_char dev, const void *cmd, size_t len)
 Executes a command in the floppy drive.
EXTERN int CBMAPIDECL cbm_identify (CBM_FILE f, __u_char drv, enum cbm_device_type_e *t, const char **type_str)
 Identify the connected floppy drive.
EXTERN int CBMAPIDECL cbm_identify_xp1541 (CBM_FILE HandleDevice, __u_char DeviceAddress, enum cbm_device_type_e *CbmDeviceType, enum cbm_cable_type_e *CableType)
 Identify the cable connected to a specific floppy drive.
EXTERN char CBMAPIDECL cbm_petscii2ascii_c (char character)
 Convert a PETSCII character to ASCII.
EXTERN char CBMAPIDECL cbm_ascii2petscii_c (char character)
 Convert an ASCII character to PETSCII.
EXTERN char *CBMAPIDECL cbm_petscii2ascii (char *str)
 Convert an null-termined PETSCII string to ASCII.
EXTERN char *CBMAPIDECL cbm_ascii2petscii (char *str)
 Convert an null-termined ASCII string to PETSCII.
EXTERN __u_char CBMAPIDECL cbm_parallel_burst_read (CBM_FILE f)
 PARBURST: Read from the parallel port.
EXTERN void CBMAPIDECL cbm_parallel_burst_write (CBM_FILE f, __u_char c)
 PARBURST: Write to the parallel port.
EXTERN int CBMAPIDECL cbm_parallel_burst_read_track (CBM_FILE f, __u_char *buffer, unsigned int length)
 PARBURST: Read a complete track.
EXTERN int CBMAPIDECL cbm_parallel_burst_write_track (CBM_FILE f, __u_char *buffer, unsigned int length)
 PARBURST: Write a complete track.


Detailed Description

DLL interface for accessing the driver.

**************************************************************

Author:
Michael Klein <michael(dot)klein(at)puffin(dot)lb(dot)shuttle(dot)de>
Version:
Id
opencbm.h,v 1.29 2006/03/20 11:25:58 trikalio Exp

Authors:
With modifications to fit on Windows from Spiro Trikaliotis

Definition in file opencbm.h.


Define Documentation

#define CBM_FILE   int
 

The "file descriptor" for an opened driver

Definition at line 78 of file opencbm.h.

Referenced by cbm_i_i_driver_install(), CbmInstallUpdate(), vdd_driver_open(), and VDDDispatch().

#define CBMAPIDECL
 

CBMAPIDECL is a dummy on Linux

Definition at line 76 of file opencbm.h.

#define EXTERN   extern
 

EXTERN is not defined on Linux

Definition at line 75 of file opencbm.h.

#define IEC_ATN   0x04
 

Specify the ATN line

Definition at line 86 of file opencbm.h.

Referenced by opencbm_init().

#define IEC_CLOCK   0x02
 

Specify the CLOCK line

Definition at line 85 of file opencbm.h.

Referenced by opencbm_init().

#define IEC_DATA   0x01
 

Specify the DATA line

Definition at line 84 of file opencbm.h.

Referenced by opencbm_init().

#define IEC_RESET   0x08
 

Specify the RESET line

Definition at line 87 of file opencbm.h.

Referenced by opencbm_init().

#define WINAPI
 

WINAPI is a dummy on Linux

Definition at line 77 of file opencbm.h.


Enumeration Type Documentation

enum cbm_cable_type_e
 

Specifies the type of a device for cbm_identify()

Enumeration values:
cbm_ct_unknown  The device could not be identified
cbm_ct_none  The device does not have a parallel cable
cbm_ct_xp1541  The device does have a parallel cable

Definition at line 100 of file opencbm.h.

enum cbm_device_type_e
 

Specifies the type of a device for cbm_identify()

Enumeration values:
cbm_dt_unknown  The device could not be identified
cbm_dt_cbm1541  The device is a VIC 1541
cbm_dt_cbm1570  The device is a VIC 1570
cbm_dt_cbm1571  The device is a VIC 1571
cbm_dt_cbm1581  The device is a VIC 1581

Definition at line 90 of file opencbm.h.


Function Documentation

EXTERN char* CBMAPIDECL cbm_ascii2petscii char *  Str  ) 
 

Convert an null-termined ASCII string to PETSCII.

This function converts a string in ASCII to PETSCII.

Parameters:
Str Pointer to a buffer which holds a null-termined string in ASCII.
Returns:
Returns a pointer to the Str itself, converted to PETSCII.

Definition at line 161 of file petscii.c.

References cbm_ascii2petscii_c().

EXTERN char CBMAPIDECL cbm_ascii2petscii_c char  Character  ) 
 

Convert an ASCII character to PETSCII.

This function converts a character in ASCII to PETSCII.

Parameters:
Character The character value to be converted in ASCII
Returns:
Returns the value of character in PETSCII.

Definition at line 106 of file petscii.c.

Referenced by cbm_ascii2petscii().

EXTERN 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:
HandleDevice A 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 517 of file cbm.c.

References cbmarch_clear_eoi(), FUNC_ENTER, and FUNC_LEAVE_INT.

Referenced by vdd_clear_eoi().

EXTERN int CBMAPIDECL cbm_close CBM_FILE  HandleDevice,
__u_char  DeviceAddress,
__u_char  SecondaryAddress
 

Close a file on the IEC serial bus.

This function closes a file on the IEC serial bus.

Parameters:
HandleDevice A CBM_FILE which contains the file handle of the driver.
DeviceAddress The address of the device on the IEC serial bus. This is known as primary address, too.
SecondaryAddress The 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 409 of file cbm.c.

References cbmarch_close(), FUNC_ENTER, and FUNC_LEAVE_INT.

Referenced by vdd_close().

EXTERN int CBMAPIDECL cbm_device_status CBM_FILE  HandleDevice,
__u_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:
HandleDevice A CBM_FILE which contains the file handle of the driver.
DeviceAddress The address of the device on the IEC serial bus. This is known as primary address, too.
Buffer Pointer to a buffer which will hold the drive's status after successfull calling,
BufferLength The 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 845 of file cbm.c.

References cbm_raw_read(), cbmarch_talk(), cbmarch_untalk(), DBG_ASSERT, FUNC_ENTER, and FUNC_LEAVE_INT.

Referenced by vdd_device_status().

EXTERN void CBMAPIDECL cbm_driver_close CBM_FILE  HandleDevice  ) 
 

Closes the driver.

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

Parameters:
HandleDevice A 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 111 of file cbm.c.

References cbmarch_driver_close(), FUNC_ENTER, and FUNC_LEAVE.

Referenced by vdd_driver_close(), and vdd_driver_open().

EXTERN int CBMAPIDECL cbm_driver_open CBM_FILE *  HandleDevice,
int  PortNumber
 

Opens the driver.

This function Opens the driver.

Parameters:
HandleDevice Pointer to a CBM_FILE which will contain the file handle of the driver.
PortNumber The 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.

cbm_driver_open() should be balanced with cbm_driver_close().

Definition at line 89 of file cbm.c.

References cbmarch_driver_open(), FUNC_ENTER, and FUNC_LEAVE_INT.

Referenced by vdd_driver_open().

EXTERN int CBMAPIDECL cbm_exec_command CBM_FILE  HandleDevice,
__u_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:
HandleDevice A CBM_FILE which contains the file handle of the driver.
DeviceAddress The address of the device on the IEC serial bus. This is known as primary address, too.
Command Pointer to a string which holds the command to be executed.
Size The 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 918 of file cbm.c.

References cbmarch_listen(), cbmarch_raw_write(), cbmarch_unlisten(), FUNC_ENTER, and FUNC_LEAVE_INT.

Referenced by cbm_identify(), and vdd_exec_command().

EXTERN 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:
PortNumber The 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.

Definition at line 61 of file cbm.c.

References cbmarch_get_driver_name(), FUNC_ENTER, and FUNC_LEAVE_STRING.

Referenced by vdd_get_driver_name().

EXTERN 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:
HandleDevice A 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 494 of file cbm.c.

References cbmarch_get_eoi(), FUNC_ENTER, and FUNC_LEAVE_INT.

Referenced by vdd_get_eoi().

EXTERN int CBMAPIDECL cbm_identify CBM_FILE  HandleDevice,
__u_char  DeviceAddress,
enum cbm_device_type_e CbmDeviceType,
const char **  CbmDeviceString
 

Identify the connected floppy drive.

This function tries to identify a connected floppy drive. For this, it performs some M-R operations.

Parameters:
HandleDevice A CBM_FILE which contains the file handle of the driver.
DeviceAddress The address of the device on the IEC serial bus. This is known as primary address, too.
CbmDeviceType Pointer to an enum which will hold the type of the device.
CbmDeviceString Pointer to a pointer which will point on a string which tells the name of the device.
Returns:
0 if the drive could be contacted. It does not mean that the device could be identified.
If cbm_driver_open() did not succeed, it is illegal to call this function.

Definition at line 65 of file detect.c.

References cbm_dt_cbm1541, cbm_dt_cbm1570, cbm_dt_cbm1571, cbm_dt_cbm1581, cbm_dt_unknown, cbm_exec_command(), cbmarch_raw_read(), cbmarch_talk(), cbmarch_untalk(), FUNC_ENTER, and FUNC_LEAVE_INT.

Referenced by cbm_identify_xp1541(), and vdd_identify().

EXTERN int CBMAPIDECL cbm_identify_xp1541 CBM_FILE  HandleDevice,
__u_char  DeviceAddress,
enum cbm_device_type_e CbmDeviceType,
enum cbm_cable_type_e CableType
 

Identify the cable connected to a specific floppy drive.

This function tries to identify if the given floppy drive has an XP1541 cable connected.

Parameters:
HandleDevice A CBM_FILE which contains the file handle of the driver.
DeviceAddress The address of the device on the IEC serial bus. This is known as primary address, too.
CbmDeviceType Pointer to an enum which holds the type of the device. If this pointer is NULL or the device type is set to unknown, this function calls cbm_identify itself to find out the device type. If this pointer is not set to NULL, this function will return the device type there.
CableType Pointer to an enum which will hold the cable type of the device on return.
Returns:
0 if the drive could be contacted. It does not mean that the device could be identified.
If cbm_driver_open() did not succeed, it is illegal to call this function.

Definition at line 188 of file detectxp1541.c.

References cbm_ct_none, cbm_ct_unknown, cbm_ct_xp1541, cbm_dt_cbm1541, cbm_dt_cbm1570, cbm_dt_cbm1571, cbm_dt_unknown, cbm_identify(), cbm_pp_read(), DBG_ASSERT, DBG_PREFIX, DBG_PRINT, FUNC_ENTER, and FUNC_LEAVE_INT.

Referenced by vdd_identify_xp1541().

EXTERN 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:
HandleDevice A CBM_FILE which contains the file handle of the driver.
Line The 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 798 of file cbm.c.

References cbmarch_iec_poll(), FUNC_ENTER, and FUNC_LEAVE_INT.

Referenced by cbmarch_iec_wait(), and vdd_iec_get().

EXTERN 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:
HandleDevice A 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 641 of file cbm.c.

References cbmarch_iec_poll(), FUNC_ENTER, and FUNC_LEAVE_INT.

Referenced by vdd_iec_poll().

EXTERN 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:
HandleDevice A CBM_FILE which contains the file handle of the driver.
Line The 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 696 of file cbm.c.

References cbmarch_iec_release(), FUNC_ENTER, and FUNC_LEAVE.

Referenced by vdd_iec_release().

EXTERN 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:
HandleDevice A CBM_FILE which contains the file handle of the driver.
Line The 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 668 of file cbm.c.

References cbmarch_iec_set(), FUNC_ENTER, and FUNC_LEAVE.

Referenced by vdd_iec_set().

EXTERN 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:
HandleDevice A CBM_FILE which contains the file handle of the driver.
Set The 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
Release The 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 733 of file cbm.c.

References cbmarch_iec_setrelease(), FUNC_ENTER, and FUNC_LEAVE.

Referenced by vdd_iec_setrelease().

EXTERN 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:
HandleDevice A CBM_FILE which contains the file handle of the driver.
Line The line to be deactivated. This must be exactly one of IEC_DATA, IEC_CLOCK, IEC_ATN, and IEC_RESET.
State If 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 769 of file cbm.c.

References cbmarch_iec_wait(), FUNC_ENTER, and FUNC_LEAVE_INT.

Referenced by vdd_iec_wait().

EXTERN int CBMAPIDECL cbm_listen CBM_FILE  HandleDevice,
__u_char  DeviceAddress,
__u_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:
HandleDevice A CBM_FILE which contains the file handle of the driver.
DeviceAddress The address of the device on the IEC serial bus. This is known as primary address, too.
SecondaryAddress The 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 284 of file cbm.c.

References cbmarch_listen(), FUNC_ENTER, and FUNC_LEAVE_INT.

Referenced by vdd_listen().

EXTERN 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:
HandleDevice A 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 145 of file cbm.c.

References cbmarch_lock(), FUNC_ENTER, and FUNC_LEAVE.

EXTERN int CBMAPIDECL cbm_open CBM_FILE  HandleDevice,
__u_char  DeviceAddress,
__u_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:
HandleDevice A CBM_FILE which contains the file handle of the driver.
DeviceAddress The address of the device on the IEC serial bus. This is known as primary address, too.
SecondaryAddress The secondary address for the device on the IEC serial bus.
Filename The filename of the file to be opened
FilenameLength The 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 351 of file cbm.c.

References cbm_raw_write(), cbm_unlisten(), cbmarch_open(), DBG_PREFIX, DBG_WARN, FUNC_ENTER, and FUNC_LEAVE_INT.

Referenced by vdd_open().

EXTERN __u_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:
HandleDevice A 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.

Definition at line 952 of file cbm.c.

References cbmarch_parallel_burst_read(), FUNC_ENTER, and FUNC_LEAVE_UCHAR.

EXTERN int CBMAPIDECL cbm_parallel_burst_read_track CBM_FILE  HandleDevice,
__u_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:
HandleDevice A CBM_FILE which contains the file handle of the driver.
Buffer Pointer to a buffer which will hold the bytes read.
Length The 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 1006 of file cbm.c.

References cbmarch_parallel_burst_read_track(), FUNC_ENTER, and FUNC_LEAVE_INT.

EXTERN void CBMAPIDECL cbm_parallel_burst_write CBM_FILE  HandleDevice,
__u_char  Value
 

PARBURST: Write to the parallel port.

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

Parameters:
HandleDevice A CBM_FILE which contains the file handle of the driver.
Value The value to be written to the parallel port
If cbm_driver_open() did not succeed, it is illegal to call this function.

Definition at line 975 of file cbm.c.

References cbmarch_parallel_burst_write(), FUNC_ENTER, and FUNC_LEAVE.

EXTERN int CBMAPIDECL cbm_parallel_burst_write_track CBM_FILE  HandleDevice,
__u_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:
HandleDevice A CBM_FILE which contains the file handle of the driver.
Buffer Pointer to a buffer which hold the bytes to be written.
Length The 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 1035 of file cbm.c.

References cbmarch_parallel_burst_write_track(), FUNC_ENTER, and FUNC_LEAVE_INT.

EXTERN char* CBMAPIDECL cbm_petscii2ascii char *  Str  ) 
 

Convert an null-termined PETSCII string to ASCII.

This function converts a string in PETSCII to ASCII.

Parameters:
Str Pointer to a buffer which holds a null-termined string in PETCII.
Returns:
Returns a pointer to the Str itself, converted to ASCII.
If some character cannot be printer on the PC, they are replaced with a dot (".").

Definition at line 137 of file petscii.c.

References cbm_petscii2ascii_c().

EXTERN char CBMAPIDECL cbm_petscii2ascii_c char  Character  ) 
 

Convert a PETSCII character to ASCII.

This function converts a character in PETSCII to ASCII.

Parameters:
Character The character value to be converted in PETSCII
Returns:
Returns the value of character in ASCII if it can be displayed, a dot (".") otherwise.

Definition at line 65 of file petscii.c.

Referenced by cbm_petscii2ascii().

EXTERN __u_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:
HandleDevice A 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.

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

Definition at line 579 of file cbm.c.

References cbmarch_pp_read(), FUNC_ENTER, and FUNC_LEAVE_UCHAR.

Referenced by cbm_identify_xp1541(), and vdd_pp_read().

EXTERN void CBMAPIDECL cbm_pp_write CBM_FILE  HandleDevice,
__u_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:
HandleDevice A CBM_FILE which contains the file handle of the driver.
Byte the 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.

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

Definition at line 610 of file cbm.c.

References cbmarch_pp_write(), FUNC_ENTER, and FUNC_LEAVE.

Referenced by vdd_pp_write().

EXTERN 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:
HandleDevice A CBM_FILE which contains the file handle of the driver.
Buffer Pointer to a buffer which will hold the bytes read.
Count Number 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 245 of file cbm.c.

References cbmarch_raw_read(), FUNC_ENTER, and FUNC_LEAVE_INT.

Referenced by cbm_device_status(), and vdd_raw_read().

EXTERN 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:
HandleDevice A CBM_FILE which contains the file handle of the driver.
Buffer Pointer to a buffer which hold the bytes to write to the bus.
Count Number 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 209 of file cbm.c.

References cbmarch_raw_write(), FUNC_ENTER, and FUNC_LEAVE_INT.

Referenced by cbm_open(), and vdd_raw_write().

EXTERN 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:
HandleDevice A 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 546 of file cbm.c.

References cbmarch_reset(), FUNC_ENTER, and FUNC_LEAVE_INT.

Referenced by vdd_reset().

EXTERN int CBMAPIDECL cbm_talk CBM_FILE  HandleDevice,
__u_char  DeviceAddress,
__u_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:
HandleDevice A CBM_FILE which contains the file handle of the driver.
DeviceAddress The address of the device on the IEC serial bus. This is known as primary address, too.
SecondaryAddress The 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 315 of file cbm.c.

References cbmarch_talk(), FUNC_ENTER, and FUNC_LEAVE_INT.

Referenced by vdd_talk().

EXTERN 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:
HandleDevice A 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 437 of file cbm.c.

References cbmarch_unlisten(), FUNC_ENTER, and FUNC_LEAVE_INT.

Referenced by cbm_open(), and vdd_unlisten().

EXTERN 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:
HandleDevice A 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 172 of file cbm.c.

References cbmarch_unlock(), FUNC_ENTER, and FUNC_LEAVE.

EXTERN 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:
HandleDevice A 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 465 of file cbm.c.

References cbmarch_untalk(), FUNC_ENTER, and FUNC_LEAVE_INT.

Referenced by vdd_untalk().

EXTERN int CBMAPIDECL cbm_upload CBM_FILE  HandleDevice,
__u_char  DeviceAddress,
int  DriveMemAddress,
const void *  Program,
size_t  Size
 

Upload a program into a floppy's drive memory.

This function writes a program into the drive's memory via use of "M-W" commands.

Parameters:
HandleDevice A CBM_FILE which contains the file handle of the driver.
DeviceAddress The address of the device on the IEC serial bus. This is known as primary address, too.
DriveMemAddress The address in the drive's memory where the program is to be stored.
Program Pointer to a byte buffer which holds the program in the caller's address space.
Size The size of the program to be stored, in bytes.
Returns:
Returns the number of bytes written into program memory. If it does not equal Size, than an error occurred.
If cbm_driver_open() did not succeed, it is illegal to call this function.

Definition at line 73 of file upload.c.

References cbmarch_listen(), cbmarch_raw_write(), cbmarch_unlisten(), DBG_ASSERT, FUNC_ENTER, and FUNC_LEAVE_INT.

Referenced by vdd_upload().


Generated on Sun Apr 30 18:46:13 2006 for opencbm by  doxygen 1.4.2