	page 64,132
	title bat-ques -- Batch file Question Asker, sets errorlevel
.RADIX 10
;
;
;
;*****************************************************************
; INFO-IBMPC libarary contribution by H. Fischer - HFischer@eclb 12/83
; If you like it, do not send me $10 (but I will accept amounts
; with many more zeros if your generosity is excessive).
; Questions/problems to HFischer@eclb (213/902-5139).
;
; This program allows a batch file to ask the user a question
; and return a one-character response which is testable
; by the IF subcommand of bat files, via the errorlevel.
;
; You use the question asker per following example:
;
;   .
;   .  (your batch file to ask if guy wants to edit with
;   .       mince/emacs or ibm's editor)
;   .
;   echo off
;   bat-ques WHICH EDITOR, m OR e FOR MINCE (EMACS), i FOR IBM's? $
;   if errorlevel 110 goto badresp
;   if errorlevel 109 goto minceed
;   if errorlevel 106 goto badresp
;   if errorlevel 105 goto ibmed
;   if errorlevel 102 goto badresp
;   if errorlevel 101 goto minceed
;   :badresp
;   echo Your response was invalid. Sorry
;   goto endit
;   :minceed
;   if not exist mincomm.sum copy \bin\mince.swp mince.swp
;   mince %1
;   if not exist mincomm.sum del mince.swp
;   goto endit
;   :ibmed
;   profed %1
;   :endit
;   echo on
;
; Note that the question prompt follows the bat-ques command and
; must end with a dollar sign.  The ascii value of the response is
; returned as the error level.  Since error level tests are always
; greater than or equal tests, you must check for highest value first
; and lowest value last.  Example above shows what you doto check for
; missing values.  Note example assumes lower case answer only for
; simplicity sake.
;
; Ascii values (e.g., A is 65, B is 66, a is 97) are found in back
; of your BASIC manual.  Only one character responses are accepted,
; and they are not followed by a carriage return.
;
; Extended ascii codes (function and alt keys) should work as per
; page G-6 of your BASIC manual;  the first call to bat-ques will
; return a zero and the next call (presumably "bat-ques $" without
; another prompt) will return the number shown on page G-7.
;
; To build this program:
;	1) asm bat-ques
;	2) link bat-ques
;	3) exe2bin bat-ques.exe \bin\bat-ques.com (name your path dir!)
;	4) del bat-ques.exe
;
; have fun
;********************************************************************
code	segment	para
	assume	cs:code
	org 	82h
PROMPT	label	byte		; here DOS places the prompt string
	org 	100h
KEY	proc	far
START:
	mov	ax,cs		; make this mess addressable via ds
	mov	ds,ax
	assume	ds:code
	mov	dx,offset PROMPT
	mov	ah,9
	int	21h		; display the prompt
	mov	ah,1
	int	21h             ; get the input into AL
	mov	saveit,al
	mov	dx,offset newlin  ; move display to new line
	mov	ah,9
	int	21h
	mov	al,saveit
	mov	ah,4ch		; return the errorlevel already in AL
	int	21h
newlin: db	10,13,'$'	; give user a new line before quitting
saveit	db	0
KEY endp
code ends
end start
