Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:14
CHKDISK  - procedures that read or write to the disk        Page     1-1


				TITLE	CHKDISK  - procedures that read or writ
				e to the disk
				page	,132					;
				
					.list
				
				
					pathlabl chkdisk
				;=========================================================================	;an005;bgb
				; READ_DISK	:	This routine reads the logical sector count requested.	;an005;bgb
				;			It will read a maximum of 64k in one read.  If more	;an005;bgb
				;			than 64k exists it will continue looping until		;an005;bgb
				;			all sectors have been read.				;an005;bgb
				;										;an005;bgb
				;	Inputs	:	AL - Drive letter					;an005;bgb
				;			ES:BX - Segment:offset of transfer address		;an005;bgb
				;			CX - Sector count					;an005;bgb
				;			DX - 1st  sector					;an005;bgb
				;										;an005;bgb
				;	Outputs :	Logical sectors read					;an005;bgb
				; LOGIC 									;an005;bgb
				; ***** 									;an005;bgb
				;    adjust es:bx to es:00							;an005;bgb
				;    calcluate sectors-per-64k (how many sectors are there that can fit within a 64k segment?)
				;    DO while there are more sectors to read than sectors-per-64k		;an005;bgb
				;	set sector-count to sectors-per-64k					;an005;bgb
				;	perform the disk read							;an005;bgb
				;	bump the seg addr to the new addr					;an005;bgb
				;	dec  the number of sectors to read by sectors-per-64k			;an005;bgb
				;	bump the starting sector number by the sectors-per-64k			;an005;bgb
				;    ENDDO									;an005;bgb
				;    perform a disk read for less than sectors-per-64k				;an005;bgb
				;=========================================================================	;an005;bgb
				procedure	read_disk							;an005;bgb
			     1							; 
			     1	Public	read_disk				;				;AN000; 
 0000                        1	read_disk    proc				;				;AN000; 
					savereg <ax,bx,cx,dx,es>						;an005;bgb
			     1	IRP reg,<ax,bx,cx,dx,es> 
			     1		?stackdepth = ?stackdepth + 1 
			     1		PUSH    reg 
			     1	ENDM 
 = 0001                      2		?stackdepth = ?stackdepth + 1 
 0000  50                    2		PUSH    ax 
 = 0002                      2		?stackdepth = ?stackdepth + 1 
 0001  53                    2		PUSH    bx 
 = 0003                      2		?stackdepth = ?stackdepth + 1 
 0002  51                    2		PUSH    cx 
 = 0004                      2		?stackdepth = ?stackdepth + 1 
 0003  52                    2		PUSH    dx 
 = 0005                      2		?stackdepth = ?stackdepth + 1 
 0004  06                    2		PUSH    es 
 0005  E8 00D4 R			call	seg_adj 			;an000;calc new seg:off 	;an005;bgb
 0008  E8 00EC R			call	calc_sp64k			;an000;secs/64k 		;an005;bgb
				;	$DO				; do while more than 64k		;an005;bgb
 000B				$$DO1:
 000B  3B 0E 0000 E			    cmp     cx,secs_per_64k	    ;an000;exceed 64k			;an005;bgb
				;	$LEAVE	LE			    ;an000;yes				;an005;bgb
 000F  7E 23				JLE $$EN1
 0011  89 0E 0000 E			    mov     sec_count,cx	;an000;save cx				;an005;bgb
 0015  8B 0E 0000 E			    mov     cx,secs_per_64k	;an000;get maximum read 		;an005;bgb
 0019  E8 003D R			    call    read_once		;an000;read it				;an005;bgb
				;	$LEAVE	C								;an005;bgb
 001C  72 16				JC $$EN1
 001E  8C C1				    mov     cx,es							;an005;bgb
 0020  03 0E 0000 E			    add     cx,paras_per_64k	; adjust transfer area			;an005;bgb
 0024  8E C1				    mov     es,cx							;an005;bgb
 0026  8B 0E 0000 E			    mov     cx,sec_count	; restore sector count			;an005;bgb
 002A  2B 0E 0000 E			    sub     cx,secs_per_64k	;an000;get sectors remaining		;an005;bgb
 002E  03 16 0000 E			    add     dx,secs_per_64k	;an000;adjust starting sector		;an005;bgb
				;	$ENDDO									;an005;bgb
 0032  EB D7				JMP SHORT $$DO1
 0034				$$EN1:
 0034  E8 003D R			call	read_once	    ;an000;read it				;an005;bgb
					restorereg <es,dx,cx,bx,ax>						;an005;bgb
			     1	IRP reg,<es,dx,cx,bx,ax> 
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:14
CHKDISK  - procedures that read or write to the disk        Page     1-2
                                                            

			     1		?stackdepth = ?stackdepth - 1 
			     1		POP     reg 
			     1	ENDM 
 = 0004                      2		?stackdepth = ?stackdepth - 1 
 0037  07                    2		POP     es 
 = 0003                      2		?stackdepth = ?stackdepth - 1 
 0038  5A                    2		POP     dx 
 = 0002                      2		?stackdepth = ?stackdepth - 1 
 0039  59                    2		POP     cx 
 = 0001                      2		?stackdepth = ?stackdepth - 1 
 003A  5B                    2		POP     bx 
 = 0000                      2		?stackdepth = ?stackdepth - 1 
 003B  58                    2		POP     ax 
 003C  C3				ret									;an005;bgb
 003D				read_disk	endp								 ;an005;bgb
														;an005;bgb
														;an005;bgb
				;*****************************************************************************	;an005;bgb
				;Routine name: Read_once							;an005;bgb
				;*****************************************************************************	;an005;bgb
				;										;an005;bgb
				;description: Read in data using Generic IOCtl					;an005;bgb
				;										;an005;bgb
				;Called Procedures: None							;an005;bgb
				;										;an005;bgb
				;										;an005;bgb
				;Change History: Created	5/13/87 	MT				;an005;bgb
				;										;an005;bgb
				;Input: AL = Drive number (0=A) 						;an005;bgb
				;	es:BX = Transfer address						;an005;bgb
				;	CX = Number of sectors							;an005;bgb
				;	Read_Write_Relative.Start_Sector_High = Number of sectors high		;an005;bgb
				;	DX = logical sector number low						;an005;bgb
				;										;an005;bgb
				;Output: CY if error								;an005;bgb
				;	 AH = INT 25h error code						;an005;bgb
				;										;an005;bgb
				;Psuedocode									;an005;bgb
				;----------									;an005;bgb
				;	Save registers								;an005;bgb
				;	Setup structure for function call					;an005;bgb
				;	Read the disk (AX=440Dh, CL = 6Fh)					;an005;bgb
				;	Restore registers							;an005;bgb
				;	ret									;an005;bgb
				;*****************************************************************************	;an005;bgb
				Procedure Read_once				;				;an005;bgb
			     1							; 
			     1	Public	Read_once				;				;AN000; 
 003D                        1	Read_once    proc				;				;AN000; 
					savereg  <ax,bx,cx,dx,si,di,bp,es,ds>	;Change it to Read relative sect;an005;bgb
			     1	IRP reg,<ax,bx,cx,dx,si,di,bp,es,ds> 
			     1		?stackdepth = ?stackdepth + 1 
			     1		PUSH    reg 
			     1	ENDM 
 = 0001                      2		?stackdepth = ?stackdepth + 1 
 003D  50                    2		PUSH    ax 
 = 0002                      2		?stackdepth = ?stackdepth + 1 
 003E  53                    2		PUSH    bx 
 = 0003                      2		?stackdepth = ?stackdepth + 1 
 003F  51                    2		PUSH    cx 
 = 0004                      2		?stackdepth = ?stackdepth + 1 
 0040  52                    2		PUSH    dx 
 = 0005                      2		?stackdepth = ?stackdepth + 1 
 0041  56                    2		PUSH    si 
 = 0006                      2		?stackdepth = ?stackdepth + 1 
 0042  57                    2		PUSH    di 
 = 0007                      2		?stackdepth = ?stackdepth + 1 
 0043  55                    2		PUSH    bp 
 = 0008                      2		?stackdepth = ?stackdepth + 1 
 0044  06                    2		PUSH    es 
 = 0009                      2		?stackdepth = ?stackdepth + 1 
 0045  1E                    2		PUSH    ds 
 0046  89 1E 0006 E			mov	Read_Write_Relative.Buffer_Offset,bx ;Get transfer buffer add	 ;an005;bgb
 004A  8C C3				mov	bx,es				;				;AN005;bgb
 004C  89 1E 0008 E			mov	Read_Write_Relative.Buffer_Segment,bx ;Get segment		;an005;bgb
 0050  89 0E 0004 E			mov	Read_Write_Relative.Number_Sectors,cx ;Number of sec to read	;an005;bgb
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:14
CHKDISK  - procedures that read or write to the disk        Page     1-3
                                                            

 0054  89 16 0000 E			mov	Read_Write_Relative.Start_Sector_Low,dx ;Start sector		;an005;bgb
 0058  BB 0000 E			mov	bx,offset Read_Write_Relative	;				;an005;bgb
 005B  B9 FFFF				mov	cx,0FFFFh			;Read relative sector		;an005;bgb
 005E  CD 25				INT	25h				;Do the read			;an005;bgb
 0060  5A				pop dx					;Throw away flags on stack	;an005;bgb
					restorereg <ds,es,bp,di,si,dx,cx,bx,ax> 				;an005;bgb
			     1	IRP reg,<ds,es,bp,di,si,dx,cx,bx,ax> 
			     1		?stackdepth = ?stackdepth - 1 
			     1		POP     reg 
			     1	ENDM 
 = 0008                      2		?stackdepth = ?stackdepth - 1 
 0061  1F                    2		POP     ds 
 = 0007                      2		?stackdepth = ?stackdepth - 1 
 0062  07                    2		POP     es 
 = 0006                      2		?stackdepth = ?stackdepth - 1 
 0063  5D                    2		POP     bp 
 = 0005                      2		?stackdepth = ?stackdepth - 1 
 0064  5F                    2		POP     di 
 = 0004                      2		?stackdepth = ?stackdepth - 1 
 0065  5E                    2		POP     si 
 = 0003                      2		?stackdepth = ?stackdepth - 1 
 0066  5A                    2		POP     dx 
 = 0002                      2		?stackdepth = ?stackdepth - 1 
 0067  59                    2		POP     cx 
 = 0001                      2		?stackdepth = ?stackdepth - 1 
 0068  5B                    2		POP     bx 
 = 0000                      2		?stackdepth = ?stackdepth - 1 
 0069  58                    2		POP     ax 
					return									;an005;bgb
			     1	.xcref 
 006A                        1	??0000: 
 006A  C3                    1		RET 
 = 006A                      1	ret_l = ??0000 
			     1	.cref 
 006B				 Read_once endp 								;an005;bgb
														;an005;bgb
														;an005;bgb
				;=========================================================================	;an005;bgb
				; WRITE-DISK	:	This routine reads the logical sector count requested.	;an005;bgb
				;			It will read a maximum of 64k in one read.  If more	;an005;bgb
				;			than 64k exists it will continue looping until		;an005;bgb
				;			all sectors have been read.				;an005;bgb
				;										;an005;bgb
				;	Inputs	:	AL - Drive letter					;an005;bgb
				;			ES:BX - Segment:offset of transfer address		;an005;bgb
				;			CX - Sector count					;an005;bgb
				;			DX - 1st  sector					;an005;bgb
				;										;an005;bgb
				;	Outputs :	Logical sectors read					;an005;bgb
				; LOGIC 									;an005;bgb
				; ***** 									;an005;bgb
				;    adjust es:bx to es:00							;an005;bgb
				;    calcluate sectors-per-64k (how many sectors are there that can fit within a 64k segment?)
				;    DO while there are more sectors to read than sectors-per-64k		;an005;bgb
				;	set sector-count to sectors-per-64k					;an005;bgb
				;	perform the disk read							;an005;bgb
				;	bump the seg addr to the new addr					;an005;bgb
				;	dec  the number of sectors to read by sectors-per-64k			;an005;bgb
				;	bump the starting sector number by the sectors-per-64k			;an005;bgb
				;    ENDDO									;an005;bgb
				;    perform a disk read for less than sectors-per-64k				;an005;bgb
				;=========================================================================	;an005;bgb
				procedure      write_disk							;an005;bgb
			     1							; 
			     1	Public	write_disk				;				;AN000; 
 006B                        1	write_disk    proc				;				;AN000; 
					savereg <ax,bx,cx,dx,es>						;an013;bgb
			     1	IRP reg,<ax,bx,cx,dx,es> 
			     1		?stackdepth = ?stackdepth + 1 
			     1		PUSH    reg 
			     1	ENDM 
 = 0001                      2		?stackdepth = ?stackdepth + 1 
 006B  50                    2		PUSH    ax 
 = 0002                      2		?stackdepth = ?stackdepth + 1 
 006C  53                    2		PUSH    bx 
 = 0003                      2		?stackdepth = ?stackdepth + 1 
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:14
CHKDISK  - procedures that read or write to the disk        Page     1-4
                                                            

 006D  51                    2		PUSH    cx 
 = 0004                      2		?stackdepth = ?stackdepth + 1 
 006E  52                    2		PUSH    dx 
 = 0005                      2		?stackdepth = ?stackdepth + 1 
 006F  06                    2		PUSH    es 
 0070  E8 00D4 R			call	seg_adj 		;an000;calc new seg:off 		;an005;bgb
				;	$DO				; do while more than 64k		;an005;bgb
 0073				$$DO5:
 0073  3B 0E 0000 E			    cmp     cx,secs_per_64k	;an000;exceed 64k			;an005;bgb
				;	$LEAVE	LE			;an000;yes				;an005;bgb
 0077  7E 23				JLE $$EN5
 0079  89 0E 0000 E			    mov     sec_count,cx	;an000;save cx				;an005;bgb
 007D  8B 0E 0000 E			    mov     cx,secs_per_64k	;an000;get maximum read 		;an005;bgb
 0081  E8 00A5 R			    call   write_once		;an000;read it				;an005;bgb
				;	$LEAVE	C								;an005;bgb
 0084  72 16				JC $$EN5
 0086  8C C1				    mov     cx,es							;an005;bgb
 0088  03 0E 0000 E			    add     cx,paras_per_64k	; adjust transfer area			;an005;bgb
 008C  8E C1				    mov     es,cx							;an005;bgb
 008E  8B 0E 0000 E			    mov     cx,sec_count	; restore sector count			;an005;bgb
 0092  2B 0E 0000 E			    sub     cx,secs_per_64k	;an000;get sectors remaining		;an005;bgb
 0096  03 16 0000 E			    add     dx,secs_per_64k	;an000;adjust starting sector		;an005;bgb
				;	$ENDDO									;an005;bgb
 009A  EB D7				JMP SHORT $$DO5
 009C				$$EN5:
 009C  E8 00A5 R			call	write_once		;an000;read it				;an005;bgb
					restorereg <es,dx,cx,bx,ax>						;an013;bgb
			     1	IRP reg,<es,dx,cx,bx,ax> 
			     1		?stackdepth = ?stackdepth - 1 
			     1		POP     reg 
			     1	ENDM 
 = 0004                      2		?stackdepth = ?stackdepth - 1 
 009F  07                    2		POP     es 
 = 0003                      2		?stackdepth = ?stackdepth - 1 
 00A0  5A                    2		POP     dx 
 = 0002                      2		?stackdepth = ?stackdepth - 1 
 00A1  59                    2		POP     cx 
 = 0001                      2		?stackdepth = ?stackdepth - 1 
 00A2  5B                    2		POP     bx 
 = 0000                      2		?stackdepth = ?stackdepth - 1 
 00A3  58                    2		POP     ax 
 00A4  C3				ret									;an005;bgb
 00A5				write_disk	endp								;an005;bgb
														;an005;bgb
				;*****************************************************************************	;an005;bgb
				;Routine name: Write_once							;an005;bgb
				;*****************************************************************************	;an005;bgb
				;										;an005;bgb
				;description: Write Data using int 26						;an005;bgb
				;										;an005;bgb
				;Called Procedures: None							;an005;bgb
				;										;an005;bgb
				;										;an005;bgb
				;Change History: Created	5/13/87 	MT				;an005;bgb
				;										;an005;bgb
				;Input: AL = Drive number (0=A) 						;an005;bgb
				;	DS:BX = Transfer address						;an005;bgb
				;	CX = Number of sectors							;an005;bgb
				;	Read_Write_Relative.Start_Sector_High = already set up			;an048;bgb
				;	DX = logical sector number low						;an005;bgb
				;										;an005;bgb
				;Output: CY if error								;an005;bgb
				;	 AH = INT 26h error code						;an005;bgb
				;										;an005;bgb
				;Psuedocode									;an005;bgb
				;----------									;an005;bgb
				;	Save registers								;an005;bgb
				;	Setup structure for function call					;an005;bgb
				;	Write to disk (AX=440Dh, CL = 4Fh)					;an005;bgb
				;	Restore registers							;an005;bgb
				;	ret									;an005;bgb
				;*****************************************************************************	;an005;bgb
				Procedure Write_once				 ;				;an005;bgb
			     1							; 
			     1	Public	Write_once				;				;AN000; 
 00A5                        1	Write_once    proc				;				;AN000; 
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:14
CHKDISK  - procedures that read or write to the disk        Page     1-5
                                                            

				    savereg <ax,bx,cx,dx,di,si,bp,es,ds>	 ;This is setup for INT 26h right;AN005;bgb
			     1	IRP reg,<ax,bx,cx,dx,di,si,bp,es,ds> 
			     1		?stackdepth = ?stackdepth + 1 
			     1		PUSH    reg 
			     1	ENDM 
 = 0001                      2		?stackdepth = ?stackdepth + 1 
 00A5  50                    2		PUSH    ax 
 = 0002                      2		?stackdepth = ?stackdepth + 1 
 00A6  53                    2		PUSH    bx 
 = 0003                      2		?stackdepth = ?stackdepth + 1 
 00A7  51                    2		PUSH    cx 
 = 0004                      2		?stackdepth = ?stackdepth + 1 
 00A8  52                    2		PUSH    dx 
 = 0005                      2		?stackdepth = ?stackdepth + 1 
 00A9  57                    2		PUSH    di 
 = 0006                      2		?stackdepth = ?stackdepth + 1 
 00AA  56                    2		PUSH    si 
 = 0007                      2		?stackdepth = ?stackdepth + 1 
 00AB  55                    2		PUSH    bp 
 = 0008                      2		?stackdepth = ?stackdepth + 1 
 00AC  06                    2		PUSH    es 
 = 0009                      2		?stackdepth = ?stackdepth + 1 
 00AD  1E                    2		PUSH    ds 
 00AE  89 1E 0006 E		    mov  Read_Write_Relative.Buffer_Offset,bx	 ;Get transfer buffer add	;AN005;bgb
 00B2  8C C3			    mov  bx,es					 ;				;AN005;bgb
 00B4  89 1E 0008 E		    mov  Read_Write_Relative.Buffer_Segment,bx	 ;Get segment			;AN005;bgb
 00B8  89 0E 0004 E		    mov  Read_Write_Relative.Number_Sectors,cx	 ;Number of sec to write	;AN005;bgb
 00BC  89 16 0000 E		    mov  Read_Write_Relative.Start_Sector_Low,dx ;Start sector			;AN005;bgb
 00C0  B9 FFFF			    mov  cx,0FFFFh				 ;Write relative sector 	;AN005;bgb
 00C3  8D 1E 0000 E		    lea  bx,read_write_relative 		 ;				;an005;bgb
 00C7  CD 26			    INT  026h					 ;Do the write			;AN005;bgb
 00C9  5A			    pop  dx					 ;flags is returned on the stack;AN005;bgb
				    restorereg <ds,es,bp,si,di,dx,cx,bx,ax>	 ;				;AN005;bgb
			     1	IRP reg,<ds,es,bp,si,di,dx,cx,bx,ax> 
			     1		?stackdepth = ?stackdepth - 1 
			     1		POP     reg 
			     1	ENDM 
 = 0008                      2		?stackdepth = ?stackdepth - 1 
 00CA  1F                    2		POP     ds 
 = 0007                      2		?stackdepth = ?stackdepth - 1 
 00CB  07                    2		POP     es 
 = 0006                      2		?stackdepth = ?stackdepth - 1 
 00CC  5D                    2		POP     bp 
 = 0005                      2		?stackdepth = ?stackdepth - 1 
 00CD  5E                    2		POP     si 
 = 0004                      2		?stackdepth = ?stackdepth - 1 
 00CE  5F                    2		POP     di 
 = 0003                      2		?stackdepth = ?stackdepth - 1 
 00CF  5A                    2		POP     dx 
 = 0002                      2		?stackdepth = ?stackdepth - 1 
 00D0  59                    2		POP     cx 
 = 0001                      2		?stackdepth = ?stackdepth - 1 
 00D1  5B                    2		POP     bx 
 = 0000                      2		?stackdepth = ?stackdepth - 1 
 00D2  58                    2		POP     ax 
 00D3  C3				ret					 ;				;AN005;bgb
 00D4				Write_once endp 				 ;				;AN005;bgb
														;an005;bgb
				;=========================================================================	;an005;bgb
				; SEG_ADJ	:	This routine adjusts the segment:offset to prevent	;an005;bgb
				;			address wrap.						;an005;bgb
				;										;an005;bgb
				;	Inputs	:	bx - Offset to adjust segment with			;an005;bgb
				;			es - Segment to be adjusted				;an005;bgb
				;										;an005;bgb
				;	Outputs :	bx - New offset 					;an005;bgb
				;			es - Adjusted segment					;an005;bgb
				;=========================================================================	;an005;bgb
				procedure	seg_adj 							;an005;bgb
			     1							; 
			     1	Public	seg_adj				;				;AN000; 
 00D4                        1	seg_adj    proc				;				;AN000; 
					savereg <ax,cx,dx>							;an005;bgb
			     1	IRP reg,<ax,cx,dx> 
			     1		?stackdepth = ?stackdepth + 1 
			     1		PUSH    reg 
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:14
CHKDISK  - procedures that read or write to the disk        Page     1-6
                                                            

			     1	ENDM 
 = 0001                      2		?stackdepth = ?stackdepth + 1 
 00D4  50                    2		PUSH    ax 
 = 0002                      2		?stackdepth = ?stackdepth + 1 
 00D5  51                    2		PUSH    cx 
 = 0003                      2		?stackdepth = ?stackdepth + 1 
 00D6  52                    2		PUSH    dx 
 00D7  8B C3				mov	ax,bx				;an000;get offset		;an005;bgb
 00D9  BB 0010				mov	bx,0010h			;divide by 16			;an005;bgb
 00DC  33 D2				xor	dx,dx				;an000;clear dx 		;an005;bgb
 00DE  F7 F3				div	bx				;an000;get para count	    ;an022;bgb
 00E0  8C C3				mov	bx,es				;an000;get seg			;an005;bgb
 00E2  03 D8				add	bx,ax				;an000;adjust for paras 	;an005;bgb
 00E4  8E C3				mov	es,bx				;an000;save new seg		;an005;bgb
 00E6  8B DA				mov	bx,dx				;an000;new offset		;an005;bgb
					restorereg <dx,cx,ax>							;an005;bgb
			     1	IRP reg,<dx,cx,ax> 
			     1		?stackdepth = ?stackdepth - 1 
			     1		POP     reg 
			     1	ENDM 
 = 0002                      2		?stackdepth = ?stackdepth - 1 
 00E8  5A                    2		POP     dx 
 = 0001                      2		?stackdepth = ?stackdepth - 1 
 00E9  59                    2		POP     cx 
 = 0000                      2		?stackdepth = ?stackdepth - 1 
 00EA  58                    2		POP     ax 
 00EB  C3				ret									;an005;bgb
 00EC				seg_adj 	endp								;an005;bgb
														;an005;bgb
														;an005;bgb
				;=========================================================================	;an005;bgb
				; CALC_SP64K	:	This routine calculates how many sectors, for this	;an005;bgb
				;			particular media, will fit into 64k.			;an005;bgb
				;										;an005;bgb
				;	Inputs	:	DPB_SECTOR_SIZE - bytes/sector				;an005;bgb
				;										;an005;bgb
				;	Outputs :	SECS_PER_64K	- Sectors / 64k 			;an005;bgb
				;			PARAS_PER_64K	- paragraphs per 64k			;an005;bgb
				;=========================================================================	;an005;bgb
				procedure	calc_sp64k							;an005;bgb
			     1							; 
			     1	Public	calc_sp64k				;				;AN000; 
 00EC                        1	calc_sp64k    proc				;				;AN000; 
					savereg <ax,bx,cx,dx>							;an005;bgb
			     1	IRP reg,<ax,bx,cx,dx> 
			     1		?stackdepth = ?stackdepth + 1 
			     1		PUSH    reg 
			     1	ENDM 
 = 0001                      2		?stackdepth = ?stackdepth + 1 
 00EC  50                    2		PUSH    ax 
 = 0002                      2		?stackdepth = ?stackdepth + 1 
 00ED  53                    2		PUSH    bx 
 = 0003                      2		?stackdepth = ?stackdepth + 1 
 00EE  51                    2		PUSH    cx 
 = 0004                      2		?stackdepth = ?stackdepth + 1 
 00EF  52                    2		PUSH    dx 
 00F0  B8 FFFF				mov	ax,0ffffh			;an000;64k			;an005;bgb
 00F3  8B 1E 0000 E			mov	bx,bytes_per_sector		;an000;get bytes/sector 	;an005;bgb
 00F7  33 D2				xor	dx,dx				;an000;clear dx 		;an005;bgb
 00F9  F7 F3				div	bx				;an000;sector count	    ;an022;bgb;bgb
 00FB  A3 0000 E			mov	secs_per_64k,ax 		;an000;save sector count	;an005;bgb
 00FE  A1 0000 E			mov	ax,bytes_per_sector		;an000;get bytes/sector 	;an005;bgb
 0101  BB 0010				mov	bx,010h 			; divide by paras		;an005;bgb
 0104  33 D2				xor	dx,dx				;an000;clear dx 		;an005;bgb
 0106  F7 F3				div	bx				; paras per sector	    ;an022;bgb;bgb
 0108  F7 26 0000 E			mul	secs_per_64k			; times sectors 		;an005;bgb
 010C  A3 0000 E			mov	paras_per_64k,ax		; = paras per 64k		;an005;bgb
					restorereg <dx,cx,bx,ax>		;an000;restore dx		;an005;bgb
			     1	IRP reg,<dx,cx,bx,ax> 
			     1		?stackdepth = ?stackdepth - 1 
			     1		POP     reg 
			     1	ENDM 
 = 0003                      2		?stackdepth = ?stackdepth - 1 
 010F  5A                    2		POP     dx 
 = 0002                      2		?stackdepth = ?stackdepth - 1 
 0110  59                    2		POP     cx 
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:14
CHKDISK  - procedures that read or write to the disk        Page     1-7
                                                            

 = 0001                      2		?stackdepth = ?stackdepth - 1 
 0111  5B                    2		POP     bx 
 = 0000                      2		?stackdepth = ?stackdepth - 1 
 0112  58                    2		POP     ax 
 0113  C3				ret					;an000; 			;an005;bgb
 0114				calc_sp64k	endp				;an000; 			;an005;bgb
														;an005;bgb
														;an005;bgb
					Break	<ReadFT - read in the entire fat>				;an005;bgb
			     1		SUBTTL	ReadFT - read in the entire fat 
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:14
CHKDISK  - procedures that read or write to the disk        Page     1-8
ReadFT - read in the entire fat                             

			     1		PAGE 
				;****************************************************************************** ;an005;bgb
				;   ReadFt - attempt to read in the fat.  If there are errors, step to		;an005;bgb
				;   successive fats until no more.						;an005;bgb
				;										;an005;bgb
				;   Inputs:	none.								;an005;bgb
				;   Outputs:	Fats are read until one succeeds.				;an005;bgb
				;		Carry set indicates no Fat could be read.			;an005;bgb
				;   Registers modified: all							;an005;bgb
				; LOGIC 									;an005;bgb
				; ***** 									;an005;bgb
				;  DO for each of the fats on the disk: 					;an005;bgb
				;     read - all the sectors in the fat 					;an005;bgb
				;     increase the starting sector by the number of sectors in each fat 	;an005;bgb
				;										;an005;bgb
				; LARGE FAT SUPPORT - the big change here is in read disk.  since the fat must	;an005;bgb
				;     be within the first 32M, then the starting sector number of 65535 is ok,	;an005;bgb
				;     as is a larger number of sectors to read/write.				;an005;bgb
				;****************************************************************************** ;an005;bgb
				Procedure ReadFt,NEAR								;an005;bgb
			     1							; 
			     1	Public	ReadFt				;				;AN000; 
 0114                        1	ReadFt    proc				;				;AN000; 
 0114  F8			    clc 				;Clear CY so we will loop		    ;an005;bgb
 0115  C7 06 0002 E 0000	    mov     Read_Write_Relative.Start_Sector_High,0 ;			;an005;bgb
 011B  E8 0000 R		    call    Read_Disk			;	Read_Disk ();		    ;AC0;an005;bgb
				;   $IF     C
 011E  73 05			    JNC $$IF9
 0120  03 D1				add	dx,cx			;	fatstart += fatsize		;an005;bgb
 0122  E8 0000 R			call	Read_Disk		;	Read_Disk ();		    ;AC0;an005;bgb
				;   $ENDIF
 0125				$$IF9:
 0125  C3			bad_read: ret									;an005;bgb
				EndProc ReadFt									;an005;bgb
			     1		IFDIF   <>,<NoCheck>       ; 
			     1		IF2 
			     1		ENDIF 
			     1		ENDIF 
 0126                        1	ReadFt    ENDP 
				
				
					pathlabl chkdisk
 0126				CODE	ENDS
					END

Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:14
CHKDISK  - procedures that read or write to the disk        Symbols-1


Macros:

		N a m e			Lines

ARGVAR . . . . . . . . . . . . .  	  23
ASMVAR . . . . . . . . . . . . .  	   3
ASMVARS  . . . . . . . . . . . .  	   3
ASSERT . . . . . . . . . . . . .  	   0
CALLINSTALL  . . . . . . . . . .  	  12
DOSASSUME  . . . . . . . . . . .  	   3
DOS_CALL . . . . . . . . . . . .  	   4
ENTER  . . . . . . . . . . . . .  	   3
ENTERCRIT  . . . . . . . . . . .  	   1
ERRNZ  . . . . . . . . . . . . .  	   4
EXTENDED_MESSAGE . . . . . . . .  	   8
FMT  . . . . . . . . . . . . . .  	   0
LEAVE  . . . . . . . . . . . . .  	   2
LEAVECRIT  . . . . . . . . . . .  	   1
LOCALVAR . . . . . . . . . . . .  	  23
MESSAGE  . . . . . . . . . . . .  	   4
PARSE_MESSAGE  . . . . . . . . .  	   8
PATHLABL . . . . . . . . . . . .  	  10
POPFF  . . . . . . . . . . . . .  	   6
SET_DATA_SEGMENT . . . . . . . .  	   9

Structures and Records:

                N a m e                 Width   # fields
                                        Shift   Width   Mask    Initial

ARENA  . . . . . . . . . . . . .  	0010	0005
  ARENA_SIGNATURE  . . . . . . .  	0000
  ARENA_OWNER  . . . . . . . . .  	0001
  ARENA_SIZE . . . . . . . . . .  	0003
  ARENA_RESERVED . . . . . . . .  	0005
  ARENA_NAME . . . . . . . . . .  	0008
A_BPB  . . . . . . . . . . . . .  	001F	000F
  BPB_BYTESPERSECTOR . . . . . .  	0000
  BPB_SECTORSPERCLUSTER  . . . .  	0002
  BPB_RESERVEDSECTORS  . . . . .  	0003
  BPB_NUMBEROFFATS . . . . . . .  	0005
  BPB_ROOTENTRIES  . . . . . . .  	0006
  BPB_TOTALSECTORS . . . . . . .  	0008
  BPB_MEDIADESCRIPTOR  . . . . .  	000A
  BPB_SECTORSPERFAT  . . . . . .  	000B
  BPB_SECTORSPERTRACK  . . . . .  	000D
  BPB_HEADS  . . . . . . . . . .  	000F
  BPB_HIDDENSECTORS  . . . . . .  	0011
  BPB_BIGTOTALSECTORS  . . . . .  	0015
A_DEVICEPARAMETERS . . . . . . .  	0026	0012
  SPECIALFUNCTIONS . . . . . . .  	0000
  DEVICETYPE . . . . . . . . . .  	0001
  DEVICEATTRIBUTES . . . . . . .  	0002
  NUMBEROFCYLINDERS  . . . . . .  	0004
  MEDIATYPE  . . . . . . . . . .  	0006
  BYTEPERSECTOR  . . . . . . . .  	0007
  SECTORSPERCLUSTER  . . . . . .  	0009
  RESERVEDSECTORS  . . . . . . .  	000A
  NUMBEROFFATS . . . . . . . . .  	000C
  ROOTENTRIES  . . . . . . . . .  	000D
  TOTALSECTORS . . . . . . . . .  	000F
  MEDIADESCRIPTOR  . . . . . . .  	0011
  SECTORSPERFAT  . . . . . . . .  	0012
  SECTORSPERTRACK  . . . . . . .  	0014
  HEADS  . . . . . . . . . . . .  	0016
  HIDDENSECTORS  . . . . . . . .  	0018
  EXT_TOTAL_SECTORS  . . . . . .  	001C
  RESERVEDAREA . . . . . . . . .  	0020
BPBLOCK  . . . . . . . . . . . .  	000D	0008
  BPSECSZ  . . . . . . . . . . .  	0000
  BPCLUS . . . . . . . . . . . .  	0002
  BPRES  . . . . . . . . . . . .  	0003
  BPFTCNT  . . . . . . . . . . .  	0005
  BPDRCNT  . . . . . . . . . . .  	0006
  BPSCCNT  . . . . . . . . . . .  	0008
  BPMEDIA  . . . . . . . . . . .  	000A
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:14
CHKDISK  - procedures that read or write to the disk        Symbols-2


  BPFTSEC  . . . . . . . . . . .  	000B
BUFFER_HASH_ENTRY  . . . . . . .  	0008	0004
  EMS_PAGE_NUM . . . . . . . . .  	0000
  BUFFER_BUCKET  . . . . . . . .  	0002
  DIRTY_COUNT  . . . . . . . . .  	0006
  BUFFER_RESERVED  . . . . . . .  	0007
BUFFINFO . . . . . . . . . . . .  	0023	000F
  HASH_PTR . . . . . . . . . . .  	0000
  HASH_COUNT . . . . . . . . . .  	0004
  CACHE_PTR  . . . . . . . . . .  	0006
  CACHE_COUNT  . . . . . . . . .  	000A
  EMS_SAFE_FLAG  . . . . . . . .  	000C
  EMS_LAST_PAGE  . . . . . . . .  	000D
  EMS_FIRST_PAGE . . . . . . . .  	0011
  EMS_NPA640 . . . . . . . . . .  	0015
  EMS_MODE . . . . . . . . . . .  	0017
  EMS_HANDLE . . . . . . . . . .  	0018
  EMS_PAGEFRAME_NUMBER . . . . .  	001A
  EMS_SEG_CNT  . . . . . . . . .  	001C
  EMS_PAGE_FRAME . . . . . . . .  	001E
  EMS_RESERVED . . . . . . . . .  	0020
  EMS_MAP_BUFF . . . . . . . . .  	0022
CURDIR_LIST  . . . . . . . . . .  	0058	000A
  CURDIR_TEXT  . . . . . . . . .  	0000
  CURDIR_FLAGS . . . . . . . . .  	0043
  CURDIR_DEVPTR  . . . . . . . .  	0045
  CURDIR_ID  . . . . . . . . . .  	0049
  CURDIR_USER_WORD . . . . . . .  	004D
  CURDIR_END . . . . . . . . . .  	004F
  CURDIR_TYPE  . . . . . . . . .  	0051
  CURDIR_IFS_HDR . . . . . . . .  	0052
  CURDIR_FSDA  . . . . . . . . .  	0056
DIRENT . . . . . . . . . . . . .  	0028	000C
  DIRNAM . . . . . . . . . . . .  	0008
  DIRATT . . . . . . . . . . . .  	0013
  DIRCP  . . . . . . . . . . . .  	0014
  DIR_XA . . . . . . . . . . . .  	0016
  DIRATT2  . . . . . . . . . . .  	0018
  DIRRES . . . . . . . . . . . .  	0019
  DIRTIM . . . . . . . . . . . .  	001E
  DIRDAT . . . . . . . . . . . .  	0020
  DIRCLUS  . . . . . . . . . . .  	0022
  DIRESIZ  . . . . . . . . . . .  	0024
DIR_ENTRY  . . . . . . . . . . .  	0020	000B
  DIR_NAME . . . . . . . . . . .  	0000
  DIR_ATTR . . . . . . . . . . .  	000B
  DIR_CODEPG . . . . . . . . . .  	000C
  DIR_EXTCLUSTER . . . . . . . .  	000E
  DIR_ATTR2  . . . . . . . . . .  	0010
  DIR_PAD  . . . . . . . . . . .  	0011
  DIR_TIME . . . . . . . . . . .  	0016
  DIR_DATE . . . . . . . . . . .  	0018
  DIR_FIRST  . . . . . . . . . .  	001A
  DIR_SIZE_L . . . . . . . . . .  	001C
  DIR_SIZE_H . . . . . . . . . .  	001E
DPB  . . . . . . . . . . . . . .  	0021	0012
  DPB_DRIVE  . . . . . . . . . .  	0000
  DPB_UNIT . . . . . . . . . . .  	0001
  DPB_SECTOR_SIZE  . . . . . . .  	0002
  DPB_CLUSTER_MASK . . . . . . .  	0004
  DPB_CLUSTER_SHIFT  . . . . . .  	0005
  DPB_FIRST_FAT  . . . . . . . .  	0006
  DPB_FAT_COUNT  . . . . . . . .  	0008
  DPB_ROOT_ENTRIES . . . . . . .  	0009
  DPB_FIRST_SECTOR . . . . . . .  	000B
  DPB_MAX_CLUSTER  . . . . . . .  	000D
  DPB_FAT_SIZE . . . . . . . . .  	000F
  DPB_DIR_SECTOR . . . . . . . .  	0011
  DPB_DRIVER_ADDR  . . . . . . .  	0013
  DPB_MEDIA  . . . . . . . . . .  	0017
  DPB_FIRST_ACCESS . . . . . . .  	0018
  DPB_NEXT_DPB . . . . . . . . .  	0019
  DPB_NEXT_FREE  . . . . . . . .  	001D
  DPB_FREE_CNT . . . . . . . . .  	001F
EXEC0  . . . . . . . . . . . . .  	000E	0004
  EXEC0_ENVIRON  . . . . . . . .  	0000
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:14
CHKDISK  - procedures that read or write to the disk        Symbols-3


  EXEC0_COM_LINE . . . . . . . .  	0002
  EXEC0_5C_FCB . . . . . . . . .  	0006
  EXEC0_6C_FCB . . . . . . . . .  	000A
EXEC1  . . . . . . . . . . . . .  	0016	0008
  EXEC1_ENVIRON  . . . . . . . .  	0000
  EXEC1_COM_LINE . . . . . . . .  	0002
  EXEC1_5C_FCB . . . . . . . . .  	0006
  EXEC1_6C_FCB . . . . . . . . .  	000A
  EXEC1_SP . . . . . . . . . . .  	000E
  EXEC1_SS . . . . . . . . . . .  	0010
  EXEC1_IP . . . . . . . . . . .  	0012
  EXEC1_CS . . . . . . . . . . .  	0014
EXEC3  . . . . . . . . . . . . .  	0004	0002
  EXEC3_LOAD_ADDR  . . . . . . .  	0000
  EXEC3_RELOC_FAC  . . . . . . .  	0002
EXE_FILE . . . . . . . . . . . .  	0020	000F
  EXE_SIGNATURE  . . . . . . . .  	0000
  EXE_LEN_MOD_512  . . . . . . .  	0002
  EXE_PAGES  . . . . . . . . . .  	0004
  EXE_RLE_COUNT  . . . . . . . .  	0006
  EXE_PAR_DIR  . . . . . . . . .  	0008
  EXE_MIN_BSS  . . . . . . . . .  	000A
  EXE_MAX_BSS  . . . . . . . . .  	000C
  EXE_SS . . . . . . . . . . . .  	000E
  EXE_SP . . . . . . . . . . . .  	0010
  EXE_CHKSUM . . . . . . . . . .  	0012
  EXE_IP . . . . . . . . . . . .  	0014
  EXE_CS . . . . . . . . . . . .  	0016
  EXE_RLE_TABLE  . . . . . . . .  	0018
  EXE_IOV  . . . . . . . . . . .  	001A
  EXE_SYM_TAB  . . . . . . . . .  	001C
EXT_OPEN_PARM  . . . . . . . . .  	0006	0002
  EXT_SET_LIST . . . . . . . . .  	0000
  EXT_NUM_OF_PARM  . . . . . . .  	0004
FIND_BUF . . . . . . . . . . . .  	002B	000C
  FIND_BUF_DRIVE . . . . . . . .  	0000
  FIND_BUF_NAME  . . . . . . . .  	0001
  FIND_BUF_SATTR . . . . . . . .  	000C
  FIND_BUF_LASTENT . . . . . . .  	000D
  FIND_BUF_DIRSTART  . . . . . .  	000F
  FIND_BUF_NETID . . . . . . . .  	0011
  FIND_BUF_ATTR  . . . . . . . .  	0015
  FIND_BUF_TIME  . . . . . . . .  	0016
  FIND_BUF_DATE  . . . . . . . .  	0018
  FIND_BUF_SIZE_L  . . . . . . .  	001A
  FIND_BUF_SIZE_H  . . . . . . .  	001C
  FIND_BUF_PNAME . . . . . . . .  	001E
INTERNAT_BLOCK . . . . . . . . .  	0018	0015
  DATE_TIM_FORMAT  . . . . . . .  	0000
  CURRENCY_SYM . . . . . . . . .  	0002
  THOUS_SEP  . . . . . . . . . .  	0007
  DECIMAL_SEP  . . . . . . . . .  	0009
  DATE_SEP . . . . . . . . . . .  	000B
  TIME_SEP . . . . . . . . . . .  	000D
  BIT_FIELD  . . . . . . . . . .  	000F
  CURRENCY_CENTS . . . . . . . .  	0010
  TIME_24  . . . . . . . . . . .  	0011
  MAP_CALL . . . . . . . . . . .  	0012
  DATA_SEP . . . . . . . . . . .  	0016
PROCESS_DATA_BLOCK . . . . . . .  	005C	0011
  PDB_EXIT_CALL  . . . . . . . .  	0000
  PDB_BLOCK_LEN  . . . . . . . .  	0002
  PDB_CPM_CALL . . . . . . . . .  	0005
  PDB_EXIT . . . . . . . . . . .  	000A
  PDB_CTRL_C . . . . . . . . . .  	000E
  PDB_FATAL_ABORT  . . . . . . .  	0012
  PDB_PARENT_PID . . . . . . . .  	0016
  PDB_JFN_TABLE  . . . . . . . .  	0018
  PDB_ENVIRON  . . . . . . . . .  	002C
  PDB_USER_STACK . . . . . . . .  	002E
  PDB_JFN_LENGTH . . . . . . . .  	0032
  PDB_JFN_POINTER  . . . . . . .  	0034
  PDB_NEXT_PDB . . . . . . . . .  	0038
  PDB_PAD1 . . . . . . . . . . .  	003C
  PDB_CALL_SYSTEM  . . . . . . .  	0050
  PDB_PAD2 . . . . . . . . . . .  	0055
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:14
CHKDISK  - procedures that read or write to the disk        Symbols-4


RELATIVE_SECTOR_BUFFER . . . . .  	000A	0005
  START_SECTOR_LOW . . . . . . .  	0000
  START_SECTOR_HIGH  . . . . . .  	0002
  NUMBER_SECTORS . . . . . . . .  	0004
  BUFFER_OFFSET  . . . . . . . .  	0006
  BUFFER_SEGMENT . . . . . . . .  	0008
SF . . . . . . . . . . . . . . .  	0008	0003
  SFLINK . . . . . . . . . . . .  	0000
  SFCOUNT  . . . . . . . . . . .  	0004
  SFTABLE  . . . . . . . . . . .  	0006
SF_ENTRY . . . . . . . . . . . .  	003B	0014
  SF_REF_COUNT . . . . . . . . .  	0000
  SF_MODE  . . . . . . . . . . .  	0002
  SF_ATTR  . . . . . . . . . . .  	0004
  SF_FLAGS . . . . . . . . . . .  	0005
  SF_DEVPTR  . . . . . . . . . .  	0007
  SF_FIRCLUS . . . . . . . . . .  	000B
  SF_TIME  . . . . . . . . . . .  	000D
  SF_DATE  . . . . . . . . . . .  	000F
  SF_SIZE  . . . . . . . . . . .  	0011
  SF_POSITION  . . . . . . . . .  	0015
  SF_CLUSPOS . . . . . . . . . .  	0019
  SF_DIRSEC  . . . . . . . . . .  	001B
  SF_DIRPOS  . . . . . . . . . .  	001F
  SF_NAME  . . . . . . . . . . .  	0020
  SF_CHAIN . . . . . . . . . . .  	002B
  SF_UID . . . . . . . . . . . .  	002F
  SF_PID . . . . . . . . . . . .  	0031
  SF_MFT . . . . . . . . . . . .  	0033
  SF_LSTCLUS . . . . . . . . . .  	0035
  SF_IFS_HDR . . . . . . . . . .  	0037
SUBLIST_STRUC  . . . . . . . . .  	000B	0009
  SUBLIST_SIZE . . . . . . . . .  	0000
  SUBLIST_RSV  . . . . . . . . .  	0001
  SUBLIST_OFFSET . . . . . . . .  	0002
  SUBLIST_SEGMENT  . . . . . . .  	0004
  SUBLIST_NUMBER . . . . . . . .  	0006
  SUBLIST_TYPE . . . . . . . . .  	0007
  SUBLIST_MAX  . . . . . . . . .  	0008
  SUBLIST_MIN  . . . . . . . . .  	0009
  SUBLIST_CHAR . . . . . . . . .  	000A
SYMBOL_ENTRY . . . . . . . . . .  	0106	0004
  SYM_VALUE  . . . . . . . . . .  	0000
  SYM_TYPE . . . . . . . . . . .  	0004
  SYM_LEN  . . . . . . . . . . .  	0006
  SYM_NAME . . . . . . . . . . .  	0007
SYSINITVARS  . . . . . . . . . .  	0047	0018
  SYSI_DPB . . . . . . . . . . .  	0000
  SYSI_SFT . . . . . . . . . . .  	0004
  SYSI_CLOCK . . . . . . . . . .  	0008
  SYSI_CON . . . . . . . . . . .  	000C
  SYSI_MAXSEC  . . . . . . . . .  	0010
  SYSI_BUF . . . . . . . . . . .  	0012
  SYSI_CDS . . . . . . . . . . .  	0016
  SYSI_FCB . . . . . . . . . . .  	001A
  SYSI_KEEP  . . . . . . . . . .  	001E
  SYSI_NUMIO . . . . . . . . . .  	0020
  SYSI_NCDS  . . . . . . . . . .  	0021
  SYSI_DEV . . . . . . . . . . .  	0022
  SYSI_ATTR  . . . . . . . . . .  	0026
  SYSI_STRAT . . . . . . . . . .  	0028
  SYSI_INTER . . . . . . . . . .  	002A
  SYSI_NAME  . . . . . . . . . .  	002C
  SYSI_SPLICE  . . . . . . . . .  	0034
  SYSI_IBMDOS_SIZE . . . . . . .  	0035
  SYSI_IFS_DOSCALL@  . . . . . .  	0037
  SYSI_IFS . . . . . . . . . . .  	003B
  SYSI_BUFFERS . . . . . . . . .  	003F
  SYSI_BOOT_DRIVE  . . . . . . .  	0043
  SYSI_DWMOVE  . . . . . . . . .  	0044
  SYSI_EXT_MEM . . . . . . . . .  	0045
SYSINITVARS_EXT  . . . . . . . .  	0008	0002
  SYSI_INITVARS  . . . . . . . .  	0000
  SYSI_COUNTRY_TAB . . . . . . .  	0004
SYS_FCB  . . . . . . . . . . . .  	0025	000C
  FCB_DRIVE  . . . . . . . . . .  	0000
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:14
CHKDISK  - procedures that read or write to the disk        Symbols-5


  FCB_NAME . . . . . . . . . . .  	0001
  FCB_EXT  . . . . . . . . . . .  	0009
  FCB_EXTENT . . . . . . . . . .  	000C
  FCB_RECSIZ . . . . . . . . . .  	000E
  FCB_FILSIZ . . . . . . . . . .  	0010
  FCB_DRVBP  . . . . . . . . . .  	0012
  FCB_FDATE  . . . . . . . . . .  	0014
  FCB_FTIME  . . . . . . . . . .  	0016
  FCB_RESERVED . . . . . . . . .  	0018
  FCB_NR . . . . . . . . . . . .  	0020
  FCB_RR . . . . . . . . . . . .  	0021
USER_ENVIRON . . . . . . . . . .  	0018	000C
  USER_AX  . . . . . . . . . . .  	0000
  USER_BX  . . . . . . . . . . .  	0002
  USER_CX  . . . . . . . . . . .  	0004
  USER_DX  . . . . . . . . . . .  	0006
  USER_SI  . . . . . . . . . . .  	0008
  USER_DI  . . . . . . . . . . .  	000A
  USER_BP  . . . . . . . . . . .  	000C
  USER_DS  . . . . . . . . . . .  	000E
  USER_ES  . . . . . . . . . . .  	0010
  USER_IP  . . . . . . . . . . .  	0012
  USER_CS  . . . . . . . . . . .  	0014
  USER_F . . . . . . . . . . . .  	0016
XAL  . . . . . . . . . . . . . .  	0200	0005
  XAL_TSIZE  . . . . . . . . . .  	0000
  XAL_TCOUNT . . . . . . . . . .  	0002
  XAL_LSIZE  . . . . . . . . . .  	0004
  XAL_LCOUNT . . . . . . . . . .  	0006
  XAL_DATA . . . . . . . . . . .  	0008

Segments and Groups:

                N a m e         	Length	 Align	Combine Class

DG . . . . . . . . . . . . . . .  	GROUP
  DATA . . . . . . . . . . . . .  	0000	PARA	PUBLIC	'DATA'
  CONST  . . . . . . . . . . . .  	0000	PARA	PUBLIC	'DATA'
  CODE . . . . . . . . . . . . .  	0126	PARA	PUBLIC	'CODE'
  CSTACK . . . . . . . . . . . .  	0000	PARA	STACK	'STACK'
  LASTSEG  . . . . . . . . . . .  	0000	PARA	PUBLIC	'LAST'
PSP  . . . . . . . . . . . . . .  	0000	PARA	PUBLIC	'DUMMY'

Symbols:            

                N a m e         	Type	 Value	 Attr

ABORT  . . . . . . . . . . . . .  	NUMBER	0000	
ACCESS_MASK  . . . . . . . . . .  	NUMBER	000F	
ACTION_CREATED_OPENED  . . . . .  	NUMBER	0002	
ACTION_OPENED  . . . . . . . . .  	NUMBER	0001	
ACTION_REPLACED_OPENED . . . . .  	NUMBER	0003	
ADDR_INT_ABORT . . . . . . . . .  	NUMBER	0080	
ADDR_INT_COMMAND . . . . . . . .  	NUMBER	0084	
ADDR_INT_CTRL_C  . . . . . . . .  	NUMBER	008C	
ADDR_INT_DISK_READ . . . . . . .  	NUMBER	0094	
ADDR_INT_DISK_WRITE  . . . . . .  	NUMBER	0098	
ADDR_INT_FASTCON . . . . . . . .  	NUMBER	00A4	
ADDR_INT_FATAL_ABORT . . . . . .  	NUMBER	0090	
ADDR_INT_IBM . . . . . . . . . .  	NUMBER	00A8	
ADDR_INT_KEEP_PROCESS  . . . . .  	NUMBER	009C	
ADDR_INT_SPOOLER . . . . . . . .  	NUMBER	00A0	
ADDR_INT_TERMINATE . . . . . . .  	NUMBER	0088	
ALLDRV . . . . . . . . . . . . .  	V BYTE	0000	CONST	External
ALLOC  . . . . . . . . . . . . .  	NUMBER	0048	
ALLOCOPER  . . . . . . . . . . .  	NUMBER	0058	
ALLOWED_FAIL . . . . . . . . . .  	NUMBER	0008	
ALLOWED_IGNORE . . . . . . . . .  	NUMBER	0020	
ALLOWED_RETRY  . . . . . . . . .  	NUMBER	0010	
ALTVECT  . . . . . . . . . . . .  	ALIAS	 FALSE		
ALT_EXPECTED_VERSION . . . . . .  	NUMBER	1A05	
ALT_MAJOR_VERSION  . . . . . . .  	NUMBER	0005	
ALT_MINOR_VERSION  . . . . . . .  	NUMBER	001A	
APPEND_OFF . . . . . . . . . . .  	NUMBER	0000	
APPEND_ON  . . . . . . . . . . .  	NUMBER	0001	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:14
CHKDISK  - procedures that read or write to the disk        Symbols-6


APPEND_X . . . . . . . . . . . .  	NUMBER	B706	
APPEND_X_SET . . . . . . . . . .  	NUMBER	0001	
ARENA_OWNER_SYSTEM . . . . . . .  	NUMBER	0000	
ARENA_SIGNATURE_END  . . . . . .  	NUMBER	005A	
ARENA_SIGNATURE_NORMAL . . . . .  	NUMBER	004D	
ASCIIZ_END . . . . . . . . . . .  	NUMBER	0000	
ASSIGNOPER . . . . . . . . . . .  	NUMBER	005F	
ASSIGN_CHECK . . . . . . . . . .  	NUMBER	8000	
ATTR_ALL . . . . . . . . . . . .  	NUMBER	0016	
ATTR_ARCHIVE . . . . . . . . . .  	NUMBER	0020	
ATTR_CHANGEABLE  . . . . . . . .  	NUMBER	0027	
ATTR_DEVICE  . . . . . . . . . .  	NUMBER	0040	
ATTR_DIRECTORY . . . . . . . . .  	NUMBER	0010	
ATTR_HIDDEN  . . . . . . . . . .  	NUMBER	0002	
ATTR_IGNORE  . . . . . . . . . .  	NUMBER	0061	
ATTR_READ_ONLY . . . . . . . . .  	NUMBER	0001	
ATTR_SYSTEM  . . . . . . . . . .  	NUMBER	0004	
ATTR_VOLUME_ID . . . . . . . . .  	NUMBER	0008	
AUTO_COMMIT_WRITE  . . . . . . .  	NUMBER	4000	

badrw_num  . . . . . . . . . . .  	V WORD	0000	CONST	External
BADRW_STR  . . . . . . . . . . .  	V WORD	0000	CONST	External
BADVAL . . . . . . . . . . . . .  	V WORD	0000	CONST	External
BADW_ARG . . . . . . . . . . . .  	V WORD	0000	CONST	External
BAD_EXIT . . . . . . . . . . . .  	NUMBER	00FF	
BAD_READ . . . . . . . . . . . .  	L NEAR	0125	CODE
BIG_FAT_THRESHOLD  . . . . . . .  	NUMBER	0FF6	
BLANK  . . . . . . . . . . . . .  	NUMBER	0020	
BUFFERFLAG . . . . . . . . . . .  	NUMBER	FFFF	
BUFINSIZ . . . . . . . . . . . .  	NUMBER	0014	
BUF_DIRTY  . . . . . . . . . . .  	NUMBER	0040	
BUF_DPB  . . . . . . . . . . . .  		000D	
BUF_FILL . . . . . . . . . . . .  		0011	
BUF_FLAGS  . . . . . . . . . . .  		0005	
BUF_FREE . . . . . . . . . . . .  	NUMBER	00FF	
BUF_ID . . . . . . . . . . . . .  		0004	
BUF_ISDATA . . . . . . . . . . .  	NUMBER	0008	
BUF_ISDIR  . . . . . . . . . . .  	NUMBER	0004	
BUF_ISFAT  . . . . . . . . . . .  	NUMBER	0002	
BUF_ISNET  . . . . . . . . . . .  	NUMBER	0080	
BUF_NETID  . . . . . . . . . . .  	ALIAS	 BUFINSIZ		
BUF_NEXT . . . . . . . . . . . .  		0000	
BUF_OFFSET . . . . . . . . . . .  	DWORD	0006	
BUF_PREV . . . . . . . . . . . .  		0002	
BUF_RESERVED . . . . . . . . . .  		0013	
BUF_SECTOR . . . . . . . . . . .  		0006	
BUF_SNBUF  . . . . . . . . . . .  	NUMBER	0010	
BUF_TYPE_0 . . . . . . . . . . .  	NUMBER	00F1	
BUF_VISIT  . . . . . . . . . . .  	NUMBER	0020	
BUF_WRTCNT . . . . . . . . . . .  		000A	
BUF_WRTCNTINC  . . . . . . . . .  		000B	
bytes_per_sector . . . . . . . .  	V WORD	0000	DATA	External

calc_sp64k . . . . . . . . . . .  	N PROC	00EC	CODE	Global	Length = 0028
CARGS  . . . . . . . . . . . . .  	NUMBER	0000	
CHAR_OPER  . . . . . . . . . . .  	NUMBER	0037	
CHDIR  . . . . . . . . . . . . .  	NUMBER	003B	
CHECKNOFMES  . . . . . . . . . .  	L NEAR	0000	CODE	External
CHK_ERROR  . . . . . . . . . . .  	NUMBER	0001	
CHMOD  . . . . . . . . . . . . .  	NUMBER	0043	
CLOSE  . . . . . . . . . . . . .  	NUMBER	003E	
COMMIT . . . . . . . . . . . . .  	NUMBER	0068	
CONTCH . . . . . . . . . . . . .  	V DWORD	0000	DATA	External
CREAT  . . . . . . . . . . . . .  	NUMBER	003C	
CREATENEWFILE  . . . . . . . . .  	NUMBER	005B	
CREATETEMPFILE . . . . . . . . .  	NUMBER	005A	
CREATE_PROCESS_DATA_BLOCK  . . .  	NUMBER	0026	
CRITASSIGN . . . . . . . . . . .  	NUMBER	0008	
CRITDEVICE . . . . . . . . . . .  	NUMBER	0002	
CRITDISK . . . . . . . . . . . .  	NUMBER	0001	
CRITICAL_ERROR_FAIL  . . . . . .  	NUMBER	0003	
CRITIFS  . . . . . . . . . . . .  	NUMBER	0006	
CRITMEM  . . . . . . . . . . . .  	NUMBER	0001	
CRITNET  . . . . . . . . . . . .  	NUMBER	0005	
CRITSFT  . . . . . . . . . . . .  	NUMBER	0001	
CRITSHARE  . . . . . . . . . . .  	NUMBER	0001	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:14
CHKDISK  - procedures that read or write to the disk        Symbols-7


CURDIRLEN  . . . . . . . . . . .  	NUMBER	0058	
CURDIR_INUSE . . . . . . . . . .  	NUMBER	4000	
CURDIR_ISIFS . . . . . . . . . .  	NUMBER	8000	
CURDIR_ISNET . . . . . . . . . .  	NUMBER	8000	
CURDIR_LOCAL . . . . . . . . . .  	NUMBER	1000	
CURDIR_NETID . . . . . . . . . .  	DWORD	0049	
CURDIR_SPLICE  . . . . . . . . .  	NUMBER	2000	
CURRENT_DIR  . . . . . . . . . .  	NUMBER	0047	
C_BS . . . . . . . . . . . . . .  	NUMBER	0008	
C_CR . . . . . . . . . . . . . .  	NUMBER	000D	
C_DEL  . . . . . . . . . . . . .  	NUMBER	007F	
C_ETB  . . . . . . . . . . . . .  	NUMBER	0017	
C_ETX  . . . . . . . . . . . . .  	NUMBER	0003	
C_HT . . . . . . . . . . . . . .  	NUMBER	0009	
C_LF . . . . . . . . . . . . . .  	NUMBER	000A	
C_NAK  . . . . . . . . . . . . .  	NUMBER	0015	

DAY_MASK . . . . . . . . . . . .  	NUMBER	001F	
DBCS . . . . . . . . . . . . . .  	NUMBER	0000	
DEALLOC  . . . . . . . . . . . .  	NUMBER	0049	
DEBUG  . . . . . . . . . . . . .  	NUMBER	0000	
DEVID_BLOCK_DEV  . . . . . . . .  	NUMBER	001F	
DEVID_DEVICE . . . . . . . . . .  	NUMBER	0080	
DEVID_DEVICE_CLOCK . . . . . . .  	NUMBER	0008	
DEVID_DEVICE_CON_IN  . . . . . .  	NUMBER	0001	
DEVID_DEVICE_CON_OUT . . . . . .  	NUMBER	0002	
DEVID_DEVICE_EOF . . . . . . . .  	NUMBER	0040	
DEVID_DEVICE_NULL  . . . . . . .  	NUMBER	0004	
DEVID_DEVICE_RAW . . . . . . . .  	NUMBER	0020	
DEVID_DEVICE_SPECIAL . . . . . .  	NUMBER	0010	
DEVID_EOF  . . . . . . . . . . .  	NUMBER	0040	
DEVID_FILE_CLEAN . . . . . . . .  	NUMBER	0040	
DEVID_FILE_MASK_DRIVE  . . . . .  	NUMBER	003F	
DEVID_ISCIN  . . . . . . . . . .  	NUMBER	0001	
DEVID_ISCLK  . . . . . . . . . .  	NUMBER	0008	
DEVID_ISCOT  . . . . . . . . . .  	NUMBER	0002	
DEVID_ISDEV  . . . . . . . . . .  	NUMBER	0080	
DEVID_ISNUL  . . . . . . . . . .  	NUMBER	0004	
DEVID_RAW  . . . . . . . . . . .  	NUMBER	0020	
DEVID_SPECIAL  . . . . . . . . .  	NUMBER	0010	
DIRCHAR  . . . . . . . . . . . .  	V BYTE	0000	CONST	External
DIRPROC  . . . . . . . . . . . .  	L NEAR	0000	CODE	External
DIRSTRLEN  . . . . . . . . . . .  	NUMBER	0043	
DIRTYFAT . . . . . . . . . . . .  	V BYTE	0000	CONST	External
DIR_ATTRIBUTE  . . . . . . . . .  	NUMBER	0010	
DIR_ENTRIES_PER_SECTOR . . . . .  	NUMBER	0010	
DIR_SEARCH_FIRST . . . . . . . .  	NUMBER	0011	
DIR_SEARCH_NEXT  . . . . . . . .  	NUMBER	0012	
DISK_ERROR . . . . . . . . . . .  	NUMBER	0080	
DISK_RESET . . . . . . . . . . .  	NUMBER	000D	
Display_Interface  . . . . . . .  	L NEAR	0000		External
DOCRLF . . . . . . . . . . . . .  	L NEAR	0000	CODE	External
DOFIX  . . . . . . . . . . . . .  	V BYTE	0000	CONST	External
DO_INCLUDE . . . . . . . . . . .  	NUMBER	0001	
DPBSIZ . . . . . . . . . . . . .  	NUMBER	0021	
DRIVE_NOT_READY  . . . . . . . .  	NUMBER	0002	
DRVCHAR  . . . . . . . . . . . .  	NUMBER	003A	
DSKSIZ . . . . . . . . . . . . .  	NUMBER	000D	
DUP_PDB  . . . . . . . . . . . .  	NUMBER	0055	

ECS_CALL . . . . . . . . . . . .  	NUMBER	0063	
EMS_MAP_BUFF_SIZE  . . . . . . .  	NUMBER	000C	
ENTRYPOINT . . . . . . . . . . .  	NUMBER	00C0	
ENTSIZ . . . . . . . . . . . . .  	NUMBER	0028	
EOFVAL . . . . . . . . . . . . .  	V WORD	0000	CONST	External
EPRINT . . . . . . . . . . . . .  	L NEAR	0000	CODE	External
ERRACT_ABORT . . . . . . . . . .  	NUMBER	0004	
ERRACT_DLYRET  . . . . . . . . .  	NUMBER	0002	
ERRACT_IGNORE  . . . . . . . . .  	NUMBER	0006	
ERRACT_INTRET  . . . . . . . . .  	NUMBER	0007	
ERRACT_PANIC . . . . . . . . . .  	NUMBER	0005	
ERRACT_RETRY . . . . . . . . . .  	NUMBER	0001	
ERRACT_USER  . . . . . . . . . .  	NUMBER	0003	
ERRCLASS_ALREADY . . . . . . . .  	NUMBER	000C	
ERRCLASS_APPERR  . . . . . . . .  	NUMBER	0007	
ERRCLASS_AUTH  . . . . . . . . .  	NUMBER	0003	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:14
CHKDISK  - procedures that read or write to the disk        Symbols-8


ERRCLASS_BADFMT  . . . . . . . .  	NUMBER	0009	
ERRCLASS_HRDFAIL . . . . . . . .  	NUMBER	0005	
ERRCLASS_INTRN . . . . . . . . .  	NUMBER	0004	
ERRCLASS_LOCKED  . . . . . . . .  	NUMBER	000A	
ERRCLASS_MEDIA . . . . . . . . .  	NUMBER	000B	
ERRCLASS_NOTFND  . . . . . . . .  	NUMBER	0008	
ERRCLASS_OUTRES  . . . . . . . .  	NUMBER	0001	
ERRCLASS_SYSFAIL . . . . . . . .  	NUMBER	0006	
ERRCLASS_TEMPSIT . . . . . . . .  	NUMBER	0002	
ERRCLASS_UNK . . . . . . . . . .  	NUMBER	000D	
ERRLOC_DISK  . . . . . . . . . .  	NUMBER	0002	
ERRLOC_MEM . . . . . . . . . . .  	NUMBER	0005	
ERRLOC_NET . . . . . . . . . . .  	NUMBER	0003	
ERRLOC_SERDEV  . . . . . . . . .  	NUMBER	0004	
ERRLOC_UNK . . . . . . . . . . .  	NUMBER	0001	
ERROR_ACCESS_DENIED  . . . . . .  	NUMBER	0005	
ERROR_ALREADY_ASSIGNED . . . . .  	NUMBER	0055	
ERROR_ARENA_TRASHED  . . . . . .  	NUMBER	0007	
ERROR_BAD_COMMAND  . . . . . . .  	NUMBER	0016	
ERROR_BAD_ENVIRONMENT  . . . . .  	NUMBER	000A	
ERROR_BAD_FORMAT . . . . . . . .  	NUMBER	000B	
ERROR_BAD_LENGTH . . . . . . . .  	NUMBER	0018	
ERROR_BAD_UNIT . . . . . . . . .  	NUMBER	0014	
ERROR_CANNOT_MAKE  . . . . . . .  	NUMBER	0052	
ERROR_CODE_PAGE_MISMATCHED . . .  	NUMBER	0025	
ERROR_CRC  . . . . . . . . . . .  	NUMBER	0017	
ERROR_CURRENT_DIRECTORY  . . . .  	NUMBER	0010	
ERROR_DUP_FCB  . . . . . . . . .  	NUMBER	0051	
ERROR_FAIL_I24 . . . . . . . . .  	NUMBER	0053	
ERROR_FCB_UNAVAILABLE  . . . . .  	NUMBER	0023	
ERROR_FILE_EXISTS  . . . . . . .  	NUMBER	0050	
ERROR_FILE_NOT_FOUND . . . . . .  	NUMBER	0002	
ERROR_GEN_FAILURE  . . . . . . .  	NUMBER	001F	
ERROR_HANDLE_DISK_FULL . . . . .  	NUMBER	0027	
ERROR_HANDLE_EOF . . . . . . . .  	NUMBER	0026	
ERROR_I24_BAD_COMMAND  . . . . .  	NUMBER	0003	
ERROR_I24_BAD_LENGTH . . . . . .  	NUMBER	0005	
ERROR_I24_BAD_UNIT . . . . . . .  	NUMBER	0001	
ERROR_I24_CRC  . . . . . . . . .  	NUMBER	0004	
ERROR_I24_GEN_FAILURE  . . . . .  	NUMBER	000C	
ERROR_I24_NOT_DOS_DISK . . . . .  	NUMBER	0007	
ERROR_I24_NOT_READY  . . . . . .  	NUMBER	0002	
ERROR_I24_OUT_OF_PAPER . . . . .  	NUMBER	0009	
ERROR_I24_READ_FAULT . . . . . .  	NUMBER	000B	
ERROR_I24_SECTOR_NOT_FOUND . . .  	NUMBER	0008	
ERROR_I24_SEEK . . . . . . . . .  	NUMBER	0006	
ERROR_I24_WRITE_FAULT  . . . . .  	NUMBER	000A	
ERROR_I24_WRITE_PROTECT  . . . .  	NUMBER	0000	
ERROR_I24_WRONG_DISK . . . . . .  	NUMBER	000F	
ERROR_INVALID_ACCESS . . . . . .  	NUMBER	000C	
ERROR_INVALID_BLOCK  . . . . . .  	NUMBER	0009	
ERROR_INVALID_DATA . . . . . . .  	NUMBER	000D	
ERROR_INVALID_DRIVE  . . . . . .  	NUMBER	000F	
ERROR_INVALID_FUNCTION . . . . .  	NUMBER	0001	
ERROR_INVALID_HANDLE . . . . . .  	NUMBER	0006	
ERROR_INVALID_PARAMETER  . . . .  	NUMBER	0057	
ERROR_INVALID_PASSWORD . . . . .  	NUMBER	0056	
ERROR_LOCK_VIOLATION . . . . . .  	NUMBER	0021	
ERROR_NET_WRITE_FAULT  . . . . .  	NUMBER	0058	
ERROR_NOT_DOS_DISK . . . . . . .  	NUMBER	001A	
ERROR_NOT_ENOUGH_MEMORY  . . . .  	NUMBER	0008	
ERROR_NOT_READY  . . . . . . . .  	NUMBER	0015	
ERROR_NOT_SAME_DEVICE  . . . . .  	NUMBER	0011	
ERROR_NOT_SUPPORTED  . . . . . .  	NUMBER	0032	
ERROR_NO_MORE_FILES  . . . . . .  	NUMBER	0012	
ERROR_OUT_OF_PAPER . . . . . . .  	NUMBER	001C	
ERROR_OUT_OF_STRUCTURES  . . . .  	NUMBER	0054	
ERROR_PATH_NOT_FOUND . . . . . .  	NUMBER	0003	
ERROR_READ_FAULT . . . . . . . .  	NUMBER	001E	
ERROR_SECTOR_NOT_FOUND . . . . .  	NUMBER	001B	
ERROR_SEEK . . . . . . . . . . .  	NUMBER	0019	
ERROR_SHARING_BUFFER_EXCEEDED  .  	NUMBER	0024	
ERROR_SHARING_VIOLATION  . . . .  	NUMBER	0020	
ERROR_SYS_COMP_NOT_LOADED  . . .  	NUMBER	005A	
ERROR_TOO_MANY_OPEN_FILES  . . .  	NUMBER	0004	
ERROR_WRITE_FAULT  . . . . . . .  	NUMBER	001D	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:14
CHKDISK  - procedures that read or write to the disk        Symbols-9


ERROR_WRITE_PROTECT  . . . . . .  	NUMBER	0013	
ERROR_WRONG_DISK . . . . . . . .  	NUMBER	0022	
EXEC . . . . . . . . . . . . . .  	NUMBER	004B	
EXEC_FUNC_NO_EXECUTE . . . . . .  	NUMBER	0001	
EXEC_FUNC_OVERLAY  . . . . . . .  	NUMBER	0002	
EXE_VALID_OLD_SIGNATURE  . . . .  	NUMBER	4D5A	
EXE_VALID_SIGNATURE  . . . . . .  	NUMBER	5A4D	
EXISTS_MASK  . . . . . . . . . .  	NUMBER	000F	
EXIT . . . . . . . . . . . . . .  	NUMBER	004C	
ExitStatus . . . . . . . . . . .  	V BYTE	0000	DATA	External
EXIT_ABORT . . . . . . . . . . .  	NUMBER	0000	
EXIT_CTRL_C  . . . . . . . . . .  	NUMBER	0001	
EXIT_HARD_ERROR  . . . . . . . .  	NUMBER	0002	
EXIT_KEEP_PROCESS  . . . . . . .  	NUMBER	0003	
EXIT_TERMINATE . . . . . . . . .  	NUMBER	0000	
EXPECTED_VERSION . . . . . . . .  	NUMBER	0004	
EXTHANDLE  . . . . . . . . . . .  	NUMBER	0067	
EXTOPEN  . . . . . . . . . . . .  	NUMBER	006C	
EXT_EXISTS_FAIL  . . . . . . . .  	NUMBER	0000	
EXT_EXISTS_OPEN  . . . . . . . .  	NUMBER	0001	
EXT_FILE_NOT_EXISTS  . . . . . .  	NUMBER	0004	
EXT_NEXISTS_CREATE . . . . . . .  	NUMBER	0010	
EXT_OPEN_I24_OFF . . . . . . . .  	NUMBER	0002	
EXT_OPEN_ON  . . . . . . . . . .  	NUMBER	0001	

FALSE  . . . . . . . . . . . . .  	NUMBER	0000	
FATMAP . . . . . . . . . . . . .  	V WORD	0000	DATA	External
fattbl_seg . . . . . . . . . . .  	V WORD	0000	DATA	External
FCB  . . . . . . . . . . . . . .  	NUMBER	005C	
FCBDEVICE  . . . . . . . . . . .  	NUMBER	0040	
FCBMASK  . . . . . . . . . . . .  	NUMBER	00C0	
FCBNETWORK . . . . . . . . . . .  	NUMBER	0080	
FCBSHARE . . . . . . . . . . . .  	NUMBER	00C0	
FCBSPECIAL . . . . . . . . . . .  	NUMBER	0080	
FCB_CLOSE  . . . . . . . . . . .  	NUMBER	0010	
FCB_CREATE . . . . . . . . . . .  	NUMBER	0016	
FCB_DELETE . . . . . . . . . . .  	NUMBER	0013	
FCB_L_ATTR . . . . . . . . . . .  	BYTE	001E	
FCB_L_DRIVE  . . . . . . . . . .  	BYTE	0019	
FCB_L_FIRCLUS  . . . . . . . . .  	WORD	001A	
FCB_L_MFS  . . . . . . . . . . .  	WORD	001C	
FCB_NETID  . . . . . . . . . . .  	DWORD	001C	
FCB_NET_DRIVE  . . . . . . . . .  	BYTE	0019	
FCB_NET_HANDLE . . . . . . . . .  	WORD	001A	
FCB_NSLD_DRIVE . . . . . . . . .  	BYTE	0019	
FCB_NSLD_DRVPTR  . . . . . . . .  	DWORD	001A	
FCB_NSL_BITS . . . . . . . . . .  	BYTE	001A	
FCB_NSL_DIRPOS . . . . . . . . .  	BYTE	001F	
FCB_NSL_DIRSEC . . . . . . . . .  	WORD	001D	
FCB_NSL_DRIVE  . . . . . . . . .  	BYTE	0019	
FCB_NSL_FIRCLUS  . . . . . . . .  	WORD	001B	
FCB_OPEN . . . . . . . . . . . .  	NUMBER	000F	
FCB_RANDOM_READ  . . . . . . . .  	NUMBER	0021	
FCB_RANDOM_READ_BLOCK  . . . . .  	NUMBER	0027	
FCB_RANDOM_WRITE . . . . . . . .  	NUMBER	0022	
FCB_RANDOM_WRITE_BLOCK . . . . .  	NUMBER	0028	
FCB_RENAME . . . . . . . . . . .  	NUMBER	0017	
FCB_SEQ_READ . . . . . . . . . .  	NUMBER	0014	
FCB_SEQ_WRITE  . . . . . . . . .  	NUMBER	0015	
FCB_SFN  . . . . . . . . . . . .  	BYTE	0018	
FCB_TO_ASCZ  . . . . . . . . . .  	L NEAR	0000	CODE	External
FCHK . . . . . . . . . . . . . .  	NUMBER	0001	
FDELIM . . . . . . . . . . . . .  	NUMBER	0002	
FFCB . . . . . . . . . . . . . .  	NUMBER	0008	
FILDIRENT  . . . . . . . . . . .  	NUMBER	0010	
FILE_TIMES . . . . . . . . . . .  	NUMBER	0057	
FILPERPROC . . . . . . . . . . .  	NUMBER	0014	
FIND_FIRST . . . . . . . . . . .  	NUMBER	004E	
FIND_NEXT  . . . . . . . . . . .  	NUMBER	004F	
FIXMES_ARG . . . . . . . . . . .  	V WORD	0000	CONST	External
FIXMFLG  . . . . . . . . . . . .  	V BYTE	0000	CONST	External
FOUND_NO . . . . . . . . . . . .  	NUMBER	0000	
FOUND_YES  . . . . . . . . . . .  	NUMBER	0001	
FRAGMENT . . . . . . . . . . . .  	V BYTE	0000	CONST	External
FSPCHK . . . . . . . . . . . . .  	NUMBER	0004	
fTrunc . . . . . . . . . . . . .  	V BYTE	0000	CONST	External
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:14
CHKDISK  - procedures that read or write to the disk        Symbols-10


F_AUX  . . . . . . . . . . . . .  	NUMBER	0010	
F_CARRY  . . . . . . . . . . . .  	NUMBER	0001	
F_DIRECTION  . . . . . . . . . .  	NUMBER	0400	
F_INTERRUPT  . . . . . . . . . .  	NUMBER	0200	
F_OVERFLOW . . . . . . . . . . .  	NUMBER	0800	
F_PARITY . . . . . . . . . . . .  	NUMBER	0004	
F_SIGN . . . . . . . . . . . . .  	NUMBER	0080	
F_TRACE  . . . . . . . . . . . .  	NUMBER	0100	
F_ZERO . . . . . . . . . . . . .  	NUMBER	0040	

GETCURRENTPSP  . . . . . . . . .  	NUMBER	0062	
GETEXTCNTRY  . . . . . . . . . .  	NUMBER	0065	
GETEXTENDEDERROR . . . . . . . .  	NUMBER	0059	
GETSETCDPG . . . . . . . . . . .  	NUMBER	0066	
GETSETMEDIAID  . . . . . . . . .  	NUMBER	0069	
GET_CURRENT_PDB  . . . . . . . .  	NUMBER	0051	
GET_DATE . . . . . . . . . . . .  	NUMBER	002A	
GET_DEFAULT_DPB  . . . . . . . .  	NUMBER	001F	
GET_DEFAULT_DRIVE  . . . . . . .  	NUMBER	0019	
GET_DMA  . . . . . . . . . . . .  	NUMBER	002F	
GET_DPB  . . . . . . . . . . . .  	NUMBER	0032	
GET_DRIVE_FREESPACE  . . . . . .  	NUMBER	0036	
GET_FCB_FILE_LENGTH  . . . . . .  	NUMBER	0023	
GET_FCB_POSITION . . . . . . . .  	NUMBER	0024	
GET_INDOS_FLAG . . . . . . . . .  	NUMBER	0034	
GET_INTERRUPT_VECTOR . . . . . .  	NUMBER	0035	
GET_IN_VARS  . . . . . . . . . .  	NUMBER	0052	
GET_TIME . . . . . . . . . . . .  	NUMBER	002C	
GET_VERIFY_ON_WRITE  . . . . . .  	NUMBER	0054	
GET_VERSION  . . . . . . . . . .  	NUMBER	0030	

HANDLE_FAIL_I24  . . . . . . . .  	NUMBER	0100	
HARDCH . . . . . . . . . . . . .  	V DWORD	0000	DATA	External
HAVFIX . . . . . . . . . . . . .  	V BYTE	0000	CONST	External
HEAD_MASK  . . . . . . . . . . .  	NUMBER	007F	
HECODE . . . . . . . . . . . . .  	V BYTE	0000	CONST	External
HIDDN  . . . . . . . . . . . . .  	NUMBER	0002	
HONGEUL  . . . . . . . . . . . .  	NUMBER	0063	
HOUR_MASK  . . . . . . . . . . .  	NUMBER	F800	

I24_AREA . . . . . . . . . . . .  	NUMBER	0006	
I24_CLASS  . . . . . . . . . . .  	NUMBER	0080	
I24_OPERATION  . . . . . . . . .  	NUMBER	0001	
IBM  . . . . . . . . . . . . . .  	ALIAS	 IBMVER		
IBMCOPYRIGHT . . . . . . . . . .  	ALIAS	 FALSE		
IBMJAPAN . . . . . . . . . . . .  	ALIAS	 FALSE		
IBMJAPVER  . . . . . . . . . . .  	ALIAS	 FALSE		
IBMVER . . . . . . . . . . . . .  	ALIAS	 TRUE		
IFS_IOCTL  . . . . . . . . . . .  	NUMBER	006B	
INSTALLED  . . . . . . . . . . .  	NUMBER	FFFF	
INSTALLEDDATA  . . . . . . . . .  	NUMBER	0000	
INTBASE  . . . . . . . . . . . .  	NUMBER	0080	
INTERNAT . . . . . . . . . . . .  	ALIAS	 FALSE		
INTERNATIONAL  . . . . . . . . .  	NUMBER	0038	
INTERNAT_BLOCK_MAX . . . . . . .  	NUMBER	0020	
INTTAB . . . . . . . . . . . . .  	NUMBER	0020	
INT_24_ERROR . . . . . . . . . .  	NUMBER	2000	
INT_ABORT  . . . . . . . . . . .  	ALIAS	 INTTAB		
INT_COMMAND  . . . . . . . . . .  	NUMBER	0021	
INT_CTRL_C . . . . . . . . . . .  	NUMBER	0023	
INT_DISK_READ  . . . . . . . . .  	NUMBER	0025	
INT_DISK_WRITE . . . . . . . . .  	NUMBER	0026	
INT_FASTCON  . . . . . . . . . .  	NUMBER	0029	
INT_FATAL_ABORT  . . . . . . . .  	NUMBER	0024	
INT_IBM  . . . . . . . . . . . .  	NUMBER	002A	
INT_KEEP_PROCESS . . . . . . . .  	NUMBER	0027	
INT_SPOOLER  . . . . . . . . . .  	NUMBER	0028	
INT_TERMINATE  . . . . . . . . .  	NUMBER	0022	
IOCTL  . . . . . . . . . . . . .  	NUMBER	0044	
IO_MODE_ID . . . . . . . . . . .  	NUMBER	0002	
ISDIR  . . . . . . . . . . . . .  	NUMBER	0010	

JAPAN  . . . . . . . . . . . . .  	ALIAS	 FALSE		

KANJI  . . . . . . . . . . . . .  	ALIAS	 FALSE		
KEEP_PROCESS . . . . . . . . . .  	NUMBER	0031	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:14
CHKDISK  - procedures that read or write to the disk        Symbols-11


KOREA  . . . . . . . . . . . . .  	ALIAS	 FALSE		

LBL_CHKDISK  . . . . . . . . . .  	NUMBER	0001	
LOCKOPER . . . . . . . . . . . .  	NUMBER	005C	
LSEEK  . . . . . . . . . . . . .  	NUMBER	0042	

MAJOR_VERSION  . . . . . . . . .  	NUMBER	0004	
MAXBUCKETINPAGE  . . . . . . . .  	NUMBER	0002	
MAXBUFFINBUCKET  . . . . . . . .  	NUMBER	000F	
MEMS . . . . . . . . . . . . . .  	NUMBER	0001	
MINOR_VERSION  . . . . . . . . .  	NUMBER	0000	
MINUTE_MASK  . . . . . . . . . .  	NUMBER	07E0	
MI_INT . . . . . . . . . . . . .  	NUMBER	00CD	
MI_LONG_CALL . . . . . . . . . .  	NUMBER	009A	
MI_LONG_JMP  . . . . . . . . . .  	NUMBER	00EA	
MI_LONG_RET  . . . . . . . . . .  	NUMBER	00CB	
MI_NEAR_RET  . . . . . . . . . .  	NUMBER	00C3	
MKDIR  . . . . . . . . . . . . .  	NUMBER	0039	
MONTH_MASK . . . . . . . . . . .  	NUMBER	01E0	
MSVER  . . . . . . . . . . . . .  	NUMBER	0000	
MULTDOS  . . . . . . . . . . . .  	NUMBER	0012	
MULTIFS  . . . . . . . . . . . .  	NUMBER	0011	
MULTIPLEX  . . . . . . . . . . .  	NUMBER	002F	
MULTNET  . . . . . . . . . . . .  	NUMBER	0011	
MULTSHARE  . . . . . . . . . . .  	NUMBER	0010	

NAMBUF . . . . . . . . . . . . .  	V BYTE	0000	DATA	External
NET_CHECK  . . . . . . . . . . .  	NUMBER	1200	
NLSFUNC  . . . . . . . . . . . .  	NUMBER	0014	
NO . . . . . . . . . . . . . . .  	NUMBER	0000	
NOT_EXISTS_MASK  . . . . . . . .  	NUMBER	00F0	
NOT_INCLUDE  . . . . . . . . . .  	NUMBER	0000	
NO_CODE_PAGE_CHECK . . . . . . .  	NUMBER	0100	
NO_ENTRY . . . . . . . . . . . .  	NUMBER	0000	
NO_ERROR . . . . . . . . . . . .  	NUMBER	0000	
NO_EXT_ATTRIB  . . . . . . . . .  	NUMBER	0000	
NO_FOUND . . . . . . . . . . . .  	NUMBER	0000	
NUL_ARG  . . . . . . . . . . . .  	V BYTE	0000	DATA	External

OEM_C1 . . . . . . . . . . . . .  	NUMBER	00F9	
OEM_C2 . . . . . . . . . . . . .  	NUMBER	00FA	
OEM_C3 . . . . . . . . . . . . .  	NUMBER	00FB	
OEM_C4 . . . . . . . . . . . . .  	NUMBER	00FC	
OEM_C5 . . . . . . . . . . . . .  	NUMBER	00FD	
OEM_C6 . . . . . . . . . . . . .  	NUMBER	00FE	
OEM_C7 . . . . . . . . . . . . .  	NUMBER	00FF	
OFF  . . . . . . . . . . . . . .  	NUMBER	0000	
ON . . . . . . . . . . . . . . .  	NUMBER	0001	
OPEN . . . . . . . . . . . . . .  	NUMBER	003D	
OPEN_FOR_BOTH  . . . . . . . . .  	NUMBER	0002	
OPEN_FOR_READ  . . . . . . . . .  	NUMBER	0000	
OPEN_FOR_WRITE . . . . . . . . .  	NUMBER	0001	
ORPHEXT  . . . . . . . . . . . .  	V BYTE	0000	CONST	External

PACK . . . . . . . . . . . . . .  	L NEAR	0000	CODE	External
paras_per_64k  . . . . . . . . .  	V WORD	0000	DATA	External
paras_per_fat  . . . . . . . . .  	V WORD	0000	DATA	External
PARSE_FILE_DESCRIPTOR  . . . . .  	NUMBER	0029	
PATHPARSE  . . . . . . . . . . .  	NUMBER	0061	
PDB_APPEND . . . . . . . . . . .  	BYTE	003D	
PDB_INTERCON . . . . . . . . . .  	BYTE	003C	
PROMPTYN . . . . . . . . . . . .  	L NEAR	0000	CODE	External

RAW_CON_INPUT  . . . . . . . . .  	NUMBER	0007	
RAW_CON_IO . . . . . . . . . . .  	NUMBER	0006	
RDONLY . . . . . . . . . . . . .  	NUMBER	0001	
READ . . . . . . . . . . . . . .  	NUMBER	003F	
ReadFt . . . . . . . . . . . . .  	N PROC	0114	CODE	Global	Length = 0012
read_disk  . . . . . . . . . . .  	N PROC	0000	CODE	Global	Length = 003D
Read_once  . . . . . . . . . . .  	N PROC	003D	CODE	Global	Length = 002E
Read_Write_Relative  . . . . . .  	V BYTE	0000	DATA	External
REDIRECTOR . . . . . . . . . . .  	NUMBER	0000	
RENAME . . . . . . . . . . . . .  	NUMBER	0056	
RESERVED_BITS_MASK . . . . . . .  	NUMBER	FE00	
RET_L  . . . . . . . . . . . . .  	NEAR	006A	CODE
RMDIR  . . . . . . . . . . . . .  	NUMBER	003A	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:14
CHKDISK  - procedures that read or write to the disk        Symbols-12



SECONDPASS . . . . . . . . . . .  	V BYTE	0000	CONST	External
secs_per_64k . . . . . . . . . .  	V WORD	0000	DATA	External
sec_count  . . . . . . . . . . .  	V WORD	0000	DATA	External
seg_adj  . . . . . . . . . . . .  	N PROC	00D4	CODE	Global	Length = 0018
SERVERCALL . . . . . . . . . . .  	NUMBER	005D	
SETBLOCK . . . . . . . . . . . .  	NUMBER	004A	
SETDPB . . . . . . . . . . . . .  	NUMBER	0053	
SET_APPEND_X . . . . . . . . . .  	NUMBER	B707	
SET_CTRL_C_TRAPPING  . . . . . .  	NUMBER	0033	
SET_CURRENT_PDB  . . . . . . . .  	NUMBER	0050	
SET_DATE . . . . . . . . . . . .  	NUMBER	002B	
SET_DEFAULT_DRIVE  . . . . . . .  	NUMBER	000E	
SET_DMA  . . . . . . . . . . . .  	NUMBER	001A	
SET_INTERRUPT_VECTOR . . . . . .  	NUMBER	0025	
SET_OEM_HANDLER  . . . . . . . .  	NUMBER	00F8	
SET_PRINTER_FLAG . . . . . . . .  	NUMBER	0064	
SET_TIME . . . . . . . . . . . .  	NUMBER	002D	
SET_VERIFY_ON_WRITE  . . . . . .  	NUMBER	002E	
SF_BUSY  . . . . . . . . . . . .  	NUMBER	-0001	
SF_CLOSE_NODATE  . . . . . . . .  	NUMBER	4000	
SF_DEFAULT_NUMBER  . . . . . . .  	NUMBER	0005	
SF_FSDA  . . . . . . . . . . . .  	BYTE	0019	
SF_ISFCB . . . . . . . . . . . .  	NUMBER	8000	
SF_ISNET . . . . . . . . . . . .  	NUMBER	8000	
SF_LRU . . . . . . . . . . . . .  	WORD	0015	
SF_NETID . . . . . . . . . . . .  	BYTE	0019	
SF_NET_SPOOL . . . . . . . . . .  	NUMBER	0800	
SF_NO_INHERIT  . . . . . . . . .  	NUMBER	1000	
SF_OPENAGE . . . . . . . . . . .  	WORD	0017	
SF_PIPE  . . . . . . . . . . . .  	NUMBER	2000	
SF_SERIAL_ID . . . . . . . . . .  	WORD	000B	
SHAREF . . . . . . . . . . . . .  	NUMBER	0000	
SHARING_COMPAT . . . . . . . . .  	NUMBER	0000	
SHARING_DENY_BOTH  . . . . . . .  	NUMBER	0010	
SHARING_DENY_NONE  . . . . . . .  	NUMBER	0040	
SHARING_DENY_READ  . . . . . . .  	NUMBER	0030	
SHARING_DENY_WRITE . . . . . . .  	NUMBER	0020	
SHARING_MASK . . . . . . . . . .  	NUMBER	00F0	
SHARING_NET_FCB  . . . . . . . .  	NUMBER	0070	
SHARING_NO_INHERIT . . . . . . .  	NUMBER	0080	
SRFCBPT  . . . . . . . . . . . .  	V WORD	0000	DATA	External
STDAUX . . . . . . . . . . . . .  	NUMBER	0003	
STDERR . . . . . . . . . . . . .  	NUMBER	0002	
STDIN  . . . . . . . . . . . . .  	NUMBER	0000	
STDOUT . . . . . . . . . . . . .  	NUMBER	0001	
STDPRN . . . . . . . . . . . . .  	NUMBER	0004	
STD_AUX_INPUT  . . . . . . . . .  	NUMBER	0003	
STD_AUX_OUTPUT . . . . . . . . .  	NUMBER	0004	
STD_CON_INPUT  . . . . . . . . .  	NUMBER	0001	
STD_CON_INPUT_FLUSH  . . . . . .  	NUMBER	000C	
STD_CON_INPUT_NO_ECHO  . . . . .  	NUMBER	0008	
STD_CON_INPUT_STATUS . . . . . .  	NUMBER	000B	
STD_CON_OUTPUT . . . . . . . . .  	NUMBER	0002	
STD_CON_STRING_INPUT . . . . . .  	NUMBER	000A	
STD_CON_STRING_OUTPUT  . . . . .  	NUMBER	0009	
STD_PRINTER_OUTPUT . . . . . . .  	NUMBER	0005	
STRING_DONE  . . . . . . . . . .  	NUMBER	0000	
SYSTM  . . . . . . . . . . . . .  	NUMBER	0004	

TEMPLEN  . . . . . . . . . . . .  	NUMBER	0086	
THISDPB  . . . . . . . . . . . .  	V DWORD	0000	DATA	External
THISENT  . . . . . . . . . . . .  	NUMBER	0014	
TRUE . . . . . . . . . . . . . .  	NUMBER	FFFF	
TRUEBYTE . . . . . . . . . . . .  	NUMBER	00FF	

UNLINK . . . . . . . . . . . . .  	NUMBER	0041	
UNPACK . . . . . . . . . . . . .  	L NEAR	0000	CODE	External
USERDEV  . . . . . . . . . . . .  	V BYTE	0000	DATA	External
USERDIR  . . . . . . . . . . . .  	V BYTE	0000	CONST	External
USEROPER . . . . . . . . . . . .  	NUMBER	005E	

VOLIDA . . . . . . . . . . . . .  	NUMBER	0008	
VOL_ATTRIBUTE  . . . . . . . . .  	NUMBER	0008	

WAITPROCESS  . . . . . . . . . .  	NUMBER	004D	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:14
CHKDISK  - procedures that read or write to the disk        Symbols-13


WRITE  . . . . . . . . . . . . .  	NUMBER	0040	
write_disk . . . . . . . . . . .  	N PROC	006B	CODE	Global	Length = 003A
Write_once . . . . . . . . . . .  	N PROC	00A5	CODE	Global	Length = 002F
WRITE_PROTECT  . . . . . . . . .  	NUMBER	0000	

XA_CHAIN . . . . . . . . . . . .  	NUMBER	0084	
XDUP . . . . . . . . . . . . . .  	NUMBER	0045	
XDUP2  . . . . . . . . . . . . .  	NUMBER	0046	
XNAMETRANS . . . . . . . . . . .  	NUMBER	0060	

YEAR_MASK  . . . . . . . . . . .  	NUMBER	FE00	
YES  . . . . . . . . . . . . . .  	NUMBER	FFFF	
YES_FOUND  . . . . . . . . . . .  	NUMBER	0001	

$$A_START_chkdisk  . . . . . . .  	L NEAR	0000	CODE	Global
$$A_STOP_chkdisk . . . . . . . .  	L NEAR	0126	CODE	Global
$$DO1  . . . . . . . . . . . . .  	L NEAR	000B	CODE
$$DO5  . . . . . . . . . . . . .  	L NEAR	0073	CODE
$$EN1  . . . . . . . . . . . . .  	L NEAR	0034	CODE
$$EN5  . . . . . . . . . . . . .  	L NEAR	009C	CODE
$$IF9  . . . . . . . . . . . . .  	L NEAR	0125	CODE
??0000 . . . . . . . . . . . . .  	L NEAR	006A	CODE
?PLM . . . . . . . . . . . . . .  	NUMBER	0000	
?WIN . . . . . . . . . . . . . .  	NUMBER	0000	
@CPU . . . . . . . . . . . . . .  	TEXT  0101h		
@FILENAME  . . . . . . . . . . .  	TEXT  chkdisk		
@VERSION . . . . . . . . . . . .  	TEXT  510		


   3401 Source  Lines
   3757 Total   Lines
    926 Symbols

  43052 + 161392 Bytes symbol space free

      0 Warning Errors
      0 Severe  Errors
