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
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)
|