home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turbo Toolbox
/
Turbo_Toolbox.iso
/
1990
/
12
/
tricks
/
attribut.mod
< prev
next >
Wrap
Text File
|
1990-09-27
|
2KB
|
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 *)