Copy Link
Add to Bookmark
Report
GEnieLamp A2Pro - Vol.4, Issue 21
|||||| |||||| || || |||||| ||||||
|| || ||| || || ||
|| ||| |||| |||||| || |||| 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]