code	segment	public
	assume	cs:code, ds:code
	org	0
seg_org	equ	$
	org	100h
main	proc	far
start:	jmp	init
oldint21	dd	?
div	dw	10000,1000,100,10,1
msg	db	07h,0dh,0ah,'ERRORLEVEL=$'
prsmsg	db	'   Press any key to continue... $'
entry:	push	si
	push	dx
	push	cx
	push	bx
	push	ax
;
	cmp	ah,4ch
	jnz	done
	push	ax
	mov	ah,9
	mov	dx,offset cs:msg
	push	ds
	push	cs
	pop	ds
	int	21h
	pop	ds
	pop	ax
	mov	ah,0
	mov	si,offset cs:div
	mov	cx,4
loop:	mov	bx,cs:[si]
	add	si,2
	sub	dx,dx
	div	bx
	push	dx
	or	ch,al
	jz	zero
	add	al,'0'
	mov	dl,al
	mov	ah,2
	int	21h
zero:	pop	ax
	dec	cl
	jg	loop
	mov	ch,1
	jz	loop
	mov	ah,9
	push	cs
	pop	ds
	mov	dx,cs:[offset prsmsg]
	int	21h
	mov	ah,7
	int	21h
;
done:	pop	ax
	pop	bx
	pop	cx
	pop	dx
	pop	si
	jmp	cs:[oldint21]
;
init:	sub     ax,ax
	mov     ds,ax
	les     bx,dword ptr ds:[21h * 4]
	mov     word ptr cs:[oldint21],bx
	mov     word ptr cs:[oldint21 + 2],es
	push    cs
	pop     ds
	mov     dx,offset entry
	mov     ax,2521h
	int     21h
	mov     dx,offset init
	sub	dx,offset seg_org
	add	dx,0fh
	mov	cl,4
	shr	dx,cl
	mov	ah,31h
        int     21h

main	endp
code	ends

	end	start
