PAGE ,132 ; TITLE COMPSM.SAL - COMP SYSTEM MESSAGES ;****************** START OF SPECIFICATIONS ***************************** ; MODULE NAME: COMPSM.SAL ; ; DESCRIPTIVE NAME: Include the DOS system MESSAGE HANDLER in the SEGMENT ; configuration expected by the modules of COMP. ; ;FUNCTION: The common code of the DOS SYSTEM MESSAGE HANDLER is made a ; part of the COMP module by using INCLUDE to bring in the ; common portion, in SYSMSG.INC. This included code contains ; the routines to initialize for message services, to find ; where a particular message is, and to display a message. ; ; ENTRY POINT: SYSDISPMSG:near ; SYSGETMSG:near ; SYSLOADMSG:near ; ; INPUT: ; AX = MESSAGE NUMBER ; BX = HANDLE TO DISPLAY TO (-1 means use DOS functions 1-12) ; SI = OFFSET IN ES: OF SUBLIST, OR 0 IF NONE ; CX = NUMBER OF %PARMS, 0 IF NONE ; DX = CLASS IN HIGH BYTE, INPUT FUNCTION IN LOW ; CALL SYSDISPMSG ;DISPLAY THE MESSAGE ; ; If carry set, extended error already called: ; AX = EXTENDED MESSAGE NUMBER ; BH = ERROR CLASS ; BL = SUGGESTED ACTION ; CH = LOCUS ; _ _ _ _ _ _ _ _ _ _ _ _ ; ; AX = MESSAGE NUMBER ; DH = MESSAGE CLASS (1=DOS EXTENDED ERROR, 2=PARSE ERROR, -1=UTILITY MSG) ; CALL SYSGETMSG ;FIND WHERE A MSG IS ; ; If carry set, error ; CX = 0, MESSAGE NOT FOUND ; If carry NOT set, ok, and resulting regs are: ; CX = MESSAGE SIZE ; DS:SI = MESSAGE TEXT ; _ _ _ _ _ _ _ _ _ _ _ _ ; ; CALL SYSLOADMSG ;SET ADDRESSABILITY TO MSGS, CHECK DOS VERSION ; If carry not set: ; CX = SIZE OF MSGS LOADED ; ; If carry is set, regs preset up for SYSDISPMSG, as: ; AX = ERROR CODE IF CARRY SET ; AX = 1, INCORRECT DOS VERSION ; DH =-1, (Utility msg) ; OR, ; AX = 1, Error loading messages ; DH = 0, (Message manager error) ; BX = STDERR ; CX = NO_REPLACE ; DL = NO_INPUT ; ; EXIT-NORMAL: CARRY is not set ; ; EXIT-ERROR: CARRY is set ; Call Get Extended Error for reason code, for SYSDISPMSG and ; SYSGETMSG. ; ; INTERNAL REFERENCES: ; ROUTINES: (Generated by the MSG_SERVICES macro) ; SYSLOADMSG ; SYSDISPMSG ; SYSGETMSG ; ; DATA AREAS: ; INCLUDED "COMPMS.INC" - message defining control blocks ; INCLUDED "MSGHAN.INC" - Define STRUCs for msg control blocks ; INCLUDE SYSMSG.INC ;Permit System Message handler definition ; ; EXTERNAL REFERENCES: ; ROUTINES: none ; ; DATA AREAS: control blocks pointed to by input registers. ; ; NOTES: ; This module should be processed with the SALUT preprocessor ; with the re-alignment not requested, as: ; ; SALUT COMPSM,nul,; ; ; To assemble these modules, the alphabetical or sequential ; ordering of segments may be used. ; ; For LINK instructions, refer to the PROLOG of the main module, ; COMP1.ASM. ; ; REVISION HISTORY: A000 Version 4.0 : add PARSER, System Message Handler, ; Add compare of code page extended attribute, if present. ; ; COPYRIGHT: "The DOS COMP Utility" ; "Version 4.0 (C)Copyright 1988 Micorsoft " ; "Licensed Material - Property of Microsoft " ; ;PROGRAM AUTHOR: DOS 3.20 Dave L. ; DOS 3.30 modifications by Russ W. ; DOS 4.0 modifications by Edwin M. K., Bill L. ;****************** END OF SPECIFICATIONS ***************************** ; ;AN000; IF1 ;AN000; %OUT COMPONENT=COMP, MODULE=COMPSM.SAL... ;AN000; ENDIF ;AN000; ; = = = = = = = = = = = = ;AN000; ; ;AN000; HEADER MACRO TEXT ;AN000; .XLIST ;AN000; SUBTTL TEXT ;AN000; .LIST ;AN000; PAGE ;AN000; ENDM ;AN000; ; = = = = = = = = = = = = ;AN000; INCLUDE SYSMSG.INC ;PERMIT SYSTEM MESSAGE HANDLER DEFINITION ;AN000; MSG_UTILNAME ;IDENTIFY THE UTILITY ;AN000; ; = = = = = = = = = = = = ;AN000; HEADER ;AN000; ; $SALUT (4,12,18,36) ;AN000; CSEG SEGMENT PARA PUBLIC 'CODE' ;AN000; ASSUME CS:CSEG,DS:CSEG,ES:CSEG,SS:CSEG ;AN000; ; ;AN000; PUBLIC COPYRIGHT ;AN000; COPYRIGHT DB "The DOS COMP Utility" ;AN000; INCLUDE MSGHAN.INC ;DEFINE THE MESSAGE HANDLER CONTROL BLOCKS ;AN000; INCLUDE COMPMS.INC ;DEFINE THE MESSAGES, AND CONTROL BLOCKS ;AN000; MSG_SERVICES ;AN000; ; = = = = = = = = = = = = ;AN000; HEADER ;AN000; PUBLIC SYSLOADMSG ;AN000; PUBLIC SYSDISPMSG ;AN000; PUBLIC SYSGETMSG ;AN000; ; ;AN000; ; MSG_SERVICES ;AN000; ;DEFAULT=CHECK DOS VERSION ;AN000; ;DEFAULT=NEARmsg ;AN000; ;DEFAULT=INPUTmsg ;AN000; ;DEFAULT=NUMmsg ;AN000; ;DEFAULT=NO TIMEmsg ;AN000; ;DEFAULT=NO DATEmsg ;AN000; .XLIST ;AN000; .XCREF ;AN000; MSG_SERVICES ;AN000; MSG_SERVICES ;AN000; MSG_SERVICES ;AN000; .LIST ;AN000; .CREF ;AN000; ; ;AN000; MSG_SERVICES ;TEXTS OF MESSAGES ;AN000; ; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = ;AN000; CSEG ENDS ;AN000; include msgdcl.inc END ;AN000;