summaryrefslogtreecommitdiff
path: root/v4.0/src/SELECT/SELECT5A.ASM
blob: 1a7d29eabdb3c343373ba1fef26042c689b5dc37 (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
PAGE 55,132							;AN000;
NAME	SELECT							;AN000;
TITLE	SELECT - DOS - SELECT.EXE				;AN000;
SUBTTL	SELECT5A.asm						;AN000;
.ALPHA								;AN000;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;	SELECT5A.ASM : Copyright 1988 Microsoft
;
;	DATE:	 August 8/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
;
;  Module contains code for :
;	- Date/Time screen
;
;	CHANGE HISTORY:
;
;		;AN002;  for DCR225
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DATA	SEGMENT BYTE PUBLIC 'DATA'                              ;AN000;
	EXTRN	SEL_FLG:BYTE					;AN000;
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;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SELECT	SEGMENT PARA PUBLIC 'SELECT'                            ;AN000;segment for far routine
	ASSUME	CS:SELECT,DS:DATA				;AN000;
								;
	INCLUDE CASEXTRN.INC					;AN000;
								;
	EXTRN	CREATE_AUTOEXEC_BAT:NEAR			;AN000;
	EXTRN	CREATE_CONFIG_SYS:NEAR				;AN000;
	EXTRN	CREATE_SHELL_BAT:NEAR				;AN000;DT
	EXTRN	SCAN_INFO_CALL:NEAR				;AN000;DT
								;
	PUBLIC	DATE_TIME_SCREEN				;AN000;
	EXTRN	PROCESS_ESC_F3:near				;AN000;
	EXTRN	FORMAT_DISK_SCREEN:near 			;AN000;
	EXTRN	EXIT_DOS:near					;AN000;
	EXTRN	INSTALL_ERROR:near				;AN000;
	EXTRN	EXIT_SELECT:NEAR				;AN000;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;  ������������������������������������Ŀ
;  �DATE_TIME_SCREEN			�
;  �					�
;  ��������������������������������������
;
;  The INSTALL DATE and TIME SCREEN is presented if the active date is 1/1/80.
;  If the user is installing to drive C: , this is the first screen presented
;  after the system is reboot due to the execution of FDISK.
;  The user cannot go back to the previous screen or terminate the
;  install process from this screen.
;  If the user did not change the date or time presented on the screen,
;  no action is taken.
;  Valid keys are ENTER, F1, and numeric characters.
;  If installing from 360KB diskettes, must prompt for INSTALL diskette
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DATE_TIME_SCREEN:						;AN000;
								;
	.IF < N_SELECT_MODE eq E_SELECT_FDISK > and		;AN000;DT
	.IF < N_DISKETTE_A eq E_DISKETTE_360 >			;AN000;DT
	   CALL 		CURSOROFF			;AN082;SEH
	   INSERT_DISK		SUB_INSTALL_COPY, S_SELECT_TMP	;AN000;JW
	   CALL 		SCAN_INFO_CALL			;AN000;DT
	.ENDIF							;AN000;DT
								;
	INIT_VAR		STACK_INDEX, 0			;AN000; clear SELECT STACK
								;
	CHECK_WRITE_PROTECT	DRIVE_A, N_RETCODE		;AC000;JW
	.IF c							;AN000;
	   GOTO 		INSTALL_ERROR			;AN000;
	.ELSE							;AN000;
	   OR  SEL_FLG,INSTALLRW				;AN000; indicate INSTALL diskette is R/W
	.ENDIF							;AN000;
								;
	GET_DATE		N_YEAR, N_MONTH, N_DAY		;AN000; get system date
	.IF c							;AN000; if system date is 1/1/1980
	   GOTO 		FORMAT_DISK_SCREEN		;AN000;    goto next screen (FORMAT_DISK)
	.ENDIF							;AN000;
								;
	GET_TIME		N_HOUR, N_MINUTE, N_SECOND	;AN000; get system time
								;
	COPY_WORD		N_WORD_1, N_YEAR		;AN000; copy year to temp var
	COPY_WORD		N_WORD_2, N_MONTH		;AN000; copy month to temp var
	COPY_WORD		N_WORD_3, N_DAY 		;AN000; copy day to temp var
	COPY_WORD		N_WORD_4, N_HOUR		;AN000; copy hour to temp var
	COPY_WORD		N_WORD_5, N_MINUTE		;AN000; copy minute to temp var
	COPY_WORD		N_WORD_6, N_SECOND		;AN000; copy second to temp var
								;
	INIT_PQUEUE		PAN_DATE_TIME			;AN000; initialize queue
	PREPARE_PANEL		PAN_HBAR			;AN000; prepare horizontal bar
	PREPARE_CHILDREN					;AN000; prepare child panels
	INIT_NUMERIC		NUM_YEAR,N_WORD_1,MAX_YEAR,S_STR120_1 ;AN000; display current year
	INIT_NUMERIC		NUM_MONTH,N_WORD_2,MAX_MONTH,S_STR120_2     ;AN000; display current month
	INIT_NUMERIC		NUM_DAY,N_WORD_3,MAX_DAY,S_STR120_3   ;AN000; display current day
	INIT_NUMERIC		NUM_HOUR,N_WORD_4,MAX_HOUR,SC_LINE    ;AN000; display current hour
	INIT_NUMERIC		NUM_MINUTE,N_WORD_5,MAX_MINUTE,S_MODE_PARM  ;AN000; display current minute
	INIT_NUMERIC		NUM_SECOND,N_WORD_6,MAX_SECOND,S_CP_DRIVER  ;AN000; display current second
	CALL			CURSORON			;AN082;SEH
	DISPLAY_PANEL						;AN000;
								;
	INIT_VAR		N_COUNTER, 1			;AN000; set counter = 1
								;
DATE_TIME_LOOP: 						;AN000;
								;
	.REPEAT 						;AN000; repeat code block
								;
	   .SELECT						;AN000;
								;
	   .WHEN < N_COUNTER eq 1 >				;AN000;    counter = 1
	      GET_NUMERIC	NUM_YEAR,N_WORD_1,MIN_YEAR,MAX_YEAR,FK_DATE,S_STR120_1	      ;AN000; get new year value
	      COPY_WORD 	N_WORD_1, N_USER_NUMERIC	;AN000;    save new year value
								;
	   .WHEN < N_COUNTER eq 2 >				;AN000;    counter = 2
	      GET_NUMERIC	NUM_MONTH,N_WORD_2,MIN_MONTH,MAX_MONTH,FK_DATE,S_STR120_2     ;AN000; get new month value
	      COPY_WORD 	N_WORD_2, N_USER_NUMERIC	;AN000;    save new month value
								;
	   .WHEN < N_COUNTER eq 3 >				;AN000;    counter = 3
	      GET_NUMERIC	NUM_DAY,N_WORD_3,MIN_DAY,MAX_DAY,FK_DATE,S_STR120_3	      ;AN000; get new day value
	      COPY_WORD 	N_WORD_3, N_USER_NUMERIC	;AN000;    save new day value
								;
	   .WHEN < N_COUNTER eq 4 >				;AN000;    counter = 4
	      GET_NUMERIC	NUM_HOUR,N_WORD_4,MIN_HOUR,MAX_HOUR,FK_DATE,SC_LINE	      ;AN000; get new hour value
	      COPY_WORD 	N_WORD_4, N_USER_NUMERIC	;AN000;    save new hour value
								;
	   .WHEN < N_COUNTER eq 5 >				;AN000;    counter = 5
	      GET_NUMERIC	NUM_MINUTE,N_WORD_5,MIN_MINUTE,MAX_MINUTE,FK_DATE,S_MODE_PARM ;AN000; get new minute value
	      COPY_WORD 	N_WORD_5, N_USER_NUMERIC	;AN000;    save new minute value
								;
	   .OTHERWISE						;AN000;    counter = 6
	      GET_NUMERIC	NUM_SECOND,N_WORD_6,MIN_SECOND,MAX_SECOND,FK_DATE,S_CP_DRIVER ;AN000; get new second value
	      COPY_WORD 	N_WORD_6, N_USER_NUMERIC	;AN000;    save new second value
								;
	   .ENDSELECT						;AN000;
								;
	   INC_VAR		N_COUNTER			;AN000;    inc counter
								;
	   .IF < N_COUNTER a 6 >				;AN000;    if counter > 6
	      INIT_VAR		N_COUNTER, 1			;AN000;       set counter = 1
	   .ENDIF						;AN000;
								;
	.UNTIL < N_USER_FUNC eq E_ENTER > near			;AN000; break loop if user entered ENTER
								;
	CHECK_DATE_CHANGE	N_WORD_1,N_WORD_2,N_WORD_3,N_YEAR,N_MONTH,N_DAY     ;AN000; check if new date is different
	.IF c							;AN000; if new date different
	   SET_DATE		N_WORD_1, N_WORD_2, N_WORD_3	;AN000;    set new system date
	   .IF c						;AN000;    if new date invalid
	      INIT_VAR		N_COUNTER, 3			;AN000;       set counter = 3
	      GOTO		DATE_TIME_LOOP			;AN000;       goto get day again
	   .ENDIF						;AN000;
	.ENDIF							;AN000;
								;
	CHECK_TIME_CHANGE	N_WORD_4,N_WORD_5,N_WORD_6,N_HOUR,N_MINUTE,N_SECOND ;AN000; check if new time is different
	.IF c							;AN000; if new time is different
	   SET_TIME		N_WORD_4, N_WORD_5, N_WORD_6	;AN000;    set new system time
	.ENDIF							;AN000;
								;
	GOTO			FORMAT_DISK_SCREEN		;AN000; goto next screen (FORMAT_DISK)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SELECT	ENDS							;AN000;
	END							;AN000;