

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

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


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

                          ~ PROGRAMMER TURNS YETI! ~                   
                   ~ Menu Fun in 6.0.1 ~ Foundation Update ~
                  ~ Wordy Cursors ~ Beagile Compiler Blues ~
                     ~ HOT NEWS, HOT FILES, HOT MESSAGES ~
                        
////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
 GEnieLamp A2Pro   ~ A T/TalkNET OnLine Publication  ~  Vol.4, Issue 22
 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 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? <<<
          """""""""""""""""""""""""""""""""""""""""""""""""""""""
                            ~ December 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]        RTC WATCH ............... [RTC]
  HOT Files You Can Download.            Real Time Information.
  
                       LOG OFF ................. [PUB]
                        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 <<<
                          """""""""""""""""""""""

BURIED ALIVE IN SNOW?!?!   Well, Yours Truly has been buried in bug
""""""""""""""""""""""""   report after bug report, 'snowed in' 
(literally!) at work, and has had a flat-out Real Crazy Month (tm).

BUT, at long last, GEnieLamp A2Pro is here!  Things should be back to 
normal next month, but once again all I really have to say is...

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

                       o   MESSAGE SPOTLIGHT                             


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

 [*]  CAT3,   TOP5,  MSG{79}..........Using assembly from other languages
 [*]  CAT9,   TOP7,  MSG{163}................Applesoft BASIC help please!
 [*]  CAT13,  TOP2,  MSG{33}....................Where to find information
 [*]  CAT16,  TOP2,  MSG{202}...........................Programmer's Cafe
 [*]  CAT18,  TOP3,  MSG{27}.................................Stack Design
 [*]  CAT18,  TOP5,  MSG{3}...................Using XCMDs/XFCNs in stacks


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


FOUNDATION UPDATE   Well... it's been quite a while since Foundation 
"""""""""""""""""   was made freeware, and we're finally getting around 
to starting to organize some folks to work on updating the program.

We're looking for a few good -- great -- programmers!

      This is an unusual venture.  It's not a commercial project, and 
it's not intended to bring any profits to anyone.  All this project is is
an effort to update and revise Foundation.

      We also need one or more people to, eventually, write a new manual 
-- the original hasn't been sent to us yet, so we're probably going to
start from scratch.

      Anyone's welcome to join the effort, but we do ask two things: 
that you actually do work on the project in some manner, and that you
don't pass around partially-updated versions.  We're hoping to make the
upcoming freeware versions of Foundation cohesive and to avoid the
confusion that would arise if lots of incompatible and incomplete
versions were floating around.

      If you have suggestions for Foundation revisions, feel free to 
post them in the Foundation topic here in A2Pro.  However, keep in mind
that for the time being, no major changes are planned -- we just want to
get Foundation to compile under current versions of ORCA.

      Because the source for version 1.0.3, which was never completed, 
has not been made available (after months of waiting and numerous
requests for it), we've decided to forge ahead and start with version
1.0.4, which will be a minor revision of 1.0.2.

      So if you have C and/or assembly programming skills, or can write 
really well, and want to work on Foundation, please drop me an email
including information on what you'd like to work on.

      We're just starting to get the ball rolling, but things are 
finally pulling together!

 Eric Shepherd (Sheppy)
 [Team PPCPro]

             (POWERPC.PRO [Sheppy], CAT16, TOP2, MSG:202/M530)



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


                        
COMPILER MEETS COMPILER   Okay, idle question :
"""""""""""""""""""""""

      I read in a mailing from the Byte Works that the Modula-2 compiler 
itself was written in Modula-2.  How is that possible?

                                                                   Chris

P.S. Which languages did you mean by "ivory tower languages" in the same
     mailing? Certainly not Pascal! :)

                    (C.KLIMAS, CAT14, TOP4, MSG:30/M530)


<<<<<   Yes, ORCA/Modula-2 was written in Modula-2.  ORCA/M is written 
"""""   in ORCA/M.  ORCA/Pascal is written in ORCA/Pascal.  ORCA/C is 
written in... well, ORCA/Pascal.  I'm not crazy!  ;)

      In all cases with the high-level languages, some speed critical
subroutines were later translated to assembly language.  That's just for
speed, though.  I recently ported ORCA/C to MPW on the Mac, and in the
process, converted all of the assembly back to Pascal.  It works just
fine without the assembly; it's just a bit slower.

      When a language is written in itself, it's generally bootstrapped. 
ORCA/Pascal is a good example.  It started life as the P4 compiler, which
I compiled to p- code on an IBM PC.  I then wrote a p-code interpreter
which ran under ORCA/M on the 6502; that gave me a working version of
the compiler which could compile itself on either the IBM or Apple, and
the result (remember, it was p- code) could run on either machine, too. 
This compiler was used to develop the ISO compiler, which eventually got
a native code code generator for the 65816.

      Modula-2 was similar.  Peter started with Niclaus Wirth's compiler, 
which he licensed, and developed a 65816 code generator on another
machine.  (An IBM again, I think, but I'm not positive about that.) This
version of the compiler was compiled on a Modula-2 compiler on the IBM,
and the result moved to the GS.  Eventually, the bugs were worked out so
the compiler could compile itself on the GS.

Mike Westerfield

                    (BYTEWORKS, CAT14, TOP4, MSG:32/M530)



GIVING THE CURSOR SPACE   I just wanted to see what you guys know about 
"""""""""""""""""""""""   this.  In the process of disassembling QuickDraw 
II, I noticed that the cursor drawing routines seem to behave slightly
incorrectly, at least from what I've been able to understand.  I just
want to know if I'm misundstanding, or if this is a bug (in which case,
I can easily write a patch).

      When SetCursor is called to set the cursor shape, a buffer is 
allocated to save the screen contents covered by the cursor and also to
hold a series of pre-shifted copies of the cursor image and mask.  It
allocates enough space to hold the images with an extra word at the end
of each row, to hold any "carry over" when the image is pre-shifted. 
(In 640-mode, the image and mask rows are shifted a total of 14 bits, so
it's quite possible to overflow the original image row space.)

      However, when the pre-shifted shape is actually generated, the extra 
word is not used -- any pixel bits shifted off the right side of the row
are lost.  This is carried over to the cursor drawing and erasing
routines.

      This should result in cursors with the right sides of the images
disappearing at certain pixel positions.  I had never noticed this
myself, but the standard arrow (pointer) cursors have enough empty space
on the right side of the image and mask that even after shifting they
remain intact.  So I wanted to ask others, who might have played with
custom cursors on their systems, whether you had ever noticed any
oddities.  BTW, padding the image with an extra blank word on the right
will solve any such problems.

      Oh, I just checked the cursors that came with Cool Cursor and Anna 
Matrix from GS+, and it appears that Anna Matrix is adding that extra
blank word onto the image rows automatically.  For example, when the
program shows a cursor of 16 pixels wide (2 words), the actual file
holds a 3 word wide cursor image.  Was this done to work around the
problem?

      Anyway, I'd just like to know if this a known problem I've just 
never heard of before, if I am misunderstanding how the cursor routines
work, or if I have found something new.  Thanks.

 Mike

             (M.HACKETT [Michael], CAT15, TOP4, MSG:127/M530)


<<<<<   I fell victim to this 'bug' once myself.  It actually -is- 
"""""   documented, in small print (but with the description) in the 
cursors part of TBR II's QuickDraw II chapter.  (Specifically, 16-37, but
-only- on the record diagram itself - ACK!).

And, yes, cursor creation programs do auto-correct for this.

            (A2PRO.HELP [ Sloanie ], CAT15, TOP4, MSG:128/M530)


>>>>>   Speaking of cursors, I've found that unless blank space is left at 
"""""   the TOP of a cursor, the mask will get glitched in some pixel 
positions (resulting in white/ colored pixels on the cursor's top row).
This is really easy to reproduce with Genesys: make a new cursor, using
the most of the top row, and test it: you should get the extra junk.

-Greg Templeman, GS Product Manager/GS Software Engineer
 Softdisk Publishing
 
            (BARNABAS [G.Templeman], CAT15, TOP4, MSG:131/M530)



BEAGLE COMPILER DEBUGGING   I've got a problem with the Beagle Compiler, 
"""""""""""""""""""""""""   and I was hoping someone could help me out...   
My compiled program works fine most of the time, but every so often it
crashes for no reason at all, with a RETURN WITHOUT GOSUB ERROR AT
$C1F1.   Now, that's obviously a bogus error ($C1F1??), but is it the
Compiler's fault or mine?  I'm using version 3.2 of the Compiler, which
I THINK is the latest, but I'm not sure.  Anyone have any experience
here and can help me out?    (If worse comes to worse, I suppose I'll
just have to slap an ONERR GOTO statement in there and watch the smoke
pour out of the machine... :)

-Bret

             (B.VICTOR1 [> Slix <], CAT9, TOP10, MSG:25/M530)


<<<<<   Actually, it's probably a real program error.  It's been my 
"""""   experience that BB- compiled programs don't give "real" Applesoft 
line numbers in errors but list where the coding error is in the compiled
code.

      If you can duplicate the error at will, the easiest way for you to 
find this is to run the original uncompiled Applesoft program, to get a
"real" line number for the error.  Failing that, you'll have to put in
messages and stuff to tell you where you are in the program when it
happens.

TomZ

                  (T.ZUCHOWSKI, CAT9, TOP10, MSG:26/M530)


>>>>>   I do quite a bit of work with the Beagle Compiler.  I do find that 
"""""   on rare occasions it will indeed have a problem with gosubs 
especially the ON X GOSUB.  The ON X - 1 GOSUB often does not work.

      Whenever possible, I use IF THEN statements.  They're faster 
anyway with BC.  If that creates problems, I do any calculations outside
of the ON GOSUB.  This almost always cures any problems.

      On very rare occasions, I've inserted a bit of useless code just 
before the GOSUB such as VTAB 1.  That seems to cure the problem.

 >>> Now, that's obviously a bogus error ($C1F1??)

Two things:

   1)  Sometime the error returned in AppleSoft is different from that 
       returned using the compiler.  I always try to get my error to occur 
       in AppleSoft.  I trust it more and it will give me a line number.

   2)  Your BC disk program disk has a program called PRINT.LINES that 
       will translate that "bogus error" line number for you.  Consult your
       manual.  The very best way to find a possible bug is to find it in
       AppleSoft as TomZ suggest.

 >>> I'm using version 3.2 of the Compiler, which I THINK is the latest

      I'm 99% sure you're correct.  The first versions of BC was full of 
bugs.  They're almost all gone now.

 >>> watch the smoke pour out of the machine... :)

Sometimes I've wanted to use a sledge hammer!!!!

      Good Luck in finding the bug.  Sometimes I've just given up only to 
find it by accident a year later.

 >>>Barry B<<<

            (B.LUMPKIN [>>Barry B<<], CAT9, TOP10, MSG:27/M530)



CONVERTING S-C ASSEMBLER FILES   I bought a used TimeMaster II clock.  Now 
""""""""""""""""""""""""""""""   I'm trying to figure out how to fetch the 
time.  All the source code is in S-C assembler format (DOS 3.3 filetype
INT).  I found my S-C manual, but no disks.  ugh.  Is there a program that
will convert it to normal text file?

      I searched the libaries using S-C and I was given pretty much the 
entire old Apple Assembly Lines.

Any help or pointers would be greatly appricated.


               (A.PHELPS5 [A. Phelps], CAT2, TOP4, MSG:25/M530)


<<<<<   Yes, it is...  Check out the Apple Assembly Line topic in Category 
"""""   1, Topic 19 for file listings...

      Message 1 documents the existance of Shell commands for ORCA and 
Davex to do this, created by the people who converted Apple Assembly Line
to the electronic form we have in the library right now.  Whether
they're in the library or not I don't know...

Vol. 1 No. 2 (file #3329) contains a DOS 3.3 program to convert from S-C 
                          to TXT.

Vol. 8 No. 7 (file #3836) contains the ProDOS version.

      Please note that the files in the AAL magazine files are source code
listings and will need to be compiled (but you can probably get enough
of the file format from looking at them and write a Applesoft program to
do it).  The source files in the AAL files in the A2Pro library are all
in text format already, so it won't be a problem to load it into, say,
ORCA/M, and do some minor editing to compile it.

 Dave

                   (JUST.DAVE, CAT2, TOP4, MSG:29/M530)



MERLIN HUMOR   Due to a typo this evening, I just found something really 
""""""""""""   cool in Merlin, but completely pointless.

You can specify:             LDA   1,STACK

In fact you can even do:     LDA   1,SCHMUCK

And:                         LDA   1,STUPID

And... well, you get the idea.  I bet ORCA/M...  Nah, just kidding Mike!

Regards,
 Richard
                  (RICHARD.B [Richard], CAT3, TOP4, MSG:98/M530)



MENU ON, MENU OFF...   'elp!
""""""""""""""""""""

      I know that with either System 6.0 or 6.0.1 (was it earlier?), there 
is a new tool call for dealing with enabling / disabling edit menu items
(with a single toolcall, instead of having to track the front window and
enable / disable items individually)

      I've dug thru my docs, and I can't find it (of course if I wasn't 
trying to find it so I could use it, I'd have found it several times
over...)

      If anyone knows the call I'm refering to, please post what toolset 
it's in, and where it's documented.  (TBRV3, Sys 6.0 update, Sys 6.0.1
update)

 Thanks
 -Harold

               (H.HISLOP [CryptKeeper], CAT13, TOP2, MSG:59/M530)


<<<<<   I think you mean _MWSetUpEditMenu, which is on page 308 of 
"""""   _Programmer's Reference for System 6.0_.

...Sloanie

               (A2PRO.HELP [ Sloanie ], CAT13, TOP2, MSG:60/M530)


>>>>>   Yeah, right after I posted my question I ran into 
"""""   _MWSetUpEditMenu... figures, doesn't it. :/

      I also found that it doesn't touch the Undo item... or rather it 
does touch the Undo item in a very unpleasing way...  It enables it, but
never disables it! ICK!

      I had hoped to avoid _FrontWindow, _GetSysWFlag, _En(Dis)ableMItem,
but...  I can't.

Oh well... just another almost usefull toolcall...

      [Yes, I would have done things differently, including passing a flag 
word to indicate which edit menu items should be affected and how.  The
other thing I would have done... NOT mention it affecting the Close menu
item... as it doesn't do this properly (if at all... I haven't snooped
far yet)]

 -Harold

Well...

      The _MWSetUpEditMenu tool (System 6.0.1) is sorta nice (it 
eliminates the need to loop thru enabling / disabling the Copy, Cut,
Paste, Clear menu items) but it doesn't really treat the Undo and Close
menu items in a particularly sane manner...

      Here's a small & simple routine that handles these items in a 
reasonably sane manner.  (Merlin format, *'s changed to %'s to keep GEnie
from choking)

 %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
 % FixEd should be called once each time thru the event
 % loop.  It handles enabling / disabling the edit menu
 % items.  The Undo and Close items are also handled.
 %
 % This routine keeps the Close item disabled unless a
 % window is open.  Further it keeps the Undo item disabled
 % unless the frontmost window is a system window.
 %
 % Note that as of System 6.0 it became Ok to pass a nil
 % window pointer to GetSysWFlag, it's now guarenteed
 % to return false for this condition.
 %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
 FixEd     _MWSetUpEditMenu    ;fixup Copy, Cut, Paste, Clear
           phw  #$FA           ;Undo menu item ID
           phw                 ;space for GetSysWFlag
           phl                 ;space for FrontWindow
           _FrontWindow        ;get front window ptr
 %
           phw  #$FF           ;Close menu item ID
           lda  4,s            ;middle of window ptr
           beq  :no            ;no window is open
 %
           _EnableMItem        ;enable Close item
           bra  :wind          ;go take care of Undo
 %
 :no       _DisableMItem       ;disable Close item
 :wind     _GetSysWFlag        ;get front window type
           pla                 ;true = system window
           bne  :EnUn          ;enable Undo item
 %
           _DisableMItem       ;disable Undo item
           rts
 %
 :EnUn     _EnableMItem        ;enable Undo item
           rts
 %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

 -Harold

          (H.HISLOP [CryptKeeper], CAT13, TOP2, MSG:61/63/M530)



POP-UP XCMDS   I just started work on a new HCGS stack, and realized that 
""""""""""""   I really need a couple of pop-up menus to allow selections 
from a list of items.  Having a whole bunch of radio buttons is really
messy, and takes up more space than I can afford.

      I don't think HCGS includes pop-up menus anywhere, but I figured it 
might be possible through an XCMD.  Before I go to the trouble of trying
to figure it out, has anyone already written such an XCMD. 
Alternatively, does anyone have any other suggestions.

(Just so you know, I have written an XCMD before, but I'm not an expert
by any means.)

 Mike

                (M.HACKETT [Michael], CAT18, TOP5, MSG:3/M530)


<<<<<   Mike, good news!  Look in the Tools stack and you'll find that 
"""""   Apple DID in fact include a popUp Xcmd, I believe it's called 
AddPopUp.  Check the list of Xfcns and you'll find it.

Aren't you glad you checked A2Pro first?  B-)>

                (HANGTIME [Da Boss], CAT18, TOP5, MSG:4/M530)

 
 
                        >>> MESSAGE SPOTLIGHT <<<
                        """""""""""""""""""""""""
   
   
                                          
DUM TRICKS   Had to comment on a really neat usage of DUM and DEND in Merlin.
""""""""""

      With a two-iteration loop, conditional assembly, and DUM/DEND, you 
can make a global entry point into the middle of a routine that uses
local labels WITHOUT upsetting the scope of the local labels (i.e. a
local label will be available "across" the global entry point).  It is
somewhat tricky, but it can be really useful when you need to add
another entry point in a routine and don't want to recode it to use
global instead of local labels.

      How is this done?  Well, I'll give a little example here (I've 
used some LST controls to minimize the impact on the assembly listing):

 MainEntry nop
          bra   :local     ;Access local label ACROSS global label!

          lst off          ;Make things pretty
 ]pass    =     0          ;Set up to "skip" AltEntry!
          lup   2          ;Make two passes through this code
          do    ]pass      ;Do this on the SECOND pass:
 AltEntry                  ;Alternate entry point (note: no code here!)
          else             ;Do this on the FIRST pass:
          dum   *          ;Start dummy code at current PC
          fin

 :local   nop              ;Rest of routine goes here...
 :exit    rts

          do    ]pass      ;Do on the SECOND pass:
          lst   off        ;Make things pretty
          else             ;Do on the FIRST pass:
 * Note: "dummy" variables can go here
 *       (see subsequent discussion)
          dend             ;End of "dummy" pass
 ]pass    =     1          ;Starting the second pass
          lst   rtn        ;Fix the listing back the way it was
          fin              ;End of conditional-passes
          --^              ;Back to "lup" (next pass)

      That's all there is to it! Note that, since dummy statements can't 
be nested, you could only use this technique for one "invisible" entry
point.  However, there is a slight modification of this technique that
will work in that case: the code starting at the second "do ]pass" can
go right after any local labels that occur AFTER the AltEntry point
which need to be referenced BEFORE AltEntry (in this case, right after
:local, since it is the only local label referenced before AltEntry).
Any local labels that get referenced between AltEntry and the second "do
]pass" statement, but which actually reside AFTER the second "do ]pass",
can be included where I have noted in the code (just the label, example
:branchPt, on a line by itself).  This gives the assembler something to
reference on the first pass, while on the second pass it will see only
the actual location of the local label.

      Make sense, everybody? I think it's a neat technique (I came up with 
it to avoid rewriting a routine to use all global labels, anybody want to
bet whether I actually saved time the first time I used it? ;)

-Greg Templeman, GS Product Manager/GS Software Engineer
 Softdisk Publishing

                  (BARNABAS [G.Templeman], CAT3, TOP19, MSG:104/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 <<<
                     """"""""""""""""""""""""""""""""



MACGEN BUGS   I've been having some problems with the MacGen utility. 
"""""""""""   Relevant version numbers are:

 ORCA/M     2.0.3       MacGen     2.0.1
 ORCA/Shell 2.0.2       System Sw. 6.0.1

      It seems that not all character I/O is working with MacGen.  Here are 
some examples:

 ORCA>macgen
 MacGen 2.0.1

 File name:
 ORCA>

      Notice that I wasn't able to input a filename.  MacGen thinks I input
nothing and so drops back to the prompt.

 ORCA>macgen myprogram.src
 MacGen 2.0.1


 Output file name:
 ORCA>

Same as before!

 ORCA>macgen myprogram.src myprogram.mac
 MacGen 2.0.1


 Unresolved macros:

  <many blank lines>

 Macro file name:
 ORCA>

The macro names don't display, along with the earlier problem.

 ORCA>macgen myprogram.src myprogram.mac 13:ainclude:m=
 MacGen 2.0.1

 Processing
 Processing
 Processing
   <etc>
 Processing
 Processing

 Unresolved macros:

  <many blank lines>

 Macro file name:
 ORCA>

      Notice that the pathnames of the macro files being processed do not
display.  The other problems still persist.

      At the time I ran into this problem, it was on a weekend and I 
figured I wouldn't get a reply from you quickly.  So I spent a few hours
snooping around in MacGen's code.  I found so interesting things:

   o MacGen uses both the Text Tools and the .CONSOLE driver to display 
     text.

   o Only the .CONSOLE driver is used to get input from the user.

   o All the I/O that does not work uses the .CONSOLE driver.

   o This happens even if the system is shift-booted.

      What I ended up doing is writing a utility that loads MacGen, 
patches it to use the Text Tools instead of the .CONSOLE driver, and runs
it.  Everything works fine now, but it should have worked fine to start
with :/

I hope you have a bug fix in the works for this! Thanks :)

-- Brian Wells

                  (B.WELLS5 [Brian], CAT36, TOP9, MSG:117/M530)


<<<<<   The latest version of MacGen is a bit hosed, due to a partial  
"""""   conversion from the old I/O mechanism to the new.  (In other 
words, I really goofed.)  If you put everything on one line (as I always
do, and happened to do during testing), it will work fine.  Otherwise,
you might want to drop back to an older version.  I'll be working on this
as soon as I get a chance.

Mike Westerfield

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


>>>>>  > I also have that same MacGen Problem and would appreciate a fix.
"""""

      Done!  Look for file #4400, MACGENFIX.BXY to appear in the A2Pro 
library in the near future. :)

-- Brian Wells

                  (B.WELLS5 [Brian], CAT36, TOP9, MSG:120/M530)



MPW ORCA/C   It came up in another topic that I've done a translation of 
""""""""""   ORCA/C to MPW on the Mac.  It's the same language, the same 
libraries, but it runs under MPW using Apple's MPW IIGS tools
(specifically their linker).

      I gave some thought to releasing this as a commercial product, but 
decided in the end it wouldn't be worth the effort.  If I did release it,
the product would look like this:

  Price:  $150-$250
  Documentation:  3-ring binder with color inserts.

      You would need to supply MPW and any parts of MPW IIGS you need on 
your own.  Out of curiosity, how many people would be interested in
something like this?

Mike Westerfield

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



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



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


File #4401  GNOSNOOP2.BXY  (GS)
Uploaded on 11/12/94 by D.MITTON
About 15K (d/l time approx. 1 minute 30 seconds @ 2400 baud Ymodem)

      This is the newest GNO/ME Snooper CDA (V2.0) I found on the
Internet at 'grind'.


File #4377  RESLIN.BXY  V0.46  (GS)
Uploaded on 10/27/94 by RICHARD.B
About 73K (d/l time approx. 7 minutes @ 2400 baud Ymodem)

      Reads IIGS and Macintosh resource forks, allows viewing, editing, 
copying, minimal derezing and other manipulations. This version is a
minor bug fix.



                  >>>  Patches & Modifications  <<<
                  """""""""""""""""""""""""""""""""


File #4400  MACGENFIX.BXY  (GS)
Uploaded on 11/10/94 by B.WELLS5
About 5K (d/l time approx. 30 seconds @ 2400 baud Ymodem)

      This utility patches MacGen 2.0.1 so that it's display works 
properly and input of filenames work. More details can be found in the
included source code :)
[Editor's note:  DO NOT use this on any version of MacGen other than 2.0.1!]


File #4393  CHECKPLUS.BXY  (ALL)
Uploaded on 11/6/94 by S.ALFTER
About 3K (d/l time approx. 20 seconds @ 2400 baud Ymodem)
Number: 4393  Name: CHECKPLUS.BXY

      This is a diff file for 'CheckIt Plus,' a modified version of the
checksum-generation program that was published in every issue of Nibble
magazine after whatever time they began using CheckIt instead of Key
Perfect.  You'll need an unmodified copy of CheckIt punched in from any
issue of Nibble (copyright restrictions prevent the full program from
being uploaded here).  Once you have CheckIt loaded in, EXEC this file
to apply the diff.  (Make sure you SAVE the modified program back to
disk--preferably as CHECKIT.PLUS, but the name isn't too important.) 
The program works like regular CheckIt, but you'll get a list of all the
checksums in a program by entering (BASIC) CALL 768 or (Monitor) 300G.



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


File #4405  P8TOD.BXY  (ALL)
Uploaded on 11/13/94 by E.WAGNER10
About 11K (d/l time approx. 1 minute @ 2400 baud Ymodem)

      The purpose of this ProDOS 8 system program
(P8TOD.SYSTEM) is to display the ProDOS 8 Date and Time
in internal and human-readable formats.  In of itself,
this program is not really useful or practical.  However,
it demonstrates several techniques that may prove useful
to individuals that are [learning to] writing 6502 assembler
programs.  Many of the techniques used in this program have
been borrowed from other sources and are well documented in
the source code.


File #4402  FORTUNE.BXY  (GS)
Uploaded on 11/12/94 by D.MITTON
About 70K (d/l time approx. 7 minutes @ 2400 baud Ymodem)

      This is a shell utility which will display a 'fortune' each
time it is executed.  I find it great for my login shell.
It was ported from QNX and includes the ORCA/C source.
Enjoy!!!



                         >>>  HyperStudio  <<<
                         """""""""""""""""""""


File #4421  CLAYS.NBAS.SHK  (GS)
Uploaded on 11/18/94 by C.JUNIEL
About 30K (d/l time approx. 3 minutes @ 2400 baud Ymodem)

Here are four New Button Action (NBA)s which I wrote.  They are:
    Music Player
    Run Basic
    Show Text
    Set Sound



                               [*][*][*]


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



                     >>>  Understanding the Stack  <<<
                     """""""""""""""""""""""""""""""""


<N.QUINTERO>  I have a question about the stack
              I want to understand it more
              Do other languages as opposed to assembly use the stack?

<B.WELLS5>    Well, all programs use the stack, but assembly languages 
              uses it directly.  Pascal, C, etc.. don't manipulate the 
              stack directly.

<N.QUINTERO>  I understand that the stack is a temporary storage area that 
              uses LIFO

<B.WELLS5>    Right.

<N.QUINTERO>  I thought C is condsidered a middle level language and makes 
              use of the stack 

<T.BUCHHEIM>  all use the stack, but only in assembly do you directly push 
              and pull values on the stack

<N.QUINTERO>  doesn't C operate on the bit level Ex: bit fields

<B.WELLS5>    Yes, you can do bit-wise calculations, etc. But the stack is 
              used indirectly.

<N.QUINTERO>  Does the stack put bit cvalues in part of the processor?
              The analogy I read is that of bins or a postal l box

<B.WELLS5>    The stack is a part of the computer's memory set aside for 
              that purpose (not part of the processor). It is used to 
              store return addresses for subroutines and transfer data 
              between processor registers (A,X,Y, etc)...

<T.BUCHHEIM>  the best analogy is a stack of plates
              you can put a plate on the stack, or pull it off.
              when you run a subroutine, you push all the parameters 
              (plates) onto the stack when it returns, you pull results 
              off of it

<N.QUINTERO>  in in a sense it's optional

<B.WELLS5>    Well, the stack is need for the processor to call routines, 
              pass values, etc. Without it, programs would be severely 
              limited.

<T.BUCHHEIM>  processors without stacks would be extremely limited
              I don't know how the processor would store the return 
              address for subroutines

<N.QUINTERO>  it's like a queue for routines?

<T.BUCHHEIM>  the stack can be used for a lot of things
              the processor itself uses the stack to remeber where it was 
              when you call a subroutine

<N.QUINTERO>  could you give some examples ?

<T.BUCHHEIM>  sure..
              say you're calling a tool function..
              how about LGetPathName2 to find out your program's pathname..
              you push the parameters onto the stack
              so if you use the analogy of a stack of plates, the plates 
              on top hold the parameters

              then you call the routine..the processor stores the current
              address it is on the stack

              LGetPathName2 looks at the parameters you passed.  it 
              removes them from the stack and puts the plate with the 
              pathname there

              then when the computer returns from the subroutine, it looks 
              at the top plate to see what address to return to 
              (otherwise, how would it know where you called the 
              subroutine from?!) so it pulls that address off the stack 
              and jumps to it

              when it's back at your program, your program would pull the
              pathname off the stack

<N.QUINTERO>  Like a phone book?
              or address book?

<T.BUCHHEIM>  well, each byte of memory in the computer is numbered. so a
              number, say 197123, represents the part of memory where the
              program was when it called the subroutine

              when the subroutine ends, the computer sees the number 197123 
              on the stack

              so it returns to that address

<N.QUINTERO>  Where you left off

<T.BUCHHEIM>  yep!  and the stack is how it knows where you left off

<N.QUINTERO>  Thanks for clarifying this for me
              I thought some high level languages could access the stack, but
              only indirectly

<T.BUCHHEIM>  They do.  whenever you call a subroutine you're messing with 
              the stack :)
              
              For example, Applesoft BASIC uses a stack to keep track of 
              where you were in the program when you GOSUB a subroutine.  
              When it hits RETURN, it looks at the stack to see where it 
              was before the GOSUB

<N.QUINTERO>  Oh..I didn't realize this 

<B.WELLS5>    All the high-level languages use the stack without the 
              programmer ever knowing about it :)

<T.BUCHHEIM>  yep

<N.QUINTERO>  or in C when you're making function calls

<T.BUCHHEIM>  exactly

<B.WELLS5>    Right.

<N.QUINTERO>  I didn't know this
              Thanks 


                               [*][*][*]


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