1
0
mirror of https://github.com/Interlisp/maiko.git synced 2026-01-14 15:36:34 +00:00

145 lines
3.6 KiB
C
Executable File

/* $Id: cdrom.h,v 1.2 1999/01/03 02:05:54 sybalsky Exp $ (C) Copyright Venue, All Rights Reserved */
/***********************************
file: cdrom_audio.h
***********************************/
/* function number for CD audio functions */
#define CD_OPEN 1
#define CD_CLOSE 2
#define CD_READ 3
#define CD_DISK_INFO 4
#define CD_TRACK_INFO 5
#define CD_START 6
#define CD_STOP 7
#define CD_PLAY 8
#define CD_Q_READ 9
#define CD_PAUSE 10
#define CD_RESUME 11
#define CD_VOLUME 12
#define CD_EJECT 13
/* function numbers for CD-ROM */
#define CDROM_INIT_DRV 1
#define CDROM_KEN_INT 2
#define CDROM_CHOSAKU 3
#define CDROM_MIKANA 4
#define CDROM_MIKANAT 5
#define CDROM_HYOKI 6
#define CDROM_HYOKIT 7
#define CDROM_EIJI 8
#define CDROM_EIJIT 9
#define CDROM_SUJI 10
#define CDROM_SUJIT 11
#define CDROM_ZENKANA 12
#define CDROM_ZENKANAT 13
#define CDROM_ZENKANJ 14
#define CDROM_ZENKANJT 15
#define CDROM_ZENEIJI 16
#define CDROM_ZENEIJIIT 17
#define CDROM_KOHKANA 18
#define CDROM_KOHKANAT 19
#define CDROM_KOHKANJ 20
#define CDROM_KOHKANJT 21
#define CDROM_KOHEIJI 22
#define CDROM_KOHEIJIT 23
#define CDROM_ZUHAN 24
#define CDROM_JYOKEN 25
#define CDROM_JYOKENT 26
#define CDROM_MENU 27
#define CDROM_AUDIOST 28
#define CDROM_AUDIOED 29
#define CDROM_AUDIOQ_GET 30
#define CDROM_GAIJI 31
#define CDROM_ZENGO 32
#define CDROM_KEIZOKU 33
#define CDROM_SYURYO 34
typedef unsigned char BYTE;
typedef unsigned long DWORD;
/*
extern DWORD CDred_lbn();
extern void CDlbn_red();
extern int CDopen();
extern int CDclose();
extern int CDread();
extern int CDdisk_info();
extern int CDtrack_info();
extern int CDstart();
extern int CDstop();
extern int CDplay();
extern int CDqread();
extern int CDpause();
extern int CDresume();
extern int CDvolume();
extern int CDeject();
*/
#define LispStringToCString(Lisp, C, MaxLen) \
{ \
OneDArray *arrayp; \
char *base, *dp; \
short *sbase; \
int i, length; \
arrayp = (OneDArray *)(Addr68k_from_LADDR(Lisp)); \
length = min(MaxLen, arrayp->totalsize); \
switch(arrayp->typenumber) \
{ \
case THIN_CHAR_TYPENUMBER: \
base = ((char *)(Addr68k_from_LADDR(arrayp->base))) \
+ ((int)(arrayp->offset)); \
strncpy(C, base, length); \
C[length] = '\0'; \
break; \
\
case FAT_CHAR_TYPENUMBER: \
sbase = ((short *)(Addr68k_from_LADDR(arrayp->base))) \
+ ((int)(arrayp->offset)); \
for(i=0,dp=C;i<(length);i++) \
*dp++ = (char)(*sbase++); \
*dp = '\0'; \
break; \
default: \
error("LispStringToCString can not handle\n"); \
} \
}
#define LispStringToCString2(Lisp, C, MaxLen) \
{ \
OneDArray *arrayp; \
char *base, *dp; \
short *sbase; \
int i, length; \
arrayp = (OneDArray *)(Addr68k_from_LADDR(Lisp)); \
length = min(MaxLen, arrayp->totalsize); \
switch(arrayp->typenumber) \
{ \
case THIN_CHAR_TYPENUMBER: \
base = ((char *)(Addr68k_from_LADDR(arrayp->base))) \
+ ((int)(arrayp->offset)); \
strncpy(C, base, length); \
C[length] = '\0'; \
break; \
\
case FAT_CHAR_TYPENUMBER: \
sbase = ((short *)(Addr68k_from_LADDR(arrayp->base))) \
+ ((int)(arrayp->offset)); \
for(i=0,dp=C;i<(length);i++) { \
*dp++ = (char)(*sbase / 256 ); \
*dp++ = (char)(*sbase % 256 ); \
sbase++; \
} \
*dp = '\0'; \
break; \
default: \
error("LispStringToCString can not handle\n"); \
} \
}
#define min(a, b) ((a <= b)?a:b)