

     |||||| |||||| ||  || |||||| ||||||
     ||     ||     ||| ||   ||   ||
     || ||| ||||   ||||||   ||   ||||               Your
     ||  || ||     || |||   ||   ||
     |||||| |||||| ||  || |||||| ||||||             GEnieLamp Computing

     ||    |||||| ||    || ||||||                   RoundTable
     ||    ||  || |||  ||| ||  ||
     ||    |||||| |||||||| ||||||                   RESOURCE!
     ||    ||  || || || || ||
     ||||| ||  || ||    || ||


                      ~ WELCOME TO GENIELAMP A2Pro! ~
                        """""""""""""""""""""""""""

                         ~ GEnieLamp A2Pro Turns 1 ~
                      ~ Underneath the Memory Manager ~ 
               ~ Handle Locking Blues ~ QuickDraw Coordinates ~
              ~ New Programming Digests ~ TEInsert Strangeness ~
            ~ Tour of Apple Assembly Line ~ Tour of 8/16 Central ~
                    ~ HOT NEWS, HOT FILES, HOT MESSAGES ~

////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
 GEnieLamp A2Pro   ~ A T/TalkNET OnLine Publication  ~  Vol.4, Issue 12
 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 Editor.......................................................Nate Trost
  Publisher.................................................John Peters
   Copy-Editor............................................Bruce Maples
 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\////////////////////////////////////
  ~ GEnieLamp IBM ~ GEnieLamp ST ~ GEnieLamp [PR] ~ GEnieLamp Windows ~
        ~ GEnieLamp A2Pro ~ GEnieLamp Macintosh ~ GEnieLamp TX2 ~
          ~ GEnieLamp A2 ~ LiveWire (ASCII) ~ GEnieLamp MacPRO ~
                 ~ Solid Windows ~ Config.sys ~ A2-Central ~
              ~ Member Of The Digital Publishing Association ~
  GE Mail: GENIELAMP  Internet: genielamp@genie.geis.com   FTP: sosi.com
 ////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

          >>> WHAT'S HAPPENING IN THE APPLE A2Pro ROUNDTABLE? <<<
          """""""""""""""""""""""""""""""""""""""""""""""""""""""
                             ~ February 1, 1994 ~

 FROM MY DESKTOP ......... [FRM]        HEY MISTER POSTMAN ...... [HEY]
  Notes From The Editor.                 Is That A Letter For Me?

 A2PRO ROUNDTABLE STAFF .. [DIR]        TOUR OF 8/16 CENTRAL .... [TOU]
  Directory of A2Pro Staff.              Great Programmers Magazine.

 LIBRARY BIT BONANZA ..... [LIB]        RTC WATCH ..............  [UDU]
  HOT Files You Can Download.            Tales from A2Pro RTCs.

 DEVELOPERS CORNER ....... [DEV]        OFF THE DEEP END ........ [OFF]
  News From Online Developers.           It's Top-10 off the high dive.

 TOUR OF AAL ............. [AAL]        LOG OFF ................. [LOG]
  Apple Assembly Lines Tour.             GEnieLamp Information.

[IDX]"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

READING GEnieLamp   GEnieLamp  has  incorporated  a  unique   indexing
"""""""""""""""""   system to help make  reading the  magazine easier.
To  utilize this system, load GEnieLamp into any ASCII  word processor
or text  editor.  In the index  you will find the  following  example:

                   HUMOR ONLINE ............ [HUM]
                    [*]GEnie Fun & Games.

   To read this  article, set your  find or search command to [HUM].  If
you want to scan all of the articles, search for [EOA].  [EOF] will take
you to  the last page,  whereas [IDX]  will bring you back to the index.

MESSAGE INFO   To make it easy for you to respond to messages re-printed
""""""""""""   here in GEnieLamp, you will find all the information you
need immediately following the message.  For example:

                    (SMITH, CAT6, TOP1, MSG:58/M530)
        _____________|   _____|__  _|O__    |____ |_____________
       |Name of sender   CATegory  TOPic    Msg.   Page number|

    In this  example, to  respond to  Smith's  message, log  on to  page
475 enter the bulletin board and set CAT 6. Enter your REPly in TOPic 1.

    A message number that is surrounded by brackets indicates  that this
message  is a "target" message and is  referring  to  a "chain"  of  two
or more  messages that are following the same topic.  For example: {58}.

ABOUT GEnie   GEnie's monthly fee is $8.95 which gives you up to four free
 """""""""""   hours of non-prime time access to most GEnie services, such 
as software downloads, bulletin boards, GE Mail, an Internet gateway,
multi-player games and chat lines.  GEnie's non-prime time connect rate at
2400 baud is $3.00.  To sign up for GEnie service, just follow these simple
steps.

1.  Set your communications software to half duplex (local echo) 8 bits, no
 parity and 1 stop bit, at 300, 1200 or 2400 baud.

2.  Call (with modem) 1-800-638-8369.  Upon connection type HHH.

3.  Wait for the U#= prompt.  Type:  XTX99014,DIGIPUB and hit RETURN.

4.  Have a major credit card ready, as the system will prompt you for your
 information.  If you need more information, call GEnie's Customer Service
 department at 1-800-638-9636.
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""



[EOA]
[FRM]//////////////////////////////
                 FROM MY DESKTOP /
/////////////////////////////////
Notes From My Desktop
"""""""""""""""""""""

     o TOP OF THE PAGE


                          >>> TOP OF THE PAGE <<<
                          """""""""""""""""""""""

HAPPY BIRTHDAY!   GEnieLamp A2Pro is one year old!  I hope everyone has 
"""""""""""""""   found the Lamp useful during the past year.  As we
journey into 1994 the Apple II programming community is still alive and 
well.  Over the past year we've seen powerful new tools (such as Object 
Oriented Programming), new compilers (like ORCA/Modula-2), and evolving 
environments (GNO/ME 2.0) that are making the Apple II easier and more 
fun to program than ever before!  

Hang onto your hats, there's going to be some _neat_ stuff in A2Pro
this year, and we'll be here to let you know all about it.

Enjoy the issue and happy hacking!

                                                 Nate Trost
                                               GEnieLamp A2Pro



[EOA]
[DIR]//////////////////////////////
          A2PRO ROUNDTABLE STAFF /
/////////////////////////////////
By Nate Trost
 [A2PRO.GELAMP]
                          ______________________________________________

                           APPLE II PROGRAMMERS & DEVELOPERS ROUNDTABLE
       _____  ______      ______________________________________________
      /_____|/______\
     /__/|__|  ___|__|         Head Sysop: Matt Deatherage  (M.DEATHERAGE)
    /__/_|__| /_____/          Assistants: Greg Da Costa    (A2PRO.GREG)
   /________|/__/       __ __ __           Todd P. Whitesel (A2PRO.TODDPW)
  /__/   |__|__/______ /_//_// /           Nathaniel Sloan  (A2PRO.HELP)
 /__/    |__|________//  / \/_/            Nate Trost       (A2PRO.GELAMP)

                                 [*][*][*]



[EOA]
[HEY]//////////////////////////////
              HEY MISTER POSTMAN /
/////////////////////////////////
Is That A Letter For Me?
""""""""""""""""""""""""
By Nate C. Trost
  [A2PRO.GELAMP]

     o   A2PRO ODDS AND ENDS

           o   BULLETIN BOARD HOT SPOTS

                 o   WHAT'S NEW?
           
                       o   PROGRAMMER'S TIPS

                             o   MESSAGE SPOTLIGHT



                      >>>BULLETIN BOARD HOT SPOTS <<<
                      """""""""""""""""""""""""""""""

 [*]  CAT4,   TOP2,   MSG{16}.....................C Questions and Answers
 [*]  CAT9,   TOP7,   MSG{89}................Applesoft BASIC help please!
 [*]  CAT11,  TOP15,  MSG{14}..................Macintosh FOND file format
 [*]  CAT15,  TOP2,   MSG{101}.............................Memory Manager
 [*]  CAT15,  TOP3,   MSG{30}......................Miscellaneous Tool Set
 [*]  CAT15,  TOP6,   MSG{79}...............................Event Manager
 [*]  CAT15,  TOP14,  MSG{93}..............................Window Manager
 [*]  CAT15,  TOP15,  MSG{52}................................Menu Manager
 [*]  CAT21,  TOP1,   MSG{3}........................Why Human Interfaces?
 [*]  CAT30,  TOP2,   MSG{70}.........................Using the GNO Shell
 


                        >>> A2PRO ODDS AND ENDS <<<
                        """""""""""""""""""""""""""

A2PRO 1993 IN REVIEW   We added a lot of stuff in A2Pro in the past year 
""""""""""""""""""""   to help Apple II programmers:

      o  Six RTCs each and every week with live programming help

      o  Apple Assembly Line and 8/16-Central Magazines available in 
         our library

      o  Apple II content from _develop_ in our library

      o  GEnieLamp A2Pro (which celebrates its first anniversary in 
         February)

      o  Library and bulletin board reorganization and simplification

      o  Release of GEM and CoPilot for the cost of downloads

      o  "A2Pro Blue Plate Special" to call attention to great new 
         downloads

      o  Formal RTCs with guests you want to see the most, like Mike
         Westerfield, Jawaid Bazyar, Josh Thompson and more

      o  Company support from those who help you make programs

      o  A2 University courses on Resources, Compression and the 
         List Manager

      o  Excellent beta-testing facilities for programs from AutoPilot to
         AppleWorks 4.0 and Spectrum

And, of course:

      o  Cut the fee for accessing A2Pro in half for most users

      What we want to know now is "What next?"  What do you want to see 
from us that we're not delivering on?  We smell the signs of boredom from
some of you, and we'd like to know what we could do to make things
better, easier or simpler.

      We're here to make programming the Apple II more simple, more fun 
and more interesting.  What should our next move be to help you feel that
way?

--Matt

         (M.DEATHERAGE [A2Pro Leader], CAT1, TOP3, MSG:95\3/M530)



                            >>> WHAT'S NEW? <<<
                            """""""""""""""""""

PROGRAMMING DIGESTS AVAILABLE   Weekly digests of messages from the 
"""""""""""""""""""""""""""""   Usenet newsgroups 
comp.sys.apple2.programmer (general Apple II programming discussion) and
comp.sys.apple2.gno (discussion about GNO) will now be uploaded to 
Library I in A2Pro.  You will be able to quickly locate them using the 
keyword "usenet" or "digest", or by my uploader name (B.TAO).  The 
messages are compatible with the GEnie CoPilot offline reader (but you 
will not be able to reply directly).  Please download the accompanying 
subject listing archive to see if there is anything of interest to you.

      I will highlight each week's most active subjects in the long 
description of the digest archives.  The subject listings themselves 
cover three additional newsgroups that are available in Library 15 of 
A2.  They are: comp.sys.apple2 (general Apple II chatter), 
comp.sys.apple2.comm (Apple II communications and networking) and 
comp.sys.apple2.marketplace (Apple II buy and sell).  If you have any 
questions regarding these digests, or suggestions about their format, 
please leave a message in Cat 10, Top 10 (Internet and the Apple II) in 
A2.

 #3781  CSAGNO.04.BXY
 #3782  CSAPROG.04.BXY
 #3783  CSA2SUBJ.04.BXY

      BTW, the numbering here starts at 4 to keep these digests in sync
with the ones already uploaded to A2.

                    (B.TAO, CAT1, TOP17, MSG:129/M530)



                        >>> PROGRAMMER'S TIPS <<<
                        """""""""""""""""""""""""


BEHIND THE MEMORY MANAGER   I've come upon something using the memory 
"""""""""""""""""""""""""   manager that I don't understand.

 I ran the following in Orca C 2.0.1 (Sys 6.0.1)

 #include <stdio.h>
 #include <types.h>
 #include <orca.h>
 #include <memory.h>

 void main(void) {
    handle buf;
    Word MyID, error;
    long handsize;

    MyID = userid() + 0x100;

    buf = NewHandle(000001L, MyID, 0, 0L);
    if (toolerror())
       printf("Unlikely here\r");

    DisposeHandle(buf);
    if (!toolerror())
       printf("\rHandle is disposed of.\r");

    CheckHandle(buf);
    error = toolerror();
    if (error)
       printf("CheckHandle error - %4X\r", error);
    else
       printf("Mem. manager says handle is okay???\r");

    handsize = GetHandleSize(buf);
    if (!toolerror())
       printf("\rAnd crazily enough--It has a size. -- %ld\r",handsize);

    }

      After disposing the handle the program follows the path of a valid
handle.  After DisposeHandle shouldn't I have gotten an INVALID HANDLE 
error on buf?

      Does anyone else get this result.  TBR1, 3 and 6.0 update don't 
seem to cover this nor do the TN's (but I haven't exhaustively read the
notes, only scanned them.)  Is this a feature of the memory manager such
that I should set my disposed handles to NULL after getting rid of them?

Any insight would be appreciated.

          (P.LAWRENCE5 [Frank@Work], CAT15, TOP2, MSG:101/M530)


<<<<<   > After DisposeHandle shouldn't I have gotten an INVALID 
"""""   > HANDLE error on buf?

No.

 > Is this a feature of the memory manager such that I should set my
 > disposed handles to NULL after getting rid of them?

Not really.  (Helpful, aren't I?)

      The problem is that you're expecting CheckHandle to tell you whether
or not a handle is currently usable.  That's not what it does.  It checks
to see if the address you specify is really a handle data structure in
one of the Memory Manager's lists.  When you dispose a handle, it gets
moved to the "Free" list so it can be reused.  It still has a valid
forwards and backwards link, so CheckHandle (correctly) says "Yes, this
is a handle and it belongs to the Memory Manager."  It just can't be
operated on until the Memory Manager returns it again from NewHandle. 
(Handles in the "purge" list can be reused with ReallocHandle, though.)

      The Memory Manager indicates handles aren't in use by having them
dereference to NIL.  If you want any other indication, such as having
NIL in your local variables (which are basically copies of the master
pointer), you have to do it yourself, but strictly speaking it's
unnecessary.

--Matt

         (M.DEATHERAGE [A2Pro Leader], CAT15, TOP2, MSG:102/M530)


>>>>>   My usual luck I guess.  Of the three issues of a handle (validity,
"""""   size and pointer value) I tried the two that would not give me
what I wanted to know.  ( No wonder it takes me so long to program things
:-) next time I'll flip a coin or something :-)

      Just out of curiousity regarding the free list, are these freed 
handles actually deleted from the handle list when an app. is given a
quit call? (Wait a minute--apps can restart, hmm... are they reassigned
to whomever calls the memory manager (ie. given a new id))?  Else it
would seem that running the GS for a long time would generate a huge
(unmanageable) free list.

      If this line is getting out of hand just ignore my ramblings.  I 
very much appreciate the earlier explaination.  Feels so good to know I
can fix my code tonight.

         (P.LAWRENCE5 [Frank@Work], CAT15, TOP2, MSG:103/M530)


<<<<<   Once a handle is disposed, _you_ must not reference it again.  
"""""   It can be returned in the future from NewHandle but it won't 
necessarily be returned to you.

      The IIgs has a big list of handles, over 1000 in normal cases, and
they're allocated from the free list.  Any handle you dispose goes back
into the free list to be reused.

      If the free list ever empties, the Memory Manager has to allocate 
memory to hold more master pointers, and that can cause fragmentation, so
it tries to avoid it.

--Matt

        (M.DEATHERAGE [A2Pro Leader], CAT15, TOP2, MSG:104/M530)


HANDLE LOCKING BLUES   I am allocating some memory to hold an off-screen 
""""""""""""""""""""   picture which I then transfer to the GrafPort 
which holds the window on-screen.  I have a record which holds
information relating to the window with a pointer to this memory being
one of the data items.  I am using this record (and thus the pointer to
the off-screen memory) to do updates on the screen window.

      My question.  I am currently locking the handle to this memory and
leaving it locked.  Would I be better off unlocking it after I get the
pointer in my record and then relocking it everytime I do a screen
update, or leaving it locked?  If the former, would I do better to put
the handle in my record rather than the pointer and thus be able to
immediately lock it, or to find the handle each time?

David R. Pierce

                  (D.PIERCE8, CAT15, TOP2, MSG:110/M530)


>>>>>   When I was faced with the same issue in 3D Logo, I saved the 
"""""   handle, not  the pointer, and left the handle unlocked except when
it was actually in use.

Mike Westerfield

                  (BYTEWORKS, CAT15, TOP2, MSG:111/M530)


<<<<<   True defensive programming would dictate that any time you unlock
"""""   the handle, the pointer is suspect.  While the system typically 
guarantees that no handles will move unless you call some of the tools,
you may be calling subroutines of your own that call those tools.

      The safest thing is to make the handle fixed and not just locked 
(both are options to NewHandle), but that promotes fragmentation much
more than the next safest method, which is to always lock the handle
while you have any pointers into it.

(I'm sure this is only one of many opinions on the subject...)

Todd Whitesel

                (A2PRO.TODDPW, CAT15, TOP2, MSG:112/M530)


>>>>>   Todd, as long as the update routine locks the handle before use, 
"""""   you're completely safe.  In many cases, you're save even if you 
don't lock the handle, as long as you dereference the pointer just before
you use it.  (I always lock the handle, though, just to be safe.)  But
true memory-efficient programming dictates that you use a moveable, not
fixed handle, and leave it unlocked when not in use so it can be moved. 
That helps prevent memory fragmentation.

Mike Westerfield

                  (BYTEWORKS, CAT15, TOP2, MSG:113/M530)


<<<<<   What everyone said.  :)
"""""
      If you're going to leave the thing locked the entire time, use a 
fixed handle.  The only system requirement is that the memory not move
when QuickDraw is trying to draw into it.  (QuickDraw expects pointers
in grafPorts to be valid whenever it tries to use them.  It doesn't care
if the pointer is a dereferenced handle or not.)

      And definitely stash the handle.  There's no need to make the Memory
Manager walk its linked lists all the time by calling FindHandle just so
you don't have to stash four bytes.  :)

--Matt

         (M.DEATHERAGE [A2Pro Leader], CAT15, TOP2, MSG:114/M530)


QUICKDRAW COORDINATES   I have a ORCA/PASCAL S16 program which uses the 
"""""""""""""""""""""   320-graphics mode.  I always assumed that the 
screen coordinates are 0,0 to 319,199.  When I do a MoveTo(0,199);
LineTo(319,199) this draws a horizontal line at the very bottom edge of
the screen.  Similarly a MoveTo(319,0); LineTo(319,199) draws a vertical
line at the very right edge.  However, when I draw a rectangle using
SetRect(0,0,319,199); PaintRect(theRect) this leaves a 1-pixel border on
the right and bottom edges.  I have to SetRect(0,0,320,200) to fill the
entire screen.  Why this inconsistency in coordinates between LineTo and
PaintRect?

               (M.SAND1 [Mark], CAT15, TOP4, MSG:110/M530)


<<<<<   When QD draws a rectangle (or oval, rounded rect, etc.) the 
"""""   coordinates are of the points that surround it.  So the 
following 2 routines do the same thing:

procedure FillbyLineTo(r:rect);

  var i: integer; {loop var}

 begin
 with r do
   for i := v1 to v2-1 do begin
     MoveTo(h1,i);
     LineTo(h2-1,i);
   end;
 end;


procedure FillbyPaintRect(r:Rect);

 begin
 PaintRect(r);
 end;

      This is how QuickDraw is designed to work.  I'm not sure why they 
did it this way, but they did.  Live with it :)

               (T.BUCHHEIM, CAT15, TOP4, MSG:111/M530)


>>>>>   What Tim said.  When drawing lines, there's no mathematical 
"""""   specification for which pixels to draw between two points, 
since in QuickDraw, points are _between_ pixels.  So to make it
predictable, the pen draws to the lower right of the points on the line.

      Rectangles are mathematically determinable in this world, though -- 
since points are between pixels, a rectangle includes all the pixels
between the points, and the "lower-right" rule doesn't apply.

      There's a picture of this in the beginning of the QuickDraw II 
chapter of Toolbox Reference, Volume II.

--Matt

         (M.DEATHERAGE [A2Pro Leader], CAT15, TOP4, MSG:112/M530)


ROM 3 SOUND LOCATION   For the terminally curious (like me), here is the
""""""""""""""""""""   info on the "Apple II!" sound in the ROM 3 from my
simple program that saves it to disk:


   ; The code to play the Apple II yell is at FE/07C6.
   ; The parameter block is at FE/080C.

   part1_loc       gequ    $FF1000
   part1_size      gequ    $0C00
   part2_loc       gequ    $FF1D00
   part2_size      gequ    $1F00

   (now I can throw out my notes I found while cleaning. :)

               (JAY.KRELL, CAT15, TOP8, MSG:103/M530)


TASKMASTER EVENT HANDLING   Quick question regarding Taskmaster.  I have 
"""""""""""""""""""""""""   written a subroutine that does a screen 
blanking after 5 minutes if no activity is detected.  Activity is
determined by Taskmaster returning a value other than zero.  Certain
functions, i.e. Text Edit, are handled internally by Taskmaster and
there- fore, never return any value for the user to act on.  As a
result, if  working on a text edit document, the screen blanks after
five minutes.  Is there a way to 'patch' and address into Taskmaster, or
determine if Taskmaster has handled an event internally so that I can
reset the count down timer and stop this irritating bug?

                                    Rob

                 (R.SANT1, CAT15, TOP14, MSG:89/M530)


>>>>>   First, this is a really odd way of dealing with screen blanking, 
"""""   but in any case, you're probably better off working with 
GetNextEvent (which is what TaskMaster calls).

      That way you'll know about every event and you'll work with 
programs that don't use TaskMaster (yes! there are some out there!)

      Also, check out the TaskMaster psuedo-code in TBR3, for many 
"automatic" cases that return null events, wmTaskData contains the
original event (in your example, a keyDownEvt).

         (SOFTDISK.INC [Bryan Zak], CAT15, TOP14, MSG:90/M530)


<<<<<   Rob, the _result_ of TaskMaster indicates the action you're 
"""""   supposed to take.  If you want to know what TaskMaster _did_, 
look at the low word of wmTaskData.  (This is only true if the return
value is $0000, indicating TaskMaster handled everything.)

--Matt

         (M.DEATHERAGE [A2Pro Leader], CAT15, TOP14, MSG:91\3/M530)


TEINSERT PROBLEMS   I do have a strange problem with TEInsert now.
"""""""""""""""""   I guess if I can make TESetText work correctly, then 
all I have to do is to exchange the TESetText with a TEInsert text,
right? At least that was how I did it that far.  But right now I write
something to a TE control with TESetText, and I can overwrite this
control with another TESetText just fine, with a TEInsert I never am
able to display anything, no matter where I set the insertion point.

      Does anybody know situations, where the same TEInsert call fails 
when it works just right with TESetText?

              (A.CORRIERI [Alex], CAT15, TOP34, MSG:64/M530)


<<<<<   Yes, if the TextEdit record is read-only (fReadOnly is set in 
"""""   the textflags field).

      My solution was to write TELock and TEUnlock routines which 
directly fiddle this bit (which I was told by DTS was okay).

These routines are in GSLib if you are using ORCA/C :)

Bryan
 
         (SOFTDISK.INC [Bryan Zak], CAT15, TOP14, MSG:66/M530)
          

                               [*][*][*]



                        >>> MESSAGE SPOTLIGHT <<<
                        """""""""""""""""""""""""

     The main problem with global variables is that they require the 
compiler to generate a global context for them.  This varies from machine
to machine, and if you start diving into parts of the operating system
you may or may not get what you expect.

      Most IIgs C compilers put global variables in a separate segment, 
and set the processor's data bank register (DBR) to point to them, so
they can generate 16- bit addressing to retrieve them.  This works fine
for most programs -- but what if you try to write a RunQ task or request
procedure?  Generally, the compiler doesn't know that a given procedure
will be called from the system, so it generates code just as if
everything is fine, but in reality the databank register is probably not
set to point to your global variables in the middle of a request
procedure, so unless you set it, any global access will write to the
wrong place (or read from it).

      APW C has SaveDB/RestoreDB, and ORCA/C has #pragma databank, so these
problems are not insurmountable -- but you have to be aware of them and
code specifically for them, and the procedure changes for every machine
you head to.  (The Macintosh bases global variables off register A5, so
all routines that are called from outside a program's main code have to
set up their "A5 world," as it's called over there.  On PowerPC-based
Macintosh computers, it's based on register R2 (the "table of contents"
register), but the OS manages to set it up for you automatically, unlike
the 68K-based OS.)

      These kinds of things are part of why textbooks warn against global
variables.

 --Matt

         (M.DEATHERAGE [A2Pro Leader], CAT4, TOP2, MSG:21/M530)


                               [*][*][*]


    While on GEnie,  do  you spend most of your time  downloading files?
If so, you may be missing out some excellent information in the Bulletin
Board  area.   The messages  listed above  only scratch  the surface  of
what's available and waiting for you in the bulletin board area.

    If you are serious about your Apple II, the GEnieLamp staff strongly
urge  you to  give the  bulletin  board area a try.  There are literally
thousands of messages posted from people like you from all over the world.



[EOA]
[DEV]//////////////////////////////
              DEVELOPER'S CORNER /
/////////////////////////////////
News From The A2Pro Online Developers
"""""""""""""""""""""""""""""""""""""
By Nate C. Trost
[A2PRO.GELAMP]



                      >>> ONLINE SUPPORT IN A2PRO <<<
                      """""""""""""""""""""""""""""""

     CAT  TOP  COMPANY
     ===  ===  =======
     29   INDEPENDENT DEVELOPERS ONLINE
           2   DYA/DigiSoft Innovations Online
           8   Simplexity Software Online
          14   Quality Computers Q-LABS Online
          20   DreamWorld Software Online
          26   METAL/FV Software Online
          32   Kitchen Sink Software Online
          38   EdIt-16 (Bill Tudor)

     30        PROCYON, INC.
     31        SOFTDISK PUBLISHING
     33        GS+ MAGAZINE
     34        JEM SOFTWARE
     35        PRODEV, INC.
     36        THE BYTE WORKS

     Each month this column feature highlights and news from various
developers who provide support via A2Pro.



                     >>> NEWS FROM BILL TUDOR <<<
                     """"""""""""""""""""""""""""

EDIT-16 STATUS   EdIt-16 was up to version 1.2 when it was last handle 
""""""""""""""   by that company that had your deskpak money.  Lunar 
Production took over EdIt-16 publication in early 1993.  They have now
stopped operations, leaving EdIt-16 an orphan once again.  Version 2.0
was the last shipped version.

      I am planning to make EdIt-16 available again, but I am not sure 
of the details (they still need to be worked out).  Once it is available,
I will let everyone know how they can get a copy of the current version
if you do not already have one.  Also, I am planning a maintenance
realease so please send all bugs/suggestions to W.TUDOR (me).

The major changes in version 2.0 are:

     o  Multiple filename startup under Orca 1.x, 2.0, Merlin, ProSEL 
        AND as an application (S16) file from Finder/etc.

     o  Very large pathnames supported (up to 64k)

     o  Read-only files can be loaded

     o  Configuration file is now used (ed16.config), enabling network
        support amoung other things

     o  A "Recently opened file" list of the last 10 files can be 
        popped up for a real quick load.

     o  "GoBack" command added (this is cool).  After jumping to a line 
        number or something, you can just "go back" to where you were.

     o  Cursor position is "remembered" for the last 10 files

     o  Find/Replace strings remain intact between uses.

     o  Dialogs conform better to Apple UIG.

      I don't reccall offhand what v1.1-v1.2 changes were.  I believe it 
was ORCA 2.0 and long pathname support.  Anyway, EdIt-16 now has 90
commands.

Editing buffers are still limited to 64k, however.

Thanks, Bill {W.TUDOR}

                 (W.TUDOR, CAT29, TOP38, MSG:99/M530)



                      >>> NEWS FROM PROCYON INC. <<<
                      """"""""""""""""""""""""""""""

NEW 65816 ASSEMBLER   I've been working on a simple assembler for the GS.
"""""""""""""""""""   It's written in C, and so far seems to be quite 
speedy.  I'll be uploading it as an example of how _not_ to write
language parsers :)

      This assembler is very, very simplistic because it is intended to 
be used with another program.  I'll be using it with my experimental C
compiler, but it would also be useful for anyone who wants to experiment
with writing a compiler, but doesn't want to have to figure out OMF and
all the associated data structures.

I'll probably put it up sometime next week for people to look at.

 Jawaid

                (PROCYON.INC, CAT30, TOP5, MSG:40/M530)


SPLAT! REQUIREMENTS   Is GNO required for splat?
"""""""""""""""""""

I don't own GNO, I still use the ORCA shell :)


  Ken "KAZ" Kazinski

                (K.KAZINSKI, CAT30, TOP9, MSG:22/M530)


>>>>>   Splat! works great from ORCA, the Finder, or anywhere :)
"""""

 Jawaid

                (PROCYON.INC, CAT30, TOP9, MSG:26/M530)


<<<<<   Well, to be picky, it works anywhere under GS/OS.  It doesn't 
"""""   work under ProDOS 8, but then its unlikely that any program 
written with Orca/C or Pascal would either.

Mike Hackett

           (M.HACKETT [Majikthise], CAT30, TOP9, MSG:27/M530)


SPLAT! EXIT() BUG   I'm having a problem using Splat! with GNO 2.0.4 
"""""""""""""""""   and ORCA/C 2.0.1.  gsh hangs after executing an
exit() from within the debugger.  This little example is enough to 
demonstrate:

 #pragma debug -1
 #include <stdlib.h>

 main()
 {
     exit(0);
 }

      It works fine under ORCA.  Also, it works if you return from main()
rather than exit().  Pressing ^C, ^Z or ^\ after gsh hangs has no effect.
I'm not sure if this is a problem with Splat! or GNO.

             (S.REEVES2 [Steve], CAT30, TOP9, MSG:15/M530)


>>>>>   Yeah, this has been reported, and possibly fixed.  I'm just 
"""""   waiting on Jawaid's approval on my fix.  The reason the system 
seems hung is that Splat was unable to restore the original GNO I/O
vectors before returning to the shell.  The reason it only happens with
exit() is that in this case C's cleanup code closes all open streams
before Splat! gets a chance to shutdown, whereas if a program ends by
finishing main(), Splat! gets to shutdown first.  It also only happens
with the GNO version of 'orcalib'.

      There should be an update (v1.0.1) to fix this bug and a couple 
of others available very soon.

Mike

           (M.HACKETT [Majikthise], CAT30, TOP9, MSG:19/M530)



                  >>> NEWS FROM SOFTDISK PUBLISHING <<<
                  """""""""""""""""""""""""""""""""""""

GSLIB UPDATE   Welp, I've got some good news and some bad news...
""""""""""""

 The bad news:  The GSLib documentation isn't done yet

 The good news: It looks like we'll be getting someone outside of 
                Softdisk to finish this which means it'll actually 
                get finished!

      In the meantime, as soon as I get caught up with things around 
here, I'll upload the latest GSLib which fixes a couple of minor bugs and
adds a lot of new functionality.  (For example, a super-cool,
super-useful DecompressAPF routine!)

          (SOFTDISK.INC [Bryan Zak], CAT31, TOP9, MSG:103/M530)



                      >>> NEWS FROM PRODEV, INC. <<<
                      """"""""""""""""""""""""""""""

DDT QUESTIONS AND ANSWERS   As I've mentioned earlier, my present use for 
"""""""""""""""""""""""""   DDT16 is to follow some tutorial programs 
which are 8-bit.  These programs frequently start with a JSR to a Monitor
routine, like Home ($FC58) to clear the screen.  Other Monitor routines
are used in some of the programs as well.  When stepping through these
programs I want to execute these Monitor routines in real-time by using
the T- Trace range in the protection window.  I'll give you the short
sample program from my Roger Wagner text and then show you what happened
when I attempted to trace it in DDT.

Program      008000: 20 58 FC  Begin  JSR  $FC58:  
clear screen 008003: A9 C1            LDA  #$C1 :  letter "A" 
             008005: 8D BC 05         STA  $5BC :  screen location 
             008008: 60        Done   RTS

DDT16

:PC = 8000 :PW                  [Protection Window Entry: T00/8000.8002]
:ST
 ^ERR30

:DR A=F100 X=0000 Y=0000 S=01C2 D=0000 B=00 M=08 Q=88 P=00=----- L=0 E=1
I=0 00/8000: 20 58 FC    JSR FC58

:P Flags   NV1BDIZC Status  00000000 Enter

      As you can see, I bombed out when I got the ERR30 response to my ST
command.  I entered the DR and P instructions so you could status at the
time.  The ERR30 instruction is explained in the manual thusly, "'RT' or
'T' range JSL while in emulation mode".  This doesn't help me because,
while the E=1 shows I'm in emulation mode, the instruction JSR (20) is
used in the program, not JSL.

      I've redone this several times, with the same, unhappy result.  
Can you help me, so I can get off first base? I can see that DDT will not
only ease but cut my assembly language learning time in half (once I
learn to use it).

               (R.HOYER1, CAT35, TOP2, MSG:20/M530)


<<<<<   Protection Window "T" Range Usage
"""""

      The "T" Range in the Protection Window wants to know the address 
of the code that is to be executed at full speed.  This area must be
entered by using a JSR or JSL command.  If the "T" range is set to
include the location of the current Program Counter then the DDT will
respond with ^ERR30 if you attempt to trace the code.  This is because
the DDT checks the Protection Window and sees that it is currently in an
area where it should be running at full speed but it doesn't know how it
got there.

Try setting the "T" range to $F000.$FFF0

      When you do an" "ST" at the JSR that takes you into a "T" range the
real-time execution does not start until you press "return" and trace
the instruction that the JSR went to.

      Also, as a side note.  If you are tracing code and you find yourself 
at location $C074 you went there because an interrupt was generated by
something other than the DDT and you are tracing through the interrupt
handler.  This can be very frustrating if you are not interested in
interrupt handlers.  If you find this happening there is the solution of
not enabling interrupts to begin with, although GSOS does this which may
make that option difficult, or use the "I" flag in the DDT to mask out
other interrupts.

Let me know if this helps.

Thanks for the questions.

          (PRODEV [Chuck], CAT35, TOP2, MSG:19/M530)


>>>>>   > Try setting the "T" range to $F000.$FFF0
"""""
      I tried this-inserted it in the PW window as a T range followed by 
the T range in my program which I actually wanted executed in real time.
Still got the ^ERR30 message.

  > If the "T" range is set to include the location of the current 
  > Program Counter then the DDT will respond with ^ERR30 if you 
  > attempt to trace the code.

      I gathered from this that my problem was that the very first 
instruction in my program was the JSR to the HOME subroutine and this
instruction was included in the T range.

     So I bloaded the program into Merlin and added these instructions 
at the very beginning of the program: LDA #$00, TAX, TAY.  This made the
following JSR instruction $0304, so my T range would be T00/0304.0306.

     This eliminated the ^ERR30 message alright, but not my real problem 
which is to execute Monitor subroutines in real time.

    Using the changed program described above, I tried several variations:
 
      1. No T range inserted in the PW:
           a) I = 0
             DDT jumps to $C074
           b) I = 1
             DDT traces into the Home subroutine

      2. T range 0304.0306 inserted in the PW:
           a) I = 0
             DDT jumps to $C074
           b) I = 1
             DDT traces to the point where the JSR instruction shows
             as the next instruction to be executed.  I pressed Return
             as you indicated above and the screen went totally blue
             and I could do nothing with the computer except type on
             the screen.  I re-bloaded several times and repeated with
             the same result.

      At this point, it appears to me that I will always have to trace 
with I set to 1.  Apparently, otherwise interrupts come out of "nowhere"
(surely not from the simple little programs I'm tracing).  Note that in
my variations above, DDT jumped to $C074 whenever I = 0, whether I had
inserted a T range or not.Is this "normal" for a GS Ram 01 to have to
operate DDT with I always set to 1? Do you have any idea why I get a
blank screen and a virtually "hung" computer when I press return to
execute the JSR command (in my 2.b) variation above? HELP! I seem to
have a tiger by the tail here!

               (R.HOYER1, CAT35, TOP2, MSG:20/M530)


<<<<<   The interrupts that keep getting in your way are caused by GSOS. 
"""""   If you boot your IIGS with ProDOS 8 I don't think you will see 
system interrupts.  (Until...)

Some of the IIGS monitor routines will enable interrupts on their own.

      Blue screen? Hard to say exactly what was happening.  Might be a 
problem with trying to run some of the monitor routines with the I flag
set to 1.  They might need to use interrupts and are just waiting for
them but they never occur because I=1 sdisables interrupts.

      My suggestion is to try booting under ProDOS 8 and see if that fixes  
the problem.  I know from experience those darn system interrupts are a
real pain at times.

          (PRODEV [Chuck], CAT35, TOP2, MSG:22/M530)



                     >>> NEWS FROM THE BYTE WORKS <<<
                     """"""""""""""""""""""""""""""""

ORCA/FORTRAN BETA ANNOUNCEMENT   We are beginning final work on a new
""""""""""""""""""""""""""""""   program ported by GEnie's own Gary
Desrochers.  It's a FORTRAN to C cross compiler, hooked into the ORCA
environment so you can use it two ways:

     1.  With ORCA/C, it can be used just like a native FORTRAN compiler. 
         The C compiler is invoked automatically and transparently.  It's 
         slower than a true native compiler, but works the same way 
         -- even supporting the debugger, which goes back to the original 
         FORTRAN source.

     2.  As a porting tool, you can convert FORTRAN programs to C, then 
         clean them up or move them to other platforms.

Here's what we're looking for in beta testers:

     1.  You must own ORCA/C 2.0.1.

     2.  You must be willing to download files from GEnie and 
         participate by reporting bugs and discussing possible 
         improvements.

     3.  You must know FORTRAN, and preferably C, too.

     4.  I would prefer it if you have access to existing FORTRAN 
         programs you are willing to run through the compiler.  If you're 
         willing to share it so we can all look, that would be great, too.

   If you meet the qualifications, or can code enough that you think your
boundless entusiasm can make up for any defficiency, please send the
following information to me by e-mail, and info copy G.DESROCHERS:

   Name
   Address
   Your version of ORCA/C
   Your experience level in C & FORTRAN, and whether and how much code 
   you have access to to try the compiler out on.

(Yikes.  Sorry about the grammar, but you get the idea.)

I'll look forward to hearing from you!

Mike Westerfield

                  (BYTEWORKS, CAT36, TOP3, MSG:66/M530)


ORCA/PASCAL $CDEV DIRECTIVE   \/\/hat, exactly, does the ORCA/Pascal 
"""""""""""""""""""""""""""   {$cdev } compiler directive do to
the program when it's compiled?  I'm asking because I'm trying to use
ORCA/Pascal (v1.4.2, BTW) to write a request procedure, and save it in a
code resource.  This is necessary because I'm installing the request
procedure from within a control panel, and it needs to stick around in
the system when the control panel is closed (I'm using SetHandleID and
following the directions in its docs for detaching a code segment, if
anyone's wondering).

     ___
      |he reason I'm specifically asking about the {$cdev } compiler 
directive is because a control panel's main function and a request
procedure's main function are ALMOST identical, but not quite, and I was
wondering if I could just use the {$cdev } compiler directive to compile
my code properly for use in a code resource.  So that people don't need
to look them up, here's the state of the stack before and after both a
control panel and a request procedure are called:


 Stack when control panel code gets control:

  | Previous Contents |
  |___________________|
  |                   |
  |-      space      -|   Long - Space for result
  |___________________|
  |      message      |   Word - Action for CP to take
  |___________________|
  |                   |
  |-      data1      -|   Long - Data passed to control panel
  |___________________|
  |                   |
  |-      data2      -|   Long - Data passed to control panel
  |___________________|
  |                   |
  |-     RTLAddr     -|   3 Bytes - Return Address
  |___________________|
  |                   |   <-  Stack Pointer (SP)


 Stack just before the control panel code executes an RTL:

  | Previous Contents |
  |___________________|
  |                   |
  |-     result      -|   Long - Result from control panel
  |___________________|
  |                   |
  |-    RTL Addr     -|   3 Bytes - Return Address
  |___________________|
  |                   |   <-  Stack Pointer (SP)


 Stack when request procedure gets control

  | Previous contents |
  |___________________|
  |       space       |   Word - space for result
  |___________________|
  |      reqCode      |   Word - request code
  |___________________|
  |                   |
  |-     dataIn      -|   Long - input data or pointer to input data
  |___________________|
  |                   |
  |-     dataOut     -|   Long - pointer to output buffer
  |___________________|
  |                   |
  |-    RTL Addr     -|   3 bytes - Return Address
  |___________________|
  |                   |   <-  Stack Pointer (SP)


 Stack just before the request procedure executes an RTL

  | Previous contents |
  |___________________|
  |      result       |   Word - bit 15 set if the request was accepted
  |___________________|
  |                   |
  |-    RTL Addr     -|   3 bytes - Return Address
  |___________________|
  |                   |   <-  Stack Pointer (SP)

       _
      /-\s you can see, the only difference is that a control panel 
returns a long on the stack, while a request procedure only returns a
word.
       _
      (_
      __)o, is the {$cdev } compiler directive a kind of universal way 
to tell the program to accept parameters specified by the named procedure
on the stack, and return the procedure's (function's) output on the
stack, or is it hard coded to only accept a word and two longs, and
return a long?  i.e. does it actually LOOK at the named procedure to see
what it accepts and returns?

     ___
      |he two other options I can think of for using ORCA/Pascal to make a
request procedure in a code resource involve using assembly glue code,
and I'd rather not do that if I don't have to.  (One way is to write the
requestProc itself in assembly, linking the Pascal procedures that the
requestProc calls in via a unit or something similar.  The other would
be to accept the passed parameters in the program header -- I'm not even
sure this would work -- and use the glue code to return the word result
on the stack.)

                                                       -= Lunatic     (:

              (A2.LUNATIC, CAT36, TOP10, MSG:115/M530)


>>>>>   First, you definitely don't want to use $CDev.  Among other
"""""   things, it puts the CDev header at the start of the program.

Here's the points I think you need to consider:

     1.  Upgrade to Pascal 2.0.1.  One of the things that 2.0 does for 
         you is give a documented, supported way to start the compiler's 
         run-time facilities from a program that needs to be entered in a 
         weird way.  With Pascal 1.4.2, to create a program in Pascal that 
         will run safely as a code resource, you must have the library 
         source for the version you are using, and decipher the proper 
         calls yourself.  The code to make the calls also has to be done 
         in assembly.

     2.  Use the $Rtl directive.  This gives you a clean program that 
         exits with an RTL, which is what you want for almost any code 
         resource.

     3.  From a cursory glance, it looks like the parameters are basically 
         tool-style parameters.  To do what you want is a bit tricky, but
         this will work:  Create a unit where the first executable 
         procedure is the one you want to be the entry point.  Use 
         {$ToolParms and {$Databank, just like you would for a procedure 
         that will be called by the tools.  Be sure and do the appropriate
         environment startup/shutdown.  Link this unit as if it were your 
         program.

Mike Westerfield

                  (BYTEWORKS, CAT36, TOP10, MSG:116/M530)


C COMPILER ASSUMPTIONS   I'm working my way through the book _C 
""""""""""""""""""""""   Programmer's Guide to Serial Communications_ 
by Joe Campbell.  In the first section that starts discussing
programming, he lists some assumptions about the compiler in order to
use the routines that are developed.  I'm interested in knowing if ORCA
C meets these assumptions:

     o  Integer storage: No assumptions are made about the size of the 
        "natural" int, but a _short_ or _unsigned short_ is expected to
         occupy 16 bits.

     o  Memory allocation: Memory is allocated from low to high.  That is, 
        when objects of the same type are allocated consecutively, the 
        first one allocated has the lower address.

     o  Structure Alignment: All structures are assumed to be _byte 
        aligned_; that is, the compiler leaves no gaps between members 
        (check your compiler's documentation for the details on how to 
        enable this) - I didn't see this mentioned in the ORCA manual.

     o  Stack probing: is turned off.  A stack probe is code inserted 
        when a function is compiled.  The code causes the program to exit 
        with a run-time error message if it discovers that there is 
        insufficient room on the stack to accommodate the automatic (stack
        based) storage declared in the function.  Because interupt 
        handlers (developed in chap 20) use their own local stack, stack 
        probing must be turned off for all functions called within an 
        interrupt.

     o  Compiler optimization: is turned off.

      I've found that the book explains the hardware side of serial
communications at a level that I was easily able to follow, which
impressed me because I have no knowledge of electronics or math other
than random things I picked up on my own (or in Commerce math which is
directed towards finance and away from engineering applications).

 Michael

         (M.POTTER4 [AppleNET Pro], CAT36, TOP11, MSG:107/M530)


>>>>>   Some of those assumptions are pretty horrid.  Here's where ORCA/C 
"""""   falls:

Integer Storage:        Short is indeed 16 bits.

Memory Allocation:      Depends what he means.  If you allocate an array,
                        this assumption holds.  If he's talking about 
                        malloc(), forget it.  Memory allocated by malloc() 
                        can come from anywhere.

Structure Alignment:    Holds for ORCA/C.

Stack Probing:          This is not done in ORCA/C unless you ask for it.  
                        Of course, if you overflow the stack, the program 
                        will crash.

Compiler Optimization:  I have no idea why he would recommend turning this
                        off, unless he found bugs in a specific compiler.

Mike Westerfield

                 (BYTEWORKS, CAT36, TOP11, MSG:108/M530)


<<<<<   Just chiming in from the peanut gallery...
"""""
      Integer Storage: It is a standard assumption in most software that 
short and unsigned short are 16 bits.  Lots of code will break if this is
not true, and at the same time there's usually little reason to make
shorts any other size.  This assumption is fairly safe, considering the
pages and pages of unix application code out there that assumes ints are
the same size as pointers.

      Memory Allocation: What Mike said.  He may be talking about global 
variables (like int x; int y; outside of a function) which is a slimy
thing to assume, because some optimizing compilers reorder variables a
lot to get them to take less space.  At work we have an old customer
complaint that our global variables get allocated in reverse order and
that caused their I/O code to fail... we basically told them that if
they weren't using the official C facility (structs) then it wasn't our
problem.

      Structure Alignment: There is no advantage (except maybe a trivial 
one if the sizes of things are even) that makes alignment worth doing on
the IIgs.  I don't think any languages on the IIgs bother to align
anything, at least I can't think of any offhand.

      Stack Probing: this strikes me kind of funny.  Interfacing C to 
interrupt handlers is tricky enough to begin with, you'd pretty much have
to know about this already.  There are Real-Time Operating Systems that
require you to do stack-checking no matter what your code is, to keep
yourself from crashing something else on the same board.

      Compiler Optimization: Mike, I'm disappointed.  Really.  Pre-ANSI 
compilers don't have "volatile", so there's no way to tell them not to
optimize out code that does things like reading from hardware registers.
I remember trying to use volatile with ORCA/C 1.x to read single bytes
of IIgs machine registers, and the compiler wouldn't do it -- I always
got a 16-bit load instead of the REP/SEP bracketed code you get for
stores to a char variable.

      This issue with volatile plagues a lot of K&R C driver code and 
shared memory code on workstations -- modern compilers can do a lot of
cool things to reduce memory traffic if they are allowed to assume that
memory doesn't have side effects.  With volatile you can let the compiler
optimize everything that is safe to optimize without endangering your
I/O code or semaphore logic or whatever.

      As far as I could tell, however, ORCA/C 1.x just ignored volatile. 
And it never seemed to do anything with const either.  I hope the 2.x
optimizer can substitute immediate operands for global const variables
-- I hate using #define's because they cannot have types the way const
variables can.

Todd Whitesel

         (A2PRO.TODDPW [growf?], CAT36, TOP11, MSG:109/M530)


>>>>>   Assuming int is 16 bits is, indeed, very common.  So is murder.  
"""""   The fact that something is common doesn't make it a good idea.  
All of the C standards specifically and blatantly state that you must
never assume anything about the size of an integer -- or even if it is
in fact reppresented by bits -- other than the fact that long is at
least as big as short, and int is at least as big as short and no bigger
than long.

      There is a way to _check_ the size of available integers in ANSI C.  
ANSI C also provides some minimums for the sizes of the various integer
types.  There is no maximum, though.

      Unless I missed something (which is very possible), volatile 
guarantees that an access will take place, so the optimizer will not
remove it.  It says nothing about the way an access is done.  So C 1.x
was not at fault for loading a word and anding to get a byte, even if
the variable was market volatile.  If you are aware of something in the
standard that says  I'm wrong, quote it.  I'd like to find out.

      The reason for volatile is indeed to prevent optimizing out accesses, 
which I forgot about in my last message.  Thanks for reminding us. 
However,  ORCA/C 1.x didn't do anything that optimized out accesses, so
it did, in fact, ignore volatile.  That's OK.  ORCA/C 2.x does not
ignore volatile,  since it does do some optimizations that can remove
accesses.

Mike Westerfield

                (BYTEWORKS, CAT36, TOP11, MSG:110/M530)


ORCA/C PROBLEM   Hi Mike or whoever can help,
""""""""""""""

      I'm sorry to bother you, but I'm in the process of learning 'C'
programming using your Orca C, with Orca Shell 2.0.1 and Orca C 2.0.0 on
a ROM 3 IIgs with 3 meg of memory and a hard drive running system 6.0
(not 6.0.1).  I've been using Prizm and typing in programs (very small
ones at that) from the Kernighan & Ritchie "The C Programming Language"
book.  (I also have your Learning C package.)  For some reason I've been
sporadically blowing my foot off.  I usually Check For Errors, and get 0
errors found.  But lots of times I will drop into the monitor during
execution of my program.  If I reboot and try again, often the program
will run OK.  

      I originally tried using the DEBUG GO command, which sometimes 
worked, but sometimes it too would drop me into the monitor.  So I then
began using Compile To Disk instead, which seemed more reliable.
Basically, it's the sporadic nature of my difficulties that has me
confused.  Is there some basic thing that I am doing wrong?  Is 3 meg
enough memory?  Are my problems something you've run into before?  I
recognize that the programs from K&R may cause a problem, but they are
ANSI C, and isn't Orca C ANSI compatible?  Anyway, any suggestions you
might throw my way would be appreciated.  Oh, and I've tried doing
things after a Shift-Boot to get rid of any funny DAs, etc., and I still
seem to get into trouble.  Below is a simple little program that I've
had some trouble with.  Many other programs have dropped into the
monitor, so this wasn't the only one.

#include <stdio.h>

/* copy input to output; 1st version */

main() {
    int c;

    c = getchar();
    while (c != EOF) {
        putchar(c);
        c = getchar();
    } }

Thanks for any help.

Craig Peterson     :-)}

                (C.PETERSON5, CAT36, TOP11, MSG:118/M530)


>>>>>   Craig, you _may_ be running into a bug that was fixed in the C 
"""""   2.0.1  update.  There was one rather nasty bug in the compiler in 
the 2.0 release.  It's also possible you're running into a bug in the
linker that was just recently fixed.  That fix is in the private ORCA
library, which is open to any registered user of the most recent version
of one of the ORCA languages.  Then again, you may be running into
something entirely new.  It's tough to tell for sure.  The program
certainly looks innocent enough, though.

      If it's not too much of a hastle, I'd suggest updating to C 2.0.1 
to get the compiler bug fix (among other things), then downloading the
new PRIZM and Linker from the private library.  If the problem is still
there, we'll need to do some detective work to find out where it's 
comming from.  If updating is a burden for some reason, give me a call.
My number is in the Tech Service file on your disks, as well as in the
manuals.

Mike Westerfield

                (BYTEWORKS, CAT36, TOP11, MSG:119/M530)



[EOA]
[TOU]///////////////////////////////
             TOUR OF 8/16 CENTRAL /
//////////////////////////////////
The Great Programmers Magazine
""""""""""""""""""""""""""""""
Chris Budewig
    [K.FLYNN]



I'll Have a DLT On Rye, Please!   Included with each issue are two
"""""""""""""""""""""""""""""""   general-purpose navigation programs
called DLT 8 and DLT 16.  DLT stands for Display Launcher Thingamajigs,
which are text and graphics viewer programs that allow you to page through
articles and source code listings, view diagrams, and launch programs &
demos.  The DLT's included with the first issue were not finished versions,
but were completed in later issues and other features were added as time
went on.  Minimum requirements for these programs are a IIGS for DLT 16, or
a 128K //e or better for DLT 8.


             >>> 8/16-Central - November, 1990 (#3399) <<<
             """""""""""""""""""""""""""""""""""""""""""""

      A full directory of all files on each issue of 8/16 and 8/16-Central 
can be found in file #3382 (ESC.INDEX.BXY).  A condensed directory of the
contents of this issue is included below.  The code letters in
parentheses next to each item mean:
  S : Source code -- what you need to create a program
  X : Executable program -- you can run this directly!
  D : Documentation -- tells how the program works and what to do with it
  A : Article -- explains a subject and probably the source code that
      demonstrates it


 /Es.centrAL.9011/
 ..READ.ME            Intro and Welcome
 ..GENERAL/
 ....VAPORWARE        Murphy Sewall's industry snapshot
 ....PUBPEN.TXT       Editor's editorial
 ..IIGS/
 ....READ.ME16        Description of 16-bit contents!
 ....NDAMENU/         (SXA) Demonstration of how to add an NDA's menu to an
                            application's menubar!  Also includes a shell
                            utility to install DA's
 ....SHOWPIC/         (S) Source code for the ShowPic NDA v4.70 - includes
                          code for loading, saving, converting and
                          displaying different kinds of pictures
 ....PHIL.DOTO/       (SXA) Pascal Pics - Loading and displaying picture
                            files from Pascal
 ....ROSS.STR/        (SXA) rStringLists - how to create and use them
 ....ARCADEKING/      (XD) Shape editor/creator program for game
                           programmers and animators
 ....MAB.GS/          (S) A set of Micol Advanced BASIC routines that
                          convert between different sizes of integers and
                          real numbers
 ..CLASSIC.APPLES/
 ....READ.ME8         Description of 8-bit contents!
 ....BPU/             (XD) BASIC Programmer's Utility - a preprocessor for
                           the Beagle Compiler that, among other things,
                           implements include files and allows use of
                           labels instead of line numbers
 ......LAUNCH/        (SXA) Replacement for BASIC's '-' command that will
                            launch S16 files and SYS files too big for '-'
 ....RECURSIVE.CAT/   (SX) Apple approved method to read a directory -
                           the example catalogs a directory as well as
                           every subdirectory it contains
 ....GEN.DRAW/        (SXA) Generic shape drawing routine - animate
                            bitmapped shapes from Applesoft or assembly
 ....WILDCARD/        (S) How to compare two strings, one of which may
                          contain wildcard characters (= or ?)!
 ....XMODEM.INFO/     (A) Documents the ProDOS extension of the XMODEM
                          protocol and shows how to do a fast CRC-16
                          withOUT a table lookup


      Note: The file in the MAB.GS directory is actually a ShrinkIt archive
even though it doesn't have a .SHK extension on it.  Be SURE to unpack
before trying to read the source code with your favorite editor.

      Mac NDA's can put menu's into the system menu bar, but IIGS programs
couldn't... until now!  Check out the NDAMenu article to see how it's done!

      This is the last issue of 8/16 that was published.  Every issue 
hereafter was known as 8/16-Central and was published by A2-Central
instead of Ariel Publishing.



         >>> 8/16-Central - December, 1990 - File (#3400) <<<
         """"""""""""""""""""""""""""""""""""""""""""""""""""


 /ES.CENTRAL.9012/
 ..About.This.Disk    Intro and Welcome
 ..DLT16              New version using HyperStudio!
 ..DLT8               Karl Bunker's new version written in BASIC!
 ..Columns/
 ....VAPORWARE        Murphy Sewall's industry snapshot
 ....WhatsNew         News in the world of Apple II
 ..Q.And.A/
 ....LETTERS          Readers Write - Multi-column Printouts, Great
                      Programs & 16-bit BASIC Compilers, and The BSAVE
                      Blues
 ..Apple.II/
 ....GenDraw2/        (SXA) Son of GenDraw - Extensions and enhancements to
                            the original generic shape drawing routines
 ....ZBasic/          (SXA) ZBasic Zealot - SFGetFile clone for ZBasic
 ..Apple.IIgs/
 ....HyperLab/
 ......HyperLab       (A) An overview of Hyperstudio XCMD's
 ......SAMPLES/       (SXD) HyperStudio XCMD Exerciser XCMD - info on how
                            to create XCMDs plus sample code in five
                            different languages:  ORCA/C, APW Asm,
                            TML Pascal, Merlin Asm, and ORCA/Pascal
 ....C.Techniques/    (SXA) How to easily save screen images using C
 ....XASIC/           (SXA) Library routines and Merlin macros that let you
                            use BASIC-like syntax for your assembly code
                            and easily access the Console Driver
 ..Goodies/
 ....RezWindow/       (SA) An updated version that handles the problem with
                           window color table resources
 ....RTC.Xscript/     Real Time Conference with Dave Lyons on System 5.0.3


      Welcome to the first issue of 8/16-Central!  The general format of 
the magazine has changed a bit since it is solely a disk version now,
instead  of a paper/disk combo.  There are completely new versions of
the Display/Launcher Thingamajig: a 16-bit version that uses Hyperstudio
to do all of its chores, and an 8-bit version written in Applesoft which
uses Dogpaw to supplement its capabilities.

      And speaking of Hyperstudio, this month's Hyperlab is about 
Hyperstudio XCMDs.  The article is a general overview (though it assumes
you are  familiar with HS itself) and complete specifications can be
found in the  SAMPLES directory.  Not only that, but sample XCMD code is
inlcuded for  just about any language you care to use (that is capable
of doing the job,  that is).

      The ZBasic Zealot column this month gives you ZBasic programmers a 
way to simulate the Standard File tool's SFGetFile call, a GS Toolbox
call that  asks the user for a filename.  The code's not as tight as it
might be (by  the author's own admission!), but it does work!



[EOA]
[LIB]//////////////////////////////
             LIBRARY BIT BONANZA /
/////////////////////////////////
HOT Files You Can Download
""""""""""""""""""""""""""
By Tim Buchheim
    [T.BUCHHEIM]



                            >>> GNO Utilities <<<
                            """""""""""""""""""""

File #3846  LPR2.10.BXY  (GS)
Uploaded on 1/22/94 by B.TAO
About 25K (d/l time approx. 2 minutes 30 seconds @ 2400 baud)

Lpr is part of GNO's print spooler package.  It primarily supports the
ImageWriter II at this time.  Version 2.1 can autowrap long lines, do
text or binary dumps, eject the final page, reverse the final page
back to top of form (PageSaver feature), print page headers, skip
perforations, create a wide left margin (for 3-hole punches), send
printer escape codes, select print pitch/quality and select the
language font.  Written by Frank Lin.


File #3845  MKDMK1.11.BXY  (GS)
Uploaded on 1/22/94 by B.TAO
About 37K (d/l time approx. 3 minutes 42 seconds @ 2400 baud)

Makedmake is intended for use with dmake and presumably occ.  The IIgs
version requires GNO to run.  The lenviron v1.1.2 library is required
for recompilation.  Creates Makefiles for dmake.  Ported by G. Devin
Reade.


File #3801  DRWM1.1B17.BXY  (GS)
Uploaded on 1/15/94 by B.TAO
About 35K (d/l time approx. 3 minutes 30 seconds @ 2400 baud)

The Davius Rex Window Manager for GNO brings a convenient desktop
interface for GNO users who want to access their NDA's and CDev's
without having to start up the Finder.  Includes the ability to
iconify windows.  Version 1.1b17.


File #3800  COPYCAT1.50.BXY  (GS)
Uploaded on 1/15/94 by B.TAO
About 23K (d/l time approx. 2 minutes 18 seconds @ 2400 baud)

Copycat is a simple program that allows one tty in GNO (typically the
user's terminal) to send and receive data from another tty (typically
the modem serial port).  In this way, it can be used as an extremely
simple terminal program.  This is version 1.5.0 which fixes a few
bugs and simplifies the command line.  Written by James Brookes.


File #3799  CALLS2.0.BXY  (GS)
Uploaded on 1/16/94 by B.TAO
About 45K (d/l time approx. 4 minutes 30 seconds @ 2400 baud)

This utility is intended to help analyze the flow of a program by
laying out the functions called in a hierarchical manner.  It invokes
the C preprocessor on the named C source files, and outputs the
analyzed calling pattern to standard output.  All filenames given will
have their calling sequences combined into one hierarchy.  If a
filename of "-" is seen, standard input will be read.  Ported to GNO
2.0 by G. Devin Reade.


File #3798  BED1.1.BXY  (GS)
Uploaded on 1/15/94 by B.TAO
About 29K (d/l time approx. 2 minutes 54 seconds @ 2400 baud)

This is the only editor for GNO that can handle infinitely long
lines, null bytes in a file and allow binary editing.  It is intended
to replace Prosel-16's "Block Warden" for patching files without
leaving GNO.  Version 1.1 adds the ability to execute script files
for automated patching of programs.  Other improvements are
documented in the archive.  Written by Phil Vandry.


File #3796  TIMELIMIT11.BXY  (GS)
Uploaded on 1/15/94 by B.TAO
About 22K (d/l time approx. 2 minutes 12 seconds @ 2400 baud)

This utility limits the maximum time a particular program can run,
then terminates it.  Version 1.1, written by G. Devin Reade.


File #3795  JOINPARA1.0.BXY  (GS)
Uploaded on 1/15/94 by B.TAO
About 15K (d/l time approx. 1 minutes 30 seconds @ 2400 baud)

This utility joins separate lines in a text file into a single
paragraph.  A possible use would be to prepare a text file capture
from a BBS for importing into a word processor.  Version 1.0, written
by G. Devin Reade.



                            >>> Source Code <<<
                            """""""""""""""""""

File #3844  SPIN.BXY  (GS)
Uploaded on 1/21/94 by BYTEWORKS
About 6K (d/l time approx. 36 seconds @ 2400 baud)

This Pascal source shows how to implement the hourglass wait symbol
and the spinner you see in many ORCA products.  The calls also show
how to safely send characters to the screen in a way that won't show
up on the printer or in redirected output.


File #3840  DICE.N.SRC.BXY  (GS)
Uploaded on 1/17/94 by THE.VAGRANT
About 18K (d/l time approx. 1 minute 48 seconds @ 2400 baud)

This is the source (& NDA) for my dice rolling NDA.  It is written in
Orca/C.  The NDA alone was uploaded to A2 as Dice.bxy


File #3838  REPORTER.BXY  (ALL)
Uploaded on 1/16/94 by M.WEAGLEY
About 12K (d/l time approx. 1 minute 12 seconds @ 2400 baud)

This is the upload in reference to my posted message.  It contains 2
programs: Hello, and reporter.  They both require PROCMDs USING to 
work properly and some data that is not included.  USING is also not
included.


File #3770  READ320.BXY  (GS)
Uploaded on 12/26/93 by M.SAND1
About 4K (d/l time approx. 24 seconds @ 2400 baud)

A general purpose routine to read keyed input from the
Apple IIGS 320-graphics mode window. It allows the coder to
specify the screen coordinates, length, and color of the text,
and most important of all, it correctly handles backspaces
and other special keys which normally would produce
undesirable results when entered via read/readln in a
320-mode window. Written in ORCA/Pascal but easily modified
for C or other Pascal compilers which can access the Toolbox.



                   >>> comp.sys.apple2 <<<
                   """""""""""""""""""""""

File #3809  CSA2PROG.05.BXY  (ALL)
Uploaded on 1/16/94 by B.TAO
About 18K (d/l time approx. 1 minutes 48 seconds @ 2400 baud)

Digest of messages from the comp.sys.apple2.programmer Usenet
newsgroup, for the week ending Jan. 15, 1994.  This week's
highlights (total of 23 messages):
  o  AppleTalk screen holes and aux memory use
  o  Confused about GS/OS interrupts
  o  Graphics and ML


File #3808  CSA2GNO.05.BXY  (GS)
Uploaded on 1/16/94 by B.TAO
About 37K (d/l time approx. 3 minutes 42 seconds @ 2400 baud)

Digest of messages from the comp.sys.apple2.gno Usenet
newsgroup, for the week ending Jan. 15, 1994.  This week's
highlights (total of 50 messages):
  o  Using fileport and lpd
  o  IPC
  o  namespace problem?
  o  _INITGNOSTDIO() outdated


File #3807  CSA2SUBJ.05.BXY  (ALL)
Uploaded on 1/16/94 by B.TAO
About 5K (d/l time approx. 30 seconds @ 2400 baud)

Subject listing for the comp.sys.apple2, csa2.comm,
csa2.marketplace, csa2.gno and csa2.programmer digests
for the week ending Jan. 15, 1994.


File #3783  CSA2SUBJ.04.BXY  (ALL)
Uploaded on 1/9/94 by B.TAO
About 7K (d/l time approx. 42 seconds @ 2400 baud)

Subject listing for the comp.sys.apple2, csa2.comm,
csa2.marketplace, csa2.gno and csa2.programmer digests
for the week ending Jan. 8, 1994.


File #3782  CSAPROG.04.BXY  (ALL)
Uploaded on 1/9/94 by B.TAO
About 61K (d/l time approx. 6 minutes 6 seconds @ 2400 baud)

Digest of messages from the comp.sys.apple2.programmer Usenet
newsgroup, for the week ending Jan. 8, 1994.  This week's
highlights (total of 75 messages):
  o  65816, obscure details
  o  Controls won't show in NDA
  o  Development system opinions
  o  how to format LETextBox2 embedded changes in C?
  o  ORCA/C 2.0.1 bug list, version 1.5
  o  ProDos and old Dos 3.3 $7FD BLOADS -- Help?


File #3781  CSAGNO.04.BXY  (GS)
Uploaded on 1/9/94 by B.TAO
About 58K (d/l time approx. 5 minutes 48 seconds @ 2400 baud)

Digest of messages from the comp.sys.apple2.gno Usenet
newsgroup, for the week ending Jan. 8, 1994.  This week's
highlights (total of 108 messages):
  o  /usr or /var?
  o  Direct Terminals under GNO
  o  newuser
  o  printer problems using gno lpr...
  o  restartability
  o  would you like to have iwiiLanguage?



                            >>> AppleWorks <<<
                            """"""""""""""""""

File #3794  RFPV11.BXY  (ALL)
Uploaded on 1/14/94 by BRANDT
About 9K (d/l time approx. 54 seconds @ 2400 baud)

Randy's Free Patcher v1.1 customizes AppleWorks 4.01/4.02 with numerous
patches including reverse Yes/No questions, swap OA-S/OA-Ctrl-S for saves,
add MouseText in several places, use standard Getfile commands in file
listings, use the IIgs Enter key as a Down arrow in spreadsheets, etc.

File #3779  POUNDSMACRO.BXY  (ALL)
Uploaded on 1/5/94 by BRANDT
About 2K (d/l time approx. 12 seconds @ 2400 baud)

This TAPL program (Ultra 4) converts dollars and cents to English text for
check-writing macro programs. It takes around 700 bytes or so.



                      >>> Apple Assembly Line <<<
                      """""""""""""""""""""""""""

File #3839  AAL.FEB.86.BXY  (ALL)
Uploaded on 1/17/94 by M.DEATHERAGE
About 37K (d/l time approx. 3 minutes 42 seconds @ 2400 baud)

This issue contains articles on a wildcard-capable CATALOG for DOS 3.3, the
Mitsubishi 50740 series microprocessors (MPW IIgs assembler actually
recognizes these guys), a faster CRC method, corrections to faster garbage
collection and a DOS 3.3 patch to prevent directly-entered commands from
working.  


File #3837  AAL.MAY.88.BXY  (ALL)
Uploaded on 1/16/94 by M.DEATHERAGE
About 58K (d/l time approx. 5 minutes 48 seconds @ 2400 baud)

This issue is the last issue of Apple Assembly Line, which is discussed.
There are articles on a klaxon sound effect, AppleWorks segment functions,
more auxtypes in ProDOS catalogs, a new version (1.2) of BASIC.SYSTEM, an
Apple IIx wish-o-gram and many more small pieces of AppleWorks 1.3.


File #3836  AAL.APR.88.BXY  (ALL)
Uploaded on 1/16/94 by M.DEATHERAGE
About 65K (d/l time approx. 6 minutes 30 seconds @ 2400 baud)

This issue contains articles on transforming S-C source files into ProDOS
text files (a routine that helped make AAL available online!), modifying
CATALOG to show auxiliary types for all files, BLOADing a ProDOS directory,
a trip to Phoenix, and part 5 of AppleWorks 1.3, 'Menu Display and
Selection.'  


File #3835  AAL.MAR.88.BXY  (ALL)
Uploaded on 1/16/94 by M.DEATHERAGE
About 69K (d/l time approx. 6 minutes 54 seconds @ 2400 baud)

This issue contains articles on backing up and restoring a RamFactor DOS
partition, dissecting AppleWorks' SEG.M0 and SEG.M1 files, and the fourth
part of the AppleWorks 1.3 inspection, 'Applications Overlay Manager.'


File #3834  AAL.FEB.88.BXY  (ALL)
Uploaded on 1/16/94 by M.DEATHERAGE
About 50K (d/l time approx. 5 minutes @ 2400 baud)

This issue contains articles on printing percentages, another quick
two-digit decimal printer and printing the ProDOS date and time field.  The
third part of the AppleWorks 1.3 exploration series is 'Keyboard input
subroutines.'  


File #3833  AAL.JAN.88.BXY  (ALL)
Uploaded on 1/16/94 by M.DEATHERAGE
About 72K (d/l time approx. 7 minutes 12 seconds @ 2400 baud)

This issue contains more from AppleWorks 1.3 -- an interepretive string
display routine this time.  Also discussed are overhauling the S-C program
selector, a special version of the S-C assembler for huge symbol tables and
'new' reference books available.  


File #3832  AAL.DEC.87.BXY  (ALL)
Uploaded on 1/16/94 by M.DEATHERAGE
About 53K (d/l time approx. 5 minutes 18 seconds @ 2400 baud)

This issue contains the first of the six-part series on peeking inside
AppleWorks 1.3 -- this time examining passing parameters to subroutines and
string handling.  There's also Screen Dump PLUS! and an alert about the
limited year table in the ProDOS 8 slot-based clock driver.  


File #3831  AAL.NOV.87.BXY  (ALL)
Uploaded on 1/16/94 by M.DEATHERAGE
About 46K (d/l time approx. 4 minutes 36 seconds @ 2400 baud)

This issue contains articles on a pretty-fast DOS text-file writer, strange
decimal to binary conversions, getting a pointer from a handle and
converting BCD to binary with packing fields.  


File #3830  AAL.OCT.87.BXY  (ALL)
Uploaded on 1/16/94 by M.DEATHERAGE
About 41K (d/l time approx. 4 minutes 6 seconds @ 2400 baud)

This issue contains articles on a key-edit utility program for the IIgs, an
index to volume 7, how to clear the backup bit in ProDOS 8 file attributes
(secret for a long time), and a proposed 'ProDOS 8 init' standard.


File #3828  AAL.AUG.87.BXY  (ALL)
Uploaded on 1/16/94 by M.DEATHERAGE
About 35K (d/l time approx. 3 minutes 30 seconds @ 2400 baud)

This issue contains articles on using double lo-res graphics, patches to
the S-C assembler for building .SYSTEM files, viewing AppleWorks word
processor files and doing overlay assemblies with the S-C assembler.


File #3827  AAL.JUL.87.BXY  (ALL)
Uploaded on 1/16/94 by M.DEATHERAGE
About 42K (d/l time approx. 4 minutes 12 seconds @ 2400 baud)

This issue contains articles on demystifying super hi-res, a warning to
SmartPort programmers, reference books, another ProDOS 8 bug on the IIgs
(now documented as unsupported), EXEC and INPUT problems in BASIC.SYSTEM
and signed and unsigned comparisons.  


File #3826  AAL.JUN.87.BXY  (ALL)
Uploaded on 1/16/94 by M.DEATHERAGE
About 42K (d/l time approx. 4 minutes 12 seconds @ 2400 baud)

This issue contains articles on a selective CLEAR for Applesoft variables,
saving and restoring your environment, corrections to previous patches,
assembly listings in ProDOS text files and printing a tiny address booklet.


File #3825  AAL.MAY.87.BXY  (ALL)
Uploaded on 1/16/94 by M.DEATHERAGE
About 49K (d/l time approx. 4 minutes 54 seconds @ 2400 baud)

This issue contains articles on a new pattern-search monitor command,
reading the IIgs ROMs, more about patching ProDOS 8, the solution of a
numerics puzzle, a problem with the IIgs 3.5' drive firmware and zero page,
and IIgs tool set version numbers.  


File #3824  AAL.APR.87.BXY  (ALL)
Uploaded on 1/16/94 by M.DEATHERAGE
About 44K (d/l time approx. 4 minutes 24 seconds @ 2400 baud)

This issue contains articles on an 80-column screen display subroutine,
revisions to the UniDisk 3.5 DOS 3.3 patches, using PER for
position-independent code, a friendly decimal printing subroutine, a simple
line-input subroutine, notes, more S-C assembler macros and reviews.


File #3823  AAL.MAR.87.BXY  (ALL)
Uploaded on 1/16/94 by M.DEATHERAGE
About 36K (d/l time approx. 3 minutes 36 seconds @ 2400 baud)

This issue contains articles on the nasty bugs in ProDOS 8 v1.3, more notes
on the IIgs monitor, a commented disassembly of ProDOS from $DEF3 through
$DFE4, a conflict between $48 and 'G' (again) and bugs in, of all things,
FID with 400K volumes.  


File #3822  AAL.FEB.87.BXY  (ALL)
Uploaded on 1/16/94 by M.DEATHERAGE
About 36K (d/l time approx. 3 minutes 36 seconds @ 2400 baud)

This issue contains articles on pre-allocating disk space for files under
DOS 3.3, a smarter hexadecimal memory search, displaying 65802 registers
and IIgs tool tables, plus S-C assembler stuff, announcements and general
trivia.  


File #3821  AAL.JAN.87.BXY  (ALL)
Uploaded on 1/16/94 by M.DEATHERAGE
About 35K (d/l time approx. 3 minutes 30 seconds @ 2400 baud)

This issue contains articles on IIgs softswitches, a safer text speedup for
DOS 3.3, using the monitor Control-Y command in the IIgs, bugs in the /RAM
driver, new features of the IIgs monitor and more.  


File #3820  AAL.DEC.86.BXY  (ALL)
Uploaded on 1/16/94 by M.DEATHERAGE
About 47K (d/l time approx. 4 minutes 42 seconds @ 2400 baud)

This issue contains articles on eight ways to count bits in a
byte, checksumming the IIgs ROM, finding the names of people who worked on
the IIgs, a commented listing of ProDOS from $DE00 through $DEF2, the IIgs
monitor, two simple IIgs tool demos and a recode of hi-res address
calculations by Woz himself, plus more updates to older articles.  


File #3819  AAL.NOV.86.BXY  (ALL)
Uploaded on 1/16/94 by M.DEATHERAGE
About 43K (d/l time approx. 4 minutes 18 seconds @ 2400 baud)

This issue contains articles on ultra-fast integer square roots, a fix for
a bug in older versions of ProDOS, timing programs with a second machine,
the Apple IIgs reference manuals and the IIgs battery RAM and clock chip.


File #3818  AAL.OCT.86.BXY  (ALL)
Uploaded on 1/16/94 by M.DEATHERAGE
About 39K (d/l time approx. 3 minutes 54 seconds @ 2400 baud)

This issue contains articles on the introduction of the IIgs, screen
tricks, inverting a text window, a five-digit math puzzler from Woz,
automatic SETUP for S-C assembler revised, more selector notes and
converting hi-res to double hi-res.  


File #3816  AAL.AUG.86.BXY  (ALL)
Uploaded on 1/16/94 by M.DEATHERAGE
About 41K (d/l time approx. 4 minutes 6 seconds @ 2400 baud)

This issue contains articles on fast integer square roots, updated
memory/file maps for ProDOS, a DUMP command for DOS 3.3, compatibility with
the Laser 128, converting lo-res to double hi-res, two secret RGB modes,
more about BRUN and PEA, PEI and PER on the 65802/65816.  


File #3814  AAL.JUL.86.BXY  (ALL)
Uploaded on 1/16/94 by M.DEATHERAGE
About 34K (d/l time approx. 3 minutes 24 seconds @ 2400 baud)

This issue contains articles on replacement ProDOS QUIT code, using DP18
(18-digit BCD arithmetic for Applesoft) with ProDOS, booting DOS 3.3 from
the UniDisk 3.5 and counting the cycles used by BRL (and how you can do it
without extra hardware).  


File #3813  AAL.JUN.86.BXY  (ALL)
Uploaded on 1/16/94 by M.DEATHERAGE
About 50K (d/l time approx. 5 minutes @ 2400 baud)

This issue contains articles on the 65816 stack relative addressing mode,
fast 16X16 multiply and divide for the 65802, the real story about DOS and
BRUN, toggling between two values, using SmartPort, generalized MLI error
handling and a practical CRC use. 


File #3812  AAL.MAY.86.BXY  (ALL)
Uploaded on 1/16/94 by M.DEATHERAGE
About 37K (d/l time approx. 3 minutes 42 seconds @ 2400 baud)

This issue contains articles on modifying DOS 3.3 to use 3.5' disks,
recovering lost programs in the S-C assembler environment and even more
better division by seven.  


File #3811  AAL.APR.86.BXY  (ALL)
Uploaded on 1/16/94 by M.DEATHERAGE
About 35K (d/l time approx. 3 minutes 30 seconds @ 2400 baud)

This issue contains articles on tool for restoring lost catalogs, using
primitive text windows, dividing BCD values by four, booting into 80
columns, a faster boot for DOS 3.3 with more disk space and a screen hole
gaffe in the second Apple IIc ROM release.  


File #3810  AAL.MAR.86.BXY  (ALL)
Uploaded on 1/16/94 by M.DEATHERAGE
About 55K (d/l time approx. 5 minutes 30 seconds @ 2400 baud)

This issue contains articles on running ProDOS on non-Apple ROMs, even
faster 16X16 multiplication for the 65802 (or 65816), making a smarter
65816 disassembler, the fastest 6502 multiplication yet, PAL programming
hardware, reviews, and a routine to determine which 65XXX series processor
you're using!  


File #3805  AAL.JAN.86.BXY  (ALL)
Uploaded on 1/16/94 by M.DEATHERAGE
About 44K (d/l time approx. 4 minutes 24 seconds @ 2400 baud)

This issue contains articles on converting lo-res pictures to hi-res, a
question on returning from BRUN, text file transfer under DOS 3.3, fast
6502 and 65802 multiplication routines, a RAMWorks compatible auxmove
routine, a correction to the dual DOS 3.3/ProDOS disk creator and trivia
from Bill Mensch on the origin of the number '6502'.  


File #3804  AAL.DEC.85.BXY  (ALL)
Uploaded on 1/16/94 by M.DEATHERAGE
About 28K (d/l time approx. 2 minutes 48 seconds @ 2400 baud)

This issue contains articles on bugs in last month's RAM disk driver,
tracing the ProDOS MLI, a review of the OKS Kache Card, more puzzle
solutions, pseudo-variables in machine language and computing the day of
the week.  


File #3803  AAL.NOV.85.BXY  (ALL)
Uploaded on 1/16/94 by M.DEATHERAGE
About 36K (d/l time approx. 3 minutes 36 seconds @ 2400 baud)

This issue contains articles on a 15K language card-based RAM disk for DOS
3.3, a patch to ProDOS QUIT to allow the right-arrow key, three solutiosn
to the previous month's puzzle, a commented disassembly of the ProDOS QUIT
call, and two ways to merge fields into one byte.  


File #3802  AAL.OCT.85.BXY  (ALL)
Uploaded on 1/16/94 by M.DEATHERAGE
About 63K (d/l time approx. 6 minutes 18 seconds @ 2400 baud)

This issue contains articles on a ProDOS driver that records what calls are
made to it, a DOS 3.3 RWTS patch to do the same recording, a puzzle in a
program that erases itself and more, more on putting 65C02 chips in older
Apple II machines, a multiple-column disassembler, reviews, news and more.


File #3778  AAL.SEP.85.BXY  (GS)
Uploaded on 1/4/94 by M.DEATHERAGE
About 39K (d/l time approx. 3 minutes 54 seconds @ 2400 baud)

This issue contains a prime benchmark for the 65802, putting DOS and ProDOS
on the same disk, software sources for 65802 and 65816, problems putting
65802 chips in Apple II+ computers and a short binary-to-decimal conversion
routine in 65802 (good for 65816 as well).  



                            >>> Miscellaneous <<<
                            """""""""""""""""""""

File #3797  ANARCHDSGNS.BXY  (GS)
Uploaded on 1/15/94 by B.TAO
About 343K (d/l time approx. 34 minutes 18 seconds @ 2400 baud)

This packed HFS disk contains the complete works of David Roberts
(aka Davius Rex) as of December 1993.  They include:  DungeonQuest
II, LZSS Packer and KwikLoader, QuickC, Scroll Code Compiler, RexLib,
Multiplication Table Maker and SpriteMaker/Viewer.  Documentation for
each package is included on the HFS disk.


File #3793  MERLSYS6MAC.BXY  (GS)
Uploaded on 1/12/94 by E.SHEPHERD
About 6K (d/l time approx. 36 seconds @ 2400 baud)

This archive contains two macro files for Merlin 16+.  The first,
EDS.GSOS.Macs.s, contains ORCA/M-like macros for all GS/OS calls through
System 6.0.1.  The second, System.6.Macs.s, contains complete macros and
supermacros for all toolbox calls documented in the Programmer's Reference
for System 6.0, and in the Programmer's Reference for System 6.0.1.
Note: these files are text with their hi bits set; viewing them with
editors other than Merlin may cause them to appear as garbage.


File #3784  UCASE.2.0.BXY  (ALL)
Uploaded on 1/9/94 by KEN.GAGNE
About 1K (d/l time approx. 6 seconds @ 2400 baud)

UCASE2 is version 2.0 of TJE public domain (free) program to
instantly convert the AppleSoft program currently in memory to all
upper case characters. This is useful on old ]['s that can't display
lower case. To use UCASE2, simply load your AppleSoft program and
BRUN UCASE2. It works under both DOS 3.3 and ProDOS. Once in memory,
it can also be invoked with CALL 768. By Jim Ferr, author of Warp Six.


File #3777  LILYPADS.BXY  (GS)
Uploaded on 1/3/94 by S.FORTIN3
About 13K (d/l time approx. 1 minutes 18 seconds @ 2400 baud)

Lilypads is a simple children's game written in 3dlogo.  It requires 3dlogo
and (right now) the Talking Tools (that will change when the next version
of 3dlogo is released in a week or so).  See docs for more information.
If you have version 1.0 of 3dlogo you will have to delete two lines to
make the program work (there is an enclosed file describing which two).
Comments appreciated.  Shareware $2.


File #3773  SPLASHER.BXY  (GS)
Uploaded on 12/31/93 by C.JUNIEL
About 148K (d/l time approx. 14 minutes 48 seconds @ 2400 baud)

Splasher is a program that puts an initial splash screen and music in a 
program.  A programer can link a supplied dynamic to the program to put 
up the splash screen and play music.  This will work with any S16 program
There is a desk top program(Splash Editor) that can edit the graphic
program and choose the music to play.


File #3772  CLAYSMTOOL.BXY  (GS)
Uploaded on 12/30/93 by C.JUNIEL
About 9K (d/l time approx. 54 seconds @ 2400 baud)

Clays.MTool is a user tool that can play Music Studio, Sound Smith 
SynthLAB, and Music Composer music files
If you have wanted to put music ability into your program, check
this out!  



[EOA]
[RTC]//////////////////////////
                   RTC WATCH /
/////////////////////////////
Bits and Pieces from A2Pro Real Time Conferences
""""""""""""""""""""""""""""""""""""""""""""""""
By Tim Buchheim
    [T.BUCHHEIM]



             >>> Character Devices and Generated Drivers <<<
             """""""""""""""""""""""""""""""""""""""""""""""

<R.SANT1>    Hey, when accessing character devices, do you use the Write, 
             or DWrite.  GSOS manual says both will work.

<B.WELLS5>   Both will work, but I like using Write myself.

<R.SANT1>    I've been playing around with trying to make my modem work 
             form the desktop (which is why the character device 
             questions), and I can see it receiving the data strings 
             (lights blinking), but no return response (i.e. going off 
             hook)

             Is this due to recieving data too fast?

<B.WELLS5>   I'm not sure. I haven't done much in the way of accessing the 
             modem (except through PT)...  So the driver doesn't return 
             anything?  Can you make the modem dial through the driver?

<R.SANT1>    I do the open, no error, do a write of a string (one 
             character at a time), of ATDT myotherphone#, and nothing 
             happens (except lights flickering).

<B.WELLS5>   So the modem light show that it is receiving the chars...
             Hmmmm...   <getting GS/OS ref :>

<R.SANT1>    I think maybe the feed to the modem is too fast.

<T.BUCHHEIM> Is the GS using the same baud rate as the modem?

<B.WELLS5>   How fast is your modem, Rob?

<R.SANT1>    2400 (Hayes)  Just checked my control panel, and the modem 
             port is at 2400 also.

<B.WELLS5>   Should be receiving the chars at the right speed, then.

<R.SANT1>    I dunno either.  Does the GSOS send charactars to the device 
             in 8 bit or 16 bit format?

<B.WELLS5>   GS/OS sends exactly the number of bytes you tell it to. If you 
             tell it to send one char (byte length) that's all that is 
             sent.  Do you use DWrite or Write?

<R.SANT1>    I tried both, same result.  Walking thru with GSBug, no 
             errors returned.

<B.WELLS5>   Have you done a DInfo on the device driver?

<R.SANT1>    Yes, that is how I determined which device is the modem 
             (with a DInfo Loop)

<B.WELLS5>   What is the Device characteristics word set to?

<R.SANT1>    0100 0011 0110 0000

<B.WELLS5>   Hmmm....The Modem driver is a _generated_ device.  Meaning 
             that the driver isn't designed specificly for the modem and
             there might be some incompatibilities involved. It should 
             work, though....

<R.SANT1>    What about the wait status?  Does that need to be set?

<B.WELLS5>   The GS/OS Device Driver Reference has a few pages on Generated
             Drivers...<looking>

             p 167. "Generated devices support wait mode only."
             p 168. "attempting to set the mode to no wait status results in
             error $22 (invalid parameter)."

<R.SANT1>    I haven't reset it, so whatever the system has it set at, 
             it is still there.  In the charactaristics word, bit 8-9 is 
             speed.  Both are set, what does this correspond to?

<QUALITY>    00 = Slow, 01 = Normal, 10 = Fast, 11 = Real fast   <ducking>

<R.SANT1>    :)

<B.WELLS5>   Actually, this means that the device is "Not speed dependent".

<R.SANT1>    Where is that found at?  The Device Driver Reference?

<B.WELLS5>   Yep. Page 22.

<R.SANT1>    I need to get that book too.

<B.WELLS5>   It's somewhat useful. This is the first time I've really 
             looked into it :)  One problem with a generated driver is 
             that it only supports wait mode. A modem really needs a no 
             wait mode.  See p 110 of the GS/OS Ref. for wait vs. no wait 
             modes.  Well, I don't see much that can be changed on the 
             way a generated modem driver works. <sigh>

             There _might_ be a modem driver or an example on using the
             generated driver in the library.

<R.SANT1>    I was looking at Steve's  "Shellterm" program, and he is using 
             the GSOS drivers, and setting it to a no wait status with
             DControl.

<B.WELLS5>   Hmmm...Well according to the dox, only wait mode can be 
             used...I wonder why that is?

             You can try to set the driver to no wait mode...the worse 
             thing that can happen is an error code ($22).

<R.SANT1>    For the recieving portion of the code, I can see where that 
             will be needed, but for just making it dial to see if it is
             recieving correct characters, I can't see how it will make 
             a difference.

<B.WELLS5>   Me either, Rob. It should work...

<R.SANT1>    Must have a hidden bug in the code.  CALL TERMINEX!!!!!



                         >>> Copyright issues <<<
                         """"""""""""""""""""""""

<R.ADAMS48>    I've been in a debate with one of my users about its 
               designation as shareware...

<A2PRO.HELP>   Oh?  What's the problem?

<T.BUCHHEIM>   Someone not want to pay, or something?

<R.ADAMS48>    He believes that since it is crippled, it is not 
               classified as shareware.  He also believes that $35 is 
               above the level of a shareware program...

<T.BUCHHEIM>   Well, he's wrong

<R.ADAMS48>    He paid his fee right away...

<A2PRO.HELP>   Rick:  He's incorrect.  Did you register the program?

<T.BUCHHEIM>   there are $200 shareware programs, I've seen them

<A2PRO.HELP>   What Tim said.  Also, re: the crippling.. he can call it a 
               demo if he wants to.  :)  Rick:  Is it truly a copyrighted 
               work?
               (ie did you register a copyright with the Federal Gov't?)

<R.ADAMS48>    At the moment it is copyrighted simply because I say so.  
               It is not yet registered.  This is OK according to several
               discussions I have seen within the BB and text files 
               related to this in the library...Has anything changed?

<A2PRO.HELP>   Rick:  I see.  Were I you, I would register the program so 
               that you could prosecute under Federal Copyright Law should 
               you have a problem.

<T.BUCHHEIM>   Sloanie: it is still copyrighted, even if he hasn't 
               registered it. but he can't prosecute if it isn't 
               registered, or at least not win :)

<A2PRO.HELP>   It's a lot more difficult to _prosecute_, as I understand 
               it, without a registration.

<M.DEATHERAGE> You can sue for copyright infringement any time, but it's a lot
               easier to win if your work is registered with the copyright
               office (Library of Congress).

<R.SANT1>      How much does it cost to register something with the Library 
               of Congress (i.e., file for a copyright)?

<T.BUCHHEIM>   $10 I believe

<R.SANT1>      That's all?

<T.BUCHHEIM>   that $10 figure is from my encyclopedia which is from 1985
 


                      >>> TML Pascal and System 6 <<<
                      """""""""""""""""""""""""""""""

<J.GATES6>     Does anyone program with TML Pascal?

<T.BUCHHEIM>   I use ORCA/Pascal, never used TML

<R.ADAMS48>    John... I used to use TML Pascal.

<A2PRO.HELP>   I've never used TML Pascal either... what are you having 
               problems with?

<R.ADAMS48>    I switched to ORCA when I found that TML was _very_ buggy 
               and lacked complete support.  Mike Westerfield supports 
               ORCA/Pascal _very_ well.

<J.GATES6>     I just loaded System 6.0 and TML Pascal compiles but does 
               not run the program.  It just comes back to the code.

<T.BUCHHEIM>   Hmmm...probably a problem with TML Pascal, it's a bit old

<A2PRO.HELP>   TML Pascal has not been updated in a _long_ time.

<J.GATES6>     I've got 1.8 meg of ram.  It works fine with 5.04

<T.BUCHHEIM>   Will the program run okay from the Finder? (might be a 
               memory problem, system 6 needs more memory than previous
               versions of the system software.

<A2PRO.HELP>   I assume from your comment that it didn't work like this in
               earlier versions of the software...  I'd suggest switching 
               to ORCA/Pascal.

<J.GATES6>     I know.  I've had that suggestion before.

<M.DEATHERAGE> TML Pascal barely worked under 5.0.4.  The environment has 
               a bug list longer than all of our sleeves put together and 
               there's been no update, ever.

<R.ADAMS48>    Well, there was _1_ update... to Complete Pascal, but that 
               made it buggier!  ; )

<J.GATES6>     That figures.

<A2PRO.HELP>   :)

<R.ADAMS48>    That's when _I_ switched to ORCA.  And Oooooh, so much 
               better!

<J.GATES6>     ORCA is from Byteworks, right?

<A2PRO.HELP>   Besides... ORCA/Pascal can be combined with other 
               languages...

<T.BUCHHEIM>   With optimizations turned on, the file size improvements
               and speed increases are great in ORCA/Pascal

<A2PRO.HELP>   ...and you can use Bryan Pietrzak's GSLib to make 
               programming easier.

<A2PRO.HELP>   Yes, ORCA/Pascal (and all of the ORCA products) are produced 
               by The Byte Works, Inc.

<T.BUCHHEIM>   and updates are quite frequent

<A2PRO.HELP>   (GSLib is available right here in the A2Pro Library, BTW).
               The latest version is 2.0 something.

<R.ADAMS48>    2.0.1

<J.GATES6>     Does Orca/Pascal use the same standard that TML Pascal II 
               uses?

<T.BUCHHEIM>   ORCA is fully follows ISO standard  I don't know about 
               TML :) a few changes might be necessary in your code to 
               move it to ORCA, though, especially in toolbox interfaces 
               and compiler directives



[EOA]
[AAL]///////////////////////////////////////
         TOUR OF 8/16 APPLE ASSEMBLY LINE /
//////////////////////////////////////////
The Apple Assembly Journal
""""""""""""""""""""""""""
By Dave Miller
    [JUST.DAVE]



      >>> Apple Assembly Line - Apr. 1981 - Vol. 1, No. 7 <<<
      """""""""""""""""""""""""""""""""""""""""""""""""""""""

This file is in Library 22, it's AAL.APR.81.BXY, file #3334.

Here's the directory layout for AAL.APR.81:
   (Note that there was no ProDOS information supplied in the first issues)

 Articles/
     Front.Page       Introduction and cover page - table of contents and
                           info on a new (at the time) symbol cross-
                           reference program to go with S-C Assembler II.
                           Also, info on how to get an 80 column assembly
                           listing with an Apple Parallel Printer
                           Interface.
     Text.File.IO     'Text File I/O in Assembly Language Programs' - how
                           to read and write a text file from Assembly
     Part.1           This file contains three articles:
                      'Patch S-C Assembler II for More Errors' - patch to
                           allow the S-C Assembler to display more than one
                           error at a time.
                      'Fast String Input Routine for Applesoft' - ampersand
                           command for Applesoft to allow commas and colons
                           in input statements.
                      'Applesoft Internal Entry Points' - chart showing
                           where Applesoft processes all the BASIC commands.
     Hiding.Undr.DOS  'Hiding Things Under DOS' - how to move HIMEM and the
                           DOS 3.3 buffers so that you have a protected
                           area to put your programs in where Applesoft
                           won't bother it.
     DOS.Format.List  'Commented Listing of DOS 3.2.1 Format', 'Commented
                           Listing of DOS 3.3 Format' - articles that go
                           with the DOS 3.x disassemblies found in the
                           DOS.3.3 folder.  It explains some of the
                           differences between the two, also.
     AS.Substr.srch   'Substring Search for Applesoft' - ampersand command
                           for Applesoft that will check if a substring
                           exists inside a string, for example, 'el' can
                           be found inside 'hello'.
 DOS.3.3/
     Demo.Txt.Fl.Rd    Demonstration of reading a text file from Assembly
     DOS321BEA0.BFFF   DOS 3.2.1 disassembly
     DOS33.BEAF.BFFF   DOS 3.3 disassembly
     FastStr.Input     Source for fast 'input anything' command
     Substr.search     Source for the substring search command
     Test.Str.Input    Applesoft BASIC program that uses the &GET command
     Test.Subst.Srch   Applesoft BASIC program that uses the substring
                            command

      Wow...  talk about nostalgia!  For someone who remembers when DOS 
3.3 was the 'in thing', this brings back a lot of memories :)  The
disassemblies are fun to browse through.  If you ever wanted to find out
how to format a disk in a Disk II drive, this is a good place to learn :)

      If you're planning to do text file I/O in DOS 3.3, the routines in 
this issue for text file I/O are very helpful.  There are better ways to
do it in ProDOS, but if you're in DOS 3.3, you'll need this, or else
stick with RWTS and do it yourself :)

      As usual (this appears to be becoming a regular installment) we 
have more great ampersand commands to add to BASIC.  This is another (as
usual) must- have installment of Apple Assembly Line!



[EOA]
[OFF]///////////////////////////////
                 OFF THE DEEP END /
//////////////////////////////////
Return of the Top 10 List
"""""""""""""""""""""""""
By Nate Trost
 [A2PRO.GELAMP]



            >> Top 10 Reasons A2Pro Real Time Conferences <<
            >>    Are Better Than #appleiigs On IRC       <<
            """"""""""""""""""""""""""""""""""""""""""""""""

  10.  No DCC, but we have Minidisc!
   9.  You can receive help from people who have written programs that 
       actually made it to v1.0.
   8.  Fabio and Cindy's Tuesday RTC on improving the ol' firmware.
   7.  You can come in six nights a week and find actual programming 
       discussion rather than some guy from Greenland babbling about his 
       armpits.
   6.  No hordes of Amiga geeks with dreams of Super Nintendom asking 
       about the 65816.
   5.  You can party with the bunch who discovered that the actor playing 
       Barney is, in reality, Dr. Tom.
   4.  A2Pro has RTCs dedicated to everything from graphics and sound 
       programming, to the toolbox, to assembly, general programming and 
       more.
   3.  Frequent guest appearances by the beloved Mr T. ("No GSBug?  Ooh, I
       pity da fool!")
   2.  Special Beginner's Night on Friday's that help those new to 
       programming.
   1.  No netsplits!

 
                 
[EOA]
[LOG]//////////////////////////////
                         LOG OFF /
/////////////////////////////////
GEnieLamp Information
"""""""""""""""""""""

    o   COMMENTS: Contacting GEnieLamp

         o   GEnieLamp STAFF: Who Are We?



GEnieLamp Information   GEnieLamp is published on the 1st of every month
"""""""""""""""""""""   on GEnie page 515.  You can also find GEnieLamp on
the main menus in the following computing RoundTables.


 RoundTable      Keyword  GEnie Page     RoundTable      Keyword  GEnie Page
 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 DigiPub         DIGIPUB      1395        Atari ST        ST          475
 Macintosh       MAC          605         IBM PC          IBMPC       615
 Apple II        A2           645         Apple II Dev.   A2PRO       530
 Macintosh Dev.  MACPRO       480         Geoworks        GEOWORKS    1050
 BBS             BBS          610         CE Software     CESOFTWARE  1005
 Mini/Mainframe  MAINFRAME    1145        Programming     PROGRAMMING 1445
 Data Comm.      DATACOMM     1450        (Windows Coming Soon!)

     GEnieLamp is also distributed on CrossNet, Internet, America Online,
Delphi and many public and commercial BBS systems worldwide.


     o To reach GEnieLamp on Internet send mail to genielamp@genie.geis.com
       OR jpeters@sosi.com

     o Our Internet anonymous FTP address is: sosi.com.  All current
       versions of GEnieLamp are available in the ~/pub/GEnieLamp
       directory.  Due to the added expense involved, we ask that when you
       get GEnieLamp via the anonymous ftp for GEnieLamp, that it _not_ be
       ftp'd during the hours of 9AM and 5PM Eastern Standard Time.  We
       appreciate your cooperation in this matter.

     o Current issues of all versions of GEnieLamp as well as back issues
       of GEnieLamp IBM are File Requestable (FREQable) via FidoNet (Zones
       1 through 6) from 1:128/51 and via OURNet (Zone 65) from 65:8130/3.
       SysOps should use the following "magic names" to request the current
       issue of the indicated GEnieLamp platform (FREQ FILES for names of
       back issues of GEnieLamp IBM): 

                     Platform                    Magic Name To Use
                     """"""""                    """""""""""""""""
                     GEnieLamp IBM .................. GLIBM
                     GEnieLamp ST ................... GLST
                     GEnieLamp A2Pro ................ GLA2PRO
                     GEnieLamp Macintosh ............ GLMAC
                     GEnieLamp TX2 .................. GLTX2
                     GEnieLamp A2 ................... GLA2

     o Back issues of GEnieLamp are available in the DigiPub RoundTable
       Library #2 on page 1395.  M1395;3

     o GEnieLamp pays for articles submitted and published with online
       GEnie credit time.  Upload submissions in ASCII format to library
       #42 in the DigiPub RoundTable on page 1395 (M1395;3) or Email it to
       GENIELAMP.  On Internet send it to: genielamp@genie.geis.com

     o We welcome and respond to all E-Mail. To leave comments, suggestions
       or just to say hi, you can contact us in the DigiPub RoundTable
       (M1395) or send GE Mail to John Peters at [GENIELAMP] on page 200.

     o If you would like to meet us "live" talk to us every Wednesday
       night in the Digi*Pub Real-Time Conference, 9:00 EDT.  M1395;2

     o The Digital Publishing RoundTable is for people who are interested
       in pursuing publication of their work electronically on GEnie or via
       disk-based media.  For those looking for online publications, the
       DigiPub Software Libraries offer online magazines, newsletters,
       short-stories, poetry and other various text oriented articles for
       downloading to your computer.  Also available are writers' tools and
       'Hyper-utilties' for text presentation on most computer systems. In
       the DigiPub Bulletin Board you can converse with people in the
       digital publishing industry, meet editors from some of the top
       electronic publications and get hints and tips on how to go about
       publishing your own digital book.  The DigiPub RoundTable is the
       official online service for the Digital Publishing Association.  To
       get there type DIGIPUB or M1395 at any GEnie prompt.



                           >>> GEnieLamp STAFF <<<
                           """""""""""""""""""""""

  GEnieLamp    o John Peters         [GENIELAMP]    Publisher/Editor
  """""""""
        IBM    o Bob Connors         [DR.BOB]       EDITOR
        """    o David C. Leithauser [D.LEITHAUSER] HyperRead Editor
               o Brad Biondo         [B.BIONDO]     IBM Staff Writer
               o Tippy Martinez      [WIN.LAMP]     IBM Staff Writer
               o David Holmes        [D.HOLMES14]   IBM Staff Writer
               o Don Lokke           [D.LOKKE]      Cartoonist

   WINDOWS     o Tippy Martinez      [WIN.LAMP]     EDITOR
   """""""     o John C. Osarczuk    [J.OSARCZUK]   Windows Staff Writer
               o Brad Biondo         [B.BIONDO]     Windows Staff Writer


  MACINTOSH    o Richard Vega        [GELAMP.MAC]   EDITOR
  """""""""    o Tom Trinko          [T.TRINKO]     Mac Staff Writer
               o Bret Fledderjohn    [FLEDDERJOHN]  Mac Staff Writer
               o Ricky J. Vega       [GELAMP.MAC]   Mac Staff Writer

   ATARI ST    o John Gniewkowski    [GENIELAMP.ST] ST EDITOR
   """"""""    o Mel Motogawa        [M.MOTOGAWA]   ST Staff Writer
               o Sheldon Winick      [S.WINICK]     ST Staff Writer
               o Richard Brown       [R.BROWN30]    ST Staff Writer
               o Al Fasoldt          [A.FASOLDT]    ST Staff Writer
               o Fred Koch           [F.KOCH]       ST Staff Writer
               o Sandy Wolf          [S.WOLF4]      ST Staff Writer

 ATARI ST/TX2  o Cliff Allen         [C.ALLEN17]    EDITOR/TX2
 """"""""""""
 ATARI [PR]    o Bruce Faulkner      [R.FAULKNER4]  EDITOR/GEnieLamp [PR]
 """"""""""

   APPLE II    o Doug Cuff           [EDITOR.A2]    EDITOR
   """"""""    o Tara Dillinger      [TARA]         Co-Editor
               o Phil Shapiro        [P.SHAPIRO1]   A2 Staff Writer
               o Mel Fowler          [MELSOFT]      A2 Staff Writer
               o Darrel Raines       [D.RAINES]     A2 Staff Writer
               o GEna E. Saikin      [A2.GENA]      A2 Staff Writer
               o Steve Weyhrich      [S.WEYHRICH]   A2 Staff Writer

       A2Pro   o Nate C. Trost       [A2PRO.GELAMP] EDITOR
       """""   o Tim Buchheim        [T.BUCHHEIM]   Co-Editor

       ETC.    o Jim Lubin           [J.LUBIN]      Add Aladdin/Scripts
       """"    o Scott Garrigus      [S.GARRIGUS]   Search-ME!
               o Bruce Maples        [B.MAPLES]     Copy Editor
               o Mike White          [MWHITE]       (oo) / DigiPub SysOp
               o Susie Oviatt        [SUSIE]        ASCII Artist


\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\////////////////////////////////////
 Bulletin  board messages  are reprinted verbatim,  and are included in
 this publication with permission from GEnie and the source RoundTable.
 GEnie, GEnieLamp Online Magazines,  and T/TalkNet Online Publishing do
 not guarantee the accuracy or suitability  of any information included
 herein.   Opinions expressed are  those of the individual,  and do not
 represent opinions of GEnie,  GEnielamp Online Magazines, or T/TalkNet
 Online Publishing.

 Material published in this edition may be reprinted  under the follow-
 ing terms only.  Reprint permission granted,  unless otherwise  noted,
 to registered  computer user groups and  not for profit  publications.
 All  articles must  remain unedited and  include the issue  number and
 author at the top of each article  reprinted.  Opinions present herein
 are those  of the individual authors  and does not necessarily reflect
 those of the publisher or staff of GEnieLamp.  We reserve the right to
 edit all letters and copy.  Please include the following at the end or
 the beginning of all reprints:
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\////////////////////////////////////
 (c) Copyright 1994  T/TalkNET  Online Publishing  and  GEnie.  To join 
 GEnie,  set your modem to 2400  baud (or less)  and half duplex (local
 echo).   Have the modem dial 1-800-638-8369.   When you  get a CONNECT
 message, type HHH.  At the U#=  prompt, type: XTX99014,DIGIPUB and hit
 the [return] key.  The system will then  ask you for your information.
 Call (voice) 1-800-638-9636 for more information.
////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
[EOF]
