From 80ab2fddfdf30f09f0a0a637654cbb3cd5c7baa6 Mon Sep 17 00:00:00 2001 From: Rich Turner Date: Fri, 12 Aug 1983 17:53:34 -0700 Subject: MS-DOS v2.0 Release --- v2.0/source/CHKMES.ASM | 477 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 477 insertions(+) create mode 100644 v2.0/source/CHKMES.ASM (limited to 'v2.0/source/CHKMES.ASM') 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 @@ +TITLE CHKDSK Messages + +FALSE EQU 0 +TRUE EQU NOT FALSE + +.xlist +.xcref + INCLUDE DOSSYM.ASM +;The DOST: prefix is a DEC TOPS/20 directory prefix. Remove it for +; assembly in MS-DOS assembly environments using MASM. The DOSSYM.ASM +; file must exist though, it is included with OEM distribution. +.cref +.list +CODE SEGMENT PUBLIC BYTE +CODE ENDS + +CONST SEGMENT PUBLIC BYTE + EXTRN HIDSIZ:WORD,HIDCNT:WORD,DIRCNT:WORD,DIRSIZ:WORD,FILCNT:WORD + EXTRN FILSIZ:WORD,ORPHCNT:WORD,ORPHSIZ:WORD,BADSIZ:WORD,LCLUS:WORD + EXTRN DOFIX:BYTE +CONST ENDS + +DATA SEGMENT PUBLIC BYTE + EXTRN DSIZE:WORD +DATA ENDS + +DG GROUP CODE,CONST,DATA + + +CODE SEGMENT PUBLIC BYTE +ASSUME CS:DG,DS:DG,ES:DG,SS:DG + + PUBLIC RDSKERR,WDSKERR,SETSWITCH,PROMPTYN,DOINT26,CHAINREPORT,REPORT + EXTRN RDONE:NEAR,PRTCHR:NEAR,PRINT:NEAR,DOCRLF:NEAR + EXTRN DISP16BITS:NEAR,FINDCHAIN:NEAR + EXTRN DISP32BITS:NEAR,DISPCLUS:NEAR + +DOINT26: + PUSH CX + PUSH AX + PUSH DX + PUSH BX + INT 26H + MOV [HECODE],AL + POP AX ;FLAGS + POP BX + POP DX + POP AX + POP CX + JNC RET23 + MOV SI,OFFSET DG:WRITING + CALL DSKERR + JZ DOINT26 +RET23: RET + +RDSKERR: + MOV SI,OFFSET DG:READING + JMP SHORT DSKERR + +WDSKERR: + MOV SI,OFFSET DG:WRITING +DSKERR: + PUSH AX + PUSH BX + PUSH CX + PUSH DX + PUSH DI + PUSH ES + MOV AL,[HECODE] + CMP AL,12 + JBE HAVCOD + MOV AL,12 +HAVCOD: + XOR AH,AH + MOV DI,AX + SHL DI,1 + MOV DX,WORD PTR [DI+MESBAS] ; Get pointer to error message + CALL PRINT ; Print error type + MOV DX,OFFSET DG:ERRMES + CALL PRINT + MOV DX,SI + CALL PRINT + MOV DX,OFFSET DG:DRVMES + CALL PRINT +ASK: + MOV DX,OFFSET DG:REQUEST + CALL PRINT + MOV AX,(STD_CON_INPUT_FLUSH SHL 8)+STD_CON_INPUT + INT 21H ; Get response + PUSH AX + CALL DOCRLF + POP AX + OR AL,20H ; Convert to lower case + CMP AL,"i" ; Ignore? + JZ EEXITNZ + CMP AL,"r" ; Retry? + JZ EEXIT + CMP AL,"a" ; Abort? + JNZ ASK + JMP RDONE + +EEXITNZ: + OR AL,AL ; Resets zero flag +EEXIT: + POP ES + POP DI + POP DX + POP CX + POP BX + POP AX + RET + +PROMPTYN: +;Prompt message in DX +;Prompt user for Y or N answer. Zero set if Y + PUSH SI + CALL PRINT +PAGAIN: + MOV DX,OFFSET DG:YES_NO + CALL PRINT + MOV DX,OFFSET DG:CONBUF + MOV AH,STD_CON_STRING_INPUT + INT 21H + CALL DOCRLF + MOV SI,OFFSET DG:CONBUF+2 + CMP BYTE PTR [SI-1],0 + JZ PAGAIN + LODSB + OR AL,20H ;Convert to lower case + CMP AL,'y' + JZ GOTANS + CMP AL,'n' + JZ GOTNANS + JMP PAGAIN +GOTNANS: + OR AL,AL ;Reset zero +GOTANS: + POP SI + RET + +SETSWITCH: +;Look for F or V switch in command line + MOV SI,80H + LODSB + MOV DI,SI + MOV CL,AL + XOR CH,CH + JCXZ RET10 ;No parameters + MOV AL,[SWITCHAR] +MORESCAN: + REPNZ SCASB + JNZ RET10 + JCXZ BADSWITCHA + MOV AH,[DI] + INC DI + OR AH,20H ;Convert to lower case + CMP AH,'f' + JNZ CHECKV + INC [DOFIX] + JMP SHORT CHEKMORE +CHECKV: + CMP AH,'v' + JZ SETNOISY + CALL BADSWITCH + JMP SHORT CHEKMORE +SETNOISY: + INC [NOISY] +CHEKMORE: + LOOP MORESCAN + RET + +BADSWITCHA: + MOV AH,' ' ;Print a non switch +BADSWITCH: + PUSH AX + MOV DL,[SWITCHAR] + CALL PRTCHR + POP AX + PUSH AX + MOV DL,AH + CALL PRTCHR + MOV DX,OFFSET DG:BADSWMES + CALL PRINT + POP AX +RET10: RET + + +;************************************** +; Prints XXX lost clusters found in YYY chains message +; On entry SI is the XXX value and the YYY value is +; in ORPHCNT. +; NOTE: +; The DISP16BITS routine prints the number in DI:SI followed +; by the message pointed to by BX. If it is desired to +; print a message before the first number, point at the +; message with DX and call PRINT. + +CHAINREPORT: + XOR DI,DI + MOV BX,OFFSET DG:ORPHMES2 + CALL DISP16BITS + CALL FINDCHAIN + MOV BX,OFFSET DG:CHNUMMES + MOV SI,[ORPHCNT] + XOR DI,DI + CALL DISP16BITS ;Tell user how many chains found + RET + +;***************************************** +;Prints all of the reporting data +;NOTE: +; The DISPCLUS, DISP16BITS and DISP32BITS routines +; print the number in DI:SI followed +; by the message pointed to by BX. If it is desired to +; print a message before the first number, point at the +; message with DX and call PRINT. + +REPORT: + MOV AX,[DSIZE] + MOV BX,OFFSET DG:DSKSPC + CALL DISPCLUS ;Total size + CMP [HIDCNT],0 + JZ USERLIN + MOV AX,[HIDSIZ] ;Hidden files + MOV BX,OFFSET DG:INMES + CALL DISPCLUS + MOV SI,[HIDCNT] + XOR DI,DI + MOV BX,OFFSET DG:HIDMES + CALL DISP16BITS +USERLIN: + CMP [DIRCNT],0 + JZ DIRLIN + MOV AX,[DIRSIZ] + MOV BX,OFFSET DG:INMES + CALL DISPCLUS + MOV SI,[DIRCNT] + XOR DI,DI + MOV BX,OFFSET DG:DIRMES + CALL DISP16BITS +DIRLIN: + CMP [FILCNT],0 + JZ ORPHLIN + MOV AX,[FILSIZ] ;Regular files + MOV BX,OFFSET DG:INMES + CALL DISPCLUS + MOV SI,[FILCNT] + XOR DI,DI + MOV BX,OFFSET DG:FILEMES + CALL DISP16BITS +ORPHLIN: + MOV AX,[ORPHSIZ] + OR AX,AX + JZ BADLIN + MOV BX,OFFSET DG:INMES ;Orphans + CMP [DOFIX],0 + JNZ ALLSET1 + MOV BX,OFFSET DG:INMES2 ;Orphans +ALLSET1: + CALL DISPCLUS + MOV SI,[ORPHCNT] + XOR DI,DI + MOV BX,OFFSET DG:ORPHMES + CALL DISP16BITS +BADLIN: + MOV AX,[BADSIZ] + OR AX,AX + JZ AVAILIN + MOV BX,OFFSET DG:BADSPC ;Bad sectors + CALL DISPCLUS +AVAILIN: + MOV AX,[DSIZE] + SUB AX,[DIRSIZ] + SUB AX,[FILSIZ] + SUB AX,[HIDSIZ] + SUB AX,[BADSIZ] + SUB AX,[ORPHSIZ] + SUB AX,[LCLUS] + MOV BX,OFFSET DG:FRESPC + CALL DISPCLUS ;Free space is whats left + MOV AX,DS:WORD PTR [2] ;Find out about memory + MOV DX,16 + MUL DX + MOV SI,AX + MOV DI,DX + MOV BX,OFFSET DG:TOTMEM + CALL DISP32BITS + MOV AX,DS:WORD PTR [2] + MOV DX,CS + SUB AX,DX + MOV DX,16 + MUL DX + MOV SI,AX + MOV DI,DX + MOV BX,OFFSET DG:FREMEM + CALL DISP32BITS + RET + +CODE ENDS + + +CONST SEGMENT PUBLIC BYTE + + EXTRN HECODE:BYTE,SWITCHAR:BYTE,NOISY:BYTE,DOFIX:BYTE,CONBUF:BYTE + + PUBLIC CRLF2,CRLF,BADVER,BADDRV + PUBLIC BADSUBDIR,CENTRY,CLUSBAD,BADATT,BADSIZM + PUBLIC FIXMES,DIRECMES,CDDDMES + PUBLIC FREEBYMESF_PRE,FREEBYMES_PRE,FREEBYMESF_POST,FREEBYMES_POST + PUBLIC CREATMES,NDOTMES + PUBLIC BADTARG1,BADTARG2,BADCD,FATALMES,BADRDMES + PUBLIC BADDRVM,STACKMES,BADDPBDIR + PUBLIC BADDRVM2 + PUBLIC NULNZ,NULDMES,BADCLUS,NORECDOT + PUBLIC NORECDDOT,IDMES1,IDPOST,VNAME,TCHAR + PUBLIC MONTAB,BADREAD_PRE,BADREAD_POST,BADWRITE_PRE + PUBLIC BADWRITE_POST,BADCHAIN,CROSSMES_PRE,CROSSMES_POST + PUBLIC FREEMES + PUBLIC OPNERR + PUBLIC CONTAINS,EXTENTS,NOEXTENTS,INDENT + PUBLIC BADIDBYT,PTRANDIR,PTRANDIR2 + + +MESBAS DW OFFSET DG:ERR0 + DW OFFSET DG:ERR1 + DW OFFSET DG:ERR2 + DW OFFSET DG:ERR3 + DW OFFSET DG:ERR4 + DW OFFSET DG:ERR5 + DW OFFSET DG:ERR6 + DW OFFSET DG:ERR7 + DW OFFSET DG:ERR8 + DW OFFSET DG:ERR9 + DW OFFSET DG:ERR10 + DW OFFSET DG:ERR11 + DW OFFSET DG:ERR12 + +CRLF2 DB 13,10 +CRLF DB 13,10,"$" + +;Messages + +BADVER DB "Incorrect DOS version",13,10,"$" +BADDRV DB "Invalid drive specification$" + +BADSWMES DB " Invalid parameter",13,10,"$" + +BADSUBDIR DB " Invalid sub-directory entry.",13,10,"$" +CENTRY DB " Entry has a bad $" +CLUSBAD DB " link$" +BADATT DB " attribute$" +BADSIZM DB " size$" + +;"BADTARG1BADTARG2" +BADTARG1 DB "Cannot CHDIR to $" +BADTARG2 DB " tree past this point not processed.",13,10,"$" + +BADCD DB "Cannot CHDIR to root",13,10,"$" + +FATALMES DB "Processing cannot continue.",13,10,"$" +BADRDMES DB "File allocation table bad drive " +BADDRVM DB "A.",13,10,"$" +STACKMES DB "Insufficient memory.",13,10,"$" +BADDPBDIR DB "Invalid current directory.",13,10,"$" + +;INT 24 MESSAGE SHOULD AGREE WITH COMMAND + +READING DB "read$" +WRITING DB "writ$" +ERRMES DB " error $" +DRVMES DB "ing drive " +BADDRVM2 DB "A",13,10,"$" +REQUEST DB "Abort, Retry, Ignore? $" +ERR0 DB "Write protect$" +ERR1 DB "Bad unit$" +ERR2 DB "Not ready$" +ERR3 DB "Bad command$" +ERR4 DB "Data$" +ERR5 DB "Bad call format$" +ERR6 DB "Seek$" +ERR7 DB "Non-DOS disk$" +ERR8 DB "Sector not found$" +ERR9 DB "No paper$" +ERR10 DB "Write fault$" +ERR11 DB "Read fault$" +ERR12 DB "Disk$" + + +NDOTMES DB " Does not exist.",13,10,"$" +NULNZ DB " First cluster number is invalid,",13,10 + DB " entry truncated.",13,10,"$" +NULDMES DB " Directory is totally empty, no . or ..",13,10,"$" +BADCLUS DB " Allocation error, size adjusted.",13,10,"$" +NORECDOT DB " Cannot recover . entry, processing continued.",13,10,"$" +NORECDDOT DB " Cannot recover .. entry," + +;VOLUME ID + +;"IDMES1/name at VNAMEIDPOST" +IDPOST DB 13,10,"$" ;WARNING this is currently the tail of + ; the previos message!!! +IDMES1 DB "Volume " +VNAME DB 12 DUP(' ') + DB "created $" +TCHAR DB 'a' +MONTAB DB "JanFebMarAprMayJunJulAugSepOctNovDec" + + + +;"BADREAD_PRE<# of FAT>BADREAD_POST" +BADREAD_PRE DB "Disk error reading FAT $" + +;"BADWRITE_PRE<# of FAT>BADWRITE_POST" +BADWRITE_PRE DB "Disk error writing FAT $" + +BADCHAIN DB " Has invalid cluster, file truncated." + +BADREAD_POST LABEL BYTE +BADWRITE_POST LABEL BYTE + +;"CROSSMES_PRE<# of cluster>CROSSMES_POST" +CROSSMES_POST DB 13,10,"$" ;WARNING Is tail of previos messages +CROSSMES_PRE DB " Is cross linked on cluster $" + +;CHAINREPORT messages +ORPHMES2 DB " lost clusters found in $" +CHNUMMES DB " chains.",13,10,"$" + +FREEMES DB "Convert lost chains to files $" + +;REPORT messages +ORPHMES DB " recovered files",13,10,"$" +DSKSPC DB " bytes total disk space",13,10,"$" +INMES DB " bytes in $" +INMES2 DB " bytes would be in",13,10 + DB " $" +FILEMES DB " user files",13,10,"$" +BADSPC DB " bytes in bad sectors",13,10,"$" +HIDMES DB " hidden files",13,10,"$" +DIRMES DB " directories",13,10,"$" +FRESPC DB " bytes available on disk",13,10,13,10,"$" +TOTMEM DB " bytes total memory",13,10,"$" +FREMEM DB " bytes free",13,10,13,10,"$" + +;"CONTAINS<# non-contig blocks>EXTENTS" +CONTAINS DB " Contains $" +EXTENTS DB " non-contiguous blocks.",13,10,"$" + +NOEXTENTS DB "All specified file(s) are contiguous.",13,10,"$" +INDENT DB " $" + +BADIDBYT DB "Probable non-DOS disk." + DB 13,10,"Continue $" +YES_NO DB "(Y/N)? $" +PTRANDIR DB " Unrecoverable error in directory.",13,10 +PTRANDIR2 DB " Convert directory to file $" +FIXMES DB 13,10,"Errors found, F parameter not specified." + DB 13,10,"Corrections will not be written to disk.",13,10,13,10,"$" +DIRECMES DB "Directory $" +CDDDMES DB " CHDIR .. failed, trying alternate method.",13,10,"$" + + +FREEBYMESF_POST DB " bytes disk space freed.",13,10 +FREEBYMESF_PRE DB "$" +FREEBYMES_POST DB " bytes disk space",13,10 + DB " would be freed.",13,10 +FREEBYMES_PRE DB "$" + + +CREATMES DB "Insufficient room in root directory." + DB 13,10,"Erase files in root and repeat CHKDSK.",13,10,"$" +OPNERR DB " File not found.",13,10,"$" + + +CONST ENDS + END + \ No newline at end of file -- cgit v1.2.3