2 ;ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ P R O L O G ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
5 ; AX001 - P3976: Need to have all pieces of messages in MODE.SKL so have to
6 ; implement the SYSGETMSG method of getting addressability to
7 ; the pieces. This means that the code does a SYSGETMSG call
8 ; which returns a pointer (DS:SI) to the message piece. The
9 ; address is then put in the sublist block for the message
12 ; AC002 - P3258: PS/2 only COM parameters were being allowed on non-PS/2
13 ; machines. Added checks for baud=19200, parity=mark or space,
14 ; data=5 or 6, stop=1.5 for both keyword and positional forms
15 ; in MODEPARSE.ASM. Had to enlarge the possible parm size for
16 ; "Function not supported on this computer - ?????????????"
19 ;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ P R O L O G ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
22 ;ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ P U B L I C S ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
25 ;PUBLICs for the sublists are handled in modemes.asm
26 PUBLIC Utility_Msg_Class ;AN001;
29 ;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ P U B L I C S ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
33 ;*****************************************************************************
34 ; External data declarations
35 ;*****************************************************************************
40 ;*****************************************************************************
41 ; Message Retriever equates
42 ;*****************************************************************************
45 INCLUDE common.stc ;contains the following structure
49 ; db ? ;Sublist Length, fixed
50 ; db ? ;Reserved, not used yet ;AN000;
52 ;sublist_seg dw ? ;segment part of pointer to piece of message
53 ; db ? ;number of this piece of the message,0 indicates special end of message format ;AN000;
55 ; db ? ;maximum field width
56 ; db ? ;minimum field width
57 ; db ? ;character to use for padding
63 INCLUDE modequat.inc ;contains the following two equates for this file
65 ;FLAGS field bit(s) values
67 ;Left_Align equ 0 ;00xxxxxx
68 ;Right_Align equ 80h ;10xxxxxx
70 Char_Field_Char equ 0 ;a0000000
71 Char_Field_ASCIIZ equ 00010000B ;a0010000
73 ;Unsgn_Bin_Byte equ 11h ;a0010001
74 Unsgn_Bin_Word equ 21h ;a0100001
75 Unsgn_Bin_DWord equ 31h ;a0110001
77 Sgn_Bin_Byte equ 12h ;a0010010
78 Sgn_Bin_Word equ 22h ;a0100010
79 Sgn_Bin_DWord equ 32h ;a0110010
81 Bin_Hex_Byte equ 13h ;a0010011
82 Bin_Hex_Word equ 23h ;a0100011
83 Bin_Hex_DWord equ 33h ;a0110011
93 Parse_Error_Class equ 2
94 Utility_Msg_Class equ 0FFh
98 Sublist_Length equ TYPE sublist_def
100 to_be_filled_in EQU 77H ;conspicious number
105 ;*****************************************************************************
106 ; Message Sublist Tables
107 ;*****************************************************************************
109 ;The following control blocks are used for messages with
110 ;replaceable paramters. These control blocks are used by the
114 ;--------------------------- ;
115 first_sublist LABEL BYTE
117 sublist_invalid_switch label byte ;AN000;description of %0
118 sublist_invalid_parameter label byte ;AN000;description of %0
120 db Sublist_Length ;fixed ;AN000;
121 db Reserved ;not used yet ;AN000;
122 offending_parameter_ptr LABEL WORD
123 dw offset offending_parameter ;pointer to string or binary value ;AN000;
125 db 0 ;ID, special end of message format ;AN000;
126 sub_typ db Left_Align+char_field_ASCIIZ ;maybe changed ;AN000;
127 db 0 ;Max width 123, 128-"MODE " ;AN000;
128 db 1 ;May be one char long ;AN000;
130 ;--------------------------- ;
132 sublist_err1 label byte ;AN000;description of %0
134 db Sublist_Length ;fixed ;AN000;
135 db Reserved ;not used yet ;AN000;
136 illegal_device_ptr LABEL WORD
137 dw ? ;pointer to device name string filled in by modecom;AN000;
139 db 0 ;ID, special end of message format ;AN000;
140 db Left_Align+char_field_ASCIIZ ; ;AN000;
141 db 5 ;Max width, "LPT1:" ;AN000;
144 ;--------------------------- ;
145 Sublist_PT80 label byte ; ;AN000;
147 db Sublist_Length ; ;AN000;
148 db Reserved ; ;AN000;
149 dw offset PT80N ;where the printer number is stashed ;AN000;
150 dw to_be_filled_in ; ;AN000;
151 db 1 ;ID, only one sublist ;AN000;
152 db Left_Align+Char_Field_Char ; ;AN000;
155 db Blank ;no filler needed but still have this field to fill
156 ;--------------------------- ;
157 Sublist_PT132 label byte ; ;AN000;
159 db Sublist_Length ; ;AN000;
160 db Reserved ; ;AN000;
161 dw offset PT132N ; ;AN000;
162 dw to_be_filled_in ; ;AN000;
164 db Left_Align+Char_Field_Char ; ;AN000;
168 ;--------------------------- ;
169 Sublist_initmsg label byte ;CR,LF,"COM%c: %3s,%c,%c,%c,%c",CR,LF,EOM
171 db Sublist_Length ; ;AN000;
172 db Reserved ; ;AN000;
173 dw offset device ; ;AN000;
174 dw to_be_filled_in ; ;AN000;
175 db 1 ;first of 6 ;AN000;
176 db Left_Align+char_field_char ;AN000;
178 db 1 ;one char number between 1 and 4;AN000;
181 db Sublist_Length ; ;AN000;
182 db Reserved ; ;AN000;
184 dw offset pbaud ; ;AN000;
185 dw to_be_filled_in ; ;AN000;
186 db 2 ;second of 6 ;AN000;
187 db Left_Align+char_field_ASCIIZ ;AN000;
188 db 0;RPS ;19200 ;AN000;
189 db 3 ;110, 300 etc the shortest
192 db Sublist_Length ; ;AN000;
193 db Reserved ; ;AN000;
194 pparity_ptr LABEL BYTE ;allow access from invoke
195 dw offset pparity ; ;AN000;
196 dw to_be_filled_in ; ;AN000;
197 db 3 ;third of 6 ;AN000;
198 db Left_Align+char_field_char ;AN000;
200 db 1 ;one char, n, o, e.
203 db Sublist_Length ; ;AN000;
204 db Reserved ; ;AN000;
205 dw offset pdata ; ;AN000;
206 dw to_be_filled_in ; ;AN000;
207 db 4 ;fourth of 6 ;AN000;
208 db Left_Align+char_field_char ;AN000;
210 db 1 ;one char number between 6 and 8;AN000;
211 db blank ;never used, will display at least the default data bits
213 db Sublist_Length ; ;AN000;
214 db Reserved ; ;AN000;
216 dw offset pstop ; ;AN000;
217 dw to_be_filled_in ; ;AN000;
218 db 5 ;fifth of 6 ;AN000;
219 db Left_Align+char_field_ASCIIZ ;AN000;
220 db 0 ;big enough for "1.5" ;AN000;
221 db 1 ;one char number between 1 and 2;AN000;
224 db Sublist_Length ; ;AN000;
225 db Reserved ; ;AN000;
226 dw offset pparm ; ;AN000;
227 dw to_be_filled_in ; ;AN000;
228 db 6 ;last of 6 ;AN000;
229 db Left_Align+char_field_char ;AN000;
231 db 1 ;one char "P" or "-"
233 ;--------------------------- ;
234 Sublist_shift_msg label byte ; ;AN000;
236 db Sublist_Length ; ;AN000;
237 db Reserved ; ;AN000;
238 lftm_or_rghtm_ptr label word
239 ;AC001; dw offset leftmost ;filled in with pointer to "leftmost 0?" or "rightmost 9?"
240 dw ? ;AC001;filled in with pointer to "leftmost 0?" or "rightmost 9?"
241 dw to_be_filled_in ; ;AN000;
242 db 1 ;only 1 sub list ;AN000;
243 db Left_Align+char_field_ASCIIZ ;AN000;
244 db 0;RPS ;rightmost 9? ;AN000;
245 db 10 ;leftmost 0? ;AN000;
247 ;--------------------------- ;
248 Sublist_redirmsg label byte ;AN000; CR,LF,"LPT%1: rerouted to COM%2:",CR,LF,EOM
250 db Sublist_Length ; ;AN000;
251 db Reserved ; ;AN000;
252 dw Offset REDPT ;filled with printer number
254 db 1 ;first of 2 ;AN000;
255 db Left_Align+char_field_char ; ;AN000;
260 db Sublist_Length ; ;AN000;
261 db Reserved ; ;AN000;
262 dw Offset REDCOM ;filled with COM port number
264 db 2 ;second of 2 ;AN000;
265 db Left_Align+char_field_char ; ;AN000;
270 ;--------------------------- ;
271 Sublist_notremsg label byte ;AN000; CR,LF,"LPT%1: not rerouted",CR,LF,EOM
273 db Sublist_Length ; ;AN000;
274 db Reserved ; ;AN000;
275 dw Offset NOTREDPT ;filled with printer number
278 db Left_Align+char_field_char ; ;AN000;
283 ;--------------------------- ;
284 Sublist_retparto label byte ; ;AN000;
286 db Sublist_Length ; ;AN000;
287 db Reserved ; ;AN000;
288 ;AC001;inf_or_no_ptr LABEL WORD ;filled in with pointer to "No" or "infinit"
289 ;AC001; dw offset infinite ; ;AN000;
290 dw ? ;AC001;filled in with pointer to "No" or "infinit"
291 dw to_be_filled_in ; ;AN000;
293 db Left_Align+Char_Field_ASCIIZ ;AN000;
297 ;--------------------------- ;
298 Sublist_cant_shift label byte ;"Unable to shift screen ...." ;AN000;
300 db Sublist_Length ; ;AN000;
301 db Reserved ; ;AN000;
302 LEFT_OR_RIGHT_PTR LABEL WORD ;AN000;
303 ;AC001; dw offset left ;FILLED WITH OFFSET OF 'left' or 'right'
304 dw ? ;AC001;FILLED WITH OFFSET OF 'left' or 'right'
305 dw to_be_filled_in ; ;AN000;
307 db Left_Align+Char_Field_ASCIIZ ;AN000;
311 ;--------------------------- ;
312 Sublist_CPMSG2 label byte ; ;AN000;
314 db Sublist_Length ; ;AN000;
315 db Reserved ; ;AN000;
316 CPMSGLST2DEV LABEL WORD ;filled with pointer to device name
318 dw to_be_filled_in ; ;AN000;
320 db Left_Align+Char_Field_ASCIIZ ; ;AN000;
325 ;--------------------------- ;
326 Sublist_CPMSG6 label byte ;"Active codepage for device %S is %D",CR,LF,EOM
328 db Sublist_Length ; ;AN000;
329 db Reserved ; ;AN000;
330 CPMSGLST6DEV LABEL WORD ;filled with pointer to device name
332 dw to_be_filled_in ; ;AN000;
334 db Left_Align+Char_Field_ASCIIZ ; ;AN000;
339 db Sublist_Length ; ;AN000;
340 db Reserved ; ;AN000;
341 dw OFFSET CPMSGLST6CP ;pointer to area FILLED IN BY "QUERY" ROUTINE WITH CODEPAGE ID
342 dw to_be_filled_in ; ;AN000;
343 db 2 ;2nd of 2 ;AN000;
344 db Left_Align+Unsgn_Bin_Word ;AN000;00100001B
345 db 5 ;codepage numbers could be 5 digits long
346 db 1 ;theoretically could be 1 digit ;AN000;
349 ;--------------------------- ;
350 Sublist_CPMSG7 label byte ;"Device %1 not prepared",CR,LF,EOM
352 db Sublist_Length ; ;AN000;
353 db Reserved ; ;AN000;
354 CPMSGLST7DEV LABEL WORD ;FILLED IN BY "QUERY" ROUTINE WITH PTR TO DEVICE NAME
356 dw to_be_filled_in ; ;AN000;
358 db Left_Align+Char_Field_ASCIIZ ; ;AN000;
359 db 0 ;don't know how long the device name
363 ;--------------------------- ;
364 Sublist_CPMSG8 label byte ;"%1 codepages:",CR,LF,EOM
366 db Sublist_Length ; ;AN000;
367 db Reserved ; ;AN000;
368 dw ? ;filled in with OFFSET TO "HARDWARE" OR "PREPARED"
369 dw to_be_filled_in ; ;AN000;
371 db Left_Align+Char_Field_ASCIIZ ; ;AN000;
372 db 0;RPS ; both "Hardware" and ;AC001;
373 db 8 ; "Prepared" are 8 chars long ;AC001;
377 ;--------------------------- ;
378 Sublist_CPMSG9 label byte ;" Codepage %d",CR,LF,EOM
380 db Sublist_Length ; ;AN000;
381 db Reserved ; ;AN000;
382 dw OFFSET CPMSGLST9CP ;pointer to area filled in by "DISPLAY_CPID" in modecp.sal
383 dw to_be_filled_in ; ;AN000;
385 db Left_Align+Unsgn_Bin_Word ;00100001B
390 ;--------------------------- ;
391 Sublist_CPMSG10 label byte ;"MODE %1 Codepage function completed",CR,LF,EOM
392 db Sublist_Length ; ;AN000;
393 db Reserved ; ;AN000;
394 dw ? ;;FILLED IN TO POINT TO:
400 dw to_be_filled_in ; ;AN000;
402 db Left_Align+Char_Field_ASCIIZ ; ;AN000;
407 ;--------------------------- ;
408 Sublist_CPMSG13 label byte ;" %D - %S Codepage",CR,LF,EOM
410 db Sublist_Length ; ;AN000;
411 db Reserved ; ;AN000;
412 CPMSGLST13CP LABEL WORD ;FILLED IN WITH CODEPAGE ID
414 dw to_be_filled_in ; ;AN000;
416 db Left_Align+Char_Field_ASCIIZ ; ;AN000;
421 db Sublist_Length ; ;AN000;
422 db Reserved ; ;AN000;
423 CPMSGLST13TYP LABEL WORD ;FILLED IN TO POINT TO:
427 dw to_be_filled_in ; ;AN000;
428 db 2 ;2nd of 2 ;AN000;
429 db Left_Align+Char_Field_ASCIIZ ; ;AN000;
430 db 0;RPS ;all codepage numbers are 3 chars long
435 ;--------------------------- ;
436 Sublist_CPMSG17 label byte ;"Device error during %1",BEEP,CR,LF,EOM
437 db Sublist_Length ; ;AN000;
438 db Reserved ; ;AN000;
439 dw ? ;;FILLED IN TO POINT TO:
444 ; "write of font file to device",EOM
447 db Left_Align+Char_Field_ASCIIZ ; ;AN000;
448 db 0;RPS ;"write of font file to device",EOM
453 ;--------------------------- ;
454 Sublist_LINES_equal label byte ;"LINES=%1",CR,LF,EOM
455 db Sublist_Length ; ;AN000;
456 db Reserved ; ;AN000;
457 ROW_PTR LABEL WORD ;FILLED IN TO POINT TO: "NONE", or a row value
459 dw to_be_filled_in ;filled in at initialization time with PRINTF_CODE
461 row_type db Right_Align+Char_Field_ASCIIZ ; ;AN000;
463 db 2 ;25, 43, 50 ;AN000;
466 ;--------------------------- ;
467 Sublist_COLUMNS_equal label byte ;"COLUMNS=%1",CR,LF,EOM
468 db Sublist_Length ; ;AN000;
469 db Reserved ; ;AN000;
470 COLUMNS_PTR LABEL WORD ;FILLED IN TO POINT TO: "NONE", or a columns value
472 dw to_be_filled_in ; ;AN000;
474 COLUMNS_type db Right_Align+Char_Field_ASCIIZ ; ;AN000;
478 ;--------------------------- ;
479 Sublist_RATE_equal label byte ;"RATE=%1",CR,LF,EOM
480 db Sublist_Length ; ;AN000;
481 db Reserved ; ;AN000;
482 RATE_PTR LABEL WORD ;FILLED IN TO POINT TO: "NONE", or a rate value
484 dw to_be_filled_in ; ;AN000;
486 RATE_type db Right_Align+Char_Field_ASCIIZ ; ;AN000;
490 ;--------------------------- ;
491 Sublist_DELAY_equal label byte ;"DELAY=%1",CR,LF,EOM
492 db Sublist_Length ; ;AN000;
493 db Reserved ; ;AN000;
494 DELAY_PTR LABEL WORD ;FILLED IN TO POINT TO: "NONE", or a delay value
496 dw to_be_filled_in ; ;AN000;
498 DELAY_type db Right_Align+Char_Field_ASCIIZ ; ;AN000;
502 ;--------------------------- ;
503 Sublist_not_supported label byte ;"Function not supported on this computer -%1"
504 db Sublist_Length ; ;AN000;
505 db Reserved ; ;AN000;
506 not_supported_PTR LABEL WORD ;FILLED IN TO POINT TO: the parameter that is not supported
508 dw to_be_filled_in ;filled with segment of the .COM file ;AN000;
510 db Left_Align+Char_Field_ASCIIZ ; ;AN000;
511 db 0;RPS ;AC002;maximum length of the string
514 ;--------------------------- ;
515 Sublist_status_for_device label byte ;"Status for device %1:"
516 db Sublist_Length ; ;AN000;
517 db Reserved ; ;AN000;
518 stat_dev_ptr LABEL WORD ;FILLED IN TO POINT TO ONE of the device names in parse.asm
520 dw to_be_filled_in ; ;AN000;
522 db Right_Align+Char_Field_ASCIIZ ; ;AN000;
523 dev_name_size db 4 ;changed by invoke: 3 for CON, 4 for others
527 ;--------------------------- ;
529 Sublist_retry_equal label byte ;"RETRY=%1"
530 db Sublist_Length ; ;AN000;
531 db Reserved ; ;AN000;
532 retry_type_ptr LABEL BYTE
534 dw to_be_filled_in ; ;AN000;
536 db Right_Align+Char_Field_ASCIIZ ; ;AN000;
537 db 0;RPS ;max size, "NONE"
538 db 1 ;min size, "E" ;AN000;
541 ;--------------------------- ;
542 sublist_syntax_error label byte ;AN000;description of %0
544 db Sublist_Length ;fixed ;AN000;
545 db Reserved ;not used yet ;AN000;
546 syntax_error_ptr LABEL WORD
547 dw offset offending_parameter ;pointer to string or binary value ;AN000;
549 db 0 ;ID, special end of message format ;AN000;
550 db Left_Align+char_field_ASCIIZ ;AN000;
551 db 0 ;Max width 123, 128-"MODE " ;AN000;
552 db 1 ;May be one char long ;AN000;
561 Number_of_sublists EQU (($ - first_sublist) / (TYPE sublist_def))
566 ;-------------------------------------------------------
568 PT80N DB " " ;PT80 - CR,LF,"LPT%c: set for 80",CR,LF,EOM
570 PT132N DB " " ;PT132 - CR,LF,"LPT%c: set for 132",CR,LF,EOM
572 ;INITMSG - CR,LF,"COM%c: %3s,%c,%c,%c,%c",CR,LF,EOM
574 pBAUD DB 5 DUP(" "),EOM
575 pPARITY DB "e" ;DEFAULT IS EVEN PARITY
576 pDATA DB "7" ;DEFAULT IS 7 DATA BITS PER BYTE
577 pSTOP DB "1",EOM ;DEFAULT FOR BAUD > 110, CHANGED TO 2 FOR 110
579 baud_19200 DB "19200",EOM
581 ;REDIRMSG - CR,LF,"LPT%c: rerouted to COM%c:",CR,LF,EOM
585 ;NOTREMSG - CR,LF,"LPT%c: not rerouted",CR,LF,EOM
588 OFFENDING_PARAMETER DB 123 DUP (EOM)
590 nada DB 8,8,8," ",0 ;backspace over the " - "
592 CPMSGLST6CP DW 44H ;AC665;FILLED IN BY "QUERY" ROUTINE WITH CODEPAGE ID
595 CPMSGLST9CP DW 99H ;FILLED IN BY "QUERY" ROUTINE WITH CODEPAGE ID
598 row_value DB ? ;filled in by invoke.asm with screen lines requested or current setting