

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

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


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

                        ~ My Dinner with the Finder ~                   
                       ~ A2U Applesoft Course Wraps ~
                ~ Graphic File Formats ~ Applesoft Antics ~
                    ~ HOT NEWS, HOT FILES, HOT MESSAGES ~
                        
////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
 GEnieLamp A2Pro   ~ A T/TalkNET OnLine Publication  ~  Vol.4, Issue 20
 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 Editor.......................................................Nate Trost
  Publisher.................................................John Peters
   Copy-Editor............................................Bruce Maples
 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\////////////////////////////////////
  ~ GEnieLamp IBM ~ GEnieLamp ST ~ GEnieLamp [PR] ~ GEnieLamp Windows ~
        ~ GEnieLamp A2Pro ~ GEnieLamp Macintosh ~ GEnieLamp TX2 ~
          ~ GEnieLamp A2 ~ LiveWire (ASCII) ~ GEnieLamp MacPRO ~
                 ~ Solid Windows ~ Config.sys ~ A2-Central ~
              ~ Member Of The Digital Publishing Association ~
  GE Mail: GENIELAMP  Internet: genielamp@genie.geis.com   FTP: sosi.com
 ////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

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

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

 A2PRO ROUNDTABLE STAFF .. [DIR]        CAMPUS GREEN ............ [CAM]
  Directory of A2Pro Staff.              A2U Course Marches On.

 LIBRARY BIT BONANZA ..... [LIB]        DEVELOPERS CORNER ....... [DEV]
  HOT Files You Can Download.            News From Online Developers.

 RTC Watch ............... [RTC]        LOG OFF ................. [PUB]
  Happenings in A2Pro RTCs.              GEnieLamp Information.



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

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

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

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

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

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

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

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

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

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

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

3.  Wait for the U#= prompt.  Type:  JOINGENIE and hit RETURN.  When you
 get the prompt asking for the signup/offer code, type: DSD524  and hit
 RETURN.

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



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

     o TOP OF THE PAGE


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

WHERE DID I PUT THOSE WORDS?   Well, I'm rather at a loss for words this
""""""""""""""""""""""""""""   issue.  We've got a range of topics, 
everything from Applesoft to Finder Extensions to new graphics file
formats.  It's been a rather busy month for me as I've been working on a 
new job, so I think I'll just cut to the usual...

Enjoy the issue!  :-)



                                                 Nate Trost
                                               GEnieLamp A2Pro
                     


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

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

                                 [*][*][*]



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

     o   BULLETIN BOARD HOT SPOTS

           o   PROGRAMMER'S TIPS
           
                 o   HOT TOPICS

                       o   MESSAGE SPOTLIGHT
                             


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

 [*]  CAT6,  TOP14, MSG{128}........................Programming in Pascal
 [*]  CAT11,  TOP26, MSG{1}..............VGA Graphics & Animation Formats
 [*]  CAT16,  TOP22, MSG{65}.....................Program Preference Files
 [*]  CAT16,  TOP23, MSG{1}........................................MOSAIC
 [*]  CAT18,  TOP3,  MSG{17}.................................Stack Design
 [*]  CAT30,  TOP3,  MSG{127}...............................GNO Utilities



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

 
BASIC MODIFICATIONS   I'm interested in making a little Basic program.  All 
"""""""""""""""""""   it does is modify certain locations in a file.  I 
have all the locations and new values, but I'm not sure of the easiest
way to do it.  For example, this is the data

 Address New Value
 014F    44
 0188    3E
 0220    43
 .... (hundred more)

 Is there an easy way to do this such as (scuse the non-command)

  5 Open "File.sys"
 10 Poke 014F,44
 20 Poke 0188,3E
 30 Poke 0220,43

 (I think you get the drift...)
 (I know about using DATA/FOR-NEXT etc...I'm not sure about poking etc.)

      From what little I know, I think you have to change everything to 
decimal first before you poke (right?) or do you?

      This will hopefully be for a game patch that quite a few people are
looking for.

                   (J.FENSKE2, CAT9, TOP7, MSG:141/M530)


<<<<<   First of all, yes, you have to change everything to decimal before 
"""""   you poke. :(

Secondly, the line "Open 'File.Sys'" won't work.

First of all, you must use the BASIC syntax:

  PRINT CHR$(4); "OPEN FILE.SYS"

      Also, you'll want to tell BASIC where to load the file (you wouldn't 
want to get your code and variables stomped on).  Also, unless this is a
really small game, you're going to have to load it in chunks.

HOWEVER... you don't want the OPEN statement anyhow.  :)

 PRINT CHR$(4); "BLOAD FILE.SYS,TSYS,A$0300,L$0100,B"; X

      Let X be the decimal offset into the file.  In the above example, 
you're loading $100 bytes at location $300 (this is the only place BASIC
will understand hex, BTW).  You're using a file of Type (T) SYS, at Byte
Offset (B) specified in X.

      For example, let's say I had a file that I knew was $1000 bytes 
long.  I might do something like this:

 PRINT CHR$(4); "BLOAD FILE.SYS,TSYS,A$0300,L$0100,B";X
 REM Do my pokes here
 PRINT CHR$(4); "BSAVE FILE.SYS,TSYS,A$0300,L$0100,B";X
 X = X + 256
 IF X < 4096 THEN X = X + 256 : GOTO TheTop

      Of course, if this were true BASIC code, you'd need line numbers, 
and the "GOTO TheTop" in the last line would have to be replaced with a
"GOTO RealLineNumber".  But, I think that this should give you the basic
idea.

            (A2PRO.HELP [ Sloanie ], CAT9, TOP7, MSG:143/M530)


>>>>>   Well...  I'm a bit rusty with BASIC.System, but I'm pretty sure 
"""""   that open also supports the T parameter 
(i.e., ?d$"open file.sys,tsys").   It is probably easier to use 
bload/bsave though

   >> PRINT CHR$(4); "BLOAD FILE.SYS,TSYS,A$0300,L$0100,B"; X
                                              ^^^^^^
      ACK!!!!!  DON'T DO THIS!!!!  only the first $b0 bytes of page 3 are 
free! You'll overwrite several important vectors if you try to use the
whole page.

   >> Let X be the decimal offset into the file.  In the above example, 
   >> you're loading $100 bytes at location $300 (this is the only place 
   >> BASIC will understand hex, BTW).  You're using a file of Type (T) 
   >> SYS, at Byte Offset (B) specified in X.

      I know I'm being pedantic here, but it's not BASIC that's 
understanding hex, it's BASIC.System.

      I'd suggest you put your long list of pokes in a series of data
statements.  Then you could use code like the following:

 10 d$ = chr$(4) : rem "Control D
 100 read loc,nv : if not loc and not nv then 999 : rem "End of data
 110 gosub 1000 : rem "The patch subroutine
 120 goto 100 : rem "keep going

 999 end : rem "done patching.

Your data statements would look like this:

 5000 data 123,5
 5010 data 128,0
  ...
 5999 data 0,0 : rem "This is the end of data

      Of course, you can put multiple data pairs on one line, but this way 
is proabably easier to read.

The subroutine that does the actual work could be as simple as this:

 1000 poke 768,nv :rem "768 = $0300
 1010 print d$"bsave file.sys,tsys,a$300,L1,b"loc
 1020 return

      Of course, since you said you had several bytes to patch, this 
method will be rather slow because of all of the file access.  Here's an
off-the-cuff faster version:

 10 d$ = chr$(4) : ?d$"bload file.sys,tsys,a$300,e$3cf" : bs = 0 : be = 208
 : bl = 208
 --> (note the addition to line 10 for this version!)
 20 fl = 9999 :rem "Put the ACTUAL file length of the file here!!!!
 --> (get the length from the long catalog of the file)
 999 ?d$"bsave file.sys,tsys,a$300,l"bl",b"bs : end :rem "save the last seg
 --> (...and this change, too!)
 1000 if loc < be then poke 768+(loc-bs),nv : return
 1010 ?d$"bsave file.sys,tsys,a$300,l"bl",b"bs : rem "save this segment
 1020 bs = be : be = be + 208 : rem "Update where we're looking at
 1030 if be > fl then bl = 208-(be-fl) : be = fl
 1040 if bl <= 0 then stop : rem "Ran out of file before end of patches!
 1050 ?d$"bload file.sys,tsys,a$300,l"bl",b"bs :rem "load next piece
 1060 goto 1000 : rem "try again

      Note that if a particular span of 208 bytes in the file has no 
patches, it's still saved.  You could check for this, but it's probably
not worth it for the small gains in speed you'd get.

      If you have a LOT of patches and don't want to convert all of your
numbers to decimal, you could enter the data pairs as your hex numbers
like the following:

 5000 data a0d,ff
  ...
 5999 data "$end","$end"

Then you would change line 100 to (& add 105):

 100 read loc$,nv$ : if loc = "$end" then 999 : rem "End of data
 105 gosub 800 : rem "convert hex to dec

And here's the hex to dec subroutine:

 800 hex$ = loc$ : gosub 900 : loc = dec : rem "convert loc...
 810 hex$ = nv$ : gosub 900 : nv = dec : rem "...and nv
 820 return

 900 dec = 0 : for j = 1 to len( hex$ ) : k$ = mid$(hex$,j,1)
 910 if k$ < "0" then stop : rem "ERROR! digit < "0"
 910 if k$ < ":" then k = val( k$ ) : goto 950
 920 if k$ < "A" then stop : rem "ERROR! digit > "9" & < "A"
 930 k = asc( k$ ) - 55 : if k > 41 then k = k-32
 940 if k > 15 then stop : rem "ERROR! digit > "f" or "F"
 950 dec = dec * 16 + k
 960 next : return

      I know that this is rather larger than the previous example, but 
it'll probably be easier if you don't hard-code the pokes; remember: data
statements are our friends :)

      A word of warning, though:  I wrote all of this code off the top of 
my head, so it's untested.  Let me know if there's any problems and I'll
actually try running it & post whatever fixes are needed :)

 Bob Claney
 
                (CLANEY, CAT9, TOP7, MSG:144/M530)



MODULA-2 BOOKS   For anybody who is interested,
""""""""""""""

      I came upon the following books on Modula-2 in the library (I seem 
to remember a while back that someone was asking for a book on Modula-2)
but since I am still fighting with C, I haven't looked them over for
quality or content:

 ---------------------------------------------------------------
 Author: Wiatrowski, Claude A.
 Title:  From C to Modula-2 and back, bridging the language gap
 Published: New York: Wiley, c1987
 ISBN: 0471854948 (pbk.)
 ---------------------------------------------------------------
 Author: Chirlian, Paul M.
 Title:  Introduction to Modula-2
 Published: Beaverton, Or.: Matrix Publishers, c1984
 ISBN: 091646041X (pbk.)
 ---------------------------------------------------------------
 Author: Greenfield, Stuart B.
 Title:  Invitation to Modula-2
 Published: Princeton,NJ: Petrocelli Books, c1985
 ISBN: 0894332732
 ---------------------------------------------------------------
 Author: Thalmann, Daniel
 Title:  Modula-2: an introduction
 Published: Berlin; New York: Springer-Verlag, c1985
 ISBN: 038713297X (U.S.: pbk)
 ---------------------------------------------------------------
 Author: Gleaves, Richard
 Title: Modula-2 for Pascal programmers
 Published: New York: Springer-Verlag, c1984
 ISBN: 0387960511 (pbk.)
 ---------------------------------------------------------------
 Author: Harter, Edward D.
 Title: Modula-2 programming: a first course
 Published: Englewood Cliffs, NJ: Prentice Hall, c1990
 ISBN: 013596024X
 ----------------------------------------------------------------

 There are about 20 or so more Modula-2 books in the library on more
 advanced and/or specialized topics.  If anyone wants me to post those titles
 and publishing info let me know.

 Eric Heim

                (E.HEIM3 [eric], CAT14, TOP4, MSG:29/M530)



WHAT'S....MISSING?!?!   This isn't exactly about a 'new' upload but it'll 
"""""""""""""""""""""   have to do.

      I downloaded HCGS last night (file #3901, the whole program) without
incident.  However, the "What's New" stack mentioned in the readme file
doesn't appear to be in the archive.

I'm behind the curve I know but better late than never, right!

What gives? Is it just missing or am I missing?

                  (LKRUPP, CAT1, TOP30, MSG:99/M530)


<<<<<   The HCGS "All in one" archive IS missing the "What's New" stack.  
"""""   This is because Apple's release license required us to upload them 
as they were, and the "What's New" stack was not on the release disk that
was being used.  One of the other archives DOES have the "What's New"
stack in it, but I don't remember which one it was...

 Dave

                (JUST.DAVE, CAT1, TOP30, MSG:101/M530)



UNLOADING FEXTS   OK, so back to the question I posed earlier...
"""""""""""""""

...and since Bill seems to be hanging around alot these days, i'll direct
my questions with XManager in mind.

Like I said before, I have 2 FExts installed in the FinderExtras folder.

      Each has essentially the same code for srqGoAway, yet one can be 
removed by XManager, and the other one cannot.  What makes a FExt unable
to be unloaded?

      Second, what is XManager doing to unload a FExt?  You say "one has 
to wait for the Finder to remove a FExt" (gross paraphrase), yet XManager
seems to do it just fine...  what gives?

 Rick

                (R.ADAMS48 [Rick], CAT20, TOP4, MSG:169/M530)


<<<<<   "one has to wait for the Finder to remove a FExt"
"""""

      I would guess that this is because Finder Extensions can't remove 
menu items except during finderSaysIdle, at which time XManager should be
sending a finderSaysGoodbye call and then a srqGoAway request.

      As for your question about being able to remove one and not the 
other, well, I don't have any ideas.  :(

              (A2PRO.HELP [ Sloanie ], CAT20, TOP4, MSG:170/M530)


>>>>> OK, from memory...
"""""

      XManager send the srqGoAway request.  If the extension accepts this
request and sets its userID properly (I forget exactly, but your
supposed to put your userID somewhere in my DataOut buffer - check to
make sure you are using the correct userID and accepting the request),
i.e., it matches what XManager thinks it is, then XManager sends some
more requests to the INIT following the example in the IR source code (I 
did not want to askIR to remove...this way IR is only required for
XManager to install).  Anyway, if all goes well then XM removes the
request proc and calls user shutdown on the fellow.

      Now, XManager does not let you re-install this _same_ init until 
XManager exits and Finder gets to "run" for a little while.  This is not
really because it would cause trouble in this situation, BUT, if you do
this whole thing twice (remove, install, remove, then install) the SAME
FX without letting Finder go through its event loop, SOME FX's will
crash.  To make things "simpler", after removing an FX you are not
allowed to install the same one until letting Finder go through its
event loop (XManager is modal).

      Consider, as an example, a Finder Extension that does some things
automatically (like bring up windows or buttons bars or something) when
Finder starts up.  This type of extension might key off the first
"finderSaysIdle" (rather than finderSaysHello), or, an extension might
install a little heartbeat handler at finderSaysHello time and do
something a little later when finder is not busy.  In either of these
cases, things can get a little "goofy" if you install and extension
TWICE without allowing the full "install" (i.e., right through to the
Finder event loop) to take place.  Of course, a properly-written FX
would, as an example, not respond "OK" to an srqShutdown request if it
had a heartbeat handler still installed, but instead of taking a chance
(after all, most people only test their FX's during a "real" Finder
startup), the restriction was added to XManager.  I hope it does not
inconvienience people too much.  There were 2 FX's that crashed as
described above.  I figure a little inconvienience is better than a
crash.

 Bill {W.TUDOR}
 
PS: The above was from memory so it may not be described perfectly. :-)

                   (W.TUDOR, CAT20, TOP4, MSG:171/M530)


<<<<<   As I recall the IR source code, you're supposed to put a 
"""""   finderSaysGoodbye call -before- the srqGoAway call for Finder 
Extensions.  This causes problems (as noted in the source code) if the FEx
decides -not- to accept the srqGoAway (you could -try- another
FinderSaysHello immediately after a non-accepted srqGoAway); however,
since FExes can reasonably assume that they have no need to be connected
to the system in any way (and, in fact, they should remove their IPC
handlers).

      I'm 99.98% positive that this is what you -meant- to say (otherwise, 
I seriously doubt that XManager would work), so it's probably just a
clarification for those reading along.  OTOH, perhaps you should check
your code (and IR's code) one last time.  :)

             (A2PRO.HELP [ Sloanie ], CAT20, TOP4, MSG:172/M530)


>>>>>   I believe that XManager does send the FinderSaysGoAway first 
"""""   'cause this is where I found my problem...  My reponse to 
srqGoAway was to call the same code as FinderSaysGoodbye calls.  Not
necessarily bad, except that I wasn't prepared for the routine to be run
twice so the srqGoAway call was not being accepted.  Well, as you all
know fixing one bug creates another so I spent all night making my FExt
loadable/unloadable.  :)

 Thanks for the help,

 Rick

                (R.ADAMS48 [Rick], CAT20, TOP4, MSG:173/M530)


<<<<<   Yes, check the code, calls finderSays Goodbye first.  I used IR 
"""""   (source code) to figure out what to do.  XM does the same thing IR 
does.  There were just a couple of FX's that could not handle being
"installed" twice without a finderSaysIdle and/or SystemTask being
called for them in between.  Thats why there's a built-in restriction in
XM regarding install/remove/install all in one shot.  Anyway, if XM was
modeless there would be no problem, but if it was modeless it would have
to keep on "checking" (in case the user installed/removed an FX by some
other means).

Rick:

      In response to srqGoAway, just accept if it is "safe" for someone to 
call UserShutdown on you or make it safe and accept or don't accept.  The
peson you sends the srqGoAway is supposed to be smart enough to take
care of everything else.  "Safe" means:

   (1) You have no IRQ handlers, etc. installed.  Your code is going away 
       so you have to remove these.
   (2) You have no patches installed.  Again, your code is going away.
   (3) You have no heartbeat queue, OOM queue, disk insertion handlers, ...

      Gee, I can;t think of any more, but basically remove all your little
"hooks" because your going away.  If you can;t remove the hooks then
don't accept.

Did I forget something ?

                (W.TUDOR, CAT20, TOP4, MSG:174-175/M530)


>>>>>   >> Did I forget something ?
"""""

uh huh...

      If the F/X being removed had obtained a new ID, it should dispose of 
it.  If the new ID was used to obtain any memory, that memory should first
be disposed of and then dispose of the ID.

(there are times when a new ID is preferable to fudging up an aux ID...)

 -Harold

             (H.HISLOP [CryptKeeper], CAT20, TOP4, MSG:176/M530)



FINDERSAYSFUN   I'm having further problems with my "intercept 
"""""""""""""   FinderSaysBeforeCopy" FExt.  When someone wants to 
copy something to the System folder, the Finder puts up the lovely dialog
asking if the user wants it to go where it belongs.  
 
Well, this alert occurs before the finderSaysBeforeCopy IPC, and no
matter what the user answers, the path passed in the dataIn for the
destination path is the System folder (not the System:DeskAccs,
System:CDevs, etc.).  It seems the Finder keeps the answer to the dialog
box to itself until the finderSaysBeforeCopy call is returned to it
un-aborted.  How is someone supposed to deal with such a situation?  Was
the finderSaysBeforeCopy call not supposed to be used as an entry to
"substitute" copying?  Did the planners of this particular action in the
Finder not get it completely right?  (my vote)  What are some
suggestions as to how this should be done...?

 Rick
 
                (R.ADAMS48 [Rick], CAT20, TOP7, MSG:16/M530)
 

<<<<<   No, finderSaysBeforeCopy isn't made so you can substutute copying.  
"""""   All you can do is cancel the copy process.  Or move process, since
finderSaysBeforeCopy is sent before ChangePath calls are made as well as
for copying.

                (WANKERL [Joe], CAT20, TOP7, MSG:17/M530)


 >> No, finderSaysBeforeCopy isn't made so you can substutute copying.

>>>>>   Well, to bad!  :-P  I'm going to do it anyway.  :)
"""""

      Is there any "trick" to disabling this feature of Finder (the "place 
this file where it belongs" alert)?

 Rick
 
                (R.ADAMS48 [Rick], CAT20, TOP7, MSG:18/M530)
 

<<<<<   You can substitute copying by doing the copy yourself, and then 
"""""   telling Finder to abort the copy, but that's a side effect, not a 
feature...

  >> Is there any "trick" to disabling this feature of Finder (the "place 
  >> this file where it belongs" alert)?

      Sure...  patch the Finder in memory when you get the FinderSaysHello
message.  Where to put the patch?  Beats me.  If you've got a
disassembler, I bet you could figure it out...  This is rather dirty,
though, and unless you've got a REAL good reason for doing it, I
wouldn't recommend it.

 Dave

                (JUST.DAVE, CAT20, TOP7, MSG:19-20/M530)



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



256-COLOR FILE FORMATS   With Sequential Systems' 'Second Sight' VGA card 
""""""""""""""""""""""   in development, the IIGS community will need some 
file format standards for 256-color VGA quality images and movies.

      Suggestions are welcome.  I am currently thinking in terms of borrowing 
PC VGA file formats, but some IIGS file formats might well be extensible
to handle VGA images.

Let's hear it!

Jawaid

                 (PROCYON.INC, CAT11, TOP26, MSG:1/M530)
                        


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



      Sorry, guys.  While some of the string processing languages may do 
it, I can't name a language that allows strings to be used as case
statement labels.

      K.McFarland, what you're trying to do is, in essence, to write a 
simple parser.  A parser is a program that reads text and figures out
what symbolic information the text contains.  In your case,  you're
looking for simple words as input, so things can be kept fairly simple.

      The simplest case is to assume that the user will type your one-word 
response just as you expect, say in all lowercase letters with no spaces
at either side.  In that case, you can parse th4e input with simple
if-then statements, like this:

   var
      word: string;
      response: wordType;

   begin
   readln(word);
   if word = 'mouse' then
      response := mouse
   else if word = 'cat' then
      response := cat
   ...

      This can get tedious very fast, so in parsers with more than a few 
words, you'll see an array of the words set up in a different location as
the program is initialized, like this:

   var
      words: array[wordType] of string[8];

   begin
   words[mouse] := 'mouse';
   words[cat] := 'cat';
   ...

      This makes it easy to add new words.  The parser doesn't change as 
you add new words, either.  A simple parser looks like this:

   readln(word);
   done := false;
   response := mouse;
   while not done do begin
      if words[response] = word then
         done := true
      else if response = elephant then begin
         done := true;
         <<<handle the "no match" condition>>>
         end {else if}
      else
         response := succ(response);
      end; {while}

      If you have lots of words, and time is an issue, there are ways to 
speed this process up quite a bit.  The best place to look for some ideas
is in an older compiler book that uses a hand-written scanner and
parser.

      Usually, you'll want to make your parser just a little more 
sophisticated.  The first step is to write a subroutine that preprocesses
the input word.  It should strip any leading or trailing whitespace and
convert all characters to lowercase.

      The second step is a little more fun.  You can use Pascal's pos 
function to search the input line for one of the words in your parse
list.  This works _great_ for adventure games.  By searching a long
string for a match, you'll get a hit when the user types something like
this:

   I just bought a cat.  What do I do now?

      You can find more information on simple parsers and how to use them 
in lesson 13 of "Learn to Program in Pascal."  See Cat 36 or send me 
you're mailing address if you'd like more information.

Mike Westerfield

                 (BYTEWORKS, CAT6, TOP14, MSG:131/M530)


                                          

                               [*][*][*]


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

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



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



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

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

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

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



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



PUBLISH, SUBSCRIBE AND QUESTION   Mike,
"""""""""""""""""""""""""""""""

      Could you please start up a topic here to cover Publish & Subscribe
questions, suggestions, etc? (if there already is such a beast, I
couldn't find it, I even grabbed a fresh index to look for it :)

      I've studied the files that you uploaded on this, and have some
questions.

   1) PBLS and PBGS atoms - You state that either is acceptable, but that 
      PBGS is prefered.  Can both be (legally) present at the same time?

   2) PROG and PRGS atoms - Same question as with PBLS and PBGS (may both 
      be (legally) present at the same time)

   3) When an application publishes an edition, how the heck is another
      application supposed to know where to find that edition? (only thing 
      I can come up with is poping up a SFGetFile dialog and having the 
      user locate the edition(s) that the subscriber should subscribe 
      to...) [Maybe, as editions are basicly a "packaged scrap", a 
      seperate, dedicated folder would be a desirable default location...
      
   4) May an edition have multiple atoms of type $0000 (Text Scrap) that
      are related to each other only by the fact that they all came from 
      the same original document? (ex: I want to put the first and last 
      sentences of this message into two seperate atoms, both of these 
      atoms appearing in the same edition)

      Right now I am very seriously considering making CoPilot II support
Publish & Subscribe, not sure how fully yet (might only subscribe at
first)

 -Harold

            (H.HISLOP [CryptKeeper], CAT36, TOP3, MSG:238/M530)


<<<<<   Harold,
"""""
      As for #3...well, you do use SFGetFile2 to find out what edition to 
use :) (At least QCCalc does) for the others...I'll let Mike answer :)

            (T.BUCHHEIM [Timotheus], CAT36, TOP3, MSG:239/M530)


>>>>>   I was figuring that the subscribing app would have to use a 
"""""   GetFile (of whatever variety) but..... the thought that a message 
might be posted by the publishing app which subscribers could retreive
for automagic subscribing also crossed my mind.

      (I'd think SFMultiGet2 or SFPMultiGet2 would be preferable over
SFGetFile2...  as a subscriber could possible have reason to subscribe to
several editions)

 -Harold

           (H.HISLOP [CryptKeeper], CAT36, TOP3, MSG:240/M530)


<<<<<   >> PBLS and PBGS - Can both be present at the same time?
"""""

Yes.  It's less confusing if they contain the same information, of course.  :)

   >> How [does] another application ... know where to find that edition?

      The user must subscribe to the edition.  It goes a particular place, 
just like a paste.  You also mentioned an "automated" subscribe, but that
makes no more sense than an "automated" paste, and for the same reasons.
Not all documents that _can_ subscribe to an edition will need to, and
even if they needed to, there is still the issue of where to put the
information in the document.

   >> May an edition have multiple atoms of type $0000.

      No.  If there are separate pieces of information, each separate 
piece goes in a separate edition file.

Mike Westerfield

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



C++???   This may surprise all of you, but the issue of a C++ for the 
""""""   Apple IIGS is far from dead.  If you've been watching what I'm 
doing lately, you've seen something that I hope will become a trend:
Cross platform development and using the same basic technology in
several applications.  You've seen that already, and benifited from two
Apple IIGS programs that would have never been developed otherwise. 
Roger Wagner contracted with us to do HyperLogo Mac, and we spun off
HyperLogo GS and 3D Logo GS in the process.  I'm currently working on
HyperLogo PC, and expect to spin off 3D Logo on both the PC and Mac
along the way.

      I'm looking seriously at ways to get the ORCA languages to other 
platforms.  There seem to be some market niches not filled by the current
products, and, frankly, a failure for a Semantec or Microsoft would be a
roaring success for me.  (Microsoft was selling as many BASIC compilers
on the Mac in 3 months as I've ever sold of ORCA/C, but they cancelled
the product for lack of sales!) If I'm successful, I'll eventually do a
C++, and probably port it back to the GS.

      Another possibility I'm seriously considering is a port of the GNU 
front end.  It would be slow, it would not be ANSI compliant, and there
would be some marketting issues (the C++ would have to be offered free,
and I do have to figure out how to make money on it), but it may still
happen.

If any of you have comments on any of this, be sure and let me know.

Mike Westerfield

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



USED BYTE WORKS SOFTWARE   I'm always happy to transfer ownership when 
""""""""""""""""""""""""   you buy or sell one of our programs, so long as 
the entire program is sold, as in this  case.  Here's what I need:

   Your name and address
   The name and address of the person you bought from
   What you bought

We'll send confirming letters to both parties.

      Upgrades are available from the 1.x ORCA products to the 2.x level. 
They are $50 for ORCA/M and $60 for ORCA/C and ORCA/Pascal.  The major
difference between the 1.x and 2.x products is support for GS/OS, with
its longer path names and various FSTs.  Pascal 2.0 also added objects.

      For a complete list of Byte Works products, including available 
upgrades, send your name and address to me by e-mail, and remind me 
about why you are writing.

Mike Westerfield

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



PRIVATE ORCA LIBRARIES   This note explains the private ORCA libraries--
""""""""""""""""""""""   what they are, who can get access to them, and 
how you get access to them.

      The GEnie staff has viven me several libraries that I use for 
intermediate releases of ORCA tools.  From this, I get faster feedback
about potential problems as I develop updated versions of the ORCA
tools, and those people that need it get access to bug fixes before they
are available any other way.

      The libraries generally contain beta software that contains fixes to 
bugs in the most recent commercial release of the software.  In the case
of the most recently released commercial updates, I uploaded the
updates, too, since they were almost entirely bug fixes.

      The libraries are _not_ a replacement for purchased updates.  If I 
stop making money from improvements to the ORCA languages, I'll have to
stop making improvements.

      The libraries _are_ delta updates.  They are based on a specific 
release version of the ORCA software, and may not work with earlier
versions.

      With that in mind, it's easy to see what the qualifications for 
access are.  You can get access to the private ORCA libraries if you are a
registered owner of the version of software the updates are based on. 
You must own ORCA/Pascal 2.0.1 or better, ORCA/C 2.0.1 or better, or
ORCA/M 2.0.3 or better to get access to the libraries for one of these
languages.

      You can check your version number by looking in the Login file in 
the Shell folder on your Program disk for a given language.  THIS MAY
DIFFER FROM THE VERSION PRINTED BY THE COMPILER OR SHELL.  You must
check this version in the Login file to see which release version you
actually have.

      If you qualify, and want access to the private ORCA libraries, send 
the following information by e-mail:

   Your name
   Your mailing address (US mail, not e-mail)
   Which of the above programs you own, and the version
   A note telling me why you are writing

      Without _all_ of the above information, I will just refer you back 
to these instructions and ask you to try again.

Thanks, 

Mike Westerfield

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



GS/OS QUIT IN ORCA/C   I'm writing a desktop program with ORCA/C and I 
""""""""""""""""""""   want to program to issue a GS/OS quit call so it'll 
launch another application.  What's the proper way to do this?  I shut
down all my tools, but if I issue the quit call then, ORCA/C doesn't get
to do its shutdown stuff.  I seem to remember there being a way to force
ORCA/C to do the shutdown and quit call for me, but I don't remember
where I saw it or maybe I'm just loopy remembering stuff that never
happened.  Any pointers?

              (WANKERL [Joe], CAT36, TOP11, MSG:337/M530)


<<<<<   There's a function you can call to tell ORCA/C to shut all the 
"""""   stuff down... hmm...

Instead of doing a QuitGS call, why not just call ORCA's function:

 extern pascal void SystemQuitPath(GSString255Ptr);

      This tells ORCA/C what application to launch upon quitting your 
program.  Then go through the normal quit procedure.
 
Use

   extern pascal void SystemQuitFlags(unsigned);

to set the flags value passed to QuitGS.

 Eric Shepherd (Sheppy)
 [Team PPCPro]

            (POWERPC.PRO [Sheppy], CAT36, TOP11, MSG:338/M530)



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



                    >>>  Data Encryption  <<<
                    """""""""""""""""""""""""

File #4286  RSA.BXY  (ALL)
Uploaded on 8/31/94 by D.BROWN109
About 90k (d/l time approx. 9 minutes @ 2400 baud Ymodem)

      This is a collection of questions and answers on today's 
cryptography, assembled by RSA Laboratories, Inc.  It explains RSA, a
popular public-key cryptosystem, in some detail, and also addresses
other systems and the legal issues surrounding them.  The FAQs are
contained in three text files.


File #4285  CRYPT.BXY  (ALL)
Uploaded on 8/31/94 by D.BROWN109
About 75k (d/l time approx. 7 minutes 30 secons @ 2400 baud Ymodem)

      This ShrinkIt archive contains the Frequently-Asked Questions (with
answers) for the sci.crypt newsgroup.  Lots of general theory is
included.  Private and public key cryptosystems are explained, merits of
particular systems are discussed, and lots of terminology is explained. 
This version is current as of 5 July 1994, and it is the latest on
rtfm.mit.edu.  The FAQ is in 10 parts, each a separate text file.



              >>>  Source Code for Music Programs!  <<<
              """""""""""""""""""""""""""""""""""""""""

File #4279  NTGSSRC10.BXY  (GS)
Uploaded on 8/29/94 by T.MORALES
About 405k (d/l time approx. 40 minutes 30 seconds @ 2400 baud Ymodem)

      This is the source code for Noise Tracker GS version 1.0.  This 
source code was made public domain by it's author, Olivier Goguel, and
you are encouraged to try and learn from it.  All source code is in
Merlin-16+ format, but you can convert it without much effort to other
popular assemblers.


File #4274  ST.SRC.63.BXY  (GS)
Uploaded on 8/26/94 by A2.LUNATIC
About 360k (d/l time approx. 36 minutes @ 2400 baud Ymodem)

      Released by Tim Meekins to the public, here is the complete source 
code to soniqTracker 0.63.  This is a really nifty IIgs desktop MOD
playing program with lots of effects.  Includes a short read.me file.



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

File #4297  ASF108LESS4.BXY  (ALL)
Uploaded on 9/5/94 by A2PRO.HELP
About 22k (d/l time approx. 2 minutes 12 seconds @ 2400 baud Ymodem)

      Here it is (finally); the final episode in the A2 University course
"An Introduction to Applesoft".  Be sure to check out the details
on A2Pro's newest upload contest; they're inside.
Brought to you by professor J. Nathaniel Sloan.  :)


File #4295  LORES.PAINT.BXY  (ALL)
Uploaded on 9/4/94 by B.WELLS5
About 12k (d/l time approx. 1 minute 12 seconds @ 2400 baud Ymodem)

      This is an unfinished Lo-Res paint program I started working on
back in '90.  It has Load & Save using Text Commands (File #4294).  It has
a sharp assembly fill routine, as well as a color ImageWriter printer
driver.  As this version isn't near my user interface standards, please
do not distribute it beyond this library.  However, you may use the
assembly routines in your own programs.  Merlin source is included so you
can experiment with it :)
Have fun! :)


File #4294  TEXTCMDS1.1.BXY (ALL)
Uploaded on 9/4/94 by B.WELLS5
About 23k (d/l time approx. 2 minutes 18 seconds @ 2400 baud Ymodem

      TEXTCMDS will add commands to AppleSoft BASIC for Loading, Saving & 
Printing Text screens from ProDOS.  Lo-Res pictures can also be loaded and
saved! An editor for designing your screens is included, along with
fully commented source code in Merlin format.  These routines are
provided as freeware, but please credit the author in your program if
you use them.  This version contains some minor improvements over v1.0.


File #4289  PUBLISH.RTC.TXT  (ALL)
Uploaded on 9/1/94 by A2PRO.GELAMP
About 15k (d/l time approx. 1 minute 30 seconds @ 2400 baud Ymodem)

      This is the transcript from the A2Pro RTC "Publish and Subscribe", 
held on August 29, 1994.  The guest was Mike Westerfield from The Byte
Works, Inc.  This is a text file that may be downloaded or <L>isted.



[EOA]
[RTC]//////////////////////////////
                       RTC WATCH /
/////////////////////////////////
Excerpts from Evening Escapades
"""""""""""""""""""""""""""""""
By Tim Buchheim
    [T.BUCHHEIM]



                         >>>  SnOOping Menus  <<<
                         """"""""""""""""""""""""

<JUST.DAVE>     How does one get at the title string of a menu that the 
                Menu Manager uses to draw the menu with?

<T.BUCHHEIM>    Dave: GetMenuTitle

<JUST.DAVE>     That needs a menu ID

<T.BUCHHEIM>    Dave: why don't you know the ID?  :)

<T.MORALES>     Hmmm.  Use GetMenuFlag, and examine the ref bits, then use
                GetMenuTitle, and deref handle/load resource, or just look 
                at the pointer.

                Or, patch DrawString and only use it when MenuSelect is 
                called.

<JUST.DAVE>     Because he's trying to alter the title of a menu ITEM in 
                any application when the option key is held down while 
                selecting the File Menu.

<T.MORALES>     Why?

                That's bad HIG practice, right?

<JUST.DAVE>     Replace "Print..." with "Fax..." and "Print Setup..." with 
                "Fax Setup..."

<T.MORALES>     Oh I see.  Not good.  Find another way.

<T.BUCHHEIM>    I wouldn't do that. 

<JUST.DAVE>     He has the handle of the menu bar which he obtained by 
                patching menu select.  He can get the ID of the menu out 
                of the menu bar record.

                But there's no documented method to figure out which menu 
                items are attached to which menus...

<T.MORALES>     Don't do this--it's bad, and not 100% always going to 
                be a sure thing that Print prints, and Print Setup does 
                whatever print setup is supposed to do.

<T.BUCHHEIM>    Dave: that's a Bad Idea.  What if some program doesn't 
                call the items by the normal names. (foreign language 
                version, or something) Or the items with those names are 
                NOT meant to do whatever?

<T.MORALES>     It's bad, yes.

<JUST.DAVE>     He's patching the Print Manager, also...

                It will know. It won't prevent anything from happening if 
                the Print Manager isn't called.

<T.MORALES>     Mucking with menus and their titles is just too much 
                trouble for what's worth.

<T.BUCHHEIM>    Dave: this is not a good thing.  what if the App itself 
                wants to do something special with the option key and the 
                print items? :)

<T.MORALES>     I agree with Tim.

<T.BUCHHEIM>    also, holding down option, shift, and command, or some 
                such combo, is how you get the version number of an Apple 
                printer driver

                (imagewriter and stylewriter both bring up version # 
                alerts when you hold down modifiers and open the page 
                setup or print job dialogs)

<JUST.DAVE>     I'm not sure if he was going to replace them just when the
                option key was down...  it may have a switcher to switch 
                from Print mode to Fax mode in an NDA or a CDA or 
                something...

<T.MORALES>     The menu structure, beyond what apple defines, is easy to
                figure out--I've done it, but messing with it isn't a good
                idea.

                I had to do it so I can tell when a menu is cached or not, 
                and I'm even taking chances by doing this.

<JUST.DAVE>     Telling whether or not a menu is cached is documented.

                I found it last night in TBR3 when Paul and I were digging 
                for stuff...

<T.MORALES>     No, whether or not it is currently cached.

<JUST.DAVE>     yes.

<T.MORALES>     The cache bit only tells you that it could be cached. Not 
                that it is, or that the cache is dirty, and needs to be 
                redrawn.

<T.BUCHHEIM>    I think Tony is correct

<T.MORALES>     My GUI program needed this info real badly, and took me a 
                while to figure it out, not without a lot of confusion.

<JUST.DAVE>     ah. yep.  just reread it.

<T.MORALES>     Those people who denounce patching weren't too happy 
                with my idea when I needed this info 8 or so months ago.

<JUST.DAVE>     Hmmm....  his thing is going to be an init...  it'll be in 
                the system anyway...

<T.MORALES>     This fax software, right?  Hmmm.  Why doesn't he just make 
                a CDev that lets you toggle between normal printing and 
                faxing through the Print Mgr?

<JUST.DAVE>     he should just patch the menu creation calls and snag the 
                IDs of the menu items that contain what he needs access to 
                as they're created; then he can use legal tool calls to 
                modify them.




                   >>>  65816 Assembly Language Weirdness  <<<
                   """""""""""""""""""""""""""""""""""""""""""

<W.TUDOR>       Gee, I just noticed that your cannot do a "pea ^label" in
                Orca/M. I, of source, looked it up in the 65816 spec book, 
                and, as usual Mike is right and that instruction is 
                illegal.

                But Merlin takes it.

                Of course, I think it should be leagal, since its obvious 
                what you want to do, and to code it is obvious, too.

                You want to push the word-sized bank that the label 
                resides in. 

                I used it all the time in Merlin when I had, say, [A,X] 
                filled with a handle and wanted to call _PtrToHand (just 
                and example).  Then I would pea ^dataPtr pea ^dataPtr phx 
                pha pushlong size _blockmove. (pea does not trash A or X). 

<JUST.DAVE>     ph2 #^label

<W.TUDOR>       Does that macro trash A or X?

<JUST.DAVE>     I dunno

<W.TUDOR>       It does.  (At least mine does)

<JUST.DAVE>     Hmmm...  seems like that ought to be possible...

<W.TUDOR>       I've been switching over to Orca. That's why these little
                things are on my mind.

<JUST.DAVE>     the compiler knows where the label is...  why shouldn't it 
                just use it...

<W.TUDOR>       Of course, Merlin also lets you type "pea #5" vs "pea 5". 
                The first is technically _wrong_, but merlin does the same 
                thing for both.

<JUST.DAVE>     if you're following any kind of standard, it actually 
                ought to be #5.  The # distinguishes between a contant and an 
                address.  PEA doesn't take an address, so it just assumes 
                it's a constant even though it looks like an address.

<W.TUDOR>       Yep.

                But the specs say pea 5. Also, for pea label it says "psh 
                the 16-bit address of label" thus Orca does not allow 
                pea ^label, even though the machine code for a latter 
                would work just fine.

<JUST.DAVE>     I usually avoid using A, X, and Y for anything other than
                temporary holding unless I have a need for speed in a 
                routine.  Mainly for that reason.

                It's much easier to set up 'variables' in your data 
                segment and make extensive use of them...

<W.TUDOR>       True, but a NewHandle followed by a BlockMove, when you 
                really don't need the pointer again, its nice not to have 
                to save it somewhere.

<JUST.DAVE>     yeah.



[EOA]
[CAM]//////////////////////////////
                    CAMPUS GREEN /
/////////////////////////////////
Latest on Current Courses
"""""""""""""""""""""""""
By Nate Trost
    [A2PRO.GELAMP]



      The A2U 'Introduction to Applesoft BASIC' course has finished!  Here
are the lessons available for download in the A2Pro library:

   #4239: Course Introduction
   #4242: Lesson 1
   #4257: Lesson 2
   #4266: Lesson 3
  

                               [*][*][*]



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

    o   COMMENTS: Contacting GEnieLamp

         o   GEnieLamp STAFF: Who Are We?


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


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

     GEnieLamp is also distributed on CrossNet and many public and
     commercial BBS systems worldwide.

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

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

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

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

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

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

     o If you would like to meet the GEnieLamp staff "live" we meet every
       Wednesday night in the Digi*Pub Real-Time Conference at 9:00 EDT
       (M1395;2).

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


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

  GEnieLamp    o John Peters         [GENIELAMP]    Publisher/Editor
  """""""""

        IBM    o Bob Connors         [DR.BOB]       IBM EDITOR
        """    o Nancy Thomas        [N.NOWINSON]   MultiMedia Editor/Writer
               o Brad Biondo         [B.BIONDO]     IBM Staff Writer
               o Tika Carr           [T.CARR4]      IBM Staff Writer
               o Dave Nienow         [D.NIENOW]     IBM Staff Writer
               o Don Lokke           [D.LOKKE]      Cartoonist
               o Sandy Wolf          [S.WOLF4]      Contributing Columnist

    WINDOWS    o Tippy Martinez      [WIN.LAMP]     WINDOWS EDITOR
    """""""    o John Osarczuk       [J.OSARCZUK]   Asst Editor/Columnist
               o Rick Ruhl           [RICKER]       Windows Sysop/Columnist
               o Brad Biondo         [B.BIONDO]     Windows Staff Writer
               o Rick Pitonyak       [R.PITONYAK]   Windows Staff Writer
               o Ed Williams         [E.WILLIAMS24] Windows Staff Writer
               o Dave Nienow         [D.NIENOW]     Windows Staff Writer

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

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

 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 Darrel Raines       [D.RAINES]     A2 Staff Writer
               o Gina E. Saikin      [A2.GENA]      A2 Staff Writer
               o Charlie Hartley     [C.HARTLEY3]   A2 Staff Writer

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

       ETC.    o Jim Lubin           [J.LUBIN]      Add Aladdin Scripts
       """"    o Scott Garrigus      [S.GARRIGUS]   Search-ME!
               o Mike White          [MWHITE]       (oo) / DigiPub SysOp
               o Susie Oviatt        [SUSIE]        ASCII Artist
               o Al Fasoldt          [A.FASOLDT]    Contributing Columnist
               o Phil Shapiro        [P.SHAPIRO1]   Contributing Columnist
               o Sandy Wolf          [S.WOLF4]      Contributing Columnist


 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\////////////////////////////////////
  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 do  not necessarily reflect
  those of the publisher or staff of GEnieLamp.  We reserve the right to
  edit all letters and copy.  Please include the following at the end or
  the beginning of all reprints:
 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\////////////////////////////////////
  (c) Copyright 1994  T/TalkNET  Online Publishing  and  GEnie.  To join
  GEnie,  set your modem to 2400  baud (or less)  and half duplex (local
  echo).   Have the modem dial 1-800-638-8369.   When you  get a CONNECT
  message, type  HHH.   At the U#=   prompt, type: JOINGENIE and hit the
  [return] key. When you get the prompt asking for the signup code, type
  DSD524  and hit  RETURN.  The  system  will then  prompt  you for your
  sign-up information. Call (voice) 1-800-638-9636 for more information.
 ////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
[EOF]
