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
|
;
page ,132 ; ;AN000;bgb
;;*****************************************************************************
; Include files
;*****************************************************************************
;
.xlist
include pathmac.inc ;an028;bgb
include recseg.inc ;AN000;bgb
include dossym.inc
INCLUDE SYSMSG.INC
INCLUDE RECEQU.INC
INCLUDE RECMSG.INC
.list
;
;*****************************************************************************
; external data
;*****************************************************************************
data segment public para 'DATA' ;AC000;bgb
EXTRN command_line_buffer:byte ;an031;bgb
extrn DrvLet1:Byte ;AN000;bgb
extrn DrvLet:Byte ;AN000;bgb
extrn rec_num:word ;AN000;bgb
Extrn Drive_Letter_Msg:Byte ;AN000;BGB
extrn fname_buffer:byte ;AN000;BGB
EXTRN x_value_lo:WORD ;AN000;bgb ; AC000;SM
EXTRN x_value_hi:WORD ;AN000;bgb ; AC000;SM
EXTRN y_value_lo:WORD ;AN000;bgb ; AC000;SM
EXTRN y_value_hi:WORD ;AN000;bgb ; AC000;SM
extrn DriveLetter:Byte
;*****************************************************************************
; Message Services
;*****************************************************************************
.xlist
MSG_UTILNAME <RECOVER>
Msg_Services <MSGDATA>
data ends
;
;***************************************************************************
; Message Structures
;***************************************************************************
;
code segment PUBLIC para 'CODE'
Message_Table struc ; ;AN000;
;
Entry1 dw 0 ; ;AN000;
Entry2 dw 0 ; ;AN000;
Entry3 dw 0 ; ;AN000;
Entry4 dw 0 ; ;AN000;
Entry5 db 0 ; ;AN000;
Entry6 db 0 ; ;AN000;
Entry7 dw 0 ; ;AN000;
Message_Table ends ; ;AN000;
pathlabl msgret ;an028;bgb
Msg_Services <NEARmsg>
Msg_Services <LOADmsg>
Msg_Services <DISPLAYmsg,CHARmsg,NUMmsg> ;an029;bgb
pathlabl msgret ;an028;bgb
Msg_Services <RECOVER.CLA,RECOVER.CL1,RECOVER.CL2,RECOVER.CTL>
.list
;
;*****************************************************************************
; Public Routines
;*****************************************************************************
Public SysDispMsg
Public SysLoadMsg
Public Display_Interface
;*****************************************************************************
;Routine name&gml Display_Interface
;*****************************************************************************
;
;DescriptioN&gml Save all registers, set up registers required for SysDispMsg
; routine. This information is contained in a message description
; table pointed to by the DX register. Call SysDispMsg, then
; restore registers. This routine assumes that the only time an
; error will be returned is if an extended error message was
; requested, so it will ignore error returns
;
;Called Procedures: Message (macro)
;
;Change History&gml Created 4/22/87 MT
;
;Input&gml ES&gmlDX = pointer to message description
;
;Output&gml None
;
;Psuedocode
;----------
;
; Save all registers
; Setup registers for SysDispMsg from Message Description Tables
; CALL SysDispMsg
; Restore registers
; ret
;*****************************************************************************
Display_Interface proc ; ;AN000;
push ds ; ;AN000;
push ax ;Save registers ;AN000;
push bx ; " " " " ;AN000;
push cx ; " " " " ;AN000;
push dx ; " " " " ;AN000;
push si ; " " " " ;AN000;
push di ; " " " " ;AN000;
mov di,dx ;Change pointer to table ;AN000;
mov dx,DG ;Point to data segment
mov ds,dx ;
mov ax,[di].Entry1 ;Message number ;AN000;
mov bx,[di].Entry2 ;Handle ;AN000;
mov si,[di].Entry3 ;Sublist ;AN000;
mov cx,[di].Entry4 ;Count ;AN000;
mov dh,[di].Entry5 ;Class ;AN000;
mov dl,[di].Entry6 ;Function ;AN000;
mov di,[di].Entry7 ;Input ;AN000;
call SysDispMsg ;Display the message ;AN000;
pop di ;Restore registers ;AN000;
pop si ; " " " " ;AN000;
pop dx ; " " " " ;AN000;
pop cx ; " " " " ;AN000;
pop bx ; " " " " ;AN000;
pop ax ; " " " " ;AN000;
pop ds ; ;AN000;
ret ;All done ;AN000;
Display_Interface endp ; ;AN000;
include msgdcl.inc
code ends
end
;code segment public PARA 'CODE' ;AC000;bgb
;code ends
;
;const segment public para ;AC000;bgb
;const ends
;
;cstack segment stack word 'stack'
;cstack ends
;
;
;data segment public para 'DATA' ;AC000;bgb
;data ends
;
;dg group code,const,data,cstack
;
;code segment public para 'code' ;AC000;bgb
;code ends
; assume cs:dg,ds:dg,es:dg,ss:cstack
;
;
;;;;;;;;;;code segment PUBLIC para 'CODE'
;;;;;;;;;;;;;code ends
|