By Deano

Life Beyond the Input$ command

Ever found that you are doing some routine that requires the user to enter some kind of string of characters and the input command does’nt seem to forfill your requirements. Then why not program your own input routine. This is one of mine I have used in various routines such as my own STOS Adventure Creator. It works better because it allows you to move anyway in the text and change it. Try it and see. Heres the routine.

10 key off : curs off : flash off : hide on : mode 1
15 windopen 1,0,0,80,25,1,4 : curs off
20 get palette (4) : wait vbl
25 dim PAGE$(1000)
30 fastcopy start(4),back : fastcopy back,logic 610 rem EDIT MODE
612 XW=8 : YW=1 : paper 1 : pen 0
613 locate XW,YW
614 while K$=""
615 K$=inkey$
616 wend
617 rem ~~~ CHECK CURSOR UP KEY
618 if asc(K$)=0 and scancode=72 and YW>1 then dec YW : locate XW,YW
619 rem ~~~ CHECK CURSOR DOWN KEY
620 if asc(K$)=0 and scancode=80 and YW<>21 then inc YW : locate XW,YW
621 rem ~~~ CHECK CURSOR LEFT KEY
622 if asc(K$)=0 and scancode=75 and XW>8 then dec XW : locate XW,YW
623 rem ~~~ CHECK CURSOR RIGHT KEY
624 if asc(K$)=0 and scancode=77 and XW<37 then inc XW : locate XW,YW
625 rem ~~~ CHECK RETURN KEY
626 if K$=chr$(13) then curs off : goto 636
627 rem ~~~ CHECK BACKSPACE KEY
628 if K$=chr$(8) and XW>8 then dec XW : locate XW,YW : print " "; : locate XW,YW
629 if K$=chr$(8) and XW=8 and YW>1 then dec YW : XW=35 : locate XW,YW : print " "; : locate XW,YW 632 rem ~~~ CHECK FOR KEYBOARD INPUT
633 if XW=35 and YW=21 then stop
634 if asc(K$)>31 and XW<37 and YW<21 then print K$; : inc XW
635 if asc(K$)>31 and XW=36 and YW<21 then XW=8 : inc YW
636 K$="" : goto 613

You can use this in your own programs if you wish.