summaryrefslogtreecommitdiff
path: root/v4.0/src/SELECT/SELECT1.ASM
blob: 3770fd72473d9d8ea17314cbcd1d2e8d8b5865fb (plain) (blame)
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
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
PAGE	60,132							;AN000;
NAME	SELECT							;AN000;
TITLE	SELECT1 - DOS - SELECT.EXE				;AN000;
SUBTTL	select1.asm						;AN000;
.ALPHA								;AN000;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;	SELECT1.ASM : Copyright 1988 Microsoft
;
;	DATE:	 July 4/87
;
;	COMMENTS: Assemble with MASM 3.0 (using the /A option)
;
;		  Panel flow is defined in the following files:
;
;			      SELECT1.ASM
;			      SELECT2.ASM
;			      SELECT3.ASM
;			      SELECT4.ASM
;			      SELECT5.ASM
;			      SELECT6.ASM
;
;	CHANGE HISTORY:
;
;	;AN001;JW - P2452 Check for user switching disk before asked to
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
_TEXT	segment byte public 'CODE'                              ;AN000;
	extrn	gget_status:far 				;AN000;
_TEXT	ends							;AN000;
_DATA	segment word public 'DATA'                              ;AN000;
_DATA	ends							;AN000;
CONST	segment word public 'CONST'                             ;AN000;
CONST	ends							;AN000;
_BSS	segment word public 'BSS'                               ;AN000;
_BSS	ends							;AN000;
								;
DGROUP	  GROUP   CONST,_BSS,_DATA				;AN000;
								;
DATA	  SEGMENT BYTE PUBLIC 'DATA'                            ;AN000; Segment for Data values
DATA	  ENDS							;AN000;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.XLIST								;AN000;
	INCLUDE PANEL.MAC					;AN000;
	INCLUDE SELECT.INC					;AN000;
	INCLUDE CASTRUC.INC					;AN000;
	INCLUDE STRUC.INC					;AN000;
	INCLUDE MACROS.INC					;AN000;
	INCLUDE EXT.INC 					;AN000;
	INCLUDE VARSTRUC.INC					;AN000;
	INCLUDE ROUT_EXT.INC					;AN000;
	INCLUDE PAN-LIST.INC					;AN000;
.LIST								;AN000;
								;
	EXTRN	PM_BASECHAR:BYTE				;AN000;
	EXTRN	PM_BASEATTR:BYTE				;AN000;
	EXTRN	CRD_CCBVECOFF:WORD				;AN000;
	EXTRN	CRD_CCBVECSEG:WORD				;AN000;
								;
	EXTRN	ALLOCATE_MEMORY_CALL:FAR			;AN000;
	EXTRN	DEALLOCATE_MEMORY_CALL:FAR			;AN000;
	EXTRN	VIDEO_CHECK:FAR 				;AN000;
	EXTRN	EXIT_SELECT:NEAR				;AN000;
	EXTRN	EXIT_SELECT2:NEAR				;AN000;JW
	EXTRN	ABORT_SELECT:NEAR				;AN000;
	EXTRN	HANDLE_F3:NEAR					;AN001;GHG
								;
	PUBLIC	CHECK_VERSION					;AN000;
	PUBLIC	INTRO_SCREEN					;AN000;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SELECT	SEGMENT PARA PUBLIC 'SELECT'                            ;AN000;
	ASSUME	CS:SELECT,DS:DATA				;AN000;
								;
	PUBLIC	BCHAR						;AN000;
	DB	'BCHAR='                                        ;AN000;
BCHAR	DB	' '                                             ;AN000;
								;
	INCLUDE CASEXTRN.INC					;AN000;
								;
	EXTRN	EXIT_DOS:NEAR					;AN000;
	EXTRN	EXIT_DOS_CONT:NEAR				;AN000;
	EXTRN	PROCESS_ESC_F3:NEAR				;AN000;
	EXTRN	WORKSPACE_SCREEN:NEAR				;AN000;
	EXTRN	DATE_TIME_SCREEN:NEAR				;AN000;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;	Beginning of code
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CHECK_VERSION:							;AN000;
	INIT_VAR		N_HOUSE_CLEAN,E_CLEAN_NO	;AN000; no files to be erased on exit
								;
	CHECK_DOS_VERSION					;AN000; check DOS version
		;;;check for DOS version 4.00			;
		.IF c						;AN000; if incorrect DOS version
		    DISPLAY_MESSAGE	1			;AN000;
		    GOTO		EXIT_DOS_CONT		;AN000;
		.ENDIF						;AN000;    EXIT
								;
	CHECK_DEFAULT_DRIVE					;AN000; check if default drive is A:
		;;;check if default drive is A: 		;
		.IF c						;AN000; if default drive not A:
		   DISPLAY_MESSAGE	4			;AN000;
		   GOTO 		EXIT_DOS_CONT		;AN000;
		.ENDIF						;AN000;    EXIT
								;
	CHECK_DISKETTE		N_DISKETTE_A,N_DISKETTE_B,N_DISKETTE_TOT,P_STR120_1			  ;AN000;
		;;;get diskette media type and no of drives	;
		;;;N_DISKETTE_A & B - media type 360k,720k, etc ;
		;;;N_DISKETTE_TOT - number of drives		;
								;
	CHECK_DISK		E_DISK_1,N_DISK_1,N_DISK_1_S1,N_DISK_1_S2,DISK_1_TABLE			  ;AN000;
		;;;get partition status for 1st fixed disk	;
		;;;N_DISK_1 - disk status			;
		;;;N_DISK_1_S1 - detailed disk status word 1	;
		;;;N_DISK_1_S2 - detailed disk status word 2	;
		;;;DISK_1_TABLE - status of all partitions	;
								;
	CHECK_DISK		E_DISK_2,N_DISK_2,N_DISK_2_S1,N_DISK_2_S2,DISK_2_TABLE			  ;AN000;
		;;;get partition status for 2nd fixed disk	;
		;;;N_DISK_2 - disk status			;
		;;;N_DISK_2_S1 - detailed disk status byte 1	;
		;;;N_DISK_2_S2 - detailed disk status byte 2	;
		;;;DISK_2_TABLE - status of all partitions	;
								;
	CHECK_VALID_MEDIA    N_DISKETTE_A,N_DISKETTE_B,N_DISKETTE_TOT,N_DISK_1,N_DEST_DRIVE,I_DEST_DRIVE,N_DRIVE_OPTION ;AN000;JW
		;;;check if disk/diskette combination is valid	;
		;;;also determine default install drive 	;
		;;;N_DEST_DRIVE - default/user drive choice	;
		;;;I_DEST_DRIVE - drive A: or B: or C:		;					  ;AN111;JW
		;;;N_DRIVE_OPTION - which drive options are avail					  ;AN111;JW
		.IF c						;AN000;
		   DISPLAY_MESSAGE	5			;AN000;
		   GOTO 		EXIT_DOS_CONT		;AN000;
		.ENDIF						;AN000;
								;
	GET_INSTALLED_MEM   MEM_SIZE				;AN000;
								;
	CHECK_MACHINE	    MACHINE_TYPE, PS2_FLAG		;AN000;JW
								;
	SCAN_PARAMETERS  N_SELECT_MODE				;AN000;
		;;;scan command line				;
		;;;N_SELECT_MODE - MENU or FDISK		;
	       .IF < N_SELECT_MODE EQ E_SELECT_INV >		;AN000;JW
		   DISPLAY_MESSAGE	6			;AN000;JW
		   GOTO 		EXIT_SELECT2		;AN000;JW
		.ENDIF						;AN000;JW
								;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;  If this is reboot after FDISK, load parameters in SELECT.TMP
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
     .IF < N_SELECT_MODE eq E_SELECT_FDISK > and		;AN000;JW
     .IF < N_DISKETTE_A ne E_DISKETTE_360 >			;AN000;
	 CALL		     SCAN_INFO_CALL			;AN000;
     .ENDIF							;AN000;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	CHECK_DISPLAY						;AN000; determine display type
		.IF < ACTIVE eq EGA > or			;AN000;
		.IF < ALTERNATE eq EGA > or			;AN000;
		.IF < ACTIVE eq LCD > or			;AN000;
		.IF < ALTERNATE eq LCD >			;AN000;
		   INIT_VAR	N_DISPLAY, E_CPSW_DISP		;AN000;
		.ELSE						;AN000;
		   INIT_VAR	N_DISPLAY, E_NOCPSW_DISP	;AN000;
		.ENDIF						;AN000;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Read in SELECT.DAT data (all but the help)
;
;	This will read in the panels, the scroll fields,
;	the color index (COLOR or MONO), and (EVENTUALLY)
;	the input fields.
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	SET_DISPLAY_MODE					;AC084; SEH call moved before video information requested ;AN000; set display to 80 col and 25 lines
	CALL	PCGVIDO_CALL					;AN000;get video information
	ALLOCATE_MEMORY 					;AN000;allocate enough memory for SELECT.DAT
	.IF   < NC >						;AN000;
	   CALL  INITIALIZE					;AN000;read all panels, color, scroll
	   .IF	 < NC > 					;AN000;check if error condition occurred
	      INITIALIZE_BCHAR BCHAR				;AN000;Initialize the background character
	      JMP  MEMORY_ALLOCATED				;AN000;
	    .ELSE						;AN000;
	      JMP  EXIT_SELECT					;AN000;terminate SELECT without affecting memory
	   .ENDIF						;AN000;
	 .ELSE							;AN000;
	   DISPLAY_MESSAGE 20					;AN067;SEH insufficient memory
	   JMP	ABORT_SELECT					;AN000;
	.ENDIF							;AN000;
MEMORY_ALLOCATED:						;AN000;
  ;;;	CALL	CURSOROFF					;AN000;deactive cursor
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;	Commence the heart of the SELECT installation routine.
;	At the initial portion of the code, a system hardware
;	check out is performed.  The peripherals are established,
;	the display type is determined, and checks are made against
;	disk media installed.
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   ;;;	CALL	CURSOROFF					;AN000;
								;
	.IF < ACTIVE eq EGA >					;AN000; if active display = EGA
	   COPY_STRING		S_STR120_1,M_STR120_1,S_PREP_EGA;AN000;    set parameter for EGA.CPI
	.ELSEIF < ACTIVE eq LCD >				;AN000; elseif active display = LCD
	   COPY_STRING		S_STR120_1,M_STR120_1,S_PREP_LCD;AN000;    set parameter for LCD.CPI
	.ELSE							;AN000; else
	   INIT_VAR		S_STR120_1, 0			;AN000;    set parameter = null
	.ENDIF							;AN000;
								;
	.IF < S_STR120_1 gt 0 > 				;AN000; if parameter is not null
	   EXEC_PROGRAM 	S_MODE,S_STR120_1,PARM_BLOCK,EXEC_DIR ;AN000;GHG exec MODE CON CP PREP((850)...)
	   EXEC_PROGRAM 	S_MODE,S_CP_SEL,PARM_BLOCK,EXEC_DIR   ;AN000;GHG   execute MODE CON CP SEL=850
	.ENDIF							;AN000;
								;
	INIT_VAR		F_PARTITION, E_PART_DEFAULT	;AN000;
	INIT_VAR		F_FORMAT, E_FORMAT_FAT		;AN000;
	.IF < N_SELECT_MODE eq E_SELECT_FDISK > 		;AN000;
	   INIT_VAR		I_DEST_DRIVE, E_DEST_DRIVE_C	;AN000;
	   GOTO 		DATE_TIME_SCREEN		;AN000;
	.ENDIF							;AN000;
								;
	CHECK_EXPANDED_MEMORY	N_XMA, N_MOD80			;AN000; check if expanded memory is present
	GET_NUMBER_PORTS	N_PARALLEL, N_SERIAL		;AN000; get number of parallel/serial ports
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;	Initialize pre-defined country and keyboard information
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	GET_DOS_COUNTRY 	P_STR120_1, N_COUNTRY		;AN000; get current DOS country
	GET_COUNTRY_INDEX	N_COUNTRY, N_CTY_LIST,I_COUNTRY ;AN000; get index into country table
	GET_COUNTRY_DEFAULTS	N_CTY_LIST, I_COUNTRY		;AN000; get default data for specified country
	.IF < N_DISPLAY eq E_CPSW_DISP >			;AN000;
	   .IF < N_CPSW eq E_CPSW_NOT_VAL >			;AN000; if cpsw not valid
	      INIT_VAR		F_CPSW, E_CPSW_NA		;AN000;    set cpsw = not available
	   .ELSEIF < N_CPSW eq E_CPSW_NOT_REC > 		;AN000; else if cpsw not recommended
	      INIT_VAR		F_CPSW, E_CPSW_NO		;AN000;    set cpsw = no
	   .ELSE						;AN000; else
	      INIT_VAR		F_CPSW, E_CPSW_YES		;AN000;    set cpsw = yes
	   .ENDIF						;AN000;
	.ELSE							;AN000;
	   INIT_VAR		F_CPSW, E_CPSW_NA		;AN000;
	.ENDIF							;AN000;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;	  If country is SWISS:
;	     then get keyboard from an input field
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	COMPARE_STRINGS 	S_KEYBOARD,S_SWISS		;AN000;GHG is default KB=SF?
	.IF <NC>						;AN000;GHG
	   RETURN_STRING	STR_SWISS_KEYB,S_KEYBOARD,M_KEYBOARD+2;AN000;GHG
	.ENDIF							;AN000;GHG
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;	Establish the default keyboard indice based on the
;	existing keyboard string.
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	GET_KEYBOARD_INDEX	S_KEYBOARD,N_KYBD_LIST,I_KEYBOARD,N_KYBD_ALT;AN000; get kybd info
	.IF < N_KYBD_ALT eq E_KYBD_ALT_YES > near		;AN000;
	   GET_ALT_KYBD_TABLE	S_KEYBOARD,ALT_TAB_PTR,ALT_KYB_ID     ;AN000; get ptr to alt kybd
	   COPY_BYTE		ALT_KYB_ID_PREV, ALT_KYB_ID	;AN000; set prev id = current id
	   INIT_VAR		I_KYBD_ALT, 2			;AN090; set index into alt kybd list = 2
	   GET_ALT_KEYBOARD	ALT_TAB_PTR,ALT_KYB_ID,I_KYBD_ALT,S_KYBD_ALT;AN000; get alt kybd id
	.ELSE							;AN000;
	   INIT_VAR		ALT_KYB_ID_PREV, 0		;AN000; set prev alt kyb id = 0
	.ENDIF							;AN000;
								;
	INIT_VAR		N_KYB_LOAD, E_KYB_LOAD_UND	;AN000; set KEYB loaded status = undefined
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;	Initialize installation variables to default values
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	.IF < MEM_SIZE eq 256 > 				;AN000;JW
	   INIT_VAR		   I_WORKSPACE, E_WORKSPACE_MIN ;AN000; set workspace option = minimum DOS	JW
	   COPY_STRING		   S_FILES, M_FILES, D_FILES_2	;AN000; set FILES = 20
	.ELSE							;AN000;JW
	   INIT_VAR		   I_WORKSPACE, E_WORKSPACE_BAL ;AN000; set workspace option = balance DOS
	   COPY_STRING		   S_FILES, M_FILES, D_FILES_1	;AN000; set FILES = 20
	.ENDIF							;AN000;JW
	INIT_VAR		N_WORK_PREV, 0			;AN000; set previous workspace option=undefined
	COPY_STRING		S_BREAK, M_BREAK, S_ON		;AN000; set BREAK = ON
	COPY_STRING		S_CPSW, M_CPSW, S_OFF		;AN000; set CPSW = OFF
	COPY_STRING		S_LASTDRIVE,M_LASTDRIVE,D_LASTDRIVE_1 ;AN000; set LASTDRIVE = E
	INIT_VAR		S_STACKS, 0			;AN000; set STACKS = null (spaces)
	COPY_STRING		S_VERIFY, M_VERIFY, S_OFF	;AN000; set VERIFY = OFF
	COPY_STRING		S_PROMPT, M_PROMPT,  D_PROMPT_1 ;AN000; set PROMPT = $P$G
	COPY_STRING		S_DOS_LOC,M_DOS_LOC,D_DOS_LOC_1 ;AN000; set DOS location = DOS
	INIT_VAR		S_INSTALL_PATH, 0		;AN000; set install path = null
	INIT_VAR		F_SHELL,E_SHELL_NO		;AN000; set SHELL = no
	.IF < MEM_SIZE eq 256 > 				;AN000;DT
	    COPY_STRING 	    S_SHELL, M_SHELL, D_SHELL_1 ;AN000; set SHELL parameter = /R
	.ELSE							;AN000;
	    COPY_STRING 	    S_SHELL, M_SHELL, D_SHELL_2 ;AN000; set SHELL parameter = /R
	.ENDIF							;AN000;DT
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	INIT_VAR		F_SHARE, E_SHARE_NO		;AN000; set SHARE = no
	INIT_VAR		S_SHARE, 0			;AN000; set SHARE parameter = null
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;	Continue initialization ...
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	INIT_VAR		F_VDISK, E_VDISK_NO		;AN000; set VDISK = no
	INIT_VAR		S_VDISK, 0			;AN000; set VDISK field = null (spaces)
	.IF < N_XMA eq E_XMA_PRESENT >				;AN000; if expanded memory present
	   INIT_VAR		F_XMA, E_XMA_NO 		;AN000;    set XMA = no (default)
	   INIT_VAR		S_XMAEM, 0			;AN000;    set XMAEM field=null (spaces)
	   COPY_STRING		S_XMA2EMS,M_XMA2EMS,D_XMA2EMS_1 ;AN000;  & XMA2EMS field=FRAME=(D000,C800,CC00)
	.ELSE							;AN000; else
	   INIT_VAR		F_XMA, E_XMA_NA 		;AN000;    set XMA = no
	.ENDIF							;AN000;
	INIT_VAR		F_REVIEW, E_REVIEW_ACCEPT	;AN000; set review option = accept selection
	INIT_VAR		I_CTY_KYBD, E_CTY_KB_PREDEF	;AN000; set country support=pre-defined support
								;
	.IF < ACTIVE eq CGA > or				;AN000; if CGA adaptor
	.IF < ALTERNATE eq CGA >				;AN000;
	   INIT_VAR		F_GRAFTABL, E_GRAFTABL_YES	;AN000;    set GRAFTABL = yes
	.ELSE							;AN000; else
	   INIT_VAR		F_GRAFTABL, E_GRAFTABL_NA	;AN000;    set GRAFTABL = not available
	.ENDIF							;AN000;
								;
	INIT_VAR		N_NUMPRINT, MIN_NUMPRINT	;AN000; set number of printers = 0
	INIT_VAR		I_PRINTER, 1			;AN000; set index into printer list = 1
	INIT_VAR		I_PORT, 1			;AN000; set port number = 1
	INIT_VAR		I_REDIRECT, 1			;AN000; set redirect port number = 1
								;
	CALL			HOOK_INT_23			;AN074; SEH don't allow ctrl-break
	CALL			CURSOROFF			;AN054; SEH moved from earlier in code
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;  ������������������������������������Ŀ
;  �WELCOME_SCREEN			�
;  �					�
;  ��������������������������������������
;
;  The WELCOME screen is always presented.
;  The screen does not have help, F3 function or input variables.
;  Valid keys are ENTER and ESC.
;  ESC key will return control to the DOS command line.
;  If installing from 360KB diskettes, must prompt for INSTALL diskette
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
WELCOME_SCREEN: 						;AN000;
								;
       .IF < N_DISKETTE_A eq E_DISKETTE_360 >			;AN000;
	   INSERT_DISK		SUB_REM_DOS_A, S_DOS_COM_360	;AN000; Insert the INSTALL diskette
       .ENDIF							;AN000;
								;
WELCOME_SCREEN2:						;AN000;
	INIT_PQUEUE		PAN_WELCOME			;AN000; initialize queue
	PREPARE_PANEL		SUB_CONT_OPTION 		;AN000; prepare continue or cancel
	PREPARE_PANEL		PAN_HBAR			;AN000; prepare horizontal bar
	PREPARE_CHILDREN					;AN000; prepare child panels
	DISPLAY_PANEL						;AN000; display WELCOME panel
								;
	GET_FUNCTION		FK_ENT_ESC_F3			;AN000; get user entered function
	.IF < N_USER_FUNC eq E_F3 >				;AN000;DT if user entered F3 key
	    GOTO	     EXIT_DOS				;AN000;DT
	.ELSEIF < N_USER_FUNC eq E_ENTER >			;AN000; if user entered ENTER key
	   FIND_FILE	       S_PRINT_FILE, E_FILE_ATTR	;AN001; check to make sure they did not switch
	   .IF < c >						;AN000;JW
	      INSERT_DISK      SUB_REM_DOS_A, S_PRINT_FILE	;AN000;JW
	   .ENDIF						;AN000;JW
	   GOTO 		INTRO_SCREEN			;AN000;    go to next screen
	.ELSE							;AN000; else
	   CALL 		HANDLE_F3			;AN001;GHG exit to DOS command line
	   .IF < C >						;AN001;GHG
	       GOTO		EXIT_DOS			;AN001;GHG
	   .ELSE						;AN001;GHG
	       GOTO		WELCOME_SCREEN2 		;AN001;GHG
	   .ENDIF						;AN000;
	.ENDIF							;AN000;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;  ������������������������������������Ŀ
;  �INTRO_SCREEN			�
;  �					�
;  ��������������������������������������
;
;  The INTRODUCTION screen is always presented.
;  The screen does not have help, F3 function or any variables.
;  Valid keys are ENTER and ESC.
;  ESC key will return control to the DOS command line.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INTRO_SCREEN:							;AN000;
	INIT_PQUEUE		PAN_INTRO			;AN000; initialize queue
	PREPARE_PANEL		PAN_HBAR			;AN000; prepare horizontal bar
	PREPARE_CHILDREN					;AN000; prepare child panels
	DISPLAY_PANEL						;AN000; display INTRODUCTION panel
								;
	GET_FUNCTION		FK_ENT_ESC_F3			;AN000; get user entered function
	.IF < N_USER_FUNC eq E_F3 >				;AN027;SEH  Added to prevent going to Welcome Screen
	    GOTO	     EXIT_DOS				;AN027;SEH     when F3 hit
								; (ENTER or ESC)
	.ELSEIF < N_USER_FUNC eq E_ENTER >			;AN000; if user entered ENTER key
	   GOTO 		WORKSPACE_SCREEN		;AN000;    go to next screen
	.ELSE							;AN000; else
	   GOTO 		WELCOME_SCREEN2 		;AN001;GHG;    exit to DOS command line
	.ENDIF							;AN000;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;	ROUTINE TO SCAN SELECT.TMP FILE
;
;	Broken down into a subroutine for code savings...
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
		PUBLIC	SCAN_INFO_CALL		;AN000;
SCAN_INFO_CALL	PROC	NEAR					;AN000;
	SCAN_INFO_FILE	 F_SHELL, N_FORMAT_MODE,N_DISK1_MODE,I_DESTINATION,S_INSTALL_PATH,S_SELECT_TMP,P_STR120_1,M_STR120_1
		;;;F_SHELL - shell installation flag
		;;;N_FORMAT_MODE - partition & format option	:
		;;;    new(select),new(user),used(user) 	;
		;;;N_DISK1_MODE - 1st disk status - new or used ;
		;;;I_DESTINATION - destination on c:   disk option
		;;;S_INSTALL_PATH - DOS install path		;
		;;;S_SELECT_TMP -  file for FDISK parameters	;
								;
	       .IF < N_SELECT_MODE eq E_SELECT_INV >		;AN000; if SELECT mode not MENU or FDISK
		  DISPLAY_MESSAGE	6			;AN000;
		  GOTO			EXIT_DOS_CONT		;AN000;
	       .ENDIF						;AN000;    EXIT
								;
	       .IF < N_SELECT_MODE eq E_SELECT_FDISK > and	;AN000; if SELECT mode is FDISK
	       .IF < N_FORMAT_MODE eq E_SELECT_INV > or 	;AN000; and format and disk status
	       .IF < N_DISK1_MODE eq E_SELECT_INV >		;AN000; not available from SELECT.TMP
		  DISPLAY_MESSAGE	6			;AN000;
		  GOTO			EXIT_DOS_CONT		;AN000;
	       .ENDIF						;AN000;     EXIT
	       RET						;AN000;
SCAN_INFO_CALL	ENDP						;AN000;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SELECT	ENDS							;AN000;
	END							;AN000;