diff options
| author | 2024-04-25 21:24:10 +0100 | |
|---|---|---|
| committer | 2024-04-25 22:32:27 +0000 | |
| commit | 2d04cacc5322951f187bb17e017c12920ac8ebe2 (patch) | |
| tree | 80ee017efa878dfd5344b44249e6a241f2a7f6e2 /v4.0/src/CMD/DISKCOPY/DCOPYMS.INC | |
| parent | Merge pull request #430 from jpbaltazar/typoptbr (diff) | |
| download | ms-dos-main.tar.gz ms-dos-main.tar.xz ms-dos-main.zip | |
Diffstat (limited to 'v4.0/src/CMD/DISKCOPY/DCOPYMS.INC')
| -rw-r--r-- | v4.0/src/CMD/DISKCOPY/DCOPYMS.INC | 269 |
1 files changed, 269 insertions, 0 deletions
diff --git a/v4.0/src/CMD/DISKCOPY/DCOPYMS.INC b/v4.0/src/CMD/DISKCOPY/DCOPYMS.INC new file mode 100644 index 0000000..2cb7622 --- /dev/null +++ b/v4.0/src/CMD/DISKCOPY/DCOPYMS.INC | |||
| @@ -0,0 +1,269 @@ | |||
| 1 | ;:util DISKCOPY ;utility name | ||
| 2 | ;:class 1 ;DOS extended errors: | ||
| 3 | ;:class 2 ;parse errors: | ||
| 4 | ;1 Too many parameters | ||
| 5 | ;2 Required parameter missing | ||
| 6 | ;3 Invalid switch | ||
| 7 | ;4 Invalid keyword | ||
| 8 | ;5 Parameter value not in allowed range | ||
| 9 | ;6 Parameter value not allowed [parse ret codes 6 and 7] | ||
| 10 | ;7 (undefined) | ||
| 11 | ;8 Parameter format not correct | ||
| 12 | ;9 (undefined) | ||
| 13 | ;10 Invalid parameter [no corresponding parse ret code] | ||
| 14 | ;11 Invalid parameter combination [no corresponding parse ret code] | ||
| 15 | ;; | ||
| 16 | ;:class A ;system messages | ||
| 17 | ;:use 1 COMMON1 ;MSG 1 is always "Incorrect DOS version" | ||
| 18 | ;; | ||
| 19 | ;:def 2 CR,LF | ||
| 20 | ; | ||
| 21 | ;:use 3 PARSE10 ;CR,LF,"Invalid parameter",CR,LF | ||
| 22 | ; | ||
| 23 | ;:def 4 "Do not specify filename(s)",CR,LF | ||
| 24 | ;"Command Format: DISKCOPY d: d: [/1]",CR,LF | ||
| 25 | ;; | ||
| 26 | ;:def 5 CR,LF,"Invalid drive specification",CR,LF | ||
| 27 | ;"Specified drive does not exist",CR,LF | ||
| 28 | ;"or is non-removable",CR,LF | ||
| 29 | ; | ||
| 30 | ;:def 6 CR,LF,"Cannot DISKCOPY to or from",CR,LF | ||
| 31 | ;"a network drive",CR,LF | ||
| 32 | ; | ||
| 33 | ;:def 7 CR,LF,"Formatting while copying",CR,LF | ||
| 34 | ; | ||
| 35 | ;:def 8 CR,LF,"Insert SOURCE diskette in drive %1:",CR,LF | ||
| 36 | ; | ||
| 37 | ;:def 9 CR,LF,"Insert TARGET diskette in drive %1:",CR,LF | ||
| 38 | ; | ||
| 39 | ;:def 10 "Make sure a diskette is inserted into",CR,LF | ||
| 40 | ;"the drive and the door is closed",CR,LF | ||
| 41 | ; | ||
| 42 | ;:def 11 CR,LF,"Target diskette may be unusable",CR,LF | ||
| 43 | ; | ||
| 44 | ;:def 12 CR,LF,"Target diskette unusable",CR,LF | ||
| 45 | ; | ||
| 46 | ;:use 13 EXTEND21 ;CR,LF,Drive not ready",CR,LF | ||
| 47 | ; | ||
| 48 | ;:use 14 EXTEND19 ;CR,LF,"Attempt to write to write-protected diskette",CR,LF | ||
| 49 | ; | ||
| 50 | ;:use 15 COMMON28 ;CR,LF,"Press any key to continue . . .",CR,LF | ||
| 51 | ; | ||
| 52 | ;:def 16 CR,LF,"Copy another diskette (Y/N)? " | ||
| 53 | ; | ||
| 54 | ;:def 17 CR,LF,"Copying %1 tracks",CR,LF | ||
| 55 | ;"%2 Sectors/Track, %3 Side(s)",CR,LF | ||
| 56 | ; | ||
| 57 | ;:def 18 CR,LF,"Drive types or diskette types",CR,LF | ||
| 58 | ;"not compatible",CR,LF | ||
| 59 | ; | ||
| 60 | ;:def 19 CR,LF,"Unrecoverable read error on drive %1",CR,LF | ||
| 61 | ;"Side %2, track %3",CR,LF | ||
| 62 | ; | ||
| 63 | ;:def 20 CR,LF,"Unrecoverable write error on drive %1",CR,LF | ||
| 64 | ;"Side %2, track %3",CR,LF | ||
| 65 | ; | ||
| 66 | ;:def 21 CR,LF,"Copy process ended",CR,LF | ||
| 67 | ; | ||
| 68 | ;:def 22 CR,LF,"SOURCE diskette bad or incompatible" | ||
| 69 | ; | ||
| 70 | ;:def 23 CR,LF,"TARGET diskette bad or incompatible" | ||
| 71 | ; | ||
| 72 | ;:use 25 EXTEND8 ;CR,LF,"Insufficient memory",CR,LF | ||
| 73 | ; | ||
| 74 | ;:use 26 COMMON36 ;"Volume Serial Number is %1-%2",CR,LF | ||
| 75 | ; | ||
| 76 | ;:end | ||
| 77 | ; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = | ||
| 78 | IF1 ;AN000; | ||
| 79 | %OUT COMPONENT=DISKCOPY, MODULE=DCOPYMS.INC... ;AN000; | ||
| 80 | ENDIF ;AN000; | ||
| 81 | ; $SALUT (0,13,18,22) ; ;AN000; | ||
| 82 | ;THIS MODULE IS INCLUDED IN DCOPYSM.SAL. | ||
| 83 | ; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = | ||
| 84 | HEADER <MESSAGE DESCRIPTORS FOR SPECIFIC MESSAGES> ;AN000; | ||
| 85 | |||
| 86 | FOUR_SUBS EQU 4 ;AN000;FOUR VARIABLES IN ONE MSG | ||
| 87 | PC_ID_4 EQU 4 ;AN000;IDENTIFIES FOURTH REPLACEMENT PARM | ||
| 88 | LETTER_A EQU "A" ;AN000;DEFAULT DRIVE ID | ||
| 89 | PAD_0 EQU "0" ;AN001;PAD CHAR FOR NUMERIC FIXED LEN FIELD | ||
| 90 | FILL_OFF EQU 0 ;AN000;TO BE FILLED IN WITH OFFSET TO DATA | ||
| 91 | FILL_SEG EQU 0 ;AN000;TO BE FILLED IN WITH THE COMMON SEG ID | ||
| 92 | ; SINCE A .COM FILE CANNOT HAVE | ||
| 93 | ; SEGMENT FIXUP RECORDS | ||
| 94 | |||
| 95 | ; DOS FUNCTIONS REFERENCED: | ||
| 96 | CLEAR_BUF EQU 0C0H ;AN007;CLEAR KEYBOARD BUFFER BEFORE INPUT | ||
| 97 | KEY_IN EQU 08H ;AN000;WAIT FOR STD INPUT, NO ECHO | ||
| 98 | ;OUTPUT: AL = CHAR FROM KEYBOARD | ||
| 99 | ;CTL-BREAK IS CHECKED FOR | ||
| 100 | |||
| 101 | KEY_IN_ECHO EQU 01H ;AN000;WAIT FOR STD INPUT, ECHO RESPONSE | ||
| 102 | ;OUTPUT: AL = CHAR FROM KEYBOARD | ||
| 103 | ;CTL-BREAK IS CHECKED FOR | ||
| 104 | |||
| 105 | SUBLIST_PARSE SUBLIST <,,FILL_OFF,FILL_SEG,PC_ID_0,SF_BITS <SF_LEFT,,SF_ASCIIZ,SF_CHAR>,MAX_0,MIN_1,PAD_BLK> ;AN003; | ||
| 106 | PUBLIC SUBLIST_PARSE ;AN003; | ||
| 107 | |||
| 108 | ; THE NEXT GROUP ARE ADDITIONAL CLASS "A" MESSAGES | ||
| 109 | ; SPECIFICALLY DEFINED FOR THE DISKCOPY UTILITY | ||
| 110 | |||
| 111 | ;CR,LF | ||
| 112 | MSGNUM_CR_LF MSG_DESC <2> ;AN000; | ||
| 113 | PUBLIC MSGNUM_CR_LF ;AN000; | ||
| 114 | ; = = = = = = = = = = = = = = = = | ||
| 115 | ;CR,LF,"Invalid parameter",CR,LF | ||
| 116 | MSGNUM_INVALID_PARM MSG_DESC <3> ;AN000; | ||
| 117 | PUBLIC MSGNUM_INVALID_PARM ;AN000; | ||
| 118 | ; = = = = = = = = = = = = = = = = | ||
| 119 | ; "Do not specify filename(s)",CR,LF | ||
| 120 | ; "Command Format: DISKCOPY d: d: [/1]",CR,LF | ||
| 121 | MSGNUM_INVALID_PARM2 MSG_DESC <4> ;AN000; | ||
| 122 | PUBLIC MSGNUM_INVALID_PARM2 ;AN000; | ||
| 123 | ; = = = = = = = = = = = = = = = = | ||
| 124 | ;:def 5 CR,LF,"Invalid drive specification",CR,LF | ||
| 125 | ;"Specified drive does not exist",CR,LF | ||
| 126 | ;"or is non-removable",CR,LF | ||
| 127 | MSGNUM_INVALID_DRV MSG_DESC <5> ;AN000; | ||
| 128 | PUBLIC MSGNUM_INVALID_DRV ;AN000; | ||
| 129 | ; = = = = = = = = = = = = = = = = | ||
| 130 | ;CR,LF,"Cannot DISKCOPY to or from",CR,LF | ||
| 131 | ;"a network drive",CR,LF | ||
| 132 | MSGNUM_DRV_REDIRECTED MSG_DESC <6> ;AN000; | ||
| 133 | PUBLIC MSGNUM_DRV_REDIRECTED ;AN000; | ||
| 134 | ; = = = = = = = = = = = = = = = = | ||
| 135 | ;CR,LF,"Formatting while copying",CR,LF | ||
| 136 | MSGNUM_FORMATTING MSG_DESC <7> ;AN000; | ||
| 137 | PUBLIC MSGNUM_FORMATTING ;AN000; | ||
| 138 | ; = = = = = = = = = = = = = = = = | ||
| 139 | ;CR,LF,"Insert SOURCE diskette in drive %1:",CR,LF | ||
| 140 | MSGNUM_LOAD_SOURCE MSG_DESC <8,,SUBLIST_8,ONE_SUBS> ;AN000; | ||
| 141 | PUBLIC MSGNUM_LOAD_SOURCE ;AN000; | ||
| 142 | |||
| 143 | SUBLIST_8 SUBLIST <,,ASCII_DRV1_ID,FILL_SEG,PC_ID_1,SF_BITS<SF_LEFT,,SF_CH,SF_CHAR>,MAX_0,MIN_1> ;AN000; | ||
| 144 | PUBLIC SUBLIST_8 ;AN000; | ||
| 145 | |||
| 146 | ASCII_DRV1_ID DB LETTER_A - BYTE;AN000; | ||
| 147 | PUBLIC ASCII_DRV1_ID ;AN000; | ||
| 148 | ; = = = = = = = = = = = = = = = = | ||
| 149 | ;CR,LF,"Insert TARGET diskette in drive %1:",CR,LF | ||
| 150 | MSGNUM_LOAD_TARGET MSG_DESC <9,,SUBLIST_9,ONE_SUBS> ;AN000; | ||
| 151 | PUBLIC MSGNUM_LOAD_TARGET ;AN000; | ||
| 152 | |||
| 153 | SUBLIST_9 SUBLIST <,,ASCII_DRV2_ID,FILL_SEG,PC_ID_1,SF_BITS<SF_LEFT,,SF_CH,SF_CHAR>,MAX_0,MIN_1> ;AN000; | ||
| 154 | PUBLIC SUBLIST_9 ;AN000; | ||
| 155 | |||
| 156 | ASCII_DRV2_ID DB LETTER_A - BYTE ;AN000;A:=1, B:=1, ETC | ||
| 157 | PUBLIC ASCII_DRV2_ID ;AN000; | ||
| 158 | ; = = = = = = = = = = = = = = = = | ||
| 159 | ;:def 10 "Make sure a diskette is inserted into",CR,LF | ||
| 160 | ;"the drive and the door is closed",CR,LF | ||
| 161 | MSGNUM_CLOSE_DOOR MSG_DESC <10> ;AN004; | ||
| 162 | PUBLIC MSGNUM_CLOSE_DOOR ;AN004; | ||
| 163 | ; = = = = = = = = = = = = = = = = | ||
| 164 | ;CR,LF,"Target diskette may be unusable",CR,LF | ||
| 165 | MSGNUM_TARGET_MB_UNUSABLE MSG_DESC <11> ;AN000; | ||
| 166 | PUBLIC MSGNUM_TARGET_MB_UNUSABLE ;AN000; | ||
| 167 | ; = = = = = = = = = = = = = = = = | ||
| 168 | ;CR,LF,"Target diskette unusable",CR,LF | ||
| 169 | MSGNUM_TARGET_UNUSABLE MSG_DESC <12> ;AN000; | ||
| 170 | PUBLIC MSGNUM_TARGET_UNUSABLE ;AN000; | ||
| 171 | ; = = = = = = = = = = = = = = = = | ||
| 172 | ;CR,LF,"Drive not ready - %0",CR,LF | ||
| 173 | MSGNUM_GET_READY MSG_DESC <13,,SUBLIST_13,ONE_SUBS> ;AN000; | ||
| 174 | PUBLIC MSGNUM_GET_READY ;AN000; | ||
| 175 | |||
| 176 | SUBLIST_13 SUBLIST <,,DRIVE_LETTER,FILL_SEG,PC_ID_0,SF_BITS<SF_LEFT,,SF_ASCIIZ,SF_CHAR>,MAX_0,MIN_1> ;AN000; | ||
| 177 | PUBLIC SUBLIST_13 ;AN000; | ||
| 178 | ; = = = = = = = = = = = = = = = = | ||
| 179 | ;CR,LF,"Attempt to write to write-protected diskette",CR,LF | ||
| 180 | MSGNUM_WRITE_PROTECT MSG_DESC <14> ;AN000; | ||
| 181 | PUBLIC MSGNUM_WRITE_PROTECT ;AN000; | ||
| 182 | ; = = = = = = = = = = = = = = = = | ||
| 183 | ;"Press any key to continue . . .",CR,LF | ||
| 184 | MSGNUM_STRIKE MSG_DESC <15,,,,(CLASS_A SHL 8) OR (CLEAR_BUF + KEY_IN)> ;AN007; | ||
| 185 | PUBLIC MSGNUM_STRIKE ;AN000; | ||
| 186 | ; = = = = = = = = = = = = = = = = | ||
| 187 | ;CR,LF,"Copy another diskette (Y/N)? " | ||
| 188 | ; AND READ RESPONSE TO AL | ||
| 189 | ; (EVENTUALLY EXPECTED IN "USER_INPUT") | ||
| 190 | MSGNUM_COPY_ANOTHER MSG_DESC <16,,,,(CLASS_A SHL 8) OR (CLEAR_BUF + KEY_IN_ECHO)> ;AN007; | ||
| 191 | PUBLIC MSGNUM_COPY_ANOTHER ;AN000; | ||
| 192 | ; = = = = = = = = = = = = = = = = | ||
| 193 | ;CR,LF,"Copying %1 tracks",CR,LF | ||
| 194 | ;"%2 Sectors/Track, %3 Side(s)",CR,LF | ||
| 195 | MSGNUM_COPYING MSG_DESC <17,,SUBLIST_17A,THREE_SUBS> ;AN000; | ||
| 196 | PUBLIC MSGNUM_COPYING ;AN000; | ||
| 197 | |||
| 198 | SUBLIST_17A SUBLIST <,,MSG_TRACKS,FILL_SEG,PC_ID_1,SF_BITS<SF_LEFT,,SF_WORD,SF_UN_BD>,MAX_0,MIN_1> ;AN000; | ||
| 199 | SUBLIST_17B SUBLIST <,,MSG_SECTRK,FILL_SEG,PC_ID_2,SF_BITS<SF_LEFT,,SF_WORD,SF_UN_BD>,MAX_0,MIN_1> ;AN000; | ||
| 200 | SUBLIST_17C SUBLIST <,,MSG_SIDES,FILL_SEG,PC_ID_3,SF_BITS<SF_LEFT,,SF_WORD,SF_UN_BD>,MAX_0,MIN_1> ;AN000; | ||
| 201 | PUBLIC SUBLIST_17A ;AN000; | ||
| 202 | PUBLIC SUBLIST_17B ;AN000; | ||
| 203 | PUBLIC SUBLIST_17C ;AN000; | ||
| 204 | |||
| 205 | MSG_TRACKS DW 0 ;AN000;NUMBER OF TRACKS | ||
| 206 | MSG_SECTRK DW 0 ;AN000;NUMBER OF SECTORS PER TRACK | ||
| 207 | MSG_SIDES DW 0 ;AN000;NUMBER OF SIDES | ||
| 208 | PUBLIC MSG_TRACKS ;AN000; | ||
| 209 | PUBLIC MSG_SECTRK ;AN000; | ||
| 210 | PUBLIC MSG_SIDES ;AN000; | ||
| 211 | ; = = = = = = = = = = = = = = = = | ||
| 212 | ;CR,LF,"Drive types or diskette types",CR,LF | ||
| 213 | ;"not compatible",CR,LF | ||
| 214 | MSGNUM_NOT_COMPATIBLE MSG_DESC <18> ;AN000; | ||
| 215 | PUBLIC MSGNUM_NOT_COMPATIBLE ;AN000; | ||
| 216 | ; = = = = = = = = = = = = = = = = | ||
| 217 | ;CR,LF,"Unrecoverable read error on drive %1",CR,LF | ||
| 218 | ;"Side %2, track %3",CR,LF | ||
| 219 | MSGNUM_HARD_ERROR_READ MSG_DESC <19,,SUBLIST_19C,THREE_SUBS> ;AN000; | ||
| 220 | PUBLIC MSGNUM_HARD_ERROR_READ ;AN000; | ||
| 221 | |||
| 222 | ;CR,LF,"Unrecoverable write error on drive %1",CR,LF | ||
| 223 | ;"Side %2, track %3",CR,LF | ||
| 224 | MSGNUM_HARD_ERROR_WRITE MSG_DESC <20,,SUBLIST_19C,THREE_SUBS> ;AN000; | ||
| 225 | PUBLIC MSGNUM_HARD_ERROR_WRITE ;AN000; | ||
| 226 | |||
| 227 | SUBLIST_19C SUBLIST <,,DRIVE_LETTER,FILL_SEG,PC_ID_1,SF_BITS<SF_LEFT,,SF_ASCIIZ,SF_CHAR>,MAX_0,MIN_1> ;AN000; | ||
| 228 | SUBLIST_19D SUBLIST <,,ERROR_SIDE_NUMBER,FILL_SEG,PC_ID_2,SF_BITS<SF_LEFT,,SF_WORD,SF_UN_BD>,MAX_0,MIN_1> ;AN000; | ||
| 229 | SUBLIST_19E SUBLIST <,,ERROR_TRACK_NUMBER,FILL_SEG,PC_ID_3,SF_BITS<SF_LEFT,,SF_WORD,SF_UN_BD>,MAX_0,MIN_1> ;AN000; | ||
| 230 | PUBLIC SUBLIST_19C ;AN000; | ||
| 231 | PUBLIC SUBLIST_19D ;AN000; | ||
| 232 | PUBLIC SUBLIST_19E ;AN000; | ||
| 233 | |||
| 234 | DRIVE_LETTER DB LETTER_A,":",NULL ;AN000; | ||
| 235 | PUBLIC DRIVE_LETTER ;AN000; | ||
| 236 | |||
| 237 | ERROR_SIDE_NUMBER DW ? ;AN000; | ||
| 238 | PUBLIC ERROR_SIDE_NUMBER ;AN000; | ||
| 239 | |||
| 240 | ERROR_TRACK_NUMBER DW ? ;AN000; | ||
| 241 | PUBLIC ERROR_TRACK_NUMBER ;AN000; | ||
| 242 | ; = = = = = = = = = = = = = = = = | ||
| 243 | ;CR,LF,"Copy process ended",CR,LF | ||
| 244 | MSGNUM_FATAL_ERROR MSG_DESC <21> ;AN000; | ||
| 245 | PUBLIC MSGNUM_FATAL_ERROR ;AN000; | ||
| 246 | ; = = = = = = = = = = = = = = = = | ||
| 247 | ;CR,LF,"SOURCE diskette bad or incompatible" | ||
| 248 | MSGNUM_BAD_SOURCE MSG_DESC <22> ;AN000; | ||
| 249 | PUBLIC MSGNUM_BAD_SOURCE ;AN000; | ||
| 250 | |||
| 251 | ; = = = = = = = = = = = = = = = = | ||
| 252 | ;CR,LF,"TARGET diskette bad or incompatible" | ||
| 253 | MSGNUM_BAD_TARGET MSG_DESC <23> ;AN000; | ||
| 254 | PUBLIC MSGNUM_BAD_TARGET ;AN000; | ||
| 255 | ; = = = = = = = = = = = = = = = = | ||
| 256 | ;CR,LF,"Insufficient memory",CR,LF | ||
| 257 | MSGNUM_UNSUF_MEMORY MSG_DESC <25> ;AN000; | ||
| 258 | PUBLIC MSGNUM_UNSUF_MEMORY ;AN000; | ||
| 259 | ; = = = = = = = = = = = = = = = = | ||
| 260 | ;"Volume Serial Number is %1-%2" | ||
| 261 | MSGNUM_SERNO MSG_DESC <26,,SUBLIST_26A,TWO_SUBS> ;AN001; | ||
| 262 | PUBLIC MSGNUM_SERNO ;AN001; | ||
| 263 | |||
| 264 | SUBLIST_26A SUBLIST <,,FILL_OFF,FILL_SEG,PC_ID_1,SF_BITS<SF_RIGHT,,SF_WORD,SF_UN_BH>,DWORD,DWORD,PAD_0> ;AN001; | ||
| 265 | SUBLIST_26B SUBLIST <,,FILL_OFF,FILL_SEG,PC_ID_2,SF_BITS<SF_RIGHT,,SF_WORD,SF_UN_BH>,DWORD,DWORD,PAD_0> ;AN001; | ||
| 266 | PUBLIC SUBLIST_26A,SUBLIST_26B ;AN001; | ||
| 267 | ; = = = = = = = = = = = = = = = = | ||
| 268 | ;end of DCOPYMS.INC | ||
| 269 | \ No newline at end of file | ||