home *** CD-ROM | disk | FTP | other *** search
-
- UNIT GIFLIED;
- {
- Modul GIFLIED für Programm GIF
-
- * Spielen eines Liedes
- * Auswahl explizit, Alle oder per Zufall
-
- Paul Schubert, Rottweiler Str. 8, D6000 Frankfurt /M 1, 069 / 231145
-
- }
- {$F+}
- {$I GIFOVR.INC} {DEFINE OVERLAYS JA / NEIN}
- {$IFDEF OVERLAYS}
- {$O+}
- {$ENDIF OVERLAYS}
-
-
- INTERFACE
-
-
- USES DOS,ADLIB,PARRAY,TPDOS
- ,GIFVAR,GIFMISC
- ;
-
-
- PROCEDURE SPIELELIED(LIED:STRING);
-
-
- IMPLEMENTATION
-
-
- TYPE SOF = RECORD O,S : WORD; END;
-
-
-
- PROCEDURE NEWI10; INTERRUPT;
- BEGIN
- END; { NEWI10 }
-
-
- PROCEDURE SPIELELIED(LIED:STRING);
- VAR WELCHES,AP : STRING;
- I : INTEGER;
- LNR : WORD;
- R : REGISTERS;
- SWAP : BOOLEAN;
- CMD : STRING;
- OLDI10 : POINTER;
- BEGIN
- IF LIED <> '' THEN BEGIN
- IF POS('*',LIED) > 0 THEN BEGIN
- IF LZ = 0 THEN BEGIN
- {$IFDEF MITDIAGNOSE}
- IF DIAGNOSE THEN BEGIN
- WRITELN(' keine Lieder gefunden ');
- END;
- {$ENDIF MITDIAGNOSE}
- EXIT;
- END;
- IF POS('**',LIED) > 0 THEN BEGIN
- { LIED PER ZUFALLSGENERATOR AUSSUCHEN }
- REPEAT
- LNR := SUCC(RANDOM(LZ));
- UNTIL (LNR <> LETZTLIED) OR (LZ < 2);
- WELCHES := LIEDER[LNR];
- LETZTLIED := LNR;
- END ELSE BEGIN
- { ALLE LIEDER DER REIHE NACH }
- WELCHES := LIEDER[LP];
- INC(LP);
- IF LP > LZ THEN LP := 1;
- END;
- END ELSE WELCHES := LIED;
-
- IF SNDDRV <> '' THEN BEGIN
- IF NOT SOUNDINSTALLED THEN BEGIN
- IF MAXAVAIL < $8000 THEN EXIT; { NICHT GENUG SPEICHER FÜR SOUND.COM }
- FREEPTR := PTR(SOF(FREEPTR).S - $800,0);
- R.AX := $4A00;
- R.BX := $FFFF;
- R.ES := (PREFIXSEG);
- MSDOS(R);
- IF (R.FLAGS AND FCARRY) <> 0 THEN BEGIN
- R.AX := $4A00;
- R.BX := R.BX - $800;
- R.ES := (PREFIXSEG);
- MSDOS(R);
- IF (R.FLAGS AND FCARRY) = 0 THEN BEGIN
- {$IFDEF MITDIAGNOSE}
- IF NOT DIAGNOSE THEN BEGIN
- {$ENDIF MITDIAGNOSE}
- GETINTVEC($10,OLDI10); { VIDEO- BIOS- AUFRUFE DURCH }
- SETINTVEC($10,@NEWI10); { SOUND.COM UNTERDRÜCKEN }
- {$IFDEF MITDIAGNOSE}
- END ELSE BEGIN
- WRITELN(SNDDRV,' ',DRVCMD);
- END;
- {$ENDIF MITDIAGNOSE}
- EXEC(SNDDRV,DRVCMD);
- {$IFDEF MITDIAGNOSE}
- IF NOT DIAGNOSE THEN BEGIN
- {$ENDIF MITDIAGNOSE}
- SETINTVEC($10,OLDI10); { VIDEO- BIOS- AUFRUFE REAKTIVIEREN }
- {$IFDEF MITDIAGNOSE}
- END;
- {$ENDIF MITDIAGNOSE}
- END;
- END;
- CHECKDRIVER;
- END; { IF NOT SOUNDINSTALLED }
- END; { IF SNDDRV <> '' }
-
- IF MAXAVAIL < 400000 THEN BEGIN
- PARRDISPOSE(A0);
- SCROLL := FALSE;
- (*
- PASWAPOUT(A0,SWAPPATH+'$$$GIF.TMP');
- SWAP := TRUE;
- END ELSE SWAP := FALSE;
- *)
- END;
-
- CMD := SNDPRG + ' ' + WELCHES + ' ' + SNDBNK;
- {$IFDEF MITDIAGNOSE}
- IF NOT DIAGNOSE THEN BEGIN
- {$ENDIF MITDIAGNOSE}
- GETINTVEC($10,OLDI10); { VIDEO- BIOS- AUFRUFE DURCH DAS }
- SETINTVEC($10,@NEWI10); { LIED- SPIEL- PROGRAMM UNTERDRÜCKEN }
- {$IFDEF MITDIAGNOSE}
- END ELSE BEGIN
- GETDIR(0,AP);
- WRITELN('»',AP,'« ',MAXAVAIL);
- WRITELN(CMD);
- (* DELAY(200); *)
- END;
- {$ENDIF MITDIAGNOSE}
- I := EXECDOS(CMD,TRUE,NIL);
- {$IFDEF MITDIAGNOSE}
- IF NOT DIAGNOSE THEN BEGIN
- {$ENDIF MITDIAGNOSE}
- SETINTVEC($10,OLDI10); { VIDEO- BIOS- AUFRUFE REAKTIVIEREN }
- {$IFDEF MITDIAGNOSE}
- END;
- {$ENDIF MITDIAGNOSE}
- (*
- IF SWAP THEN PASWAPIN(A0,SWAPPATH+'$$$GIF.TMP',TRUE);
- *)
- END;
- (* DELAY(100); *)
- CHECKESC;
- END; { SPIELELIED }
-
-
-
- END.
-
-