- 4INT ----------------------------------------------------- It's interesting -
Msg : 98 of 110 Addr Date
From : Dmitry Karasik 2:464/46.36 26.05.97
Subj : Blink
-------------------------------------------------------------------------------
++e||o Aleksey!
|` ``
`
Вcк Май 25 1997 18:22, Aleksey Skripka wrote to All:
AS> Интересует инфа по поводу того как :
AS> 1) как закрасить в видеопамяти ряд символов ?
AS> 2) как на одном(!) символе(8х16) заюзать сразу все 16 цветов ?
AS> (это точно видел, и вот стало интересно)
Вот, посмотри BLINK.PAS ...
С наилучшими, Dmitry
--- Бешеный Маньяк 2.50+
* Origin: Remember - Crazy Chickatilo's watching you! (2:464/46.36)
{> Cut here. FileName= BLINK.PAS }
{-cd}
Procedure DOS_Text_Blink(BlinkState : Byte); Assembler; Asm
mov ax, 1003h
mov bl, BlinkState
int 10h
End;
Procedure DOS_Text_VideoAddr; Near; Assembler; Asm
mov dx, SegB800
mov es, dx
mov dx, 160
mul dx
mov di, bx
shl di, 1
add di, ax
End;
Procedure DOS_TextOut(S : String; X, Y : Integer); Assembler; Asm
mov ax, y
mov bx, x
call DOS_Text_VideoAddr
push ds
lds si, s
lodsb
xor ch, ch
mov cl, al
jcxz @@1
@@2:
lodsb
stosb
inc di
loop @@2
@@1:
pop ds
End;
Procedure DOS_ChangeAttribute(Number, X, Y, Color : Integer); Assembler; Asm
mov ax, y
mov bx, y
call DOS_Text_VideoAddr
mov cx, Number
jcxz @@1
mov al, byte ptr Color
@@2:
inc di
stosb
loop @@2
@@1:
End;
Function DOS_KeyPressed : Boolean; Assembler; Asm
mov ah, 1
int 16h
End;
Function DOS_ReadKey : Word; Assembler; Asm
xor ax, ax
int 16h
End;
Const
VideoStatus = $3DA;
KeyStatus = $60;
BackRay = 8;
NoTracing = 1;
ScanLines = 16;
Colors : Array[1..ScanLines] of Byte = (
$F0, $E0, $D0, $C1, $B2, $2C, $9E, $7E,
$6F, $3F, $2E, $1F, $02, $F0, $C1, $30
);
Var
Count : Byte;
Begin
DOS_Text_Blink(0);
DOS_TextOut('Hello !', 0, 0);
Repeat
Repeat Until (Port[Vide
|