

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

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


                      ~ WELCOME TO GENIELAMP A2Pro! ~
                        """""""""""""""""""""""""""
               ~ GSLib Released ~ 3D Logo Seminar Transcript ~
             ~ Compiler Optimization ~ DrawStringWidth in 6.0.1 ~
           ~ Tour of 8/16 Central ~ Tour of Apple Assembly Lines ~
         ~ Reconnecting /RAM in ProDOS 8 ~ Graphics Screen Etiquette ~
                    ~ HOT NEWS, HOT FILES, HOT MESSAGES ~

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

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

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

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

 LIBRARY BIT BONANZA ..... [LIB]        TOUR OF AAL.............. [AAL]
  HOT Files You Can Download.            The Assembly Language Journal.

 NIGHTS OF THE ROUNDTABLE  [RTC]        DEVELOPERS CORNER ....... [DEV]
  Real Time Conference Watch.            News From Online Developers.

 3D LOGO SEMINAR RTC       [3DL]        LOG OFF ................. [LOG]
  Lists, Movies and Logo Magic.          GEnieLamp Information.

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

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

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

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

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

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

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

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

ABOUT GEnie   GEnie's monthly fee is $8.95 for which gives you up to four
"""""""""""   hours of non-prime time access to most GEnie services, such
as software downloads, bulletin boards, GE Mail, an Internet gateway,
multi-player games and chat lines, are allowed without charge.  GEnie's
non-prime time connect rate is $3.00.  To sign up for GEnie service, call
(with modem) 1-800-638-8369.  Upon connection type HHH.  Wait for the U=
prompt.  Type:  XTX99014,DIGIPUB and hit RETURN.  The system will then
prompt you for your information.  Need more information?  Call GEnie's
customer service line (voice) at 1-800-638-9636.
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

          ////////////////////////////////////// GEnie_QWIK_QUOTE ////
         / >"Okay...wait!  Can you slow it [Aladdin] down some? <   / 
        /  >It's too fast to read.  Make it go back."           <  /
       /                                                          /
      /  "Maybe you can convince her to do an 'unattended' pass, /
     / say fix a sandwich, or something..  Grin.                /
    ////////////////////////////////////////////// NTACTONE ////
    
    
    
[EOA]
[FRM]//////////////////////////////
                 FROM MY DESKTOP /
/////////////////////////////////
Notes From My Desktop
"""""""""""""""""""""

     o TOP OF THE PAGE



                          >>> TOP OF THE PAGE <<<
                          """""""""""""""""""""""
                    ~ By Nate C. Trost [A2PRO.GELAMP] ~

HELLO EVERYONE!   Welcome to the November GEnieLamp A2Pro.  Although I've 
"""""""""""""""   been involved with the A2Pro Lamp for some time, this is 
my first issue as editor.   Jim Couch has done an incredible job editing
the Lamp and I'd like to thank him for putting up with my submissions
and for leaving me with such a neat  publication.  :-)

My name is Nate Trost.  I've been working with the II ever since our
family purchased an Apple ][+ back in 1981.  Over the years we've
upgraded from the ][+ to the IIe and finally to the IIgs.  I've had a
lot of fun using my Apple II computers over the past twelve years, and I
still use my IIgs on a daily basis. While I think the Lamp is already a
great publication, I'm always looking to improve it!  I would greatly
appreciate any suggestions or comments.  Feel free to send me some GE
Mail at my address of A2PRO.GELAMP or post in the A2Pro BB Category 1,
Topic 15 (GEnieLamp A2Pro Office).

Putting the Lamp together is a big job, and I'm looking for a staff
writer to assist me in writing chores.  Job responsibilities include: 

     o   ATTENDING A2PRO RTCS
         """"""""""""""""""""
        
         A2Pro Lamp's RTC Watch column features some of the interesting
         conversation that takes place in A2Pro RTCs.  The staff writer
         will attend A2Pro RTCs on a regular basis and format interesting
         excerpts for publication in RTC Watch.
      
     o   CREATING THE BIT BONANZA COLUMN
         """""""""""""""""""""""""""""""
       
         Every month the best of the uploads to the A2Pro library are
         described in the Bit Bonanza column.  The staff writer will 
         format this article based on the descriptions of files uploaded 
         to the A2Pro library.
      
The staff writer will be compensated with free access to A2Pro.  This is
a great opportunity to get more involved with A2Pro and to help fellow
programmers.     

If you are interested, send EMail to A2PRO.GELAMP, M.DEATHERAGE, and
GENIELAMP describing yourself and your qualifications.  

Enjoy this issue!

                                                   Nate C. Trost
                                                  GEnieLamp/A2Pro



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



                          ______________________________________________

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



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

     o   BULLETIN BOARD HOT SPOTS

          o   A2PRO ODDS & ENDS

               o   WHAT'S NEW?

                    o   PROGRAMMER'S TIPS

                         o   HOT TOPICS

                               o   MESSAGE SPOTLIGHT



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

 [*]  CAT9,   TOP11,  MSG{50}.................................Micol BASIC
 [*]  CAT10,  TOP28,  MSG{7}..............................Hierarchic INIT
 [*]  CAT13,  TOP12,  MSG{91}..........................Apple & Developers
 [*]  CAT30,  TOP2,   MSG{98}...................................GNO Shell
 [*]  CAT36,  TOP10,  MSG{55}.................................ORCA/Pascal
 [*]  CAT36,  TOP11,  MSG{48}......................................ORCA/C



                      >>>BULLETIN BOARD NEW TOPICS <<<
                      """"""""""""""""""""""""""""""""
                      
 [*]  CAT36,  TOP33....................................Object Programming



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

A2PRO STAFF CHANGES   Hey, gang, I've sort of rested on my two-week 
"""""""""""""""""""   vacation from GEnie.  I say "sort of" because work's 
been a bear and I only had six hours of sleep last night, and doing all
this is delaying my return to slumber tonight.

      While I went on vacation, some other changes happened around the 
GEnie world, and I thought I'd fill you in on them.

      There's a story behind some of this, but it's not filled with 
mystery, suspense or intrigue, so it's too boring to repeat.  The summary
is that with the changes recently made in the Apple II and Macintosh
RoundTables on GEnie, the Macintosh Programmer's RoundTable wound up
without a leader, and after talking for a while with Kent and Tom, I've
accepted their offer to try to build a programmer's community on page
480 like we have here on page 530.

      It took lots of negotiation and planning to set things up so that 
we could all be pretty sure MacPro wouldn't take so much extra time that
I'd have to devote less time to A2Pro, and we think we've accomplished
that.  The major thing that's changed in my GEM sessions is that MacPro
is now second (and A2 now third), and I can't ignore some of the
categories anymore.  :)

      So if any of you are also wanting to program the Macintosh, please 
drop by page 480 and help us build a strong area there as we have here.
Programmers helping programmers are what these roundtables are all
about.

      So if you're not a Macintosh programmer, why do you care?  :)  There 
are a couple of staff changes here marginally related to this.

      Most of you have seen less and less of Steve Gunn over the past 
several months as he comes up with ever more new and creative excuses for
not doing stuff around here, so we've kicked his butt out.  (Actually,
I've asked Steve to be a more general staff member with no assigned
duties in A2Pro and to help beef up the MacPro libraries, and he's
agreed.  But that's not as interesting.)

      Steve's GE mail address will soon change to CHUCKIE (at his request)
since he has no A2Pro assigned duties anymore.  If anyone wants to post
a message thanking him for whatever help he's been to you --
particularly if it's embarassing or awkward -- please feel free.  :)

      Jim Couch, as many of you know, has resigned as editor of GEnieLamp
A2Pro to spend time on career opportunities, and we wish him the best. 
We couldn't have asked for a better editor to build the A2Pro Lamp into
the useful programming newsletter we know it now to be.  But it does
leave us with a monthly magazine that's helmless.

      I've asked Nate Trost if he'd like to be the editor, and in a moment
of extreme weakness he's agreed.  Pending John Peters' approval, Nate will
be the new editor of GEnieLamp A2Pro, starting with the next issue.  Nate's
also agreed to continue doing bulletin board archiving and the A2Pro New
Topic Service in the A2 and A2Pro bulletin boards, and soon he'll have a
new GE Mail address reflecting his new position.  [A2PRO.GELAMP]

      Nate, as described by one of our GEnie dudes, is "so competent it's
scary," and I'm pretty happy to have wrung more competence out of him, or
at least the potential for such.  Anyone who wants to mail pizza gift
certificates to Nate to keep his energy up may inquire about his address. :)

      Nate will probably be looking for articles and more for GEnie Lamp
soon; he can talk about his vision for the newsletter in the GEnieLamp
topic as soon as John Peters gives his OK to this whole idea (sometimes
John doesn't read mail for a few days). (Not true, I just don't always
answer right away! :)

So, did anyone miss me?  :)

--Matt (Live programming help six nights a week!  We must be insane!)

          (M.DEATHERAGE [A2Pro Leader], CAT1, TOP17, MSG:117/M530)



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

DRAWSTRINGWIDTH IN 6.0.1   OK, I just spent about two hours figuring out 
""""""""""""""""""""""""   how to use the _DrawStringWidth tool call. 
Since I spent this time and documentation is not available elsewhere, I
am posting this in A2Pro for all developers. Use at your own risk. This
information comes from Bill Tudor's hard work and is not fully tested.
If anyone who "knows" this call cares to comment on what I found, please
feel free to say something like "That looks pretty good to me" or
"better not set bit 13" etc...

Tool Call: DrawStringWidth (Tool Call Number $1512)

                     previous contents  Stack Before call:  
                    |-----------------|
                    |     flag        | Word - bit flag defined below
                    |-----------------|
                    |-     Ref       -| Long - Reference to string
                    |-----------------|
                    |     size        | Word - Horizontal width
                    |-----------------|


                     previous contents  Stack After call:   
                    |-----------------|

i.e., nothing is returned!

Here is the definition of flag:

    flag = 16 bits as follows:

         bits 0-1 = references type    00 = ref is Pointer
                                       01 = ref is Handle
                                       10 = ref is Resource
                                       11 = illegal value

         bits 2-3 = Data type          00 = data is P String
                                       01 = data is C String
                                       10 = data is W String
                                       11 = illegal value

         bits 4-12 = Reserved (as far as I can tell)

         bits 13-14 = Elipse location  00 = no ellipsis
                                       01 = ellipsis at the Left
                                       10 = ellipsis in the Middle
                                       11 = ellipsis at the Right

         bit 15 = Compression bit       0 = OK to compress text
                                        1 = Do NOT compress text

      This information was found by trapping the call to DrawStringWidth 
that standard file makes, and altering the parameters on the stack and
seeing what happends (yes, a fair number or re-boots were needed).

Have fun with the new call!

Bill {W.TUDOR}

                  (W.TUDOR, CAT15, TOP18, MSG:41/M530)



GSLIB NOW AVAILBLE IN A2PRO LIBRARY   GSLib is now in the library folks!
"""""""""""""""""""""""""""""""""""

      File #3593....GSLIB.DOCS.SIT  REV 1 This is a StuffIt 1.5.1 
archive (which means GSHK can extract it) that contains the GSLib
documentation (what there is of it!) in Microsoft Word format.

      File #3595...GSLIB.BXY  RELEASE #1 This is the GSLib library, a
"GSLibAppleGlue" library for use with APW C, MPW IIGS C and MPW IIGS
Pascal, and interfaces for the APW/ORCA/MPW IIGS languages. There is NO
documentation or sample source in this archive!!!

      GSLib presents a unique challenge to version tracking. Internally 
we are constantly making changes to GSLib, but we only plan on releasing
public updates occasionally (perhaps once a month unless a serious bug
is found).

      For example, GSLib is current at v4.2, but within a month, it 
could be at v4.2.15! :) So, all public releases will follow with a
"release" number that will simply allow you track that you do have the
latest public release.

      The documentation will be tracked separately since it is incomplete 
and will most likely be updated more frequently (I'll document any
_specific_ routine tha t someone asks for...)

 Have fun folks, and feel free to ask any questions here!

Bryan

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

 [EDITORS NOTE: GSLib is an exciting new library of routines for Apple
                IIgs programmers.  If you program the IIgs, be sure
                to check out GSLib!]



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

RECONNECTING /RAM IN PRODOS 8   Does anyone know if there has been 
"""""""""""""""""""""""""""""   documented a preferred method for
reconnecting /RAM when the device that's there may be a third party card
for extended memory.  I have the ProDOS 8 Technical Manual's method for
dealing with Apple's /RAM but will the FORMAT request work with the
third party cards?

Eric

               (KITCHEN.SINK [Eric], CAT7, TOP6, MSG:46/M530)


>>>>>   Eric - I don't think there's any guarantee on how a third-party 
"""""   /RAM driver will react. There probably aren't that many, so you 
might be able to test it on a case-by-case basis for the major drivers.

      In any case, if I had a RAM disk installed I'd be vexed if the 
program appropriated it for use in such a way that it "trashed" my disk.
Therefore the only options I can see are to check with the user before
overwriting RAM if a RAM disk appears to be installed. At the same time,
you could tell them they may need to restart the driver to re-install
/RAM (if you know what drivers don't format, you could even name them).

      If feasible, I think a better solution might be to create a dummy 
file on the /RAM volume and access it through ProDOS calls as "virtual
memory". If you're using it mainly for data or overlays (and not to
actually run routines from) this may not be that difficult. Not only can
the size of the file adjust to the available RAM (you could have the
upper limit be user- configurable, or just grab it all like AppleWorks
does), but if someone had a _fast_ hard disk setup (like a cached drive)
they actually might be able to use hard disk space with a modest
performance "hit".

              (WIZARDS.MUSE [Dennis], CAT7, TOP6, MSG:47/M530)


<<<<<   Actually, the preferred method of disconnecting /RAM and 
"""""   reconnecting it is explained quite well in "Beneath Apple ProDOS", 
by Quality Software (no relation to QC).

Walker
                     (W.ARCHER2, CAT7, TOP6, MSG:48/M530)


>>>>>   Thanks to those who have responded.  My current method for doing 
"""""   this was as suggested in the ProDOS 8 Technical Reference Manual.  
First read block 2 and see what the file count was on the drive.  If
there  are no files and the size of the device is 127 blocks (standard
Apple) then disconnect.  If the size is any different, or there are
files on the device then do what other programs do and say about to
erase volume at Slot 3, Drive 2, Ok to Proceed?  YES/No type of thing. 
I don't know whether or not the re-installation/re-hookup process will
work for the third party cards.  I guess we will work at getting it to
work with the Apple /RAM and then see what happens with the other cards.
 We have a few people who can test those for us, but we may just have to
put out the call for BETA testers with certain configurations who would
be willing to test an application or two.

      We can't use the method of creating a virtual memory file since we 
are using double hi-res graphics and actually are using auxilliary memory
for routine storage and accessing them from aux memory.

      Walker, I have read the method in Beneath Apple ProDOS as well.  
There's is a good explanation.  I will probably use a combination of the
P8 Tech Manual and the Beneath Apple ProDOS methods.

Eric

               (KITCHEN.SINK [Eric], CAT7, TOP6, MSG:49/M530)


<<<<<   You'd think we wrote these Technical Notes for our health, not 
"""""   because anyone was actually going to _read_ them...

      While no specific step-by-step instructions for installing /RAM 
are present, and Apple obviously can't tell you what third-party RAM disk
drivers are going to do, there's enough information in the ProDOS 8
Technical Notes to answer most of your needs, including ProDOS 8 TN #8,
which reveals the method that's probably in "Beneath Apple ProDOS"
decreases the number of online volumes by one every time you use it.

      All of these Notes, along with the index (which has a "/RAM" entry 
right at the top) are in the A2Pro library.

--Matt (yes, I seem to be back)

          (M.DEATHERAGE [A2Pro Leader], CAT7, TOP6, MSG:50/M530)



SCSI DRIVERS IN 6.0.1   Recently there was a discussion in A2 about making 
"""""""""""""""""""""   the RamFAST drivers 6.0.1-savvy.  Here's some 
information that may help:

      The device dispatcher in 6.0.1 has been modified by implementing a 
new characteristics bit for drivers.  If this bit ($0010) is set in a
device's characteristcis it indicates that the driver properly follows
all the driver guidelines in the GS/OS Reference and Device Driver
Reference.  If this bit is not set, drivers will NEVER receive a call
that is not documented in the GS/OS Reference (except device-specific
calls which are always passed on to the driver).

      This was implemented because the RamFAST driver (and others 
possibly?!?) crashed when Apple implemented a new DStatus sub-call--it
should have returned an error, but it didn't. <sigh>

      There is now a new Apple-defined DStatus subcall for SCSI devices.  
Call $4000, GetSCSITargetPriority, returns a word indicating the SCSI ID
of a given GS/OS SCSI device.

      (This is nice because Finder will report the SCSI ID in its Icon 
Info window if the driver supports it.)

Anyway...that's the info!

Bryan

            (SOFTDISK.INC [Bryan Zak], CAT8, TOP5, MSG:83/M530)


<<<<<   When I implemented the new DStatus call, I tested this with two 
"""""   3rd-party drivers, the RamFAST (with 2.x and 3.x ROMS) and an 
older card who's name I'm having a complete blank on.  The un-named card's
driver correctly returned errors for calls it didn't recognize; my
RamFAST did strange and not so wonderful things (one time I got
passwording to turn on by sending random status codes at it with the
GS/OS Exerciser - whoops).  Since I only had a sampling of two out of n
3rd-party cards, and half didn't respond correctly, I chose to implement
the "not a butthead" bit as I lovingly named it.

   > (This is nice because Finder will report the SCSI ID in its Icon Info
   > window if the driver supports it.)

      Actually, I wanted Finder to display the SCSI IDs and there wasn't 
any general-purpose way to do it.  I then spent a day hacking the SCSI
drivers to return the info I wanted.  So, my work on Finder actually
drove the new SCSI driver feature.

      (BTW, it's actually quite a hack as far as features go, since the 
Apple SCSI drivers don't know a SCSI ID from a doorknob.  They go through
the SCSI Manager to do all of the actual communications with their
devices, and it figures out the target.  However, it's the SCSI Driver
that implements the DStatus call (among all of the others), so it was a
trick to get the ID back to the driver.  End of babbling.)

Jim

               (MURPH [jim@apple], CAT8, TOP5, MSG:84/M530)



ESSENTIAL IIGS PROGRAMMING REFERENCES   Speaking of documentation, does 
"""""""""""""""""""""""""""""""""""""   anyone have a complete list of 
what a person needs?

      I have Toolbox Vol's 1-3.  I read somewhere about a 4th.  I would 
like to have a compete set of reference materials is there a list and a
place to order them from?

      Is Apple going to re-print the reference material with all changes?

Ken "KAZ" Kazinski

               (K.KAZINSKI [Kaz], CAT11, TOP21, MSG:7/M530)


<<<<<    #1....technotes...at the LEAST all the GS/OS and IIGS notes
"""""    #2....Toolbox References 1, 2 and 3
         #3....Programmers Reference for System 6.0

      Those will pretty much suffice as reference material.  If you 
want tutorial material, I highly recommend the Toolbox Programming in
C/Pascal courses from The Byte Works.

> Is Apple going to re-print the reference material with all the changes

      No.  That's what technotes are for. One should ALWAYS look for
information there first since they'll be the most up-to-date.

Bryan

            (SOFTDISK.INC [Bryan Zak], CAT11, TOP21, MSG:8/M530)


>>>>>   I'd like to add the GS/OS reference if you want to do any file 
"""""   operations.

      As far as ordering goes, try Resource Central.  I don't have the 
exact information here right now, but I'm sure someone will drop by with
it.  If anyone has these references, it's RC.

...Sloanie - A2Pro.Help

              (A2PRO.HELP [Sloanie], CAT11, TOP21, MSG:9/M530)


<<<<<   I wrote an article for last October's A2-Central about all the 
"""""   stuff you might want if you're a programmer.  I believe the text 
of that article is available in the A2Pro library, courtesy
Resource-Central, or you can get the back issue from them for a few
bucks.  The article was titled "How to be an Apple II Programmer."

--Matt (Live programming help six nights a week!  We must be insane!)

          (M.DEATHERAGE [A2Pro Leader], CAT11, TOP21, MSG:10/M530)



LICENSING GSBUG FROM APPLE   Yesterday I recieved the software licensing 
""""""""""""""""""""""""""   forms from Apple.  Included were several 
pages of "legal static", a few forms to fill out & sign, and several
pages listing programs that could be licensed from Apple.

      In the pages listing the programs, NOWHERE was anything to the 
likes of "GSBug" or "Apple IIgs Debugger" listed.  Did Apple send me a
incomplete list of the software they license, or is GSBug no longer
supported?

Suggestions, anybody?  :)

--SnakeBytes :)=

             (SNAKEBYTES [Greg B.], CAT13, TOP2, MSG:95/M530)


>>>>>   You'd be shocked at what people insist on licensing.
"""""   Write back (it's SW.LICENSE, actually) and tell them you want 
to license the GSBug package.  Don't take "no" for an answer.

--Matt (Live programming help six nights a week!  We must be insane!)

          (M.DEATHERAGE [A2Pro Leader], CAT13, TOP2, MSG:99/M530)



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

CPU REGISTERS AND COMPILER DESIGN   I've got a general compiler-theory 
"""""""""""""""""""""""""""""""""   question. (This is just something I'm
curious about...)

      How come most compilers that I've seen (ORCA, APW, MPW IIGS, MPW, 
and some of the IBM stuff, Turbo Pascal) don't seem to "track" the value
in a given register?

      Is it just a matter of the amount of time it would add to the
compilation, or is it something fundamental with the way code generation
is done?

      Thinking about it, I guess there would be two kinds of tracking: 
"known values" and "known sources".

      For example, if the code generator spits out "LDY #2" and then the 
next usage of Y would be to load a 2 into it, by tracking the value, you
know it's already two.

And for known sources, I guess the best example would be something like:

value := FunctionResult; 
IF value = something...

I often see generated code do something like

STA 0D    ; store value 
LDA 0D    ; get value 
CMP #xx

      If the code generator was "tracking" that the accumulator's "source" 
was "value" the LDA could be optimized out.  Again, I was just curious -- 
I don't know much compiler theory, and almost known about the actual code 
generation portion...

(er, "almost nothing" :)

Bryan

            (SOFTDISK.INC [Bryan Zak], CAT36, TOP11, MSG:42/M530)


>>>>>   Of the compilers you have experience with (for the IIGS and IBM).. 
"""""   neither the 816 or the x86 processors have large register sets.  
Trying to do register optimizations without a large set of registers is
fruitless.

      However, register sets can be simulated - on the IIGS, quite 
effectively with the direct page.  I did some experiments writing an 816
code generator for 'lcc', a free C front-end.  With 32-bit integers, the
lcc output trounced Orca/C (with 32-bit ints) because lcc does register
optimizations; it tracks, in a high-order sort of way, what is in a
register.

      To be totally honest, ORCA/C 2.0 added so many new peephole
optimizations that I don't know what the results would be, but in my
experience ORCA/C does a lot of recalculations when better variable
allocation on the direct page would have eliminated that.

 Jawaid

            (PROCYON.INC, CAT36, TOP11, MSG:43/M530)


<<<<<   Woh, back up:
"""""

      First, the ORCA languages _do_ track the register values.  The 
algorithm used isn't very sophisticated, but it does what I intended it
to do.  If you turn on native code register optimizations, the optimizer
finds things like

     ldy   #2 
     lda   foo 
     sta   [bar] 
     lda   foo+2 
     sta   [bar],Y 
     ldy   #2 ...

and gets rid of the reduntant ldy.

      The optimization you're looking for is actually a large group of
optimizations, each doing their own little part.  Some of the work is in
common subexpression elimination, which can detect and preserve a value,
even when it is used in two different places in a subroutine.  Some of
the work is done in live variable analysis and similar optimizations,
which can litterally keep track of the values in particular spots.  As
an extreme example of the sorts of things that _can_ be done, look at
this:

for i := 0 to 9 do a[i] = b[i];

      Let's assume a and b are indexing 4 byte reals.  It's _possible_
(although I've never used a compiler that did it) to go so far with
tracking variables to realize that i is redundant.  What you really want
is a temp variable that starts at zero and increments by 4 each time
through the loop.  The mechanics for doing this are a bit deep, but they
do work.

      The issue of registers vs. all of the "other" optimizations is 
really not as big a deal as it seems.  What actually happens on register
machines,  like the 680x0, is that the optimizer goes through the code
stream looking at the various temp variables it is using.  First, it
tries to combine them, noting, for example, that temp1 is used on one
part of the procedure, and temp2 in another, and that they are not
needed at the same time.  The compiler then dumps one of them, and uses
the other in both cases.  Next, the compiler looks to see which temps
are used most frequently, sometimes going so far as to see how many
times loops are executed (!), and assigns the most frequently used temps
to registers.  My compilers don't need to do the last part.  There
aren't enough registers on the CPU to use this way, and direct page is
so big that it's rare to need more than 255 bytes.  (The ORCA languages
_do_ sort the temps, though, allocating short temps first and long temps
last.  That way, a local string variable won't push the temps past the
255 byte barier and slow things down.)  I don't track variables
carefully enough to elimiate common temps, either.  And while common
subexpression elimination will often cause the compiler to reuse temps,
it doesn't apply to the three 65816 registers -- only to variables in
memory.

      Short of compilers on mainframes, the ORCA languages do more
optimizatinos than any other compiler I've used.  Even so, they are
bare-bones optimizers compared to what's possible.  Why not do more? 
Well:

     1.  I don't make enough off of the compilers to pay for the time 
         to do more.

     2.  With a few notable exceptions, which, by a statistucal fluke, 
         seem to have popped up frequently in the last few days, most 
         people really don't care a lot about optimization.  Many don't 
         even know what it is.

     3.  Optimizations take time.  The more I add, the longer compiles 
         with all optimizations turned on take.

     4.  Optimizations take space.  I already have two versions of C and
         Pascal, one for low memoy situations.  The major difference 
         between the two versions is that the optimizer is not in the 
         small memory version.  That's a lot of extra work.

     5.  Optimizers are the trickiest code I've ever worked on, and I've
         worked on some awesomely complicated programs.  (Not all of them 
         were mine, of course. The optimizer is probably the trickiest 
         code I've ever written from scratch.) It's easy to make mistakes, 
         and difficult (frankly, I think impossible) to test an optimizer 
         completely.  That makes some companies shy away from complicated 
         optimizations.  I don't want to add many more, myself:  the user 
         base is so low on the GS, I'm just not confident all of the bugs 
         that should be found ever will be.  In fact, I took out one 
         optimization (68881 FPU regsiter optimization) because so few 
         people were using it that the bugs popped up to frequently.

Mike Westerfield

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


>>>>>   Thanks! I've noticed that ORCA does indeed remove some redundant 
"""""   register loads and whatnot.

      As for the removing multiple temps. As you probably know, it really 
isn't that big of deal since you can use direct page locations.  It
doesn't "cost" anything more to use 5 dp locations or 25 -- unless you
go over the byte size.

Bryan

            (SOFTDISK.INC [Bryan Zak], CAT36, TOP11, MSG:45/M530)


<<<<<   Bryan, if you're curious about what some really awesome code 
"""""   generators can do, I'd really suggest picking up a copy of 
"Principles of Compiler Design" Aho, Ullman, Addison Wesley.  There is a
second edition; get the first if you can.  It's written for about a 400
level CS course, although the people I've talked to who take graduate
level compiler courses rarely cover all of the stuff that's in the book.
 It's very readable, and has some great stuff on parsing that is useful
in a lot of programs besides compilers.  The optimization chapters are
the best I've seen.  With the exception of adjusting what they did for
stack based architectures, what I've really done in the ORCA optimizers
is use this book as an implementation guide.

      Which is why the ORCA code generator is over half of the size of 
the compiler.  :)

Mike Westerfield

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



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

      Time for a brief talk about Graphic Screen Etiquette.   :-)

      If you are writing a program that accesses the graphics memory 
directly, it is important to be polite and check WHERE the graphics
screen is.  In addition, it is important to check if you have the
ability to use the shadowed SHR memory before you start tromping on it.

      If you are writing a GS/OS application and are going to use SHR, 
you should start up QuickDraw.  Start it.

      If you want to use the shadow RAM, you should set bit 15 of the
masterSCB parameter of QDStartUp (or in the StartUpTools parameter block
in case you are using SUT), and let QD try and grab it for you.

      Before you do any messing with the graphics memory, you should check 
and see if you have the shadow RAM (if you asked for it) or if you have a
standard SHR screen at all.

      To do this, call OpenPort with a pointer to a 170 byte buffer to the
current port.  Then call GetPortLoc with a pointer to an empty locInfo
struct.  Check the PixPtr address in the locInfo struct.  If PixPtr
points to $012000, you have shadow RAM.  If it points to $E12000, you
have standard SHR.

      If not, you don't have standard graphics setup.  If you need $012000 
or really depend on standard SHR, you should give the user a nice dialog
and give the option to quit the application cleanly.

      This is important.  Do it.  CloseView will mess you up if you don't
check  as will The Manager 1.0 (which hogs the shadow RAM and doesn't
share it).

Nate (Graphics and Sound Programming RTC!  Every Thursday in A2Pro at
9:30 Eastern!  m530;2!)

              (N.TROST [65Nate16], CAT22, TOP22, MSG:4/M530)

                               [*][*][*]


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

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



[EOA]
[3DL]//////////////////////////////
                 3D LOGO SEMINAR /
/////////////////////////////////
Lists, Movies and Logo Magic
""""""""""""""""""""""""""""
By Nate Trost
[A2PRO.GELAMP]



                         >>> 3D LOGO SEMINAR <<<
                         """""""""""""""""""""""

THE BYTE WORKS HAS BEEN HOSTING LIVE SEMINARS   in the A2Pro RTC.  These 
"""""""""""""""""""""""""""""""""""""""""""""   seminars are for owners 
of 3D Logo, an amazing new language product from The Byte Works, Inc.  3D
Logo, which runs on the Apple IIgs, provides a stand-alone desktop
implementation of Logo.  In  addition to being a full version of Logo,
3D Logo supports  movie creation, true 3D graphics, and much more.  This
is the transcript from the first seminar, held October 7th, 1993 in
A2Pro.

<D.PIERCE8>     hello, mike

<BYTEWORKS>     Hi!

<N.TROST>       Hey D.PIERCE8!  Welcome to the 3D Logo Seminar!

<D.PIERCE8>     This is my first RTC and thus my first class online also

<BYTEWORKS>     You're in the right company, then.  This is my first time
                as a GEnie conference leader!  Nate has been taking me
                through the ropes.  :)

<D.PIERCE8>     My son Andrew is also here.

<BYTEWORKS>     Hi Andrew!

<D.PIERCE8>     Hi again! We just got our 3D Logo package today

<BYTEWORKS>     Is it working out well for you?

<D.PIERCE8>     I think so. I'm having a problem with the 3D glasses, but
                otherwise, yes.

<BYTEWORKS>     What sort of problem?

<D.PIERCE8>     I can't see through the lenses properly--my head 
                isn't big enough.

<BYTEWORKS>     Wow.  I haven't run across that problem before.  I'll have
                to think about it.  Have you found a solution, yet?

<D.PIERCE8>     Sorry, that's "David or Andrew", got truncated. :) No, I'm
                working on it.

<BYTEWORKS>     Hi Bill.  I just finished some fun demos for HyperLogo.  I
                think you'll like them

<BILL.LYNN>     Great! I can't wait to see them. And HyperLogo!

<BYTEWORKS>     :)

<BILL.LYNN>     When will it ship?

<BYTEWORKS>     HyperLogo Mac (which is the one I'm working on) will be
                sent to Roger any hour now.  HyperLogo GS will follow in
                a week or two.  It's going well.

<BILL.LYNN>     Great! I understand that the HyperStudio Mac 1.1 is due
                sometime in November.

<BYTEWORKS>     I'd like to take a quick moment to introduce this session.
                Just to fill all the squares.  :)  This session deal
                with the Logo language, although I'll take questions on
                any problems you might be having, not just  on the basic
                language.  To make it easier,  we should probably use
                some protocol, but I'm not going to enforce it.  After
                all, I only have so many fingers!  Just type ? for a
                question, or ! for a comment.  We'll see how that works.
                Well, that's the intro!

<D.PIERCE8>     I've used Logo before, so I won't have any questions on
                the basic language. :)

<BYTEWORKS>     :)  Well, like I said -- we're not going to be _too_
                formal. I would like to stay away from C tonight, though.
                 ;)

<N.TROST>       Hee hee, but you could optimize ORCA/C 2.0.1 so easily
                by.....   ;-)

<D.PIERCE8>     Actually, this is Andrew; I type better. :)

<BYTEWORKS>     Are there any immediate questions, or should I ask a few
                of my own?

<BILL.LYNN>     I'm loading 3D Logo now. How about a quick example

<T.BUCHHEIM>    (Tim hasn't actually gotten 3D Logo yet...but will very
                soon.  But he's interested in learning more about it, so
                he's here right now.  Oh yeah...he likes to talk about
                himself in the third person. :)

<BYTEWORKS>     :)   Bill, an example of what?

<BILL.LYNN>     Well, I don't have the dox in front of me (I just moved
                and I'm still living out of boxes) but.. ...I've got the
                cube movie listing on screen. How do I run it?

<BYTEWORKS>     Movies are pretty easy, especially that one.  The first
                step is to open a movie window.  That's a special window
                which acts like a turtle drawing window, but you can add
                new frames -- each of which is a new turtle window.  Once
                the turtle window is open, select your text window,
                again.  Since you just opened the text, you'll have to
                enter it into the workspace.  The easy way to do that is
                to select all of the text and press return.   The next
                step is to create the movie itself.  Type CubeMovie.  It
                will take a little time to create the movie, but once
                it's done, select the movie window and press the Play
                button.

<BILL.LYNN>     So is the workspace a separate window like in HyperLogo?

<BYTEWORKS>     No, not exactly.  In fact, the workspace window in
                HyperLogo Mac was a quick fix, and it's gone in the new
                version.  The workspace is like BASICs program space --
                it's always there, whether or not you're looking at it. 
                You can edit procedures with edit windows, or by typing
                them in a text window.  You can look at the workspace,
                too.  If you move to your text window and type EDITS,
                Logo will open an edit window with all of the things in
                the workspace.  That's very close to the original
                HyperLogo workspace window.  There are other commands,
                too, though.  You can EDIT a single procedure or list of
                procedures.  You can also list things directly in the
                text window with commands like POALL, which prints the
                entire workspace.

<BILL.LYNN>     I think I see. 

<D.PIERCE8>     David wants to know whether you can create other atoms in
                the "Chemistry" workspace.

<BYTEWORKS>     Sure, David! There are a few notes about that at the end
                of Chapter 3.  The easy way to go about it is to modify
                one of the atoms that are already there.  A basic
                chemistry book will list the number of bonds an atom
                normally has.  For example, Sulfur (S) has two bonds,
                like oxygen.  You can copy the O procedure then change
                it's name to S and the color number to yellow, and you've
                added a new atom!

<D.PIERCE8>     Thanks.

<BYTEWORKS>     Bill, did you get the movie to work?

<BILL.LYNN>     Yep. Works great. But I look silly sitting here in these
                cardboard glasses ;)

<BYTEWORKS>     Hey, that's the cool look for this winter.  Take a look at
                your bookshelf with those on!  :)

<BILL.LYNN>     My books are still in boxes! Tell me if this will be
                possible with HyperLogo and a "toot" keyboard.  Will I be
                able to click on a key that plays a tone and save the
                "toot" parameters in a list so that I compose and then
                play back a song?

<BYTEWORKS>     Sure.  Here's the basic outline of what you would need to
                do:

                1.  Create a magic button that gets executed as soon as
                you get to the card.  The magic button needs to set your
                note list to an empty list, like this: Make "notes []

                2.  Modify the various note button scripts.  In each one,
                you need to add the note number to the list.  You can use
                LPut, which puts an object at the end of a list, like
                this: Make "notes LPut 60 :notes where 60 is the note
                number for the particular key.

                3.  Finally, create a play button that plays all of the
                notes in the list.  The basic loop would look something
                like this: While not EmptyP :notes [Toot First :notes 60
                Make "notes ButFirst :notes] That's some good, basic list
                manipulation, too.

<BILL.LYNN>     Wow! Looks pretty cryptic but I'll study it. I made a
                stack called "Toot Toot" Tutor in the new Studio City
                Mac.

<BYTEWORKS>     It's really not to bad, once you get used to lists.  If
                you like, we can go over it.

<BILL.LYNN>     Right now it's just a toy keyboard like your HS demo was
                but I want it to evolve into a music composition program.

<BYTEWORKS>     The biggest problems I think you'll have are assigning
                lengths to notes, and  the fact that TOOT only allows you
                to play one note at a time, so you can't do chords.

<BILL.LYNN>     Yeah. I'm not looking to do chords, and I haven't really
                thought out the duration problem but it's good to know
                that it's possible.

<BYTEWORKS>     One way just occurred to me:  You could create a group of
                buttons shaped like the musical notes, and have them
                click on the note to set the duration.  It would stay in
                effect until a different one was chosen.  You could even
                draw the notes from Logo on a staff as they are played,
                although that would be a lot of work.

<BILL.LYNN>     That's the basic idea. Sort of a Music Studio a 'la
                HyperLogo.

<BYTEWORKS>     Yup.  Of course, the assembly language version will run
                just a tad faster.  :)

<BILL.LYNN>     Yeah, but that's gone now ;)

<BYTEWORKS>     Would anyone else like to jump in?  Was the list
                processing clear? 

                Well, here's a Logo quiz.  The answer shows a little of
                the power of lists.  What will this print:

                PR  First ButFirst [14 XIV Fourteen]

<D.PIERCE8>     XIV

<BYTEWORKS>     Bingo!  Bill, this is essentially how the example I gave
                you works.  Do you see what happened?

<BILL.LYNN>     Go ahead and explain just in case I'm pretending to
                understand. :)

<BYTEWORKS>     :) It helps to start at the end and work back.  The thing
                on the end between brackets is a list.  Lists and words
                are the basic data types in Logo.  This list has three
                words, 14, XIV and Fourteen. The ButFirst function takes
                a list (or a word, but we'll ignore words for now) and
                returns a new list that has all of the elements But the
                First one.  So it returns [XIV Fourteen] in this case. 
                The First function returns the first object in a list, so
                it returns the word XIV, which is what PR prints.  (PR is
                just a shorthand form of Print.)

<BILL.LYNN>     So why work backward in the instruction? Does it have
                something to do with precedence?

<BYTEWORKS>     Basically, yes.  Logo works left to right, but you get too
                deep that way.  PR prints something:  What?  It prints
                what First returns.  ButFirst... well, you get the idea. 
                It's a little easier to keep track of things by starting
                at the right and working back, just like you'd start with
                the inside expression in something like LET A = B*(C +
                D*(E + G*(F + H))) in BASIC.

<BILL.LYNN>     I'm starting to get it (I think). I'm really looking
                forward to your contribution to Studio City once
                HyperLogo ships. This kind of "Lesson" will be very
                valuable.

<BYTEWORKS>     It helps to be able to ask questions, though.  :) Jim, do
                you have some quick questions before you have to go,
                then?

<A2PRO.DYAJIM>  T2 Logo Modules.. that would be cool :-)

<BYTEWORKS>     Jim, not in this lifetime.  ;)

<BILL.LYNN>     Maybe REAL SLOW ones?

<A2PRO.DYAJIM>  If Logo could make a CDev type calling interface, it could
                work :)

<BYTEWORKS>     Actually, all kidding aside, Logo would be pretty good at
                it.  It is a graphics language.  And it's the only
                language that can blank bits in 3 dimensions.  :D

<BILL.LYNN>     There's your challenge for next week, Jim...

<A2PRO.DYAJIM>  Yeah.  How hard would it be to hack it out?  Could one
                write a file to link in that would generate the CDev
                stuff and call the logo routines?

<BYTEWORKS>     I don't think so, Jim.  You'd have to have the source for
                the interpreter to do it.

<A2PRO.DYAJIM>  Does it do compiled programs?

<BYTEWORKS>     No.  Logo is strictly an interpreter, and sort of needs to
                be to do some of the things it does.

<A2PRO.DYAJIM>  Oh... okay, that definitely would rule it out of the
                question :)

<BYTEWORKS>     Well, to a point.  You could do a CDev interface for an
                interpreted language, but I don't think there would be a
                great deal of interest in it.

<BILL.LYNN>     Well, I've got to go. Will there be a seminar next
                Thursday?

<BYTEWORKS>     Yes, Bill.  We'll be doing 3D next week.  For that
                seminar, be sure to look for an upload early next week.
                We'll look at extruding shapes, and maybe at revolving
                shapes to make solids.

<BILL.LYNN>     See you then.


             //////////////////////////// GEnie_QWIK_QUOTE ////
            /  "I wish they had Invisi-Clues for bugs like   /
           /  this..."                                      /
          ////////////////////////////////////// FADDEN ////



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



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

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

     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.



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



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

SOFTDISK SUBMISSION EVALUATION   The first thing that happens to all 
""""""""""""""""""""""""""""""   submissions is that they are "banked". 
A secretary makes backups of the submission with all the submitter's info
and puts these copies in a BIG set of cabinets -- that way we always
have a record of a submission.

      Unfortunately, our group doesn't have a dedicated secretary, so
depending on how busy she is, this part alone can take a couple of days.
Remember, we have a bunch of products: Softdisk, Softdisk G-S,
Diskworld, On Disk Monthly CGA, On Disk Monthly VGA (or is it EGA, I
always forget which is better :), LoadStar, LoadStar Quarterly,
ShareWare spotlight (a thing we do on the PC on prodigy) and I think
there's something else over on the PC, but I tend to lose track!

      Meanwhile, Lee (my boss, and manager of the group I'm in) then 
takes the submission and _briefly_ takes a look at it. A kind of "is this
something we may be interested in, or can we immediately reject it"
(Reject is a strong word, but that's what's on the paperwork :). 
Believe it or not, but less than 5% of our submissions are rejected.

      This low "reject-rate" is due to the fact that we often work with 
the submitter trying to get the submission to a point where we feel
comfortable publishing it.

But, I'll get to that in a moment...

      If the submission is a keeper, Lee puts it in the appropriate queue
(remember, first in, first out!) -- Softdisk, Softdisk G-S or Diskworld.

      Then as time permits, Lee will go through the submissions 
one-by-one as he plans out what will go on which issue.  At that point,
one of the programmers for a given product may get involved.

      If the submission needs some changes, one of us will write them up
(these are known as "rework specs").  The rework specs are simply a list
of changes/bug fixes/etc that we'd like the submitter to make.

      At this point, Lee sends the first batch of paperwork.  This batch
basically says we "intend" to publish your submission, and pay you $x if
you agree to make the changes we require before publishing.

      At this point, things can get slow: submissions that are going to be
published have to be reworked, someone has to spec the changes out
(which can take up to an entire day sometimes!), sometimes sample source
is sent to the author, often the submission will be sent to our Quality
Assurance department and they'll try to rip it apart (and they usually
do, especially my stuff it seems like!).

      Some submissions can have a VERY quick rework period, just a few 
days or a week (e-mail really speeds this up), but we've actually had one
program take over a year (and it's still not ready!).

      Fortunately, we can be patient, but this is much harder for the
submitter!

      At some point in this process, but before we publish the submission, 
Lee sends some more paperwork, this is the actual contract that says we
will pay you half upon publication and the other half within 60 days of
publication.

This is the part that most submitters like!

      The final steps are anti-climatic: the submission is included on an
issue, one of the editor-types (usually Lee or Jim Branton) will then
write the shell documentation for it and the issue is mastered!

      Once duplication begins (anywhere from 2-6 weeks after mastering!), 
Lee sends the submitter a copy of the issue the submission was on.

A job well done!

      One thing that most of our submitters don't like is the waiting 
period. But, there's just not a whole lot we can do about that.  We have
a limited number of resources for the evaluating and testing of
literally DOZENS of submissions each month.

      Don't forget, while this is going on, we're also writing our own
programs!  And QA is also busy testing those!

      This is one of the reasons we recently hired Dean Esmay (yep, our 
own A2.DEAN will be working for us shortly!).  Dean's had 5 years of this
kind of experience and he'll REALLY help take some of the pressure off
and loosen up the bottlenecks that cause the yucky delays.

We're all excited about it!

Bryan
            (SOFTDISK.INC [Bryan Zak], CAT31, TOP2, MSG:29/M530)



                      >>> NEWS FROM GS+ MAGAZINE <<<
                      """"""""""""""""""""""""""""""

GS+ V5.N1 IS MAILED   Well we just got V5.N1 back from the printer today 
"""""""""""""""""""   and we'll start mailing them  all out on Monday.  
Some things you can look forward to are new versions of Cool Cursor and
Anna Matrix... plus a file which lets you look at the data and resource
forks of your files.  The "file dump" program was written using the
object extensions present in ORCA/Pascal v2.0.1, and comes with a big
article which explains object oriented programming a bit.  If you're in
the least interested in object oriented programming with ORCA/Pascal,
you might want to check this out - Diz did a nice job making the entire
program an object.  :-)

                  (JWANKERL [Joe], CAT33, TOP4, MSG:44/M530)



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

HOW GNO/ME STARTS UP   The kernel starts up and reads: 
""""""""""""""""""""   
     o /etc/namespace - a list of the pseudo-volumes.  Pathnames 
       must be colon (:) delimited; slashes (/) are not allowed. 
     
     o /etc/tty.config - list of character device drivers; the
       filenames are scanned for in /dev ./initrc - the kernel 
       runs the program indicated by this file to start off the 
       system. In the case of the MultiUser system, this is 
       /usr/sbin/initd (initialization daemon).

      Init does a number of things of which I'm a bit hazy on (I didn't 
write it) but basically: /etc/inittab - a list of programs that are to be
run at various run levels, as I described above.

      The usual program that init runs on a terminal or console is
/usr/sbin/getty, or "get tty".  It reads /etc/gettytab, which is a
database of terminal configurations. Getty uses the configuration
specified on the command line in inittab to set up the port (baud rate,
flow control, default message, etc). Getty then puts up the login
prompt. When you enter the user name, getty executes /usr/sbin/login,
which gets the password and handles actually logging in. Login uses
/etc/ttys to determine if root is allowed to log in on a particular
terminal, for security reasons; and /etc/passwd, for the encrpyted
password and account information, like home directory and the shell (or
other application) to use.

      Login will then run the shell specified in /etc/passwd.  The shell 
reads the gshrc file in the user's home directory, which basically sets
up the environment; prefixes, shell variables, etc. Similar to the ORCA
4/login script.

Jawaid

                  (PROCYON.INC, CAT30, TOP2, MSG:108/M530)



                   >>> NEWS FROM MORGAN DAVIS GROUP <<<
                   """"""""""""""""""""""""""""""""""""
                   
NEW VERSION OF MICROEMACS   FYI -- I just uploaded MicroEMACS 3.12 to 
"""""""""""""""""""""""""   GEnie.  The program and documentation is in 
our A2 library (17), and the source code is here in our A2Pro library
(32).  This 3.12 version has some new features and a lots of fixes since
3.11c.

                  (MORGAN-DAVIS, CAT32, TOP2, MSG:19/M530)



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

REZ AND GSBUG UPDATES   We are waiting for a new Rez and GSBug from Apple.  
"""""""""""""""""""""   These are scheduled to be released on a Apple 
Tools update disk to anyone who has our latest languages. So far, we
don't have the tools from Apple.  As soon as Apple releases them to us,
we'll ship that update.

Mike Westerfield

                    (BYTEWORKS, CAT36, TOP20, MSG:8/M530)



NEW 3D LOGO FILES IN THE A2PRO LIBRARY   There are two new files in the 
""""""""""""""""""""""""""""""""""""""   library you should check out.  
The first is the transcripts from the first Logo seminar.  The other is a
movie of a bouncing spring.  There are two versions of the movie, one
for 3D glasses and one for a standard display.  The source code used to
create the movies is included, too.  Among other things, the source
shows how to use extrusion from Logo.

Mike Westerfield

(NOTE: The seminars are files #3280 (text w/ShrinkIt) or #3281 (plain
       text).  The movie is file #3576 --ED)
       
                    (BYTEWORKS, CAT36, TOP32, MSG:67/M530)



[EOA]
[AAL]///////////////////////////////////////
             TOUR OF APPLE ASSEMBLY LINES /
//////////////////////////////////////////
The Assembly Language Journal
"""""""""""""""""""""""""""""
By Dave Miller
   [JUST.DAVE]



HEY!!!   After a LONG hiatus which started with KFest, and then kind of
""""""   kept going, the AAL Tours are BACK!!!  We shall keep it going
this time, but due to my busy schedule, I'll only be doing one a week now.
Here we go!



       >>> Apple Assembly Line - Mar. 1981 - Vol. 1, No. 6 <<<
       """""""""""""""""""""""""""""""""""""""""""""""""""""""
     This file is in Library 22, it's AAL.MAR.81.BXY, file #3333.

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

 Articles/
     Front.Page        Introduction and cover page - table of contents and
                            info on some new (at the time) books about
                            assembly programming.
     A.Beaut.Dump      "A Beautiful Dump" - routine to spruce up the
                            monitor's memory dump.  The end result is
                            somewhat similar to the way the GS does it now.
     Unused.Opcodes    "So-Called Unused Opcodes" - an experiment to
                            determine what the "unused" opcodes on the 6502
                            really do.
     Opcode.Chart      "Complete 6502 Opcode Chart" - include the "unused"
                            opcodes mentioned above.
     Amper.Cmd.Int     "& Command Interface for S-C Assembler II" - lets
                            you write external commands for the S-C
                            Assembler the same way you would for Applesoft.
     DOS321.RWTS.Lst   "Commented Listing of DOS 3.2.1 RWTS"

 DOS.3.3/
     DOS321.BD00BE9F   The actual commented listing of the DOS 3.2.1 RWTS
                             routine mentioned in the above article.
     S.AmperIntf       Source for the Ampersand hook for S-C Assembler II.
     S.BernardMemD     Source for the Beautiful Dump program.
     Welman.Modifier   Applesoft BASIC program which will patch S-C Assembler
                             II to add EDIT and COPY commands.  Must be run
                             from DOS 3.3!

      "A Beautiful Dump" does a pretty nice job.  The result is somewhat 
like how the GS does it, with a list of the hex bytes on the left, and
the ASCII on the right.  It does it slightly different than the GS. 
Instead of spacing the bytes with one space between each byte like the
GS, it crunches them together with only one space between each four
bytes.  This makes it easier to tell what the byte's address is, taking
away some of the hassle of counting.  If you like that format, you might
like this program.  (Yes, it runs under ProDOS, because it doesn't make
any DOS calls).  If you have a IIe or a II+, you will _definately_ want
this!

      The "Unused Opcodes" article makes interesting reading if nothing 
else.  If you enjoy experimenting with your computer, you may enjoy
playing around with it, too.  It discusses what 'shortcuts' can be made
by using 'non-published' opcodes that combine the functions of two or
more 'published' opcodes.  Be warned, though, that this is VERY machine
specific, so anything you come up with will work as a shortcut only if
it's used on YOUR computer.  Using it on someone elses computer can have
unpredictable results.



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



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



       >>> 8/16-Central - May, 1990 - File #3385  (ESC.9005.BXY) <<<
       """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

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


 /Es.CENTRAL.9005/
 ..READ.ME            Intro and Welcome
 ..IIgs/
 ....READ.ME16        Description of 16-bit contents!
 ....Articles/
 ......SteveS/        (SXA) Advanced List Manager Techniques - (hooks)
 ......S.Lepisto/     (SXA) Illusions of Motion 2 - Second in a three part
                            series on animation.  Adding masks, buffers and
                            shadowing.
 ....Shell.Utils/     Some of Bryan Pietrzak's shell utilities:
 ......SETVIS           (XD) Sets the visibility of a file
 ......PFX              (XD) Displays/Sets all 32 prefixes
 ......ONLINE           (XD) Displays info about online block devices
 ......TYPE             (XD) Extended type command
 ......DELETE           (XD) Permanently removes a file from the disk
 ......CAT              (XD) Extended catalog command
 ......COPY             (XD) Extended copy command
 ......PWD              (SXD) Prints Current Working Directory.
 ......LENGTH           (SXD) Shows how long a file is in bytes
 ......RENAME           (XD) Change the name of one or more files
 ....Inits.April      (A) Creating inits with ORCA/Pascal and ORCA/C
 ..Classic.Apples/
 ....READ.ME8         Description of 8-bit contents!
 ....ARCHIMEDES/      (SXD) Merlin 8/Pro enhancement utility
 ....LIST/            (XD) List the contents of ANY type file
 ....CATALOG/         (SX) How to print a catalog of a ProDOS 8 directory
 ....METEOR.STORM/    (SXD) BASIC and assembly all-text arcade game!
 ....FILETYPER/       (SXD) Make BASIC.SYSTEM show ALL three-char filetypes
 ....SQUIRT.SYSTEM    (XD) Alternate ProDOS 8 program selector
 ....GETSTR/          (SXA) Appleworks-style line input routine
 ....Sweet16/         (SA) Source code to the Sweet-16 interpreter!
 ....SYS.LAUNCHER.S   (S) Source to launch a System program from ProDOS 8
 ....PASS.THE.PARMS/  (SXA) Passing named parameters to BASIC subroutines!

      Wanna see something cool?  Check out the article on the Sweet-16.  Yes, 
it's source code to the interpreter itself!  Better yet, the entire
interpreter fits in TWO pages of memory!

      Ever wonder how those guys make their wonderful animation sequences 
work? Stephen Lepisto continues his series on IIGS animation, showing how
to  create objects that can move on the screen without interfering with
each  other.

From this issue's READ.ME file:
  Note Mike Westerfield's "No Fits With Inits" article. Due to an oversight
  it was not placed in the April issue, so the editors put it here in the
  May issue.



      >>> 8/16-Central - June, 1990 - File #3387  (ESC.9006.BXY) <<<
      """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

/Es.cENTRAL.9006/
 ..READ.ME            Intro and Welcome
 ..General/
 ....MURPHY.SEWALL    'Vaporware' column - a computer industry snapshot
 ..Classic.Apples/
 ....README.8         Description of 8-bit contents!
 ....DISKWORKS/       (X) ProDOS 8 Disk Editor
 ....SCREEN.EDITOR/   (SXA) Create quick-loading text screens for use in
                            your Applsoft programs
 ....ZBASIC.DEMO/     (XD) Demo version of the ZBASIC language
 ....TOOLS.3D/        (X) Perspective View 3-D Animation Tookit
 ....ZSUPER.INPUT/    (SA) ZBASIC Zealot - standardizing how Assembly is
                           called from ZBASIC with the Pascal protocol
 ....MICRODOT.DEMO/   (XD) Smaller replacement for BASIC.SYSTEM
 ..IIgs/
 ....READ.ME16        Description of 16-bit contents!
 ....FindFileSrc/     (SX) Stephen Chick's FindFile NDA
 ....Source.Convert/  (XD) Changes Merlin source code to ORCA/M!
 ....InstDA/          (SXD) Merlin command to install Desk Accessories
 ....Modifiers/       (XD) Utility to read the keyboard modifiers from
                           an ORCA shell script
 ....June.Articles/
 ......Nate.Trost/    (SXA) Using multiple stacks and direct pages
 ......JVJaworski/    (SXA) Explains the mysteries of resource forks

In this issue is a way to convert all the Merlin source code you see in  this
and other issues of this magazine to ORCA/M!  (unless you HAVE Merlin  in
which case Source Convert also converts the other way :)  Source Convert  will
also change ORCA source to Micol Macro Assembler or Lisa816.



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



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

File #3584:  NEWS.1.2.BXY  (GS)
Uploaded on 10/15/93 by E.SHEPHERD
About 20K (d/l time approx. 2 minutes @ 2400 baud)

      News allows users on a multiuser GNO setup to read any new files
placed in the /var/news directory by simply typing "news".


File #3582:  FILCRD.BLDR.BXY  (ALL)
Uploaded on 10/14/93 by G.WRIGHT12
About 57K (d/l time approx. 5 minutes 30 seconds @ 2400 baud)

      These programs allow you to create sets of hierarchical menus which
look and function much like the ones in Appleworks, and put them into you
Applesoft BASIC programs. It consists of an editor program which allows
you to create the filecard sets, and a template program, which contains
all the necessary subroutines to run the filecard interface and upon
which you can build your own programs using the filecards. It runs under
ProDOS. It requires a IIc, an enhanced IIe with an 80-column card, or a
IIgs.


File #3567:  PIXIE.BXY  V2.4 (GS)
Uploaded on 10/4/93 by RICHARD.B
About 67K (d/l time approx. 6 minutes 30 seconds @ 2400 baud)

      Pixie allows you to view memory in much the same way as a disk zap
utility, but offers much more powerful features, such as data area
display, location variables,dynamic control item manipulation, SHR
palette/SCB displays, and more handle/memory utility functions than
you'd ever hope to use.  This version includes System 6.0 enhancements.


File #3566:  IPC.SPY.BXY  V1.3 (GS)
Uploaded on 10/3/93 by RICHARD.B
About 17K (d/l time approx. 1 minute 30 seconds @ 2400 baud)

      Tracks every IPC message into a formatted text buffer. Great for
tracking down IPC bugs, or finding out what is actually happenning
'inside' the system software.



                          >>> RTC Transcripts <<<
                          """""""""""""""""""""""

File #3581:  LOGO.SEM.1.TXT (GS)
Uploaded on 10/14/93 by BYTEWORKS
About 23K (d/l time approx. 2 minutes 30 seconds @ 2400 baud)

      These are the transcripts from the first Logo seminars, held on 6
Oct 93 on AOL and 7 Oct 93 on GEnie.  Topics include LEGO robots,
examples of list processing, a step-by-step creation of a movie, and
much more. 


File #3580:  LOGO.SEM.1.BXY (GS)
Uploaded on 10/14/93 by BYTEWORKS
About 12K (d/l time approx. 1 minute @ 2400 baud)

      These are the transcripts from the first Logo seminars, held on 6
Oct 93 on AOL and 7 Oct 93 on GEnie.  Topics include LEGO robots,
examples of list processing, a step-by-step creation of a movie, and
much more. 


File #3559:  RTC.3DLOGO.BXY (GS)
Uploaded on 9/22/93 by N.TROST
About 10K (d/l time approx. 1 minute @ 2400 baud)

      This is the official A2Pro RTC Transcript from the 3D Logo RTC held
with Mike Westerfield of The Byte Works, Inc.  Mike answered questions
about the new 3D Logo language for the Apple IIgs.  This file is a NuFX
archive compressed with ShrinkIt.   


File #3558:  RTC.3DLOGO.TXT (GS)
Uploaded on 9/22/93 by N.TROST
About 20K (d/l time approx. 2 minutes @ 2400 baud)

      This is the official A2Pro RTC Transcript from the 3D Logo RTC held
with Mike Westerfield of The Byte Works, Inc.  Mike answered questions
about the new 3D Logo language for the Apple IIgs.  This is a text file
that can be downloaded or <L>isted.



               >>> Programming References/Documentation <<<
               """"""""""""""""""""""""""""""""""""""""""""

File #3577:  EMACSTXT.BXY (GS)
Uploaded on 10/13/93 by J.VAUGHAN2
About 103K (d/l time approx. 10 minutes @ 2400 baud)

      This is the text version of the uEmacs documentation from the
Programmer's Shop.


File #3560:  YZMODEMDOCS.BXY (ALL)
Uploaded on 9/23/93 by JUST.DAVE
About 87K (d/l time approx. 9 minutes @ 2400 baud)

      Complete specs for Xmodem, Ymodem, and Zmodem.



                        >>> Bulletin Board Archives <<<
                        """""""""""""""""""""""""""""""

File #3569:  ORCASHELL.BXY (GS)
Uploaded on 10/4/93 by N.TROST
About 30K (d/l time approx. 3 minutes @ 2400 baud)

      This file contains archived messages from the A2Pro Bulletin Board
Cat 36 Topic 16 'ORCA Shell'.


File #3568:  MENUMANAGER.BXY (GS)
Uploaded on 10/4/93 by N.TROST
About 47K (d/l time approx. 4 minutes 30 seconds @ 2400 baud)

      This file contains archived messages from the A2Pro Bulletin Board
Cat 15, Topic 15.  'Menu Manager'



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

File #3573:  UE312SRC.BXY (GS)
Uploaded on 10/6/93 by MORGAN-DAVIS
About 326K (d/l time approx. 32 minutes @ 2400 baud)

      MPW IIGS C and assembler source code for MicroEMACS 3.12.  C source
can be used under APW C.



                            >>> Misc. Files <<<
                            """""""""""""""""""
                            
File #3576:  SPRING.BXY (GS)
Uploaded on 10/12/93 by BYTEWORKS
About 60K (d/l time approx. 6 minutes @ 2400 baud)

      Here's a simple movie created with 3D Logo.  It shows a triangular
spring dropping, bouncing back up, and dropping again.  The movie shows
one way to extrude shapes in Logo, an example of a movie (in both a
projection 3D and a true 3D), and some questionable Physics (the spring
gives a constant force, regardless of how far it's compressed!).



[EOA]
[RTC]//////////////////////////////
        NIGHTS OF THE ROUNDTABLE /
/////////////////////////////////
RTC Watch
"""""""""
By Nate Trost
    [N.TROST]



                >>> Edit Menu and NDAs <<<
                """"""""""""""""""""""""""

<R.SANT1>       I was reading the guidlines set out by Softdisk, about
                the menu items for edit, undo, cut, paste, etc.  At this
                point I do not use these items (I do have a menu with
                them, but it is disabled).  If I enable these items for
                use with by the NDA's, do I have to design a handling
                routine, or will the NDA (if it requires these items),
                handle them itself?

<[N.TROST>      Rob--The NDA handles that. The nice way to handle the
                Edit menu if you don't use it is as follows.....
                
                When you first create the Edit menu, disable
                Undo/Cut/Copy/Paste/Clear if you aren't using them. 
                Every time through your event loop, call FrontWindow and
                use GetWKind to check if the front window is a system
                (NDA) window....if it is, enable those Edit menu items,
                if not, disable them. You will want to have a
                EditMenuFlag variable so you don't keep making the
                Enable/DisableMItem calls over and over.  :-)

 <R.SANT1>      Actually makes sense.  I already have the Edit Menu
                variable routine installed for enabling the Close, Close
                All, and Print functions.  A few adjustments.....



                >>> Importing Pictures into HyperCard IIGS <<<
                """"""""""""""""""""""""""""""""""""""""""""""

<B.GILLESPIE3>  BUMMER!  I can't import with the original palettes.

<A2.HANGTIME>   640 mode?  or 320?

<B.GILLESPIE3>  640 mode saved as a screen file from Platinum paint.

<A2.HANGTIME>   BiG, I do it all the time.  Hmmm!

<N.TROST>       Hmm, does HCGS handle APF?

<M.DEATHERAGE>  HCGS does handle Apple Preferred, but not any special
                blocks within it.

<N.TROST>       Have you tried importing an APF file?

<B.GILLESPIE3>  That was it!  APF worked fine.



                >>> Genesys and Code Resources <<<
                """"""""""""""""""""""""""""""""""

<J.GREGURICH>   When I use Genesys to put that toolset into the Resource
                fork, do I need to click "uses converter"?

<A2PRO.HELP>    Yes.

<J.GREGURICH>   What happens if I don't?

<N.TROST>       It won't load correctly. (the resource simply won't get
                converted, which is bad for a code resource :-)



                >>> Firmware Routines <<<
                """""""""""""""""""""""""

<B.WELLS5>      I have been using the list of Firmware routines in the GS
                Firmware Ref. in writing a P8 application. Some of these
                routines aren't in a IIe or IIc, right?

<M.DEATHERAGE>  I believe they all are.  We tend to use Firmware Reference
                as the canonical listing, telling people not to use
                routines on any of the machines if they're not in that
                book.  (Anything not in that book has a real good chance
                of not working on the IIc Plus, specifically)

<[B.WELLS5>     I noticed that some were 16-bit specific, so I wondered
                which ones where in the IIe-IIc, and which ones where
                not. Obvious example: GET816LEN ($F890) is GS-only. I
                think TEXT2COPY ($F962) is as well.

<M.DEATHERAGE>  Is there another one to get the length of a 65C02 opcode?

<B.WELLS5>      INSDS2 ($F88E) is for calculating 6502 instruction
                lengths...

<M.DEATHERAGE>  There's a IIe Technical Reference.  Yup, page 224 says
                "Note that these entry points are specific to Apple IIgs
                and Apple IIgs-compatible machines and do not necessarily
                apply to Apple IIe or Apple IIc machines."



                >>> Fun with Icons and INITs <<<
                """"""""""""""""""""""""""""""""

<A2.TONY>       Do all boot icons (for inits) have the same resource ID?

<M.DEATHERAGE>  Tony:  Not by a long shot.

<A2.TONY>       I didn't mean the same ID...I meant are they all supposed
                to be the same type?  

<M.DEATHERAGE>  If they don't have type rIcon, they're not rIcon
                resources.

<A2.TONY>       That's what I mean.  Is it possible to use a different
                type and still use it as a boot icon?

<M.DEATHERAGE>  You can put whatever you like in any kind of resource
                type.  Some apps use private resource types for icons and
                other standard things they don't want people with
                resource editors to change. You pass a _pointer_ to an
                icon to ShowBootInfo.  The programmer can build the icon
                into the code, load a resource of any kind/type and lock
                it, or whatever he wants to do.  As long as he has a
                pointer to it, it's legal.

<A2.TONY>       Well, you can only have one rIcon displayed at boot time,
                right?  How about if I wanted to have multiple icons in
                the resource fork and randomly display a different one
                each boot?

<A2PRO.HELP>    Not a problem.  (It'll be up to you to select one and load
                it though)

<A2.TONY>       They can all be of type rIcon?

<A2PRO.HELP>    Yes.

<A2.TONY>       I was under the impression that only one rIcon was allowed
                in the file.

<A2PRO.HELP>    No. (The Finder has several dozen, for example)

<M.DEATHERAGE>  The system doesn't take a resource and display it.  You
                can put the icon wherever you like, in a resource or not,
                in a file or not, wherever.  The system plain doesn't
                care.

<A2.TONY>       Anyway, I have a silly idea for an init that cycles
                through random icons at each boot.  Nutty idea, but I
                just want to see if I can do it.

<A2PRO.HELP>    Well, you'd simply need to choose a random icon, load it,
                get a pointer, and pass it to ShowBootInfo. (BTW, it's
                possible for you to call ShowBootInfo as many times as
                you want in a single program)

<A2.TONY>       You mean I can have a single init display multiple boot
                icons?

<A2PRO.HELP>    Yes.


      //////////////////////////////////////////// GEnie_QWIK_QUOTE ////
     /  > Anyone else get bumped off this morning, around 4am <       /
    /   > Central?                                            <      /
   /                                                                /
  /    "4:00 am on a Saturday morning?  Are you kidding?  <grin>"  / 
 /////////////////////////////////////////////////// J.MEEHAN3 //// 



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

    o   COMMENTS: Contacting GEnieLamp

         o   GEnieLamp STAFF: Who Are We?



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

RoundTable      Keyword  GEnie Page     RoundTable      Keyword  GEnie Page
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 DigiPub         DIGIPUB      1395        Atari ST        ST          475
 Macintosh       MAC          605         IBM PC          IBMPC       615
 Apple II        A2           645         Apple II Dev.   A2PRO       530
 Macintosh Dev.  MACPRO       480         Geoworks        GEOWORKS    1050
 BBS             BBS          610         CE Software     CESOFTWARE  1005
 Mini/Mainframe  MAINFRAME    1145
 
     GEnieLamp is also distributed on CrossNet, Internet, America Online,
Delphi and many public and commercial BBS systems worldwide.


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

     o Our Internet anonymous FTP address is: sosi.com.  All current
       versions of GEnieLamp are available in the ~/pub/GEnieLamp
       directory.

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

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

     o We welcome and respond to all E-Mail. To leave comments,
       suggestions or just to say hi, you can contact us in the DigiPub
       RoundTable (M1395) or send GE Mail to John Peters at [GENIELAMP] on
       page 200.
 
     o If you would like to meet us "live" talk to us every Wednesday
       night in the Digi*Pub Real-Time Conference, 9:00 EDT.  M1395;2

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



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

  GEnieLamp    o John Peters         [GENIELAMP]    Publisher/Editor
  """""""""
        IBM    o Bob M. Connors      [DR.BOB]       EDITOR
        """    o David C. Leithauser [D.LEITHAUSER] HyperRead Editor          
               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 Richard Vega        [R.VEGA]       EDITOR
  """""""""    o Tom Trinko          [T.TRINKO]     Mac Staff Writer
               o Bret Fledderjohn    [FLEDDERJOHN]  Mac Staff Writer
               o Ricky J. Vega       [R.VEGA]       Mac Staff Writer

   ATARI ST    o John Gniewkowski    [GENIELAMP.ST] ST EDITOR
   """"""""    o Mel Motogawa        [M.MOTOGAWA]   ST Staff Writer
               o Sheldon Winick      [S.WINICK]     ST Staff Writer
               o Richard Brown       [R.BROWN30]    ST Staff Writer
               o John Hoffman        [JLHOFFMAN]    ST Staff Writer
               o Al Fasoldt          [A.FASOLDT]    ST Staff Writer
               o Fred Koch           [F.KOCH]       ST Staf Writer
  
 ATARI ST/TX2  o Cliff Allen         [C.ALLEN17]    Editor/TX2
 """"""""""""
 ATARI [PR]    o Bruce Faulkner      [R.FAULKNER4]  Editor/GEnieLamp [PR]
 """"""""""
   APPLE II    o Doug Cuff           [EDITOR.A2]       EDITOR
   """"""""    o Phil Shapiro        [P.SHAPIRO1]   A2 Staff Writer
               o Mel Fowler          [MELSOFT]      A2 Staff Writer
               o Darrel Raines       [D.RAINES]     A2 Staff Writer
               o Gina E. Saikin      [A2.GENA]      A2 Staff Writer
               o Steve Weyhrich      [S.WEYHRICH]   A2 Staff Writer

       A2Pro   o Nate C. Trost       [A2PRO.GELAMP] EDITOR
       """""       
       ETC.    o Jim Lubin           [J.LUBIN]      Add Aladdin
       """"    o Scott Garrigus      [S.GARRIGUS]   Search-ME!
               o Mike White          [MWHITE]       (oo) / DigiPub SysOp




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

 Material published in this edition may be reprinted  under the follow-
 ing terms only.  Reprint permission granted,  unless otherwise  noted,
 to registered  computer user groups and  not for profit  publications.
 All articles must  remain unedited and  include the issue  number and
 author at the top of each article reprinted.  Opinions present herein
 are those  of the individual authors and does not necessarily reflect
 those of the publisher or staff of GEnieLamp. We reserve the right to
 edit all letters and copy. Please include the following at the end or
 the beginning of all reprints:
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\////////////////////////////////////
 (c) Copyright 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]
