// syscd.h #include "cdparam.h" #define bcd2x(n) (((n) >> 4 & 15) * 10 + ((n) & 15)) #define x2bcd(n) (((n) / 10 << 4) + (n) % 10) #pragma options align=mac68k typedef struct { unsigned char ctl; unsigned char min; unsigned char sec; unsigned char blk; } INDEX; #pragma options align=reset enum { CD_SCSI = 'scsi', CD_ATAPI = 'atpi', CD_MAX_DRIVES = 64, CD_MAX_DEVICES = 32 }; typedef struct _syscd { short d_refNum; short d_numDrives; long d_kind; short d_bus; short d_id; short d_lun; short d_driveNums[CD_MAX_DRIVES]; t_symbol *d_ownername; } t_syscd; typedef struct _cdtoc { short c_ntracks; short c_first; short c_last; INDEX c_toc[1]; } t_cdtoc; extern t_syscd syscd_devices[]; extern long syscd_devcount; short syscd_findnext(void); void syscd_find(t_symbol *objname); void syscd_add(t_symbol *objname, short refNum); void syscd_open(t_symbol *objname); short syscd_control(t_syscd *x, CDCntrlParam *cs, short drive, short whichCall, short async); short syscd_status(t_syscd *x, CDCntrlParam *cs, short drive, short whichCall, short async); void syscd_setup(t_syscd *x, CDCntrlParam *cs, short drive, short whichCall, short async); short syscd_getspeed(t_syscd *x, short drive); void syscd_stopplay(t_syscd *x, short drive); void syscd_setspeed(t_syscd *x, short drive, short speed); t_syscd *syscd_select(t_symbol *objname, short argc, t_atom *argv); short syscd_ordcheck(t_symbol *s); short syscd_ispound(t_symbol *s); short syscd_gettoc(t_syscd *x, short drive, t_cdtoc **toc, short dopost); void syscd_eject(t_syscd *x, short drive); void syscd_unmount(t_syscd *x, t_symbol *s, short argc, t_atom *argv); pascal void syscd_ejectcompletion(ParmBlkPtr *pb);