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
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
|
PAGE 55,132 ;AN000;
NAME SELECT ;AN000;
TITLE SELECT - GET_HELP_ID ;AN000;
SUBTTL Get_Help.asm ;AN000;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; GET_HELP_ID
;
; Entry:
;
;
;
; Exit:
;
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SELECT SEGMENT PARA PUBLIC 'SELECT' ;AN000;segment for far routine
ASSUME CS:SELECT ;AN000;
;
;
INP_HELP_ID DW 12,10,10 ;AN000; help_id 1, row', col' STR_DOS_LOC
DW 19,12,15 ;AN000; help_id 2, row', col' STR_EXT_PARMS
DW 31,11,20 ;AN000; help_id 3, row', col' STR_DOS_PATH
DW 32,11,20 ;AN000; help_id 4, row', col' STR_DOS_APPEND
DW 33,11,20 ;AN000; help_id 5, row', col' STR_DOS_PROMPT
DW 34,12,20 ;AN000; help_id 6, row', col' STR_SHELL
DW 35,12,20 ;AN000; help_id 7, row', col' STR_KSAM
DW 35,12,20 ;AN000; help_id 8, row', col' STR_FASTOPEN
DW 36,12,20 ;AN000; help_id 9, row', col' STR_SHARE
DW 37,12,20 ;AN000; help_id 10, row', col' STR_GRAPHICS
DW 38,12,20 ;AN000; help_id 11, row', col' STR_XMAEM
DW 39,12,20 ;AN000; help_id 12, row', col' STR_XMA2EMS
DW 40,13,20 ;AN000; help_id 13, row', col' STR_VDISK
DW 41,12,20 ;AN000; help_id 14, row', col' STR_BREAK
DW 42,12,20 ;AN000; help_id 15, row', col' STR_BUFFERS
DW 43,11,20 ;AC000; help_id 16, row', col' STR_DOS_APPEND_P JW
DW 44, 2,20 ;AN000; help_id 17, row', col' STR_FCBS
DW 45, 2,20 ;AN000; help_id 18, row', col' STR_FILES
DW 46, 2,20 ;AN000; help_id 19, row', col' STR_LASTDRIVE
DW 47, 2,20 ;AN000; help_id 20, row', col' STR_STACKS
DW 48, 2,20 ;AN000; help_id 21, row', col' STR_VERIFY
DW 13,10,10 ;AN000; help_id 22, row', col' NUM_PRINTER
DW 18,10,20 ;AN000; help_id 23, row', col' NUM_EXT_DISK
DW 53,12,20 ;AN000; help_id 24, row', col' NUM_YEAR
DW 53,12,20 ;AN000; help_id 25, row', col' NUM_MONTH
DW 53,12,20 ;AN000; help_id 26, row', col' NUM_DAY
DW 53,12,20 ;AN000; help_id 27, row', col' NUM_HOUR
DW 53,12,20 ;AN000; help_id 28, row', col' NUM_MINUTE
DW 53,11,20 ;AN000; help_id 29, row', col' NUM_SECOND
INP_HELP_ID_LEN EQU ($-INP_HELP_ID)/6 ;AN000;
INP_HELP_ID_ELE EQU 3 ;AN000;
;
SCR_HELP_ID DW 3 ;AN000; scr_id1
DW 3,12,20 ;AN000; help_id1,row1',col1'
DW 4, 1,20 ;AN000;
DW 5, 3,20 ;AN000;
DW 2 ;AN000; scr_id2
DW 6, 1,20 ;AN000;
DW 7, 3,20 ;AN000;
DW 1 ;AN000;
DW 8, 3,20 ;AN000; SCR_CTY_1
DW 1 ;AN000;
DW 8, 3,20 ;AN000; SCR_CTY_2
DW 1 ;AN000;
DW 9,10,20 ;AN000; SCR_KYB_1
DW 1 ;AN000;
DW 9,10,20 ;AN000; SCR_KYB_2
DW 1 ;AN000;
DW 10,10,23 ;AN000; SCR_FR_KYB
DW 1 ;AN000;
DW 10,10,23 ;AN000; SCR_IT_KYB
DW 1 ;AN000;
DW 10,10,23 ;AN000; SCR_UK_KYB
DW 1 ;AN000;
DW 11,10,20 ;AN111; SCR_DEST_B_C JW
DW 1 ;AN000;
DW 14, 1,25 ;AN000; SCR_PRT_TYPE
DW 1 ;AN000;
DW 15, 9,20 ;AN000; SCR_PARALLEL
DW 1 ;AN000;
DW 16,10,20 ;AN000; SCR_SERIAL
DW 1 ;AN000;
DW 17, 8,20 ;AN000; SCR_PRT_REDIR
DW 2 ;AN000;
DW 20, 6,20 ;AN000; SCR_REVIEW
DW 21, 6,20 ;AN000; SCR_REVIEW
DW 9 ;AN000;
DW 22,10,11 ;AN000;
DW 23,11,11 ;AN000;
DW 24,12,11 ;AN000;
DW 25, 1,11 ;AN000;
DW 26, 2,11 ;AN000;
DW 27, 3,11 ;AN000;
DW 28, 4,11 ;AN000;
DW 29, 5,11 ;AN000;
DW 30, 6,11 ;AN000;
DW 6 ;AN000;
DW 22,10,11 ;AN000;
DW 24,11,11 ;AN000;
DW 26,12,11 ;AN000;
DW 27, 1,11 ;AN000;
DW 29, 2,11 ;AN000;
DW 30, 3,11 ;AN000; SCR_FUNC_DISKET
DW 2 ;AN000;
DW 49, 1,11 ;AN000;
DW 50, 1,11 ;AN000; SCR_FIXED_FIRST
DW 2 ;AN000;
DW 51, 1,11 ;AN000;
DW 52, 1,11 ;AN000; SCR_FIXED_BOTH
DW 2 ;AN000;
DW 54, 1,11 ;AN000;
DW 55, 1,11 ;AN000; SCR_FORMAT
DW 0 ;AN000; SCR_CONTEXT_HLP
DW 0 ;AN000; SCR_INDEX_HLP
DW 0 ;AN000; SCR_TITLE_HLP
DW 0 ;AN000;
DW 0 ;AN000;
DW 2 ;AN000; SCR_COPY_DEST JW
DW 18,10,10 ;AC035; SEH new help text
DW 19,10,10 ;AC035; SEH new help text
DW 1 ;AN000;
DW 11,10,20 ;AN111; SCR_DEST_A_C JW
DW 2 ;AN000;
DW 56, 6,20 ;AN000; SCR_choose_screen
DW 57, 6,20 ;AN000; SCR_choose_screen
SCR_HELP_ID_LEN EQU 28 ;AN000;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;
; GET_HELP_ID
;
; Entry:
; AX = 1 for input field help_id's
; BX = field_id
; AX = 2 for scroll help_id's
; BX = scroll_id
; CX = index
;
; Exit:
; AX = help_id
; DH = row'
; DL = col'
;
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
THREE DW 3 ;AN000;
;
PUBLIC GET_HELP_ID ;AN000;
GET_HELP_ID PROC ;AN000;
CMP AX,1 ;AN000;
JNE GH_8 ;AN000;
;
CMP AX,INP_HELP_ID_LEN ;AN000;
JA GH_8 ;AN000;
;
PUSH BX ;AN000;
PUSH CX ;AN000;
MOV AX,BX ;AN000;
DEC AX ;AN000;
MOV BX,INP_HELP_ID_ELE*2 ;AN000;
MUL BX ;AN000;
MOV BX,AX ;AN000;
MOV AX,CS:[BX].INP_HELP_ID ;AN000;
MOV CX,CS:[BX+2].INP_HELP_ID;AN000;
MOV DX,CS:[BX+4].INP_HELP_ID;AN000;
XCHG CH,CL ;AN000;
MOV DH,CH ;AN000;
POP CX ;AN000;
POP BX ;AN000;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; AX = 2 for scroll help_id's
; BX = scroll_id
; CX = index
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
GH_8: CMP AX,2 ;AN000;
JNE GH_20 ;AN000;
;
CMP BX,SCR_HELP_ID_LEN ;AN000;
JA GH_20 ;AN000;
;
OR CX,CX ;AN000;
JE GH_20 ;AN000;
;
PUSH CX ;AN000; search for matching scroll_id
PUSH SI ;AN000;
MOV DX,1 ;AN000;
XOR SI,SI ;AN000;
;
GH_9: CMP DX,BX ;AN000;
JE GH_10 ;AN000;
MOV AX,CS:[SI]+SCR_HELP_ID ;AN000; get number of help screens
PUSH DX ;AN000;
MUL THREE ;AN000;
POP DX ;AN000;
ADD AX,1 ;AN000; +additional entries (row',col',count)
SHL AX,1 ;AN000; account for WORD entries
ADD SI,AX ;AN000;
INC DX ;AN000;
CMP DX,SCR_HELP_ID_LEN ;AN000;
JBE GH_9 ;AC000; JW Changed to JBE
JMP GH_15 ;AN000;
;
GH_10: CMP CX,CS:[SI]+SCR_HELP_ID ;AN000; check for index out of range?
JBE GH_11 ;AN000; then
MOV CX,1 ;AN000; set to first help_id....
;
GH_11: MOV AX,CX ;AN000; scroll_id found!!!!
DEC AX ;AN000;
MUL THREE ;AN000;
INC AX ;AN000;
SHL AX,1 ;AN000;
ADD SI,AX ;AN000;
MOV AX,CS:[SI]+SCR_HELP_ID ;AN000;
MOV CX,CS:[SI+2].SCR_HELP_ID;AN000;
MOV DX,CS:[SI+4].SCR_HELP_ID;AN000;
XCHG CH,CL ;AN000;
MOV DH,CH ;AN000;
GH_15: POP SI ;AN000;
POP CX ;AN000;
GH_20: ;AN000;
RET ;AN000;
GET_HELP_ID ENDP ;AN000;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SELECT ENDS ;AN000;
END GET_HELP_ID ;AN000;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|