! yesno.tes - waits for either case y/n or Escape. Returns: 1 for y/Y (leaves y/Y in buffer) 0 for n/N (leaves n/N in buffer) -1 for Escape (buffer unchanged) ! !yesno.tec! [T ! save Q.reg T ! ETUT ! preserve contents of ET ! 8+4ET ! no-echo, lowcase ! < ! loop till y/Y, n/N or ! W ! refresh screen ! ^T@I%% ! get a char and insert it into the buffer ! -1A-^^y"E 1,@O!X! ' ! iif "y" go to X with completion code = 1 ! -1A-^^Y"E 1,@O!X! ' ! iif "Y" go to X with completion code = 1 ! -1A-^^n"E 0,@O!X! ' ! iif "n" go to X with completion code = 0 ! -1A-^^N"E 0,@O!X! ' ! iif "N" go to X with completion code = 0 ! -1A-27"E -1D -1,@O!X!'! iif delete it, goto X with cc = -1 ! -1D ! anything else, delete it ! 7^T ! beep it ! > ! try again ! !X! ! exit - come here with exit code ! +( ! push (+)exit code on expression stack ! QTET ! restore ET ! ]T ! restore Q register T ! 0) ! 0(+exit code) !