M	SET	          0
C	SET	          0
F	SET	          0
;type
;byte = 0..255;
;$string255 = string 255;
;
;var
;answer:char;
;procedure move_cursor(x,y:byte);external;
	EXTD	L156,MOVE_CUR
;procedure keyin (var cix:char);external;
	EXTD	L157,KEYIN   
;FUNCTION QUERY(X,Y:BYTE;MESSAGE:$STRING255;BELL:BOOLEAN):BOOLEAN;
;
;{function to move the cursor to position x,y, display an interrogative
; message, ring a bell to alert the operator, if desired, and then accept
; either an upper or lower case "y" or "n", in answer to the message.
; This function returns a boolean TRUE if the answer to the question is
; affirmative (yes).}
;
;
;BEGIN
L158
	NAME QUERY
	ENTRY QUERY
QUERY:
	ENTR	D,2,0
;	REPEAT
	STMT	D,1
;	MOVE_CURSOR(X,Y);
L160
	STMT	D,2
	MOV	H,A
	LXI	B,266
	PUSH	IX
	DADX	B
	MOV	L,0(IX)
	POP	IX
	MOV	H,L
	PUSH	H
	INX	S
	MOV	H,A
	RCHK	H,0,255
	MOV	H,A
	LXI	B,265
	PUSH	IX
	DADX	B
	MOV	L,0(IX)
	POP	IX
	MOV	H,L
	PUSH	H
	INX	S
	MOV	H,A
	RCHK	H,0,255
	CALL	L156
;	IF BELL = TRUE THEN WRITE(CHR(7),MESSAGE) ELSE WRITE(MESSAGE);
	STMT	D,3
	MOV	H,A
	MOV	L,8(IX)
	MOV	A,L
	CMPI	D,1
	MOV	A,H
	JNZ	L174
	STMT	D,4
	LXI	H,7
	STMT	M,4
	PUSH	H
	LXI	H,769
	XTHL
	LXI	B,1
	PUSH	B
	MOV	H,L
	PUSH	H
	INX	S
	LXI	H,1793
	PUSH	H
	LXI	B,256
	PUSH	B
	LXI	H,-256
	DADD	S
	SPHL
	XCHG
	PUSH	IX
	POP	H
	LXI	B,9
	DADD	B
	LXI	B,256
	LDIR
	LXI	B,265
	CALL	L111
	JMP	L199
L174
	STMT	D,5
	LXI	H,1793
	PUSH	H
	LXI	B,256
	PUSH	B
	LXI	H,-256
	DADD	S
	SPHL
	XCHG
	PUSH	IX
	POP	H
	LXI	B,9
	DADD	B
	LXI	B,256
	LDIR
	LXI	B,260
	CALL	L111
L199
;	KEYIN(ANSWER);
	STMT	D,6
	PUSH	IY
	CALL	L157
;	WRITE(ANSWER);
	STMT	D,7
	LXI	H,769
	PUSH	H
	LXI	B,1
	PUSH	B
	MOV	H,A
	MOV	L,0(IY)
	MOV	H,L
	PUSH	H
	INX	S
	LXI	B,5
	CALL	L111
;	UNTIL ANSWER IN ['y','n','Y','N'];
	STMT	D,8
	CTRL	M,8
	MOV	H,A
	MOV	L,0(IY)
	PUSH	H
	CSET	D,0
	LXI	D,121
	CSET	D,1
	LXI	D,110
	CSET	D,1
	LXI	D,89
	CSET	D,1
	LXI	D,78
	CSET	D,1
	MEMB
	JNC	L160
;	QUERY:= ( (ANSWER = 'Y') or (ANSWER = 'y') );
	STMT	D,9
	MOV	H,A
	MOV	L,0(IY)
	MOV	A,L
	CMPI	D,89
	MOV	A,H
	JZ	L256
	MOV	H,A
	MOV	L,0(IY)
	MOV	A,L
	CMPI	D,121
	MOV	A,H
	JRNZ	L251
L250
L252	EQU	L250
L255	EQU	L252
L256	EQU	L255
	INR	A
L251
	MOV	L,A
	XRA	A
	MOV	H,A
	RCHK	H,0,1
	MOV	2(IX),L
;END;
	STMT	D,10
	EXIT	D,259
