home *** CD-ROM | disk | FTP | other *** search
- (* ----------------------------------------------------------------------- *)
- (* DCTURMS.PAS *)
- (* Maschinen-/Compilerabhaengiger Teil des didaktischen Computers *)
- (* Version: Turbo Pascal & MS-DOS *)
- (* Die Prozeduren "RevOn", "RevOff", "CrsOn" und "CrsOff" koennen bei an- *)
- (* deren Rechnern z.B. durch die entspr. Escape-Sequenzen realisiert wer- *)
- (* den. Gleiches gilt fuer "GotoXY", z.B. ATARI ST. *)
- VAR Regs: RECORD AX, BX, CX, DX, BP, SI, DI, DS, ES, FL: INTEGER; END;
-
- PROCEDURE RevOn; (* reverse (inverse) Textdarstellung an *)
- BEGIN TextColor(Black); TextBackGround(White); END;
-
- PROCEDURE RevOff; (* reverse (inverse) Textdarsetllung aus *)
- BEGIN TextColor(White); TextBackGround(Black); END;
-
- PROCEDURE CrsOn; (* Cursor einschalten *)
- BEGIN Regs.AX := $100; Regs.CX := 1543; Intr($10,Regs); END;
-
- PROCEDURE CrsOff; (* Cursor ausschalten *)
- BEGIN Regs.AX := $100; Regs.CX := 128 SHL 8; Intr($10,Regs); END;
-
- PROCEDURE Bell; (* einen Piepser ertoenen lassen *)
- BEGIN Write(Chr(7)); END;
-
- PROCEDURE Exit_DC; (* alles wieder beim alten, wenn Programm beendet wird *)
- BEGIN ClrScr; GotoXY(1,1); RevOff; CrsOn; END;
-
- FUNCTION ReadKeyboard: CHAR; (* von der Tastatur ohne Bildschirmecho lesen *)
- VAR ch: CHAR;
- BEGIN Read(Kbd, ch); ReadKeyboard := ch; END;
-
- FUNCTION KeyEntered: BOOLEAN; (* wurde eine Taste gedrueckt ? *)
- BEGIN KeyEntered := KeyPressed; END;
-
- (* eine Datei zum Lesen oeffnen. Die I/O-Ueberwachung durch das Laufzeit- *)
- (* system wird dazu kurzzeitig deaktiviert (I- bzw. I+). Konnte die Datei *)
- (* geoeffnet werden, ist "Open_File" = TRUE, sonst FALSE. *)
- FUNCTION Open_File (filename: lines): BOOLEAN;
- BEGIN
- Assign(inp_file, filename); (*$I-*) ReSet(inp_file); (*$I+*)
- Open_File := (IOResult = null);
- END;
-
- PROCEDURE Init_Sys;
- (* hier notfalls die entsprechenden ASCII-Codes Ihres Systems einsetzen: *)
- BEGIN (* Grafiksymbole, einfache Linien: *)
- ve := Chr(179); he := Chr(196); (* senkrechter, waagerechter Strich *)
- ce := Chr(197); (* Kreuz *)
- dle := Chr(217); dre := Chr(192); (* rechte untere, linke untere Ecke *)
- ule := Chr(191); ure := Chr(218); (* rechte obere, linke obere Ecke *)
- uhe := Chr(193); dhe := Chr(194); (* T-Stueck: nach oben, nach unten *)
- rve := Chr(195); lve := Chr(180); (* T-Stueck: nach rechts,nach links *)
- vd := Chr(186); (* senkrechte, doppelte Linie *)
- bar := Chr(179); sl := Chr(186); (* senkr. Strich: einfach, doppelt *)
- u_arrow := Chr(24); d_arrow := Chr(25); (* Pfeil nach oben, nach unten *)
- led_on := Chr(2); led_off := Chr(1); (* voller Kreis, leerer Kreis *)
- time := 1000; (* Zeitverzoegerung bei Prog-Ausfuehrung im Delay-Modus *)
- END;
- (* ----------------------------------------------------------------------- *)
- (* DCTURMS.PAS *)