


     |||||| |||||| ||  || |||||| ||||||
     ||     ||     ||| ||   ||   ||
     || ||| ||||   ||||||   ||   ||||               Your
     ||  || ||     || |||   ||   ||
     |||||| |||||| ||  || |||||| ||||||             GEnieLamp A2Pro

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


                    ~ WELCOME TO THE A2Pro GENIELAMP! ~

          ~ORCA/PASCAL V2.0 ~ MD-BASIC V2.0 ~ TWILIGHT II V1.1 ~
    ~ NATE C. TROST JOINS GENIELAMP A2PRO ~ LARRY RAMBLES ONCE AGAIN ~
          ~ BLUE PLATE SPECIAL CONTEST ~ GNO PROGRAMMING SERIES ~
          ~ NEW DEVELOPERS JOIN THE A2PRO FAMILY IN CATEGORY 29 ~
                  ~ HOT NEWS ~ HOT MESSAGES ~ HOT VIEWS ~

 ////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
  GEnie Lamp A2Pro  ~ A T/TalkNET OnLine Publication  ~  Vol.1, Issue 04
  """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
   Publisher.................................GEnie Information Services
    Senior Editor..........................................John Peters
     Editor.................................................Jim Couch

   ~ GEnieLamp IBM ~ GEnieLamp [PR]/TX2 ~ GEnieLamp ST ~ GEnieLamp A2 ~
       ~ GEnieLamp MacPRO ~ GEnieLamp A2Pro ~ GEnieLamp Macintosh ~
             ~ Member Of The Disktop Publishing Association ~
 ////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

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

 FROM MY DESKTOP ......... [FRM]        A2PRO ROUNDTABLE STAFF . [DIR]
  Notes From The Editor.                 Staff Directory.

 HEY MISTER POSTMAN ...... [HEY]        DEVELOPER'S CORNER ...... [DEV]
  Is That A Letter For Me?               News from A2Pro Developers.

 RTC WATCH ............... [RTC]        A2U CAMPUS GREEN ........ [A2U]
  A2Pro RTC News.                        Your GEnieLamp guide to A2U.

 LIBRARY BIT BONANZA ..... [LIB]        RAMBLINGS................ [RAM]
  HOT Files You Can Download.            Ramblings of a Wannabe Programmer.

 THE MANAGER TIPS ........ [MAN]        TO OUR INTERNET FRIENDS .. [INT]
  Programing for The Manger.             Comp.sys.apple2.programmer.

 GNO TUTORIAL SERIES ..... [GNO]        LOG OFF ................. [LOG]
  Programming the serial ports.          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 costs only $4.95 a month for  unlimited evening  and
"""""""""""   weekend  access  to  more  than  100  services   including
electronic mail,  online encyclopedia,  shopping,  news,  entertainment,
single-player games,  multi-player chess and bulletin  boards on leisure
and  professional  subjects.   With  many other services,  including the
largest  collection of files  to download and the best online games, for
only  $6  per hour  (non-prime-time/2400  baud).   To sign up for  GEnie
service,  call (with modem) 1-800-638-8369.  Upon  connection  type HHH.
Wait for the U#= prompt. Type: XTX99368,GENIE and hit RETURN. The system
will then prompt you for your information.
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""



[EOA]
[FRM]//////////////////////////////
                 FROM MY DESKTOP /
/////////////////////////////////
Notes From The Editor
"""""""""""""""""""""
By John Peters
   [GENIELAMP]



CHANGES, CHANGES, CHANGES!   Change is good, right?   Well, I certainly
""""""""""""""""""""""""""   hope so, 'cause there is a whole lot of
changing going on here at GEnieLamp.  I suppose the best place to start is
the changes that have taken place on page 515, our home, the GEnieLamp
RoundTable.  (Keep in mind that many of these changes are happening as I
write this - the changes outlined below are subject to change!)  First off,
the RoundTable is no longer a RoundTable but just a single page.  Here's
the new menu you will find when on page 515:

GEnie                          GENIELAMP                       Page  515
                     Computing on GEnie Newsletter

 1.[*]GEnieLamp IBM Magazine
 2.[*]GEnieLamp Atari Magazine
 3.[*]GEnieLamp Mac Magazine
 4.[*]GEnieLamp MacPRO Magazine
 5.[*]GEnieLamp Apple II Magazine
 6.[*]GEnieLamp A2Pro Magazine

 7.[*]FEEDBACK to GEnieLamp
 8.   Digital Publishing RoundTable

     As you can see the bulletin board, libraries and information files are
gone and all that is available is the GEnieLamp Magazines, Feedback and a
gateway to the new DigiPub RoundTable.  (More on that later.)  On the
negative side, this means that Aladdin no longer works on this page.  This
goes for previous GET THE LAMP scripts as well.  On the positive side, our
resident script writer, Jim Lubin has come up with a new Aladdin script
which will be available in the DigiPub library as well as the Aladdin
support RoundTables within the next couple of weeks.


But The Big News Is...   Now, instead of capturing GEnieLamp, you can
""""""""""""""""""""""   DOWNLOAD the magazine.  No more waiting through a
long capture session!   Just download GEnieLamp as you would any other file
here on GEnie.  (We recommend Zmodem for best results.)   If you prefer the
old method, just turn on your capture buffer and [L]ist the magazine to you
computer.  (Again, this is in the planning stage and may not be implemented
in time for the May 1st issue release.  However, the option to _download_
GEnieLamp is coming RSN!)

PLUS!   Starting with this issue GEnieLamp Online Magazine is going to a
"""""   twice a month publishing schedule.  Now you can get your favorite
version of GEnieLamp (GEnieLamp ST, Mac, IBM and A2) on the 1st and the
15th of every month.

AND BEST OF ALL...       ~ GEnieLamp IS STILL GEnie*Basic! ~
""""""""""""""""""
                               [*][*][*]


WHY A NEW ROUNDTABLE?   The GEnieLamp RoundTable was originally set up
"""""""""""""""""""""   primarily for the distribution of GEnieLamp
Magazine.  Our secondary purpose was to promote and distribute other online
newsletters.  But electronic publishing goes much deeper then just
magazines and newsletters.  Therefore, we came to the conclusion that the
time has come for electronic publishing and hence, the Digital Publishing
RoundTable came online.

     The Digital RoundTable (or DigiPub for short) is a GEnie*Value RT here
on GEnie for people who are interested in pursuing publication of their
work electronically whether here on GEnie or via disk-based media.  For
those looking for online publications, the DigiPub library offers online
magazines, newsletters, short-stories, poetry, informational text files 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 online book.  As an added bonus,
the DigiPub RoundTable is the official online service for the Digital
Publishing Association.

     (Whew!)  Until next month...
                                                     John Peters
                                                     [GENIELAMP]

                               [*][*][*]


                             ,_____       ,_____
                             (__  |       (__  |
                         ||     | |          | |
                        (  \   ^| |^^^^^^^^^^| |
                       /X   ^^^                 \
                      (                          \,,,,,,
                    <_=_________________________________>

    Title: Never Bite a Computer Mouse Lying in the Sink
   Medium: Phospor
   Artist: Rod Martin



[EOA]
[DIR]//////////////////////////////
          A2PRO ROUNDTABLE STAFF /
/////////////////////////////////
By Jim B. Couch
     [J.COUCH2]
                             ______________________________________________

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



[EOA]
[HEY]//////////////////////////////
              HEY MISTER POSTMAN /
/////////////////////////////////
Is That A Letter For Me?
""""""""""""""""""""""""
By Jim B Couch
    [J.COUCH2]

     o   BULLETIN BOARD HOT SPOTS

          o   A2PRO ODDS & ENDS

               o   WHAT'S NEW?

                    o   PROGRAMMER'S CORNER

                         o   HOT TOPICS

                              o   MESSAGE SPOTLIGHT



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

   [*]  CAT12,  TOP24, MSG{4}..................Dynamic Slot Arbitration
   [*]  CAT29,  TOP2,  MSG{1}.....About DYA/DigiSoft Innovations Online
   [*]  CAT29,  TOP8,  MSG{1}..........About Simplexity Software Online
   [*]  CAT29,  TOP14, MSG{1}.....About Quality Computers Q-LABS Online
   [*]  CAT29,  TOP20, MSG{1}..........About DreamWorld Software Online
   [*]  CAT29,  TOP26, MSG{1}............About METAL/FV Software Online
   [*]  CAT32,  TOP3,  MSG{1}..................................MD-BASIC
   [*]  CAT34,  TOP3,  MSG{64}........................Ultra Programming
   [*]  CAT36,  TOP10, MSG{41}..............................ORCA/Pascal
   [*]  CAT36,  TOP32, MSG{1}......................................LOGO



                         >>> A2PRO ODDS & ENDS <<<
                         """""""""""""""""""""""""

     WOW! What a busy month! I am sure that you notice this month's A2Pro
GEnielamp is the biggest we have ever had. It has been very busy in the
A2Pro Roundtable, and the activity is reflected in the size of this month's
Lamp.

     Nate C. Trost (who was introduced last month) officially reports for
duty this issue. Look for his fine coverage of Apple II University, the
Real Time Conferences, and the A2Pro library.

     This issue features some tips for making your programs compatible with
Seven Hills Software's The Manager, a host of new online developers, the
first in a series of lessons on Procyon's GNO environment and another
report from Larry Elseman, our own rambling programmer. Of course we also
have all the great tips, tricks, and messages we are becoming famous for.
There is a lot here, so let's get down to it!



WIN A FREE WEEK IN THE BLUE PLATE SPECIAL CONTEST!   It's so easy to put a
""""""""""""""""""""""""""""""""""""""""""""""""""   nifty file for
programmers on A2Pro's main menu with our handy dandy "Blue Plate Special
File" that we've decided to run a little contest to see who can upload the
niftiest file for our next Blue Plate Special.

     The crack A2Pro staff, especially our crack librarian Todd Whitesel,
will look at all the files uploaded since March 1st and pick the one we
think is the neatest and niftiest file for all the programmers who hang
around here, and on May 15th we'll put it up as the Blue Plate Special
File.

     The person who uploaded that file will get a FREE WEEK in A2Pro.
Bulletin board, RTC, Library -- the whole thing is free of charge for an
entire week.

     Note that this person doesn't have to be the _author_ of the file --
just the uploader.  If there are duplicates, they'll be resolved in favor
of the earlier uploader.  Also note that if you've uploaded a really nifty
file since March 1st, you're already entered!  No penalties for sharing
your information soon around here!

     So if there's something you haven't uploaded yet because you're not
sure anyone wants to see it, upload it now!  You never can tell.

     (Of course, being the programming forum, we're after things that help
programmers, not normal programs [unless they include source code].  A2
still wants all your regular programs, graphics, sounds and more besides!)
--Matt (I speak for myself, not for Apple)
                 (M.DEATHERAGE, CAT1, TOP16, MSG:46/M530)


THE POWER OF GEnie's COMMAND LINE EXPOSED!   Here in A2Pro, we sometimes
""""""""""""""""""""""""""""""""""""""""""   discuss how graphical user
interfaces are easier to learn and use than command lines, but how people
who know how to use the command lines can often accomplish more things
easily.  In fact, because most of us are programmers, many of us tend to
_favor_ the command line (and confuse our users in the process).

     Well, the A2Pro bulletin board is a great example of how a command
line can be intimidating at first but powerful if you know the options.

     A lot of people simply use the basic bulletin board commands -- BROwse
to read all new messages, or RAM (for "Read All Marked") to read all new
messages in topics you've marked.  However, there are lots of options to
each command if you care to type "HELP <command>" to see what GEnie has to
say about it (or check your GEnie user manual, if you have one).

     For example, look at some of the options you can append to READ:

 NOText     -- just show the header, not the message
 NOReply    -- don't stop at the end of each topic for a reply.  (GEM uses
               this)
 DAT>YYMMDD -- only show messages after YYMMDD.  For example, DAT>930228
               would only show messages posted in March 1993 or later.
               You can also use DAT=YYMMDD or DAT<YYMMDD for different
               qualifications.
 AUT=GENIEID - Only read messages by a given person, by GEnie mail name.
 CAT=xx-yy  -- Only read messages in category xx through yy, or "ALL"
 TOP=xx-yy  -- Only read messages in topics xx-yy, or "ALL"

     Say you want to find that great message from Mike Westerfield he
posted in his category last week (since March 15), and you want to read all
the messages he posted last week to check them out.  You can do it in one
command, like this:

 REA CAT=36 DAT>930315 AUT=BYTEWORKS

     Kinda nifty.

     There are all kinds of things you can do with the information in our
bulletin board if you want to:

 o  BROwse CATegory will show you all new messages in the current category
    only

 o  INDex will give you a formatted index of _all_ categories and topics on
    GEnie you can visit.

 o  SEArch lets you search all the topic headers looking for the word of
    your choice -- great when trying to find answers on things!

 o  NAMe lets you set the nickname that appears at the top of each of your
    messages.

 o  IGNore lets you tell GEnie "I don't want to see any new messages in
    this topic again."  You can cancel this with UNIgnore -- any IGNored
    topics will not show up in scans of new messages.

 o  You can do the same thing for entire categories with the "CANcel"
    command.  Be careful, though, because if you CANcel participation in a
    private category (like one of A2Pro's many running beta-test
    categories), you'll have to be reinvited before you can change your
    mind.  To rejoin a public category, simply SETcategory to it.

     In addition to all this, we archive all messages from A2Pro topics
into our library when they become old, so they're still available for you
to peruse without taking up space and making the bulletin board large and
ponderous. You can find them all in the library, some messages going back
years.  Want to see messages from when System 5.0 was in development?  We
have some!  :)

     If you have any questions about the bulletin board, please feel free
to post a message; we'd be happy to assist you in using it better.  Or send
GEnie mail to A2PRO.HELP if you're uncomfortable asking a question
publicly.

--Matt (I speak for myself, not for Apple)
                  (M.DEATHERAGE, CAT1, TOP11, MSG:2/M530)


MORE POWER (FROM THE COMMAND LINE)    In fact, the IGNore option is more
""""""""""""""""""""""""""""""""""   robust than I posted -- you use
"IGNore  PERmanently" to tell GEnie "I don't want to see new messages in
this topic  again".  Without the "PERmanently" option, it simply marks new
messages as  "read" so they won't show up when reading new messages.

     GEnie automatically does an "IGNore ALL NEW" command when you first
join a  roundtable's bulletin board (or when you reenter after having been
absent  for 30 days) so you don't have tens of thousands of messages to be
marked  as new.

     You can also ask it to ignore all messages in the current category, or
specific topics (like 3-5), or by using "ALL" ignore in all categories
(like in IGNore ALL NEW).  Appending "PERmanently" makes GEnie never bother
you again with that topic, so be careful.  :)

 --Matt (I speak for myself, not for Apple)
                  (M.DEATHERAGE, CAT1, TOP11, MSG:3/M530)



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

TWILIGHT II IS SHIPPING!   In case you haven't already heard, Twilight II
""""""""""""""""""""""""   v1.1 is shipping!  Finally!

     The number of Twilight II modules included is hovering at around
forty.  But this doesn't take into consideration the loads of YouDrawIt!
animation files, or a few other goodies.

     Anyhow, my point is, now that we're shipping, G2MF and T2 IPC
documentation is a step closer!

     You'll be impressed by the specific powers we offer from a programming
standpoint!

-Jim Maricondo, DigiSoft Innovations
               (DYA [DigiSoft:Jim], CAT29, TOP3, MSG:6/M530)


ORCA/PASCAL V2.0 DISKS MASTERED   I just finished mastering the disks for
"""""""""""""""""""""""""""""""   Pascal 2.0 yesterday, and we even have a
few manuals back.  Patty is meeting with a new printer as I type this in
hopes of getting manuals faster.  The first few flyers for Pascal 2.0 have
already been mailed, and we'll continue to mail them for the next several
weeks, staggering them a bit in hopes of keeping up with Pascal 2.0 orders
better than we did with C 2.0 orders.  In short, Pascal 2.0 is here -- but
it may be a while before you get your update notice.

     If you're desperate (I hope! :)  here's a brief rundown:

     o You get the 2.0 development environment, with Shell
       2.0.1, PRIZM 2.0.1, Rez, DeRez, and all the other 2.0
       level programs.

     o It's Object Pascal, now!  ORCA/Pascal 2.0 implements all
       of the object extensions used by Macintosh Pascal
       compilers.  As far as I know, this makes ORCA/Pascal the
       first object oriented language for the GS.

     o You get the new code generator you've heard about from C
       people.  Here's a few execution times to wet your
       appetite:

          ORCA/Pascal 1.4 TML Pascal 2  ORCA/Pascal 2.0
   fib    11.70           30.70         11.56
   float  39.93          (37.29)        23.27
   gamm   18.12          (13.00)        15.83
   imath  16.25           50.91          0.28
   prime  23.75           68.62         22.75
   quick  13.20           28.30         13.20
   savage 32.08          ()             32.08
   sets   14.34            7.84          0.53

   All times are in seconds on an accelerated (8MHz) GS.  All benchmarks
   are from the ORCA/Pascal samples disk, and all but sets are originally
   from Byte magazine.  Times shown in parenthesis are for programs that
   did not run properly, either hanging or giving an incorrect result.

     o No more 64K limit on arrays!  Arrays can now be as large
       as available memory.

     o Direct support for HyperCard XCMDs and HyperStudio NBAs.

     o Support for the FPE floating-point card.

     o Extern variables.

     The update is $50 plus shipping, which is $5 in the U.S.  There is
also a special introductory offer for folks who don't already own
ORCA/Pascal, and we have bundle prices if you are ordering the Learn to
Program in Pascal course or the Toolbox Programming in Pascal course.  If
you're interested in more specifics, and either aren't on our mailing list
or don't want to wait, let me know.  I can either answer questions here or
send you a copy of the flyer a little early. -Mike Westerfield
                  (BYTEWORKS, CAT36, TOP10, MSG:41/M530)



SYSTEM DISK 4.0.2 RELEASE NOTES    It seems (via precedent) that it's now
"""""""""""""""""""""""""""""""   OK to put the System Disk 4.0.2 release
notes online, so here they are:

  Apple II System Disk 4.0.1
  November 3, 1992

  Contents of /UTILITIES (3.5" disk)

  /UTILITIES        Blocks
  PRODOS            35       Updated to version 2.0.2
  LAUNCHER.SYSTEM   16       Version changed to 4.0,
                             copyright extended to 1992
  SYSUTIL.SYSTEM     3       No change
  FASTCOPY.SYSTEM   41       Updated to version 1.0.1 to fix bugs
                             copying 1.4 meg disks
  BASIC.SYSTEM      21       Updated to version 1.5 from System
                             Software 6.0
  UTIL.0            87       No change
  UTIL.1            62       No change
  UTIL.2             4       No change
  SETTINGS           1       No change
  COPY.ME            1       No change
  CLOCK.PATCH       16       New AppleSoft program.  Fixes ProDOS date
                             stamping past 1996.


  Contents of /UTILITIES (5.25" disk)

  Same as 3.5" disk, except CLOCK.PATCH is omitted because there's no room.


  What changed:

  ProDOS
  o ProDOS 8 v2.0.2.
  o KVersion ($BFFF) is $22 for version 2.0.2.
  o Slot 3, Drive 2 is always reserved for /RAM.  The SmartPort remapping
    code never maps a device into slot 3, drive 2.
  o The message "RELOCATION/CONFIGURATION ERROR" is uppercase again (like
    it was in 1.9) so it will be legible on an Apple II+.  After displaying
    the message, it now hangs with a BMI again instead of BRA, for
    pre-65C02 processors.
  o Changed the copyright message at $BF40 to start with a $00, to prevent
    crashes when applications use the code in the ProDOS 8 Technical
    Reference to remove /RAM.  This code assumes there is a $00 after the
    last device number, which was previously not true if 14 devices were
    present.
  o Changed page-3-init table to initialize $3FB (NMI) to $00 $40 $00
    instead of JMP $FF59.

  BASIC.System
  o Version 1.5 (unchanged from Apple IIgs System Software 6.0).

  Launcher.System
  o Version 4.0.  The only change is the version number and copyright date.

  FastCopy.System
  o Version 1.0.1.
  o FastCopy now correctly determines the capacity of source and
    destination disks before copying.  Attempting to copy between varying
    sizes results in the message "Disk must be same type..." and the
    destination disk being ejected and the user prompted for another disk.
  o ROM 03 Apple IIgs's using FastCopy 1.0 were forced to have disks in any
    drives they wished to use for copying at the time they launched version
    1.0.  Any drives without disks in them were ignored and not available
    for copying.  Now allows any available drive to be used for ROM 01 and
    ROM 03.
  o The number of blocks copied from a source disk was not the actual
    number of blocks on the source disk but the number of blocks on the
    disk in the drive when version 1.0 was launched.  If a 400K disk was in
    the drive when FastCopy 1.0 was launched, then an 800K disk copied,
    only 400K of the disk was actually copied.  Now it reads the number of
    blocks on the disk at the actual time of the copy.

  Clock.Patch
  o Updated to patch 2.0.2 as well as 1.9 and 2.0.1.  The year table in
    2.0.2 is in the same place as in 2.0.1.

  Copy.Me
  o Unchanged from Apple II System Software 3.2.

  SysUtil.System
  Util.0
  Util.1
  Util.2
  Settings
  o System Utilities version 3.1, unchanged from Apple II System Software
    3.2.

 --Matt (I speak for myself, not for Apple)
                  (M.DEATHERAGE, CAT7, TOP6, MSG:43/M530)



                        >>> PROGRAMMER'S CORNER <<<
                        """""""""""""""""""""""""""

PROCYON LOOKING FOR PROGRAMMER   Apple IIGS software publishing and
""""""""""""""""""""""""""""""   development company is looking for a
programmer to write direct-SCC access serial port drivers for the Apple
IIGS computer.  We will pay REAL $$$ for quality work.  Please call or
write:

                              (303) 781-3273
                                Programmer
                       c/o Procyon Enterprises, Inc.
                              P.O. Box 620334
                         Littleton, CO 80162-0334

                     (Message, CAT13, TOP8, MSG:/M530)


NEW XCMND NEEDED   Time for a new Xcmd, and a chance for someone to make
""""""""""""""""   some money!

     I want a replacement Xfcn for DisplayList.  What I need is to be able
to use keyboard navigation (like standardFile) to move through the list,
and I want to control both the height and width of the dialog.  Also
Command-Selecting or Shift-Selecting must be supported to select more then
one item from the list.

The Syntax should be:
 xDisList prompt, width, height, list, btn1[, btn2[, btn3...]]

 Prompt: The prompt at the top of the dialog (ex. "Choose a color...")
 Width:  Defines how wide the dialog will be (ex. 190)
 Height: Defines how tall the dialog will be (ex. 160)
 List:   A RETURN delimted list (ex. "Black" & return & "Blue"...)
 BtnX:   Button[s] to the right of the scrolling list (ex. "OK")
         The last button named should be the default
         (ex. --"Cancel","OK"--   The "OK" btn is the default btn)

     The function should return the buttonName, followed by the user's
choice[s] in a RETURN delimited list. Ex. if the user selects "Black" from
the list and then clicks "OK", the function would return  OK
 Black

If the user had also selected "Blue" it would return
 OK
 Black
 Blue

     Hmmm, another thing that I don't like about DisplayList is that when
it opens up, no item is selected.  Just like SFGet, the first item in the
list should be selected.  Of course if you want extra credit for this
assignment, how about a paramter to choose which item in the scrolling list
is hilighted when it opens <smile>!

     So whatcha'll think?  Someone want a quick programming project that'll
make them some $$?  It's also a nice thing to have on a resume ("Wrote
software that was published worldwide.").

-- HangTime [Script-Central]  B-)>
                  (A2.HANGTIME, CAT18, TOP5, MSG:29/M530)


HOW DO I KEEP MY SLEEPING MACRO ALIVE?    I know that a sleeping macro gets
""""""""""""""""""""""""""""""""""""""   killed by <launch>. It appears
that  <call> and <link> also zap it.

     Anyone know of a workaround? Such as a peek to determine if a macro is
sleeping and which macro is sleeping and what time it's supposed to  wake?
That would at least allow one to store the information somewhere,  then
re-issue the <wake> when you returned from the call or link.

 ::Dan::          (D.CRUTCHER, CAT34, TOP3, MSG:64/M530)


HERE ARE THE SLEEPING MACRO PEEK LOCATIONS   The sleeping macro name is at
""""""""""""""""""""""""""""""""""""""""""   $FF00, minutes at $FF01, hours
at $FF02. Have fun.
                (BRANDT [Randy], CAT34, TOP3, MSG:65/M530)


THE INFO IS STILL THERE AFTER A LAUNCH   $ff00,$ff01, and $ff02 don't get
""""""""""""""""""""""""""""""""""""""   overwritten when you launch
another task file, the info's still there concerning the macro to wake and
the time. The sleep status just gets reset. So what you could do is put a
macro to sleep, launch ( and I assume call or link ) another macro set then
return to the original macro set and restore the sleep status.

     $10d6 holds the sleep status. > 127  means a macro is sleeping.  < 128
= no sleeping macros. So you could do something like

 A:<all: wake sa-R at 23:50 :
     call sa-Z in "NewMacroSet" :
     poke $10d6, $80 >! restore sleep flag

     As long as you don't put anything to sleep in the macro you <call>,
<launch>, or <link> everything should be OK.
               (S.BEVILLE [Steve], CAT34, TOP3, MSG:66/M530)


THANKS FOR THE HELP, HERE IS A FIX    Thanks for the <wake> peeks. I've
""""""""""""""""""""""""""""""""""   come up with the following, admittedly
imperfect "sleeping macro restorer". Add SA-& and BA-& to your default
macro set. SA-& would be inserted just before any <call> or <link> or
<launch> in which you would want the opportunity to detect and restore  the
sleeping macro. BA-& would be inserted just after you return from  the
<call> or <link>. For a <launch> it would need to be in the second  macro
in your default set.

     Of course, this assumes that the called macro doesn't do anything to
variable J(6) or to memory location $f000-f002. At the least it lets you
know that your sleeping macro has been prematurely awakened.

 <sa-&>:<all:                          // USE BEFORE CALL, LINK, LAUNCH
      j(6)=0:                          // initialize storage variable
      x=peek $10d6:                    // check sleep status
      ifnot x>127: endmacro:           // if nothing sleeping, exeunt
      else: .AskYN "Macro sleeping. Restore it when return from task":
      if z=1: exit:                    // if "no", exeunt
      else: if z=0 or z>2: stop:       // if other than "yes", stop
      else: j(6)=1                     // must be "yes", set flag
 >!

 <ba-&>:<all:                          // USE AFTER RETURN FROM CALL ETC.
      if j(6)=1: poke $10d6,128:       // if flag set, reset sleep status
 >!
                  (D.CRUTCHER, CAT34, TOP3, MSG:67/M530)


COOL PROGRAMMING TIP   If you want to overcome the annoying limitation
""""""""""""""""""""   in TEPaintText that causes your text to be drawn in
only 4 colors, set bit 2 ($0004) in the fontFlags field of your drawing
GrafPort. You can do this with the QuickDraw II call "SetFontFlags". This
tells QuickDraw to treat color values as a word, rather than pixel indicies
when drawing text.

(This isn't documented in a technote yet, so feel privileged! :-)

Jim "whatshisname" Murphy
                (MURPH [Murph'], CAT15, TOP34, MSG:62/M530)


IIE DOUBLE WIDTH GRAPHICS ROUTINE   To anyone who is interested:
"""""""""""""""""""""""""""""""""   The following short routine will show a
Double-Width Graphics screen on the Apple IIE (W/ an 80 column card ) or
later models:

  LDA #$A0 ;Space character
  JSR $C300 ;initialize 80-column video

  BIT $C05E ;Enable 80-column graphics
  BIT $C057 ;Enable High Resolution graphics  (Note 1)
  BIT $C052 ;Enable Full screen graphics      (Note 2)
  BIT $C050 ;Make Apple show graphics video instead of text

Note 1: BIT $C056 will enable Low Resolution graphics. Note 2: BIT $C053
will enable Split screen graphics/Text
               (T.VAGO [quasicomp], CAT2, TOP6, MSG:84/M530)


BASIC SYSTEM HELP NEEDED   I need help with BASIC.SYSTEM.  How does
""""""""""""""""""""""""   BASIC.SYSTEM handle memory when it opens/closes
files?  I use the GETBUFR routine ($BEF5), but I don't like the idea of
clearing the entire range of "appropriated" memory just to close a ml
generated file.  I am also not thrilled about the prospect of having
AppleSoft open the file for the ml routine to use.  I am writing a spooler
program for use with BASIC.SYSTEM, and this is my only (current) pitfall.
               (T.VAGO [quasicomp], CAT7, TOP4, MSG:79/M530)


A LITTLE INFORMATION ON BASIC.SYSTEM AND FILE BUFFERS   BASIC.SYSTEM
"""""""""""""""""""""""""""""""""""""""""""""""""""""   allocates 1K of
memory for each file it opens, above HIMEM. This is documented in Appendix
A of the ProDOS 8 Technical Reference Manual.

     Uncle-DOS has a long-standing recommendation not to use FREBUFR
because it frees _all_ buffers allocated with GETBUFR, including any
programs run in this BASIC.SYSTEM session before yours.  This is more
important in eight-bit machines than on the IIgs, since on eight-bit
machines things like memory- resident utilities have to stay in the lower
128K.

     That means unless you're sure you're going to quit BASIC.SYSTEM when
your program is done, your buffers will probably stick around.

     You can just use 1K of memory and call the PRODOS 8 MLI to OPEN the
files yourself, and manage that memory -- you'll just have to make sure
that you put the 1K where no one will step on it.  The memory map in
Appendix A will help you do that.
--Matt (I speak for myself, not for Apple)
                  (M.DEATHERAGE, CAT7, TOP4, MSG:80/M530)


COOL FREBUFR TRICK   There is a cool trick of setting the ceiling for
""""""""""""""""""   FREBUFR so that it doesn't release all memory
allocated with GETBUFR.  All you have to do is adjust the RSHIMEM location
in the BI global page.  By default, this is $96 (for $9600 = default
HIMEM).  If you allocate a new buffer with GETBUFR that you don't want any
subsequent FREBUFRs removing, just set RSHIMEM to point below your buffer.

     This is how the Object Module Manager is able to load and unload
modules (of course, unloading modules in the middle of others and shifting
modules up to fill in the gap is much trickier to do, especially when you
have to dynamically relocate code on the fly -- but that's why I wrote the
OMM, so nobody else would have to!
                  (MORGAN-DAVIS, CAT7, TOP4, MSG:81/M530)


TELL E MORE ABOUT THE OBJECT MODULE MANAGER   I am interested in this
"""""""""""""""""""""""""""""""""""""""""""   Object Module Manager, and
how it "is able to load and unload modules".  The spool routine I am trying
to make is going to have the main portion of its code sit in the auxiliary
64K of RAM, and just have a main memory interface and the file buffer in
main memory.  It is also going to function as an improved printer port.  It
will be able to interface with other routines (such as AppleSoft menu and
string management, for example) also sitting in the aux memory.

     I am worried that a ml program may execute that won't install into
this main memory interface, and that puts itself below BASIC.SYSTEM in the
usual way (calling GETBUFR, and so forth).  If I have one (or more) ml
created files open while this is happening, it will sit below these files.
When I perform an ml OPEN/CLOSE, it will affect the main memory such that
the "normal" routine that installed itself would possibly be overwritten,
and C- R-A-S-H my system, causing a messy situation.

     Also, I can't just allocate 1K of memory for dedicated use for ml
files, because future routines I may write may also need this file buffer.
The very action of OPENing and CLOSEing files takes up a lot of time in of
itself.  The solution I am considering is a dynamic ml file buffer handling
routine, such as must obviously exist in BASIC.SYSTEM.

     Finally, I can't use the main memory fur much more than the interface
and the ml file buffers, because AppleSoft space is already at a premium.

     Thus, my (real) problem.  I want to be able to open/close as many
files as I can, but maintain the integrity of any other programs that
install below BASIC.SYSTEM without having to close up all of the ml files,
de- allocate the memory for those files, and re-allocating memory and
opening the files back up after these other programs install themselves.

     Am I just blowing in the wind here?  Or is there a workable solution?
               (T.VAGO [quasicomp], CAT7, TOP4, MSG:83/M530)


HERE IS THE SCOOP!   The OMM installs itself below BASIC.System and adds a
""""""""""""""""""   few management commands to Applesoft via the ampersand
feature.  The &LOAD GET and &LOAD FRE commands are used to shuffle code
modules from disk, into memory, and back out of memory to reclaim space.
The modules themselves are standard 6502 programs that have a special
16-byte header at the beginning that simply tells the OMM about the code
inside, such as the module's size, program counter origin, address of an
ampersand command table, and so on.

     Each module has three separate parts: code, immediate mode table, and
data section.  The code part is obvious -- it contains only executable 6502
or 65C02 code (it can contain 65816 code, as long as you don't adjust
register sizes and reference immediate values). The immediate mode table is
just a list of 16-bit addresses that refer to locations within the code
part.  The data section includes just that.  Because of this format, the
OMM is able to relocate modules in memory and they'll keep on running as if
nothing happened.  So you can load modules A, B, C, D, and E, in that
order, and when you remove module B, the OMM is able to shift C, D, and E
upwards the fill in B's gap, reclaiming memory.

     Modules can include a list of ampersand commands that the OMM will
parse and then call upon the module to service.  This makes it really easy
to add a BASIC interface to your modules.

     Modules can also send messages to other modules, including the OMM
itself. This inter-module communication makes it possible to have a
multitude of interconnected modules that, together, perform seamless
integration.  This is how our ModemWorks program is able to provide so much
functionality within the limited memory space.

  >   The spool routine I am trying to make is going to have  the
  > main portion of its code sit in the auxiliary 64K of RAM, and
  > just have a  main memory interface and the file buffer in main
  > memory.

     Interesting.  A print spooler is one of the examples we give as
suggested module types.  This is because print spooling involves working
with various serial or parallel interfaces, yet the main file spooling code
is the same. The OMM lends itself well to this kind of situation because
you can devise your own printer interface modules and load only the one
that is needed to support the attached printer.  A second module would hold
the interface code to the spooler itself.  And the spooler code could
reside in auxiliary memory since the OMM doesn't touch it.

  >    I am worried that a ml program may execute that won't install
  > into this  main memory interface, and that puts itself below
  > BASIC.SYSTEM in the usual  way (calling GETBUFR, and so forth).

     All modules under the OMM follow a standard scheme for memory
management, so you'll never have any trouble with this.

  > If I have one (or more) ml created files  open while this is
  > happening, it will sit below these files.  When I perform  an ml
  > OPEN/CLOSE, it will affect the main memory such that the
  > "normal"  routine that installed itself would possibly be
  > overwritten, and C-R-A-S-H my  system, causing a messy
  > situation.

     This can't happen under the OMM.

  >      Also, I can't just allocate 1K of memory for dedicated use
  > for ml files,  because future routines I may write may also need
  > this file buffer.

     You can allocate a fixed 1K buffer in the data section in an OMM
module, and as your code section expands, the only impact is on free memory
for BASIC. You wouldn't need to worry about added code spilling into a
buffer.

  > The very  action of OPENing and CLOSEing
  > files takes up a lot of time in of itself.  The  solution I am
  > considering is a dynamic ml file buffer handling routine, such
  > as must obviously exist in BASIC.SYSTEM.

     Right -- this all depends on how your spooler works.  You can use a
dynamic file buffer as long as you stay in control while you read and move
the spooled data into a larger buffer in the auxiliary memory space.  Then
you'd close the file and release the buffer.  If you put a cap on the size
of the file you can spool, then this is a good solution.  But if you want
to be able to spool unlimited size text files, you'll have to have a fixed
open file buffer in your module.  This is because a dynamic buffer is valid
and usable only while your module has control.  If you keep the buffer
allocated and return to BASIC operations, there's no way to insure that
your buffer remains intact.  A BASIC program would only need to &LOAD GET
another module or call FREBUFR and you're in trouble.

  > I want to be able to open/close as many files as  I can, but
  > maintain the integrity of any other programs that install below
  > BASIC.SYSTEM without having to close up all of the ml files, de
  > allocate the  memory for those files, and re-allocating memory
  > and opening the files back up  after these other programs
  > install themselves.

     Since you can only spool one file at a time, why not keep only one
file open at a time?  Keep a list of files remaining to be processed and
open each one as the previous one is closed.  I don't see any reason to
open up dozens of files at one time -- and under ProDOS 8 I don't think you
can open up any more than a few anyway. (What is the limit, 8 FCBs?).  Each
time you open a file, you have to give it a dedicated File Control Buffer.
So, its desirable to keep as few files open as possible -- not the other
way around.       (MORGAN-DAVIS, CAT7, TOP4, MSG:85/M530)



                            >>> HOT TOPICS <<<
                            """"""""""""""""""

IS THERE ANY INTEREST IN SLOT ARBITRATION?   How many people are still
""""""""""""""""""""""""""""""""""""""""""   interested in seeing some form
of slot arbitration available, even though Apple believes it can't work
with all programs and peripherals due to interrupt concerns?
--Matt (I speak for myself, not for Apple)
                 (M.DEATHERAGE, CAT12, TOP24, MSG:4/M530)


YES IT COULD BE VERY HANDY     I think it would be extremely handy.  There
""""""""""""""""""""""""""   are always going to be programs that it can't
work with; the concern is now to implement  slot arbitration in a manner
that works with old programs in the best manner, not necessarily how to get
old programs to use slot arbitration.

     I wonder, however, if slot arbitration concerns would be better
addressed with two drivers: a mouse driver and loaded serial drivers. With
these, GS/OS programs could access the built-in mouse and serial hardware
without affecting I/O cards in slots 1,2, and 4.
  -Jawaid         (PROCYON.INC, CAT12, TOP24, MSG:5/M530)


OR EVEN VERY USEFUL   To answer your question, YES, I think slot
"""""""""""""""""""   arbitration would be VERY useful!
-Bryan        (SOFTDISK.INC [Zak], CAT12, TOP24, MSG:11/M530)


LOADED DRIVERS MIGHT BE A BETTER IDEA   In judging how important the Slot
"""""""""""""""""""""""""""""""""""""   Arbiter is, we need to look at its
intended purpose - allowing people to use both built-in ports and slot
cards at the same time.  My point is that the job could be done (except for
Slot 5/SmartPort) with GS/OS drivers as opposed to the Slot Arbiter - IMHO,
you're likely to spend much less time writing drivers than trying to get
the slot arbiter to work with every conceivable device and situation,
especially since so much software ignores existing GS/OS drivers (like the
generated serial drivers).

     So, I'd say that a device-independent mouse driver and loaded  serial
drivers would beat fixing/finishing the slot arbiter, even if such a task
was possible.  -Jawaid
                 (PROCYON.INC, CAT12, TOP24, MSG:14/M530)


ANY SOLUTION WOULD BE FINE   Matt, you've asked whether we want slot
""""""""""""""""""""""""""   arbitration or smarter drivers that don't need
it.  I really don't care...  I am definitely in favor of any solution that
would let me:

 1. Put a SCSI card in slot 1, 2, 3, 4, or 5 and still use the printer
    driver, AppleTalk, and a modem.
 2. Put a floppy controller for either 800K, 1.4M, or 140K floppy disks
    in slot 5 and still use the direct connect for 800K or 1.4M drives.
 3. Put a SCSI card in slot 3 and still use the text screen, especially
    the text tools.

     I think either method would do these, so I don't care which you use.
I simply have a problem that could be solved, and vote wholeheartedly for
any solution that works.  -Mike Westerfield
                  (BYTEWORKS, CAT12, TOP24, MSG:32/M530)


HOW IT WORKS IS UNIMPORTANT   Like Mike, I really don't care how it works,
"""""""""""""""""""""""""""   just as long as it does.  When I worked on
MouseTalk (seems like eons ago), we made it a point to be able to share
IIGS slots with the built-in ports by accessing the slot's device directly
-- not using any slot firmware. So you could put a Super Serial Card in
slot 1 for a modem, plug a printer into the Printer port, and be able to
use both at the same time.  Likewise, you could have a device in slot 4 and
still use your mouse.

     This all worked great as long as you stayed in MouseTalk.  Of course,
not many took advantage of it because so much other software couldn't deal
with shared slots and ports.
                 (MORGAN-DAVIS, CAT12, TOP24, MSG:33/M530)



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

Category 12,  Topic 24
Message 34        Wed Apr 14, 1993
M.DEATHERAGE                 at 16:14 EDT

     Doing the serial stuff isn't a problem that way, Morgan -- the 8530
softswitches for direct programming are not tied to any slot, so if you
stay away from the firmware you're always OK.

     Using the _mouse_ without having the slot switched in could be
problematic, especially during interrupts but not as much so under ProDOS 8
as under GS/OS.

     These applications that use the slot register ($C02D) cause one of the
compatibility problems for implementing slot arbitration -- neither the
Slot Arbiter nor GS/OS is spec'ed to say that the slot register will be the
same after a GS/OS call as before it.  If you fiddle with $C02D, make a
GS/OS call and expect it will still be the same way afterwards, you may be
incorrect.

     This probably means GS/OS would have to save and restore $C02D on
every call when calling a device that wasn't "swapped in" in the Control
Panel settings, and it might still cause problems for interrupt code.

 ---

     Let's back up one more time and look at the issue again.

     The idea of a Slot Arbiter is pretty simple -- GS/OS drivers have a
four-bit slot number instead of three bits, and that's enough to describe
seven internal and seven external slots.  All device drivers for
peripherals are supposed to do a fifteen-slot search ($F through $1) as
described in GS/OS Device Driver Reference.

     If a slot arbiter becomes available, GS/OS will start using it and
peripherals in slots and ports can co-exist.  GS/OS will automatically swap
in the appropriate slot/port before dispatching to a device driver, and
would probably swap it back out before returning for above compatibility
reasons.

     This means this and only this:  Any peripheral you access through a
GS/OS driver would not have to be switched in through the Control Panel to
be accessed.

     It has no effect on ProDOS 8 or on things that are _not_ accessed
through GS/OS, like the mouse, direct serial access and the text tools
(unless redirected through the OS as in ORCA 2.0).

     The major problem with a slot arbiter is interrupts.  If you have code
that deals with hardware during interrupts, and that hardware is
slot-based, and you do not attempt to use the slot arbiter or make sure
that hardware is available before tickling softswitches, you'll cause
problems.

     The Slot Arbiter can't save and restore the slot configuration to
"default" around interrupts because it would add too much to the interrupt
latency.

     One possible solution is to provide a way through a CDev to mark some
slots as "non-switchable" so they never get changed from their control
panel settings.  This makes that hardware effectively take two of 14
positions, but that's no worse than it is now.

     I'm also unsure if slot arbitration would let AppleTalk run without
having an "AppleTalk" slot.  Not having an "AppleTalk" slot would
definitely kill AppleTalk in ProDOS 8.

 ---

     The other proposed solution (originally Jawaid's) is to not implement
a slot arbiter but implement mouse code and maybe serial port code (in an
unspecified way) so that those two particular peripherals have no slot
dependencies, arguing that this will solve most people's problems and be
less work.

     I'm not sure it would be less work, since GS/OS already has the Slot
Arbiter design built-in, but there's a possibility.  Also, GS/OS is in RAM
and can easily have stuff like this added as new modules.  Mouse code and
serial firmware is in ROM and can't easily be patched sometimes.  It looks
like SSW 6.0.1 will patch _Multiply as a way of fixing a bug in _MenuSelect
and _PopUpMenuSelect, as an example of how tricky such things can get.

     Todd suggested that drivers simply disable interrupts around accesses
to hardware-dependent locations and manipulate $C02D themselves.
Unfortunately, this isn't suitable for GS/OS drivers, many of which rely on
firmware on the peripheral card to do the work.  Disabling interrupts
around all calls to the firmware a driver might make isn't realistic,
especially for the Apple drivers which rely heavily on the ROM in the IIgs
to save memory space.

 ---

     So if anyone has more comments, we're listening.  :)

--Matt (I speak for myself, not for Apple)



[EOA]
[INT]//////////////////////////////
                 INTERNET FRIENDS /
/////////////////////////////////
Comp.sys.apple2.programmer needs you!
"""""""""""""""""""""""""""""""""""""
By Matt Deatherage
    [M.DEATHERAGE]


                >>> VOTE FOR COMP.SYS.APPLE2.PROGRAMMER <<<
                """""""""""""""""""""""""""""""""""""""""""

To all our friends on the Internet:

     Please feel free to redistribute this message; I'm not going to post
it myself.  Just don't edit it.

     Those of you who like to program Apple II computers and regularly read
news on the Internet may now that there's a vote currently in progress
about reorganizing the comp.sys.apple2 newsgroup into four separate
newsgroups. Much discussion has been carried about this vote, but we'll
only focus on one part -- the creation of a separate
comp.sys.apple2.programmer newsgroup.

     Being affiliated with a commercial online service, you might think
we'd be against this idea because it would create competition.  The truth
is -- and anyone who's held this job can back it up -- that those of us
doing this on commercial online services aren't doing it to get rich.
We're here for very little or no pay because we like helping Apple II
programmers of all ages, skill levels and interest areas.

     We've worked hard in A2Pro over the years to create a strong resource
for programmers to find help.  Our libraries have thousands of files aimed
at programmers doing HyperStudio scripts, AppleWorks macros, desktop
programming, BASIC programs, Pascal, C and assembly-language programming
from the introductory to the extremely obtuse.  The libraries are organized
by Todd Whitesel in a scheme that allows you to find samples even if you
don't know exactly what you seek.

     Our bulletin boards keep a few thousand programming messages around at
any given time, ready for you to browse through because they're also
organized into clear, easy-to-navigate topics.  We have real-time
conferences a few times each week where you can talk to other programmers
at a predetermined time (you don't have to spend hours hoping you'll find
someone).  We produce A2 University, where you can learn anything from
introductory Assembly Language programming to intensive data compression --
at no additional cost from normal connect rates.

     We also bring to our members the companies that work the most with
programmers and give them their own areas and libraries here so they can
help you better.  You'll find information from Procyon, Softdisk, GS+
Magazine, Lunar Productions, Morgan Davis Group and The Byte Works all
here, along with DigiSoft, Simplexity, Quality Computers, DreamWorld and
now Josh Thompson helping METAL and FutureVision programmers.  We feel this
is the strongest collection of Apple II programming assistance people
assembled anywhere outside of KansasFest, and we're proud to give them a
forum to help the programmers.

     We've managed to produce this area for programmers and keep it very
focused, programmer-friendly, full of content and free of noise.  This is
partly because we have a great sister forum in A2 where those wanting
non-programming answers can almost always find them, and partly because we
have a fantastic bunch of A2Pro members who give us plenty of programming
stuff to talk about and never leave us wondering what to do next.

     Our colleagues on Delphi, CompuServe and America OnLine also strive to
help programmers out for the love of it, and they offer a lot of the same
services (though we're obviously biased towards our own great mix).

     We feel very comfortable that what we do here is important and
well-received by Apple II programmers around the world, and we welcome
another forum for these topics.

     To this end, we heartily encourage all members with Internet newsgroup
access to read the Call for Votes in comp.sys.apple2 or
news.announce.newsgroups and to vote "YES" for the creation of
comp.sys.apple2.programmer.

     We'll continue to do our part by doing what we can to make A2Pro a
great place for programmers.  We'll continue to produce GEnieLamp A2Pro and
we'll post it to the new newsgroup if it passes the vote, and we'll
announce our special events for programmers to the new newsgroup as
appropriate, using the keyword "A2PRO", so you can choose to read or not
read them as you please.  We would ask all Internet users to please respect
this convention and use the keyword "A2PRO" when posting messages
concerning our services to assist those who don't want to see them.

     Last time this came up for a vote, the required minimum one hundred
votes were not cast and the proposal failed due to lack of interest.  One
new newsgroup will not stop petty bickering, flame wars, jealousy or
immaturity that has so often plagued comp.sys.apple2, but it will help
those who want to program stay focused on their issues and make better
software for everyone.

     Please support this effort and vote "YES" for
comp.sys.apple2.programmer.  --Matt Deatherage
                                 [*][*][*]



[EOA]
[RAM]///////////////////////////////
                        RAMBLINGS /
//////////////////////////////////
Ramblings from a 'Wannabe' Programmer
"""""""""""""""""""""""""""""""""""""
By Larry E. Elseman
       [L.ELSEMAN1]



                          >>> IKTRFTAANYDT!* <<<
                          """"""""""""""""""""""

     Remember when you first started to program in BASIC?  What did you do
when you came across a new statement, something that you just weren't sure
what its function was?  Did you write code using the new statement, just to
see what would happen?  Did you just stick to statements that you were
already familiar with and feel confident using?  Or did you seek the
information you were looking for in the programming manual or a reference
book?

     For me, with BASIC anyway, I would look up the new statement to see if
it was something that I could use in my code.  I've always been curious to
see what the technical references had to say about a statement.  Of course,
many times if I had sample code to look at I could figure out the
statement's function on my own.  From there I would practice using the new
statement by writing a few lines of code to get the syntax down and see the
results of using the new statement.

     Okay, so you're now learning a new language step by step, statement by
statement and using the manual and reference material to help you over the
rough spots.  You have an idea that you would like to program, but you
don't know how to implement it into your code because it seems to call for
some statement that you have not yet come across.

     Now what do you do?  Aside from asking someone on A2Pro (surely
someone there knows a solution :)), you really don't have much of a choice
except to seek help from the manual.  But how do you look for a statement
which may not even exist, and if it does, can you be sure that you'll
recognize it when you see it?

     I bring this up because it has happened to me on more than one
occasion. In my pre-GEnie days the only option I had was to spend a lot of
time reading the manual.  And as you probably know, most language manuals
do not exactly keep you on the edge of your seat!

     What would invariably happen to me is that I would get side-tracked.
I would start out searching for something in particular and find something
else that would catch my interest.  That's not a bad thing of course,
because it would still be a learning process, yet it gets frustrating.

     I think most Apple programmers started programming using the built-in
AppleSoft BASIC.  If that's true, wouldn't it be neat if other language
manuals had an index which cross-referenced BASIC statements to the
equivalent or comparable statements in that language?  Are there manuals
which already do this?  If so, I have not seen them.

     Personally, I tend to think in terms of BASIC when I find myself
groping for the correct statement in the language that I am currently
learning.  I realize that most languages have statements, instructions,
mnemonics which have no counterpart to BASIC.  In those instances a clear
example of what the instruction does and how to implement it in a program
would be sufficient, and most manuals that I've seen do at least that much.

     Perhaps someone on A2Pro (or someone reading this article!) could
write a statement cross-reference index of the most popular programming
languages for the Apple II line and upload it to A2Pro?  Does this have any
merit? Would I be the only one interested in such a beast?  Is the Apple II
too far gone that it would be of little value?  Would I be the one to have
to write it?... Egads!

     All right, time for a pop-quiz, no pencil or paper required.

     What did you do when you read the title of this article?

          A) I really didn't think much about it.

          B) I started searching the article for an explanation.

          C) I started to read the article, but that goofy title kept
             bugging me. I had to stop and look for an explanation.

          D) Title?  What title?  You mean that bunch of letters at the
             beginning?  I thought it was just baud-barf!

     To see how well you did, load the following program into your BRAM
(Biological Random Access Memory) and execute it.

     10 If INPUT$ <> "B" and INPUT$ <> "C" then PRINT "Wrong!": Goto 30

     20 PRINT "Congratulations! You are a programmer who uses the manual
               when confronted with the unfamiliar!"

     30 PRINT

     40 PRINT "* I Know The Reason For This Article And Now You Do Too!"

     50 END



[EOA]
[DEV]//////////////////////////////
              DEVELOPER'S CORNER /
/////////////////////////////////
News from the A2Pro Online Developers
"""""""""""""""""""""""""""""""""""""
By Jim B.Couch
    [J.COUCH2]



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

     CAT  COMPANY
     ===  =======
     29   Independent Developers Online         <---- NEW CATEGORY!
     30   Procyon, Inc.
     31   Softdisk Publishing
     32   Morgan Davis Group (MDG)
     33   GS+ Magazine
     34   JEM Software
     35   Lunar Productions
     36   The Byte Works

     Each month this column feature highlights and news from various
developers who provide support via A2Pro. This month's big news is that
A2Pro has added a whole new category for independent software developers!


INDEPENDENT DEVELOPERS PROVIDE ONLINE SUPPORT   A2Pro is _very_ proud to
"""""""""""""""""""""""""""""""""""""""""""""   announce that we now have
five developers providing on-line support for programmers (and anyone else)
who use or program for their products in Category 29 of the bulletin board
(option 1 on the A2Pro main menu)!  Now providing support are:

             Quality Computers    - Phantasm
             Simplexity Software  - Desktop Enhancer
             Digisoft Innovations - Twilight II v 1.0
             DreamWorld           - 3200's, Dreamgrafix.
             METAL/FV Software    - METAL, METAL/FV


     Category 29 has a number of topics related to the products these
developers provide, stop by and check them out:

  CATEGORY 29  --   INDEPENDENT DEVELOPERS ONLINE

  Topic  1     --   About Independent Developers Online

  Topic  2     --   About DYA/DigiSoft Innovations Online
  Topic  3     --      Announcements & General Discussion
  Topic  4     --      Writing Twilight II Modules (G2MF)
  Topic  5     --      Writing Twilight II Savvy Programs

  Topic  8     --   About Simplexity Software Online
  Topic  9     --      Writing Desktop Enhancer Blankers

  Topic 14     --   About Quality Computers Q-LABS Online
  Topic 15     --      Writing Phantasm Effects

  Topic 20     --   About DreamWorld Software Online
  Topic 21     --      Writing DreamGrafix Externals

  Topic 26     --   About METAL/FV Software Online
  Topic 27     --      Programming in METAL




               >>> NEWS FROM THE INDEPENDENT DEVELOPERS <<<
               """"""""""""""""""""""""""""""""""""""""""""

DIGISOFT PROVIDES TECHNICAL LEVEL SUPPORT ON A2PRO   Hello everyone!  We're
""""""""""""""""""""""""""""""""""""""""""""""""""   happy to be finally
representing ourselves on the technical level, here in GEnie's A2Pro!

     If you've never heard of us before, DYA, which stands for Digital
Youth Alliance, was formed in January 1990 when a few of us got together to
pool our efforts into creating new software and data for the Apple IIgs. In
1990 we started off with several animation demos, such as TextScroll II,
Photon, Skull, and Mother Earth.  These served as good exercises in
learning to program the GS; they also show off some interesting animation
and related effects.  Later on in 1990, we teamed up with Jonah Stich to
produce the original Twilight 1.0 shareware screen saver - the first
publicly released modular screen saver for the GS.  It was a great hit (for
shareware standards) but had several inherent bugs that never were fixed
(despite several planned attempts to try.)

     Anyhow.. in 1991 we brought out two large projects: the DYA SoundSmith
ASIF Instrument Disk #1, and Exhibit A.  The instrument disk was many
months in the making, held up to insure that the instruments included were
all in tune with each other and also of the highest quality possible. The
instruments were sampled from scratch on an Audio Animator (with the
exception of a few done on my old SuperSoniq Digitizer) from a variety of
high quality sources such as CD's and a Roland D-70 synthesizer.  In the
end, we wound up including over 100 new hi-quality instruments.  Many of
these can also be converted to make great System 6 sounds, using programs
slideshow.  The disk is selfbooting (using legal methods so it should work
just fine with the new FDHD controller card!) and each picture is
precompressed to allow us to fit the most possible pictures on one disk.
Exhibit A features the best 3200 color fades you'll find anywhere, combined
with some impressive 3200 color pictures (converted from GIFs with an early
version of Prism), in an elegant selfbooting selfcontained package.  Take a
look at it; you'll be impressed!

     Along the way, we've released a handful of other utilities/etc,
including an init called MONITOR which replaces the "alternate display
mode" CDA on ROM01 GS's with "visit monitor" (this is a temporary change
and is reset when you reboot), several different shell utilities, an
animation "technote" which tries to explain some beginning to advanced GS
animation techniques, as well as a handful of other different things I'm
probably forgetting offhand..

     Which brings us to 1993!  Currently we're working on completing
Twilight II v1.1.  Twilight II (T2) we feel represents the state of the art
in screen savers for the GS.  Many ideas were borrowed from After Dark on
the M*c, and many features just aren't present anywhere else!

     Among the features and aspects of Twilight II we will be supporting
here are:

 o an extensive and carefully planned effect module format (the G2MF),
   which includes support for many powerful features, including some not
   present in any other screen saver, for any other computer.

 o the comprehensive Twilight II inter-process communication routines that
   allow your programs and Twilight II to coordinate efforts and make for
   the most pleasant computing experience for the user

     If anyone has any questions or comments on these two current issues,
or any other related ones not mentioned here, we'd be happy to entertain
them in one of the other DYA folders here in cat 24.

Thanks! -- Jim Maricondo, DigiSoft Innovations
                   (Message 1, CAT29, TOP2, MSG:1/M530)


TWILIGHT II G2MF VAST STEP FORWARD   Twilight II employs an advanced custom
""""""""""""""""""""""""""""""""""   module format, very similar to CDevs.
Twilight II modules can be written in assembly language, C, Pascal, or any
combination of the three, and have filetype $BC (generic load file) and
auxiliary type $4004.  The modules included with Twilight II have been
written in assembly and C (Twilight II, the CDev, is in 100% assembly.)
Writing Twilight II modules can be a very fun and satisfying task!

     The Generation 2 Module Format (G2MF), as implemented by Twilight II,
represents a vast step forward in performance and power over other
conventional module designs for GS screensavers.  We have designed it with
the present and future needs in mind, and it sports a great deal of
flexibility.

     This is the place to learn all about the G2MF, how you can best work
with it, and how it makes many aspects of the task of writing modules much
easier!!

 Jim Maricondo
 DigiSoft Innovations
                   (Message 1, CAT29, TOP4, MSG:1/M530)


MAKING YOUR PROGRAM TW II FRIENDLY   Via System 6's new inter-process
""""""""""""""""""""""""""""""""""   communication (IPC) capabilities,
Twilight II and other programs can coordinate efforts by communicating with
each other. Twilight II sports a comprehensive set of routines that inform
programs when the screen is blanking and unblanking and also allow
applications to control certain aspects of Twilight II.

     By following a few simple guidelines (most of which already
recommended by Apple, for good reason), you can insure full compatibility
with Twilight II. Many of these suggestions will make your programs much
more friendly to the system as a whole, and to other programs as well.
This results in a much more pleasant computing experience for the user..

     This is the place for more information on T2's IPC routines.  We are
just waiting to work with you!  Also, if you discover any bugs or would
like to share features you'd like to see in a future version of Twilight
II, please let us know!

 Jim Maricondo, DigiSoft Innovations
                   (Message 1, CAT29, TOP5, MSG:1/M530)


SIMPLEXITY SOFTWARE HISTORY    Simplexity Software is about 1.5 years old,
"""""""""""""""""""""""""""    and is dedicated to the premise that people
should NOT work with computers: Computers should  work with people! Our
name comes from the idea that any application  should be simple and easy to
use on the outside, with as much of the  complexity as possible hidden away
on the inside as possible. Thus,  Simplexity!

     Our first product, introduced in August, 1991, was the Desktop
Enhancer.  It attempted to create a single, cohesive user interface for
customizing  the desktop environment, and I believe it succeeded fairly
well. Unfortunately, it provided only limited features, and was quickly
eclipsed  in February, 1992 by Signature GS, its major competitor at the
time.

     Massive rewriting ensued, and the Desktop Enhancer v2.0 was released
in  August, 1992. Packed with more features than were earlier believed
possible (due to the benevolent influence of System 6.0) it clearly out-
shone its competition in almost every area, but the inevitable early  bugs
prevented its unqualified acceptance. Having dealt with all known
problems, Desktop Enhancer v2.01 is now available for the ridiculous  price
of $24.95 (U.S.)

     Our second product, ContactsGS, was introduced in August, 1992, and
received rave reviews from every quarter. It is a simple NDA which acts
like a Rolodex on the desktop, with the added convenience of automatic
phone dialing. Its simple, elegant design not only allows it an amazing
degree of versatility, but also allows me to declare it a paragon of
simplexity. It is available for a mere $14.95 (U.S.)

     More products are on the way, (three under development even as you
read  this!) and each one, like the Desktop Enhancer and ContactsGS, is
being  written with the utmost attention to three principles: Reliability,
useability, and compatibility with current and future system software  and
applications.

     We are always interested in new ideas for programs, and occasionally
(depending on several factors) are interested in publishing other people's
programs. We can be contacted in several ways:

 GEnie: E-mail to S.McQueen1
 America Online: E-mail to SIMPLEXITY
 Voice phone: (714) 283-3957
 U.S. Mail: Simplexity Software
            13045 Chapman Ave., Ste. 302
            Orange, CA   92668
                   (S.MCQUEEN1, CAT29, TOP8, MSG:1/M530)


WRITING DESKTOP ENHANCER BLANKER MODULES    Greetings to one and all! This
""""""""""""""""""""""""""""""""""""""""    topic will provide a
clearinghouse for  detailed information about writing screen blanker
modules for the  Desktop Enhancer. Any questions will be answered in full,
and discussions  on the subject are welcome. (Discussions off the subject
may be accepted,  or not, depending on how far off the subject they are! :)

     A screen blanker program for the Desktop Enhancer is like nothing
which  has been done on the Apple IIgs before. It can be considered to be
similar to a dialog filter procedure, but it is NOT the same! Its  freedoms
(and responsibilities) are amazing, yet once you understand  its limits, it
can be one of the easiest types of program to write. Full  documentation on
how to write blankers is included in the User Guide,  and in the
demonstration disk.

     I'll just re-iterate the high points. You may use any tools you need,
as  long as the application has already started them up. By copying
resources  into your own handles and closing the resource file, you may
have access  to your own resources, eliminating the 16-byte limit on the
parm field,  and allowing easy creation of icons and other standard
structures. You  must remember to return control to the calling application
after each  screen update pass, to ensure that the system can continue any
processes  it may be performing. You must draw only to the current port to
prevent  problems when the screen blanker is cleared from memory, and you
may  NOT issue an _AcceptRequests call to install your own request
procedure.

     Even with all that, I cannot imagine any animation that cannot be done
using a Desktop Enhancer screen blanker program. It's just that some of
the more complex animations may not be as smooth as you might like. Don't
worry about that - if you want incredible animations, you should write  an
animation application: a screen blanker is not the most important  process
the computer can be running, so it should not hog the whole  system all the
time for the sake of mere prettiness.

     Well, those are the barest basics, including a statement of design
philosophy. :)  If you want to try something Really Different, this is  the
place to learn how!  -Steve (Simplexity Software)
                   (S.MCQUEEN1, CAT29, TOP9, MSG:1/M530)


QUALITY COMPUTERS LOOKING FOR NEW PRODUCTS   Well, here I am.  I'm here to
""""""""""""""""""""""""""""""""""""""""""    help you if you have an urge
to develop new software for Q Labs, Quality Computers' software publishing
division.  Since this IS A2Pro, we'll limit our discussions to Apple II and
IIGS products, although products with multi-platform potential are of
particular interest to us right now (we're converting our TestBank program
from IBM to Apple II and Mac, for example).

     We ARE interested in new products!  If you have one that's finished,
you can pack it up and send it to: Quality Computers, 20200 Nine Mile Rd.,
St. Clair Shores, MI 48080 USA.  Attn: Tom Veselenak.

     If you're in the process of working on one, I'm here to answer any
questions you may have about QC.

     General questions & answers, I suppose, should go in this topic.
                  (QC [Jerry], CAT29, TOP14, MSG:1/M530)


WRITING BLANKER MODULES FOR PHANTASM   In this topic we'll discuss writing
""""""""""""""""""""""""""""""""""""   blanker modules ("effects") for
Phantasm, the screen blanker that's part of SIGNATURE GS, published by
Q Labs.  Since the new Twilight II will also run Phantasm modules, your
modules will be available to a wide audience indeed!

     I'll be uploading the official guidelines for writing modules
tomorrow. I've got to warn you, though -- I'm not a IIGS programmer.  The
A2Pro folks have assured me that they'll help me out with any technical
questions.

     By the way, we're currently trying to put together a disk of blanker
modules.  If you're into graphics programming, this could be your chance to
make a few cool bucks with a weekend's worth of work.  We're interested
mostly in buying the modules, but if you'd like a royalty arrangement we'll
try to work something out.  (It depends on how many authors end up being
involved in the project.  As you can imagine, splitting royalties sixteen
different ways could end up being a bit of a nightmare for us...)

     Use this topic to discuss various aspects of writing Phantasm Effects.
                  (QC [Jerry], CAT29, TOP15, MSG:1/M530)


WELCOME TO DREAMWORLD SOFTWARE ONLINE   DreamGrafix - (note the spelling :)
"""""""""""""""""""""""""""""""""""""   Is the only 16/256/3200 color paint
program available for the IIGS.  If you are a developer, you must have this
piece of software, because it will allow you to use 256 color pictures in
your software.  Also, external commands can be written to create shape
tables, font tables, or any number of things.

     DreamGrafix is commercial, the list price is $99.95, street price will
vary.

     DreamVoir - A combination slideshow w/ background SoundSmith player.
It displays 16/256/3200 color pictures while playing SS songs.  v1.31
includes 3200 color fades and a lot of new options.  DreamVoir is $10
shareware.

     DuelTris - The last (?) *tris clone you will ever need.  :)  DuelTris
is a two player competitive game, similar to Tetris.  It features
incredible 256 color pictures and great SS music.  DuelTris has a feature
called the DuelLINK, which allows you to pass 2-4 lines that you complete
to your opponent.  DT also has 6 different special pieces which help you
lower your puzzle, and/or inverse your opponents controls.  You can play
two players or 1 player vs. the computer.  DuelTris is $15 or $20
shareware. $20 includes the Limited Edition packaging, which features a
3.5" jewel case, a color insert and a printed manual.


     DreamVoir and DuelTris are available in the A2 libraries, do a file
search by my email address:  S.CHIANG4 .  There are also several
DreamGrafix demos available, including an fully working version, minus save
print, and view full screen.


Topic organization:

     DreamGrafix externals - This is the area to discuss external commands.
We have written several EXTs for DG.  Import PrintShop GS graphics, color
to greyscale, Area calculator, etc.

     The rest are reserved.  We have some forth coming programs which will
also feature drop in modules.  -- Steven Chiang
                   (S.CHIANG4, CAT29, TOP20, MSG:1/M530)


DREAMGRAFIX TECHNICAL INFORMATION COMING SOON   This topic is for
""""""""""""""""""""""""""""""""""""""""""""""    DreamGrafix technical
questions.  Any non-technical questions should be directed towards A2
category 18 - "DreamWorld Software Online".

     The two major topics are DreamGrafix External Commands and DreamGrafix
Documents.

     The external format has not been posted, as it the documentation
hasn't been fully completed.  I will post it as soon as it is finished.

     The DreamGrafix document file format is documented, and I will upload
it to A2Pro shortly.

Again, this topic is for questions related to either aspect of DG.
-Steve              (Message 1, CAT29, TOP21, MSG:1/M530)


USING MULTIPLE PALETTE PICTURES   This topic is for using multiple palette
"""""""""""""""""""""""""""""""   pictures in your software

     The Apple IIGS SHR hardware is capable of displaying 16 color per line
w/ 16 palettes per screen.  This means that you can define sections of the
screen to correspond to palette 0, another section to palette 1, and so on
for up to 16 palettes.  This is known as 256 color mode, because 16
palettes of 16 colors is 256 colors.  I feel that this mode is one of the
best kept secrets on the Apple IIGS.

     So what, you say?  Well, this doesn't sound all that exciting, but
there is a lot of potential.  For instance, take any game, if your play
area is in the center of the screen and you want the score and maybe the
title of the game at the top of the screen.  For the game play area, you
can set it to one palette of 16 colors, use another set of 16 colors for
the score, and another 16 or 32 for the title of the game at the top of the
screen.

     Big deal, I don't write games...  okay, then take something like
SoundSmith, or ModZAP.  (soniq doesn't use the effect, I don't think.
DreamGrafix Demo 3 would be included in this category though)  The pump
bars (vu meter) are very colorful.  This is also done with palette tricks.
Basically, the program always writes to the screen (Sorry, no QD2 here :)
in a single color like 1.  So if the thing was 4 pixels wide it would be
just one lda #$1111 stal $012000,x per line of the bar.  The picture is
defined in such a way that every 1-2 lines is represented with a different
palette.  Then to vary the colors of the bar, color 1 is changed on each of
the palettes.

     For you HyperMedia folks, you can combine 320 and 640 modes, to have
640 text with 320 pictures.  As soon as I work out a couple of the details,
DG will support this.

     If any of you have seen DuelTris, I use a mixed 320 w/ 640 mode screen
wipe. The desktop is 640 mode, and the sliding bar and the picture that is
uncovered is in 320 mode.

     Palette rotation requires very little CPU time, because you are only
manipulating a few words of memory.  Spy Hunter GS uses palette rotation to
move the ground.  However, it's not your typical palette rotation, it is
more SCB rotation, because he defines two palettes, one with a light g and
dark green, and one with a dark grey and a light green.  Then by
manipulating the SCBs he creates the illusion of movement.  Space Harrier
Demo from the FTA also used scb rotation for the ground movement.  And the
California Demo from the GSAllianc used palette rotation to move the
checkerboard ground left to right.


     If you have any questions or ideas, post them here.  You don't need
even need DreamGrafix to use 256 color pictures.  You can simply set the
SCBs and palettes up from within the program...  The end product is what
counts and multiple palette pictures definitely give the artist more
freedom.

     I didn't mention this above, but the 256 color mode is built into the
hardware, and thus takes no overhead time.
                   (S.CHIANG4, CAT29, TOP22, MSG:1/M530)


METAL/FV SUPPORT COMES TO A2PRO   Metal/FV is a full-features electronic
"""""""""""""""""""""""""""""""   bulletin board system for the enhanced
Apple IIe or later with at least 128k of RAM.

     These topics are for questions and comments regarding the development
of Metal/FV as well as questions and comments regarding the Metal language.

     Question about setting up and using Metal/FV (configuration, etc.)
should be directed to the Metal/FV area in A2 -- Category 41, Topic 15.
                  (J.THOMPSON1, CAT29, TOP26, MSG:1/M530)



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

ANOTHER FREEBIE FOR GNO OWNERS   I just uploaded the 'copycat' utility.
""""""""""""""""""""""""""""""   It's going to be file #3260. Copycat
basically connects one GNO tty to another, so you can (for example) use a
terminal on the printer port to do modem sessions off of the modem port
(while the console is free to do IIGS stuff with- this includes desktop
programs and what not!).

All in all, just another example of the power *real* multitasking gets you.

  Jawaid          (PROCYON.INC, CAT30, TOP3, MSG:76/M530)

NOTE:     Be sure to check out Jawaid's series on programming for GNO. The
          series begins in this issue of the A2Pro GEnieLamp! Search for
          [GNO] -Ed.



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

CHANGES AT SOFTDISK   Recently we had a big re-org here at Softdisk, and
"""""""""""""""""""   one of the results is that we (Softdisk and Softdisk
G-S) are now part of the "Apple Development Group", or ADG as we like to
call it.

     ADG is Softdisk, Softdisk G-S and Diskworld (our Macintosh product).
So, something we are looking for are articles that can apply to all
platforms.

     For example, recently Joe Kohn wrote an article about HP printer
solutions for Softdisk G-S. In about an hour one of our Mac people "ported"
it to Diskworld.

     As another example, Tim Tobin is writing us an article on removable
mass storage options (SyQuest, Floptical, Magneto-Optical, etc) and he's
writing for the GS but keeping in mind the Macintosh.

     So, where does this leave us? Well, we'd like to see some of the
following articles:

  o controlling home electrical stuff with your GS/Mac (X-10??)
  o solutions for the handicapped
  o CD-ROM, the ins and outs
  o ???

     If you're interested in writing an article on any of the above, or
have ideas of your own, please, contact us...we pay anywhere from $75 to
$250 for articles.

     You can reach us at this address (SOFTDISK.INC) or you can call Lee
Golden at 1-318-221-2173.
-Bryan        (SOFTDISK.INC [Zak], CAT31, TOP3, MSG:25/M530)


SOFTDISK STILL LOOKING FOR CD-ROM ARTICLES   I just wanted to let everyone
""""""""""""""""""""""""""""""""""""""""""   know that we've been flooded
(well, a couple dozen anyway :) by people wanting to do AppleWorks GS
articles and how-tos for us!  This is great!  (Please, if you are
interested, contact us! We have plenty of room!)

     We've also found someone to write us an article about X-10 stuff, but
we are still looking for an article all about CD-ROM options on the IIGS.
If you'd like to make $75-$250 -- let us know!
 - Bryan   (SOFTDISK.INC [Bryan Zak], CAT31, TOP3, MSG:26/M530)



                      >>> MORGAN DAVIS GROUP NEWS <<<
                      """""""""""""""""""""""""""""""

MDG Announces BASIC Programmer's Workshop   SAN DIEGO, California --
"""""""""""""""""""""""""""""""""""""""""   April 1, 1993 --
     The Morgan Davis Group announced the BASIC Programmer's Workshop, a
software bundle consisting of three popular products: MD-BASIC 2.0, RADE
1.0, and the Object Module Manager 1.3.  The $99 collection of high-powered
BASIC programming tools offers Apple IIGS users substantial savings, over
$80 off the combined suggested retail price.  ``The BASIC Programmer's
Workshop is a great value. We use these products daily in our own
development, so they have to be complementary,'' said company president
Morgan Davis, ``Create your programs with MD-BASIC, test them with RADE,
and be impressed by the power of the OMM when you run them.''

     MD-BASIC is a professional Applesoft BASIC development tool for
creating programs using the Apple IIGS desktop interface or any command
line shell.  The new 2.0 version offers a luxurious desktop mode complete
with menus, multiple windows, and integrated text editing features.
MD-BASIC translates source code into highly optimized Applesoft programs
that are smaller and faster than can be achieved in Applesoft's native
``immediate'' mode, yet they're 100% compatible with every Apple II
computer.  Beagle Compiler users can compile MD-BASIC-generated programs
for additional speed.  The MD-BASIC language is based on Applesoft with a
number of extensions: free-form layout, named labels (no more line
numbers), long and descriptive variable names, modern commands like IF-
THEN-ELSE, WHILE-WEND, REPEAT-UNTIL, and DO-LOOP, and features found in C
compilers like conditional code processing and #define macros.  MD- BASIC
catches mistakes like unbalanced parenthesis, undefined and unreferenced
labels, misspelled variable names, and other common errors before your
programs run.  GS+ magazine wrote, ``Applesoft may never get better, but
writing programs in Applesoft just did.  MD-BASIC changes the way people
think about Applesoft.''  The package includes sample source code,
interface files, code libraries, and a 100-page manual.

     RADE (Real-time Applesoft Debugging Environment) is a full- featured
diagnostic tool that isolates errors in real-time without disturbing the
BASIC environment.  You can interrupt the execution of your program at any
point to examine or change the contents of variables, set breakpoints, step
through code one line at a time, or review the ``history'' buffer that
records your entire debugging session. InCider/A+ magazine wrote, ``RADE is
fast, powerful, full-featured, and easy to use.  It's a breath of fresh air
. . . a throwback to the days of tight, efficient programming.''  RADE
comes with a 46-page manual and sample software that walks you through a
complete debugging session.

     The Object Module Manager (OMM), an extension manager for Applesoft
programmers, makes it possible to add external commands to enhance BASIC
programs.  Modules are loaded and unloaded as needed, using memory
efficiently.  They can also communicate with each other, making integration
effortless.  Developers can easily create their own custom modules.  The
OMM comes with sample source files in ORCA/M (APW) and Merlin assembler
formats, sample programs, a starter set of modules (including AmperWorks:
35 powerful BASIC commands to pick up where Applesoft leaves off), and
67-page manual.

     The BASIC Programmer's Workshop is available now, directly from the
Morgan Davis Group, for $99 plus $7.95 for shipping and handling (overseas
S/H is $17.95).  CA residents add sales tax. Institutional six-packs are
available for $499 each.
                  (MORGAN-DAVIS, CAT32, TOP1, MSG:7/M530)


MD-BASIC 2.0 SHIPS WITH DESKTOP/COMMAND LINE INTERFACES   SAN DIEGO, CA--
"""""""""""""""""""""""""""""""""""""""""""""""""""""""   April 1, 1993--
     The Morgan Davis Group today announced the immediate availability of
MD-BASIC 2.0, a fully integrated Applesoft BASIC development environment
for the Apple IIgs.  The new version adds a familiar desktop interface,
complete with pull down menus, windows, and mouse support.   MD-BASIC can
be used as a stand-alone application or as an external tool for
command-line shells allowing users to choose the environment they prefer.

     MD-BASIC translates source code into highly optimized Applesoft
programs that are smaller and faster than can be achieved in Applesoft's
native ``immediate'' mode, yet they're 100% compatible with every Apple II
computer.  Beagle Compiler users can compile MD-BASIC-generated programs
for additional speed.  The MD-BASIC language is based on Applesoft with a
number of extensions: free-form layout, named labels (no line numbers),
descriptive variable names, modern commands like IF-THEN- ELSE, WHILE-WEND,
REPEAT-UNTIL, and DO-LOOP, and features found in C compilers like
conditional code processing and #define macros.  MD-BASIC catches mistakes
like unbalanced parenthesis, undefined and unreferenced labels, misspelled
variable names, and other common errors before your programs run.

     The new desktop interface features multiple windows, cut, copy, and
paste editing, choice of font style and tab settings, search and replace,
printer support, and Applesoft-to-source conversion built in.  Its
traditional shell interface includes the processing and conversion
capabilities found in the desktop mode.  The desktop mode can even be
accessed from the shell environment.

     MD-BASIC requires an Apple IIgs with System 6.0 or newer.   A shell
such as ORCA or GNO is optional.   The package includes sample source code,
interface files, code libraries, and a 100-page manual.

     MD-BASIC retails for $89.95.  A $30 upgrade is available directly from
the Morgan Davis Group.  Include $5 for shipping and handling (overseas S/H
is $15).  CA residents add sales tax.  Institutional six- packs are
available for $449 each.
                  (MORGAN-DAVIS, CAT32, TOP1, MSG:8/M530)


MDG INSTITUTES MAJOR PROLINE PRICE REDUCTION   SAN DIEGO, California--
""""""""""""""""""""""""""""""""""""""""""""   April 1, 1993--
     The Morgan Davis Group today announced a major price reduction for
ProLine, the popular Apple II bulletin board system developed by Morgan
Davis and supported since 1984. Prospective BBS buyers can now purchase
ProLine for $159.95, down $100 from its former $259.95 suggested retail
price.  The new price reflects MDG's commitment to Apple II owners by
offering the finest product and support available for the best value ever.

     Recently, ProLine was awarded five out of five stars in the December
1992 issue of inCider/A+.  The leading Apple II/Macintosh magazine wrote,
``ProLine is as powerful as many UNIX minicomputer-based systems, yet
amazingly, it runs on a standard Apple II.  ProLine is top-notch.  You can
run ProLine as an independent on-line system, but it gains a new world of
capabilities if you network it with other systems.''

     ProLine can be linked to a global network, known as the Internet,
consisting of educational, industrial, and government computers. Many
commercial information services are also part of the Internet: America
Online, BIX, CompuServe, Delphi, GEnie, MCI Mail, and others.  Networked
users can exchange electronic mail, bulletins, and software world-wide,
with delivery time measured in hours, or even minutes.  A leading BBS
publication, Boardwatch Magazine (June 1991) noted, ``ProLine is a network
of Apple II systems that are not only tied to each other, but routinely
carry Internet News Groups . . . something we just didn't expect.  The
speed and power of this BBS running on an Apple II were quite impressive.''

     In addition to Internet networking, ProLine offers terminal emulation
compatible with all personal computers, high-speed modem support, and a
full complement of file transfer protocols.  ProLine does not restrict the
types of computers that can access it so it appeals to the entire computing
community.  Now with a new price, ProLine is the most cost-effective
solution for schools, clubs, businesses and user groups.

     ProLine 2.0 comes with three 800K disks and a 350-page reference
manual.  An enhanced IIe or Apple IIGS, 64K RAM, and at least 2MB free on a
ProDOS-formatted drive is required.

     ProLine is available immediately, direct from the Morgan Davis Group,
for $159.95 plus $8 shipping and handling (overseas air S/H is $25).  CA
residents add sales tax.  Institutional six-packs are available for $799
each.  Purchase orders accepted.  Morgan Davis Group  customers who
purchased ProLine after April 1, 1993, for $259.95 will receive a $100
rebate.           (MORGAN-DAVIS, CAT32, TOP1, MSG:9/M530)


MDG OFFERS LOW-COST INTERNET GATEWAY   SAN DIEGO, California--
""""""""""""""""""""""""""""""""""""   April 1, 1993--
     The Morgan Davis Group today announced uMDSS, a mail distribution
subsystem protocol for Unix systems. uMDSS makes possible the exchange of
Internet electronic mail and news with microcomputers unable to communicate
over traditional UUCP channels, like the venerable Apple II.  While
available at the university level, Internet access is cost prohibitive for
most grade schools still equipped with labs full of aging microcomputers.

     ``Compared to a direct Internet connection--about $24,000 per year--
and the complexities of special hardware and system administration, it's
obvious why K-12 students and the computer-using community have been unable
to use the Internet.  It's supposed to be available to everyone, but it's
too expensive,'' explains MDG president Morgan Davis.  ``We're building a
network of Internet e-mail access points on inexpensive personal computers.

Instead of pouring thousands of dollars into new hardware and monthly
access fees, schools can retain their investment in yesterday's hardware
and still get today's technology for the cost of a normal telephone bill.''

     uMDSS is like UUCP in many ways.  uMDSS sites connect to UNIX hosts
over serial-based connections.  The caller logs in with an account name and
password, then identifies itself by its site name and a secondary password.
Session information is exchanged, and files begin moving between systems.
When all files have been exchanged in both directions the session is
complete.  uMDSS maintains site lock (LCK) files,  session ``.Status''
files, and a detailed log file.  It also includes a uustat- like function
for reporting job and connection statistics.  Integration with local mail
services is transparent.  At the transfer level, an XMODEM-based 4K-packet
protocol provides near 100% or better transfer efficiency, and is
compatible with high-speed modems and ports.

     Client support is currently available for the Apple II through the
ProLine BBS developed by Morgan Davis.  ``ProLine is a network of Apple II
systems that are not only tied to each other, but routinely carry Internet
News Groups . . . something we just didn't expect,'' wrote Boardwatch
Magazine in a June 1991 review.  The uMDSS interface makes this possible.
ProLine was recently awarded five out of five stars in an inCider/A+
review.  The leading Apple II/Macintosh magazine wrote, ``ProLine is as
powerful as many Unix minicomputer-based systems, yet amazingly, it runs on
a standard Apple II.''  Support for PC and Macintosh computers is expected
later this year.

     The uMDSS host software is available immediately for $59.95 per site,
and can be mailed directly from the Morgan Davis Group to a customer's
electronic mailbox.   The electronic package contains complete C source
code for compilation on most Unix systems.   It also includes full
documentation on installation and integration with local services such as
smail and cnews.  A six-host site license is available for $299.
                 (MORGAN-DAVIS, CAT32, TOP1, MSG:10/M530)


FOR MORE INFORMATION CONTACT MDG   Founded in 1989, the Morgan Davis Group
"""""""""""""""""""""""""""""""" produces unique, powerful,
and innovative software for a variety of computers.  For the Apple II,
MDG also publishes ProLine, a BBS with Internet access; ModemWorks, a
communications toolbox; RADE, a real-time Applesoft debugger; VirusMD, a
virus detection and repair utility.  Call or write for a free product
catalog.

  Contact:     Morgan Davis Group
               10079 Nuerto Lane          +1 619 670 0563 TEL
               Rancho San Diego           +1 619 670 9643 FAX
               CA 91977-7132 USA          +1 619 670 5379 BBS



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

WHAT IS THE DEAL WITH THE MANUALS?   There have been some questions about
""""""""""""""""""""""""""""""""""   our manuals, so I wanted to explain
exactly what is happening, and where the delays are coming from.

     First, a bit of history.  A couple of years ago, we started doing some
courses for the Apple IIGS.  The first few versions of our first courses
were serialized, and were not sent to many people, so we copied them
instead of printing them.  That worked well, so we kept right on copying
when the book form of the courses came out.  Looking around, we found we
weren't alone.  Apple, APDA, and a lot of other companies were using copied
pages for short -run products or products that changed frequently.

     Last year, we ended up reprinting ORCA/M manuals.  There were two
things that bothered us about this process.  The first is that the print
quality, while not bad, wasn't as good as we were getting from copiers.
True, a good printer can outperform a copier -- but we weren't able to pay
for the very best printers.  In addition, we had to buy 1000 books to get
even a modestly good price break.  It ended up costing about $13,000 for
the print run -- and we may never sell all of those books.  For a company
our size, tying up $13,000 per product in inventory cost just doesn't work.
(Incidentally, we've checked around.  Most printers would charge us $17,000
to $25,000 for the same job.  For the quantity and quality, we got a good
price.)

     Well, to make a long story short, by cutting the height of the manual
by 1/2 inch, we could copy it.  We checked, and found two places that would
copy the books for a very good price.  We're still using printed covers. We
switched back to spiral bindings, since you can do a few of those, where
perfect binding (like on a paperback book) is somethign that has  to be
done to a lot of books at one time.  In addition, most of the people we
talk to like the new spiral binding better than our old wire binding, and
almost everyone liked that better than perfect binding. The printing is
better quality.  We can even order 10 books and still get a good price.
Our inventory price dropped to about $400 for the covers. The price per
book dropped to about $9 to $10, depending on the book. And, even better, I
can publish programs like Modula-2, which I'm not at all sure will sell
1000 copies, and would not normally be able to risk $13,000 on.

     The disadvantage is that printing books is tricky.  It takes a good
operator and a good copier in perfect repair. It also takes time.  We're
getting a fairly steady stream of books back, but the quantity doesn't keep
up with the orders.  We've worked out most of the kinks, and have two
suppliers, now, but it's going to take some time to get caught up. Since we
could no longer afford to produce GS software with 500 page  books the old
way, though, there wasn't much choice.  Still, once the system runs
smoothly, we can publish products profitably that couldn't be released at a
profit, even on a Mac.  You'll see several of those this summer, I'm happy
to say.  In fact, the changes we've made will allow us to continue
producing GS products even if we start creating programs for other
computers, too, and I'm pretty happy about that -- I like my GS!

Mike Westerfield
                   (BYTEWORKS, CAT36, TOP31, MSG:1/M530)


WORK BEGINS ON 'HYPERLOGO' PROJECT   We're currently working on a Logo
""""""""""""""""""""""""""""""""""   interpreter for HyperStudio.  This
language will eventually be released as a scripting language for
HyperStudio GS, and will be built into HyperStudio Mac.  We'll probably
release stand- alone Logos for the GS and Mac, too, but our plans are not
as firm in that area.  Specifically, we really haven't decided  whether we
will publish it ourselves, or pass it on to a company that can reach the
K-6 market better than the Byte Works can.

     Here's a quick run-down on the broad outline for the Logo interpreter,
as installed in HyperStudio:

 o It's called HyperLogo.
 o Logo has a lot of variants, like BASIC.  Ours is Apple Logo with a
   few commands removed (think "no text screen").  I've also added a few
   commands from Object Logo (but not objects) and a few commands that
   are specific to our Logo (mostly for HyperStudio access, plus one other
   area that will be pretty cool, but I'd like to keep private for now).
 o In Hyperstudio, you will have up to three windows open when you use
   Logo.  The first, and obvious one, is the script window.  You can also
   open a console window, where you can type Logo commands for immediate
   execution.  Among other things, you can examine and modify your Logo
   workspace.  The last window is the Turtle Window, which you can use
   to try Logo graphics effects from the Console window.  (Normally, of
   course, Turtle graphics commands draw to the active card.)

     This is all still in a very fluid state.  I'd appreciate any questions
or comments you might have.

Mike Westerfield
                   (BYTEWORKS, CAT36, TOP32, MSG:1/M530)



[EOA]
[GNO]///////////////////////////////
              GNO TUTORIAL SERIES /
/////////////////////////////////
Programming the serial ports.
"""""""""""""""""""""""""""""
By Jawaid Bazyar
[PROCYON.INC]

                     >>> GNO PROGRAMMER'S TUTORIAL <<<
                     """""""""""""""""""""""""""""""""


WELCOME TO THE GNO PROGRAMMING SERIES   Hi folks!  We've been a little bit
"""""""""""""""""""""""""""""""""""""   quiet lately because we've been
hard at work on the GNO 1.1 upgrade in the little free time we have these
days.  However, to stir up some excitement (and advertise GNO 1.1 a bit :-)
we're going to do a little series on programming GNO's serial communication
subsystem.  Depending on the response, we'll continue to fill out the
following outline of a larger "course":

   1.  What is GNO, and Why Should I Care?
   2.  Processes
       A.  Programming processes
       B.  Manipulating processes
   3.  Inter-process Communication
       A.  Pipes
       B.  Semaphores
   4.  Communications and the TTY
   5.  ?-?

     You'll notice the ? marks; these sections are left open for future
additions.  Basically, if there are parts of GNO's kernel that anyone has
questions on, I'm going to write up a document that hopefully explains it
in detail.  These sections will appear one by one both in GEnieLamp A2Pro,
and in the library with annotated sample source code showing off the
techniques described in the section.

     As the outline fills out, I'll post updated versions to this
"Programming GNO" area.  Since my writing and free time tend to be somewhat
irregular, and since I don't have the time right now to do chats, I've
decided not to do this  via A2U.  I hope the information will still be
useful.

                  (PROCYON.INC, CAT30, TOP1, MSG:8/M530)


INTRODUCTION TO GNO/UNIX TERMINAL DEVICES   UNIX (and GNO) communicate with
"""""""""""""""""""""""""""""""""""""""""   the outside world almost
universally with  the TTY interface.  TTY is shorthand for "Television
Typewriter", and its  use is somewhat anachronistic, but TTY is easy to
pronounce, so its  usage has stuck (along with other anachronistic UNIX
terms :-)  A more  modern term would be 'terminal', and TTY and terminal
will be used  interchangeably in this section.

     TTY and terminal will be used to refer to the UNIX interface to
terminals,  rather than the terminals themselves.

     The terminal interface is a highly configurable and flexible system.
It  allows programs to configure all aspect of terminal interface, like
baud rate, CR/LF translation, and input mode.

 GNO TTY Drivers
 --- --- -------

     GNO/ME provides three different TTY (character) devices: the GNO
Console  driver, and a driver for each of the IIGS' built-in serial ports.
Since these disparate devices are all treated the same way by the same
interface, programmers get a completely consistent interface to terminals,
no matter what the actual device is (this is what we refer to in GNO
documentation and advertising).  What this means for the programmer is a
whole new realm of power - testing a program meant to communicate with
other computers over a modem, for example, can be tested with user input
on the console.  The three drivers all have default names, and the names
of the serial devices are user-configurable by editing the etc/ttys file.

   .ttyco  - the GNO console driver
   .ttya   - IIGS modem port
   .ttyb   - IIGS printer port

     In addition, there is a special file, '.tty', that when opened returns
a reference to the terminal the program was executed from.  This allows
programs to read or write the terminal, even when input/output redirection
was used on the program.  For example, a debugger could use '.tty' to
access the terminal (completely through the OS) even when the program being
debugged was executed with "program < foo > bar".  If the program was
executed  from the console, then opening .tty would be like opening .ttyco;
using  .tty the program doesn't need to know what terminal it was run from.


 Input Modes
 ----- -----

     There are three basic input modes: cooked, CBREAK, and RAW.  Cooked
mode is the normal method of operation.  It provides some basic input
editing by keeping a buffer of input and allowing the user to modify that
buffer with backspace (and other editing features, depending on the version
of UNIX or GNO in question).  Programs reading from a terminal in cooked
mode only receive input hen an entire line has been typed (and the return
key pressed), even if the program only requested a single character.  This
is done to help minimize operating system overhead.

     CBREAK stands for 'character break', and it allows programs to read
input a character at a time, houtiting for an entire input line first.
Certain high-level features of the tty are still active, like interrupt
keys (more on these below) and CR/LF translation.  A text editor like Emacs
or VI would use CBREAK mode, as would any interactive program that needs to
be able to detect single keypresses.

     The final mode is RAW mode.  This provides completely raw access to
input data: no character translation or input editing is performed, and the
interrupt keys are disabled.  You'd use raw mode for a file transfer
protocol, for instance.

 Special Characters
 ------- ----------

     There are a number of special characters that TTYs detect and act on
in cooked and CBREAK modes.  A table of these follows.  The special
characters are completely user-configurable, and thus they are named and
followed by their default values.  Any characters which are only present in
GNO 1.1 are marked with an '*'.

   Char    (Def)  Description
   ------  -----  -----------
   t_intrc  ^C    Standard interrupt character. When this is typed,
                  a signal (SIGINT) is sent to the process(es) that
                  are in control of the terminal.  Unless the program
                  has installed a handler for this signal, GNO will
                  cause the program to terminate.

   t_quitc  ^\    Similar to t_intrc, except that programs are not allowed
                  to install handlers for this interrupt.  The signal
                  SIGQUIT is sent to the process, and GNO will terminate
                  the program.

   t_stopc  ^S    When typed, this character will cause GNO to cease output
                  to the terminal.  Old Apple II cronies will remember this
                  from AppleSoft BASIC; it's an extremely useful feature.

   t_startc ^Q    This character is used to resume output to the terminal
                  after a t_stopc was used.

  *t_eofc   ^D    When a tty receives this character, it is treated as if
                  an end-of-file condition had been received on the
                  terminal file. Any partially entered input lines are
                  returned to the process making the read, along with a
                  GS/OS End Of File error ($4C).

   t_suspc  ^Z    Sends the signal SIGTSTP to the process in control of the
                  terminal.  Unless the program has installed a handler for
                  this signal, GNO will cause the program to be suspended.
                  That is, the program will stop running, but remains in
                  memory and can be restarted where it left off.

  *t_dsuspc ^Y    Just like t_suspc, except that the suspension happens
                  only when the character is read by the program, not when
                  it is typed.

  *t_rprntc ^R    Reprints the current input line, in the event that it was
                  garbaged by output from a background process or line
                  noise.

                  (PROCYON.INC, CAT30, TOP1, MSG:10/M530)


DEVICE CONTROL AND OTHER FUN WITH IOCTL()   Mode changes and configuration
"""""""""""""""""""""""""""""""""""""""""   of the terminal devices is
accomplished with the GNO Kernel call ioctl() (I/O Control). ioctl() takes
three parameters:

   ioctl(int fd, unsigned long tioc, void *iod)

   fd -   file descriptor (GS/OS refnum) of the terminal to affect
   tioc - several bit fields that describe the operation to occur.  Simply
          use the predefined macros in the <sys/ioctl.h> header file
   iod -  pointer to input or output data

     Now, when we say "file descriptor" we also mean a GS/OS refNum, such
as is returned from OpenGS called on one of the terminal devices, or the C
statement open(".ttya",O_RDWR) (assuming you have the GNO libraries
installed - the standard ORCA/C version of open() will not work correctly
in this regard as it does not return a real GS/OS refnum).  You can also do
terminal I/O through C's stdio (fopen, etc) but you have much less control
over the way incoming data is handled due to buffering (and if you turn
buffering off you might as well use the low level calls
open/read/write/close).

     There are four data structures that can be accessed with ioctl() that
allow programs to set the TTY mode.  The first (and most commonly used) is:

 struct sgttyb {
     char sg_ispeed;
     char sg_ospeed;
     char sg_erase;
     char sg_kill;
     short sg_flags;
 }

     sg_ispeed and sg_ospeed set the input and output baud rates,
respectively. Since no modern computer system transmits at a different baud
rate than that which it receives at, sg_ospeed is obsolete and both input
and output baud rates are set with sg_ispeed.  "So what exactly do I put in
sg_ispeed and why is it a char/acter instead of an int?" you ask?  there
are C macros that equate to predefined baud rates; for instance, the 2400
baud setting is 'B2400'.  The interface defines some baud rates that aren't
used on the IIGS and also some IIGS-supported baud rates aren't defined in
the macros; this was done for full UNIX compatibility.  However, The major
baud rates (B300, B1200, B2400, B9600, B19200, and B38400) are all defined
so communications with any modern devices is no problem.  Obviously, the
GNO console doesn't have a serial chip in it, so the baud rate settings are
ignored.

     The sg_erase character is the ASCII character that means "backspace"
or "delete previous character" when the TTY is in cooked mode (recall that
cooked mode supplies user-level input editing).  This is configurable so
that it can be defined to the key that is most convenient on whatever
terminal you're using.  The GNO default for sg_erase is 0x7F (the delete
key), which corresponds with the fact that most people logged into GNO will
be using a IIGS (or even a Mac).

     sg_kill is not supported; it is meant to delete all input on the
current input line.

     The final field in the sgttyb struct is sg_flags.  A fair number of
flags that control the TTY's mode of operation are present in this field.
The most important of these are (taking the macros that are defined to the
bit values) RAW, CBREAK, CRMOD, and ECHO.

     Note that there is no 'COOKED' flag; COOKED mode is set by making sure
RAW and CBREAK are off (set to zero).  The CRMOD flag controls how the TTY
deals with outgoing and incoming carriage returns and line feeds.  With
CRMOD turned on, outgoing CR's are converted into a CR/LF sequence; both
the GNO console and many terminals (like the DEC VT100) need this.  You can
tell if a program accidentally left CRMOD turned off before exiting by the
appearance  of everything on a single line; CR's are left as-is, and since
the definition of CR is 'move the cursor to the left of the current line',
you get a very disconcerting effect.  Using the shell command "stty crmod"
will turn the CRMOD bit back on.

     The final flag that you'll be interested in immediately is ECHO; if
ECHO is turned on, everything that is typed at the terminal will be echoed
back to the terminal screen.  There is a difference here between GNO and
UNIX; in GNO, all input processing happens in a process; under UNIX, a good
deal of processing occurs in interrupt handlers.  Thus, in GNO characters
are only echoed back when they are read by the program in question (this
ends up being each time you type a key on the keyboard, because when we say
"process reads the data" we include the part of the process that is inside
the operating system - in this case, the GS/OS ReadGS call on the TTY
file).  As an example of the use of the ECHO flag, a program that needed to
read a password in (invisibly) could turn off the ECHO flag; if you had a
program that was communicating through one of the serial port TTYs, you
would also want ECHO turned off.

     For more details on various flags available in sg_flags, see GNO's
TTY(4) manpage (GNO 1.1 has a lot more).

     The second major structure available for inspection via ioctl() (at
least in the TTY drivers) is the local mode word.  This contains flags that
control a number of terminal-support functions.  Most of them are there to
deal with old terminals that (for example) don't have the tilde key, or
don't support lowercase characters (gasp! They do exist!).  The particular
flags supported by GNO 1.0 or 1.1 are described more fully in the TTY(4)
manpage.

     The third structure is winsize; this structure is designed for use
with windowing systems.  For example, say a pseudo-tty is active with a
text editor.  If the user changes the size of the window, the window
manager does an ioctl() call to change the window size structure; at that
point, the tty driver sends a SIGWINSZ software signal to the process
controlling the terminal (more about process groups and control terminals
next week). If the program doesn't support the window size record, the
signal will be ignored; however, programs like the Stevie text editor that
_do_ trap that signal can then update their displays and internal variables
to account for the change.  Height and width of the content area of the
window are stored in both pixel and character units.

     The final two structures, ltchars and tchars, both allow user (and
software) configuration of all of the interrupt characters the TTY
recognizes. Recall that interrupt characters are keystrokes like ^C and ^Z.
A program can turn off the effect of those keys by setting the value of the
appropriate character to -1 (or $FF), in case they don't want the user to
interrupt them but also don't need a signal handler for them (or can't
install a signal handler, as in the case of SIGQUIT).  The user may
configure the characters to be anything they like.

 [ Next, we discuss process groups and actual use of the ioctl system
   call.  We'll also start discussing how to write TTY-savvy software ]

                  (PROCYON.INC, CAT30, TOP1, MSG:15/M530)



[EOA]
[MAN]///////////////////////////////
                 THE MANAGER TIPS /
/////////////////////////////////
Programing Tips For The Manger
""""""""""""""""""""""""""""""
By Seven Hills Software
           [SEVENHILLS]


              >>> PROGRAMMER INFO CONCERNING THE MANAGER <<<
              """"""""""""""""""""""""""""""""""""""""""""""

USING THE "BACKGROUND" TEST APPLICATION   The "Background" application
"""""""""""""""""""""""""""""""""""""""   demonstrates how an application
works in the background.  In order for it to operate in the background, the
"Can Receive Null Events" option is checked, and to let other applications
operate in the background while the test application is in the foreground,
the "Can Release Null Events" option is also checked.

     Background creates a standard menu bar and opens a "Null Event Counts"
window that displays how many Null Events are occurring.

     The Foreground number increments when the application is currently in
use (it stops when an NDA or another application is being used).  This
number increments very quickly because Null Events occur frequently when an
application is frontmost.

     The Background number increments when an NDA or another application is
in use.  This speed at which this number increments depends upon what the
active application is currently doing.

     The test for being in the background is simple:  If the front window
is a system window, then the application is in the background.  This test
is made in Background's main event loop, so each time either number
increments you know that the demo has made one pass through its event loop.

     If you open almost any NDA, the Background number increments whether
or not The Manager is set to allow background Null Events.  This is because
most NDAs allow the main application's event loop to continue executing.

     To demonstrate the multi-tasking that The Manager provides, launch an
application that has been set up to release null events (use TM Application
Setup for regular applications; use TM Preferences to control the Mini
Launcher).

NOTE: If you launch an application that has been set up to Release Null
      Events but the Background number does not increment, then activate
      the Finder or Mini Launcher and check the "Allow Background Null
      Events" option in the TM Preferences dialog box.

     It is interesting to watch the Background.Demo operate as you use an
application:

o Position the "Null Event Counts" window in the lower-right corner of the
  screen.
o Activate/Launch an application that is set to release Null Events.
o Resize the window(s) so you can still see the values in the Null Event
  Counts window.
o Use the application.

     Note that the background number increments only during null events,
and only when conditions are "friendly" (e.g. a modeless window is open,
not when an alert is displayed, etc.).


MULTI-TASKING   In order for your application to be multi-tasking friendly,
"""""""""""""   it should call GetNextEvent or TaskMaster as often as
possible.  This is true whether you are in the foreground or background (if
you are in the foreground it's friendly because you're giving background
applications a chance to work; if you are in the background it's friendly
because you won't hog too much background time).

     Although we recommend handling update events for the best looking
result, for these calls you can even use a NIL mask...the important thing
is to make the calls as often as possible.  TIP: If you have a big outer
loop with several inner sub-loops, one strategy for handling update events
is to include TaskMaster(NIL) within the sub-loops and a
TaskMaster(Updates) in the big outer loop.


HOW MULTI-TASKING WORKS   Let's say you have one foreground application and
"""""""""""""""""""""""   two applications processing in the background.
When the foreground application calls GetNextEvent or TaskMaster and there
is a Null Event (nothing else happening), The Manager passes control to the
first background application, which makes one trip through its current
event loop then control is returned to the foreground application.  The
next time a Null Event occurs in the foreground application, The Manager
passes control to the second background application.

     Because time is shared between foreground and background applications,
applications that want to run in the background should be very careful not
to stay in control very long (otherwise the foreground application's use
will be interrupted).


NOTES ABOUT USING WINDOWS   Always use non-dialog windows for long
"""""""""""""""""""""""""   processes.  To determine if The Manager can
activate another application it does GetWFrame and tests the bit that
indicates it's a dialog frame.  If a dialog is open, The Manager will not
activate another application.  If another application cannot be activated,
your application can't be put into the background.

     Another reason for using non-dialog windows is because non-dialog
windows will always be opened in the application's layer, whereas
alerts/dialog windows will interrupt the user and the current foreground
application (annoying and confusing).


STANDARD QUICKDRAW   As demonstrated by the Background test program, you
""""""""""""""""""   can use QuickDraw calls to draw into your windows and
there will be no ill effects on the foreground application (just follow the
standard recommendation to save/set/restore the GrafPort as necessary).


DIRECT SCREEN WRITING   If your application writes directly to the screen,
"""""""""""""""""""""   follow two rules to insure compatibility with The
Manager (these are also standard Apple rules, but they are rarely
followed):

RULE #1: Create a dummy window that fills the entire screen.

              If you draw directly to the screen without creating a window,
         when the user clicks on what appears to be contents of your
         window, The Manager will detect a hit in another application's
         window and will activate that application (or will detect a hit on
         the desktop and will activate the Finder).

              By creating a window that fills the screen, when the user
         clicks The Manager will know the mouse click belongs to your
         application.


RULE #2: Draw ONLY IF your window is frontmost (test _FrontWindow).

              This should be obvious...if you draw when another window is
         in front you will overwrite that window's contents.


NOTES ABOUT USING ALERTS/DIALOGS   If a background application presents an
""""""""""""""""""""""""""""""""   Alert, that alert is put up in front of
the application currently in use.  You can see how this works by choosing
"AlertWindow every 100 Null Events" from the Background test application's
Test menu, then activate another application.  Each time the Background
Null Event Count is a multiple of 100, an alert will be presented.

     Start using the other application (e.g. if you're in Teach, start
typing a document).  Before long an alert from the Background application
will interrupt you.  If you acknowledge the Alert and keep typing your
document, the alert will interrupt you again.

     Pretty soon you'll know why you do NOT want to interrupt the user with
alerts!  Not only is it annoying when a background application forces
itself upon the user, but it is also very confusing for an "XYZ"
application alert appear while you are using application "ABC"!

     We provided this test option to demonstrate that it is possible to
present an alert, but even though it is possible you shouldn't do it.  The
recommended alternative is to use a modal, but non-dialog, window instead
(__DoModalWindow is perfect).  As a window it will not interrupt the user,
and when the user re-activates your background application, the modal
window will be patiently waiting for a response.

NOTE: Version 1.0.0 of The Manager has a problem that prevents
      _DoModalWindow from working properly (in the process of opening the
      window the application is made active, and the system might crash).
      If you are developing software to be "Manager-Aware" please contact
      Seven Hills Software for more information.

NOTE: If you insist on using alerts, include the application name within
      the alert (e.g. "Message from XYZ: File already exists."); otherwise
      the user won't know where the alert comes from.  For example, Apple's
      Teach application displays an alert when its OOM queue is called.  If
      you launch an application that attempts to allocate a huge memory
      handle (perhaps to purge memory), Teach's OOM queue routine displays
      an "out of memory" alert (which has no bearing on the current
      application, and is very confusing because the alert says nothing
      about the message coming from Teach).

IMPORTANT: Never make Standard File calls while you are in the background!

IMPORTANT: Text based applications that can work in the background must not
           display anything when in the background!  Here's the test (which
           works whether or not The Manager is active):  If the Window
           Manager is started (check _WindStatus), do NOT display text if
           _FrontWindow returns any window.

                                 [*][*][*]


SOURCE CODE FOR THE BACKGROUND TEST APPLICATION   We have included the
"""""""""""""""""""""""""""""""""""""""""""""""   source code for the
Background test application so you can see how it works.  It is also a good
place to start if you want to quickly test how some interface component
behaves while it the background.

The source code and related files are:

     o Background.c (CC source)
     o Background.h (CC source)
     o Background.r (REZ source)
     o Make.ORCAC (EXEC script): commands to compile with ORCA/C compiler
     o Make.APWC (EXEC script): commands to compile with APW/C compiler
     o Background.make (MPWGS text): make file for MPWGS.

Notes:

     o The CC sources are ready for the ORCA/C compiler. To compile with
       APW/C, execute before Make.APWC:  CHANGE Background.c CC <Return>

     o After compiling you must use TM Application Setup and check the "Can
       Receive Null Events" option in order for the application to receive
       any time in the background.  If you want other application to work
       while the Background test application is in the foreground, also
       check the "Can Release Null Events" option.


GETTING INTIMATE WITH THE MANAGER   All the guidelines above can be
"""""""""""""""""""""""""""""""""   implemented in your existing
applications without any concern for whether or not The Manager is present
on an end-user's machine.  In the next version of The Manager, IPC
(AcceptRequest/SendRequest) messages will be available to access useful
data and utilities.

     If you are developing an application and want to take advantage of
these Manager-specific routines, please contact Seven Hills Software for
information.

                               [*][*][*]


Ed. Note:  The information above was provided by Seven Hills Software. The
           source code samples and Background application mentioned in the
           article are available in the A2Pro library.
          (File #3206 TMPROGINFO.BXY.



[EOA]
[RTC]///////////////////////////////
                        RTC WATCH /
/////////////////////////////////
A2Pro Real Time Conference News
"""""""""""""""""""""""""""""""
By Nate C. Trost
       [N.TROST]



                     >>> WELCOME TO THE RTC WATCH <<<
                     """"""""""""""""""""""""""""""""

LOOKING FOR ANSWERS?   Looking for answers to your programming questions?
""""""""""""""""""""   Want to know the latest and greatest Apple II
programming news?  Have a desire to shoot the breeze with some of the best
II people in the business?  Try the A2Pro Sunday Night RTC's!  8:30 Eastern
every Sunday at page 530, option 2 on the menu!

                                 [*][*][*]

RTC NEWS FLASH!   Starting on May 6, every Thursday night will be Apple
"""""""""""""""   IIGS Graphics and Sound Night in the A2Pro RTC.  Join
host Nate Trost for discussing graphics and sound on the GS!  9:30 Eastern
every Thursday at page 530, option 2 on the menu.  Whether you're a
beginner or a master, this is the place to discuss graphics and sound on
the GS!

                                 [*][*][*]


APRIL A2PRO RTC HIGHLIGHTS:   Here are some hilights from a April's
"""""""""""""""""""""""""""   Real Time Conferences, just a taste of what
is in store for those who drop by to chat!


ON THE ZBASIC LANGUAGE FOR ALL APPLE IIS
""""""""""""""""""""""""""""""""""""""""

<[Airship] J.GRAHAM29> -----  I've been getting a couple of inquiries about
                              the availability of ZBasic and AC/BASIC. Any
                              idea if either one is still around?

<[A2Pro Leader] M.DEATHERAGE> Greg Branche, who _wrote_ ZBasic, says
                              Zedcor will probably be happy to sell
                              you a copy.  :)

<[Nate] N.TROST> -----------  But will you get any support?

<[A2Pro Leader] M.DEATHERAGE> Support?  No.  Greg says if you're
                              lucky, you might get a manual.  :)


ON KEYCAREBITS
""""""""""""""

<[Bill] W.TUDOR> -----------  I want to say something about keyCareBits for
                              keyboard equivs of controls, ok?

<[A2Pro Leader] M.DEATHERAGE> It's still a free country, last I checked.

<[Bill] W.TUDOR> -----------  Let's say you have a check box and the text
                              begins with "s". Ok, you want an "S" to
                              toggle the check box. No problem. In this
                              case, you may not even care if Apple-S works
                              - BUT- Please SET the keypad and option key
                              care bits so that "keypad-S" and "option-S"
                              do NOT work. In the option case, things may
                              be mapped around  and in the keypad case, the
                              user pressed a Function key on the ext
                              keyboard.

                              That's my two cents for the day. :-)


ON WINDOW INFO BARS
"""""""""""""""""""

<P.BENSON1> ----------------  I posted a question in the Window Mgr area &
                              did not get a response I could really work
                              with.
                              I want to set up a color palette in the info
                              bar of a window.  My problem is determining
                              which color was picked (i.e. what are my
                              local mouse pts)

<[A2Pro Leader] M.DEATHERAGE> Pauley:  You have to do it all yourself.  The
                              only help the system gives is that the Info
                              bar is just above the local coordinate origin
                              of the window.  In other words, the bottom
                              line of your infobar has Y coordinate -1 in
                              local coords.


ON 'STRANGE' TOOL CALLS
"""""""""""""""""""""""

<[Leo] L.PIILONEN> ---------  I see in ORCA 2.0 that there are quite a few
                              toolbox calls that don't appear....
                              ...in Toolbox Reference Vols 1--3 nor in the
                              Technical Notes at ftp.apple.com.

<[A2Pro Leader] M.DEATHERAGE> Leo, there's an entirely new book that was
                              published about a year ago called
                              "Programmer's Reference for System 6.0."
                              It's published by the Byte Works and
                              available from them or Resource-Central.
                              This book has what you're looking for in it.

                             (Also note that the 6.0 Golden Master CD from
                             Resource-Central has a complete set of toolbox
                             macros, as well as C header files, for 6.0)


ON FINDER RESOURCES
"""""""""""""""""""

<M.WOLFGRAM2> -- I don't know why Dean would want to move his trash can.
                 That is a good question though. :)

                 Maybe he would rather change the default window sizes
                 to 640 X 200 ?

<[Nate] N.TROST> How can I do that with resources, eh Mr. Resource Guy?  :)

<M.WOLFGRAM2> -- The data that the Finder uses for that, Nate, is kept in
                 a rRectList resource.

                 The resource is referred to as the Geek Preferences.

<[Nate] N.TROST> That is a rFib if I ever edited one.  :)

<M.WOLFGRAM2> -- No, Nate... Honest... The rRectList is referred to as
                 the Geek Preferences resource... because only the Geeks
                 (that's people like Dean) would want to change it :)


AND.....OFF THE DEEP END
""""""""""""""""""""""""

<A2PRO.STEVE> ----------  So who watched 90210 tonight?

<[Nate] N.TROST> -------  not I.

<[ToddM] T.MYERS4> -----  I just see the commercial 'blurbs' and think
                          ....NOT! (:

<[Nate] N.TROST> -------  Debugging is better than 90210.  :)

<[RESOURCES] M.WOLFGRAM2> 65816 is better than 90210

<[Nate] N.TROST> -------  Hey that gives me an idea...
                          the 90210 instruction set....

<A2PRO.STEVE> ----------  duh  #$1234

<[Nate] N.TROST> -------  friend indirect, stranger indirect addressing
                          modes.  :)

<[RESOURCES] M.WOLFGRAM2> wow >$0000

<A2PRO.STEVE> ----------  stranger indirect indexed protected mode

<[Nate] N.TROST> -------  bmw #720,i .  :)

<A2PRO.STEVE> ----------  We need help.

<[Nate] N.TROST> -------  We do.



[EOA]
[A2U]//////////////////////////////
                A2U CAMPUS GREEN /
/////////////////////////////////
Your GEnieLamp A2Pro guide to A2U
"""""""""""""""""""""""""""""""""
By Nate C. Trost
       [N.TROST]

                   >>> WELCOME TO THE CAMPUS GREEN! <<<
                   """"""""""""""""""""""""""""""""""""

EXPLORE ONE OF A2PRO'S NEATEST AREAS   Here we'll be exploring one of
""""""""""""""""""""""""""""""""""""   A2Pro's neatest areas, the Apple II
University (A2U for short).  Over the past several years, A2U has taught
many Apple II owners more about their machines.  Topics from C programming
to data compression have been covered with online classes similar in style
to a correspondence course.  A class consists of lessons uploaded by an A2U
professor, who writes the lessons and provides help via topics in the
Bulletin Board and in regular RTCs scheduled for the course.  The only cost
is the connect time it takes to download the lessons!  A2Pro has an entire
category devoted to A2U in the Bulletin Board.  To find out more about A2U,
stop by the A2Pro BB and visit Category 22.  Some of the topics you'll want
to read/mark are:

     CAT22, TOP1 What is A2 University?
     CAT22, TOP2 How to take an A2U Course

     The two topics above are read-only, discussion and questions
concerning A2U should be posted to:

     CAT22, TOP6 Comments, Questions, Discussion...


INTRODUCTION TO RESOURCES COURSE POSTPONED   We regret to announce that the
""""""""""""""""""""""""""""""""""""""""""   A2U "Introduction to
Resources" Course has been indefinitely postponed.  Marc Wolfgram, the
course instructor, is apparently having difficulty keeping up with the
lesson schedule along with everything else he tries to tackle. (Lesson 5
hasn't been uploaded), so to make life easier on Marc and you, the course
has been postponed, possibly cancelled with lesson 4. We are sorry for any
inconvenience this causes anyone.     -- the A2Pro Staff


NEW IN A2U   There isn't too much new in A2U for April, can you say
""""""""""   Spring Break boys and girls?  <grin>  Keep watching this space
for details of new and exciting A2U courses!  We do have something new and
exciting to announce though!


A2U PRESENTS   Apple IIGS Graphics & Sound: The Continuing Saga!
""""""""""""   There are few aspects of the Apple IIGS as strange and
daunting as taking advantage of its audio and visual capabilities.  To help
beginning GS programmers with their graphics and sound related questions,
to promote the exchange of useful techniques, and to provide a fun forum
for graphics/sound discussion, A2U will be sponsoring a regular GS Graphics
and Sound RTC.

     These RTCs will be held on Thursday nights at 9:30 Eastern beginning
on May 6.  The RTCs will be led by Nate Trost, GEnieLamp A2Pro staff writer
and longtime GS graphics/sound junkie.  If you have questions, new ideas,
or just want to shoot the breeze about making the GS look and sound pretty,
this RTC is the place to be!


PREVIOUS A2U COURSE REFERENCE, PART I   A2U has given many courses over the
"""""""""""""""""""""""""""""""""""""   past several years, and although
the courses are over, the lessons remain!  These lessons are a valuable
source for learning to program, or for honing your skills.  This month we
present the first half of a two part list of previous A2U courses that are
available for downloading in the A2Pro library.  All of these great files
are available in the A2Pro library, option 3, page 530.  And now, the list:


HACKING DATA COMPRESSION (ANDY MCFADDEN)   This twelve part course covers
""""""""""""""""""""""""""""""""""""""""   theory and application of data
compression.  Algorithms are discussed and source code presented in both C
and 65816 assembly language.  Compression methods discuss include RLE,
Huffman, LZ77 and 78, LZW, LZSS, Arithmetic, and more.  Source is for the
IIGS, concepts apply to all computers.

     LESSON 1: File #2933          LESSON 7: File #3006
     LESSON 2: File #2955          LESSON 8: File #3050
     LESSON 3: File #2956          LESSON 9: File #3051
     LESSON 4: File #2997          LESSON 10: File #3076
     LESSON 5: File #2984          LESSON 11: File #3087
     LESSON 6: File #2998

     (Note: Lesson 12 will be available following the release of the
     HardPressed utility from Westcode)

Related Files
"""""""""""""
     File #3051 A2U.COMP.8.GIF.TXT
     (Description of LZW as it applies to GIF images)

     File #3067 LZWGIF87A.BXY
     (LZW explanation and GIF 87a specifications)

     File #3068 GIF89A.BXY
     (Description of the GIF 89a image format)


EIGHT BIT ASSEMBLY LANGUAGE PROGRAMMING (JAY JENNINGS)   This ten part
""""""""""""""""""""""""""""""""""""""""""""""""""""""   course is a
starting point for those wishing learn Apple II assembly programming.

     10 lessons + archived BB messages

     Lessons 1-10: Files #2837-2846
     Archived BB messages: File #2847


EXPLORING BLOCK WARDEN (BRYAN PIETRZAK)   This three part course provides a
"""""""""""""""""""""""""""""""""""""""   reference for the operation and
application of the Block Warden utility included with the ProSEL package.

     Lessons 1-3: Files #2732-2734


INTRODUCTION TO C PROGRAMMING (WALKER ARCHER AND GARY MORRISON)   This ten
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""   part
course serves as an introduction to programming in the C language.  Source
code compatible with APW and ORCA/C.

     Lessons 1-10: Files #3214-3223


INTRODUCTION TO PASCAL PROGRAMMING (P. DOTY)   This ten part course serves
""""""""""""""""""""""""""""""""""""""""""""    as an introduction to
programming the Pascal language.  Source code is suitable for ORCA and TML
Pascal.

Lessons 1-3:  Files #2849-2851
Lessons 4-10: Files #2853-2859

END OF PART I   That's the end of Part 1 of the Previous A2U Course
""""""""""""" Reference, tune in next month for the rest!



[EOA]
[LIB]//////////////////////////////
                  ONLINE LIBRARY /
/////////////////////////////////
HOT Files You Can Download
""""""""""""""""""""""""""
By Nate C. Trost
       [N.TROST]

                    >>> ANNOUNCING THE BIT BONANZA <<<
                    """"""""""""""""""""""""""""""""""

YOUR MONTHLY MAP TO A2PRO RICHES   GEnieLamp A2Pro proudly introduces Bit
""""""""""""""""""""""""""""""""   Bonanza, your monthly map to A2Pro
library riches!  Below you'll find some of the best neat, new, and nifty
stuff uploaded to the A2Pro library during March and April.  Visit the
A2Pro library at page 530, option 3 today!

                                 [*][*][*]


PROGRAMMING EXAMPLES/SOURCE
"""""""""""""""""""""""""""

     File #3255:  MONDRIAN.EF.BXY (GS)
     Uploaded on 4/14/93 by QC
     About 6.5K (d/l time approx. 45 seconds @ 2400 baud)

          This file contains all the information needed to create custom
     screen blanker modules for the Phantasm screen saver control panel.
     Programming information and sample source code to the Mondrian blanker
     is included.  (Note: QLabs is looking for new modules to include with
     a special package of add-on blankers for Phantasm, look in the QLabs
     A2Pro area: CATegory 29 TOPic 15 for details)


     File #3254: BULLA.PLUS.BXY (GS)
     Uploaded on 4/14/93 by A2.LUNATIC
     About 325K (d/l time approx. 30 minutes @ 2400 baud)

          This archive contains several previously unreleased FTA/ACS
     demos.  In addition, assembly source code (in Merlin 16+ format) to
     most of the demos is included on the disk.  The demos are: "Bulla," a
     Mario Bros. style game/demo, "New Parametrix Animation," chaser balls
     in a figure eight, "New Real-Time Vector Balls," "Diagonal Scroll,"
     you gotta see it to believe it, "Psy Scroll," a funky text scroll,
     "Coke Animation," a spinning Coke(tm) can!, "Oscillo," music with four
     separate
     oscillators/meters, and "Pang," some bouncing balls over a detailed
     background.


     File #3250: VCRPLUS.BAS (GENERAL)
     Uploaded on 4/10/93 by C128.JBEE
     About 11K (d/l time approx. 1 minute @ 2400 baud)

          A BASIC program that decodes the VCR+ codes.  This is a Commodore
     BASIC program with the screen/cursor codes commented out.


     File #3213: METAL.SRC.BXY (8 bit)
     Uploaded on 3/24/93 by A2.LUNATIC
     About 95K (d/l time approx. 9 minutes @ 2400 baud)

          These are the source files part of the METAL telecommunications
     system for making a really nice BBS (usually used with FutureNet, the
     current "other half" of the METAL system).  These are Merlin source
     files.  This BBS system runs on enhanced Apple IIes and later.
     Includes direct support for the Apple IIgs ports, memory, etc.


     File #3202: ADVSRC.BXY
     Uploaded on 3/14/93 by D.GRANDE2
     About 107K (d/l time approx. 10 minutes @ 2400 baud)

          A minimal port of the original Adventure game to APW C, source
     and executable are included.


A2/A2Pro SPECIAL FILES
""""""""""""""""""""""

     File #3251: A2PROLIB493.BXY (GENERAL)
     Uploaded on 4/11/93 by J.L.D.
     About 70K (d/l time approx. 7 minutes @ 2400 baud)

          This file is an AppleWorks 3.0 database of all files in the A2Pro
library as of 4/10/93.  An index of the libraries is included for easy
reference.  Takes 132K on the A2 3.0 desktop, about 70K on disk when
unshrunk.  There are 1,285 records in the database.


     File #3248: ORCA.C.01.BXY (GENERAL)
     Uploaded on 4/7/93 by A2PRO.GREG
     About 40K (d/l time approx. 4 minutes @ 2400baud)

          A collection of messages from the 'ORCA/C' topic in Category 36 -
The Byte Works Online.


     File #3247: OR.SHELL.01.BXY (GENERAL)
     Uploaded on 4/7/93 by A2PRO.GREG
     About 46K (d/l time approx. 4 minutes 20 seconds @ 2400 baud)

          A collection of messages from the 'ORCA Shell' topic in Category
36 - The Byte Works Online.


     File #3196: ULT.PROG.01.BXY (8 bit)
     Uploaded on 3/4/93 by A2PRO.GREG
     About 37K (d/l time approx. 3 minutes 45 seconds @ 2400 baud)

          This file is a collection of messages from the A2Pro RT's
bulletin board, Category 34, Topic 3 'Ultra Progamming'.


UTILITIES
"""""""""

     File #3246: SHELLPLAY0.5.BXY (GS)
     Uploaded on 4/5/93 by N.TROST
     About 13K (d/l time approx. 1 minute 30 seconds @ 2400 baud)

          ShellPlay 0.5, a freeware MOD music file player for the GS.  This
player is a shell utility EXE file for use with shell programs such as ORCA
and GNO.


     File #3243: BURGERSPLIT.BXY (GS)
     Uploaded on 4/5/93 by BURGERBILL
     About 20K (d/l time approx. 2 minutes @ 2400 baud)

          This program will split a large file into smaller pieces for
whatever purpose you need, such as getting the file to fit on 3.5 or 5 1/4
disks. Written with Orca/C 2.0 Source included.  For use with a shell such
as ORCA or GNO.


     File #3242: TODAY.BXY (GS)
     Uploaded on 4/5/93 by BURGERBILL
     About 115K (d/l time approx. 11 minutes @ 2400 baud)

          This program will tell you what happened today. It has about 100K
of text for events that happen year round and birthdays of a lot of
historical people. Written in Orca/C 2.0  Source code is included.


INFORMATION/DOCUMENTATION
"""""""""""""""""""""""""

     File #3239: REL.NOTES.SD401 (GENERAL)
     Uploaded on 4/5/93 by M.DEATHERAGE
     About 3K (d/l time approx. 25 seconds @ 2400 baud)

          This text file contains the release notes from Apple for
eight-bit System Disk 4.0.1, available in A2Pro as file #3178.  It details
the changes made to ProDOS 8 v2.0.2 and FastCopy 1.0.1, the only components
on the disk which have changed since Apple IIgs System Software 6.0. (NOTE:
This is a text file with no Binary II header so it may be <L>isted into
your capture buffer as well as downloaded)


     File #3238: MODMEDSPECS.BXY (GENERAL)
     Uploaded on 4/4/93 by A2.DEAN
     About 40K (d/l time approx. 4 minutes @ 2400 baud)

          File format descriptions and implementation details for the MOD
and MED music formats.  Includes descriptions of the ProTracker effects.


     File #3206: TMPROGINFO.BXY (8 bit)
     Uploaded on 3/16/93 by SEVENHILLS
     About 20K (d/l time approx. 2 minutes @ 2400 baud)

          This upload contains information on writing "Manager-Aware"
applications, including information on supporting multi-tasking.



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

    o   COMMENTS: Contacting GEnieLamp

         o   GEnieLamp STAFF: Who Are We?

               o   SEARCH-ME! Answers



GEnieLamp Information   GEnieLamp is published on the 1st and the 15 of
"""""""""""""""""""""   every month on GEnie on page 515.  You can also
find GEnieLamp on the main menus in the ST (475), Macintosh (605), IBM
(615), Apple II (645), A2Pro (530), Unix (160), Mac Pro (480), Geoworks
(1050), BBS (610), CE Software (1005) and the Mini/Mainframe RoundTables.
GEnieLamp can is also distributed on CrossNet, Internet, America Online and
many public and commercial BBS systems worldwide.

     We welcome and respond to all GE 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.

     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 send it to our GE Mail
address, GENIELAMP.


U.S. MAIL
"""""""""
                       GEnieLamp Online Magazine
                           Atten: John Peters
                       5102 Galley Rd. Suite 115/B
                       Colorado Springs, CO  80915


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

  GEnieLamp    o John Peters        [GENIELAMP]    Senior Editor
  """""""""

   ATARI ST    o John Gniewkowski   [J.GNIEWKOWSK] Editor
   """"""""    o Mel Motogawa       [M.MOTOGAWA]   ST Staff Writer
               o Terry Quinn        [TQUINN]       ST Staff Writer
               o Sheldon Winick     [S.WINICK]     ST Staff Writer
               o Richard Brown      [R.BROWN30]    ST Staff Writer
               o John Hoffman       [JLHOFFMAN]    ST Staff Writer
               o Al Fasoldt         [A.FASOLDT]    ST Staff Writer

 ATARI ST/TX2  o Cliff Allen        [C.ALLEN17]    Editor/TX2
 """"""""""""
 ATARI [PR]    o Fred Koch          [F.KOCH]       Editor/PD_Q
 """"""""""
        IBM    o Robert M. Connors  [R.CONNORS2]   Editor
        """    o Peter Bogert       [P.BOGERT1]    IBM Staff Writer
               o Brad Biondo        [B.BIONDO]     IBM Staff Writer
               o Tippy Martinez     [TIPPY.ONE]    IBM Staff Writer
               o David Holmes       [D.HOLMES14]   IBM Staff Writer

  MACINTOSH    o James Flanagan     [JFLANAGAN]    Editor
  """""""""    o Richard Vega       [R.VEGA]       Mac Co-Editor
               o Dan "Remo" Barter  [D.BARTER]     Mac Staff Writer
               o Tom Trinko         [T.TRINKO]     Mac Staff Writer
               o Bret Fledderjohn   [FLEDDERJOHN]  Mac Staff Writer
               o Bill Garrett       [BILL.GARRETT] Mac Staff Writer

     MacPRO    o James Flanagan     [JFLANAGAN]    Editor
     """"""    o Erik C. Thauvin    [MACSPECT]     Supervising Editor
               o Chris Innanen      [C.INNANEN]    MacPRO Staff Writer
               o Paul Collins       [P.COLLINS]    MacPRO Staff Writer

   APPLE II    o Darrel Raines      [D.RAINES]     Editor
   """"""""    o Phil Shapiro       [P.SHAPIRO1]   A2 Co-Editor
               o Mel Fowler         [MELSOFT]      A2 Staff Writer

       A2Pro   o Jim B. Couch       [J.COUCH2]     Editor
       """""   o Nate C. Trost      [N.TROST]      A2Pro Staff Writer

    INTERNET   o Jim Lubin          [JIM.LUBIN]    GEnieLamp IBM
    """"""""

       ETC.    o Jim Lubin          [JIM.LUBIN]    Add Aladdin
       """"    o Scott Garrigus     [S.GARRIGUS]   Search-ME!
               o Bruce Faulkner     [R.FAULKNER4]  CrossNET Support
               o Mike White         [M.WHITE25]    Cowlumnist/Asst. SysOp


GEnieLamp CONTRIBUTORS
""""""""""""""""""""""

                   o Steven Weyhrich            [S.WEYHRICH]
                   o Paul Varn                  [P.VARN]
                   o Larry E. Elseman           [L.ELSEMAN1]
                   o Steve Litwin               [S.LITWIN2]

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\////////////////////////////////////
   Material  published in this  edition may  be reprinted  under  the
   following  terms  only.   All articles  must remain  unedited  and
   include  the issue  number and author  at the top of  each article
   reprinted.  Reprint permission granted, unless otherwise noted, to
   registered  computer user groups and not  for profit publications.
   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.
   Include the following at the end or the beginning of every reprint:
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\////////////////////////////////////
   (c) Copyright 1993 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]