home *** CD-ROM | disk | FTP | other *** search
Modula Implementation | 1990-09-28 | 1.8 KB | 72 lines |
- (*-------------------------------------------------------*)
- (* Attribut.MOD *)
- (* Modul zum Wechseln des Hintergrundattributes für *)
- (* Hercules, CGA und EGA in Fitted Modula-2 *)
- (* (C) 1990 toolbox & J. Braun *)
- (*-------------------------------------------------------*)
- IMPLEMENTATION MODULE Attribut;
-
- FROM SYSTEM IMPORT ASSEMBLER;
- FROM System IMPORT Trap, AX, BX;
-
- PROCEDURE BackgroundMode (flash: BOOLEAN);
- CONST
- cga = 0;
- hercmono = 1;
- egavga = 2;
- TYPE
- Registers = RECORD
- CASE b: BOOLEAN OF
- TRUE: w: CARDINAL;
- | FALSE: l, h: CHAR;
- END;
- END;
- VAR
- RegAX,
- RegBX: Registers;
- gd : INTEGER;
- hires,
- p : CHAR;
- port : CARDINAL;
-
- BEGIN
- RegAX.h := CHR(15); AX := RegAX.w;
- Trap(10H);
- RegAX.w := AX;
- IF RegAX.l = CHR(7) THEN gd := hercmono
- ELSE
- ASM
- PUSH DS
- XOR DX, DX
- MOV DS, DX
- MOV BX, 04A8H
- MOV DX, DS:[BX]
- MOV @hires, DX
- POP DS
- END;
- IF hires > CHR(0) THEN gd := egavga
- ELSE gd := cga; END;
- END;
- IF gd = hercmono THEN port := 3B8H
- ELSE port := 3D8H; END;
- IF gd < egavga THEN
- IF flash = FALSE THEN p := CHR(09H)
- ELSE p := CHR(29H); END;
- ASM
- MOV DX, @port
- MOV AX, @p
- OUT DX, AX
- END
- ELSE
- RegAX.w := 1003H;
- AX := RegAX.w;
- IF flash = FALSE THEN RegBX.l := CHR(0)
- ELSE RegBX.l := CHR(1); END;
- BX := RegBX.w;
- Trap(10H);
- END;
- END BackgroundMode;
- END Attribut.
- (*-------------------------------------------------------*)
- (* Ende von Attribut.MOD *)