model tiny
codeseg
.386
char_pos=40  ;40 from left border
num_char = offset end_dial - offset dial

org 100h  
start:
mov ax,0a000h
mov es,ax

mov ax,13h
int 10h     ;std-vga-mode
xor dx,dx   ;dx is char-pointer
zoomagain:   

;del_char
xor di,di
xor eax,eax
mov cx,16000
rep stosd    ;just delete it all
;del_char end

mov bp,2  ;first char is 2x2 
doitagain:
lea bx,dial   ;pointer to loc. of display string
add bx,dx    ;add the char-pointer to get current char
push dx     ;save char-pointer to go on after this rountine

call disp_char

	mov	dx, 03dah
       vrt:
	in	al, dx
	test	al, 8
	jnz	short vrt
       novrt:
	in	al, dx
	test	al, 8
	jz	short novrt
	mov	dx, 03dah
       vrt2:
	in	al, dx
	test	al, 8
	jnz	short vrt2
       novrt2:
	in	al, dx
	test	al, 8
	jz	short novrt2


mov ah,1
int 16h   ;the keyboard-check
jnz short raushier   ;exit when ESC
pop dx  ;restote char-pointer

inc bp   ;make it bigger
cmp bp,28  ;till it's as big as screen
jne short doitagain   ;print char 2x bigger

inc dx       ;position is display-string
cmp dx,num_char   ;new chars till there are no more of them
jne short zoomagain  ;print the next char

raushier:    ;goto dos
mov ax,3
int 10h
lea dx,dial
mov ah,9
int 21h
int 20h

disp_char:
mov col,38   ;start color
add col,dl   ; add char-pointer to make every char look different
;PRINT_CHAR
mov si,char_pos             ; position in video meory
mov al,[bx]  
xor ah,ah
shl ax,3
mov di,0fa6eh        ; char-table start
add di,ax
mov dl,8             ; vertical pixels
mk0:
push ds
mov ax,0f000h  
push ax
pop ds               ; char-table segment in ES
mov al,ds:[di]  ; get first line
pop ds
mov dh,8             ; horizontal pixels 
mk1: rcl al,1        ; get the bits
jnc short nopixel              ; if zerro-bit -> don't set a pixel

;set a pixel
push ax
mov al,col
call setpoint
pop ax
jmp short mk3

;kill pixel
nopixel:
push ax
xor al,al
call setpoint
pop ax

mk3: add si,bp  ; next pixel
dec dh               ; next horizontal pixel in char-table
jnz short mk1              ; repeat till there are 8 pixels set
inc di               ; next vertical line of the char
mov ax,bp
shl ax,3
sub si,ax
mov ax,320
mov bx,bp
dec bx
push dx
mul bx
pop dx
add si,ax
dec col
dec dl               
jnz short mk0              ; repeat till there are all 8 lines set
;PRINT_CHAR-END
ret
;end of disp_char

setpoint:
push dx  ;SET_POINT
mov bx,si
mov dx,bp
dec dx
yloop:
mov cx,bp
xloop:
mov byte ptr es:[bx],al
inc bx
loop xloop
dec dx
jz short not_again
add bx,320
sub bx,bp
jmp short yloop
not_again:
pop dx   ;SET_POINT-END
ret

dial db 'CALL TRIOPTIMUM NOW! +41313027385'
end_dial:
db '$'
col db ?  

ends
end start

                   шъъъъъъъъъъъъъъъъш шээ ъъъъъъъъъъъъъъъъъъш
                   ш SysGod: De║mos шээ шэээ   TRiOPTiMUM   ш
                   ш USRobotics 28.8k шэээ шэээээээээ       ш
                   ш One Gigabyte Online шэээээээээ шэээээээш
                   ш Warez Ч Underground Ч Viriis шээээээээээ
                   ш    FNF WHQ Ч moz[IC]art Memberboard    ш
                   шээээээээээээээээээээээээээээээээээээээээш

                                 +41.313.027385

          The Sharom broke apart like an egg and began to drift down,
         falling, an obsidian inferno. Darkness spread across the sky,
                     swallowing the sun in unnatural night,
                 as if the light of those flames was blackness.

