Jan 90 Mousehole
Volume Number: 6
Issue Number: 1
Column Tag: Mousehole Report
Mac IIci and TE Word Selection
By Larry Nedry, Contributing Editor
From: Wildman
Re: Mac II ci
Hey, my new Mac II ci just showed up. Did anybody else buy one of these? It is plenty
fast at running programs, but Lots of programs that run on a Mac II cx don’t run on the
ci. Saddest, in my opinion, is Macsbug 6.1B1. It installs with no errors, but push the
programmer button and BANG your new Mac is dead in the water, cycle power switch to
get things back. I suspect it is that the new wizzy video-card-on-the-motherboard
circuit is not compatible with real video cards because I also have a couple of games
and graphics demos that also offer one way trips to Tumbolia. Any ideas when a new
debugger might be available? Any compatibility notes that I can use to spare my
programs the fate of Macsbug? Anybody got a list of what works/doesn’t work with a
ci, or even a list of things that Apple tried to run on it before it was sold to us public
dudes?
From: Greg
Re: Mac II ci
We have six ci’s that just came in so here’s what I’ve found. You’re right about
MacBugs there is a version around Apple that works, but I don’t have it. As for
programs that won’t work they are limited to those that make assumptions about
hardware (particularly the screen or video) because of 32 bit Quick Draw being in the
ROM any program that would bomb with the 32 bit QuickDraw INIT on a II will not
work in a ci for the same reason. Some games also want the CPU to run at a set speed
and thus will fail on the ci. Hope this helps
From: Wildman
Re: Mac II ci
OK, A couple of further updates on MacIIci compatibility.
a) I just got MPW version 3.0, It works pretty well and is really plenty fast enough to
do real work with.
b) The “TubeTest” sample program, which is a demonstration of how to use the Palette
Manager, doesn’t work. It draws black circles regardless of the number of colors
enabled. So much for examples to show you the way.
c) The other Apple debugger, SADE version 1.0, doesn’t work either. If you try to run
it with the MultiFinder that came on the ci installation disks (6.0.4 I think) it gives
you a “Bad MultiFinder version” error message. If you try to run the MultiFinder
included with SADE (6.1b7) as the SADE manual tells you, it puts up trashed windows
and repaints the desktop in black and white and in 5-10 clicks bombs your ci. Setting
the screen to black and white mode has no visible impact.
d) It seems that some of my problems are “32-bit clean-ness” problems. The Mac I
use most of the time is a Mac128->2M+SCSI Frankintosh which can pass itself off as a
Mac+ with new ROMs to most software. Some tools which run on it still have dirty
high order bits. They run on no machine with a 68030 in it. I will try to compile a
full list and type it in soon. If you have any data, please help me and put it in here.
What do folks do for a debugger? Right now I compile programs on the ci and put them
on floppies and debug them on the other Mac. I can’t really use SADE in 2MB, so I use
my old buddy Macsbug. Does TMON work? I’d buy it but if Apple’s two debuggers don’t
work what is the chance that somebody else’s does?
From: Walshag
Re: Patching Traps
Where should I begin to learn trap patching? I am competent with Pascal (I use LSP
2.0 for most projects), but not overly confident with the intricacies of the Mac. I own
Inside Mac (I-V), a handful of MacTutors, a few Macintosh reference manuals, and a
dozen or so bottles of Tylenol. I am READY!! After reading last month’s MacTutor
article on INIT’s in pascal, I was inspired. I have worked out a plan to patch a trap (in
an INIT):
1. Should say that in my INIT code, include the procedure that should be executed after
the patch. Name this procedure MyTrapex. (ex. When another program calls Sysbeep,
the MyTrap procedure is the one actually executed).
2. Move that code into system memory:
oldZone:=GetZone;
SetZone(SystemZone);
SizeNeeded:=Longint(myTrap); {does this work?}
RervMem(SizeNeeded);
PatchPtr := NewPtr(SizeNeeded);
BlockMove(@myTrap,Pointer(ORD(PatchPtr)),SizeNeeded); {How
‘bout this?}
SetZone(oldZone)
3. Use NGetTrapAddress & NSetTrapAddress:
**HELP HELP HELP!!!**
I don’t want to spend my life trial and erroring these procedures, so I need some
advice.
From: Inbox
Re: Patching Traps
Read p. 83-89 of October ’89 MacTutor. That should give you all the help you need.
From: Tomt
Re: printing ???
I’m having a bit of trouble printing a graphics image in LSP 2.0. I’m trying to follow
the example in Macintosh Revealed VIII but I run into a problem,
Theprintrec := ThPrint(NewHandle(sizeof(Tprint)));
Hlock( handle(theprintrec));
PrintDefault(Theprintrec);
goahead := PrStlDialog(ThePrintRec);
on the last line I get an address error. I’m sure I skipping something simple but I
don’t have the foggiest. Thanks for any help.
From: Dhands
Re: printing ???
You may have not called PrOpen prior to the printing calls. I added the call and the code
below worked
{1}
Theprintrec := ThPrint(NewHandle(sizeof(Tprint)));
Hlock( handle(theprintrec));
PrOpen;
PrintDefault(Theprintrec);
goahead := PrStlDialog(ThePrintRec);
PrClose;
Also, occasionally I’ve had LSP continue to encounter address/runtime errors even
after fixing the source code. If you’re really stumped try “remove objects” command
and/or quit and relaunch LSP.
From: Tomt
Re: printing thanks
Thanks David for the info. I too have seen problems where I had to either rebuild the
project or quit LSP and then restart it. I also got a rather strange error saying that
there was insufficient memory for internal tables that got fixed by quitting and
restarting or rebuilding. Very strange.
From: Siegel
Re: printing ???
1) Don’t lock your print handle.
2) Before calling PrintDefault, call PrOpen, and when you’re done printing, call
PRClose.
From: Sonny
Re: PASCAL BOOKS
Hello! Attention all Pascal programmers. I am fairly new to programming and want to
learn more. Can anyone suggest some really good books about Pascal? I was in a
college library recently and saw that there are a lot of books on Pascal, but many of
them seemed somewhat mediocre. I plan to post this message on a number of BBS’s, so
I will be posting another message later on to let y’all know the results of this survey.
By the way, I have a Mac SE and plan to use Lightspeed Pascal v2.
From: Ears
Re: PASCAL BOOKS
You might want to check out Just Enough Pascal - it covers the basics in and
interesting fashion and is compatible with LSP 2.
From: Sherpa
Re: PASCAL BOOKS
I can suggest two that have helped me immeasurably: Oh Pascal! and Scott Kronick’s
Fear and Loathing Guide. Lots of humor and good examples.
From: Dhands
Re: C books
What books would any of you recommend for an introduction to C in general, and C on
the Mac in specific? I’ve been programming the Mac for several years using Pascal and
assembly and decided to look into C. So, any suggestions?
From: Tron
Re: C books
A good introduction book on the Mac using (specifically) LightSpeed C (now called
THINK C) is “Macintosh Programming Primer” by Dave Mark and Cartwright Reed.
Addison Wesley Publishing. All of the examples are written in THINK C 3.0, although
it will work with any C development system with a few translations here and there.
Oops. I just noticed that you were looking for books on C, not just books on Mac C.
Well, one that I found helpful is “Programming in C” by Stephen G. Kochan. Hayden
Books. This book, coupled with The Macintosh Programming Primer should set you on
your way.
From: Tron
Re: PICT resources in dialogs
I ran into an interesting problem when I added a PICT resource to a (previously)
perfectly working dialog box. I wanted to spruce up the look of the box so I created a
PICT and added it to the background of the dialog. After doing so, my routine ( which
uses DialogSelect to receive the itemHit) no longer correctly returns the itemHit for
editText items. Running through the debugger, I discovered that the itemHit returned
is undefined, even though I clicked the mouse in an editText item. I made sure that the
PICT resource was “sent to the back” using ResEdit, and when I enable the PICT,
DialogSelect returns the item number for the PICT when I click anywhere in the box.
A friend of mine tested the problem using buttons instead of editTex items and had the
same results...incorrect item numbers being returned.
Has anyone ever dealt with PICT resources in Dialog boxes that are directly behind
other items and how do you get around the problem?
A side note: I shortened the rect of the PICT rsrc. so that it was still in the dialog box
but not directly behind my editText item and mouse clicks began working perfectly
once again.
From: Apage
Re: Scrolling Window
Best advice I can give off the top of my head is to use ScrollRect (I-187) to scroll off
the old data and make room for new. this will save time in redrawing(bit xfer
operations are usually quite fast msec should give enough time to do so). Maintain a
running buffer of data, and keep grabbing the new stuff to paste in as it is read.
From: Mward
Re: Need CDEF example
I would like to know where I can get an example of the source code for a dial type CDEF
- something like the volume control in the control panel DA. I am using Think C, so
any C or Pascal code will do.
From: Inbox
Re: Need CDEF example
Read MacTutor. They have loads of CDEF examples.
From: Mward
Re: Need CDEF example
I’ve been reading MacTutor since about April, and I haven’t seen what I am looking for.
Can you think of any particular issues that might have an example of a dial type CDEF?
From: Inbox
Re: Need CDEF example
OK.. Nov89 - Alternate Scroll Bar CDEF, in C. You’d probably be able to convert
something like this into what you’re doing. April89 - Designer CDEF’s, in Think
Pascal. There are some more in The Volumes of MacTutor from previous years.
From: Mward
Re: Need CDEF example
Thanks for the info. The April CDEF article dealt with checkbox variants, and I read
the tables of content in the four volumes of previous MacTutor and couldn’t find an
article on CDEFs. So, I’m waiting eagerly for the November issue to hit the stands.
Waiting eagerly for the issue to hit the stands is a sure sign that it’s time to subscribe.
From: Wlp
Re: LSC version for SE?
I am thinking of getting Lightspeed C. I have an SE with a 20 Meg hard drive - nothing
extra. Will 4.0 run on my machine or should I try to find 3.0x? This is my first time
on this BBS. I don’t know when I’ll be able to check back. If anyone still uses the US
Mail to communicate, I would appreciate a written reply, giving your opinion or
problems you may have encountered using an SE and Think C.
Warren Pollans
Route 2, Box 440
Orangeburg, South Carolina 29115
From: Siegel
Re: LSC version for SE?
4.0 will run fine on your machine, but to use the source debugger, you should have a
minimum of 2MB. 2.5 MB is really the practical minimum, and 4MB is ideal.
From: Grendel
Re: Text Edit and word selection
I have a vexing problem. I want to write a hypertext environment which will facilitate
working with texts in foreign languages. To do so, I need to have the ability to
double-click on a word to select it. Of course, TextEdit can handle this just fine - for
English text in a Roman script. The problem is that I need to use foreign language
fonts, and e specially fonts with diacritical marks - accents, umlauts, etc., created as
zero-width characters. Except for the few (inadequate) diacritical characters which
the Roman script system “knows” about, TextEdit selection routines routinely balk at
these characters, so that only part of a word is selected by the double-click. How can I
“teach” TextEdit to select the whole word in these non-Roman script systems? I
would like it to be simply space delimited, except for certain punctuation characters.
I’ve looked at the documentation for the Script systems in Inside Mac V, but it seems
that one must depend on Apple to write the systems for you. Help!!!
From: Btoback
Re: Text Edit and word selection
If you want to write your own word break routine, you can do it by using the
SetWordBreak routine or stuffing a pointer to your word break routine into the TERec
at the appropriate spot. This is documented in IM-I, p. 380. Of course, you still have
to write the word break routine, but presumably you can use the Script Manager for
help. Also, according to IM-V (the Script Manager chapter), you can get some kind of
special documentation from MacDTS for writing your own scripts.