Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

678 lines
20 KiB

  1. ;/*
  2. ; * Microsoft Confidential
  3. ; * Copyright (C) Microsoft Corporation 1988 - 1991
  4. ; * All Rights Reserved.
  5. ; */
  6. /* SUBMSG.C - Message retriever interface functions for MEM command.
  7. */
  8. #include "ctype.h"
  9. #include "conio.h" /* need for kbhit prototype */
  10. #include "stdio.h"
  11. #include "dos.h"
  12. #include "string.h"
  13. #include "stdlib.h"
  14. #include "msgdef.h"
  15. #include "version.h" /* MSKK02 07/18/89 */
  16. #include "mem.h"
  17. /*���������������������������������������������������������������������������*/
  18. /************************************************************************/
  19. /* SUB0_MESSAGE - This routine will print only those */
  20. /* messages that do not require a */
  21. /* a sublist. */
  22. /* */
  23. /* Inputs : Msg_Num - number of applicable message */
  24. /* Handle - display type */
  25. /* Message_Type - type of message to display */
  26. /* */
  27. /* Outputs : message */
  28. /* */
  29. /************************************************************************/
  30. void Sub0_Message(Msg_Num,Handle,Message_Type) /* print messages with no subs */
  31. int Msg_Num;
  32. int Handle;
  33. unsigned char Message_Type;
  34. /* extended, parse, or utility */
  35. {
  36. InRegs.x.ax = Msg_Num; /* put message number in AX */
  37. InRegs.x.bx = Handle; /* put handle in BX */
  38. InRegs.x.cx = No_Replace; /* no replaceable subparms */
  39. InRegs.h.dl = No_Input; /* no keyboard input */
  40. InRegs.h.dh = Message_Type; /* type of message to display */
  41. sysdispmsg(&InRegs,&OutRegs); /* display the message */
  42. return;
  43. }
  44. /************************************************************************/
  45. /* SUB1_MESSAGE - This routine will print only those */
  46. /* messages that require 1 replaceable */
  47. /* parm. */
  48. /* */
  49. /* Inputs : Msg_Num - number of applicable message */
  50. /* Handle - display type */
  51. /* Message_Type - type of message to display */
  52. /* Replace_Parm - pointer to parm to replace */
  53. /* */
  54. /* Outputs : message */
  55. /* */
  56. /************************************************************************/
  57. void Sub1_Message(Msg_Num,Handle,Message_Type,Replace_Parm)
  58. int Msg_Num;
  59. int Handle;
  60. unsigned char Message_Type;
  61. /* extended, parse, or utility */
  62. unsigned long int *Replace_Parm; /* pointer to message to print */
  63. {
  64. {
  65. sublist[1].value = (unsigned far *)Replace_Parm;
  66. sublist[1].size = Sublist_Length;
  67. sublist[1].reserved = Reserved;
  68. sublist[1].id = 1;
  69. sublist[1].flags = Unsgn_Bin_DWord+Right_Align;
  70. sublist[1].max_width = 10;
  71. sublist[1].min_width = 10;
  72. sublist[1].pad_char = Blank;
  73. InRegs.x.ax = Msg_Num;
  74. InRegs.x.bx = Handle;
  75. InRegs.x.cx = SubCnt1;
  76. InRegs.h.dl = No_Input;
  77. InRegs.h.dh = Message_Type;
  78. InRegs.x.si = (unsigned int)&sublist[1];
  79. sysdispmsg(&InRegs,&OutRegs);
  80. }
  81. return;
  82. }
  83. /************************************************************************/
  84. /* SUB2_MESSAGE - This routine will print only those */
  85. /* messages that require 2 replaceable */
  86. /* parms. */
  87. /* */
  88. /* Inputs : Msg_Num - number of applicable message */
  89. /* Handle - display type */
  90. /* Message_Type - type of message to display */
  91. /* Replace_Parm1 - pointer to parm to replace */
  92. /* Replace_Parm2 - pointer to parm to replace */
  93. /* Replace_Parm3 - pointer to parm to replace */
  94. /* */
  95. /* Outputs : message */
  96. /* */
  97. /************************************************************************/
  98. void Sub2_Message(Msg_Num,Handle,Message_Type,
  99. Replace_Parm1,
  100. Replace_Message1)
  101. int Msg_Num;
  102. int Handle;
  103. unsigned char Message_Type;
  104. int Replace_Message1;
  105. /* extended, parse, or utility */
  106. char *Replace_Parm1; /* pointer to message to print */
  107. {
  108. {
  109. switch(Msg_Num)
  110. {
  111. case DeviceLineMsg:
  112. sublist[1].value = (unsigned far *)Replace_Parm1;
  113. sublist[1].size = Sublist_Length;
  114. sublist[1].reserved = Reserved;
  115. sublist[1].id = 1;
  116. sublist[1].flags = Char_Field_ASCIIZ+Left_Align;
  117. sublist[1].max_width = 0x0008;
  118. sublist[1].min_width = 0x0008;
  119. sublist[1].pad_char = Blank;
  120. InRegs.x.ax = Replace_Message1;
  121. InRegs.h.dh = Message_Type;
  122. sysgetmsg(&InRegs,&SegRegs,&OutRegs);
  123. FP_OFF(sublist[2].value) = OutRegs.x.si;
  124. FP_SEG(sublist[2].value) = SegRegs.ds;
  125. sublist[2].size = Sublist_Length;
  126. sublist[2].reserved = Reserved;
  127. sublist[2].id = 2;
  128. sublist[2].flags = Char_Field_ASCIIZ+Right_Align;
  129. sublist[2].max_width = 00;
  130. sublist[2].min_width = 10;
  131. sublist[2].pad_char = Blank;
  132. break;
  133. }
  134. InRegs.x.ax = Msg_Num;
  135. InRegs.x.bx = Handle;
  136. InRegs.x.cx = SubCnt2;
  137. InRegs.h.dl = No_Input;
  138. InRegs.h.dh = Message_Type;
  139. InRegs.x.si = (unsigned int)&sublist[1];
  140. sysdispmsg(&InRegs,&OutRegs);
  141. }
  142. return;
  143. }
  144. /************************************************************************/
  145. /* SUB3_MESSAGE - This routine will print only those */
  146. /* messages that require 3 replaceable */
  147. /* parms. */
  148. /* */
  149. /* Inputs : Msg_Num - number of applicable message */
  150. /* Handle - display type */
  151. /* Message_Type - type of message to display */
  152. /* Replace_Parm1 - pointer to parm to replace */
  153. /* Replace_Parm2 - pointer to parm to replace */
  154. /* Replace_Parm3 - pointer to parm to replace */
  155. /* */
  156. /* Outputs : message */
  157. /* */
  158. /************************************************************************/
  159. void Sub3_Message(Msg_Num,Handle,Message_Type,
  160. Replace_Parm1,
  161. Replace_Parm2,
  162. Replace_Message1)
  163. int Msg_Num;
  164. int Handle;
  165. unsigned char Message_Type;
  166. char *Replace_Parm1;
  167. unsigned long int *Replace_Parm2;
  168. int Replace_Message1;
  169. /* extended, parse, or utility */
  170. {
  171. {
  172. switch(Msg_Num)
  173. {
  174. case DriverLineMsg:
  175. sublist[1].value = (unsigned far *)Replace_Parm1;
  176. sublist[1].size = Sublist_Length;
  177. sublist[1].reserved = Reserved;
  178. sublist[1].id = 1;
  179. sublist[1].flags = Char_Field_ASCIIZ+Left_Align;
  180. sublist[1].max_width = 0x0008;
  181. sublist[1].min_width = 0x0008;
  182. sublist[1].pad_char = Blank;
  183. sublist[2].value = (unsigned far *)Replace_Parm2;
  184. sublist[2].size = Sublist_Length;
  185. sublist[2].reserved = Reserved;
  186. sublist[2].id = 2;
  187. sublist[2].flags = Bin_Hex_DWord+Right_Align;
  188. sublist[2].max_width = 0x0006;
  189. sublist[2].min_width = 0x0006;
  190. sublist[2].pad_char = 0x0030;
  191. InRegs.x.ax = Replace_Message1;
  192. InRegs.h.dh = Message_Type;
  193. sysgetmsg(&InRegs,&SegRegs,&OutRegs);
  194. FP_OFF(sublist[3].value) = OutRegs.x.si;
  195. FP_SEG(sublist[3].value) = SegRegs.ds;
  196. sublist[3].size = Sublist_Length;
  197. sublist[3].reserved = Reserved;
  198. sublist[3].id = 3;
  199. sublist[3].flags = Char_Field_ASCIIZ+Left_Align;
  200. sublist[3].max_width = 00;
  201. sublist[3].min_width = 10;
  202. sublist[3].pad_char = Blank;
  203. break;
  204. case HandleMsg:
  205. sublist[1].value = (unsigned far *)Replace_Parm1;
  206. sublist[1].size = Sublist_Length;
  207. sublist[1].reserved = Reserved;
  208. sublist[1].id = 1;
  209. sublist[1].flags = Unsgn_Bin_Byte+Right_Align;
  210. sublist[1].max_width = 0x0009;
  211. sublist[1].min_width = 0x0009;
  212. sublist[1].pad_char = Blank;
  213. sublist[2].value = (unsigned far *)Replace_Parm2;
  214. sublist[2].size = Sublist_Length;
  215. sublist[2].reserved = Reserved;
  216. sublist[2].id = 2;
  217. sublist[2].flags = Char_Field_ASCIIZ+Left_Align;
  218. sublist[2].max_width = 0x0008;
  219. sublist[2].min_width = 0x0008;
  220. sublist[2].pad_char = Blank;
  221. InRegs.x.ax = Replace_Message1;
  222. InRegs.h.dh = Message_Type;
  223. sysgetmsg(&InRegs,&SegRegs,&OutRegs);
  224. FP_OFF(sublist[3].value) = OutRegs.x.si;
  225. FP_SEG(sublist[3].value) = SegRegs.ds;
  226. sublist[3].size = Sublist_Length;
  227. sublist[3].reserved = Reserved;
  228. sublist[3].id = 3;
  229. sublist[3].flags = Bin_Hex_DWord+Right_Align;
  230. sublist[3].max_width = 00;
  231. sublist[3].min_width = 10;
  232. sublist[3].pad_char = Blank;
  233. break;
  234. }
  235. InRegs.x.ax = Msg_Num;
  236. InRegs.x.bx = Handle;
  237. InRegs.x.cx = SubCnt3;
  238. InRegs.h.dl = No_Input;
  239. InRegs.h.dh = Message_Type;
  240. InRegs.x.si = (unsigned int)&sublist[1];
  241. sysdispmsg(&InRegs,&OutRegs);
  242. }
  243. return;
  244. }
  245. /************************************************************************/
  246. /* SUB4_MESSAGE - This routine will print only those */
  247. /* messages that require 4 replaceable */
  248. /* parms. */
  249. /* */
  250. /* Inputs : Msg_Num - number of applicable message */
  251. /* Handle - display type */
  252. /* Message_Type - type of message to display */
  253. /* Replace_Parm1 - pointer to parm to replace */
  254. /* Replace_Parm2 - pointer to parm to replace */
  255. /* Replace_Parm3 - pointer to parm to replace */
  256. /* Dynamic_Parm - parm number to use as replaceable */
  257. /* */
  258. /* Outputs : message */
  259. /* */
  260. /************************************************************************/
  261. void Sub4_Message(Msg_Num,Handle,Message_Type,
  262. Replace_Value1,
  263. Replace_Message1,
  264. Replace_Value2,
  265. Replace_Message2)
  266. int Msg_Num;
  267. int Handle;
  268. unsigned char Message_Type;
  269. unsigned long int *Replace_Value1;
  270. int Replace_Message1;
  271. unsigned long int *Replace_Value2;
  272. int Replace_Message2;
  273. /* extended, parse, or utility */
  274. {
  275. {
  276. switch(Msg_Num)
  277. {
  278. case MainLineMsg:
  279. sublist[1].value = (unsigned far *)Replace_Value1;
  280. sublist[1].size = Sublist_Length;
  281. sublist[1].reserved = Reserved;
  282. sublist[1].id = 1;
  283. sublist[1].flags = Bin_Hex_DWord+Right_Align;
  284. sublist[1].max_width = 06;
  285. sublist[1].min_width = 06;
  286. sublist[1].pad_char = 0x0030;
  287. InRegs.x.ax = Replace_Message1;
  288. InRegs.h.dh = Message_Type;
  289. sysgetmsg(&InRegs,&SegRegs,&OutRegs);
  290. FP_OFF(sublist[2].value) = OutRegs.x.si;
  291. FP_SEG(sublist[2].value) = SegRegs.ds;
  292. sublist[2].size = Sublist_Length;
  293. sublist[2].reserved = Reserved;
  294. sublist[2].id = 2;
  295. sublist[2].flags = Char_Field_ASCIIZ+Left_Align;
  296. sublist[2].max_width = 0x0008;
  297. sublist[2].min_width = 0x0008;
  298. sublist[2].pad_char = Blank;
  299. sublist[3].value = (unsigned far *)Replace_Value2;
  300. sublist[3].size = Sublist_Length;
  301. sublist[3].reserved = Reserved;
  302. sublist[3].id = 3;
  303. sublist[3].flags = Bin_Hex_DWord+Right_Align;
  304. sublist[3].max_width = 06;
  305. sublist[3].min_width = 06;
  306. sublist[3].pad_char = 0x0030;
  307. InRegs.x.ax = Replace_Message2;
  308. InRegs.h.dh = Message_Type;
  309. sysgetmsg(&InRegs,&SegRegs,&OutRegs);
  310. FP_OFF(sublist[4].value) = OutRegs.x.si;
  311. FP_SEG(sublist[4].value) = SegRegs.ds;
  312. sublist[4].size = Sublist_Length;
  313. sublist[4].reserved = Reserved;
  314. sublist[4].id = 4;
  315. sublist[4].flags = Char_Field_ASCIIZ+Left_Align;
  316. sublist[4].max_width = 0;
  317. sublist[4].min_width = 10;
  318. sublist[4].pad_char = Blank;
  319. break;
  320. }
  321. InRegs.x.ax = Msg_Num;
  322. InRegs.x.bx = Handle;
  323. InRegs.x.cx = SubCnt4;
  324. InRegs.h.dl = No_Input;
  325. InRegs.h.dh = Message_Type;
  326. InRegs.x.si = (unsigned int)&sublist[1];
  327. sysdispmsg(&InRegs,&OutRegs);
  328. }
  329. return;
  330. }
  331. /************************************************************************/
  332. /* SUB4a_MESSAGE - This routine will print only those */
  333. /* messages that require 4 replaceable */
  334. /* parms. */
  335. /* */
  336. /* Inputs : Msg_Num - number of applicable message */
  337. /* Handle - display type */
  338. /* Message_Type - type of message to display */
  339. /* Replace_Parm1 - pointer to parm to replace */
  340. /* Replace_Parm2 - pointer to parm to replace */
  341. /* Replace_Parm3 - pointer to parm to replace */
  342. /* Dynamic_Parm - parm number to use as replaceable */
  343. /* */
  344. /* Outputs : message */
  345. /* */
  346. /************************************************************************/
  347. void Sub4a_Message(Msg_Num,Handle,Message_Type,
  348. Replace_Value1,
  349. Replace_Message1,
  350. Replace_Value2,
  351. Replace_Message2)
  352. int Msg_Num;
  353. int Handle;
  354. unsigned char Message_Type;
  355. unsigned long int *Replace_Value1;
  356. char *Replace_Message1;
  357. unsigned long int *Replace_Value2;
  358. char *Replace_Message2;
  359. {
  360. {
  361. switch(Msg_Num)
  362. {
  363. case MainLineMsg:
  364. sublist[1].value = (unsigned far *)Replace_Value1;
  365. sublist[1].size = Sublist_Length;
  366. sublist[1].reserved = Reserved;
  367. sublist[1].id = 1;
  368. sublist[1].flags = Bin_Hex_DWord+Right_Align;
  369. sublist[1].max_width = 06;
  370. sublist[1].min_width = 06;
  371. sublist[1].pad_char = 0x0030;
  372. sublist[2].value = (unsigned far *)Replace_Message1;
  373. sublist[2].size = Sublist_Length;
  374. sublist[2].reserved = Reserved;
  375. sublist[2].id = 2;
  376. sublist[2].flags = Char_Field_ASCIIZ+Left_Align;
  377. sublist[2].max_width = 0x0008;
  378. sublist[2].min_width = 0x0008;
  379. sublist[2].pad_char = Blank;
  380. sublist[3].value = (unsigned far *)Replace_Value2;
  381. sublist[3].size = Sublist_Length;
  382. sublist[3].reserved = Reserved;
  383. sublist[3].id = 3;
  384. sublist[3].flags = Bin_Hex_DWord+Right_Align;
  385. sublist[3].max_width = 06;
  386. sublist[3].min_width = 06;
  387. sublist[3].pad_char = 0x0030;
  388. sublist[4].value = (unsigned far *)Replace_Message2;
  389. sublist[4].size = Sublist_Length;
  390. sublist[4].reserved = Reserved;
  391. sublist[4].id = 4;
  392. sublist[4].flags = Char_Field_ASCIIZ+Left_Align;
  393. sublist[4].max_width = 0;
  394. sublist[4].min_width = 10;
  395. sublist[4].pad_char = Blank;
  396. break;
  397. }
  398. InRegs.x.ax = Msg_Num;
  399. InRegs.x.bx = Handle;
  400. InRegs.x.cx = SubCnt4;
  401. InRegs.h.dl = No_Input;
  402. InRegs.h.dh = Message_Type;
  403. InRegs.x.si = (unsigned int)&sublist[1];
  404. sysdispmsg(&InRegs,&OutRegs);
  405. }
  406. return;
  407. }
  408. /************************************************************************/
  409. /* EMSPrint - This routine will print the message */
  410. /* necessary for EMS reporting. */
  411. /* */
  412. /* Outputs : message */
  413. /* */
  414. /************************************************************************/
  415. void EMSPrint(Msg_Num,Handle,Message_Type,
  416. Replace_Value1,
  417. Replace_Message1,
  418. Replace_Value2)
  419. int Msg_Num;
  420. int Handle;
  421. unsigned char Message_Type;
  422. int *Replace_Value1;
  423. char *Replace_Message1;
  424. unsigned long int *Replace_Value2;
  425. /* extended, parse, or utility */
  426. {
  427. {
  428. sublist[1].value = (unsigned far *)Replace_Value1;
  429. sublist[1].size = Sublist_Length;
  430. sublist[1].reserved = Reserved;
  431. sublist[1].id = 1;
  432. sublist[1].flags = Unsgn_Bin_Word+Right_Align;
  433. sublist[1].max_width = 03;
  434. sublist[1].min_width = 03;
  435. sublist[1].pad_char = Blank;
  436. sublist[2].value = (unsigned far *)Replace_Message1;
  437. sublist[2].size = Sublist_Length;
  438. sublist[2].reserved = Reserved;
  439. sublist[2].id = 2;
  440. sublist[2].flags = Char_Field_ASCIIZ+Left_Align;
  441. sublist[2].max_width = 0x0008;
  442. sublist[2].min_width = 0x0008;
  443. sublist[2].pad_char = Blank;
  444. sublist[3].value = (unsigned far *)Replace_Value2;
  445. sublist[3].size = Sublist_Length;
  446. sublist[3].reserved = Reserved;
  447. sublist[3].id = 3;
  448. sublist[3].flags = Bin_Hex_DWord+Right_Align;
  449. sublist[3].max_width = 06;
  450. sublist[3].min_width = 06;
  451. sublist[3].pad_char = 0x0030;
  452. InRegs.x.ax = Msg_Num;
  453. InRegs.x.bx = Handle;
  454. InRegs.x.cx = SubCnt3;
  455. InRegs.h.dl = No_Input;
  456. InRegs.h.dh = Message_Type;
  457. InRegs.x.si = (unsigned int)&sublist[1];
  458. sysdispmsg(&InRegs,&OutRegs);
  459. }
  460. return;
  461. }
  462. /* M003 BEGIN - output procs for C switch */
  463. /************************************************************************/
  464. /* SUBC4_MESSAGE - This routine will print only those */
  465. /* messages that require 4 replaceable */
  466. /* parms.(for Classify Switch) */
  467. /* */
  468. /* Inputs : Msg_Num - number of applicable message */
  469. /* Handle - display type */
  470. /* Message_Type - type of message to display */
  471. /* Replace_Message1 - pointer to a Replacement message */
  472. /* Replace_Value1 - pointer to parm to replace */
  473. /* Replace_Message2 - pointer to a Replacement message */
  474. /* Replace_Value2 - pointer to parm to replace */
  475. /* */
  476. /* Outputs : message */
  477. /* */
  478. /************************************************************************/
  479. void SubC4_Message(Msg_Num,Handle,
  480. Replace_Message1,Msg_Type,
  481. Replace_Value1,
  482. Replace_Message2)
  483. int Msg_Num;
  484. int Handle,Msg_Type;
  485. unsigned long int *Replace_Value1;
  486. char *Replace_Message1,*Replace_Message2;
  487. {
  488. switch(Msg_Type)
  489. {
  490. case IbmdosMsg:
  491. case CFreeMsg:
  492. case SystemMsg:
  493. InRegs.x.ax = Msg_Type;
  494. InRegs.h.dh = Utility_Msg_Class;
  495. sysgetmsg(&InRegs,&SegRegs,&OutRegs);
  496. FP_OFF(sublist[1].value) = OutRegs.x.si;
  497. FP_SEG(sublist[1].value) = SegRegs.ds;
  498. break;
  499. default:
  500. sublist[1].value = (unsigned far *) Replace_Message1;
  501. break;
  502. }
  503. sublist[1].size = Sublist_Length;
  504. sublist[1].reserved = Reserved;
  505. sublist[1].id = 1;
  506. sublist[1].flags = Char_Field_ASCIIZ+Left_Align;
  507. sublist[1].max_width = 0x0008;
  508. sublist[1].min_width = 0x0008;
  509. sublist[1].pad_char = Blank;
  510. sublist[2].value = (unsigned far *)Replace_Value1;
  511. sublist[2].size = Sublist_Length;
  512. sublist[2].reserved = Reserved;
  513. sublist[2].id = 2;
  514. sublist[2].flags = Unsgn_Bin_DWord+Right_Align;
  515. sublist[2].max_width = 10;
  516. sublist[2].min_width = 10;
  517. sublist[2].pad_char = Blank;
  518. sublist[3].value = (unsigned far *) Replace_Message2;
  519. sublist[3].size = Sublist_Length;
  520. sublist[3].reserved = Reserved;
  521. sublist[3].id = 3;
  522. sublist[3].flags = Char_Field_ASCIIZ+Left_Align;
  523. sublist[3].max_width = 0x0009;
  524. sublist[3].min_width = 0x0009;
  525. sublist[3].pad_char = Blank;
  526. sublist[4].value = (unsigned far *)Replace_Value1;
  527. sublist[4].size = Sublist_Length;
  528. sublist[4].reserved = Reserved;
  529. sublist[4].id = 4;
  530. sublist[4].flags = Bin_Hex_DWord+Right_Align;
  531. sublist[4].max_width = 06;
  532. sublist[4].min_width = 06;
  533. sublist[4].pad_char = Blank;
  534. InRegs.x.ax = Msg_Num;
  535. InRegs.x.bx = Handle;
  536. InRegs.x.cx = SubCnt4;
  537. InRegs.h.dl = No_Input;
  538. InRegs.h.dh = Utility_Msg_Class;
  539. InRegs.x.si = (unsigned int)&sublist[1];
  540. sysdispmsg(&InRegs,&OutRegs);
  541. return;
  542. }
  543. /************************************************************************/
  544. /* SUBC2_MESSAGE - This routine will print only those */
  545. /* messages that require 2 replaceable */
  546. /* parms (for Classify Switch). */
  547. /* */
  548. /* Inputs : Msg_Num - number of applicable message */
  549. /* Handle - display type */
  550. /* Replace_Parm1 - pointer to parm to replace */
  551. /* Replace_Message1 - pointer to replace message */
  552. /* */
  553. /* Outputs : message */
  554. /* */
  555. /************************************************************************/
  556. void SubC2_Message(Msg_Num,Handle, Replace_Parm1,
  557. Replace_Message1)
  558. int Msg_Num;
  559. int Handle;
  560. unsigned long int *Replace_Parm1;
  561. char *Replace_Message1;
  562. {
  563. sublist[1].value = (unsigned far *)Replace_Parm1;
  564. sublist[1].size = Sublist_Length;
  565. sublist[1].reserved = Reserved;
  566. sublist[1].id = 1;
  567. sublist[1].flags = Unsgn_Bin_DWord+Right_Align;
  568. sublist[1].max_width = 10;
  569. sublist[1].min_width = 10;
  570. sublist[1].pad_char = Blank;
  571. sublist[2].value = (unsigned far *)Replace_Message1;
  572. sublist[2].size = Sublist_Length;
  573. sublist[2].reserved = Reserved;
  574. sublist[2].id = 2;
  575. sublist[2].flags = Char_Field_ASCIIZ+Left_Align;
  576. sublist[2].max_width = 0x0009;
  577. sublist[2].min_width = 0x0009;
  578. sublist[2].pad_char = Blank;
  579. InRegs.x.ax = Msg_Num;
  580. InRegs.x.bx = Handle;
  581. InRegs.x.cx = SubCnt2;
  582. InRegs.h.dl = No_Input;
  583. InRegs.h.dh = Utility_Msg_Class;
  584. InRegs.x.si = (unsigned int)&sublist[1];
  585. sysdispmsg(&InRegs,&OutRegs);
  586. return;
  587. }
  588. /* M003 END */
  589.