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
|
TITLE CHKPRMT - Procedures called from chkdsk which prompt ;an000;bgb
page ,132 ; ;an000;bgb
;an000;bgb
.xlist ;an000;bgb
include chkseg.inc ;an000;bgb
INCLUDE CHKCHNG.INC ;an000;bgb
INCLUDE SYSCALL.INC ;an000;bgb
INCLUDE CHKEQU.INC ;an000;bgb
INCLUDE CHKMACRO.INC ;an000;bgb
include pathmac.inc ;an000;bgb
.list ;an000;bgb
;an000;bgb
;an000;bgb
CONST SEGMENT PUBLIC PARA 'DATA' ;an000;bgb
EXTRN YES_BYTE:BYTE,NO_BYTE:BYTE ;an000;bgb
EXTRN YN_ARG:WORD ;an000;bgb
EXTRN HECODE:byte,CONBUF:byte ;an000;bgb
CONST ENDS ;an000;bgb
;an000;bgb
;an000;bgb
CODE SEGMENT PUBLIC PARA 'CODE' ;an000;bgb
ASSUME CS:DG,DS:DG,ES:DG,SS:DG ;an000;bgb
EXTRN PRINTF_CRLF:NEAR,DOCRLF:NEAR ;an000;bgb
;an000;bgb
pathlabl chkprmt ;an000;bgb
;***************************************************************************** ;an000;bgb
;Routine name:PromptYN ;an000;bgb
;***************************************************************************** ;an000;bgb
; ;an000;bgb
;description: Validate that input is valid Y/N for the country dependent info ;an000;bgb
; Return Z flag if 'Y' entered ;an000;bgb
;Called Procedures: Message (macro) ;an000;bgb
; User_String ;an000;bgb
; ;an000;bgb
;Change History: Created 5/10/87 MT ;an000;bgb
; ;an000;bgb
;Input: DX = offset to message ;an000;bgb
; ;an000;bgb
;Output: Z flag if 'Y' entered ;an000;bgb
; ;an000;bgb
;Psuedocode ;an000;bgb
;---------- ;an000;bgb
; ;an000;bgb
; DO ;an000;bgb
; Display prompt and input character ;an000;bgb
; IF got character ;an000;bgb
; Check for country dependent Y/N (INT 21h, AX=6523h Get Ext Country;an000;bgb)
; IF NC (Yes or No) ;an000;bgb
; Set Z if Yes, NZ if No ;an000;bgb
; ENDIF ;an000;bgb
; ELSE (nothing entered) ;an000;bgb
; stc ;an000;bgb
; ENDIF ;an000;bgb
; ENDDO NC ;an000;bgb
; ret ;an000;bgb
;***************************************************************************** ;an000;bgb
Procedure PromptYN ; ;an000;bgb;AN000;
push si ;Save reg ;an000;bgb
; $DO ; ;an000;bgb;AC000;
$$DO1:
Call Display_Interface ;Display the message ;an000;bgb;AC000;
MOV DX,OFFSET DG:CONBUF ;Point at input buffer ;an000;bgb
DOS_Call Std_Con_String_Input ;Get input ;an000;bgb;AC000;
CALL DOCRLF ; ;an000;bgb
MOV SI,OFFSET DG:CONBUF+2 ;Point at contents of buffer ;an000;bgb
CMP BYTE PTR [SI-1],0 ;Was there input? ;an000;bgb
; $IF NE ;Yep ;an000;bgb;AC000;
JE $$IF2
mov al,23h ;See if it is Y/N ;an000;bgb;AN000;
mov dl,[si] ;Get character ;an000;bgb;AN000;
DOS_Call GetExtCntry ;Get country info call ;an000;bgb;AN000;
; $IF NC ;Yes or No entered ;an000;bgb;AN000;
JC $$IF3
cmp ax,Yes_Found ;Set Z if Yes, NZ if No ;an000;bgb;AN000;
clc ;CY=0 means Y/N found ;an000;bgb
; $ENDIF ;CY set if neither ;an000;bgb;AN000;
$$IF3:
; $ELSE ;No characters input ;an000;bgb
JMP SHORT $$EN2
$$IF2:
stc ;CY means not Y/N ;an000;bgb
; $ENDIF ; ;an000;bgb
$$EN2:
; $ENDDO NC ; ;an000;bgb;AN000;
JC $$DO1
pop si ; ;an000;bgb
ret ; ;an000;bgb
PromptYN endp ; ;an000;bgb;AN000;
pathlabl chkprmt ;an000;bgb
;an000;bgb
CODE ENDS ;an000;bgb
END ;an000;bgb
|