From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=BAYES_00,INVALID_DATE, MSGID_SHORT,REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!uunet!seas.gwu.edu!mfeldman From: mfeldman@seas.gwu.edu (Michael Feldman) Newsgroups: comp.lang.ada Subject: Re: Programming Question Message-ID: <2562@sparko.gwu.edu> Date: 18 Jan 91 03:24:47 GMT References: <27954d2b.64e9@petunia.CalPoly.EDU> Reply-To: mfeldman@seas.gwu.edu () Distribution: na Organization: The George Washington University, Washington D.C. List-Id: In article <27954d2b.64e9@petunia.CalPoly.EDU> ssenkere@polyslo.CalPoly.EDU () writes: > >Is there a way to access the cursor keys in ADA. Let me re-phrase that. >Of course there IS a way... but with the standard packages provided... can >it be easily done. Is there something similiar to the PUT(ascii.bs); for >the backspace key....?? There's nothing standard. Text_IO doesn't really provide this kind of stuff. If you are on a PC running Meridian Ada, say, I think they may have a package that does it. Have a look at their package "tty." > >Also... Is there any commands in the standard packages to place the cursor >at a specific spot on the screen? Like playing the cursor at the 10th >column, 10th row and then do a PUT at that spot. It is important not to >delete anything on the line previous to this 10th spot as well. (which is >why I ask about maybe the cursors being accessable) This is quite easy to do using ASCII characters. Assuming you have a VT100- compatible terminal (a PC with ANSI.SYS installed in CONFIG.SYS will do the same thing), here is a package to handle this. You can make whatever changes you need to make. Output is much easier than input! > By the way - getting a _single character_ from the keyboard is not part of Text_IO, which usually buffers input waiting for a CR. This has been discussed often on this group. Ada9x will, I presume, try to find a fix for this. ---- cut here for code ---- package VT100 is ---------------------------------------------------------- -- Procedures for drawing pictures of the solution on VDU. -- ClearScreen and SetCursorAt are device-specific ---------------------------------------------------------- SCREEN_DEPTH : constant INTEGER := 24; SCREEN_WIDTH : constant INTEGER := 80; subtype DEPTH is INTEGER range 1..SCREEN_DEPTH; subtype WIDTH is INTEGER range 1..SCREEN_WIDTH; procedure ClearScreen; procedure SetCursorAt( A: WIDTH; D : DEPTH); end VT100; with TEXT_IO; package body VT100 is package My_Int_IO is new Text_IO.Integer_IO(Integer); ---------------------------------------------------------- -- Procedures for drawing pictures on VT100 -- ClearScreen and SetCursorAt are terminal-specific ---------------------------------------------------------- procedure ClearScreen is begin Text_IO.PUT( ASCII.ESC & "[2J" ); end ClearScreen; procedure SetCursorAt(A: WIDTH; D : DEPTH) is begin Text_IO.NEW_LINE; -- the NEW_LINE clears the output buffer; most systems need this Text_IO.PUT( ASCII.ESC & "[" ); My_Int_IO.PUT( D, 1 ); Text_IO.PUT( ';' ); My_Int_IO.PUT( A, 1 ); Text_IO.PUT( 'f' ); end SetCursorAt; end VT100;