home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / library / dos / grafik / vgakit / gif / source / giflied.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1991-10-14  |  3.7 KB  |  159 lines

  1.  
  2. UNIT GIFLIED;
  3. {
  4.   Modul GIFLIED für Programm GIF
  5.  
  6.   * Spielen eines Liedes
  7.   * Auswahl explizit, Alle oder per Zufall
  8.  
  9.   Paul Schubert, Rottweiler Str. 8, D6000 Frankfurt /M 1, 069 / 231145
  10.  
  11. }
  12. {$F+}
  13. {$I GIFOVR.INC} {DEFINE OVERLAYS JA / NEIN}
  14. {$IFDEF OVERLAYS}
  15. {$O+}
  16. {$ENDIF OVERLAYS}
  17.  
  18.  
  19. INTERFACE
  20.  
  21.  
  22. USES  DOS,ADLIB,PARRAY,TPDOS
  23.       ,GIFVAR,GIFMISC
  24.       ;
  25.  
  26.  
  27. PROCEDURE SPIELELIED(LIED:STRING);
  28.  
  29.  
  30. IMPLEMENTATION
  31.  
  32.  
  33. TYPE  SOF        = RECORD O,S : WORD; END;
  34.  
  35.  
  36.  
  37. PROCEDURE NEWI10; INTERRUPT;
  38. BEGIN
  39. END; { NEWI10 }
  40.  
  41.  
  42. PROCEDURE SPIELELIED(LIED:STRING);
  43. VAR   WELCHES,AP  : STRING;
  44.       I           : INTEGER;
  45.       LNR         : WORD;
  46.       R           : REGISTERS;
  47.       SWAP        : BOOLEAN;
  48.       CMD         : STRING;
  49.       OLDI10      : POINTER;
  50. BEGIN
  51.   IF LIED <> '' THEN BEGIN
  52.     IF POS('*',LIED) > 0 THEN BEGIN
  53.       IF LZ = 0 THEN BEGIN
  54. {$IFDEF MITDIAGNOSE}
  55.         IF DIAGNOSE THEN BEGIN
  56.           WRITELN(' keine Lieder gefunden ');
  57.         END;
  58. {$ENDIF MITDIAGNOSE}
  59.         EXIT;
  60.       END;
  61.       IF POS('**',LIED) > 0 THEN BEGIN
  62. { LIED PER ZUFALLSGENERATOR AUSSUCHEN }
  63.         REPEAT
  64.           LNR := SUCC(RANDOM(LZ));
  65.         UNTIL (LNR <> LETZTLIED) OR (LZ < 2);
  66.         WELCHES := LIEDER[LNR];
  67.         LETZTLIED := LNR;
  68.       END ELSE BEGIN
  69. { ALLE LIEDER DER REIHE NACH }
  70.         WELCHES := LIEDER[LP];
  71.         INC(LP);
  72.         IF LP > LZ THEN LP := 1;
  73.       END;
  74.     END ELSE WELCHES := LIED;
  75.  
  76.     IF SNDDRV <> '' THEN BEGIN
  77.       IF NOT SOUNDINSTALLED THEN BEGIN
  78.         IF MAXAVAIL < $8000 THEN EXIT; { NICHT GENUG SPEICHER FÜR SOUND.COM }
  79.         FREEPTR := PTR(SOF(FREEPTR).S - $800,0);
  80.         R.AX := $4A00;
  81.         R.BX := $FFFF;
  82.         R.ES := (PREFIXSEG);
  83.         MSDOS(R);
  84.         IF (R.FLAGS AND FCARRY) <> 0 THEN BEGIN
  85.           R.AX := $4A00;
  86.           R.BX := R.BX - $800;
  87.           R.ES := (PREFIXSEG);
  88.           MSDOS(R);
  89.           IF (R.FLAGS AND FCARRY) = 0 THEN BEGIN
  90. {$IFDEF MITDIAGNOSE}
  91.             IF NOT DIAGNOSE THEN BEGIN
  92. {$ENDIF MITDIAGNOSE}
  93.               GETINTVEC($10,OLDI10);  { VIDEO- BIOS- AUFRUFE DURCH }
  94.               SETINTVEC($10,@NEWI10); { SOUND.COM UNTERDRÜCKEN }
  95. {$IFDEF MITDIAGNOSE}
  96.             END ELSE BEGIN
  97.               WRITELN(SNDDRV,' ',DRVCMD);
  98.             END;
  99. {$ENDIF MITDIAGNOSE}
  100.             EXEC(SNDDRV,DRVCMD);
  101. {$IFDEF MITDIAGNOSE}
  102.             IF NOT DIAGNOSE THEN BEGIN
  103. {$ENDIF MITDIAGNOSE}
  104.               SETINTVEC($10,OLDI10);  { VIDEO- BIOS- AUFRUFE REAKTIVIEREN  }
  105. {$IFDEF MITDIAGNOSE}
  106.             END;
  107. {$ENDIF MITDIAGNOSE}
  108.           END;
  109.         END;
  110.         CHECKDRIVER;
  111.       END; { IF NOT SOUNDINSTALLED }
  112.     END; { IF SNDDRV <> '' }
  113.  
  114.     IF MAXAVAIL < 400000 THEN BEGIN
  115.       PARRDISPOSE(A0);
  116.       SCROLL := FALSE;
  117. (*
  118.       PASWAPOUT(A0,SWAPPATH+'$$$GIF.TMP');
  119.       SWAP := TRUE;
  120.     END ELSE SWAP := FALSE;
  121. *)
  122.     END;
  123.  
  124.     CMD := SNDPRG + ' ' + WELCHES + ' ' + SNDBNK;
  125. {$IFDEF MITDIAGNOSE}
  126.     IF NOT DIAGNOSE THEN BEGIN
  127. {$ENDIF MITDIAGNOSE}
  128.       GETINTVEC($10,OLDI10);  { VIDEO- BIOS- AUFRUFE DURCH DAS     }
  129.       SETINTVEC($10,@NEWI10); { LIED- SPIEL- PROGRAMM UNTERDRÜCKEN }
  130. {$IFDEF MITDIAGNOSE}
  131.     END ELSE BEGIN
  132.       GETDIR(0,AP);
  133.       WRITELN('»',AP,'« ',MAXAVAIL);
  134.       WRITELN(CMD);
  135.       (* DELAY(200); *)
  136.     END;
  137. {$ENDIF MITDIAGNOSE}
  138.     I := EXECDOS(CMD,TRUE,NIL);
  139. {$IFDEF MITDIAGNOSE}
  140.     IF NOT DIAGNOSE THEN BEGIN
  141. {$ENDIF MITDIAGNOSE}
  142.       SETINTVEC($10,OLDI10);  { VIDEO- BIOS- AUFRUFE REAKTIVIEREN  }
  143. {$IFDEF MITDIAGNOSE}
  144.     END;
  145. {$ENDIF MITDIAGNOSE}
  146. (*
  147.     IF SWAP THEN PASWAPIN(A0,SWAPPATH+'$$$GIF.TMP',TRUE);
  148. *)
  149.   END;
  150.   (* DELAY(100); *)
  151.   CHECKESC;
  152. END; { SPIELELIED }
  153.  
  154.  
  155.  
  156. END.
  157.  
  158.  
  159.