1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
|
;:util DISKCOMP ;utility name
;:class 1 ;DOS extended errors:
;:class 2 ;parse errors:
;1 Too many parameters
;2 Required parameter missing
;3 Invalid switch
;4 Invalid keyword
;5 Parameter value not in allowed range
;6 Parameter value not allowed [parse ret codes 6 and 7]
;7 (undefined)
;8 Parameter format not correct
;9 (undefined)
;10 Invalid parameter [no corresponding parse ret code]
;11 Invalid parameter combination [no corresponding parse ret code]
;;
;:class A ;system messages
;
;:use 1 COMMON1 ;"Incorrect DOS version"
;
;:use 2 EXTEND8 ;"Insufficient memory"
;
;:use 3 PARSE10 ;"Invalid parameter"
;;
;:def 4 "Do not specify filename(s)",CR,LF
;"Command format: DISKCOMP d: d: [/1][/8]",LF,CR
;
;:def 5 CR,LF,"Invalid drive specification",CR,LF
;"Specified drive does not exist",CR,LF
;"or is non-removable",CR,LF
;
;:def 6 CR,LF,"Cannot DISKCOMP to or from",CR,LF
;"a network drive",CR,LF
;
;:def 7 CR,LF,"Insert FIRST diskette in drive %1:",CR,LF
;
;:def 8 CR,LF,"Insert SECOND diskette in drive %1:",CR,LF
;
;:def 9 CR,LF,"FIRST diskette bad or incompatible",CR,LF
;
;:def 10 CR,LF,"SECOND diskette bad or incompatible",CR,LF
;
;:use 11 EXTEND21 ;"Drive not ready" NOTE CHANGE %1 TO %0
;
;:use 12 COMMON28 ;"Press any key to continue . . ."
;
;:use 13 EXTEND19 ;CR,LF,"Attempt to write to write-protected diskette",CR,LF
;
;:def 14 CR,LF,"Compare another diskette (Y/N) ?"
;
;:def 15 CR,LF,"Comparing %1 tracks",CR,LF
;"%2 sectors per track, %3 side(s)",CR,LF
;
;:def 16 CR,LF,"Drive types or diskette types",CR,LF
;"not compatible",CR,LF
;
;:def 17 CR,LF,"Unrecoverable read error on drive %2",CR,LF
;"side %3, track %4",CR,LF
;
;:def 18 CR,LF,"Compare error on",CR,LF,"side %3, track %4",CR,LF
;
;:def 19 "Make sure a diskette is inserted into",CR,LF
;"the drive and the door is closed",CR,LF
;
;:def 20 CR,LF,"Compare process ended",CR,LF
;
;:def 21 CR,LF,"Compare OK",CR,LF
;
;:def 22 CR,LF
;:end
; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
IF1 ;AN000;
%OUT COMPONENT=DISKCOMP, MODULE=DCOMPMS.INC...;AN000;
ENDIF ;AN000;
; $SALUT (0,13,18,22) ; ;AN000;
;THIS MODULE IS INCLUDED IN DCOMPSM.SAL.
; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
FOUR_SUBS EQU 4 ;AN000;FOUR VARIABLES IN ONE MSG
PC_ID_4 EQU 4 ;AN000;IDENTIFIES FOURTH REPLACEMENT PARM
PC_ID_5 EQU 5 ;AN000;IDENTIFIES FIFTH REPLACEMENT PARM
LETTER_A EQU "A" ;AN000;DEFAULT DRIVE ID
CLEAR_BUF EQU 0C0H ;AN006;CLEAR KEYBOARD BUFFER BEFORE INPUT
KEY_IN_ECHO EQU 1 ;AN000;REQUEST KEYBOARD INPUT TO AL, ECHO RESPONSE
KEY_IN EQU 8 ;AN000;REQUEST KEYBOARD INPUT TO AL, NO ECHO
FILL_OFF EQU 0 ;AN000;TO BE FILLED IN WITH OFFSET TO DATA
FILL_SEG EQU 0 ;AN000;TO BE FILLED IN WITH THE COMMON SEG ID
; SINCE A .COM FILE CANNOT HAVE
; SEGMENT FIXUP RECORDS
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;
PUBLIC SUBLIST_PARSE ;AN003;
; THE NEXT GROUP ARE ADDITIONAL CLASS "A" MESSAGES
; SPECIFICALLY DEFINED FOR THE DISKCOMP UTILITY
;"Insufficient memory"
MSGNUM_UNSUF_MEMORY MSG_DESC <2> ;AN000;
PUBLIC MSGNUM_UNSUF_MEMORY ;AN000;
;CR,LF,"Invalid parameter",CR,LF
MSGNUM_INVALID_PARM MSG_DESC <3> ;AN000;
PUBLIC MSGNUM_INVALID_PARM ;AN000;
;"Do not specify filename(s)",CR,LF
;"Command format: DISKCOMP d: d: [/1][/8]",CR,LF
MSGNUM_INVALID_PARM2 MSG_DESC <4> ;AN000;
PUBLIC MSGNUM_INVALID_PARM2 ;AN000;
; = = = = = = = = = = = = = = = =
;CR,LF,"Invalid drive specification",CR,LF
;"Specified drive does not exist",CR,LF
;"or is non-removable",CR,LF
MSGNUM_INVALID_DRV MSG_DESC <5> ;AN000;
PUBLIC MSGNUM_INVALID_DRV ;AN000;
; = = = = = = = = = = = = = = = =
;CR,LF,"Cannot DISKCOMP to or from",CR,LF
;"a network drive",CR,LF
MSGNUM_DRV_REDIRECTED MSG_DESC <6> ;AN000;
PUBLIC MSGNUM_DRV_REDIRECTED ;AN000;
; = = = = = = = = = = = = = = = =
;CR,LF,"Insert FIRST diskette in drive %1:",CR,LF
MSGNUM_LOAD_FIRST MSG_DESC <7,,SUBLIST_78,ONE_SUBS> ;AN000;
PUBLIC MSGNUM_LOAD_FIRST,SUBLIST_78 ;AN000;
SUBLIST_78 SUBLIST <,,FILL_OFF,FILL_SEG,PC_ID_1,SF_BITS<SF_LEFT,,SF_CH,SF_CHAR>,MAX_0,MIN_1>;AN000;
;THE "FILL" FIELDS NEED TO BE SET TO POINT TO
;"ASCII_DRV1_ID" OR "ASCII_DRV2_ID"(BELOW).
;CR,LF,"Insert SECOND diskette in drive %1:",CR,LF
MSGNUM_LOAD_SECOND MSG_DESC <8,,SUBLIST_78,ONE_SUBS> ;AN000;
PUBLIC MSGNUM_LOAD_SECOND ;AN000;
;IF "FIRST" SPECIFIED
ASCII_DRV1_ID DB LETTER_A-BYTE ;AN000;
;IF "SECOND" SPECIFIED
ASCII_DRV2_ID DB LETTER_A-BYTE ;AN000;
PUBLIC ASCII_DRV1_ID,ASCII_DRV2_ID ;AN000;
; = = = = = = = = = = = = = = = =
;CR,LF,"FIRST diskette bad or incompatible",CR,LF
MSGNUM_BAD_FIRST MSG_DESC <9> ;AN000;
PUBLIC MSGNUM_BAD_FIRST ;AN000;
; = = = = = = = = = = = = = = = =
;CR,LF,"SECOND diskette bad or incompatible",CR,LF
MSGNUM_BAD_SECOND MSG_DESC <10> ;AN000;
PUBLIC MSGNUM_BAD_SECOND ;AN000;
; = = = = = = = = = = = = = = = =
;CR,LF,Drive not ready",CR,LF
MSGNUM_GET_READY MSG_DESC <11,,SUBLIST_11,ONE_SUBS> ;AN000;
PUBLIC MSGNUM_GET_READY ;AN000;
SUBLIST_11 SUBLIST <,,DRIVE_LETTER,FILL_SEG,PC_ID_0,SF_BITS<SF_LEFT,,SF_ASCIIZ,SF_CHAR>,MAX_0,MIN_1>;AN000;
PUBLIC SUBLIST_11 ;AN000;
DRIVE_LETTER DB LETTER_A,":",NULL ;AN000;
PUBLIC DRIVE_LETTER ;AN000;
SKIP_MSG DB NULL ;AN000;
PUBLIC SKIP_MSG ;AN000;
; = = = = = = = = = = = = = = = =
;CR,LF,"Press any key to continue . . .",CR,LF
MSGNUM_STRIKE MSG_DESC <12,,,,(CLASS_A SHL 8) OR (CLEAR_BUF + KEY_IN)> ;AN006;
PUBLIC MSGNUM_STRIKE ;AN000;
; = = = = = = = = = = = = = = = =
; ;CR,LF,"Attempt to write to write-protected diskette",CR,LF
MSGNUM_WRITE_PROTECT MSG_DESC <13> ;AN000;
PUBLIC MSGNUM_WRITE_PROTECT ;AN000;
; = = = = = = = = = = = = = = = =
;CR,LF,"Compare another diskette (Y/N) ?"
MSGNUM_COMP_ANOTHER MSG_DESC <14,,,,(CLASS_A SHL 8) OR (CLEAR_BUF + KEY_IN_ECHO)> ;AN006;
PUBLIC MSGNUM_COMP_ANOTHER ;AN000;
; = = = = = = = = = = = = = = = =
;CR,LF,"Comparing %1 tracks",CR,LF
;"%2 Sectors/Track, %3 Side(s)",CR,LF
MSGNUM_COMPARING MSG_DESC <15,,SUBLIST_15A,THREE_SUBS> ;AN000;
PUBLIC MSGNUM_COMPARING ;AN000;
SUBLIST_15A SUBLIST <,,MSG_TRACKS,FILL_SEG,PC_ID_1,SF_BITS<SF_LEFT,,SF_WORD,SF_UN_BD>,MAX_0,MIN_1>;AN000;
SUBLIST_15B SUBLIST <,,MSG_SECTRK,FILL_SEG,PC_ID_2,SF_BITS<SF_LEFT,,SF_WORD,SF_UN_BD>,MAX_0,MIN_1>;AN000;
SUBLIST_15C SUBLIST <,,MSG_SIDES,FILL_SEG,PC_ID_3,SF_BITS<SF_LEFT,,SF_WORD,SF_UN_BD>,MAX_0,MIN_1>;AN000;
PUBLIC SUBLIST_15A,SUBLIST_15B,SUBLIST_15C ;AN000;
MSG_TRACKS DW 0 ;AN000;NUMBER OF TRACKS
MSG_SECTRK DW 0 ;AN000;NUMBER OF SECTORS PER TRACK
MSG_SIDES DW 0 ;AN000;NUMBER OF SIDES
PUBLIC MSG_TRACKS,MSG_SECTRK,MSG_SIDES ;AN000;
; = = = = = = = = = = = = = = = =
;CR,LF,"Drive types or diskette types",CR,LF
;"not compatible",CR,LF
MSGNUM_NOT_COMPATIBLE MSG_DESC <16> ;AN000;
PUBLIC MSGNUM_NOT_COMPATIBLE ;AN000;
; = = = = = = = = = = = = = = = =
;CR,LF,"Unrecoverable read error on drive %2",CR,LF
;"side %3, track %4",CR,LF
;%2 IS "DRIVE_LETTER", AND
;"MSG_SIDES" AND "MSG_TRACKS" ARE %3 AND %4.
MSGNUM_HARD_ERROR_READ MSG_DESC <17,,SUBLIST_17B,THREE_SUBS> ;AN000;
PUBLIC MSGNUM_HARD_ERROR_READ ;AN000;
SUBLIST_17B SUBLIST <,,DRIVE_LETTER,FILL_SEG,PC_ID_2,SF_BITS<SF_LEFT,,SF_ASCIIZ,SF_CHAR>,MAX_0,MIN_1>;AN000;
SUBLIST_17C SUBLIST <,,MSG_SIDES,FILL_SEG,PC_ID_3,SF_BITS<SF_LEFT,,SF_WORD,SF_UN_BD>,MAX_0,MIN_1> ;AN000;
SUBLIST_17D SUBLIST <,,MSG_TRACKS,FILL_SEG,PC_ID_4,SF_BITS<SF_LEFT,,SF_WORD,SF_UN_BD>,MAX_0,MIN_1>;AN000;
PUBLIC SUBLIST_17B,SUBLIST_17C,SUBLIST_17D ;AN000;
;CR,LF,"Compare error on",CR,LF
;"side %3, track %4",CR,LF
;"MSG_SIDES" AND "MSG_TRACKS" ARE %3 AND %4.
MSGNUM_HARD_ERROR_COMP MSG_DESC <18,,SUBLIST_17C,TWO_SUBS> ;AN000;
PUBLIC MSGNUM_HARD_ERROR_COMP ;AN000;
; = = = = = = = = = = = = = = = =
;:def 19 "Make sure a diskette is inserted into",CR,LF
;"the drive and the door is closed",CR,LF
MSGNUM_CLOSE_DOOR MSG_DESC <19> ;AN004;
PUBLIC MSGNUM_CLOSE_DOOR ;AN004;
; = = = = = = = = = = = = = = = =
;CR,LF,"Compare process ended",CR,LF
MSGNUM_FATAL_ERROR MSG_DESC <20> ;AN000;
PUBLIC MSGNUM_FATAL_ERROR ;AN000;
; = = = = = = = = = = = = = = = =
;CR,LF,"Compare OK",CR,LF
MSGNUM_COMP_OK MSG_DESC <21> ;AN000;
PUBLIC MSGNUM_COMP_OK ;AN000;
; = = = = = = = = = = = = = = = =
;CR,LF
MSGNUM_NEWLINE MSG_DESC <22> ;AC007;
PUBLIC MSGNUM_NEWLINE ;AN000;
; = = = = = = = = = = = = = = = =
;end of DCOMPMS.INC
|