diff options
Diffstat (limited to '')
-rw-r--r-- | private/mvdm/dos/v86/cmd/mem/submsg.c | 678 |
1 files changed, 678 insertions, 0 deletions
diff --git a/private/mvdm/dos/v86/cmd/mem/submsg.c b/private/mvdm/dos/v86/cmd/mem/submsg.c new file mode 100644 index 000000000..c12cc4d45 --- /dev/null +++ b/private/mvdm/dos/v86/cmd/mem/submsg.c @@ -0,0 +1,678 @@ +;/* +; * Microsoft Confidential +; * Copyright (C) Microsoft Corporation 1988 - 1991 +; * All Rights Reserved. +; */ +/* SUBMSG.C - Message retriever interface functions for MEM command. +*/ + +#include "ctype.h" +#include "conio.h" /* need for kbhit prototype */ +#include "stdio.h" +#include "dos.h" +#include "string.h" +#include "stdlib.h" +#include "msgdef.h" +#include "version.h" /* MSKK02 07/18/89 */ +#include "mem.h" + +/*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*/ + + +/************************************************************************/ +/* SUB0_MESSAGE - This routine will print only those */ +/* messages that do not require a */ +/* a sublist. */ +/* */ +/* Inputs : Msg_Num - number of applicable message */ +/* Handle - display type */ +/* Message_Type - type of message to display */ +/* */ +/* Outputs : message */ +/* */ +/************************************************************************/ + +void Sub0_Message(Msg_Num,Handle,Message_Type) /* print messages with no subs */ + +int Msg_Num; +int Handle; +unsigned char Message_Type; + /* extended, parse, or utility */ + { + InRegs.x.ax = Msg_Num; /* put message number in AX */ + InRegs.x.bx = Handle; /* put handle in BX */ + InRegs.x.cx = No_Replace; /* no replaceable subparms */ + InRegs.h.dl = No_Input; /* no keyboard input */ + InRegs.h.dh = Message_Type; /* type of message to display */ + sysdispmsg(&InRegs,&OutRegs); /* display the message */ + + return; + } + + +/************************************************************************/ +/* SUB1_MESSAGE - This routine will print only those */ +/* messages that require 1 replaceable */ +/* parm. */ +/* */ +/* Inputs : Msg_Num - number of applicable message */ +/* Handle - display type */ +/* Message_Type - type of message to display */ +/* Replace_Parm - pointer to parm to replace */ +/* */ +/* Outputs : message */ +/* */ +/************************************************************************/ + +void Sub1_Message(Msg_Num,Handle,Message_Type,Replace_Parm) + +int Msg_Num; +int Handle; +unsigned char Message_Type; + /* extended, parse, or utility */ +unsigned long int *Replace_Parm; /* pointer to message to print */ + +{ + + + { + + sublist[1].value = (unsigned far *)Replace_Parm; + sublist[1].size = Sublist_Length; + sublist[1].reserved = Reserved; + sublist[1].id = 1; + sublist[1].flags = Unsgn_Bin_DWord+Right_Align; + sublist[1].max_width = 10; + sublist[1].min_width = 10; + sublist[1].pad_char = Blank; + + InRegs.x.ax = Msg_Num; + InRegs.x.bx = Handle; + InRegs.x.cx = SubCnt1; + InRegs.h.dl = No_Input; + InRegs.h.dh = Message_Type; + InRegs.x.si = (unsigned int)&sublist[1]; + sysdispmsg(&InRegs,&OutRegs); + } + return; +} + + +/************************************************************************/ +/* SUB2_MESSAGE - This routine will print only those */ +/* messages that require 2 replaceable */ +/* parms. */ +/* */ +/* Inputs : Msg_Num - number of applicable message */ +/* Handle - display type */ +/* Message_Type - type of message to display */ +/* Replace_Parm1 - pointer to parm to replace */ +/* Replace_Parm2 - pointer to parm to replace */ +/* Replace_Parm3 - pointer to parm to replace */ +/* */ +/* Outputs : message */ +/* */ +/************************************************************************/ + +void Sub2_Message(Msg_Num,Handle,Message_Type, + Replace_Parm1, + Replace_Message1) + +int Msg_Num; +int Handle; +unsigned char Message_Type; +int Replace_Message1; + /* extended, parse, or utility */ +char *Replace_Parm1; /* pointer to message to print */ +{ + + + { + switch(Msg_Num) + { + case DeviceLineMsg: + + sublist[1].value = (unsigned far *)Replace_Parm1; + sublist[1].size = Sublist_Length; + sublist[1].reserved = Reserved; + sublist[1].id = 1; + sublist[1].flags = Char_Field_ASCIIZ+Left_Align; + sublist[1].max_width = 0x0008; + sublist[1].min_width = 0x0008; + sublist[1].pad_char = Blank; + + InRegs.x.ax = Replace_Message1; + InRegs.h.dh = Message_Type; + sysgetmsg(&InRegs,&SegRegs,&OutRegs); + + FP_OFF(sublist[2].value) = OutRegs.x.si; + FP_SEG(sublist[2].value) = SegRegs.ds; + sublist[2].size = Sublist_Length; + sublist[2].reserved = Reserved; + sublist[2].id = 2; + sublist[2].flags = Char_Field_ASCIIZ+Right_Align; + sublist[2].max_width = 00; + sublist[2].min_width = 10; + sublist[2].pad_char = Blank; + break; + } + + InRegs.x.ax = Msg_Num; + InRegs.x.bx = Handle; + InRegs.x.cx = SubCnt2; + InRegs.h.dl = No_Input; + InRegs.h.dh = Message_Type; + InRegs.x.si = (unsigned int)&sublist[1]; + sysdispmsg(&InRegs,&OutRegs); + } + return; +} + +/************************************************************************/ +/* SUB3_MESSAGE - This routine will print only those */ +/* messages that require 3 replaceable */ +/* parms. */ +/* */ +/* Inputs : Msg_Num - number of applicable message */ +/* Handle - display type */ +/* Message_Type - type of message to display */ +/* Replace_Parm1 - pointer to parm to replace */ +/* Replace_Parm2 - pointer to parm to replace */ +/* Replace_Parm3 - pointer to parm to replace */ +/* */ +/* Outputs : message */ +/* */ +/************************************************************************/ + +void Sub3_Message(Msg_Num,Handle,Message_Type, + Replace_Parm1, + Replace_Parm2, + Replace_Message1) + +int Msg_Num; +int Handle; +unsigned char Message_Type; +char *Replace_Parm1; +unsigned long int *Replace_Parm2; +int Replace_Message1; + /* extended, parse, or utility */ +{ + + + { + switch(Msg_Num) + { + case DriverLineMsg: + + sublist[1].value = (unsigned far *)Replace_Parm1; + sublist[1].size = Sublist_Length; + sublist[1].reserved = Reserved; + sublist[1].id = 1; + sublist[1].flags = Char_Field_ASCIIZ+Left_Align; + sublist[1].max_width = 0x0008; + sublist[1].min_width = 0x0008; + sublist[1].pad_char = Blank; + + sublist[2].value = (unsigned far *)Replace_Parm2; + sublist[2].size = Sublist_Length; + sublist[2].reserved = Reserved; + sublist[2].id = 2; + sublist[2].flags = Bin_Hex_DWord+Right_Align; + sublist[2].max_width = 0x0006; + sublist[2].min_width = 0x0006; + sublist[2].pad_char = 0x0030; + + InRegs.x.ax = Replace_Message1; + InRegs.h.dh = Message_Type; + sysgetmsg(&InRegs,&SegRegs,&OutRegs); + + FP_OFF(sublist[3].value) = OutRegs.x.si; + FP_SEG(sublist[3].value) = SegRegs.ds; + sublist[3].size = Sublist_Length; + sublist[3].reserved = Reserved; + sublist[3].id = 3; + sublist[3].flags = Char_Field_ASCIIZ+Left_Align; + sublist[3].max_width = 00; + sublist[3].min_width = 10; + sublist[3].pad_char = Blank; + break; + + case HandleMsg: + sublist[1].value = (unsigned far *)Replace_Parm1; + sublist[1].size = Sublist_Length; + sublist[1].reserved = Reserved; + sublist[1].id = 1; + sublist[1].flags = Unsgn_Bin_Byte+Right_Align; + sublist[1].max_width = 0x0009; + sublist[1].min_width = 0x0009; + sublist[1].pad_char = Blank; + + sublist[2].value = (unsigned far *)Replace_Parm2; + sublist[2].size = Sublist_Length; + sublist[2].reserved = Reserved; + sublist[2].id = 2; + sublist[2].flags = Char_Field_ASCIIZ+Left_Align; + sublist[2].max_width = 0x0008; + sublist[2].min_width = 0x0008; + sublist[2].pad_char = Blank; + + InRegs.x.ax = Replace_Message1; + InRegs.h.dh = Message_Type; + sysgetmsg(&InRegs,&SegRegs,&OutRegs); + + FP_OFF(sublist[3].value) = OutRegs.x.si; + FP_SEG(sublist[3].value) = SegRegs.ds; + sublist[3].size = Sublist_Length; + sublist[3].reserved = Reserved; + sublist[3].id = 3; + sublist[3].flags = Bin_Hex_DWord+Right_Align; + sublist[3].max_width = 00; + sublist[3].min_width = 10; + sublist[3].pad_char = Blank; + break; + + } + + InRegs.x.ax = Msg_Num; + InRegs.x.bx = Handle; + InRegs.x.cx = SubCnt3; + InRegs.h.dl = No_Input; + InRegs.h.dh = Message_Type; + InRegs.x.si = (unsigned int)&sublist[1]; + sysdispmsg(&InRegs,&OutRegs); + } + return; +} + + +/************************************************************************/ +/* SUB4_MESSAGE - This routine will print only those */ +/* messages that require 4 replaceable */ +/* parms. */ +/* */ +/* Inputs : Msg_Num - number of applicable message */ +/* Handle - display type */ +/* Message_Type - type of message to display */ +/* Replace_Parm1 - pointer to parm to replace */ +/* Replace_Parm2 - pointer to parm to replace */ +/* Replace_Parm3 - pointer to parm to replace */ +/* Dynamic_Parm - parm number to use as replaceable */ +/* */ +/* Outputs : message */ +/* */ +/************************************************************************/ + +void Sub4_Message(Msg_Num,Handle,Message_Type, + Replace_Value1, + Replace_Message1, + Replace_Value2, + Replace_Message2) + +int Msg_Num; +int Handle; +unsigned char Message_Type; +unsigned long int *Replace_Value1; +int Replace_Message1; +unsigned long int *Replace_Value2; +int Replace_Message2; + /* extended, parse, or utility */ +{ + + + { + switch(Msg_Num) + { + case MainLineMsg: + + sublist[1].value = (unsigned far *)Replace_Value1; + sublist[1].size = Sublist_Length; + sublist[1].reserved = Reserved; + sublist[1].id = 1; + sublist[1].flags = Bin_Hex_DWord+Right_Align; + sublist[1].max_width = 06; + sublist[1].min_width = 06; + sublist[1].pad_char = 0x0030; + + InRegs.x.ax = Replace_Message1; + InRegs.h.dh = Message_Type; + sysgetmsg(&InRegs,&SegRegs,&OutRegs); + + FP_OFF(sublist[2].value) = OutRegs.x.si; + FP_SEG(sublist[2].value) = SegRegs.ds; + sublist[2].size = Sublist_Length; + sublist[2].reserved = Reserved; + sublist[2].id = 2; + sublist[2].flags = Char_Field_ASCIIZ+Left_Align; + sublist[2].max_width = 0x0008; + sublist[2].min_width = 0x0008; + sublist[2].pad_char = Blank; + + sublist[3].value = (unsigned far *)Replace_Value2; + sublist[3].size = Sublist_Length; + sublist[3].reserved = Reserved; + sublist[3].id = 3; + sublist[3].flags = Bin_Hex_DWord+Right_Align; + sublist[3].max_width = 06; + sublist[3].min_width = 06; + sublist[3].pad_char = 0x0030; + + InRegs.x.ax = Replace_Message2; + InRegs.h.dh = Message_Type; + sysgetmsg(&InRegs,&SegRegs,&OutRegs); + + FP_OFF(sublist[4].value) = OutRegs.x.si; + FP_SEG(sublist[4].value) = SegRegs.ds; + sublist[4].size = Sublist_Length; + sublist[4].reserved = Reserved; + sublist[4].id = 4; + sublist[4].flags = Char_Field_ASCIIZ+Left_Align; + sublist[4].max_width = 0; + sublist[4].min_width = 10; + sublist[4].pad_char = Blank; + break; + } + + InRegs.x.ax = Msg_Num; + InRegs.x.bx = Handle; + InRegs.x.cx = SubCnt4; + InRegs.h.dl = No_Input; + InRegs.h.dh = Message_Type; + InRegs.x.si = (unsigned int)&sublist[1]; + sysdispmsg(&InRegs,&OutRegs); + } + return; +} + + + +/************************************************************************/ +/* SUB4a_MESSAGE - This routine will print only those */ +/* messages that require 4 replaceable */ +/* parms. */ +/* */ +/* Inputs : Msg_Num - number of applicable message */ +/* Handle - display type */ +/* Message_Type - type of message to display */ +/* Replace_Parm1 - pointer to parm to replace */ +/* Replace_Parm2 - pointer to parm to replace */ +/* Replace_Parm3 - pointer to parm to replace */ +/* Dynamic_Parm - parm number to use as replaceable */ +/* */ +/* Outputs : message */ +/* */ +/************************************************************************/ + +void Sub4a_Message(Msg_Num,Handle,Message_Type, + Replace_Value1, + Replace_Message1, + Replace_Value2, + Replace_Message2) + +int Msg_Num; +int Handle; +unsigned char Message_Type; +unsigned long int *Replace_Value1; +char *Replace_Message1; +unsigned long int *Replace_Value2; +char *Replace_Message2; + +{ + + + { + switch(Msg_Num) + { + case MainLineMsg: + + sublist[1].value = (unsigned far *)Replace_Value1; + sublist[1].size = Sublist_Length; + sublist[1].reserved = Reserved; + sublist[1].id = 1; + sublist[1].flags = Bin_Hex_DWord+Right_Align; + sublist[1].max_width = 06; + sublist[1].min_width = 06; + sublist[1].pad_char = 0x0030; + + sublist[2].value = (unsigned far *)Replace_Message1; + sublist[2].size = Sublist_Length; + sublist[2].reserved = Reserved; + sublist[2].id = 2; + sublist[2].flags = Char_Field_ASCIIZ+Left_Align; + sublist[2].max_width = 0x0008; + sublist[2].min_width = 0x0008; + sublist[2].pad_char = Blank; + + sublist[3].value = (unsigned far *)Replace_Value2; + sublist[3].size = Sublist_Length; + sublist[3].reserved = Reserved; + sublist[3].id = 3; + sublist[3].flags = Bin_Hex_DWord+Right_Align; + sublist[3].max_width = 06; + sublist[3].min_width = 06; + sublist[3].pad_char = 0x0030; + + sublist[4].value = (unsigned far *)Replace_Message2; + sublist[4].size = Sublist_Length; + sublist[4].reserved = Reserved; + sublist[4].id = 4; + sublist[4].flags = Char_Field_ASCIIZ+Left_Align; + sublist[4].max_width = 0; + sublist[4].min_width = 10; + sublist[4].pad_char = Blank; + break; + } + + InRegs.x.ax = Msg_Num; + InRegs.x.bx = Handle; + InRegs.x.cx = SubCnt4; + InRegs.h.dl = No_Input; + InRegs.h.dh = Message_Type; + InRegs.x.si = (unsigned int)&sublist[1]; + sysdispmsg(&InRegs,&OutRegs); + } + return; +} + + +/************************************************************************/ +/* EMSPrint - This routine will print the message */ +/* necessary for EMS reporting. */ +/* */ +/* Outputs : message */ +/* */ +/************************************************************************/ + +void EMSPrint(Msg_Num,Handle,Message_Type, + Replace_Value1, + Replace_Message1, + Replace_Value2) + +int Msg_Num; +int Handle; +unsigned char Message_Type; +int *Replace_Value1; +char *Replace_Message1; +unsigned long int *Replace_Value2; + /* extended, parse, or utility */ +{ + + { + sublist[1].value = (unsigned far *)Replace_Value1; + sublist[1].size = Sublist_Length; + sublist[1].reserved = Reserved; + sublist[1].id = 1; + sublist[1].flags = Unsgn_Bin_Word+Right_Align; + sublist[1].max_width = 03; + sublist[1].min_width = 03; + sublist[1].pad_char = Blank; + + sublist[2].value = (unsigned far *)Replace_Message1; + sublist[2].size = Sublist_Length; + sublist[2].reserved = Reserved; + sublist[2].id = 2; + sublist[2].flags = Char_Field_ASCIIZ+Left_Align; + sublist[2].max_width = 0x0008; + sublist[2].min_width = 0x0008; + sublist[2].pad_char = Blank; + + sublist[3].value = (unsigned far *)Replace_Value2; + sublist[3].size = Sublist_Length; + sublist[3].reserved = Reserved; + sublist[3].id = 3; + sublist[3].flags = Bin_Hex_DWord+Right_Align; + sublist[3].max_width = 06; + sublist[3].min_width = 06; + sublist[3].pad_char = 0x0030; + + InRegs.x.ax = Msg_Num; + InRegs.x.bx = Handle; + InRegs.x.cx = SubCnt3; + InRegs.h.dl = No_Input; + InRegs.h.dh = Message_Type; + InRegs.x.si = (unsigned int)&sublist[1]; + sysdispmsg(&InRegs,&OutRegs); + } + return; +} + +/* M003 BEGIN - output procs for C switch */ +/************************************************************************/ +/* SUBC4_MESSAGE - This routine will print only those */ +/* messages that require 4 replaceable */ +/* parms.(for Classify Switch) */ +/* */ +/* Inputs : Msg_Num - number of applicable message */ +/* Handle - display type */ +/* Message_Type - type of message to display */ +/* Replace_Message1 - pointer to a Replacement message */ +/* Replace_Value1 - pointer to parm to replace */ +/* Replace_Message2 - pointer to a Replacement message */ +/* Replace_Value2 - pointer to parm to replace */ +/* */ +/* Outputs : message */ +/* */ +/************************************************************************/ + +void SubC4_Message(Msg_Num,Handle, + Replace_Message1,Msg_Type, + Replace_Value1, + Replace_Message2) + +int Msg_Num; +int Handle,Msg_Type; +unsigned long int *Replace_Value1; +char *Replace_Message1,*Replace_Message2; + +{ + + switch(Msg_Type) + { + case IbmdosMsg: + case CFreeMsg: + case SystemMsg: + InRegs.x.ax = Msg_Type; + InRegs.h.dh = Utility_Msg_Class; + sysgetmsg(&InRegs,&SegRegs,&OutRegs); + FP_OFF(sublist[1].value) = OutRegs.x.si; + FP_SEG(sublist[1].value) = SegRegs.ds; + break; + default: + sublist[1].value = (unsigned far *) Replace_Message1; + break; + } + sublist[1].size = Sublist_Length; + sublist[1].reserved = Reserved; + sublist[1].id = 1; + sublist[1].flags = Char_Field_ASCIIZ+Left_Align; + sublist[1].max_width = 0x0008; + sublist[1].min_width = 0x0008; + sublist[1].pad_char = Blank; + + sublist[2].value = (unsigned far *)Replace_Value1; + sublist[2].size = Sublist_Length; + sublist[2].reserved = Reserved; + sublist[2].id = 2; + sublist[2].flags = Unsgn_Bin_DWord+Right_Align; + sublist[2].max_width = 10; + sublist[2].min_width = 10; + sublist[2].pad_char = Blank; + + sublist[3].value = (unsigned far *) Replace_Message2; + sublist[3].size = Sublist_Length; + sublist[3].reserved = Reserved; + sublist[3].id = 3; + sublist[3].flags = Char_Field_ASCIIZ+Left_Align; + sublist[3].max_width = 0x0009; + sublist[3].min_width = 0x0009; + sublist[3].pad_char = Blank; + + sublist[4].value = (unsigned far *)Replace_Value1; + sublist[4].size = Sublist_Length; + sublist[4].reserved = Reserved; + sublist[4].id = 4; + sublist[4].flags = Bin_Hex_DWord+Right_Align; + sublist[4].max_width = 06; + sublist[4].min_width = 06; + sublist[4].pad_char = Blank; + + + InRegs.x.ax = Msg_Num; + InRegs.x.bx = Handle; + InRegs.x.cx = SubCnt4; + InRegs.h.dl = No_Input; + InRegs.h.dh = Utility_Msg_Class; + InRegs.x.si = (unsigned int)&sublist[1]; + sysdispmsg(&InRegs,&OutRegs); + return; +} +/************************************************************************/ +/* SUBC2_MESSAGE - This routine will print only those */ +/* messages that require 2 replaceable */ +/* parms (for Classify Switch). */ +/* */ +/* Inputs : Msg_Num - number of applicable message */ +/* Handle - display type */ +/* Replace_Parm1 - pointer to parm to replace */ +/* Replace_Message1 - pointer to replace message */ +/* */ +/* Outputs : message */ +/* */ +/************************************************************************/ + +void SubC2_Message(Msg_Num,Handle, Replace_Parm1, + Replace_Message1) + +int Msg_Num; +int Handle; +unsigned long int *Replace_Parm1; +char *Replace_Message1; +{ + + sublist[1].value = (unsigned far *)Replace_Parm1; + sublist[1].size = Sublist_Length; + sublist[1].reserved = Reserved; + sublist[1].id = 1; + sublist[1].flags = Unsgn_Bin_DWord+Right_Align; + sublist[1].max_width = 10; + sublist[1].min_width = 10; + sublist[1].pad_char = Blank; + + sublist[2].value = (unsigned far *)Replace_Message1; + sublist[2].size = Sublist_Length; + sublist[2].reserved = Reserved; + sublist[2].id = 2; + sublist[2].flags = Char_Field_ASCIIZ+Left_Align; + sublist[2].max_width = 0x0009; + sublist[2].min_width = 0x0009; + sublist[2].pad_char = Blank; + + InRegs.x.ax = Msg_Num; + InRegs.x.bx = Handle; + InRegs.x.cx = SubCnt2; + InRegs.h.dl = No_Input; + InRegs.h.dh = Utility_Msg_Class; + InRegs.x.si = (unsigned int)&sublist[1]; + sysdispmsg(&InRegs,&OutRegs); + return; +} +/* M003 END */ |