| version 1.1, 2004/08/01 05:31:30 | version 1.8, 2004/08/13 04:08:33 | 
| Line 1 | Line 1 | 
 | #include        "compiler.h" | #include        "compiler.h" | 
 | #include        "soundmng.h" | #include        "soundmng.h" | 
 | #include        "pccore.h" | #include        "pccore.h" | 
| #include        "x1_io.h" | #include        "iocore.h" | 
| #include        "x1_fdc.h" | #include        "fdd_mtr.h" | 
 |  |  | 
 |  |  | 
| extern  FDC_REGS        FDC; | enum { | 
| BYTE            curevent = 0; | MOVE1TCK_MS             = 30, | 
| DWORD           nextevent = 0; | MOVEMOTOR1_MS   = 30, | 
| BYTE            FDC_HEAD[4] = {0, 0, 0, 0}; | SEKSEC_MS               = 20 | 
| DWORD           FDC_TIME[4] = {0, 0, 0, 0}; | }; | 
| short           curdrv = 0; |  | 
 |  |  | 
| #define         MOVE1TCK_MS             30 | _FDDMTR         fddmtr; | 
| #define         MOVEMOTOR1_MS   30 |  | 
| #define         SEKSEC_MS               20 |  | 
 |  |  | 
 | void fddmtr_event(void) { |  | 
 |  |  | 
| switch(curevent) { | static void fddmtr_event(void) { | 
|  |  | 
|  | switch(fddmtr.curevent) { | 
 | case 100: | case 100: | 
 | soundmng_pcmstop(SOUND_PCMSEEK); | soundmng_pcmstop(SOUND_PCMSEEK); | 
| nextevent += MOVEMOTOR1_MS; | fddmtr.nextevent += MOVEMOTOR1_MS; | 
| curevent = 1; | fddmtr.curevent = 1; | 
| break; |  | 
| case 80: |  | 
| curevent = 0; |  | 
 | break; | break; | 
 |  |  | 
 | default: | default: | 
| curevent = 0; | fddmtr.curevent = 0; | 
 | break; | break; | 
 | } | } | 
 | } | } | 
 |  |  | 
 |  |  | 
 |  | // ---- | 
 |  |  | 
 | void fddmtr_init(void) { | void fddmtr_init(void) { | 
 |  |  | 
| fddmtr_event(); | soundmng_pcmstop(SOUND_PCMSEEK); | 
| memset(FDC_HEAD, 24, sizeof(FDC_HEAD)); | ZeroMemory(&fddmtr, sizeof(fddmtr)); | 
| ZeroMemory(FDC_TIME, sizeof(FDC_TIME)); | FillMemory(fddmtr.head, sizeof(fddmtr.head), 24); | 
 | } | } | 
 |  |  | 
| void fddmtr_callback(DWORD time) { | void fddmtr_callback(UINT32 time) { | 
 |  |  | 
| if ((curevent) && (time >= nextevent)) { | if ((fddmtr.curevent) && (time >= fddmtr.nextevent)) { | 
 | fddmtr_event(); | fddmtr_event(); | 
 | } | } | 
 | } | } | 
 |  |  | 
 | void fddmtr_drvset(void) { | void fddmtr_drvset(void) { | 
 |  |  | 
| curdrv = FDC.drv; | fddmtr.curdrv = fdc.s.drv; | 
| if ((!FDC_TIME[curdrv]) && (!FDC.motor)) { | if ((!fddmtr.eventtime[fddmtr.curdrv]) && (!fdc.s.motor)) { | 
| FDC_TIME[curdrv] = GetTickCount() + 5000; | fddmtr.eventtime[fddmtr.curdrv] = GETTICK() + 5000; | 
| } | } | 
| else if ((FDC_TIME[curdrv]) && (FDC.motor)) { | else if ((fddmtr.eventtime[fddmtr.curdrv]) && (fdc.s.motor)) { | 
| if (FDC_TIME[curdrv] < GetTickCount()) { | if (fddmtr.eventtime[fddmtr.curdrv] < GETTICK()) { | 
| FDC_HEAD[curdrv] = 24; | fddmtr.head[fddmtr.curdrv] = 24; | 
 | } | } | 
| FDC_TIME[curdrv] = 0; | fddmtr.eventtime[fddmtr.curdrv] = 0; | 
 | } | } | 
 | } | } | 
 |  |  | 
| Line 67  void fddmtr_motormove(void) { | Line 64  void fddmtr_motormove(void) { | 
 |  |  | 
 | int             regmove; | int             regmove; | 
 |  |  | 
| regmove = FDC_HEAD[curdrv] - FDC.c; | regmove = fddmtr.head[fddmtr.curdrv] - fdc.s.c; | 
| FDC_HEAD[curdrv] = FDC.c; | fddmtr.head[fddmtr.curdrv] = fdc.s.c; | 
| if ((!xmilcfg.MOTOR) || (xmilcfg.NOWAIT)) { | if (!xmilcfg.MOTOR) { | 
 | return; | return; | 
 | } | } | 
 | if (regmove < 0) { | if (regmove < 0) { | 
 | regmove *= (-1); | regmove *= (-1); | 
 | } | } | 
 | if (regmove == 1) { | if (regmove == 1) { | 
| if (curevent < 80) { | if (fddmtr.curevent < 80) { | 
 | fddmtr_event(); | fddmtr_event(); | 
 | soundmng_pcmplay(SOUND_PCMSEEK1, FALSE); | soundmng_pcmplay(SOUND_PCMSEEK1, FALSE); | 
| curevent = 80; | fddmtr.curevent = 80; | 
| nextevent = GetTickCount() + MOVEMOTOR1_MS; | fddmtr.nextevent = GETTICK() + MOVEMOTOR1_MS; | 
 | } | } | 
 | } | } | 
 | else if (regmove) { | else if (regmove) { | 
| if (curevent < 100) { | if (fddmtr.curevent < 100) { | 
 | fddmtr_event(); | fddmtr_event(); | 
 | soundmng_pcmplay(SOUND_PCMSEEK, TRUE); | soundmng_pcmplay(SOUND_PCMSEEK, TRUE); | 
| curevent = 100; | fddmtr.curevent = 100; | 
| nextevent = GetTickCount() + regmove * MOVE1TCK_MS; | fddmtr.nextevent = GETTICK() + regmove * MOVE1TCK_MS; | 
 | } | } | 
 | } | } | 
 | } | } | 
 |  |  | 
| void fddmtr_waitsec(BYTE value) { | void fddmtr_waitsec(UINT8 value) { | 
 |  |  | 
| if ((!xmilcfg.MOTOR) || (xmilcfg.NOWAIT)) { | if (!xmilcfg.MOTOR) { | 
 | return; | return; | 
 | } | } | 
| if ((FDC.r != value) && (curevent < 1)) { | if ((fdc.s.r != value) && (fddmtr.curevent < 1)) { | 
 | fddmtr_event(); | fddmtr_event(); | 
| curevent = 1; | fddmtr.curevent = 1; | 
| nextevent = GetTickCount() + SEKSEC_MS; | fddmtr.nextevent = GETTICK() + SEKSEC_MS; | 
 | } | } | 
 | } | } | 
 |  |  |