TIP: Click on subject to list as thread! ANSI
echo: os2prog
to: David Noon
from: Murray Lesser
date: 1995-12-15 07:54:36
subject: Pl/i Query

Excerpted from message dated 12-10-95, David Noon to Murray Lesser:

DN>BTW, how is your multi-threaded test program coming along? Have you
  >managed to get it to read a 'single' keystroke yet?

Hi Dave--

    No.  Although I can get my equivalent _getch routine to wait for the
keystroke, it still won't tell me what key was stroked.  A knowledgeable
friend told me that I was having thunking problems, and suggested a
couple of things to try.  Eliminating BYADDR as an attribute of a
pointer variable was wrong; running the test case produced an address
exception and died.  The only reason I could tell that using the
SEGMENTED attribute was the right thing to do is that I found the part
of the "Language Reference" manual that told when thunking to 16-bit
code, any BYADDR pointer must also be SEGMENTED; making that change had
no effect on the performance of the test case!

    But, I think he was absolutely right about it being a thunking
problem.  Just to complicate matters, I inserted the part of my "_getch"
that worked into my multitasking test case, compiled and linked it.  No
compile errors, no link errors.  Then I ran it.  Disaster!  The
background beeping continued until I pressed a key, just as it should.
Then I got death message "IBM0951I ONCODE=3501 A system error occurred
in PL/I multithreading support for the DETACH statement."  The "Messages
and Codes" manual added the information that "The ATTACH statement with
the THREAD option must be used to give a tasking variable a starting
value."  Now, I hadn't changed the ATTACH statement with my addition, so
something in the "_getch" code must have caused the DETACH statement to
get detached from its ATTACH!

    I guess I need to RTFM the foot-long shelf of PL/I manuals a little
more, and run a few more experiments, before I consult my friend again.
I think I'll try a package, and put all the KBD API variables in static
storage.  If this doesn't work, I'll try compiling for tiled memory.  As
a last resort, I suppose I could learn a simple language; there is a
demo of an OS/2 Pascal compiler in DevCon 9 (honest, Carolyn, I'm only
kidding!).

    Regards,

          --Murray

___
 * MR/2 2.25 #120 * If you are not confused, you don't understand the situation
                                            
---
* Origin: 2" x 4" bbs - a basic board - (914) 271-9407 (1:2625/108)
SEEN-BY: 270/101 620/243 711/401 409 410 413 430 807 808 809 934 955 712/407
SEEN-BY: 712/515 517 628 713/888 800/1 7877/2809
@PATH: 2625/108 1 2619/211 3615/50 396/1 270/101 712/515 711/808 809 934

SOURCE: echomail via fidonet.ozzmosis.com

Email questions or comments to sysop@ipingthereforeiam.com
All parts of this website painstakingly hand-crafted in the U.S.A.!
IPTIA BBS/MUD/Terminal/Game Server List, © 2025 IPTIA Consulting™.