----------------------------补充---------------- 在IDA中反汇编,一共找到4处 int 10h
1:处========>
seg001:62F0 sub_CC90 proc near ; CODE XREF: sub_CCC3+8p
seg001:62F0 ; sub_CD1F+19p ...
seg001:62F0 push bp
seg001:62F1 push si
seg001:62F2 push di
seg001:62F3 int 10h ; - VIDEO -
seg001:62F5 pop di
seg001:62F6 pop si
seg001:62F7 pop bp
seg001:62F8 retn
seg001:62F8 sub_CC90 endp
2,3处========>
mov cx, 1
seg001:6F68
seg001:6F68 loc_D908: ; CODE XREF: sub_D8C6+4Dj
seg001:6F68 lodsb
seg001:6F69 mov ah, 9
seg001:6F6B int 10h ; - VIDEO - WRITE ATTRIBUTES/CHARACTERS AT CURSOR POSITION
seg001:6F6B ; AL = character, BH = display page
seg001:6F6B ; BL = attributes of character (alpha modes) or color (graphics modes)
seg001:6F6B ; CX = number of times to write character
seg001:6F6D inc dx
seg001:6F6E mov ah, 2
seg001:6F70 int 10h ; - VIDEO - SET CURSOR POSITION
seg001:6F70 ; DH,DL = row, column (0,0 = upper left)
seg001:6F70 ; BH = page number
seg001:6F72 dec di
seg001:6F73 jnz short loc_D908
seg001:6F75 retn
seg001:6F75 sub_D8C6 endp
4处:========>
seg001:73E0 sub_DD80 proc near ; CODE XREF: seg001:83CAp
seg001:73E0 push si
seg001:73E1 call sub_D628
seg001:73E4 mov cx, ds:3122h
seg001:73E8 call sub_CD1C
seg001:73EB mov bh, ds:3125h
seg001:73EF push bp
seg001:73F0 push si
seg001:73F1 push di
seg001:73F2 mov ah, 8
seg001:73F4 int 10h ; - VIDEO - READ ATTRIBUTES/CHARACTER AT CURSOR POSITION
seg001:73F4 ; BH = display page
seg001:73F4 ; Return: AL = character
seg001:73F4 ; AH = attribute of character (alpha modes)
seg001:73F6 pop di
seg001:73F7 pop si
seg001:73F8 pop bp
seg001:73F9 or al, al
seg001:73FB jnz short loc_DD9F
seg001:73FD mov al, 20h ; ' '
seg001:73FF
seg001:73FF loc_DD9F: ; CODE XREF: sub_DD80+1Bj
seg001:73FF xor bx, bx
seg001:7401 xchg ah, bl
seg001:7403 xchg ax, cx
seg001:7404 mov dx, ds:30FCh
seg001:7408 call sub_CD1F
seg001:740B xor ch, ch
seg001:740D xchg ax, cx
seg001:740E pop si
seg001:740F retn
seg001:740F sub_DD80 endp
{
This program sets VGA 80x25 color text mode to PAL frequencies
for VGA to TV adapter. This program is written to be an exaple
how to get PAL frequencies out of VGA card. This program
outputs noninterlaced picture at PAL frequencies (15625 Hz horizonal
and 50 Hz vertical). There is a small error in frequencies, but
TVs can handle this easily.
I have not done anything to change then font size according the TV
resolition, so part of the picture will remain out of visible TV
screen area.
This sourcecode compiles with Turbo Pascal and Borland Pascal
compilers versions 4.0 and up.
Copyright Tomi Engdahl 1994-1996
}
Uses Dos,Crt;
Const
DirectVideo=False; {forces CRT unit to use BIOS calls for output}
crtc_index=$3d4;
crtc_data=$3d5;
atc_index=$3c0;
atc_data=$3c0;
graph_index=$3ce;
graph_data=$3cf;
seq_index=$3c4;
seq_data=$3c5;
status_1=$3da;
VideoSegment=$A000;
DAC_addr=$3c8;
DAC_data=$3c9;
misc_out_write=$3C2;
misc_out_read=$3CC;
Procedure SetBiosMode(mode:byte);
Var regs:registers;
Begin
regs.AH:=$00;
regs.AL:=mode;
Intr($10,regs);
End;
Procedure SetBiosCursorType(startline,endline:byte);
Var regs:registers;
Begin
regs.AH:=$01;
regs.CH:=startline;
regs.CL:=endline;
Intr($10,regs);
End;
Procedure Offset(bytes_per_line:byte);
Begin
Port[crtc_index]:=$13; Port[crtc_data]:=bytes_per_line;
End;
Procedure sync_reset_on;
Begin
Port[seq_index]:=$00;
Port[seq_data]:=Port[seq_data] and 253;
End;
Procedure sync_reset_off;
Begin
Port[seq_index]:=$00;
Port[seq_data]:=Port[seq_data] or 2;
End;
Procedure enable_timing_writes;
Begin
Port[crtc_index]:=$11;
Port[crtc_data]:=Port[crtc_data] and 127;
Port[crtc_index]:=$3;
Port[crtc_data]:=Port[crtc_data] or 128;
End;
Procedure set_positive_syncs;
Begin
Port[misc_out_write]:=Port[misc_out_read] and 63;
End;