🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.sys.amiga.tech
Article #3329

How to do low-level console I/O?

#3329
From: Deven T. Corzine
Date: Fri, 13 Apr 1990 11:30
51 lines
3143 bytes
Another problem I had is regarding console input.  This isn't critical
for the async copier, but would be nice.  It would be more important
for some other programs I've wanted to write.  Basically, when the
program is run in a window, I want FULL control over that window.
Most importantly, I want to be able to do raw console I/O on a
character basis, not line oriented.  I would also like to be able to
play with the window menus, title bar, size, position, etc.

Now, I am aware you can send an ACTION_DISKINFO packet to the console
handler from a lock on "*" and get a pointer to the window in one of
the fields in the filled-in structure.  [by the way, can you just use
an Info() call on "*" instead of sending a packet manually?]  I saw
mention in some of Matt Dillon's code saying something about another
field containing the console device in the window...

What does this mean?  Is it a pointer to an IORequest?  Is it a copy
of the io_Device field from the IORequest?  Is it something else?  If
it is io_Device, is creating a new IORequest and initializing
io_Device from that field sufficient to send IORequests to the console
device open in that window?  Will it conflict with any pending
requests from CON:?  Does it matter that I'm using ConMan 1.3?

Would sending the escape sequence for RAW mode to * cause input to
revert to character at a time?  Would I be able to go into RAW mode
and keep it a simple character stream and not have to interpret
keycodes or filter out extraneous sequences and the like?  Still, I
would prefer to use Exec I/O to the console.device, I just don't want
to open a new window.

Is it legal to open a second console.device in the same window?  If I
do so, will it reliably get all input to that window, eating it before
the older console can see it?  Or will input go to either console
randomly?  And why do I keep asking so many questions?  :-)

Also, I seem to remember seeing somewhere that you could send some
specific packet (ACTION_INHIBIT?) to a CON: handler to let it switch
modes and act like a RAW: handler and back again.  This would be
acceptable, although a console device would be preferable.  Does
anyone know if this is possible, or how to do it?  I scoured the V1.1
AmigaDOS Manual, but was unable to find any information on this.  I am
left at a loss.

Basically, how do you DO this?  [It can be done; C-A's More V3.27
program does it...  perhaps it's disassembly time...]

Deven
-- 
Deven T. Corzine        Internet:  deven@rpi.edu, shadow@pawl.rpi.edu
Snail:  2151 12th St. Apt. 4, Troy, NY 12180   Phone:  (518) 274-0327
Bitnet:  deven@rpitsmts, userfxb6@rpitsmts     UUCP:  uunet!rpi!deven
Simple things should be simple and complex things should be possible.
Technical Details
Message-ID: <DEVEN.90Apr13073147@netserv2.rpi.edu>
Path: arc1-ca.pugleaf.net!utzoo!attcan!uunet!dino!ux1.cso.uiuc.edu!uwm.edu!rpi!netserv2!deven

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!attcan!uunet!dino!ux1.cso.uiuc.edu!uwm.edu!rpi!netserv2!deven
From: deven@rpi.edu (Deven T. Corzine)
Newsgroups: comp.sys.amiga.tech
Subject: How to do low-level console I/O?
Message-ID: <DEVEN.90Apr13073147@netserv2.rpi.edu>
Date: 13 Apr 90 11:30:49 GMT
Distribution: comp
Organization: Rensselaer Polytechnic Institute, Troy, NY
Lines: 51