]>
wirehaze git hosting - MS-DOS.git/blob - v2.0/source/CHKMES.ASM
9 ;The DOST: prefix is a DEC TOPS/20 directory prefix. Remove it for
10 ; assembly in MS-DOS assembly environments using MASM. The DOSSYM.ASM
11 ; file must exist though, it is included with OEM distribution.
14 CODE SEGMENT PUBLIC BYTE
17 CONST
SEGMENT PUBLIC BYTE
18 EXTRN HIDSIZ
:WORD,HIDCNT
:WORD,DIRCNT
:WORD,DIRSIZ
:WORD,FILCNT
:WORD
19 EXTRN FILSIZ
:WORD,ORPHCNT
:WORD,ORPHSIZ
:WORD,BADSIZ
:WORD,LCLUS
:WORD
23 DATA SEGMENT PUBLIC BYTE
27 DG GROUP
CODE,CONST
,DATA
30 CODE SEGMENT PUBLIC BYTE
31 ASSUME
CS:DG
,DS:DG
,ES:DG
,SS:DG
33 PUBLIC RDSKERR
,WDSKERR
,SETSWITCH
,PROMPTYN
,DOINT26
,CHAINREPORT
,REPORT
34 EXTRN RDONE
:NEAR,PRTCHR
:NEAR,PRINT
:NEAR,DOCRLF
:NEAR
35 EXTRN DISP16BITS
:NEAR,FINDCHAIN
:NEAR
36 EXTRN DISP32BITS
:NEAR,DISPCLUS
:NEAR
51 MOV SI,OFFSET DG
:WRITING
57 MOV SI,OFFSET DG
:READING
61 MOV SI,OFFSET DG
:WRITING
77 MOV DX,WORD PTR [DI+MESBAS
] ; Get pointer to error message
78 CALL PRINT
; Print error type
79 MOV DX,OFFSET DG
:ERRMES
83 MOV DX,OFFSET DG
:DRVMES
86 MOV DX,OFFSET DG
:REQUEST
88 MOV AX,(STD_CON_INPUT_FLUSH
SHL 8)+STD_CON_INPUT
89 INT 21H
; Get response
93 OR AL,20H
; Convert to lower case
103 OR AL,AL ; Resets zero flag
114 ;Prompt message in DX
115 ;Prompt user for Y or N answer. Zero set if Y
119 MOV DX,OFFSET DG
:YES_NO
121 MOV DX,OFFSET DG
:CONBUF
122 MOV AH,STD_CON_STRING_INPUT
125 MOV SI,OFFSET DG
:CONBUF
+2
126 CMP BYTE PTR [SI-1],0
129 OR AL,20H
;Convert to lower case
142 ;Look for F or V switch in command line
148 JCXZ RET10
;No parameters
156 OR AH,20H
;Convert to lower case
173 MOV AH,' ' ;Print a non switch
182 MOV DX,OFFSET DG
:BADSWMES
188 ;**************************************
189 ; Prints XXX lost clusters found in YYY chains message
190 ; On entry SI is the XXX value and the YYY value is
193 ; The DISP16BITS routine prints the number in DI:SI followed
194 ; by the message pointed to by BX. If it is desired to
195 ; print a message before the first number, point at the
196 ; message with DX and call PRINT.
200 MOV BX,OFFSET DG
:ORPHMES2
203 MOV BX,OFFSET DG
:CHNUMMES
206 CALL DISP16BITS
;Tell user how many chains found
209 ;*****************************************
210 ;Prints all of the reporting data
212 ; The DISPCLUS, DISP16BITS and DISP32BITS routines
213 ; print the number in DI:SI followed
214 ; by the message pointed to by BX. If it is desired to
215 ; print a message before the first number, point at the
216 ; message with DX and call PRINT.
220 MOV BX,OFFSET DG
:DSKSPC
221 CALL DISPCLUS
;Total size
224 MOV AX,[HIDSIZ
] ;Hidden files
225 MOV BX,OFFSET DG
:INMES
229 MOV BX,OFFSET DG
:HIDMES
235 MOV BX,OFFSET DG
:INMES
239 MOV BX,OFFSET DG
:DIRMES
244 MOV AX,[FILSIZ
] ;Regular files
245 MOV BX,OFFSET DG
:INMES
249 MOV BX,OFFSET DG
:FILEMES
255 MOV BX,OFFSET DG
:INMES
;Orphans
258 MOV BX,OFFSET DG
:INMES2
;Orphans
263 MOV BX,OFFSET DG
:ORPHMES
269 MOV BX,OFFSET DG
:BADSPC
;Bad sectors
279 MOV BX,OFFSET DG
:FRESPC
280 CALL DISPCLUS
;Free space is whats left
281 MOV AX,DS:WORD PTR [2] ;Find out about memory
286 MOV BX,OFFSET DG
:TOTMEM
288 MOV AX,DS:WORD PTR [2]
295 MOV BX,OFFSET DG
:FREMEM
302 CONST
SEGMENT PUBLIC BYTE
304 EXTRN HECODE
:BYTE,SWITCHAR
:BYTE,NOISY
:BYTE,DOFIX
:BYTE,CONBUF
:BYTE
306 PUBLIC CRLF2
,CRLF
,BADVER
,BADDRV
307 PUBLIC BADSUBDIR
,CENTRY
,CLUSBAD
,BADATT
,BADSIZM
308 PUBLIC FIXMES
,DIRECMES
,CDDDMES
309 PUBLIC FREEBYMESF_PRE
,FREEBYMES_PRE
,FREEBYMESF_POST
,FREEBYMES_POST
310 PUBLIC CREATMES
,NDOTMES
311 PUBLIC BADTARG1
,BADTARG2
,BADCD
,FATALMES
,BADRDMES
312 PUBLIC BADDRVM
,STACKMES
,BADDPBDIR
314 PUBLIC NULNZ
,NULDMES
,BADCLUS
,NORECDOT
315 PUBLIC NORECDDOT
,IDMES1
,IDPOST
,VNAME
,TCHAR
316 PUBLIC MONTAB
,BADREAD_PRE
,BADREAD_POST
,BADWRITE_PRE
317 PUBLIC BADWRITE_POST
,BADCHAIN
,CROSSMES_PRE
,CROSSMES_POST
320 PUBLIC CONTAINS
,EXTENTS
,NOEXTENTS
,INDENT
321 PUBLIC BADIDBYT
,PTRANDIR
,PTRANDIR2
324 MESBAS
DW OFFSET DG
:ERR0
343 BADVER
DB "Incorrect DOS version",13,10,"$"
344 BADDRV
DB "Invalid drive specification$"
346 BADSWMES
DB " Invalid parameter",13,10,"$"
348 BADSUBDIR
DB " Invalid sub-directory entry.",13,10,"$"
349 CENTRY
DB " Entry has a bad $"
351 BADATT
DB " attribute$"
354 ;"BADTARG1<name of dir followed by CR LF>BADTARG2"
355 BADTARG1
DB "Cannot CHDIR to $"
356 BADTARG2
DB " tree past this point not processed.",13,10,"$"
358 BADCD
DB "Cannot CHDIR to root",13,10,"$"
360 FATALMES
DB "Processing cannot continue.",13,10,"$"
361 BADRDMES
DB "File allocation table bad drive "
362 BADDRVM
DB "A.",13,10,"$"
363 STACKMES
DB "Insufficient memory.",13,10,"$"
364 BADDPBDIR
DB "Invalid current directory.",13,10,"$"
366 ;INT 24 MESSAGE SHOULD AGREE WITH COMMAND
371 DRVMES
DB "ing drive "
372 BADDRVM2
DB "A",13,10,"$"
373 REQUEST
DB "Abort, Retry, Ignore? $"
374 ERR0
DB "Write protect$"
377 ERR3
DB "Bad command$"
379 ERR5
DB "Bad call format$"
381 ERR7
DB "Non-DOS disk$"
382 ERR8
DB "Sector not found$"
384 ERR10
DB "Write fault$"
385 ERR11
DB "Read fault$"
389 NDOTMES
DB " Does not exist.",13,10,"$"
390 NULNZ
DB " First cluster number is invalid,",13,10
391 DB " entry truncated.",13,10,"$"
392 NULDMES
DB " Directory is totally empty, no . or ..",13,10,"$"
393 BADCLUS
DB " Allocation error, size adjusted.",13,10,"$"
394 NORECDOT
DB " Cannot recover . entry, processing continued.",13,10,"$"
395 NORECDDOT
DB " Cannot recover .. entry,"
399 ;"IDMES1/name at VNAME<date and time>IDPOST"
400 IDPOST
DB 13,10,"$" ;WARNING this is currently the tail of
401 ; the previos message!!!
406 MONTAB
DB "JanFebMarAprMayJunJulAugSepOctNovDec"
410 ;"BADREAD_PRE<# of FAT>BADREAD_POST"
411 BADREAD_PRE
DB "Disk error reading FAT $"
413 ;"BADWRITE_PRE<# of FAT>BADWRITE_POST"
414 BADWRITE_PRE
DB "Disk error writing FAT $"
416 BADCHAIN
DB " Has invalid cluster, file truncated."
418 BADREAD_POST
LABEL BYTE
419 BADWRITE_POST
LABEL BYTE
421 ;"<name of file followed by CR LF>CROSSMES_PRE<# of cluster>CROSSMES_POST"
422 CROSSMES_POST
DB 13,10,"$" ;WARNING Is tail of previos messages
423 CROSSMES_PRE
DB " Is cross linked on cluster $"
425 ;CHAINREPORT messages
426 ORPHMES2
DB " lost clusters found in $"
427 CHNUMMES
DB " chains.",13,10,"$"
429 FREEMES
DB "Convert lost chains to files $"
432 ORPHMES
DB " recovered files",13,10,"$"
433 DSKSPC
DB " bytes total disk space",13,10,"$"
434 INMES
DB " bytes in $"
435 INMES2
DB " bytes would be in",13,10
437 FILEMES
DB " user files",13,10,"$"
438 BADSPC
DB " bytes in bad sectors",13,10,"$"
439 HIDMES
DB " hidden files",13,10,"$"
440 DIRMES
DB " directories",13,10,"$"
441 FRESPC
DB " bytes available on disk",13,10,13,10,"$"
442 TOTMEM
DB " bytes total memory",13,10,"$"
443 FREMEM
DB " bytes free",13,10,13,10,"$"
445 ;"<filename followed by CR LF>CONTAINS<# non-contig blocks>EXTENTS"
446 CONTAINS
DB " Contains $"
447 EXTENTS
DB " non-contiguous blocks.",13,10,"$"
449 NOEXTENTS
DB "All specified file(s) are contiguous.",13,10,"$"
452 BADIDBYT
DB "Probable non-DOS disk."
453 DB 13,10,"Continue $"
455 PTRANDIR
DB " Unrecoverable error in directory.",13,10
456 PTRANDIR2
DB " Convert directory to file $"
457 FIXMES
DB 13,10,"Errors found, F parameter not specified."
458 DB 13,10,"Corrections will not be written to disk.",13,10,13,10,"$"
459 DIRECMES
DB "Directory $"
460 CDDDMES
DB " CHDIR .. failed, trying alternate method.",13,10,"$"
463 FREEBYMESF_POST
DB " bytes disk space freed.",13,10
464 FREEBYMESF_PRE
DB "$"
465 FREEBYMES_POST
DB " bytes disk space",13,10
466 DB " would be freed.",13,10
470 CREATMES
DB "Insufficient room in root directory."
471 DB 13,10,"Erase files in root and repeat CHKDSK.",13,10,"$"
472 OPNERR
DB " File not found.",13,10,"$"