

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

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


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

                              ~ No OJ Coverage! ~                   
                      ~ Things (filed) Under Assembly ~
          ~ Typecasters of the Last Crusade ~ Extended Characters ~
                    ~ HOT NEWS, HOT FILES, HOT MESSAGES ~
                        
////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
 GEnieLamp A2Pro   ~ A T/TalkNET OnLine Publication  ~  Vol.4, Issue 21
 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 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? <<<
          """""""""""""""""""""""""""""""""""""""""""""""""""""""
                              ~ November 1, 1994 ~

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

 A2PRO ROUNDTABLE STAFF .. [DIR]        DEVELOPERS CORNER ....... [DEV]
  Directory of A2Pro Staff.              News From Online Developers.

 LIBRARY BIT BONANZA ..... [LIB]        LOG OFF ................. [PUB]
  HOT Files You Can Download.            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 <<<
                          """""""""""""""""""""""



ISSUE?  IT'S AROUND HERE SOMEWHERE...  My apologies for another late
"""""""""""""""""""""""""""""""""""""  issue, life has been somewhat
hectic here at the GEnieLamp A2Pro office!  The last two milestones
on my programming project just happened to correspond with the first
of the month, making life....a bit crazy.  :-)  What with that and
saving the universe from total destruction, well, I came in a bit late
this month, sorry!  :-)  Well, we've got some interesting stuff in the 
bulletin board, although A2Pro has been quiet as of late.  Despite
that, however, I'm rather surprised at the constant variety of topics
which make their way into the BB, the mix is rather intriguing.

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   WHAT'S NEW
           
                 o   PROGRAMMER'S TIPS
                             


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

 [*]  CAT3,   TOP5,  MSG{69}..........Using assembly from other languages
 [*]  CAT3,   TOP19, MSG{75}...................General Assembly Questions
 [*]  CAT9,   TOP7,  MSG{149}................Applesoft BASIC help please!
 [*]  CAT13,  TOP11, MSG{64}......................Request for Information
 [*]  CAT36,  TOP9,  MSG{77}................ORCA/M 16-bit Macro Assembler
 [*]  CAT36,  TOP20, MSG{39}....................................Utilities



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



NEW 9600 GENIE ACCESS RATES   GEnie Announces Reduced Rates for 9600 
"""""""""""""""""""""""""""   bps Access

      Fire up that high-speed modem and head for your favorite GEnie 
Software Library!  Effective October 3, 1994, you'll be able to access
GEnie Services at 9600 bps for as little as $5.00 per hour.  This is a
limited beta test, and will be opened to all users on October 10, 1994.

      As a result of an arrangement with Sprint, GEnie will be offering 
9600 bps access from almost 300 SprintNet locations.  Best of all, this
high-speed access will not be subject to high-priced surcharges.  The
normal $2.00 per hour SprintNet surcharge will apply...even at 9600 bps!
This open beta test is expected to run through the end of the year.

      To find the number of the SprintNet access number nearest you, 
simply type PHONES at any GEnie menu prompt (or use the "Move To Keyword"
option in GEnie for Windows and type PHONES).  Remember, this rate
applies only to 9600 bps access via SprintNet.  So be sure to choose the
access number showing "9600" in the "Baud Rate" column AND "SprintNet"
in the "Network" column.

      From the "Fine Print" department, please note that the $2.00 per 
hour surcharge for SprintNet access is applicable even during your
initial four hours of monthly usage.

      So, whether you're into downloading software, reading bulletin 
boards, or accessing databases, it's about to become cheaper to do it
faster!  Join the beta test today, and get a headstart on the savings!

                 (JUST.DAVE, CAT1, TOP17, MSG:188/M530)



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

 
HOP, SKIP, JUMP...   I'm writing an assy request procedure that uses a 
""""""""""""""""""   jump table to "jsl" to other procedures (mostly 
written in Pascal).  I have some sample source that shows me how to jsr
using the jump table:

          jsr   (codeTable+2,x) call the handler

      but I don't know how to jsl.  Do I use the same code, but change the
format of the jump table, different code & different jump table, etc.

 current jump table sample

 dc   i2'finderSaysHello,HandleHello'
 dc   i2'finderSaysGoodbye,HandleGoodbye'
 etc.

new jump table (for jsl)

 ????

               (R.ADAMS48 [Rick], CAT3, TOP5, MSG:69/M530)


<<<<<   It is somewhat more difficult to do what you want.  First, you 
"""""   need to change your table.  Format your table to look like:

  dc   i2'finderSaysHello',i4'HandleHello-1'
  dc   i2'finderSaysGoodbye',i4'HandleGoodbye-1'

      The -1 is necessary because you won't be doing an actual JSL, but 
will  push the pointer onto the stack and do an RTL.  Since a JSL only
puts 3 bytes on the stack, you need to kind of finesse this.

Basically, you need to do the following..

loop      LDA   CmdTable,X      get word to check
          BEQ   NotFound
          CMP   reqCode
          BNE   NextCmd
          LDA   CmdTable+4,X
          SHORT M               SEP #$20 set 8 bit acc.
          PHA
          LONG  M               REP #$20 set 16 bit acc.
          LDA   CmdTable+2,X
          PHA                   routine address now on stack
          RTL

NextCmd   TXA
          CLC
          ADC  #6
          TAX
          BRA  loop

NotFound ...            continue code here.

      If you call this with a JSL, then it would act similar to the 
(JSR nnn,x) except for it's a JSL..

              (A.WELLS5 [Andy], CAT3, TOP5, MSG:70/M530)


>>>>>   Thanks!  That's jsut what I need; and to think, I've seen that 
"""""   before--if only I could remember all these little tricks.  Now to 
thicken the plot... in addition to the need to rtl via a jump table, the
procedure that contains a jump table has 10 bytes pushed to it on the
stack, and the procedure that jsl'd to this request procedure is
expecting a word value returned to it...  do I pull the ten bytes off
and set the word value _before_ rtl-ing with the jump table?  I would
prefer another way as I don't know the true return value until the
requested procedure is complete.  :-(

 Rick

              (R.ADAMS48 [Rick], CAT3, TOP5, MSG:72/M530)


<<<<<   Hmmm... a perfect place to use stack relative indexing if there 
"""""   ever was one! :)

 [assuming native mode, 16 bit registers]

      lda 1,s will grab the word from the top of the stack (effectivly 
this is the same as PLA, PHA but faster, much faster :)

lda 3,s will grab the second word, etc.

      This is also nice for shuffling long return addresses on the stack, 
such as when a called procedure is expecting input on the stack, and the
caller is expecting the procedure to handle removing that input space.
(sound like something that's about to bite your tail? :)

 Example:

      Main code pushes one word of result space and four words of input 
data, then JSL's to a function.  The function uses the 4 words that were
passed, sets the result value, strips the stack of the passed input,
relocates the return address and returns to the caller.  (Gee, reminicent
of what a tool function has to do :)

Upon entry to the called function, the stack looks like this:

 D - RsltH
 B - Data4H     RsltL  - C
 9 - Data3H     Data4L - A
 7 - Data2H     Data3L - 8
 5 - Data1H     Data2L - 6
 3 - rtlH       Data1L - 4
 1 - rtlL       rtlm   - 2

      So... to access Data1, the function would LDA $044,s, to access 
Data4, the function would LDA $0A,s, etc.

      When ready to exit, the function would most likely look something 
like this:

      ldx  RtnCode   ;any error flag / code function may return
      lda  LocalResult ;grab functions final result
      sta  $0C,s     ;stuff into callers result space
      lda  $02,s     ;grab mid & hi byte of rtl adr
      sta  $0A,s     ;overwrite Data4
      lda  $01,s     ;grab low & mid byte of rtl adr
      sta  $09,s     ;overwrite hi byte of Data3
      tsc            ;get stack pointer
      clc            ;prep for addition
      adc #$07       ;return the data passing space
      tcs            ;set the fixed stack pointer
      txa            ;rtn code -> acc
      cmp #$0001     ;condition the carry flag (set on errors)
      rtl            ;back to mama!

      As soon as this code is executed, one finds themselves back at 
wherever the fuction was called from, with the result in the top word on
the stack, and the carry clear if the result is valid, or set if there
was an error (and the error code is in the acc)

Have Phun! :)

      Oh... yeah, almost forgot...  There are some caveats with the process 
of pushing a long return address and executing an RTL to effectivly
simulate a JSL,x function.  Bank crossings have to be handled properly!
You should code your table as follows: (Merlin syntax, ^Label indicates
the hi word of the adr)

      dw   ^Function1
      dw   Function1-1
      dw   ^Function2
      dw   Function2-1
      etc...

      Note how this leave the bank part of the address alone, but 
automatically "fixes" the low word for stacking and then RTL'ing.  Do NOT
code the table as:

      adrl Function1-1

      This _could_ result in an invalid bank byte when loaded into memory.
(consider what would happen if the code for function1 just happened to
fall at address $0000 of a given bank... that address-1 would be in the
previous bank, which would NOT do what you wanted done.  There's a tech
note concerning this, but I can't remember which one it is right now...

 -Harold

            (H.HISLOP [CryptKeeper], CAT3, TOP5, MSG:74/M530)


>>>>>   > (consider what would happen if the code for function1 just 
"""""   > happened to fall at address $0000 of a given bank...

There's a simple way around this without resorting to:

     DC  I'Function1|-16',I'Function1-1'
     ..       ..               ..

Simply place a NOP prior to the first function..

Functions   START
            NOP
Function1   ENTRY
            function 1s code..


     Andy...

            Delivered by CoPilot 2.5 and Spectrun 2.0 b23

             (A.WELLS5 [Andy], CAT3, TOP5, MSG:75/M530)



FUTURE A2U COURSES   I was wondering if there have been any plans or 
""""""""""""""""""   discussions about organizing an A2U course covering 
the new data base and spreadsheet features of AppleWorks 4.x (5.x).  I
hope I'm not alone in wishing there were such a course.  It seems like
it would be a natural.  Has anyone else expressed an interest in such a
thing?

 Roger

                  (R.MALTZ, CAT22, TOP8, MSG:27/M530)


<<<<<   There probably won't be an A2U course that covers the new features 
"""""   of Appleworks 4.x to 5.0.  If there is another course based upon 
Appleworks, it will deal with UltraMacros/AW.Inits/Timeout Applications
programming.  This is a possibility for a future course.

      As of this time, the next planned course will be one on Scripting 
with Spectrum 2.0 which will take place soon after version 2.0 is
available.

            (A2PRO.GREG [A2U Guy], CAT22, TOP8, MSG:29/M530)



APPLESOFT TO SYS   I'm a recent subscriber to your magazine and disk.  And 
""""""""""""""""   I have a  question.  Somewhere I heard a rumor of 
methods for turning Applesoft programs into system files. ie. if I have
an Applesoft program , then there is a way to fix it so that it will
behave like a system file: it will not return to the basic prompt ] but
instead return to the IIGS system.

      Since I still use a few Applesoft programs, and the way they finish  
is annoying, such a utility (and or/or description of how to do this)
would be handy.  It may, of course, somehow involve tying the  Applesoft
program in with Basic.system, but that's fine with me.

      Have you heard of such a thing? If you have, can you tell me where 
to look for it?

    Thanks,
    Thomas Donaldson

            (T.DONALDSON2 [Thomas], CAT33, TOP4, MSG:57/M530)


<<<<<   There's a program that will convert _small_ BASIC programs to SYS 
"""""   files, and it's in the A2 libraries.  Type m645;3 to get there.  
(This is the A2Pro RT.)  I believe it's called AUTOMAKER.BXY.  You'll
also find it on the September 1994 issue of A2-Central.  (Sorry, Diz!)

 Doug Cuff, A2-Central

            (EDITOR.A2 [Doug Cuff], CAT33, TOP4, MSG:60/M530)



TWEAKING FINDER MENUS   I have been requested by my "significant other" to 
"""""""""""""""""""""   move the shutdown menu option in the Finder over 
to the File menu, where she thinks any <open-apple> Q selections should
be (after all, all her applications have it there :).  Before I go too
far down the path I would like to ask:

   a.) Is this easily done? (i.e. has someone done this already)

   b.) Would I be causing any problems in Finder?

   c.) Where in Finder do I find the menu items.  (I have a block editor 
       and I have Foundation, the commercial version with the docs)

   d.) Is there an init or FinderExtra that would do this already? (no 
       sense in reinventing the wheel if I don't need to :)

      Any comments or hints are appreciated.  Soon I will be beginning the
journey into desktop programming myself and I am hoping to learn from
this experience.  Thanx.

 Eric Heim

                (E.HEIM3 [eric], CAT1, TOP21, MSG:114/M530)


<<<<<   This is easily done with Foundation..
"""""

Launch Foundation, and open the Finder..

Edit the following C Strings.

 ID 3:

Before the . at the end, add:


 >>\DN65534
 >>Shut Down\N605*Qq


 ID #8

Remove:


 >>-\DN65534
 >>Shut Down\N605*Qq

Make sure the . at the end is left alone..

            (A.WELLS5 [Andy], CAT1, TOP21, MSG:118/M530)



65816 PERFECTION   Wow, I finally had opportunity to use the PER 
""""""""""""""""   instruction.  :-)

     per @return-1
     ldx sanumx2
     lda sadefproc,x
     dec
     pha
     rts 
@return

Nate

            (A2PRO.GELAMP [65-Nate-16], CAT3, TOP19, MSG:99/M530)


<<<<<   I use PER for pushing pointers onto the stack all the time:
"""""

     pea  windPtr|-16
     per  windPtr
     _CloseWindow

      The PER, being relative, doesn't require relocating like PEAs do, so 
it saves a couple bytes and speeds up relocation slightly. :)

            (POWERPC.PRO [Sheppy], CAT3, TOP19, MSG:100/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 <<<
                     """"""""""""""""""""""""""""""""


PET 'PEA'VES   I noticed in some other cat/top, people started talking 
""""""""""""   about Orca/M vs Merlin 16+.  I recently moved over to Orca, 
although I have used both enviornments for many years.  In any case, some
of the differences (such as requiring the 'a' in 'asl a') are a bit of
an inconvienience for me, but no real big deal.  There is one difference
that keeps coming up whenever I steal a subroutine or some library
source code from my vast Merlin source files.... its the "pea" command.

      Now, I'm not talking about the fact that Merlin treats "pea #5" and 
"pea 5" as equivelent and in Orca, "pea #5" is not allowed.  That's no big
deal.  In fact, my "reference" is the Eyes and Richty book, which clearly
says that the assembler syntax for "pea" is that of absolute
addresssing, which of course means "pea 5".  The part that bites me all
the time is that in Merlin, I would use "pea #^label" all the time (the
^ in Merlin is like the > in Orca/M), which would push the upper 16-bits
of the label's address (the high-order word), much like you would use
when doing something with immediate addressing.

      The reason I bring this up is two-fold.  First, many of my 
subroutines return things in registers, thus many times my registers (A,X
and Y) are full just before making a tool call, which many times
requires me to push address data on the stack.  In merlin, I would do
this:

     pea >label
     pea label
     phx
     pha
     phy
     _toolCall

      Note that without the pea long, I could not generate such efficient 
code (i.e., I would have to save one of my registers then use that).
That's why I'd like to see a "pea >label" added to Orca/M.  All you have
to do is use the High 16-bits of the 32-bit address (did I say 32? :-),
well, 24, as the operand.

      The second reason I bring this up is because Orca/M does allow me to 
use the syntax "pea >label", only it generates the exact same code as
"pea label", which caused me hours of gried one day, which I guess is
why I am finnally writing. :-) I think that either the syntax "pea
>label" should NOT be allowed -OR- it should push the high 16-bits of
the address, and I would rather see the latter so that we could all
generate some super-tight and efficient code in some cases.

What do ya think?

      Note: Please don't consider this issue as the same type of issue as 
"asl a" vs "asl" and "pea 5" vs "pea #5".  This one's more than just
syntax... you can't push the upper 16 bits of an addresss with Orca
without using the A, X, or Y registers.

      BTW, since I am reletively new to Orca/M, at least new in writing 
large programs in Orca/M, I may be missing something here... just let'me
know!

                (W.TUDOR, CAT36, TOP9, MSG:77/M530)


<<<<<   PushLong #myRoutineHere
"""""
Where myRoutineHere is the 'label' in your code above, will generate:

              PEA   myRoutineHere|-16
              PEA   myRoutineHere

      The | is the bit-shift operator; |-16 signifies a 16 bit shift left. 
In other words, either of the above syntatical conventions will do what
you want.

            (A2PRO.HELP [ Sloanie ], CAT36, TOP9, MSG:78/M530)



ROUTINE DAZE   I'm having a heck of a time with a particular problem...
""""""""""""

      I'm wanting to use a library of procedures and functions with one of 
my Pascal programs.  The problem is that a particular function call
returns its result (a word) on the stack instead of in the accumulator.
ORCA/Pascal is subsequently not pulling that word off of the stack. 
I've tried using the $ToolParms directive both in the interface file as
well as the program itself, but no luck...  How do I go about letting my
 calling procedure know that this particular function has its result on
the stack?

Rick

              (R.ADAMS48 [Rick], CAT36, TOP10, MSG:251/M530)


<<<<<   You can't tell Pascal to remove the word from the stack.  You'll 
"""""   have to use assembly language glue code, or better yet, redo the 
library to use a standard calling convention.

Mike Westerfield

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



TYPECASTING OF THE UNDEAD   I don't know if these are new or not, but I'll 
"""""""""""""""""""""""""   keep reporting 'em until I'm told otherwise.  
(Mike, this is where that "known" bug list would be helpful, saving both
of us time.)

   1) Token merging in macros doesn't seems to work twice in succession.
      e.g. this works:

#define  BEGIN_EXCLUSIVE(sem)  swait (__memSem ## sem)

      but this doesn't:

#define  BEGIN_EXCLUSIVE(sem)  swait (__mem ## sem ## Sem)

The latter produces "swait (__memList  Sem)", if sem = List.


   2) Adding to a pointer that has been type cast reports an "l-value
      required" error.   e.g.

         ((Byte*) destAddr)++;
         --((Byte*) destAddr);
         ((Byte*) srcAddr) += count;

      All of the above failed for me with the latest version of the 
compiler (v2.0.4b1), but I know this compiled with an earlier version
(pre-2.0).


   3) This isn't a bug as such, but the change in C 2.0+ to use only 
      partial pathnames for the name of the source file in the debug code 
      has its disadvantages too.  It does make it easier to pass debug 
      code to another person whose directory structure is different, and 
      takes less space, but it also means that you have to have to compile 
      and execute your program from a directory at or "above" all the 
      source code files.  For example, I've been working on several 
      libraries, which are located in a different directory from the test 
      program.  I want to compile each part separately in its respective 
      directory, but when I do this, I can only view the source for either 
      the test program or the library, but not both.

      A #pragma debug option to control which whether full pathnames are
      generated or not would be a fair solution, I believe.

             (M.HACKETT [Michael], CAT36, TOP11, MSG:342/M530)


<<<<<   >         ((Byte*) destAddr)++;
"""""   >         --((Byte*) destAddr);
        >         ((Byte*) srcAddr) += count;

      As of C 2.0, rValues cannot be typecast.  ANSI C says that rValues 
can't be typecast.  All of these functions can be rewritten so that only
lValues are typecast.  Might take more text on the line, but when
compiled, shouldn't take any more code..

     Andy...

            Delivered by CoPilot 2.5 and Spectrun 2.0 b23

              (A.WELLS5 [Andy], CAT36, TOP11, MSG:343/M530)



>>>>>   Pardon me, but I believe you folks have your Lvalues and Rvalues 
"""""   on backwards...

Lvalue op= Rvalue

      Lvalues go on the left.  Their primary distinction is that they can 
be stored into.  Rvalues on the right are only read from in that context,
so they can be constants and cast results (after you cast it, it may not
be feasible to store into the thing any more).

For instance, if you have a static char and you try to do

 static char c;
 (long)c = 12345678;

      This is clearly bogus.  ANSI declares that it is always illegal to 
store into the result of a cast (actually they say that a cast expression
is never an Lvalue, but that works out to mostly the same thing).

      Altering the type of a pointer ON MOST IMPLEMENTATIONS leaves 
something that it is still feasible to store into, however it is
technically not legal according to ANSI.  Many compilers (especially the
BSD 'cc' compiler) allow operations on type-changed pointers as if they
were still Lvalues, and it is a popular extension to ANSI mode compilers
because so much dusty deck code uses it.  (At work we had to enable it
for some big customer before they would agree to order a lot of
compilers.)

Todd Whitesel

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


<<<<<   OK, gotcha.  Despite the confusion about lvalues and rvalues, it 
"""""   seems what I have to do is rewrite these lines to read something 
        like:

         destAddr = (void*) (((Byte*) destAddr) + 1);

Right?  (I know the (void*) is not necessary, but I like to be explicit.)

      Wait a minute...  In order to track this down, I split a line into 
the two following lines, and only the latter gave me an error:

             *((Byte *) destAddr) = *currValuePtr;
             ((Byte *) destAddr)++;

      Hmm, I guess I'd better go check on that again, but how does the 
first line differ from the second, in terms of this restriction on
lvalues?

            (M.HACKETT [Michael], CAT36, TOP11, MSG:348/M530)


>>>>>   The (void *) in the first line is in fact necessary, although the
"""""   compiler will usually let you off with a warning.  Assigning two 
pointers of incompatible type is an error in ANSI.  The main practical
reason for this is that if you assign a char* to an int* on many
machines you might not get a legal int* and if you try to dereference it
your program gets killed by the O/S.  So ANSI makes it illegal as a
portability measure.  (This incidentally is one of the many reasons why
ANSI blesses judicious use of void* casts.)

      *((Byte *) destAddr) = *currValuePtr; is perfectly legal because you 
are dereferencing the cast of destAddr.  The cast itself is not an Lvalue,
but it can be fed to the '*' operator and the result of that _is_ an
Lvalue.

      ((Byte *) destAddr)++; is illegal because you are incrementing 
the casted pointer (which is not an Lvalue).

Todd Whitesel

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



ORCA EDITOR VS. EASY ACCESS   Apologies if this isn't the proper place for 
"""""""""""""""""""""""""""   these questions:

   1)  I'm patiently waiting for my ORCA/M upgrade from 2.0 to 2.0.?, but 
       in the meanwhile I thought I'd do some familiarization with the 
       copy of 2.0 I bought from a former user.  When I launch the 
       editor, it works fine unless I click the mouse ANYWHERE.  Editor 
       then crashes into GSBug...  Is this something fixed in later revs, 
       or a product of my setup?  ROM 01 IIgs, 4MB GSRAM, System
       6.0.1, no additional extensions, RAMFast 3.01 rev. D and 40MB 
       Quantum HD, ZipGS 8/16.

   2)  I know there's a microEMACS available which runs under the 
       ORCA shell; is there a vi clone as well?

 --Greg

               (G.DUNN [Greg], CAT36, TOP18, MSG:36/M530)


<<<<<   I assume you're talking about the text editor.  If so, this is a 
"""""   known, intermitant bug.  There is probably something in your 
system folder that effects the editor, but I don't know what it is.  The
bug itself _appears_ to be in the editor, though.

      Re: Vi clone.  There probably is one, but I'm not aware of it.  I 
seem to remember one long, long ago, but I don't remember any details. 
Does anyone else recall a vi clone for the GS?

Mike Westerfield

                 (BYTEWORKS, CAT36, TOP18, MSG:37/M530)


>>>>>   The GNO folks have a port of Stevie somewhere.  One of these days 
"""""   I'm going to try it out.

Todd Whitesel

            (A2PRO.TODDPW [growf?], CAT36, TOP18, MSG:38/M530)


<<<<<  Stevie looks and functions exactly like vi, which is precisely why 
"""""  I don't use it. :)

Sheppy [Team PPCPro]

             (POWERPC.PRO [Sheppy], CAT36, TOP18, MSG:39/M530)


>>>>>   Thanks, Mike.  Yes, sorry -- I am referring to the std. ORCA 
"""""   screen editor shipped with ORCA/M 2.00.

      After thinking about it a bit, I started pulling the few expendable 
standard Apple inits out, and to my surprise I found out:  1) Easy Access
was installed [I don't need it] and 2) when I removed it, the problem
went away.  I put all of them back except for EA, and it works fine; so
my NDAs, GSBug, and the ZIP init are blameless.  I have no clue why EA
should do this on my system, but it's an easy solution!

      For reference:  it didn't matter whether the editor had a file 
loaded or a blank new window; first mouse click anywhere killed it.  I
did not run any other ORCA utils before invoking the editor.  GSBug
wouldn't let me back into the editor; bad checksum error.  Had to
re-boot the IIgs when it crashed.  If you need specifics about the crash
address, trace, etc., let me know (via Email if you want to avoid boring
the lurkers :) and I'll be glad to beat on it; I've had a lot of Mac and
][+ debugging experience.

Todd, Sheppy>  Saw it somewhere, but assumed it needed GNO to run.  True?

 --Greg

                (G.DUNN [Greg], CAT36, TOP18, MSG:40/M530)
            
            
            
EXTENDED CHARACTERS AND THE ORCA EDITOR   One of the things I never 
"""""""""""""""""""""""""""""""""""""""   supported in any of my 
programming editors (or compilers, for that matter) was the extended
Apple character set.  That's about to change, but I'd like to get some
feedback.

      Why bother?  Well, two reasons.  First, it's something that's needed 
to write programs that contain strings in many of the European languages.
 Second, I had to do it to support a customer.

      So here's the programs/issues I'm aware of.  If I miss any, let me 
know.  If I'm on-target, let me know.  If you really don't care, let me
know.  :)

PRIZM:        It's easy enough to add support for the extended character 
              set here.  There is one minor problem:  the compilers use 
              $80, $81 and $82 in column 1 as debug characters to mark 
              breakpoints, etc. I'll need a conversion program to handle 
              this, swithing these characters to other, unneeded characters.  
              I'll use standard keyboard mapping.

Text Editor:  This one may not fly.  The fact that the option key is 
              already used for macros, and is also needed for typing 
              international characters.  There's also the problem that the 
              characters can't be displayed.  Does anyone know of a way to 
              handle this?  What should  the editor do if it doesn't 
              handle the extended character set, and you try to edit a 
              file that does?

Compilers:    All of the compilers will have to be updated, of course.  
              The idea is to allow any character in a string or comment.  
              In addition, I expect to allow extended characters with an 
              obvious alphabetic equivalent, like the u with two dots over 
              it, in identifiers.  TO those of you who speak languages
              that use these characters:  Should characters like u with 
              two dots be treated as distinct characters?  (That's sure 
              the easiest thing for me!)  For example, is run a different 
              identifier from r<two-dot u>n?

Mike Westerfield

                 (BYTEWORKS, CAT36, TOP19, MSG:70/M530)


<<<<<   I've been craving extended characters in strings for years--now 
"""""   I'll be able to finally display typographical quotes and all the 
other doohickeys.  (BTW, does the Windows standard font map match Apple's
font map for the extended characters? In other words, will an Apple
typographical-quote be the same as a Windows typographical-quote? I'm
guessing does because they have the TrueType standard in place.)

      For your editors: you may not explicitly need a conversion utility 
to remap the debug characters.  You could have the editor check the date
on the file before it's read in.  If it's older than the date of the
extended character-aware editor, then invoke your code to remap the
characters.  Are your editors the only ones that create debug characters?

      For the text editor, foreign character sets could be displayed if 
the control panel setting is set to the appropriate country.

      u<two-dots> is different from u<no dots> because the programmer 
would've typed the latter if he meant it.

 Michael
 
            (M.LUTYNSKI [Michael A3D], CAT36, TOP19, MSG:72/M530)
 

>>>>>   An editor should call StringToText if it doesn't support 
"""""   extended character sets.  This should convert all text 
to something that's readable..

     Andy...

            (A.WELLS5 [Andy], CAT36, TOP19, MSG:73/M530)


<<<<<   The extended character sets used by Apple and Windows are quite 
"""""   different.

      If I remember right, the main difference is that Windows focuses on 
having all the various accent+letter combinations, whereas Apple gave a
fair bit of room to nifty symbols (copyright, TM, greek letters, etc.).

Todd Whitesel

            (A2PRO.TODDPW [growf?], CAT36, TOP19, MSG:74/M530)


>>>>>   Andy:  StringToText is fine for _displaying_ characters, but as 
"""""   far as I know, there's no way to _edit_ them--making it useless 
for the purpose I need.  The only acceptable solution I know of is to
actually have the characters available in the displayed character set.

Thanks for the thoughts on the editors, folks.  I'll keep these in mind.

Mike Westerfield

                (BYTEWORKS, CAT36, TOP19, MSG:75/M530)


<<<<<   Display option characters as inversed characters?
"""""

            (POWERPC.PRO [Sheppy], CAT36, TOP19, MSG:76/M530)


>>>>>   You could use a SHR character generator.  I've got one that's so 
"""""   amazingly fast it's sick :-)

      The Second Sight will be able to easily handle this sort of thing, 
too (it supports user-definable text fonts).  Whether the editor is
amenable to modification for this is another story. :)

   > Does anyone know of a way to handle this?  What should  the editor 
   > do if it doesn't handle the extended character set, and you try to 
   > edit a file that does?

      This is in general a tough issue.  Just make sure you use the same
character set as, say, Teach, and we can just pull up the files with
Teach when we run across them, regardless of the state of the text
editor.

 Jawaid

                (PROCYON.INC, CAT36, TOP19, MSG:77/M530)


<<<<<   Actually, I'd thought of using a SHR character set and faking the 
"""""   text screen.  It's the only solution I came up with that really 
fit all of the needs, but I am afraid there may be a big time hit.  Maybe
I'll give it a try, though.

Mike Westerfield

                 (BYTEWORKS, CAT36, TOP19, MSG:78/M530)


>>>>>   Let me show you some examples here.  The first is a routine from 
"""""   TelCom II that draws a character on the SHR screen (an 'A' in this 
case):

Char41    anop ; C81C
      lda #$0000
      sta SCREEN+1120,x
      lda #$3C3C
      sta SCREEN+480,x
      sta SCREEN+960,x
      sta SCREEN+800,x
      sta SCREEN+320,x
      sta SCREEN+160,x
      lda #$F00F
      sta SCREEN+0,x
      lda #$FC3F
      sta SCREEN+640,x
      plb
      rts

Now compare to code which puts a character on the text screen:

StorChar       START

                phy
                short a
                pha
                jsr CalcBankCH
                pla
                sta [BASL],y
                long a
                ply
                rts
                END

CalcBankCH     PRIVATE

                lda   #0                 ;TM 5/18/91
                xba                      ;----------
                lda CH
                cmp RightMar
                bcc Calc2
                beq Calc2
                lda RightMar
Calc2           lsr a
                tay               ; column number
                lda   #0          ; c = 1 if main mem, 0 if auxmem
                rol a
                eor #%00000001    ; not quite as fast as before, but hey...
                sta BASL+2
                rts

      In the big picture, the amount of time it takes to draw an SHR 
character is about the same it takes to draw a character to the text
screen, assuming random X & Y coordinates!

      Scrolling is more time-consuming, of course - but with the SHR 
character generator shown above you can redraw the entire screen very
quickly.

I'll even sell it to you real cheap, if you're interested.  :-)

 Jawaid

               (PROCYON.INC, CAT36, TOP19, MSG:80/M530)



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



                 >>>  Complete A2 University Courses  <<<
                 """"""""""""""""""""""""""""""""""""""""

File # 4369  A2U.ASM.GS.BXY  (GS)
Uploaded on 10/21/94 by A2PRO.GREG
About 219K (d/l time approx. 16 minutes @ 2400 baud)

      This archive includes the entire A2U course on beginning IIgs 
Assembly Language programming along with the course messages.


File # 4363  A2U.DATAC.BXY  (ALL)
Uploaded on 10/18/94 by A2PRO.GREG
About 736K (d/l time approx. 55 minutes @ 2400 baud)

      This archive includes all the lessons, text and discussions from the 
A2U course on 'Hacking and Data Compression'.  This is a very large file
and will need over a megabyte and a half of free space to unpack.


File # 4361  A2U.PASCAL.BXY  (GS)
Uploaded on 10/18/94 by A2PRO.GREG
About 274K (d/l time approx. 20 minutes @ 2400 baud)

      This archive includes all the lessons and text from the A2U 
course on Pascal programming for the Apple IIgs.


File # 4360  A2U.BWRDN.BXY  (ALL)
Uploaded on 10/18/94 by A2PRO.GREG
About 30K (d/l time approx. 3 minutes @ 2400 baud)

      This archive includes all the lessons and text from the A2U course 
on the use of Block Warden from Prosel and ProSel-16.


File # 4358  A2U.ASM.8.BXY  (ALL)
Uploaded on 10/17/94 by GREG.D
About 193K (d/l time approx. 15 minutes @ 2400 baud)

      This archive includes all of the lessons along with the archived 
bulletin board messages for the A2U course on 8-bit assembly language
programming.


File # 4357  A2U.CC.BXY  (ALL)
Uploaded on 10/17/94 by GREG.D
About 209K (d/l time approx. 14 minutes @ 2400 baud)

      This file includes all of the lessons along with the archived 
messages for the A2U course in 'C' programming.



                     >>>  Clay's Music Tool  <<<
                     """""""""""""""""""""""""""


File # 4354  CLAYS.MTOOL.BXY  V1.42  (GS)
Uploaded on 10/16/94 by C.JUNIEL
About 40K (d/l time approx. 4 minutes @ 2400 baud)

      Clays MTool version 1.42 plays SynthLAB and Music Composer music 
files.  It also plays HyperStudio and rSound files.  It no longer plays
Music Studio and Sound Smith files.  There is sample source code
included.


File # 4355  MUSIC.NBA.BXY  V2.71  (GS)
Uploaded on 10/16/94 by C.JUNIEL
About 17K (d/l time approx. 2 minutes @ 2400 baud)

      Version 2.71 of the New Button Action which allows one to use Clays 
MTool within HyperStudio to play music files.



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


File # 4370  USEFULTBLS.BXY  (ALL)
Uploaded on 10/21/94 by J.DAVIS179
About 66K (d/l time approx. 6 minutes @ 2400 baud)

Some useful tables in AppleWorks 3.0 & TextFile Formats.
Packed with ShrinkIt 3.4
Documentation is included in the file.
Charts/Tables by J.Davis179@genie.geis.com


File # 4351  AUTOMAKER.BXY  (ALL)
Uploaded on 10/14/94 by P.GREEN
About 21K (d/l time approx. 2 minutes @ 2400 baud)

      Make a Basic file into a SYStem file.  A single SYS file is a neat 
and clean way of presenting an application, and here is the means of
doing it with almost any BASIC Program.  The program was written by Dave
Ward of the British ][GS Club and was originally intended for use with
MicroDot Basic programs, but will work with many standard Basic
programs.  Released with the knowledge & permission of Kitchen Sink
Software Inc.  Packed with ShrinkIt v3.4.
  

                               [*][*][*]



[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]
