; CrackZ's 1Mb Memory Dumper, 15/07/98
;
; Use tasm dosdump.asm and tlink /t dosdump to create dosdump.com

SEG_A	segment	byte public
	assume	cs:seg_a, ds:seg_a

	org	100h

DOSDUMP	proc	far

START:
	XOR	CX,CX			;Zero CX.
	DB	31h,0C9h		;Fixup.
	MOV	DX,offset data_1
	MOV	AH,3Ch
	INT 	21h			;AH=function 3Ch, create/truncate file @ DS:DX.

	XCHG	BX,AX
	MOV	CH,80h
	XOR	DX,DX			;Zero DX.
	DB	31h,0D2h		;Fixup.
	XOR	SI,SI			;Zero SI.
	DB	31h,0F6h		;Fixup.

loc_1:
	MOV	DS,SI
	MOV	AH,40h
	INT	21h			;AH=function 40h, write file, (BX=file handle
					;CX=bytes from DS:DX buffer).

	ADD	SI,800h	
	JNC	loc_1			;Jump if carry=0.
	INT	20h			;Terminate DOS program.

data_1	DB	"dosdump.wri"		;Name of dump file.
	DB	0

DOSDUMP	ENDP

seg_a	ENDS

END	START