home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 3
/
FREEWARE.BIN
/
ms_dos
/
stopcd30
/
stopcd.c
next >
Wrap
Text File
|
1980-01-02
|
2KB
|
82 lines
/*******************************************************/
/* STOPCD : COPYRIGHT (C) AIH. */
/* NIFTY/MHA02125 */
/* PCVAN/FMCLUB */
/* stop the CD-drive (real mode) */
/* Ver1.0 90.03 proto type */
/* Ver2.0 90.04.30 set time -> stop music */
/* Ver3.0 91.01.19 MSC V5.0対応 */
/*******************************************************/
#include <stdio.h>
#include <dos.h>
union REGS inregs, outregs;
struct SREGS sregs;
main(argc, argv)
int argc;
char *argv[];
{
int ret;
if (argc==1)
ret=stopcd(3);
else
ret=stopcd(atoi(argv));
if (ret!=0)
exit(1);
else
exit(0);
}
stopcd()
{
char *p;
int i=0;
while(i<5){
inregs.h.ah = 0x52;
inregs.h.al = 0xc0;
inregs.x.cx = 0x0000;
inregs.x.di = FP_OFF(p);
sregs.ds = FP_SEG(p);
int86x( 0x93, &inregs, &outregs, &sregs );
i++;
/* printf("ax=%x cx=%x\n", inregs.x.ax, inregs.x.cx); */
/* 停止正常終了 */
if (outregs.h.cl==0x00)
break;
/* DRIVE NOT READY */
if (outregs.h.cl==0x01) {
printf( "CD-ROMドライブが準備できていません.\n");
break;
}
}
if (outregs.h.ah==0x02 || outregs.h.al==0x80) {
printf( "CD-ROMの停止に失敗しました. ごめんなさい(^_^;)\n");
printf("レジスタ情報(ax=%x cx=%x)\n", inregs.x.ax, inregs.x.cx);
}
printf( "CD-ROMを停止しました. (^_^)\n");
return(outregs.x.cx);
}
wait( mit )
int mit;
{
int i;
long fst,lst;
if (mit!=0){
time( &fst );
for( ; ; ){
time( &lst );
if( (fst+(long)mit) < lst ){ break; }
}
}
return 0;
}