; datsrch.นบบ Dนบนนน Fนนน Dนบน Sนนบนน บบบ.910623
; Cบบบบนนนบ (น) 1991 Nนนบ Sบบบนนบ Sบนบบนบน Cนนนนบบ, Aนนนบบน
; Aบบนนนนบ นบบ Lนนบนบบ Pบบนนนบบน
; -------------------------------------------------------------
; บนบบ นนบบบนน /นบ นบบนนนนน
; บนนน /น บบนบบบ2 -+นนบบบนน นนน
public _datsrch
MAXLEN equ 0FA00h ; บนบนนบน นนนน น/บ นนบนบน
funcnum equ word ptr [bp + 00Ah] ; นนบบบนบ บนบนนนบนบบ
dat_len equ word ptr [bp + 00Ch]
buf_seg equ word ptr [bp + 00Eh]
buf_off equ word ptr [bp + 010h]
key_off equ word ptr [bp + 012h]
fil_off equ word ptr [bp + 014h]
dat_seg equ word ptr [bp + 016h]
; นนบบบนบ() Dนบนนน บนนน Sนนบนน
; Dนบบบนบ บนนบนนนบ นนบนนน นบนนนบ นบบนบ นบบ บบนนนนนน บนบบ;
; บบบนบนนบน นบน นบบนบนนบน บนบบนบนบบนบนบบบ นบน บนนบนนนน.
; Iน นบบบน, บนน บนนบบน บบนนนบ นบ บนบบบบนน บบ นนนนนน.
; Dนบบบนบ นบ นบบ บบน บนบน Bบบนนบน'บ Tบบนบ C บนบบนบบ 2.0.
; Dนบบบนบ บบบนบ บนบน นนนนบ บนบน บบ บบ 65,534 บนนบบนบ;
; บนบบบบ 65,535 (0FFFFน) นบ บนบนบบนน นบบ นบบบบ.
; Vบนบบบบบน Uนบบ บน Tนนบน C
; -------------------------------------------------------------
; UINT _DS นบ บบนบ นบบบบนน
; บบบน * บนบบน_บบบบ บบบบ นบบบ นนนบนบ นนน
; UINT บบบ_นบบ นบบนบน นบ บนบบน_บบบบ
; บบบน * นบบนบบ_บบน นบบนบบ บบน นนนบนบ นนน
; UINT บบน_นบบ นบบนบน นบ นบบนบบ_บบน
; นนบบ บบน * บนบบน_บนบบ บบบบ บนบบบน
; UINT บนบ_นบบ นบบนบน นบ บนบบน_บนบบ
; UINT บนบ_นบบ นบบบบนน นบ บนบบน_บนบบ
; UINT บบน_บบน นบบบ นบบนนบ บบนบนบ
; UINT บนนบนนบ บนนบนบนน นนบบบน 0-3:
; 0 = นนบน บบบบ
; 1 = นบบบ/นบบบ *
; 2 = บบนบ นบนน
; 3 = บบนนบ บบบบ
; UINT บนบบนน บบนบ นบบนน นบนนนนบบ:
; 0000 = บน0: นนบน นบ
; FFFF = บน0: นนบน บนนนน
; FFFF = บน2: บนบ
; * บน 1 นบบบ/นบบบ บน นบนบนนบบบ บนนนบบนบบบบบน
; บน บน 0 บนบ นบนบนบบบบบบน บน บน 2;
; บน บน นบนบน บบบบบบ บบนบบนบน.
; Sบบนบบ Cบบบ บนนบ Tนนบน C
; -------------------------------------------------------------
; บบบน *บนบบน_บบบบ = "บ:\\นบบนบบ\\นบบนบบ.บบน";
; UINT บบบ_นบบ = (UINT)บนบบน_บบบบ;
; นนบบ บบน *บนบบน_บนบบ = บบนบบบบนบ(0นFA10);
; UINT บนบ_นบบ = FP_SEG(บนบบน_บนบบ);
; UINT บนบ_นบบ = FP_OFF(บนบบน_บนบบ);
; UINT บบน_บบน = FILSIZ;
; UINT บนนบนนบ = 0น;
; UINT บนบบนน = 0น;
; UINT บบนนบบ = 0น;
; ...
; บนนบนนบ = 0น; /* นนบน บบบบ */
; บนบบนน = บบนนนบบ(บนนบนนบ, บบน_บบน, บนบ_นบบ, บนบ_นบบ, บบน_นบบ,
; บบบ_นบบ, _DS);
; ...
; (บบบน *)นบบนบบ_บบน = "SAMPLE";
; บบน_นบบ = (UINT)นบบนบบ_บบน;
; บนบบนน = 0น;
; บนนบนนบ = 2น; /* บบนบ นบนน */
; บนบบนน = บบนนนบบ(บนนบนนบ, บบน_บบน, บนบ_นบบ, บนบ_นบบ, บบน_นบบ,
; บบบ_นบบ, _DS);
; ...
; บนนบนนบ = 3น; /* บบนนบ บบบบ */
; บนบบนน = บบนนนบบ(บนนบนนบ, บบน_บบน, บนบ_นบบ, บนบ_นบบ, บบน_นบบ,
; บบบ_นบบ, _DS);
; Pบนบบบนบน Aบบนบนนบนบ Rบบบนบนบ นน นบบ Sนบบบ (BP)
; -------------------------------------------------------------
; +16บ นบบนบ นบ TC บบนบ นบบบบนน ............................ _DS
; +14บ นบบนบ นบ บบบบนบบบ นบบนบน ............................ บบบ_นบบ
; +12บ นบบนบ นบ นบบนบบ บบน นบบนบน .......................... บบน_นบบ
; +10บ นบบนบ นบ บนบบบน นบบนบน .............................. บนบ_นบบ
; +0Eบ นบบนบ นบ บนบบบน นบบบบนน ............................. บนบ_นบบ
; +0Cบ นบบนบ นบ นบบบ นบบนนบ บบนบนบ ......................... บบน_บบน
; +0Aบ นบบนบ นบ บบนนนบบ บนนบนบนน (0-3) ..................... บนนบนนบ
; +08บ Tนนบน C นบนนนน บบบนบนน -
; +06บ บบนนนบบ นบนบบ บน -
; +04บ บบนนนบบ นบนบบ บน -
; +02บ บบนนนบบ นบนบบ นบ -
; BP+00บ บบนนนบบ นบนบบ บบ -
_TEXT segment byte public 'CODE'
assume cs:_TEXT
_datsrch proc near
push bp ; นบนบ TC นบบบนนบนน
push ds
push si
push di
mov bp, sp ; บบบบ บน นนบนน นน นบบ นนบบบ
cld ; บบบบน นบบ บบนบบนบนน บบบบ >
; Dบนบนบบนบ นบนนบนนบบ บนนบนบนน
; บนบ บน นน บน
mov ax, funcnum ; บนนบนบนน นนบบบน บนนน บน
cmp al, 000h ; 0 นนบน บบบบ
je Fn00
cmp al, 002h ; 2 นนบน บนบบ
jne Jmp00 ; นบบบนบบน
jmp Fn02
Jmp00:
cmp al, 003h ; 3 นนบบน นนนน
jnz Jmp01 ; นบบบนบบน
jmp Fn03
Jmp01:
jmp Err2 ; นบบนนนน นบบนบนบบ บบนนนบ
; Oบนบ บนน นนนน นบบ
; บนนน บบนบ นนนนบบ
Fn00:
mov dx, fil_off ; นนนนบนนน บนนบนบ นบบบ นบ
mov ax, dat_seg ; นนนนบนนน บนนนนบบ นบบบ นบ
mov ds, ax ; นบน นบบบ นบ
; นบ:นบ บบนบบบ บบ นบนนนบ นนนนบนนน
mov al, 000h ; นนนน นนนนบบ นบ บนนน บบนบ
mov ah, 03Dh ; บบนบ บนน นบนนบ นนบน นนนน
int 021h ; บนน นบบ นบบ 21 นบ 3D
jnc Jmp02 ; นบบบนบบน
jmp Err2 ; นบนบ นน บบนบ นบบบบ
Jmp02:
mov word ptr cs:FHAN, ax ; บนบน นนนน นนบนนน
; Cบนบบบน บนน นนนน'บ
; นนบนนบน น/บ นนบนบน
xor dx, dx ; นบ = บนบบ
mov ax, MAXLEN ; นนบนนบน น/บ นนบนบน นบ 64000 นบบนบ
mov bx, dat_len ; บนนน บนนบบน นนบนบน นบบบ นบ
div bx ; นบ = บบบบนนบบ นบบน นนบนบบบ
; นบ = บนนนนบนนบ นบบน นนบนบนบบ
xor dx, dx ; นบ = บนบบ
mov word ptr cs:RCNT, dx ; นบนบ นนนน น/บ นบบบบ
mul bx ; นบ = นนบนนบน น/บ นนบนบน
mov word ptr cs:MXIO, ax ; บนบน นนบนนบน น/บ นนบนบน
; Pบบนบนบบ บนน นนนน บบนบบนบ
; บบ บนน บบนบบ บน บนน
; นบบบนบบ บนนบบน
Fn01:
mov ax, word ptr cs:[RCNT] ; นนนน น/บ นบบบบ นบบบ นบ
mov cx, word ptr cs:[MXIO] ; นนบนนบน น/บ นนบนบน นบบบ นบ
mul cx ; นบ = นบบ น/บ นบบบบ บ น/บ นนบนบน
; นบ = นบบ น/บ นบบบบ บ น/บ นนบนบน
mov bx, word ptr cs:[FHAN] ; นนนน นนบนนน นบบบ นบ
xchg cx, dx ; นบ = นบบ บน นนนน บบนบบนบ
xchg dx, ax ; นบ = นบบ บน นนนน บบนบบนบ
mov al, 000h ; นนบบนบบน บนนบนบ นบบน นบน
mov ah, 042h ; บนนน นนนน บบนบบนบ
int 021h ; บนน นบบ นบบ 21 นบ 42
jnc Jmp03 ; นบบบนบบน
jmp Err1 ; นนบบน นบน นบนบ นน บนนน นบบบบ
; Rนนน น บนนบบน นบบน บนน นนนน
; นบบบ บนน นบนนนบ
Jmp03:
mov bx, word ptr cs:[FHAN] ; นนนน นนบนนน นบบบ นบ
mov cx, word ptr cs:[MXIO] ; นนบนนบน น/บ นนบนบน นบบบ นบ
mov dx, buf_off ; นบนนนบ บนนนนบบ นบบบ นบ
mov ax, buf_seg ; นบนนนบ บนนบนบ นบบบ นบ
mov ds, ax ; นบน นบบบ นบ
; นบ:นบ บบนบบบ บบ นบนนนบ
mov ah, 03Fh ; บนนน บนน นนนน
int 021h ; บนน นบบ นบบ 21 นบ 3F
jnc Jmp04 ; นบบบนบบน
jmp Err1 ; นนบบน นบน นบนบ นน บนนน นบบบบ
Jmp04:
cmp ax, 00000h ; บนบบ นบบ บนบบ นบบนบ บนนน
jnz Jmp05 ; นบบบนบบน
jmp Err1 ; นนบบน นบนบ นน บนบบ นบบนบ บนนน
Jmp05:
mov word ptr cs:BREM, ax ; บนบน บบนนนบ บน นบบนบ บนนนนบนบน
mov ax, buf_off ; นบนนนบ บนนบนบ นบบบ นบ
mov word ptr cs:BOFF, ax ; บนบน นบนนนบ บนนบนบ
mov ax, funcnum ; นบบนบนบบ บบนนนบ นบบบ นบ
cmp al, 000h ; นน บบบ นบบนบนบบ 0 บบนบ นนนน
ja Fn02 ; บนนบ นบบบนบบน
xor ax, ax ; บนบบ นบ นบบ บนบบบบ บบ TC
jmp Exit ; นบนบ บบ นบนบ
; Sนนบนน นบนบนนนนบนบนบบ
Fn02:
mov di, word ptr cs:[BOFF] ; นบนนนบ บนนบนบ นบบบ นน
mov ax, buf_seg ; นบนนนบ บนนนนบบ นบบบ นบ
mov es, ax ; นบน นบบบ นบ
; นบ:นน บบนบบบ บบ นบนนนบ
mov ax, dat_seg ; บนบบ บนนนนบบ นบบบ นบ
mov ds, ax ; นบน นบบบ นบ
; นบ:บน บบนบบบ บบ บนบบ
mov cx, word ptr cs:[BREM] ; บบนนนบ บน นบบนบ บนนนนบนบน นบบบ นบ
; Dบ บนน บนนบนน นบบ บบบนบนนบน
; นบน นบบนบนนบน นนบน นนบนน
Fn02a:
mov si, key_off ; บนบบ บนนบนบ นบบบ บน
Fn02b:
mov al, byte ptr ds:[si] ; บนบบ นบบน นบบบ นน
cmp al, 000h ; นบนบนบน นน = บนบบ (นบน บน บนบบ)
jz Fn02e ; นบน นบนบ นน บนบบ
cmp al, byte ptr es:[di] ; นบนบนบน บบ นบนนนบ นบบน
je Fn02c ; นบน นบบบนบบน นน นบบนน
or al, ' ' ; นบบบนบบ บนบบ นบบน บบ นบบนบนนบน
cmp al, byte ptr es:[di] ; นบนบนบน บบ นบนนนบ นบบน
je Fn02c ; นบน นบบบนบบน นน นบบนน
inc di ; บนบบ นบนนนบ นบบน
dec cx ; นนนบนนบน นบบนบ บนนนนบนบน
jz Fn02d ; นบน นบนบ นน บนบบ
jmp short Fn02a ; นบบบนบบน
Fn02c:
inc si ; บนบบ บนบบ นบบน
inc di ; บนบบ นบนนนบ นบบน
dec cx ; นนนบนนบน นบบนบ บนนนนบนบน
jnz Fn02b ; นบน นบบบนบบน นน บบบ บนบบ
; Tนบบ นบ บบบ นบบบน นบ บนนบนน;
; บบบ บนบบ บนนบบน
Fn02d:
mov ax, word ptr cs:[RCNT] ; นนนน น/บ นบบบบ นบบบ นบ
inc ax ; บนบบ บบน
mov word ptr cs:RCNT, ax ; บนบน นนนน น/บ นบบบบ
jmp Fn01 ; นบนบ บบ Fบ01 (บนบบ บนนบบน)
; Tนบบ นบ นบบบน นบ บนนบนน;
; บนบบบบ บนน บนนบบ
Fn02e:
mov ax, di ; นบนนนบ บนนบนบ นบบบ นบ
sub ax, buf_off ; นบนนนบ บนนบนบ นบบบนนบนบบ
mov bx, dat_len ; บนนน บนนบบน นนบนบน นบบบ นบ
xor dx, dx ; นบ = บนบบ (นบบ นนบ)
div bx ; นบนบบบน น บนบ นบนนนบ บนนบนบ
inc ax ; บบ บบนบบ นบ บนน นบน
mul bx ; บน บนน นบบบนบบ บนนบบน
dec ax ; นบบ บนน บนบบ บนนบนน
add ax, buf_off ; นบนนนบ บนนบนบ นบบบนนบนบบ
mov word ptr cs:BOFF, ax ; บนบน บนน บนบ นบนนนบ บนนบนบ
sub ax, di ; นบน นนนบบบ บนน บบนนนบ บน
sub cx, ax ; นบบนบ บนนนนบนบน
mov word ptr cs:BREM, cx ; บนบน บบนนนบ บน นบบนบ บนนนนบนบน
mov ax, word ptr cs:[RCNT] ; นบ = นนนน น/บ นบบบบ
mov bx, word ptr cs:[MXIO] ; นบ = นนนน นนบนนบน น/บ นนบนบน
mul bx ; นบ = นบบ นนบนนน นนนน บนนบนบ
; นบ = นบบ นนบนนน นนนน บนนบนบ
add ax, di ; นบ = นบนนนบ บนนบนบ
jnc Jmp06 ; นบนบ นน บบ นนบบบ (นบ บบนบนนบบ)
inc dx ; นนน นนบบบ นบบบ นบ
Jmp06:
sub ax, buf_off ; นบนนนบ บนนบนบ นบบบนนบนบบ
mov bx, dat_len ; บนนน บนนบบน นนบนบน นบบบ นบ
div bx ; นบ = บบบบนนบบ นบบน นนบนบบบ
inc ax ; นบ = บนนบบ นบบ บนบบบบ บบ TC
jmp short Exit ; นบนบ บบ Eบนบ
; Cนบบน บนน นนนน นบน
; บนบบบบ บบ TC
Fn03:
mov bx, word ptr cs:[FHAN] ; นนนน นนบนนน นบบบ นบ
mov ah, 03Eh ; นนบบน บนน นนนน
int 021h ; บนน นบบ นบบ 21 นบ 3E
xor ax, ax ; บนบบ นบ นบบ บนบบบบ บบ TC
jmp short Exit ; นบนบ บบ นบนบ
; Sนนน/บนนน นบบบบ บบ
; บนบบ นบบนบ บนนน (นบน);
; นนบบน บนน นนนน
Err1:
mov bx, word ptr cs:[FHAN] ; นนนน นนบนนน นบบบ นบ
mov ah, 03Eh ; นนบบน บนน นนนน
int 021h ; บนน นบบ นบบ 21 นบ 3E
; Oบนบ นบบบบ; บนบบบบ นบบบบ
; นบนน 0บFFFF บบ TC
Err2:
mov ax, 0FFFFh ; FFFF = นบ0: บบนบ นบบบบ
; นบ2: นบน บนนนนนน
; Rนบบบบ บบ TC
Exit:
pop di ; บนบบบบน TC บนนนบบนบบ
pop si
pop ds
pop bp
ret ; บนนบ บนบบบบ บบ TC
_datsrch endp
; Iบบนบบนน บบบบนนน
FHAN dw 00000h ; นนนน นนบนนน
BOFF dw 00000h ; นบนนนบ บนนบนบ
BREM dw 00000h ; บบนนนบ บน นบบนบ บนนนนบนบน
RCNT dw 00000h ; นนนน น/บ นบบบบ
MXIO dw 00000h ; นนนน นนบนนบน น/บ นนบนบน
_TEXT ends
end
|