Информационный сервер для программистов: Исходники со всего света. Паскальные исходники со всего света
  Powered by Поисковый сервер Яndex: Найдется ВСЁ!
На Главную Pascal Форум Информер Страны мира
   Экранные Средства    >>    blink
   
 
 Установка Режима Мерцания (Text Mode Blink)   Dmitry Karasik 26.05.1997

как закрасить в видеопамяти ряд символов; как на одном символе задействовать сразу все 16 цветов



1k 
 

- 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