summaryrefslogtreecommitdiff
path: root/v4.0/src/SELECT/SELECT5A.ASM
diff options
context:
space:
mode:
authorGravatar Mark Zbikowski2024-04-25 21:24:10 +0100
committerGravatar Microsoft Open Source2024-04-25 22:32:27 +0000
commit2d04cacc5322951f187bb17e017c12920ac8ebe2 (patch)
tree80ee017efa878dfd5344b44249e6a241f2a7f6e2 /v4.0/src/SELECT/SELECT5A.ASM
parentMerge pull request #430 from jpbaltazar/typoptbr (diff)
downloadms-dos-main.tar.gz
ms-dos-main.tar.xz
ms-dos-main.zip
MZ is back!HEADmain
Diffstat (limited to 'v4.0/src/SELECT/SELECT5A.ASM')
-rw-r--r--v4.0/src/SELECT/SELECT5A.ASM186
1 files changed, 186 insertions, 0 deletions
diff --git a/v4.0/src/SELECT/SELECT5A.ASM b/v4.0/src/SELECT/SELECT5A.ASM
new file mode 100644
index 0000000..1a7d29e
--- /dev/null
+++ b/v4.0/src/SELECT/SELECT5A.ASM
@@ -0,0 +1,186 @@
1
2
3PAGE 55,132 ;AN000;
4NAME SELECT ;AN000;
5TITLE SELECT - DOS - SELECT.EXE ;AN000;
6SUBTTL SELECT5A.asm ;AN000;
7.ALPHA ;AN000;
8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
9;
10; SELECT5A.ASM : Copyright 1988 Microsoft
11;
12; DATE: August 8/87
13;
14; COMMENTS: Assemble with MASM 3.0 (using the /A option)
15;
16; Panel flow is defined in the following files:
17;
18; � SELECT1.ASM
19; � SELECT2.ASM
20; � SELECT3.ASM
21; � SELECT4.ASM
22; � SELECT5.ASM
23; � SELECT6.ASM
24;
25; Module contains code for :
26; - Date/Time screen
27;
28; CHANGE HISTORY:
29;
30; ;AN002; for DCR225
31;
32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
33DATA SEGMENT BYTE PUBLIC 'DATA' ;AN000;
34 EXTRN SEL_FLG:BYTE ;AN000;
35DATA ENDS ;AN000;
36 ;
37.XLIST ;AN000;
38 INCLUDE PANEL.MAC ;AN000;
39 INCLUDE SELECT.INC ;AN000;
40 INCLUDE CASTRUC.INC ;AN000;
41 INCLUDE STRUC.INC ;AN000;
42 INCLUDE MACROS.INC ;AN000;
43 INCLUDE EXT.INC ;AN000;
44 INCLUDE VARSTRUC.INC ;AN000;
45 INCLUDE ROUT_EXT.INC ;AN000;
46 INCLUDE PAN-LIST.INC ;AN000;
47.LIST ;AN000;
48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
49SELECT SEGMENT PARA PUBLIC 'SELECT' ;AN000;segment for far routine
50 ASSUME CS:SELECT,DS:DATA ;AN000;
51 ;
52 INCLUDE CASEXTRN.INC ;AN000;
53 ;
54 EXTRN CREATE_AUTOEXEC_BAT:NEAR ;AN000;
55 EXTRN CREATE_CONFIG_SYS:NEAR ;AN000;
56 EXTRN CREATE_SHELL_BAT:NEAR ;AN000;DT
57 EXTRN SCAN_INFO_CALL:NEAR ;AN000;DT
58 ;
59 PUBLIC DATE_TIME_SCREEN ;AN000;
60 EXTRN PROCESS_ESC_F3:near ;AN000;
61 EXTRN FORMAT_DISK_SCREEN:near ;AN000;
62 EXTRN EXIT_DOS:near ;AN000;
63 EXTRN INSTALL_ERROR:near ;AN000;
64 EXTRN EXIT_SELECT:NEAR ;AN000;
65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
66;
67; ������������������������������������Ŀ
68; �DATE_TIME_SCREEN �
69; � �
70; ��������������������������������������
71;
72; The INSTALL DATE and TIME SCREEN is presented if the active date is 1/1/80.
73; If the user is installing to drive C: , this is the first screen presented
74; after the system is reboot due to the execution of FDISK.
75; The user cannot go back to the previous screen or terminate the
76; install process from this screen.
77; If the user did not change the date or time presented on the screen,
78; no action is taken.
79; Valid keys are ENTER, F1, and numeric characters.
80; If installing from 360KB diskettes, must prompt for INSTALL diskette
81;
82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
83DATE_TIME_SCREEN: ;AN000;
84 ;
85 .IF < N_SELECT_MODE eq E_SELECT_FDISK > and ;AN000;DT
86 .IF < N_DISKETTE_A eq E_DISKETTE_360 > ;AN000;DT
87 CALL CURSOROFF ;AN082;SEH
88 INSERT_DISK SUB_INSTALL_COPY, S_SELECT_TMP ;AN000;JW
89 CALL SCAN_INFO_CALL ;AN000;DT
90 .ENDIF ;AN000;DT
91 ;
92 INIT_VAR STACK_INDEX, 0 ;AN000; clear SELECT STACK
93 ;
94 CHECK_WRITE_PROTECT DRIVE_A, N_RETCODE ;AC000;JW
95 .IF c ;AN000;
96 GOTO INSTALL_ERROR ;AN000;
97 .ELSE ;AN000;
98 OR SEL_FLG,INSTALLRW ;AN000; indicate INSTALL diskette is R/W
99 .ENDIF ;AN000;
100 ;
101 GET_DATE N_YEAR, N_MONTH, N_DAY ;AN000; get system date
102 .IF c ;AN000; if system date is 1/1/1980
103 GOTO FORMAT_DISK_SCREEN ;AN000; goto next screen (FORMAT_DISK)
104 .ENDIF ;AN000;
105 ;
106 GET_TIME N_HOUR, N_MINUTE, N_SECOND ;AN000; get system time
107 ;
108 COPY_WORD N_WORD_1, N_YEAR ;AN000; copy year to temp var
109 COPY_WORD N_WORD_2, N_MONTH ;AN000; copy month to temp var
110 COPY_WORD N_WORD_3, N_DAY ;AN000; copy day to temp var
111 COPY_WORD N_WORD_4, N_HOUR ;AN000; copy hour to temp var
112 COPY_WORD N_WORD_5, N_MINUTE ;AN000; copy minute to temp var
113 COPY_WORD N_WORD_6, N_SECOND ;AN000; copy second to temp var
114 ;
115 INIT_PQUEUE PAN_DATE_TIME ;AN000; initialize queue
116 PREPARE_PANEL PAN_HBAR ;AN000; prepare horizontal bar
117 PREPARE_CHILDREN ;AN000; prepare child panels
118 INIT_NUMERIC NUM_YEAR,N_WORD_1,MAX_YEAR,S_STR120_1 ;AN000; display current year
119 INIT_NUMERIC NUM_MONTH,N_WORD_2,MAX_MONTH,S_STR120_2 ;AN000; display current month
120 INIT_NUMERIC NUM_DAY,N_WORD_3,MAX_DAY,S_STR120_3 ;AN000; display current day
121 INIT_NUMERIC NUM_HOUR,N_WORD_4,MAX_HOUR,SC_LINE ;AN000; display current hour
122 INIT_NUMERIC NUM_MINUTE,N_WORD_5,MAX_MINUTE,S_MODE_PARM ;AN000; display current minute
123 INIT_NUMERIC NUM_SECOND,N_WORD_6,MAX_SECOND,S_CP_DRIVER ;AN000; display current second
124 CALL CURSORON ;AN082;SEH
125 DISPLAY_PANEL ;AN000;
126 ;
127 INIT_VAR N_COUNTER, 1 ;AN000; set counter = 1
128 ;
129DATE_TIME_LOOP: ;AN000;
130 ;
131 .REPEAT ;AN000; repeat code block
132 ;
133 .SELECT ;AN000;
134 ;
135 .WHEN < N_COUNTER eq 1 > ;AN000; counter = 1
136 GET_NUMERIC NUM_YEAR,N_WORD_1,MIN_YEAR,MAX_YEAR,FK_DATE,S_STR120_1 ;AN000; get new year value
137 COPY_WORD N_WORD_1, N_USER_NUMERIC ;AN000; save new year value
138 ;
139 .WHEN < N_COUNTER eq 2 > ;AN000; counter = 2
140 GET_NUMERIC NUM_MONTH,N_WORD_2,MIN_MONTH,MAX_MONTH,FK_DATE,S_STR120_2 ;AN000; get new month value
141 COPY_WORD N_WORD_2, N_USER_NUMERIC ;AN000; save new month value
142 ;
143 .WHEN < N_COUNTER eq 3 > ;AN000; counter = 3
144 GET_NUMERIC NUM_DAY,N_WORD_3,MIN_DAY,MAX_DAY,FK_DATE,S_STR120_3 ;AN000; get new day value
145 COPY_WORD N_WORD_3, N_USER_NUMERIC ;AN000; save new day value
146 ;
147 .WHEN < N_COUNTER eq 4 > ;AN000; counter = 4
148 GET_NUMERIC NUM_HOUR,N_WORD_4,MIN_HOUR,MAX_HOUR,FK_DATE,SC_LINE ;AN000; get new hour value
149 COPY_WORD N_WORD_4, N_USER_NUMERIC ;AN000; save new hour value
150 ;
151 .WHEN < N_COUNTER eq 5 > ;AN000; counter = 5
152 GET_NUMERIC NUM_MINUTE,N_WORD_5,MIN_MINUTE,MAX_MINUTE,FK_DATE,S_MODE_PARM ;AN000; get new minute value
153 COPY_WORD N_WORD_5, N_USER_NUMERIC ;AN000; save new minute value
154 ;
155 .OTHERWISE ;AN000; counter = 6
156 GET_NUMERIC NUM_SECOND,N_WORD_6,MIN_SECOND,MAX_SECOND,FK_DATE,S_CP_DRIVER ;AN000; get new second value
157 COPY_WORD N_WORD_6, N_USER_NUMERIC ;AN000; save new second value
158 ;
159 .ENDSELECT ;AN000;
160 ;
161 INC_VAR N_COUNTER ;AN000; inc counter
162 ;
163 .IF < N_COUNTER a 6 > ;AN000; if counter > 6
164 INIT_VAR N_COUNTER, 1 ;AN000; set counter = 1
165 .ENDIF ;AN000;
166 ;
167 .UNTIL < N_USER_FUNC eq E_ENTER > near ;AN000; break loop if user entered ENTER
168 ;
169 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
170 .IF c ;AN000; if new date different
171 SET_DATE N_WORD_1, N_WORD_2, N_WORD_3 ;AN000; set new system date
172 .IF c ;AN000; if new date invalid
173 INIT_VAR N_COUNTER, 3 ;AN000; set counter = 3
174 GOTO DATE_TIME_LOOP ;AN000; goto get day again
175 .ENDIF ;AN000;
176 .ENDIF ;AN000;
177 ;
178 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
179 .IF c ;AN000; if new time is different
180 SET_TIME N_WORD_4, N_WORD_5, N_WORD_6 ;AN000; set new system time
181 .ENDIF ;AN000;
182 ;
183 GOTO FORMAT_DISK_SCREEN ;AN000; goto next screen (FORMAT_DISK)
184;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
185SELECT ENDS ;AN000;
186 END ;AN000;