Эффект пламени
TRUE EQU 1
CONSTANT EQU 100
PERVERTED EQU 0
IDEAL
P286N
MODEL TINY
CODESEG
STARTUPCODE
SMART
MOV AX , CS
ADD AH , 010H
MOV DS , AX
MOV ES , AX
XOR AX , AX
MOV CX , 0FFFFH
MOV DI , CX
; SHR CX , 1
REP STOSB
MOV AH , 0A0H
MOV DS , AX
MOVAX , 00013H
INT 010H
XOR AL , AL
MOV CX , 0C0H * 3
MOV DX , 03C8H
OUT DX , AL
INC DX
REP OUTSB
@@1:
OUT DX , AL
; OUTSB
; OUSB
ROR AL , 1
OUT DX , AL
ROL AL , 1
; OUT DX , AL
OUTSB
INC AL
CMP AL , 040H
JNZ @@1
XOR CX , CX
MOV DI , CX
DEC CX
MOV AL , CL
MOV CX , CONSTANT
CLD
mov di , 199*320+64
@@2:STOSB
sub DI , 100*320
stosb
add di , 100*320
LOOP @@2
@@3:CMP BH , 0FAH
JAE @@4
MOV AL , [ BX ]
CMP AL , 0C0H
JB @@4
DEC AL
MOV [ BX - 1 ] , AL
MOV [ BX + 1 ] , AL
; MOV [ BX - 321 ] , AL
MOV [ BX - 320 ] , AL
MOV [ BX - 319 ] , AL
; MOV [ BX - 641 ] , AL
; MOV [ BX - 640 ] , AL
MOV [ BX - 639 ] , AL
IF PERVERTED
MOV [ BX + 321 ] , AL
MOV [ BX + 320 ] , AL
MOV [ BX + 319 ] , AL
MOV [ BX + 641 ] , AL
MOV [ BX + 640 ] , AL
MOV [ BX + 639 ] , AL
ENDIF
@@4 : MOV AL , [ BYTE ES : BX ]
OR [ BX ] , AL
ADD BX , DX
INC DX
OR BX , BX
JNZ @@3
IN AL , 060H
CMP AL , 080H
JA @@3
MOV AL , 003H
INT 010H
RETN
END