* QueryAny v2.0 - make decisions from within scripts
* by  Mark W. Smith
*
*            © 1987 Smithware
*             Cincinnati, OH
* ------------------------------------------------------------------------------
* PROGRAM REVISIONS:
*
* v1.0 Lattice C - 15000+ bytes
* v1.1 Lattice C - 15000+ bytes
* v1.2 Aztec C   - 5244 bytes
* v2.0 Assembly  - 352 bytes
*
* ------------------------------------------------------------------------------
*  Version 1.0 would respond as follows:
*
*  1> QueryAny "Zing!"
*  Do you wish to install 'Zing!' (y/n) ?
*  1>
* ------------------------------------------------------------------------------
*  Version 1.1 now allows you to phrase it yourself:
*
*  1> QueryAny "Do you wish to install 'Zing!'"
*  Do you wish to install 'Zing!' (y/n) ? y
*  1>
* ------------------------------------------------------------------------------
*  Version 1.2 converted to Manx Aztec C.
* ------------------------------------------------------------------------------
*  Version 2.0 now in assembly, with "" delimeters removed:
*
*  1> QueryAny Do you wish to install 'Zing!'
*  Do you wish to install 'Zing!' (y/n) ? y
*  1>
* ------------------------------------------------------------------------------
* Included in this arc is an example of usage within the Startup-Sequence.
* I have tried to make this program as generic as possible, so the user has
* complete control over it, but kept the ' (y/n) ? ' at the end of the arg.
* ------------------------------------------------------------------------------



_AbsExecBase equ 4
_LVOOpenLibrary equ -$228

_LVOInput equ -$36
_LVOOutput equ -$3c

_LVORead equ -$2a
_LVOWrite equ -$30



* Read and Write MACROS

WriteFile macro            ;File, String, Len
   move.l   \1,d1
   move.l   \2,d2
   move.l   \3,d3
   jsr   _LVOWrite(a6)
   endm

ReadFile macro            ;File, Buffer, Len
   move.l   \1,d1
   move.l   \2,d2
   move.l   \3,d3
   jsr   _LVORead(a6)
   endm



* Save cmd line arg pointers

   movem.l   a0/d0,-(sp)



* Open DOS library

   movea.l  _AbsExecBase,a6
   movea.l  #DOS_Name,a1
   clr.l   d0
   jsr   _LVOOpenLibrary(a6)
   movea.l  d0,a6
   tst.l   d0
   bne.s   Continue      ;branch if arg exists
   movem.l   (sp)+,a0/d0      ;otherwise, restore stack & quit
   clr.l   d0
   bra.s   Quit

Continue:
   jsr   _LVOInput(a6)      ;get stdin
   move.l   d0,StdIn
   beq.s   Quit

   jsr   _LVOOutput(a6)      ;get stdout
   move.l   d0,StdOut
   beq.s   Quit

   movem.l   (sp)+,a0/d0      ;pop args from stack
   subq.l   #1,d0         ;remove lf from cmd line arg
   WriteFile   StdOut,a0,d0
   WriteFile   StdOut,#Prompt,#Prompt_Len
   ReadFile   StdIn,#Response,#2
   move.b      Response,d0
   cmpi.b      #'Y',d0
   beq.s    No_Warning
   cmpi.b      #'y',d0
   beq.s    No_Warning
   move.l      #5,d0
   bra.s    Quit

No_Warning:
   clr.l   d0

Quit:
   rts




   SECTION   data,DATA

DOS_Name:
   dc.b   'dos.library',0

Prompt:
   dc.b   ' (y/n) ? '

Prompt_Len equ *-Prompt



   SECTION   mem,BSS

StdIn   ds.l   1         ;input file handle
StdOut   ds.l   1         ;output file handle

Response  ds.l  1


   end



* REMEMBER to support NORML !!
* the National Organization for the Reform of Marijuana Laws


