27998-1 (661487), страница 2
Текст из файла (страница 2)
POP DS
MOV Cols,AX
MOV Rows,BL
MUL BX
MOV PageSize,AX
MOV ActivePage,DL
END;
PROCEDURE ClearScreen; ASSEMBLER;
ASM
{Set cursor position}
PUSH DS
MOV AX,0040h
MOV DS,AX
MOV BX,0050h
XOR DH,DH
MOV DL,ActivePage
ADD BX,DX
ADD BX,DX
MOV WORD PTR DS:[BX],0
POP DS
{Clearing active page}
MOV CX,PageSize
XOR AX,AX
XOR BX,BX
MOV AL,ActivePage
MOV BX,PageSize
MUL BX
MOV VOffset,AX
MOV BX,VOffset
MOV CX,PageSize
MOV AX,0B800h
PUSH DS
MOV DS,AX
@loop_label2:
MOV WORD PTR DS:[BX],0000h
INC BX
MOV WORD PTR DS:[BX],000Fh
INC BX
LOOP @loop_label2
POP DS
END;
PROCEDURE PutSymbol(Character:CHAR;Attr:BYTE;PosX,PosY:BYTE); ASSEMBLER;
ASM
MOV CH,Attr
MOV CL,Character
XOR AX,AX
MOV AL,PosY
MOV BX,Cols
ADD BX,BX
MUL BX
XOR BX,BX
MOV BL,PosX
ADD BL,PosX
ADD AX,BX
MOV ChOff,AX
MOV BX,VOffset
ADD BX,ChOff
PUSH DS
MOV AX,0B800h
MOV DS,AX
MOV WORD PTR DS:BX,CX
POP DS
END;
BEGIN
Dir:=TRUE;
ReadScreenProp;
ClearScreen;
{WriteLn(PageSize,' ',VOffset,' ',ActivePage,' ',Cols,' ',Rows,' ',ChOff);}
PutSymbol(' ',$0000,0,0);
PutSymbol('V',$1E,3,1);
PutSymbol('I',$1E,3,2);
PutSymbol('D',$1E,3,3);
PutSymbol('E',$1E,3,4);
PutSymbol('O',$1E,3,5);
PutSymbol('M',$70,2,4);
PutSymbol('E',$02,3,4);
PutSymbol('M',$70,4,4);
PutSymbol('O',$70,5,4);
PutSymbol('R',$70,6,4);
PutSymbol('Y',$70,7,4);
J:=0;
REPEAT
IF Dir THEN PutSymbol(' ',$00,J-1,11)
ELSE PutSymbol(' ',$00,J+6,11);
PutSymbol('D',$0E,J,11);
PutSymbol('C',$0E,J+1,11);
PutSymbol('S',$0E,J+2,11);
PutSymbol('S',$0E,J+3,11);
PutSymbol('-',$0E,J+4,11);
PutSymbol('1',$0E,J+5,11);
IF (J
ELSE IF (NOT Dir) AND (J>0)
THEN DEC(J)
ELSE BEGIN
Dir:=NOT Dir;
END;
Delay(120);
UNTIL KeyPressed;
ClearScreen;
END.














