summaryrefslogtreecommitdiff
path: root/v2.0/source/CHKMES.ASM
diff options
context:
space:
mode:
authorGravatar Rich Turner1983-08-12 17:53:34 -0700
committerGravatar Rich Turner2018-09-21 17:53:34 -0700
commit80ab2fddfdf30f09f0a0a637654cbb3cd5c7baa6 (patch)
treeee4357f7f3dd0f2ded59b9c6e7384432d85e7ec9 /v2.0/source/CHKMES.ASM
parentMS-DOS v1.25 Release (diff)
downloadms-dos-80ab2fddfdf30f09f0a0a637654cbb3cd5c7baa6.tar.gz
ms-dos-80ab2fddfdf30f09f0a0a637654cbb3cd5c7baa6.tar.xz
ms-dos-80ab2fddfdf30f09f0a0a637654cbb3cd5c7baa6.zip
MS-DOS v2.0 Release
Diffstat (limited to 'v2.0/source/CHKMES.ASM')
-rw-r--r--v2.0/source/CHKMES.ASM477
1 files changed, 477 insertions, 0 deletions
diff --git a/v2.0/source/CHKMES.ASM b/v2.0/source/CHKMES.ASM
new file mode 100644
index 0000000..83af5ba
--- /dev/null
+++ b/v2.0/source/CHKMES.ASM
@@ -0,0 +1,477 @@
1TITLE CHKDSK Messages
2
3FALSE EQU 0
4TRUE EQU NOT FALSE
5
6.xlist
7.xcref
8 INCLUDE DOSSYM.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.
12.cref
13.list
14CODE SEGMENT PUBLIC BYTE
15CODE ENDS
16
17CONST 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
20 EXTRN DOFIX:BYTE
21CONST ENDS
22
23DATA SEGMENT PUBLIC BYTE
24 EXTRN DSIZE:WORD
25DATA ENDS
26
27DG GROUP CODE,CONST,DATA
28
29
30CODE SEGMENT PUBLIC BYTE
31ASSUME CS:DG,DS:DG,ES:DG,SS:DG
32
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
37
38DOINT26:
39 PUSH CX
40 PUSH AX
41 PUSH DX
42 PUSH BX
43 INT 26H
44 MOV [HECODE],AL
45 POP AX ;FLAGS
46 POP BX
47 POP DX
48 POP AX
49 POP CX
50 JNC RET23
51 MOV SI,OFFSET DG:WRITING
52 CALL DSKERR
53 JZ DOINT26
54RET23: RET
55
56RDSKERR:
57 MOV SI,OFFSET DG:READING
58 JMP SHORT DSKERR
59
60WDSKERR:
61 MOV SI,OFFSET DG:WRITING
62DSKERR:
63 PUSH AX
64 PUSH BX
65 PUSH CX
66 PUSH DX
67 PUSH DI
68 PUSH ES
69 MOV AL,[HECODE]
70 CMP AL,12
71 JBE HAVCOD
72 MOV AL,12
73HAVCOD:
74 XOR AH,AH
75 MOV DI,AX
76 SHL DI,1
77 MOV DX,WORD PTR [DI+MESBAS] ; Get pointer to error message
78 CALL PRINT ; Print error type
79 MOV DX,OFFSET DG:ERRMES
80 CALL PRINT
81 MOV DX,SI
82 CALL PRINT
83 MOV DX,OFFSET DG:DRVMES
84 CALL PRINT
85ASK:
86 MOV DX,OFFSET DG:REQUEST
87 CALL PRINT
88 MOV AX,(STD_CON_INPUT_FLUSH SHL 8)+STD_CON_INPUT
89 INT 21H ; Get response
90 PUSH AX
91 CALL DOCRLF
92 POP AX
93 OR AL,20H ; Convert to lower case
94 CMP AL,"i" ; Ignore?
95 JZ EEXITNZ
96 CMP AL,"r" ; Retry?
97 JZ EEXIT
98 CMP AL,"a" ; Abort?
99 JNZ ASK
100 JMP RDONE
101
102EEXITNZ:
103 OR AL,AL ; Resets zero flag
104EEXIT:
105 POP ES
106 POP DI
107 POP DX
108 POP CX
109 POP BX
110 POP AX
111 RET
112
113PROMPTYN:
114;Prompt message in DX
115;Prompt user for Y or N answer. Zero set if Y
116 PUSH SI
117 CALL PRINT
118PAGAIN:
119 MOV DX,OFFSET DG:YES_NO
120 CALL PRINT
121 MOV DX,OFFSET DG:CONBUF
122 MOV AH,STD_CON_STRING_INPUT
123 INT 21H
124 CALL DOCRLF
125 MOV SI,OFFSET DG:CONBUF+2
126 CMP BYTE PTR [SI-1],0
127 JZ PAGAIN
128 LODSB
129 OR AL,20H ;Convert to lower case
130 CMP AL,'y'
131 JZ GOTANS
132 CMP AL,'n'
133 JZ GOTNANS
134 JMP PAGAIN
135GOTNANS:
136 OR AL,AL ;Reset zero
137GOTANS:
138 POP SI
139 RET
140
141SETSWITCH:
142;Look for F or V switch in command line
143 MOV SI,80H
144 LODSB
145 MOV DI,SI
146 MOV CL,AL
147 XOR CH,CH
148 JCXZ RET10 ;No parameters
149 MOV AL,[SWITCHAR]
150MORESCAN:
151 REPNZ SCASB
152 JNZ RET10
153 JCXZ BADSWITCHA
154 MOV AH,[DI]
155 INC DI
156 OR AH,20H ;Convert to lower case
157 CMP AH,'f'
158 JNZ CHECKV
159 INC [DOFIX]
160 JMP SHORT CHEKMORE
161CHECKV:
162 CMP AH,'v'
163 JZ SETNOISY
164 CALL BADSWITCH
165 JMP SHORT CHEKMORE
166SETNOISY:
167 INC [NOISY]
168CHEKMORE:
169 LOOP MORESCAN
170 RET
171
172BADSWITCHA:
173 MOV AH,' ' ;Print a non switch
174BADSWITCH:
175 PUSH AX
176 MOV DL,[SWITCHAR]
177 CALL PRTCHR
178 POP AX
179 PUSH AX
180 MOV DL,AH
181 CALL PRTCHR
182 MOV DX,OFFSET DG:BADSWMES
183 CALL PRINT
184 POP AX
185RET10: RET
186
187
188;**************************************
189; Prints XXX lost clusters found in YYY chains message
190; On entry SI is the XXX value and the YYY value is
191; in ORPHCNT.
192; NOTE:
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.
197
198CHAINREPORT:
199 XOR DI,DI
200 MOV BX,OFFSET DG:ORPHMES2
201 CALL DISP16BITS
202 CALL FINDCHAIN
203 MOV BX,OFFSET DG:CHNUMMES
204 MOV SI,[ORPHCNT]
205 XOR DI,DI
206 CALL DISP16BITS ;Tell user how many chains found
207 RET
208
209;*****************************************
210;Prints all of the reporting data
211;NOTE:
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.
217
218REPORT:
219 MOV AX,[DSIZE]
220 MOV BX,OFFSET DG:DSKSPC
221 CALL DISPCLUS ;Total size
222 CMP [HIDCNT],0
223 JZ USERLIN
224 MOV AX,[HIDSIZ] ;Hidden files
225 MOV BX,OFFSET DG:INMES
226 CALL DISPCLUS
227 MOV SI,[HIDCNT]
228 XOR DI,DI
229 MOV BX,OFFSET DG:HIDMES
230 CALL DISP16BITS
231USERLIN:
232 CMP [DIRCNT],0
233 JZ DIRLIN
234 MOV AX,[DIRSIZ]
235 MOV BX,OFFSET DG:INMES
236 CALL DISPCLUS
237 MOV SI,[DIRCNT]
238 XOR DI,DI
239 MOV BX,OFFSET DG:DIRMES
240 CALL DISP16BITS
241DIRLIN:
242 CMP [FILCNT],0
243 JZ ORPHLIN
244 MOV AX,[FILSIZ] ;Regular files
245 MOV BX,OFFSET DG:INMES
246 CALL DISPCLUS
247 MOV SI,[FILCNT]
248 XOR DI,DI
249 MOV BX,OFFSET DG:FILEMES
250 CALL DISP16BITS
251ORPHLIN:
252 MOV AX,[ORPHSIZ]
253 OR AX,AX
254 JZ BADLIN
255 MOV BX,OFFSET DG:INMES ;Orphans
256 CMP [DOFIX],0
257 JNZ ALLSET1
258 MOV BX,OFFSET DG:INMES2 ;Orphans
259ALLSET1:
260 CALL DISPCLUS
261 MOV SI,[ORPHCNT]
262 XOR DI,DI
263 MOV BX,OFFSET DG:ORPHMES
264 CALL DISP16BITS
265BADLIN:
266 MOV AX,[BADSIZ]
267 OR AX,AX
268 JZ AVAILIN
269 MOV BX,OFFSET DG:BADSPC ;Bad sectors
270 CALL DISPCLUS
271AVAILIN:
272 MOV AX,[DSIZE]
273 SUB AX,[DIRSIZ]
274 SUB AX,[FILSIZ]
275 SUB AX,[HIDSIZ]
276 SUB AX,[BADSIZ]
277 SUB AX,[ORPHSIZ]
278 SUB AX,[LCLUS]
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
282 MOV DX,16
283 MUL DX
284 MOV SI,AX
285 MOV DI,DX
286 MOV BX,OFFSET DG:TOTMEM
287 CALL DISP32BITS
288 MOV AX,DS:WORD PTR [2]
289 MOV DX,CS
290 SUB AX,DX
291 MOV DX,16
292 MUL DX
293 MOV SI,AX
294 MOV DI,DX
295 MOV BX,OFFSET DG:FREMEM
296 CALL DISP32BITS
297 RET
298
299CODE ENDS
300
301
302CONST SEGMENT PUBLIC BYTE
303
304 EXTRN HECODE:BYTE,SWITCHAR:BYTE,NOISY:BYTE,DOFIX:BYTE,CONBUF:BYTE
305
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
313 PUBLIC BADDRVM2
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
318 PUBLIC FREEMES
319 PUBLIC OPNERR
320 PUBLIC CONTAINS,EXTENTS,NOEXTENTS,INDENT
321 PUBLIC BADIDBYT,PTRANDIR,PTRANDIR2
322
323
324MESBAS DW OFFSET DG:ERR0
325 DW OFFSET DG:ERR1
326 DW OFFSET DG:ERR2
327 DW OFFSET DG:ERR3
328 DW OFFSET DG:ERR4
329 DW OFFSET DG:ERR5
330 DW OFFSET DG:ERR6
331 DW OFFSET DG:ERR7
332 DW OFFSET DG:ERR8
333 DW OFFSET DG:ERR9
334 DW OFFSET DG:ERR10
335 DW OFFSET DG:ERR11
336 DW OFFSET DG:ERR12
337
338CRLF2 DB 13,10
339CRLF DB 13,10,"$"
340
341;Messages
342
343BADVER DB "Incorrect DOS version",13,10,"$"
344BADDRV DB "Invalid drive specification$"
345
346BADSWMES DB " Invalid parameter",13,10,"$"
347
348BADSUBDIR DB " Invalid sub-directory entry.",13,10,"$"
349CENTRY DB " Entry has a bad $"
350CLUSBAD DB " link$"
351BADATT DB " attribute$"
352BADSIZM DB " size$"
353
354;"BADTARG1<name of dir followed by CR LF>BADTARG2"
355BADTARG1 DB "Cannot CHDIR to $"
356BADTARG2 DB " tree past this point not processed.",13,10,"$"
357
358BADCD DB "Cannot CHDIR to root",13,10,"$"
359
360FATALMES DB "Processing cannot continue.",13,10,"$"
361BADRDMES DB "File allocation table bad drive "
362BADDRVM DB "A.",13,10,"$"
363STACKMES DB "Insufficient memory.",13,10,"$"
364BADDPBDIR DB "Invalid current directory.",13,10,"$"
365
366;INT 24 MESSAGE SHOULD AGREE WITH COMMAND
367
368READING DB "read$"
369WRITING DB "writ$"
370ERRMES DB " error $"
371DRVMES DB "ing drive "
372BADDRVM2 DB "A",13,10,"$"
373REQUEST DB "Abort, Retry, Ignore? $"
374ERR0 DB "Write protect$"
375ERR1 DB "Bad unit$"
376ERR2 DB "Not ready$"
377ERR3 DB "Bad command$"
378ERR4 DB "Data$"
379ERR5 DB "Bad call format$"
380ERR6 DB "Seek$"
381ERR7 DB "Non-DOS disk$"
382ERR8 DB "Sector not found$"
383ERR9 DB "No paper$"
384ERR10 DB "Write fault$"
385ERR11 DB "Read fault$"
386ERR12 DB "Disk$"
387
388
389NDOTMES DB " Does not exist.",13,10,"$"
390NULNZ DB " First cluster number is invalid,",13,10
391 DB " entry truncated.",13,10,"$"
392NULDMES DB " Directory is totally empty, no . or ..",13,10,"$"
393BADCLUS DB " Allocation error, size adjusted.",13,10,"$"
394NORECDOT DB " Cannot recover . entry, processing continued.",13,10,"$"
395NORECDDOT DB " Cannot recover .. entry,"
396
397;VOLUME ID
398
399;"IDMES1/name at VNAME<date and time>IDPOST"
400IDPOST DB 13,10,"$" ;WARNING this is currently the tail of
401 ; the previos message!!!
402IDMES1 DB "Volume "
403VNAME DB 12 DUP(' ')
404 DB "created $"
405TCHAR DB 'a'
406MONTAB DB "JanFebMarAprMayJunJulAugSepOctNovDec"
407
408
409
410;"BADREAD_PRE<# of FAT>BADREAD_POST"
411BADREAD_PRE DB "Disk error reading FAT $"
412
413;"BADWRITE_PRE<# of FAT>BADWRITE_POST"
414BADWRITE_PRE DB "Disk error writing FAT $"
415
416BADCHAIN DB " Has invalid cluster, file truncated."
417
418BADREAD_POST LABEL BYTE
419BADWRITE_POST LABEL BYTE
420
421;"<name of file followed by CR LF>CROSSMES_PRE<# of cluster>CROSSMES_POST"
422CROSSMES_POST DB 13,10,"$" ;WARNING Is tail of previos messages
423CROSSMES_PRE DB " Is cross linked on cluster $"
424
425;CHAINREPORT messages
426ORPHMES2 DB " lost clusters found in $"
427CHNUMMES DB " chains.",13,10,"$"
428
429FREEMES DB "Convert lost chains to files $"
430
431;REPORT messages
432ORPHMES DB " recovered files",13,10,"$"
433DSKSPC DB " bytes total disk space",13,10,"$"
434INMES DB " bytes in $"
435INMES2 DB " bytes would be in",13,10
436 DB " $"
437FILEMES DB " user files",13,10,"$"
438BADSPC DB " bytes in bad sectors",13,10,"$"
439HIDMES DB " hidden files",13,10,"$"
440DIRMES DB " directories",13,10,"$"
441FRESPC DB " bytes available on disk",13,10,13,10,"$"
442TOTMEM DB " bytes total memory",13,10,"$"
443FREMEM DB " bytes free",13,10,13,10,"$"
444
445;"<filename followed by CR LF>CONTAINS<# non-contig blocks>EXTENTS"
446CONTAINS DB " Contains $"
447EXTENTS DB " non-contiguous blocks.",13,10,"$"
448
449NOEXTENTS DB "All specified file(s) are contiguous.",13,10,"$"
450INDENT DB " $"
451
452BADIDBYT DB "Probable non-DOS disk."
453 DB 13,10,"Continue $"
454YES_NO DB "(Y/N)? $"
455PTRANDIR DB " Unrecoverable error in directory.",13,10
456PTRANDIR2 DB " Convert directory to file $"
457FIXMES DB 13,10,"Errors found, F parameter not specified."
458 DB 13,10,"Corrections will not be written to disk.",13,10,13,10,"$"
459DIRECMES DB "Directory $"
460CDDDMES DB " CHDIR .. failed, trying alternate method.",13,10,"$"
461
462
463FREEBYMESF_POST DB " bytes disk space freed.",13,10
464FREEBYMESF_PRE DB "$"
465FREEBYMES_POST DB " bytes disk space",13,10
466 DB " would be freed.",13,10
467FREEBYMES_PRE DB "$"
468
469
470CREATMES DB "Insufficient room in root directory."
471 DB 13,10,"Erase files in root and repeat CHKDSK.",13,10,"$"
472OPNERR DB " File not found.",13,10,"$"
473
474
475CONST ENDS
476 END
477