Copy Link
Add to Bookmark
Report
GEnieLamp A2Pro - Vol.5, Issue 31
|||||| |||||| || || |||||| ||||||
|| || ||| || || ||
|| ||| |||| |||||| || |||| Your
|| || || || ||| || ||
|||||| |||||| || || |||||| |||||| GEnieLamp Computing
|| |||||| || || |||||| RoundTable
|| || || ||| ||| || ||
|| |||||| |||||||| |||||| RESOURCE!
|| || || || || || ||
||||| || || || || ||
~ WELCOME TO GENIELAMP A2Pro! ~
"""""""""""""""""""""""""""
~ Condensing Text ~ SPOTLIGHT ON: Tim Buchheim ~
~ Text Windows in BASIC ~ Checking the Version ~
~ ORCA/Pascal Questions ~ ORCA Version Numbers ~
~ HOT NEWS, HOT FILES, HOT MESSAGES ~
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\////////////////////////////////////
GEnieLamp A2Pro ~ A T/TalkNET Publication ~ Vol.5, Issue 31
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
Publisher.................................................John F. Peters
Editor....................................................Tim Buchheim
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\////////////////////////////////////
~ GEnieLamp IBM ~ GEnieLamp Atari ~ GEnieLamp PowerPC ~
~ GEnieLamp A2Pro ~ GEnieLamp Macintosh ~ GEnieLamp TX2 ~
~ GEnieLamp Windows ~ GEnieLamp A2 ~ LiveWire (ASCII) ~
~ Member Of The Digital Publishing Association ~
GE Mail: GENIELAMP Internet: genielamp@genie.com
////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
>>> WHAT'S HAPPENING IN THE A2Pro ROUNDTABLE? <<<
"""""""""""""""""""""""""""""""""""""""""""""""""
~ October 1, 1995 ~
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)
_____________| _____|__ _|___ |____ |_____________
|Name of sender CATegory TOPic Msg. Page number|
In this example, to respond to Smith's message, log on to page
530 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, great
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, 2400 or 9600 baud.
2. Call (with modem) 1-800-638-8369.
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
"""""""""""""""""""""
by Tim Buchheim
[A2PRO.GELAMP]
o TOP OF THE PAGE
>>> TOP OF THE PAGE <<<
"""""""""""""""""""""""""
~ A Letter From the Editor ~
HAPPY BIRTHDAY TO ME.. AND GENIE! Today (October 1) I turn 18 :)
""""""""""""""""""""""""""""""""" This month (I'm unsure of the day, but
I think it's the 7th) GEnie celebrates its 10th anniversary! Yes, GEnie is
a decade old. It has been around longer than AOL, Prodigy, or MSN. :)
Looking back over GEnie's history, it's obvious that the world of online
services has changed drastically! When GEnie started, its only competition
was CompuServe. GEnie's rates started at $12/hour... and that was for
300 baud after 6:00 pm! $3/hour for 14,400 bps is much nicer, and a
$2/hour surcharge for Prime Time usage is certainly better than the $9 or
so it was a few months ago. (I don't even want to think about what it was
when GEnie started!:)
One of the original RoundTables on GEnie was A2. At that time, there was
no separate A2Pro, however. We programmers only got a few categories in
the A2 Bulletin Board.
I wasn't around at the time, but I've been told that A2Pro was created
because Apple II users in A2 were sick of reading what Apple II programmers
talked about.
When I first joined GEnie, GEnie*Basic services still existed.. those
areas were free during non-prime hours, and I remember hanging around those
RoundTables quite a bit :)
If the rates hadn't changed in June 1992, I might never have become so
involved in A2 and A2Pro... (Although my parents weren't real happy
the first few months, when my GEnie bill skyrocketed because I had not
yet adjusted to hourly rates. :)
GEnie has had its ups and downs since then, but the new reductions in
surcharges this year and the new features such as internet access and
Zmodem uploads have certainly outweighed any negative aspects of change.
-- Timothy Carl Buchheim
Editor, GEnieLamp A2Pro
[*][*][*]
Do you have something to say about GEnieLamp A2Pro? Please
post any questions or comments you may have in Category 1,
Topic 15 in A2Pro's BB (m530;1). Or, feel free to talk to me
(A2PRO.GELAMP) anytime you see me in a Real Time Conference.
Readers out there on the Internet: feel free to email me at
a2pro.gelamp@genie.com When writing, please tell me where
you got your copy of GEnieLamp, if it wasn't on GEnie. I'm
always interested to see how many places GEnieLamp ends up :)
By the way, the current issue and most back issues are
available online in many places. GEnie users should check
Library #2 in the DigiPub libraries (DIGIPUB, page 1395;3)
Those of you not on GEnie should use gopher software to
connect to gopher.genie.com for issues; all recent issues and
most older ones are there.
[*][*][*]
//////////////////////////////////// GEnie_QWIK_QUOTE ////
/ /
/ Never attribute to conspiracy what can be adequately /
/ explained by simple stupidity. /
/ /
///////////////////////////////////////// MITCHWAGNER ////
[EOA]
[DIR]//////////////////////////////
A2PRO ROUNDTABLE STAFF /
/////////////////////////////////
By Tim Buchheim
[A2PRO.GELAMP]
o A2Pro STAFF LIST
o SPOTLIGHT ON: Tim Buchheim
>>> A2Pro STAFF LIST <<<
""""""""""""""""""""""""
______________________________________________
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)
/__/ |__|________// / \/_/ Tim Buchheim (A2PRO.GELAMP)
>>> SPOTLIGHT ON: Tim Buchheim <<<
""""""""""""""""""""""""""""""""""""
AND THIS MONTH... This month we take a look at me, the editor of
""""""""""""""""" GEnieLamp A2Pro. I had hoped to have Sloanie
write about himself this month, but he's still busy getting used to
college life. And, since it's my birthday, I guess it's a good time for
me to look back over my first 18 years...
<Tim Buchheim> I guess I should start at second grade. Why?
'''''''''''''' Well, that was when I first started using computers.
Starting in second grade my class went to the school's computer lab once
a week to learn to type. I used "MicroType: The Wonderful World of Paws"
on an unenhanced Apple IIe. At the time I thought the 6 color hi-res
graphics were pretty cool. :) After we all learned to type fairly well, we
learned some simple LOGO programming. At the time, I didn't really
understand what I was doing that much.. we only used the simple drawing
commands, FD, LT, RT, etc. We never did any complicated programming, we
just moved the turtle around on the screen to draw pictures.
In third grade, we did some more typing practice, but mostly we used some
math programs, from companies like Sunburst and MECC. In fourth and
fifth grades, we used FrEdWriter. It wasn't until sixth grade that I began
programming again, this time in Applesoft BASIC.
During these years, I used the Apple IIgs a few times, because two of my
friends had them. So around sixth grade, I got one, as did two more of
my friends. (ours were ROM 3, though, which was nice. The other two had
ROM 01s.:)
To give you an idea of about when this was, my original system disk from
Apple has System 5.0.2 on it. Nope, I never had to suffer through those
ProDOS 16 years like so many of you ;)
In seventh grade, I took the only computer class offered at my school. We
used MicroType: The Wonderful World of Paws, FrEdWriter, and FrEdBase (a
database program which I haven't seen anywhere since) during the first
semester. In the second semester, we used LOGO and Applesoft.. this
time I learned some of the more powerul features of LOGO (although still
not that much) and did a lot with Applesoft.
I was getting Nibble magazine, so I did a lot of Applesoft
experimentation at home. (unfortunately, I have lost just about all
those programs I wrote.. I recovered a few off some aging 5.25" floppies a
few years ago, and uploaded them to GEnie, but none are worth the
download time or disk space :)
In eigth grade, I was a teacher's aid for the programming class. The
teacher had recognized the fact that I knew more about Apple IIs than she
did. I spent that class period correcting homework, writing programs,
improving my typing speed, fixing broken printers and disk drives, and
playing games on the brand new Mac Classics :)
In ninth grade I took a BASIC programming class, but at my high school we
had ancient 8088 machines with CGA monitors.. some didn't even have 640k of
memory.
This is where I learned to hate MS-DOS and Intel chips. :) oh, and
PowerBasic sucks, too.
At home I was learning to use ORCA/Pascal (v1.2, which I had gotten in
8th grade, I think, but hadn't used much). I didn't have any toolbox
manuals, except TBR3, so I wasn't able to do much. :)
In January of my freshman year I got a modem.. I signed up for GEnie a few
days later (it was the cheapest, and the Incider/A+ had just rated it the
best for Apple II support.)
In 10th grade, I got ORCA/M, and finally started learning some assembly.
I got my first job on GEnie as the assistant editor for GEnieLamp A2Pro.
I edited the library and RTC columns. As part of my job, I attended the
A2Pro RTC nearly every single night. That's when I really started
programming.
I picked up the GS Hardware ref and the GS/OS ref. I started to write some
fairly decent programs in Pascal. Around March or so I got my first
sysop position, as host of the Friday night RTC in A2Pro. [blatant plug
mode on] I still host that RTC.. come visit me between 9:30 and 11:00 pm
Eastern Time on Friday nights! [plug mode off]
I finally got TBR 1 and 2 at the end of the school year... and during the
summer I went to KansasFest '94.
During 11th grade, I didn't get much programming done, because I kept
spending more and more time on GEnie :) In January of this year, I took
over as editor of GEnieLamp A2Pro, because Nate Trost went on a five
month vacation to Europe :)
I also took on some more responsibility in A2Pro, although my exact
position isn't clearly defined, except for that same Friday night RTC.
This summer I went to KansasFest '95 (see the August issue for the complete
story!) which wasn't quite as fun as KansasFest '94, but was still pretty
cool. :)
Now I'm a senior in high school, taking AP Computer Science, which is
much too easy for me, but it's the most difficult class they offer. It
is forcing me to learn ISO Standard Pascal, though. You really
appreciate ORCA/Pascal after you try to write something which meets the ISO
standard! Try putting a {$ISO+} directive at the start of a program and
count how many "Not ISO standard" errors you get! :)
Today (October 1) is my 18th birthday.. pretty cool, I think. :)
[EOA]
[HEY]//////////////////////////////
HEY MISTER POSTMAN /
/////////////////////////////////
Is That A Letter For Me?
""""""""""""""""""""""""
By Tim Buchheim
[A2PRO.GELAMP]
o BULLETIN BOARD HOT SPOTS
o PROGRAMMER'S TIPS
o MESSAGE SPOTLIGHT
>>> BULLETIN BOARD HOT SPOTS <<<
""""""""""""""""""""""""""""""""
~ Where All the Action Is! ~
[*] CAT 3, TOP 4, MSG {108}....The Merlin 16+ Assembler
[*] CAT 8, TOP 18, MSG {4}......ProDOS FST
[*] CAT 9, TOP 7, MSG {206}....Applesoft BASIC help please!
[*] CAT 13, TOP 4, MSG {128}....Looking for...
[*] CAT 15, TOP 3, MSG {46}.....Miscellaneous Tool Set
[*] CAT 15, TOP 4, MSG {144}....QuickDraw II
[*] CAT 15, TOP 34, MSG {78}.....Text Edit Tool Set
[*] CAT 20, TOP 17, MSG {74}.....General Apple IIgs questions
>>> PROGRAMMERS' TIPS <<<
"""""""""""""""""""""""""
~ Helpful Advice from the Experts ~
ZERO PAGE LABELS Now, as soon as you guys quit reading this question, the
"""""""""""""""" first thing you're going to say is RTFM... I've read the
friendly manual <g> and it's not making sense to me.
I'm using Merlin 16+ v4.08. My serial # is 16001.
So I'm writing a program in assembly, and I decide that I need a 1 byte
puka to hold some value, maybe inc it at some time. The way I can do it, is
to look at my zero page chart and pick out a free spot, and refer to it
by memory byte number directly. I don't like this.
I'd rather say "Assembler, grab me a byte of memory... call it puka1",
and be able to refer to that label without knowing or caring where it
actually is located. Be able to lda puka1, and dec puka1, etc...
Now I've read the book on labels, and define byte, I need some
clarification. Sorry for ranting.
(C.OREM, CAT3, TOP4, MSG:108/M530)
>>>>> Chuck O,
"""""
>> So I'm writing a program in assembly, and I decide that I need a 1 byte
>> puka to hold some value, maybe inc it at some time. The way I can do it,
>> is to look at my zero page chart and pick out a free spot, and refer to
>> it by memory byte number directly. I don't like this.
Sample Merlin-16+ v4.08 Source...
*
* My normal start of source...
*
case se ;all my source uses case sensitive labels
tr on ;truncate generated bytes
tr adr ;truncate addresses
xc ;enable 65C02 mode
xc ;enable 65C816 mode
mx %00 ;16 bit A,X,Y
rel ;this will be OMF code in the end
typ S16 ;an S16 application
*
* Direct Page layout...
*
dum $0000 ;start a dummy section
Pucka1 ds 2,0 ;this will be a word variable
Pucka2 ds 1,0 ;this will be a byte variable
Pucka3 ds 1,0 ;this will be another byte variable
dend ;end the dummy section
*
* Here resideth some code...
*
phk ;stack my code bank
plb ;use as my data bank
*
jsr GetDP ;call subroutine that gets my direct page
bcs Fatal ;Oooops...
tcd ;now have my direct page set up
*
stz Pucka1 ;zero out Pucka1
stz Pucka2 ;zero out Pucka2 and Pucka3
*
inc Pucka1 ;bump the first variable
sep $30 ;8 bit A,X,Y here
lda #'A' ;something for the acc
ldy #'B' ;and something for Y also
sta Pucka2 ;setup Pucka2
sty Pucka3 ;and Pucka3
rep $30 ;back to 16 bit A,X,Y
*
* yada yada yada
*
Another approach would be to place a bunch of DS's at some place in your
program (typically at the end) and use these (instead of eating up valuable
bank zero space). Preferable, unless you're trying to keep close tabs on
the cycle counts.
Does that cover your question?
-Harold
(HAROLD.H, CAT3, TOP4, MSG:109/M530)
>>>>> >So I'm writing a program in assembly, and I decide that I need a 1
""""" >byte puka to hold some value, maybe inc it at some time. The way I
>can do it, is to look at my zero page chart and pick out a free
>spot, and refer to it by memory byte number directly. I don't like
>this.
>I'd rather say "Assembler, grab me a byte of memory... call it
>"puka1", and >be able to refer to that label without knowing or
>caring where it actually is located. Be able to lda puka1, and dec
>puka1, etc...
Try:
puka1 = $18 ;Any number between 0 and $FF
Don't forget to set the computer to one byte mode if that is all you want
to inc.
Clay
Warning! Opinions will change due to new facts.
Clayburn W. Juniel, III - Effective Software Solutions
clay1@primenet.com
(C.JUNIEL, CAT3, TOP4, MSG:110/M530)
>>>>> >So I'm writing a program in assembly, and I decide that I need a 1
""""" >byte puka to hold some value, maybe inc it at some time. The way I
>can do it, is to look at my zero page chart and pick out a free
>spot, and refer to it by memory byte number directly. I don't like
>this.
If you don't need the value to be a zero page location and you aren't being
memory concious, you can do what I so often do. I place little storage
areas all over my programs when I need a quick place to stash some data.
For example: (in 8-bit mode)
Start lda $c000 ; get keypress
bne :none ; none there
sta :puka1 ; hold it
; blah blah blah ; do something that destroys the accum here
inc :puka1
dec :puka1
lda :puka1 ; get back that keypress
rts ; return
:puka1 ds 1 ; holds one byte
Of course you could set up a temporary data storage in your program to look
something like this: (if you're concerned about saving space)
puka1 ds 1 ; temp storage area(s)
puka2 ds 1
puka3 ds 3
Then reference these locations as needed.
Harold's example is a good one if you need a zero page location.
(R.NIELSON1, CAT3, TOP4, MSG:111/M530)
<<<<< Gentlemen,
"""""
Thank you for the help. I'm now going to try and digest this, so I can
ask more intelligent questions later.
Thanks again,
Chuck
(C.OREM, CAT3, TOP4, MSG:112/M530)
TEXT WINDOWS IN BASIC I'm having trouble getting some display windows to
""""""""""""""""""""" work the way I want and I'm wondering what I'm
doing wrong.
My intention is to have a data entry line (Vertical line 19, for example)
and after the data is entered, that the entry moves up to a Display area
(lines 8 to 11, for example) which will display the just entered data line,
while the cursor moves back to the Entry area for a new input line. The
subsequent data lines will also be displayed in the Display area with the
newest lines forcing the oldest out the top of the Display area window.
I've tried the following lines:
50 V = 9: VV = 19
100 POKE 34,8 : POKE 35,11 REM: DISPLAY WINDOW
120 FOR Y = 1 TO 5
130 VTAB (VV): HTAB 1: INPUT "";A$ : REM Get Data in Data Entry Line
140 B$ = A$
150 VTAB (V): HTAB 1: PRINT B$; : REM Print data in Display Area
160 V = V + 1
170 NEXT Y
This code does display the data in the general display area, but I
sometimes get double-spacing between entries, and the data just continues
beyond the bottom of the Display window I've set.
Any ideas on what I'm doing wrong ? I haven't done any setting up of text
window areas before, but I want to use this approach now.
Thanks.
Stan Sztaba
(S.SZTABA, CAT9, TOP7, MSG:206/M530)
>>>>> Your "window" code has two problems: first, the INPUT line is below
""""" the bottom window. The Monitor sees this as print below the bottom
of the window and scrolls the window up at each INPUT, giving you the
double-spacing. Second, once variable V exceeds the window bottom, it will
print B$ below the window and won't scroll right. Try these fixes to the
code you listed in msg 206:
125 POKE 35,24
145 POKE 35,11
165 IF V > 11 THEN V = 11
TomZ
(A2.TOMZ, CAT9, TOP7, MSG:207/M530)
>>>>> Stan,
"""""
What Tom posted was correct, although there is a problem with the display
window not scrolling when displaying the last line. To ensure that the
display window scrolls properly when displaying lines at the last line in
the window, some tricks are needed. You may want to try this code:
10 TEXT : HOME
20 VT = 8: REM Display Window Top
30 VB = 11: REM Display Window Bottom
40 IL = 19: REM Input Line
50 V = VT: REM Starting Display Line
55 L$ = "----------------------------------------": REM 40 dashes
60 VTAB VT - 1: HTAB 1: PRINT L$
61 VTAB VT - 1: HTAB 12: PRINT " Display Window ";
62 VTAB VB + 1: HTAB 1: PRINT L$
90 V = V - 1: REM Adjust down for later
100 POKE 34,VT - 1: POKE 35,VB
120 FOR Y = 1 TO 8: REM Number of entry lines
125 POKE 35,24: REM Drop bottom window for input
130 VTAB IL: HTAB 1: INPUT "";A$: REM Get data entry line
140 B$ = A$
145 POKE 35,VB: REM Set it back to bottom of display window
150 V = V + 1
155 IF V > VB THEN V = VB: VTAB V: HTAB 1: PRINT : REM Scroll
160 VTAB V: HTAB 1: PRINT B$;
165 IF V > VB THEN V = VB
170 NEXT Y
180 VTAB 20: POKE 34,0: POKE 35,24: REM Full screen again
190 END
I have done a lot of text window managing via Applesoft. I have quite a
few programs that have a display area of the screen where output from a CAT
command will go while the user remains at a data entry line, just like you
are trying to do.
If you don't feel like typing in this whole program there is a neat trick
that you can do that I always use.
1. Save the text program above to a file named SCROLL.EXEC onto a disk
that has ProDOS and BASIC.SYSTEM.
2. Boot the disk and you'll be in BASIC.SYSTEM at the "]" prompt.
3. Type NEW to clear the memory. (Even though it is empty)
4. Type EXEC SCROLL.EXEC. This will take the SCROLL.EXEC text file and
process it as if you are typing it in.
5. Now save the program SAVE SCROLL.
6. Do a LIST and you will see the program in memory.
If you ever want to generate a text listing from an Applesoft program you
can do it easily. This is what I did to get my program listed here.
1. Load the Applesoft program into memory. (i.e. LOAD PROGRAM)
2. Add this line to the end of the program:
63333 D$=CHR$(4): F$="PROGRAM.TXT": PRINT D$"OPEN"F$:PRINT D$"WRITE"
F$: LIST - 63332: PRINT D$"CLOSE
3. Now type GOTO 63333 and the PROGRAM.TXT file will be generated. Now
you can use this file anyway you want, like posting it to the BB. :)
- Russ
(R.NIELSON1, CAT9, TOP7, MSG:208/M530)
CONDENSING TEXT Y'know how if Finder or Standard File doesn't have enough
""""""""""""""" room to fit some text into a space, it will use that
condensed-kinda font? What is that, and how can I use that font when I
need it?
Thank ya,
Bret
(B.VICTOR1, CAT15, TOP4, MSG:144/M530)
>>>>> Bret: that font is Shaston 8 with CharExtra set to -1, if I'm not
""""" mistaken.
Sheppy
[Team PPCPro]
(SHEPPY, CAT15, TOP4, MSG:145/M530)
>>>>> That's right - Shaston 8 with CharExtra set to -1. The toolbox
""""" call DrawStringWidth will draw a string in an alloted space, and if
the space isn't enough, it'll first set CharExtra to -1 (to scrunch the
characters together) and then if that's still not enough space, it'll
truncate the string at a place of your choosing (beginning, middle, or end)
and insert an ellipsis (those three ... dots) where the truncation took
place. It's a great tool call.
(WANKERL, CAT15, TOP4, MSG:146/M530)
>>>>> Note that DrawStringWidth is only present in System 6.0.1. (And is
""""" by far the most useful of the new QuickDraw II Auxillary calls.:)
It's on page 19 of the 6.0.1 docs.
(A2PRO.GELAMP, CAT15, TOP4, MSG:147/M530)
<<<<< DrawStringWidth -- right on! Thanks, guys!
"""""
-Bret
(B.VICTOR1, CAT15, TOP4, MSG:148/M530)
TEXTEDIT TROUBLES I'm having trouble using the Text Edit control and
""""""""""""""""" could use some advice. Basically, I'm reading a file
and then placing the characters it contains in to a previously reserved
area of memory. This area is then used when I create the Text Edit control.
During this process the colors of the characters are changed depending on
certain characteristics of the original file. This is done by using an
embedded change as per LETextBox2. The only change is to the foreground
color. No other changes to text style are made.
Everything works until there are more than approximately 1024 ($400)
changes in color. When this happens, the computer freezes and requires a
reboot. I have stepped through the code using GSBug and the problem occurs
when the control is created. The systems does not return any error code,
it just sits there.
It is possible to check for the number of color changes and stop the
process before the "Magic number" is reached, but I would appreciate a more
elegant solution.
Thanks,
Bob
(R.HEWITT5, CAT15, TOP34, MSG:78/M530)
>>>>> I seem to remember that the LETextBox2 kind of style changes
""""" doesn't work very well... but that might be in exporting text, not
importing. Fuzzy memory here. :-) My advice is to try using a different
style type instead of LETextBox2. I've also run into problems with
TESetText not working when there are a lot of style changes, but TEInsert
works fine. So, option number two would be to create an empty control and
then use TEInsert to shove the text/styles in there.
(WANKERL, CAT15, TOP24, MSG:79/M530)
<<<<< Thanks for your suggestion of using TEInsert instead of TESetText.
""""" Unfortunately it didn't help.
> Everything works until there are more than approximately
> 1024 ($400) changes in color. When this happens, the
> computer freezes and requires a reboot.
When I started this project, I was under the impression that I knew a
little about the TextEdit tool set. After trying your suggestion (and a
few other things) I have confirmed that I know less than I thought. I
must have something seriously wrong with the way I'm setting things up.
Even without the style changes, things don't act the way the manual
describes. I'm going to have to go back and double check what I've done
wrong.
Bob
(R.HEWITT5, CAT15, TOP34, MSG:80/M530)
>>>>> I didn't see the original post on this, but TextEdit really weirds
""""" out when you have lots of style changes -- especially if your
source text is in rTextForLETextBox2 format.
Sheppy
[Team PPCPro]
(SHEPPY, CAT15, TOP34, MSG:81/M530)
>>>>> yeah, TextEdit seems to have quite a few bugs crawling around in
""""" it..
(A2PRO.GELAMP, CAT15, TOP34, MSG:82/M530)
NDAS WITHOUT AN APPLE MENU? Hi Everybody!
"""""""""""""""""""""""""""
I'm sorta new to the IIgs programming world, so here goes...
I'm working on a rudimentary 'KidDesk' type project for the IIgs to keep my
kids out of the Finder -- where they're extremely interested in the trash
can... :)
It's fairly straightforward as a program launcher, but my question is this:
Is there a way to open desk accessories without having to choose them from
the Apple menu? Sort of like clicking on the calculator opens the
Calculator DA, notepad opens a NotePad DA, etc...
I'm using ORCA/C, Genesys & a lot of code from M.Westerfield's ToolBox/C
series. Also, this is my first 'real' project outside of the series.
Can anyone point me in the right direction? I have all toolbox
references (thru 6.0.1) plus tech notes, etc...
Thanks!
-- Tom Bradshaw
(T.BRADSHAW4, CAT20, TOP17, MSG:74/M530)
>>>>> Well, to open an NDA, call _OpenNDA (page 5-20 of Toolbox Reference
""""" Volume 1) with the NDA's ID number. (The ID number is the menu ID
assigned to the NDA when you use _FixAppleMenu to add NDAs to the Apple
menu)
I'm not sure how you'd know which ID number to use. (Unless maybe you used
_FixAppleMenu to add the NDAs to a menu, then parsed the menu record.. if
you really feel like doing that.. :)
I'd just keep it simple and stick with the menu :)
(A2PRO.GELAMP, CAT20, TOP17, MSG:76/M530)
>>>>> I wrote a program called Quick DA that does just that. It'll open
""""" a NDA, CDA, or CDev for you without you having to choose it from
whatever place it is. :-) It has two access methods - the first is you
hit a control-key-on-the-keypad key (or control-function-key) and it'll
magically open a DA you have assigned. The other method is via the
_SendRequest tool call... so you can request Quick DA to open a new desk
accessory named "EGOed" and poof, there it is. You can probably tie the
_SendRequest method into any of your program quite easily. I've even
written an XCMD for Spectrum that lets you script spectrum into opening a
DA for you, too. It's cool. :-)
(WANKERL, CAT20, TOP17, MSG:77/M530)
>>>>> Tom,
""""" You may be able to avoid a lot of work if you merely hide the
Trash can. There may be a utility by Snakebyte or someone else that does
this. Also, Brendan Bellina wrote "No Worries" a Hypercard stack that
allows easy launching of programs, calling an NDA, and really provides a
LOT of security. Very much like the Mac program "At Ease". You could
easily extract the scripts to learn how to launch various programs and NDAs
with Simple Hypertalk commands. There is also an Init called DCP that will
disable the text control panel for you, so they can't muck with your
settings. Of course, you should deactivate the CDEV control panels for
maximum security. In Hypercard, the command for opening NDAs is this:
On mouseup
domenu "calculator"
end mouseup
And bingo, the calculator NDA opens! You can also perform any menu
selection in this manner, such as domenu "quit" or whatever.
Brian Gillespie, Jaunt! Software
(B.GILLESPIE3, CAT20, TOP17, MSG:86/M530)
<<<<< To Tim Buchheim,
"""""
> Well, to open an NDA, call _OpenNDA...id number...
(Slapping my forehead)...You're right! About the ID numbers though, that
seems pretty messy. Although, it appears to be the same order that the
NDAs are loaded in.
To WANKERL [Joe],
> I wrote a program called Quick DA...
I never thought of that. I check it out in my back issues of GS+. I
also want to incorporate some list managing routines based on your
'Things to Do' NDA (like picking different desktops based on each kid).
Time to wade thru some more source code...
To Brian [B.GILLESPIE3],
> ...hide the trash can... ..."No Worries" Hypercard stack... etc..
Thanks for these wonderful suggestions. Again, the whole purpose of this
project is to get more experience in GS programming. If I get too
frustrated, I'll look into these as stopgap measures. :)
--Tom
(T.BRADSHAW4, CAT20, TOP17, MSG:87/M530)
CHECKING THE VERSION Okay guys, one more question... :)
""""""""""""""""""""
What's the best way for my Finder Extention to check if it's running under
system 6.0.1? (And come to think of it... what's the best way to get
itself out of memory if it isn't?)
Thankie,
Bret
(B.VICTOR1, CAT20, TOP17, MSG:78/M530)
>>>>> Bret,
""""" To see if the user is using System 6.0.1, call _QDVersion and see
if it returns $0308. (If you check page 17 of the 6.0.1 reference, you'll
see that the ONLY change in version 3.8 of QuickDraw II was the version
number change. To quote the 6.0.1 ref, "QDVersion is a standard reference
for distinguishing system versions, so it had to change." :)
(A2PRO.GELAMP, CAT20, TOP17, MSG:79/M530)
>>>>> I prefer to call VersionGS and see if the returned value is $0402
""""" (GS/OS 4.02, which is what ships with System 6.0.1).
Sheppy
[Team PPCPro]
(SHEPPY, CAT20, TOP17, MSG:80/M530)
>>>>> Sheppy,
""""" yep, that works too :)
I'm not sure why Apple always mentions using _QDVersion to check for what
system software you're using, but they mention it in several places.
Here's another one: "Assuming a correct installation, requiring QuickDraw
3.7 in effect requires System Software 6.0" (Apple IIgs Technical Note #100,
June 1992 update)
of course, that is "assuming a correct installation," which might be a
bit much to ask.. QD 3.8 would be perfectly happy running in 6.0, so I
guess some twisted individual might put QD 3.8 on his 6.0 system..
GS/OS 4.02 wouldn't work w/o the current versions of certain toolsets, so
VersionGS is probably more dependable..
(A2PRO.GELAMP, CAT20, TOP17, MSG:81/M530)
>>>>> Actually, what I do is load the system's rVersion resource and
""""" check that for 6.0.1. Seems logical to me.
Regards,
Richard
(RICHARD.B, CAT20, TOP17, MSG:82/M530)
>>>>> Richard,
""""" yes, that works. takes longer, too. :)
(A2PRO.GELAMP, CAT20, TOP17, MSG:83/M530)
>>>>> I just check the QuickDraw version. Apple does it that way. So I
""""" do, too. If someone installs noncompatible versions of things,
then they deserve to get bit. :-)
(WANKERL, CAT20, TOP17, MSG:84/M530)
>>>>> >If someone installs noncompatible versions of things, then they
""""" >deserve to get bit. :-)
right. Anyone who doesn't know what he's doing should use Apple's
Installer. That's what it's for. Anyone who does know what he's doing
should know not to put System 6.0.1's TS2/TS3 file (I think that's where QD
currently resides) on a System 6.0 disk :)
(A2PRO.GELAMP, CAT20, TOP17, MSG:85/M530)
>>> MESSAGE SPOTLIGHT <<<
"""""""""""""""""""""""""
~ Important or Interesting Messages ~
A PRODOS FST ODDITY Why is it that when you Open a ProDOS volume
""""""""""""""""""" directory, the modDateTime field is zeroed, but when
you do GetFileInfo, it's filled in? (This is using System 6.0.1.)
(S.REEVES2, CAT8, TOP18, MSG:4/M530)
BRAM DOCUMENTATION ERRORS Ok, I've been thru all my docs, with no luck,
""""""""""""""""""""""""" so here's a chance for everyone else to check
as well :)
I have discovered that the listing in TBRV1 for the various BRAM
locations is filled with errors, especially when dealing with BRAM from a
ROM_03 machine (two examples, what location REALLY gets changed when you
change the mouse resolution / scaling, or when you change the DoubleClick
time (the docs are seriously wrong on these)) There are numerous other
locations incorrectly documented... (many are only off by one or two
locs, but that's enough to cause serious grief)
The locations that are covered in the System 6.0 and System 6.0.1
refrence updates however appear to be correct for both ROM_01 and ROM_03
machines, Thank You Mike, Nice Job :)
Anyway, does anyone know where I can find a =correct= listing for BRAM
locations $00 thru $51 (or higher if you have the info) besides plugging
away with CDevs and inspecting BRAM to see what changed each time?
Does anyone know what any of the "reserved" / undocumented locations are
used for? (location $81, which Apple simply noted as an "Operating System
Variable", is the size of the GS/OS disk cache :)
(no, I'm not writing something to permit illicit BRAM tweaking, this info
would only be used for informational display at boot time should
something in bram not match up with what had been previously saved to a
file on disk)
-Harold
(HAROLD.H, CAT13, TOP4, MSG:128/M530)
THE TROUBLE WITH _ALERTMESSAGE It's been awhile since I've been in this
"""""""""""""""""""""""""""""" topic (time wise that is) but....
I'mmmm Baaaaaaaaaaaack! :)
Some nasties exist in the _AlertMessage call....
First the good news:
1) Under System 6.0.1 the Miscellaneous Toolset version is $0303
(could not find this in the 6.0.1 docs)
2) The disk based patches to the Miscellaneous toolset which update it to
v3.03 are automatically loaded by the system early during the boot
process, so there's no need to place a _LoadOneTool call to ensure its
availability. (it's loaded by the time TIF's and PIF's are loaded)
Now the bad...
1) The strings passed to _AlertMessage are supposed to be in _AlertWindow
format, this means that the IconSpec must be present even if the string
will be displayed on the text screen (icon info is supposed to be
ignored). Passing a value of $30 (for "display no icon") should be
legal, and infact is fine if the alert will be displayed on the SHR
screen. But if it gets displayed on the text screen some very ugly
things happen (including nasty display of the alert, trashed memory,
crashing, whole bunch of uglyness...) Specifying an icon to be used
clears this up. (haven't tested yet with a custom icon)
2) No length limit is specified for the text used for the button name
strings, but if one uses strings too long (and they get displayed on the
text screen) more nastiness as described above occurs... (not sure what
the max safe char count is yet)
3) Regardless of the value passed for standard sized windows, the one that
is used on the text screen is always the same size (and it's always on
the 40 column screen, regardless of the control panel settings... ick!)
I'm working on a small init that uses the _AlertMessage call to handle some
user interaction, so I'll be wading thru all the problems with this call,
and noting them here. This msg is just some preliminary findings.
-Harold
(HAROLD.H, CAT15, TOP3, MSG:46/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 urges you to give the bulletin board area a try.
There are literally thousands of messages posted from people
like you from around the world.
[*][*][*]
[EOA]
[DEV]//////////////////////////////
DEVELOPER'S CORNER /
/////////////////////////////////
News From The A2Pro Online Developers
"""""""""""""""""""""""""""""""""""""
By Tim Buchheim
[A2PRO.GELAMP]
o ONLINE SUPPORT IN A2Pro
o ORCA VERSION NUMBERS
o ORCA/PASCAL QUESTIONS
o KEEP YOUR COMPILERS UPDATED
o PRIZM PRINTING PROBLEMS
>>> 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.
>>> ORCA VERSION NUMBERS <<<
""""""""""""""""""""""""""""""
SO WHICH ONE IS IT? What is the latest version of ORCA/M? My update disk
""""""""""""""""""" says 2.0.3, but after installing it, the shell comes
up and says it is 2.0.2. Which is it really?
Joat
(A2.TIM, CAT36, TOP9, MSG:205/M530)
>>>>> The latest version of ORCA/M is 2.0.4. Keep in mind that ORCA is a
""""" big system, and each executable file has its own independent
version number. The latest version of the shell, which is what you saw the
version for, is 2.0.3. The version number we list is the _disk_ version,
which is contained in the Login file and printed when you boot from the
original disk or from a full installation.
Mike Westerfield
(BYTEWORKS, CAT36, TOP9, MSG:206/M530)
>>> ORCA/PASCAL QUESTIONS <<<
"""""""""""""""""""""""""""""""
SOME QUESTIONS I was just wondering if one of you Pascal-heads could
"""""""""""""" answer a couple of quick questions for me about
ORCA/Pascal. I'm just not familiar enough with the product to be sure what
I think is right.
First, are there unsigned numbers in O/P, or are all numbers signed?
Second, I'm under the impression that it is much easier for a C function to
call a Pascal function that is the reverse. Looking at the calling
conventions, the Pascal caller would have to reverse the order of the
arguments, and the C function to be called would have to be named with
all its letters in uppercase. Whereas, to call a Pascal function from C,
you just stick the "pascal" qualifier in the function declaration. Is this
correct?
Thanks,
Mike
(M.HACKETT, CAT36, TOP10, MSG:362/M530)
>>>>> From a technical standpoint, the Pascal language does not have (or
""""" need) unsigned numbers. Of course, knowing all of the numbers
are unsigned allows the code generator to create more efficient code,
especially for compares. Unlike C, Pascal is a strongly typed and
syntactically consistent language. As a result, in ORCA/Pascal, I was able
to easily implement unsigned operations. Any time all of the arguments are
declared as a subrange of positive values, ORCA/Pascal automatically shifts
to unsigned operations. The gutsy details are a bit involved; I'll refer
you to the manual for them. The bottom line is that it's useful to declare
this type in your ORCA/Pascal programs:
type
unsigned: 0..maxint;
Note that I did not extend the Pascal language to make this work. The
programs you create using this convention will work on _any_ Pascal
compiler. They will just work _better_ in ORCA/Pascal!
As for whether it is easier to call C from Pascal or Pascal from C, the
real answer is that it's just as easy either way. In both cases, you
need to declare the C side with the pascal qualifier. Why? Because C uses
parameter passing conventions that are different from any other language.
From a historical and portability standpoint, keep in mind that some C
compilers use a fortran qualifier instead of a pascal qualifier. It does
the same thing. :)
Mike Westerfield
(BYTEWORKS, CAT36, TOP10, MSG:363/M530)
<<<<< Thanks Mike. I wasn't aware of the optimizations done for unsigned
""""" subranges in Pascal (I knew unsigned operations were faster in C).
> In both cases, you need to declare the C side with the pascal qualifier.
Ah, but then the function is using the Pascal calling conventions! I guess
I could have been clearer. The point being a C function declared _without_
the pascal qualifier (i.e. using the C calling conventions), is not as
easily accessed from Pascal as one using the Pascal calling conventions,
right? Whereas, to access a Pascal-format routine from C, all you need
is that pascal qualifier in the C header file.
I'm just trying to confirm that I am making the right choice by using the
Pascal conventions for cross-language libraries.
Mike Hackett (just to be clear)
(M.HACKETT, CAT36, TOP10, MSG:364/M530)
>>>>> > I knew unsigned operations were faster in C.
"""""
Well, not compared to ORCA/Pascal. C does still have an advantage, but
it's in the range of numbers. unsigned int in C ranges from 0..65535,
while in Pascal, 0..maxint only goes to 32767. The same idea holds for
longint. But the speed is the same. In fact, when there _is_ a
difference, it's almost always Pascal that wins--the stricter type
checking, and in particular the tighter for-loop rules, allow the Pascal
compiler to make optimizations with unsigned that are simply not safe (or
legal) in C.
It is perfectly true that a C function using C calling conventions cannot
be called by any language except C or assembly.
Mike Westerfield
(BYTEWORKS, CAT36, TOP10, MSG:365/M530)
<<<<< > > I knew unsigned operations were faster in C.
"""""
> Well, not compared to ORCA/Pascal. [...]
Oops. No, I just meant that unsigned operations were faster than signed
operations in C. I wasn't comparing Orca/C to Orca/Pascal. I don't expect
your Pascal to ever lag behind your C compiler. We all know how you love
your Pascal! :-)
> It is perfectly true that a C function using C calling conventions cannot
> be called by any language except C or assembly.
OK, thanks. That answers that question.
Mike
(M.HACKETT, CAT36, TOP10, MSG:366/M530)
>>>>> Actually, the fact that Pascal can do some things faster than C has
""""" to do with the design of the language, not any personal
preference I have. C can also do some things faster than Pascal. For
crunching numbers, integer or real, Pascal has inherent advantages C does
not share. C also has some advantages Standard Pascal does not, but they
generally don't apply to real- world implementations of Pascal.
And interestingly enough, I _like_ C. :) The impression that I like
Pascal and dislike C comes mostly from the fact that a large number of
vocal people have promoted C and disparaged Pascal without knowing either
language well enough to have an informed opinion, and I feel it is my moral
obligation to step in. ;)
Mike Westerfield
P.S. You should hear what I say about languages I _don't_ like! Don't get
me started on Forth... :)
(BYTEWORKS, CAT36, TOP10, MSG:367/M530)
>>>>> Does this mean there is not likely to be an ORCA/Forth product? :)
"""""
Joat
(A2.TIM, CAT36, TOP10, MSG:368/M530)
>>> KEEP YOUR COMPILERS UPDATED <<<
"""""""""""""""""""""""""""""""""""""
A BUG? YES! FIXED? YES! I think I've found a bug...
"""""""""""""""""""""""
the compiler says it's version "2.1 A1" .. is this current?
anyway, the compiler doesn't seem to like it when no parameters are passed to
the EOLN function..
here's a short test program:
Program test(input,output);
var a: packed array [1..10] of char;
count: integer;
begin
a := '0123456789';
count := 0;
while (not eoln) and (count < 10) do
begin
count := count+1;
read(a[count])
end;
writeln(a);
end.
When I compile this program, ORCA/Pascal reports that there is a total of 1
error, but it never shows where the error is.
Where it should be showing an error message, it just prints a blank line
(with a |, \, -, or / character at the beginning of the line)
When the program is executed, eoln seems to be true at all times and the
loop is never executed. As far as I can tell, it shouldn't be doing this.
I discovered this when I was trying to input strings in an ISO-legal way.
(for a programming project for a class at school.)
I've tried this with ISO+ and ISO-, and with optimizations on and off. It
never works.
OTOH, it works fine in Turbo Pascal at school. (And in whatever compiler
the authors of my textbook used.)
(A2PRO.GELAMP, CAT36, TOP10, MSG:376/M530)
>>>>> Tim,
"""""
> Where it should be showing an error message, it just prints a blank line
> (with a |, \, -, or / character at the beginning of the line)
While Pascal is compiling, these characters "|, \, -, or /" loop through to
show that something is happening. I compiled the program with Pascal
2.1.1 B3 from the ORCA library. Requires BYTEWORKS access. Send email to
get access.
I compiled and ran the program without trouble. I have had a few programs
freeze with one of the looping characters (mostly C). This one wasn't one
of them.
I ran my 2.0.1 version of Pascal and got your errors. Time to upgrade.:)
Don't know why the program fails with the earlier versions.
- James - [IMAGE]
(J.GRAY38, CAT36, TOP10, MSG:377/M530)
<<<<< hmm.. you know, I probably have 2.1.1 B3 on my hard drive
""""" somewhere.. probably just never unpacked it. I'll give it a try..
>While Pascal is compiling, these characters "|, \, -, or /" loop through..
yeah, I know. But once for each EOLN in my program, it would fail to erase
the "twirling cursor" character properly and leave junk on the screen.
(A2PRO.GELAMP, CAT36, TOP10, MSG:378/M530)
<<<<< oh, I did install 2.1.1 B3.. fixed everything.. and the release
""""" notes for it even list my problems specifically as bugs which have
been fixed in the 2.0.x -> 2.1 upgrade..
>3. Eof and eoln have not worked for the standard input file since the
>switch to the .CONSOLE driver. They do, now.
>5. Reading a value into an array element or a pointer, as in
>
> read(readValue[4])
>
>did not always work correctly.
I have an ORCA/Pascal 2.1 upgrade disk around here somewhere.. I guess I
never got around to installing it :)
(A2PRO.GELAMP, CAT36, TOP10, MSG:379/M530)
>>>>> Glad it's all working, Tim.
"""""
Mike Westerfield
(BYTEWORKS, CAT36, TOP10, MSG:380/M530)
>>> PRIZM PRINTING PROBLEMS <<<
"""""""""""""""""""""""""""""""""
SLOW PRINTING I have been using ORCA/C a lot lately. :) And I have been
""""""""""""" doing so under the Prizm shell. I cannot print to my IW
LQ while in Prizm. Or rather, I can, but at a =much= reduced rate. I
average about one line per minute, but only after about 5 minutes of prep
time. Do I need to do something different to Prizm to get it to print
properly? I find myself loading Shadowwrite to do my printing from within
the shell. I am using the latest version of Prizm (2.0.2?), whatever came
with ORCA/M 2.0.3 and ORCA/C 2.0.1.
Joat
(A2.TIM, CAT36, TOP19, MSG:87/M530)
>>>>> Yes. PRIZM prints using Apple's drivers, sending formatted fonts
""""" to the printer. That works great for a networked laserwriter,
which is what it was designed for, but is awful on direct connect dot
matrix printers.
Try moving to the shell window and printing the file like this:
type +t myfile.cc >.printer
Be sure you set up the .printer driver first, and be _very_ sure to include
the +t.
Mike Westerfield
(BYTEWORKS, CAT36, TOP10, MSG:88/M530)
//////////////////////////////////// GEnie_QWIK_QUOTE ////
/ /
/ My memory's getting unreliable...too bad they /
/ don't have grey-matter SIMMs! /
/ /
//////////////////////////////////////// KEVIN.STEELE ////
[EOA]
[LIB]//////////////////////////////
LIBRARY BIT BONANZA /
/////////////////////////////////
HOT Files You Can Download
""""""""""""""""""""""""""
By Tim Buchheim
[A2PRO.GELAMP]
o SHELL UTILITY
o SOURCE CODE
o GNO UTILITIES
>>> SHELL UTILITY <<<
"""""""""""""""""""""""
File #4863 TERM.1.1.BXY (GS)
Uploaded on 9/26/95 by K.FLYNN
About 10K (d/l time approx. 1 minute @ 2400 baud)
ReTERMinator will replace line termination characters in any text file
(whether they are CR, LF, or CRLF) with either CR (carriage return - Apple
standard) or LF (linefeed - Unix standard). What is unique about this
utility is that it will convert whole directories at once (wild card
characters are supported), files are converted in place (directory order
of files is not changed) and date/time stamps are preserved.
>>> SOURCE CODE <<<
"""""""""""""""""""""
File #4861 DOTZ.BXY (ALL)
Uploaded on 9/26/95 by BRANDT
About 29K (d/l time approx. 2 minutes @ 2400 baud)
Here's an archive with source for the I.UM.DEFAULTS init, containing more
than a dozen dot commands for UltraMacros. The files are in Merlin format,
readable by AppleWorks 5. You'll need a knowledge of AW and 65C02 assembly
language to do anything with this info. It's an "as is" contribution to the
AW5 knowledge base. All rights are retained by JEM Software, but you may use
the info to create your own commands. You'll have to hack your way through
the files. Docs are not provided. Have fun!
>>> GNO UTILTIES <<<
""""""""""""""""""""""
File #4858 AWK.BXY (GS)
Uploaded on 9/15/95 by S.REEVES2
About 101K (d/l time approx. 7 minutes @ 2400 baud)
This is a port of awk, the text pattern scanning and processing language,
for GNO. This archive contains the executable, man page and readme files
(not the source code). Ported by Jawaid Bazyar, bazyar@netcom.com. Requires
an Apple IIgs and GNO/ME 2.0 or higher.
File #4856 LPR3.2.BXY (GS)
Uploaded on 9/14/95 by S.REEVES2
About 41K (d/l time approx. 3 minutes @ 2400 baud)
This is lpr version 3.2, part of GNO/ME's print spooler package, by Jason
Perez (jasonp@amcu-tx.sps.mot.com). Supports the Apple ImageWriter II and
the HP Deskjet 500. Requires an Apple IIgs, GNO 2.0 or higher, and the lpd
line printer daemon (which is here in this library in a nearby archive).
ORCA/C source code and a man page are included.
File #4855 LPDLPC.BXY (GS)
Uploaded on 9/14/95 by S.REEVES2
About 60K (d/l time approx. 4 minutes @ 2400 baud)
Here is lpd version 2.1 and lpc version 1.0, part of GNO/ME's print spooler
package, by Phillip Vandry (vandry@cam.org). lpd is the line printer daemon
used by lpr (which is here in this library in a nearby archive). lpc is a
utility to control lpd's print queue. Requires an Apple IIgs and GNO 2.0 or
higher. ORCA/C source code and man pages are included.
//////////////////////////////////// GEnie_QWIK_QUOTE ///////
/ /
/ Heheh... And where in the IIgs Technotes does it /
/ say, "If you are having a problem, simply post it /
/ in A2Pro, and you will instantly realize what you /
/ are doing wrong"? :) I spotted the problem about /
/ ten minutes after I posted it, and went back to /
/ delete the message so as to spare myself /
/ embarrasment... :) /
/ /
/////////////////////////////////////////////// B.VICTOR1 ////
[EOA]
[RTC]//////////////////////////
RTC WATCH /
/////////////////////////////
Bits and Pieces from A2Pro Real Time Conferences
""""""""""""""""""""""""""""""""""""""""""""""""
By Russ Nielson
[R.NIELSON1]
o A2Pro WEEKLY RTC SCHEDULE
o 16-BIT PROGRAMMING vs. 8-BIT PROGRAMMING
>>> A2Pro WEEKLY RTC SCHEDULE <<<
"""""""""""""""""""""""""""""""""
_______ __________ _________
/_______| /_________/ /________/ SEVEN days a week!!
/__/__/__/ /__/ /__/
/________/ EAL /__/ IME /__/ ONFERENCES in A2Pro!!
/__/ /__| /__/ /__/_____
/__/ /__/ /__/ |________/ WEEKLY SCHEDULE
Stop in and say "Hi!" at one of these conferences. We've been giving
away quite a few GEnie usage credits (free time) at these conferences,
and you may just win the next one! :)
Day Time Event Host
--- --------------- ----------------------------------- -----------
Sun 8:30pm-11:00pm Weekly Programmers' RTC Sloanie
Mon 9:30pm-11:00pm GS/OS and Toolbox Calls Dave Miller
Tue 9:30pm-11:00pm 8-bit Programming Russ Nielson
Wed 9:30pm-11:00pm HangTime's HyperBar & Grill HangTime
Thu 9:30pm-??:?? Informal - Q&A, chat, whatever A2Pro Staff
Fri 9:30pm-11:00pm Getting Started with Programming Tim Buchheim
Sat 8:30pm-10:00pm Assembly Language Programming Brian Wells
NOTE: All times are in Eastern Time.
~~~~
>>> 16-BIT PROGRAMMING vs. 8-BIT PROGRAMMING <<<
""""""""""""""""""""""""""""""""""""""""""""""""""
<Erick> I have a GS programming technique question. Perhaps Richard can
give some suggestions. I'm wandering what methods should be used
to write modular code where new modules can be "dropped in"
without affecting the architecture.
<Richard> In what environment Erick?
<Erick> Desktop environment
where modules could be added later to implement new featuers
I still need to gather my thoughts on this but I need to start
doing some serious reading and studying of example code
<Richard> I guess it depends on what features. The ways extras and drivers
usually work is your program simple walks a folder, loading every
load module that matches its load criteria (filtype/auxtype
etc.), and just jumps to it.
The module then responds with whatever it needs to work. For
example, when it should be called, and with what data.
Is that the sort of stuff you're talking about?
<Erick> maybe, I guess I should first determine how things =could= be
split out and then ask what GS mechanisms would best support it:)
This would not be your typical GS application. I need to figure
out if this would be a real application or a sample.
<Richard> For example, Finder Extras. Finder simply send out system wide
IPC calls to tell everyone what it is doing or about to do. It is
then up to individual modules (extras) to decide if they want to
respond, and if so what they'll do.
<Erick> from 16-bit mode, how does one access the annunciator lines? is
it 00/C058 or E0/C058 ?
<Richard> The actual address are in bank $E0, but they're generally
shadowed into bank $00 as well in a normal desktop environment.
Use $E0/C058 just to be sure.
<Erick> how should one reference memory for the softswitches (in 16-bit
mode)?
<Richard> You don't. You switch to 8-bit.
<Erick> set emulation for 65C02 and then do 6502/65C02 instructions?
<Richard> No, stay in native mode, but switch to the 8 bit accumulator
using SEP $20. Access your switch, and then restore 16 bit using
REP $20.
<Erick> so in that case, I can stay in 16-bit mode and just reference
$E0/C058 ?
I'm twisting things around :)
<Richard> A lot of people get confused when they use the 816 for the first
time, about emulation mode and register widths.
A desktop application shouldn't really ever switch to emulation
mode.
<Erick> so stay in native mode, but set the register widths to 8-bits?
<Richard> Yep. The native mode 816 can switch back and forth between 16 bit
and 8 bit registers, it's a function of the chip. When you switch
to emulation mode, it just happens to FORCE register widths to
8 bit.
<Erick> once this is done, I still reference $E0/C058, right?
<Richard> Right.
So:
SEP $20 ; switch to 8 bit accum
LDA >$E0C058 ; access it
REP $20 ; switch back to 16 bit accum
I haven't done any annunciator stuff since before the GS, so I
have no idea what you'd do between the SEP and REP. :)
<Erick> I'm switching to 8-bit registers, because the 65816 would attempt
to read in 16-bits beginning at $E0/C058, right?
<Richard> Right. It would read C058 and C059.
Note that SEP $20 only sets the "m" bit, so while the accumulator
goes to 8 bit, the index regs stay at 16 bit.
<Erick> how do the index reg get switched to 8-bits? is this only via
emulation mode?
<Richard> Nope. By setting the "x" bit. Do you have an 816 reference handy?
To do this, do SEP $10.
<Erick> I have a lightly used copy on the bookshelf. Need to start
getting my money's worth :)
I have plenty of examples on how to write properly behaving $FF
(.SYSTEM) files/programs. What rules do I have to follow to
write .S16 files in assembler?
<Richard> Gee... Do you have the GS/OS reference?
<Erick> yeah, I have GS/OS Ref. Is this the only guide I should use?
I've been thumbing thru GS/OS ref
I don't see any specific rules about .sys16 files like there was
for .SYSTEM ($FF) files.
the 8-bit environment in P8 was probably too primitive so you had
to do more. I guess the loader is smarter
to help make my library searches more productive, do you know if
any particular person uploaded any good samples of .SYS16 apps
that were text-based?
<Richard> Not that I know of. You want one?
<Erick> I'm looking for assembler of course
<Richard> Of course. :)
<Erick> sure, just something that shows the basics (tools needed, etc.)
<Richard> For text you don't really need to start enything.
<Erick> I was thinking of using the GS/OS console driver for screen I/O
<Richard> The console driver is a part of GS/OS. You just open it using
_Open.
<Erick> that's a macro?
<Richard> Sorry, I don't know. The GS/OS OPEN call. $2010.
<Richard> I don't like using macros for OS calls. Don't ask me why, I
just don't. :)
<Erick> I just thought with the name "_Open" that it was a special macro
:)
<Richard> I think Merlin has an _Open. I just said it like that hoping
you'd know what I was talking about. :)
<Richard> JSL $E100A8
DA $2010
ADRL OPENPARMS
BCS ERR
<Erick> yep, looks like P8 MLI stuff
<Richard> Exactly.
I think that's partially why I don't use macros for it, because I
never did with P8 either.
<Erick> did you have an app in mind as an example program?
<Richard> Oh I've got a dozen text based utilities that do silly little
things for me. I'll just grab one of those if you like. Nothing
flashy, just runs and does something and then quits.
<Erick> sounds great
[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 IBM PC Prog IBMPCPRO 617
PowerPC PPC 1435 PowerPCProg PPCPRO 1440
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.com
o Back issues of GEnieLamp are available in the DigiPub RoundTable
Library #2 on page 1395 (M1395;3). Internet users should use
the GEnie gopher (gopher.genie.com) which has most back issues
(but might be missing a few of them).
o GEnieLamp pays for articles submitted and published with online
GEnie credit time. Upload submissions in ASCII format to library
#31 in the DigiPub RoundTable on page 1395 (M1395;3) or Email it to
GENIELAMP. On Internet send it to: genielamp@genie.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
""""""""" o Mike White [MWHITE] Managing Editor
APPLE II o Doug Cuff [EDITOR.A2] A2 EDITOR
"""""""" o Gina E. Saikin [A2.GENA] A2 Staff Writer
o Charlie Hartley [A2.CHARLIE] A2 Staff Writer
A2Pro o Tim Buchheim [A2PRO.GELAMP] A2Pro EDITOR
"""""
ATARI o Sheldon H. Winick [GELAMP.ST] ATARI EDITOR
""""" o Bruce Smith [B.SMITH123] EDITOR/TX2
o Mel Motogawa [M.MOTOGAWA] ST Staff Writer
o Richard Brown [R.BROWN30] ST Staff Writer
o Al Fasoldt [A.FASOLDT] ST Staff Writer
o Timothy V. Steed [T.STEED1] ST Staff Writer
IBM o Sharon La Gue [SHARON.LAMP] IBM EDITOR
""" o Tika Carr [LAMP.MM] MULTIMEDIA EDITOR
o David Leithauser [D.LEITHASUER] HyperRead Editor
o Bob Connors [DR.BOB] IBM Staff Writer
o Susan M. English [S.ENGLISH1] Multimedia Graphics Artist
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
POWER PC o Ben Soulon [BEN.GELAMP] POWER PC EDITOR
""""""""
WINDOWS o Bruce Maples [GELAMP.WIN] WINDOWS EDITOR
""""""" o Marlene Gaberel [M.GABEREL1] Windows Staff Writer
ETC. o Jim Lubin [J.LUBIN] Add Aladdin Scripts
"""" o Scott Garrigus [S.GARRIGUS] Search-ME!
o Mike White [MWHITE] (oo) / DigiPub SysOp
o John Peters [GENIELAMP] DigiPub SysOp
o Al Fasoldt [A.FASOLDT] Contributing Columnist
o Phil Shapiro [P.SHAPIRO1] Contributing Columnist
o Sandy Wolf [S.WOLF4] Contributing Columnist
o Lloyd E. Pulley [LEPULLEY] Contributing Columnist
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\////////////////////////////////////
Opinions expressed herein are those of the individual authors, and do
not necessarily represent opinions of GEnie Information Services,
GEnieLamp Online Magazines, or T/TalkNet Online Publishing. Bulletin
board messages are reprinted verbatim, and are included in this publi-
cation with permission from GEnie Information Services and the source
RoundTable. GEnie Information Services, GEnieLamp Online Magazines,
and T/TalkNet Publishing do not guarantee the accuracy or suitability
of any information included herein. We reserve the right to edit all
letters and copy.
Material published in this edition may be reprinted under the fol-
lowing 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. Please include the fol-
lowing at the end of all reprints:
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\///////////////////////////////////
The preceeding article is reprinted courtesy of GEnieLamp Online
Magazine. (c) Copyright 1995 T/TalkNET Publishing and GEnie Infor-
mation Services. Join GEnie now and receive $50.00 worth of online
credit. To join GEnie, set your modem to 9600 baud (or less) and half
duplex (local echo). Have the modem dial 1-800-638-8369. 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. GEnie
will then prompt you for your signup information. For more
information call (voice) 1-800-638-9636.
////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
[EOF]