mirror of
https://github.com/opsxcq/mirror-textfiles.com.git
synced 2025-08-12 11:44:55 +02:00
612 lines
29 KiB
Plaintext
612 lines
29 KiB
Plaintext
America Online
|
|
APPLE II DEVELOPMENT FORUM CONFERENCE LOG
|
|
Tuesday, September 18, 1990 10:00 p.m. Eastern Time
|
|
Topic: Programming Environments
|
|
Forum Leader: Gary Jacobson (AFA Gary J)
|
|
|
|
AFA Gary J Dave: Any ideas on how to determine if memory handles are being
|
|
goofed up..
|
|
AFA Gary J by a program?
|
|
AFA Gary J (after the program is quit)
|
|
Dave Lyons Gary, whaddaya mean exactly? Detect programatically, or determine
|
|
the cause of a
|
|
Dave Lyons crash, or what?
|
|
AFA Gary J All of the above, Dave :)
|
|
AFA Gary J Dave: Right now I'm just trying to determine that that is in
|
|
fact the problem.
|
|
AFA Gary J I'll get this event rolling here.....
|
|
AFL Scott Programming environment... Desk, computer, paper, books,
|
|
manuals... Pepsi's...
|
|
AFA Gary J Welcome to the Apple II Development Forum. Tonight's topic is
|
|
(as Scott
|
|
AFA Gary J pointed out :) Programming Environments, and whatever else we
|
|
want (since we
|
|
AFA Gary J have such a small group).
|
|
AFA Gary J Let's NOT use protocol, unless we get overwhelmed with newcomers
|
|
here.
|
|
AFA Gary J Anyone have a question they'd like to start off with this
|
|
evening?
|
|
AFL Scott As I was saying.. Pepsi's... broken clock... sunrise... sunset...
|
|
no sleep...
|
|
AFL Scott etc...
|
|
AFL Scott Oh.. Kleenex, too... Can't forget that..:)
|
|
AFA Gary J I got an Apple "charge" over the weekend. I actually got to
|
|
visit the lobby
|
|
AFA Gary J of Apple headquarters. Neato :)
|
|
AFL Scott Great!:)
|
|
AFA Gary J I even saw the ledgendary "Mariani Avenue" :)
|
|
Dave Lyons Gary, which building?
|
|
AFA Gary J Ahh... CC3? (If I remember correctly)
|
|
AFA Gary J The big 8 story one.
|
|
AFA Gary J ...where DTS is.
|
|
AFL Scott What is the programming environment like at Apple? Serious
|
|
question...
|
|
AFA Gary J Matt or Dave.... Do you have an answer for Scott?
|
|
Matt DTS I don't even have a question from Scott since I got here.
|
|
Matt DTS (Incidentally, DTS is a metaphysical thing and is, in fact,
|
|
everywhere.)
|
|
AFA Gary J I've always believed that too, Matt :)
|
|
AFL Scott Just wanted to know what the programming environment was like at
|
|
Apple... you
|
|
AFL Scott know... lighting, desks... atmosphere...
|
|
Dave Lyons We have them all!
|
|
AFL Marty I want to know about the DTS hot tub :)
|
|
Matt DTS In CC3 where I work, it's spacious, well-lit and nice. If I
|
|
wasn't interrupted so much I could really
|
|
Matt DTS program there, too. As it is, when I want to program I usually do
|
|
it here at home.
|
|
Dave Lyons Lights, desks, and air. Just add M&Ms and soft drinks and that's
|
|
about all you need. And
|
|
Dave Lyons coputers.
|
|
AFL Scott Any music? Just wondering... I've always had this vision of
|
|
Apple being a
|
|
AFL Scott haven for people to be creative without boundaries.
|
|
Matt DTS The DTS Hot Tub continues to run into difficulty, like no place to
|
|
put it and no budget to buy it. :(
|
|
AFL Marty :(
|
|
Dave Lyons When I want to really program here (which is more now than before,
|
|
of course) I just stay until
|
|
Dave Lyons about 2:30a...it's really quiet that late, except when someone
|
|
Dave Lyons comes along with a VACUUM CLEANER and vacuums right under my chair
|
|
for a couple minutes, probably
|
|
Dave Lyons trying to memorize the source code on my screen....
|
|
Mac Hater so gary masquerades as a janitor, eh.
|
|
AFA Gary J :)
|
|
AFA Gary J Actually, that's not a bad idea, Mac Hater :)
|
|
Matt DTS There are boundaries. There are frustrating, inflexible barriers
|
|
to productivity at Apple, usually
|
|
Matt DTS referred to as "meetings".
|
|
Dave Lyons (Hey, speak for your own meetings. I've been to a lot of flexible
|
|
ones.)
|
|
Matt DTS (You've made a lot of them flexible by refusing to stick to the
|
|
subject and end on time, too. :P)
|
|
Dave Lyons (It's a feature!)
|
|
AFL Scott So changing the world is a slow process, interrupted by frequent
|
|
meetings where
|
|
AFL Scott there is no agenda and if there was one it wouldn't be followed?
|
|
:)
|
|
Matt DTS "I know. Let's stop talking about the system software and think
|
|
about speech recognition!" <geez>
|
|
Mac Hater (BTW, Orca/M v2.0 is in beta testing. leave email to MIKEW50 if
|
|
you want to
|
|
Mac Hater get on the beta-test list!!)
|
|
AFA Gary J For your latecomers this evening, tonight's scheduled topic is
|
|
"Programming
|
|
AFA Gary J Environments". We can take any questions you have. (We'll take
|
|
them, but
|
|
AFA Gary J not guaranteed to answer :)
|
|
Dave Lyons On Scott's question from quite a while ago--detecting that the
|
|
handle chain has been
|
|
Dave Lyons toasted is pretty hard. Once it's fried, it's hard even to get
|
|
much done with a debugging CDA.
|
|
Dave Lyons Much better would be to detect it right before it happens, and Big
|
|
Brother will (still) eventually
|
|
Dave Lyons do that *sometimes* (only if it's a tool call/etc that's about to
|
|
do the damage!).
|
|
Dave Lyons Best solution is to have high confidence that your code is always
|
|
dereferencing ptrs/handles/
|
|
Dave Lyons ptrs to handles/etc the right number of times (dereffing *not
|
|
enough* is a good way to fry
|
|
Dave Lyons the Mem Mgr, since you'll probably go store data in a master
|
|
pointer record instead of in a block
|
|
Dave Lyons you've allocated).
|
|
AFA Gary J That was my question (I think), not Scott's. The problem I'm
|
|
having isn't
|
|
Dave Lyons (Oops, sorry. :)
|
|
AFL Scott (I was wondering about that, too, Gary..:))
|
|
AFA Gary J resulting in a crash, and that's why it's VERY difficult to
|
|
determine the
|
|
AFA Gary J cause. It's the problem I brought up a few weeks back... it's
|
|
causing the
|
|
AFA Gary J ORCA editor to produce an "Invalid Text Data" error when trying
|
|
to run the
|
|
AFA Gary J editor after my program has been executed (ORCA is fully
|
|
re-loaded). The
|
|
AFA Gary J problem survives through a warm re-boot.
|
|
AFA Gary J I also get a memory manager error sometimes (when trying to run
|
|
the editor,
|
|
AFA Gary J again). The only place the problem is manifest (so far as I've
|
|
seen) has
|
|
AFA Gary J been in connection with the ORCA editor.
|
|
AFL Scott I've seen that, too, Gary... I've also seen "Memory Manager -
|
|
invalid handle
|
|
AFL Scott given.
|
|
AFA Gary J Yes!! That's the error, Scott.
|
|
AFA Gary J I have to do a cold re-boot in order to edit my source again.
|
|
Mac Hater maybe yer prog trashes romdisk w/ block=editor. the scott-problem
|
|
doesn't
|
|
Mac Hater happen on a warm boot, at least to me (and it went away when I
|
|
used ROSE! :)
|
|
AFL Scott Near as I can tell, it happens for the reason Dave mentions...
|
|
Floating handles
|
|
AFL Scott I've only seen it under Orca/C, though.. I think StartDesk and
|
|
having to use
|
|
AFL Scott the userid() function have something to do with it, but I'll be
|
|
darned if I
|
|
AFL Scott can nail it.
|
|
AFA Gary J I'm using ORCA/M, and it's happening to me.
|
|
AFL Scott I also think it's the root of some problems encountered by setting
|
|
optimize to
|
|
AFL Scott -1, too... this causes, in some cases, pascal strings to be blown
|
|
to hell.
|
|
AFA Gary J I'd sure like to find it, as I'm not sure what other problems it
|
|
might cause.
|
|
AFA Gary J I'd like to nail it down before I release the program.
|
|
Matt DTS It sounds almost like there's something weird in your system,
|
|
Scott.
|
|
AFL Scott I would like to find it, too, Gary.. it happens to me only with
|
|
large programs.
|
|
AFA Gary J My program is getting quite large now.
|
|
AFA Gary J (It occupies 6 load segments, for a total around $30000 bytes)
|
|
AFL Scott There's a lot weird in my system, Matt. No known hardware
|
|
problems, though.
|
|
Matt DTS This doesn't seem solvable online - does anybody else have
|
|
something interesting happening?
|
|
AFA Gary J Matt has a good point :) Any other questions (programming
|
|
environment or not)
|
|
AFA Gary J out there?
|
|
AFA Gary J I have one. Is there an easy way to make a data segment that
|
|
doesn't wrap
|
|
AFA Gary J around a bank boundry?
|
|
AFA Gary J I know there's another OMF header field that is supposed to take
|
|
care of that,
|
|
AFA Gary J but as far as I know, there isn't a catch-all OMF header editor
|
|
out there.
|
|
Matt DTS What do you mean by "wrap around a bank boundary"?
|
|
Dave Lyons Eh?
|
|
AFA Gary J Well, maybe I should ask another question first. I know data
|
|
segments can be
|
|
Dave Lyons You want one that doesn't -cross- a bank boundary at all, Gary?
|
|
AFA Gary J larger than 64k. (Yes, Dave!)
|
|
AFA Gary J Is it possible for a data segment that is <LESS> than 64K to be
|
|
loaded in at
|
|
AFA Gary J a point where it could cross a bank boundry?
|
|
Dave Lyons I think the answer is to just make it a code segment--I think data
|
|
segments are always allowed
|
|
Dave Lyons to cross banks.
|
|
AFA Gary J That's what I've done to this point, Dave. But, I want to be
|
|
able to use
|
|
AFA Gary J using statements to include that data.
|
|
Dave Lyons (If you make it a code segment, just make sure it comes -after-
|
|
your first real code segment, or
|
|
Dave Lyons you're in for a nasty surprise when the system jumps to your data
|
|
segment.)
|
|
Dave Lyons Statements? Assembly? Like APW assembler won't let you do a
|
|
"USING blah" where Blah is a code
|
|
Dave Lyons segment?
|
|
AFA Gary J Yes.
|
|
AFA Gary J No, Blah is a data segment.
|
|
AFA Gary J (Can that be done with a code segment? If so, then that's my
|
|
solution :)
|
|
Matt DTS You can always make it a bank-aligned segment so that it won't
|
|
cross a bank, but...
|
|
Matt DTS ...could be troublesome (see IIgs TN #78).
|
|
AFA Gary J Right, Matt. That's a possibility, but not a first choice :)
|
|
Dave Lyons (Somebody released a utility for changing the KIND fields of
|
|
segments--that would be handy in your
|
|
Dave Lyons case, I think.)
|
|
Matt DTS (LinkIIgs lets you specify the KIND field of any segment if you
|
|
like - editing later is not necessary)
|
|
AFA Gary J I don't think the KIND field is what I want to get at.
|
|
(looking)
|
|
Dave Lyons (Matt, what I don't know is whether specifying the segment kind at
|
|
link time affects how the linker
|
|
Dave Lyons handles the USING opcodes in the object files. I know
|
|
post-editing would work, and I *think* having
|
|
Dave Lyons LinkIIgs do it would work too.)
|
|
AFA Gary J Oh well. Maybe I'll just edit my OMF header myself ;) A2,
|
|
AFA Gary J GA
|
|
AFA Gary J A2GS, did you have a question?
|
|
Matt DTS I think LinkIIgs can handle it. If not, I'd venture it's a bug.
|
|
(A2GS, are you there?)
|
|
AFA Gary J Ah... I was thinking of the BankSize field.
|
|
AFA Gary J BankSize specifies that the segment must not cross a 64K bank
|
|
boundry.
|
|
AFA Gary J Hello, A2GS?
|
|
A2GS oops...sorry....was tied up....now for my Q's
|
|
AFA Gary J GA, A2
|
|
Matt DTS Tied up? Well, I guess that's your business. :)
|
|
A2GS 1) Is there a way to request 2 continuous banks of memory and be
|
|
sure that
|
|
A2GS the first bank was aligned on a bank boudary (so the 2nd will be
|
|
also)?
|
|
Dave Lyons Nope, there's no simple way to do that.
|
|
A2GS That's what I thought :(
|
|
Matt DTS The Memory Manager has no "bank-aligned" attribute, so you have to
|
|
do it yourself, just like the
|
|
Matt DTS Loader does. For a description of how the Loader does it, see
|
|
IIgs TN #78.
|
|
Dave Lyons If you *really* need that, you can walk through one bank at a time
|
|
trying to allocate $20000 bytes
|
|
Dave Lyons at $x0000 until it succeeds or you hit TotalMem or $ff0000 or
|
|
whatever.
|
|
A2GS Yeah, requesting a single bank which is page aligned is no prob.,
|
|
I guess the
|
|
A2GS easiest way, although it is a waste of memory is to request 3
|
|
banks of memory,
|
|
A2GS that way you can be sure that at least 2 will be aligned.
|
|
AFA Gary J Maybe you could do it with a load segment, A2.
|
|
AFA Gary J (sorta what I'm dealing with)
|
|
Matt DTS A2GS: That doesn't follow.
|
|
Matt DTS (Oh, never mind. That way you have at least two contiguous banks.
|
|
I get it.)
|
|
A2GS Ok...
|
|
A2GS now for my 2nd Q....Anyone happen to know the delay time between
|
|
when you press
|
|
A2GS a key and when the system goes into Repeat Key mode? Assuming I'm
|
|
reading
|
|
A2GS $c000 directly.
|
|
Matt DTS It depends on how the user's set the delay in the Control Panel.
|
|
AFA Gary J Yes.
|
|
AFA Gary J (Matt types fast :)
|
|
AFL Scott (Even when he's sick!)
|
|
AFA Gary J :)
|
|
A2GS Even if your reading $c000 directly?
|
|
A2GS reading = polling
|
|
Matt DTS Even if you're reading $C000 directly.
|
|
AFA Gary J Yes.
|
|
Dave Lyons Yes.
|
|
Matt DTS Otherwise the user-selected repeat rate would be meaningless in
|
|
programs that didn't use the Event Mgr
|
|
Matt DTS (which was nearly all of them when the IIgs was first
|
|
introduced).
|
|
A2GS Thanx...I thought that looked wrong :)
|
|
AFA Gary J A2GS: On your first question, you might try having a single load
|
|
segment that
|
|
AFA Gary J consists entirely of a single "ds" that is 128K long.
|
|
AFA Gary J It won't take up room on the disk (as sparcing takes care of
|
|
that), and it
|
|
AFA Gary J should have the effect you want.
|
|
Matt DTS A load segment would be a good way to do it since the Loader will
|
|
do the work for you. Just make it
|
|
Matt DTS bank-aligned.
|
|
AFA Gary J Yes.
|
|
Matt DTS (Note that LinkIIgs doesn't create DS records, but the file will
|
|
be sparse on a ProDOS disk.)
|
|
AFA Gary J Exactly!
|
|
Matt DTS ZapLink does create DS records and bank-aligned segments, but I
|
|
don't know if you can do that
|
|
Matt DTS selectively. (However, if you're going to have one bank-aligned,
|
|
you might want to make them all that
|
|
Matt DTS way so they're smaller on disk. Your decision.)
|
|
AFA Gary J I'm using that method to create absolute addressable memory in an
|
|
assembly
|
|
AFA Gary J program. It works great.
|
|
A2GS How can I guarantee that the 128k of 00's will start out on a bank
|
|
boundary?...
|
|
AFA Gary J The segment header, again.
|
|
AFA Gary J That's sorta what my other question was all about.
|
|
A2GS ah, yes..thanx...
|
|
AFA Gary J Ok.. any other earth shaking question out there?
|
|
AFA Gary J (even not earth shaking?)
|
|
AFA Gary J (I don't think Californian's like to hear those words :)
|
|
Dave Lyons Duded, I'm missing something re "Load segment." Isn't a load
|
|
segment any segment in a load file
|
|
Dave Lyons (that is, the output of a link, rather than an object file)?
|
|
Dave Lyons Duded = Dudes
|
|
AFA Gary J Yes. But the object file can specify the type of load segment it
|
|
is, like
|
|
AFA Gary J Init segment or DP segment.
|
|
AFA Gary J (Kind field)
|
|
AFA Gary J (is that what you mean?)
|
|
Matt DTS (Duded = Dude Editor)
|
|
AFL Scott ROTFL!!!:)
|
|
AFA Parik there is a loadname & a different segname. segname ='s load
|
|
segments i think
|
|
AFA Parik (ie, DATA1, DATA2, LOADSEG1, etc) and loadname = ???. dunno how
|
|
to set it.
|
|
AFA Gary J The "blank" segment, as it's sometimes called.
|
|
Dave Lyons Okay, but we still haven't *really* answered the question--how
|
|
*do* you make a segment load on
|
|
Dave Lyons a bank boundary, in the OMF? If it uses the BANKSIZE field, then
|
|
that isn't going to work
|
|
Dave Lyons for >64K segments, according to the description in Appendix F of
|
|
the Addison-Wesley GS/OS reference.
|
|
Dave Lyons ("It" = ZapLink or whatever.)
|
|
AFA Gary J I'd say that the Align field would have to be edited somehow.
|
|
Matt DTS You have to use the ALIGN field. Zaplink does this for you, and
|
|
maybe LinkIIgs has a way to do it too
|
|
Matt DTS but I don't know what it is.
|
|
Dave Lyons (I don't think the load *name* is relevant, btw.)
|
|
AFA Gary J Right, Dave. I think the sequential number is what's
|
|
important.
|
|
AFA Gary J Hmmm. How does Zaplink allow the user to set the Align? (Maybe
|
|
I need to read
|
|
AFA Gary J my docs)
|
|
Matt DTS If you specify the +B flag, it makes all segments bank-aligned (I
|
|
believe).
|
|
Dave Lyons Okay, that should work.
|
|
AFA Gary J I haven't tried it, but I think you should be able to edit a
|
|
single segment's
|
|
AFA Gary J header, no?
|
|
A2GS I think I'll just stick to requesting 3 banks....I'm not going to
|
|
get involved
|
|
A2GS in things which may give me headaches the following morning.
|
|
AFA Gary J A2GS: It's really quite easy.
|
|
AFA Gary J The only potential problem is the bank alignment.
|
|
AFA Gary J (But that can be licked)
|
|
Dave Lyons A2GS, if you do allocate 3 banks, you might then proceed to
|
|
Dispose of your handle and re-allocate
|
|
Dave Lyons just the 2 that you'll wind up using.
|
|
A2GS Exactly....that's the prob. that I've been trying to solve from
|
|
the beginning.
|
|
A2GS referring to Gary
|
|
Dave Lyons BTW, how come you need two consecutive banks, if it's any of our
|
|
business?
|
|
AFA Gary J (BTW: If you want good info on segmenting, get a hold of the
|
|
July/August, October,
|
|
AFA Gary J and November 1988 issues of Call-A.P.P.L.E.)
|
|
AFA Gary J (GOOD article by Mike Westerfield)
|
|
AFA Parik couldn't you ds 65534 and have a single codeseg with "label bra
|
|
label" and kee
|
|
AFA Parik them both in a loadseg?
|
|
A2GS Convenience...I'm working with some gorgeous transitions...going
|
|
from one
|
|
A2GS SHR screen to another...and I'm using 4 UNcompressed pics to test
|
|
the routines
|
|
A2GS I know....I could do all kinds of things to reduce the memory
|
|
A2GS substantially (how do you spell that? :) But I'm just testing
|
|
the routines
|
|
A2GS right now.
|
|
Dave Lyons Well, you're going to be unable to allocate your memory much more
|
|
frequently than if you allocated
|
|
Dave Lyons sepeate 32K chunks, for example.
|
|
Dave Lyons (For testing, no problem.)
|
|
A2GS All I need is this one 128k chunk...I'll worry about memory when
|
|
the routines
|
|
A2GS are done.
|
|
A2GS I'm done (finally :)
|
|
AFA Gary J Ok... GA, CodeMaster
|
|
CodeMaster gee, thanks :)
|
|
CodeMaster actually its 2 small questions...
|
|
CodeMaster :)
|
|
CodeMaster 1.) I have a small rotuine that will let me...
|
|
CodeMaster do 16 colors from 640 mode, but I have to use _SetPenPat
|
|
CodeMaster this is not so bad in it self, but I would like to now If any
|
|
one...
|
|
CodeMaster knows of a way to set the defalut color tables to do the same
|
|
thing?
|
|
CodeMaster Am I asking a questin that was al ready asked?
|
|
CodeMaster any one ? ga
|
|
Dave Lyons It wasn't asked tonight, CM. It's been asked before (of me
|
|
anyway)--it's
|
|
Dave Lyons a good question. The answer is that you *do* have to construct
|
|
patterns of $00 00 00..., $11 11
|
|
Dave Lyons 11..., etc yourself and use SetPenPat. There's no "SetDithColor"
|
|
QuickDraw call.
|
|
Dave Lyons (I'm in a position to add one, but I'm not sure if it makes sense
|
|
at this stage in the toolbox's
|
|
Dave Lyons maturity--by now "everybody" is doing it themselves anyway.)
|
|
AFA Gary J (oooh! That's right! Hmmmmm.. got to think of some more
|
|
off-the-wall tool
|
|
AFA Gary J calls for Dave to work on :)
|
|
Dave Lyons :)
|
|
Dave Lyons I've got some pretty off-the-wall ideas anyway.
|
|
CodeMaster so, your saying the way I am doing it is OK?
|
|
Dave Lyons CM, Yes--the "right" way to draw in one of the standard 16
|
|
640-dithered colors is to do a
|
|
Dave Lyons SetpenPat to a pattern of, say, sixteen $55s for color 5.
|
|
CodeMaster sure, like _RemoveFont
|
|
CodeMaster right, thas what I'm doing now, just thought that there might be a
|
|
more...
|
|
CodeMaster effecent way to do it.
|
|
CodeMaster thanks,...
|
|
Dave Lyons RemoveFont? What would you guys use that for, and how badly do
|
|
you want it?
|
|
CodeMaster 2.) Is there a way to know if a NDA has been activated?
|
|
CodeMaster you really want to know, dave?
|
|
CodeMaster I'm not kiding...
|
|
CodeMaster I would use it to help ( as a begining ) develop..
|
|
CodeMaster a typesetting application for the GS.
|
|
Dave Lyons CM, Yes--I had not given any thought to a RemoveFont, so "step 0"
|
|
in getting one is to
|
|
Dave Lyons tell me what it's for & how useful it would be. (I can't promise
|
|
that convincing me is enough to make
|
|
Dave Lyons it happen, of course.)
|
|
CodeMaster ok, here goes...
|
|
CodeMaster I work on the Mac all day as a Systems Admin for a typesetting
|
|
house,
|
|
CodeMaster we have over 2000 PS fonts on a 160 Apple HD,
|
|
CodeMaster an operator, or typesetter, can use any of these faces at any
|
|
given time.
|
|
CodeMaster now, the mac will not let me have all 2000 ( and growing ) faces
|
|
loaded
|
|
CodeMaster at one time, so I must use Suitcase II to load and unload faces at
|
|
will.
|
|
CodeMaster Now that the application we use can recongize the fact that faces
|
|
have been
|
|
CodeMaster added or removed, it makes life a LOT easier!
|
|
CodeMaster It is my impression of the GS, that a tyesetting application
|
|
CodeMaster can be developed that can do just about anythging a typesetter on
|
|
the mac
|
|
CodeMaster do, and a lot cheaper.
|
|
A2GS Absolutely!
|
|
A2GS Who's gonna write it?
|
|
CodeMaster I'l right it!
|
|
Dave Lyons You have postscript fonts, and you're using them with the GS Font
|
|
Manager? (I'm confused.)
|
|
CodeMaster no dave, I'm not using PS fonts with GS Font Manager, I'm just
|
|
CodeMaster saying how I use PS fonts on the mac
|
|
CodeMaster and how I would like to use them on the GS.
|
|
CodeMaster now you understand?
|
|
CodeMaster there is really no reason that a typesetting app cannot ber
|
|
CodeMaster developed on the gs!
|
|
CodeMaster the only thing the gs lacks is an easy method to load and unload
|
|
faces...
|
|
Dave Lyons Still not sure why we need a RemoveFont--is it just so you don't
|
|
have to scroll through a
|
|
Dave Lyons six-mile-tall scrolling "Font" menu?
|
|
CodeMaster thast helps, but Allso there is not enough memory to hold very
|
|
many faces
|
|
CodeMaster at once, also, you realy don't want ALL 2000 faces in your font
|
|
folder, do you?
|
|
CodeMaster it really makes system admin a real pain!
|
|
Dave Lyons Well, on the GS (and the Mac too, I think) fonts are not usually
|
|
in memory. Although the NAMES
|
|
Dave Lyons may be in memory.
|
|
CodeMaster thats why I use Suitcase II on the Mac, so I don't
|
|
CodeMaster have to place ALL the fonts in the SYSTEM folder.
|
|
CodeMaster no, the PS fonts are not, but the bit map screen fonts are.
|
|
CodeMaster the name, ID, and bit mapo info are all in memory, a block for
|
|
each face.
|
|
CodeMaster multiply that by 2000 possible faces!
|
|
CodeMaster thats a lot of memory!
|
|
Dave Lyons The bitmap fonts are *in memory* even if you haven't used them
|
|
yet? I know they aren't on the GS,
|
|
CodeMaster thats ore then my 4.25 meg gs.
|
|
Dave Lyons and I *thought* they weren't on the Mac either--I know I've heard
|
|
a lot about fonts being Purgable
|
|
Dave Lyons on the Mac, so they can free up their memory when needed.
|
|
CodeMaster ok, lets put it this way, if I use _AddFontVar...
|
|
CodeMaster I must load the font file into memory so that I can leet
|
|
CodeMaster the Font Manager know about a new face that I am adding the
|
|
CodeMaster Font Mgr font list.
|
|
CodeMaster I musr do this for each face I add that is not in the Font
|
|
Folder.
|
|
CodeMaster yes, the font info block is purgable.
|
|
Dave Lyons Okay, yes--for things you add with AddFontVar, you have to have
|
|
Dave Lyons the actual bitmap in memory, true.
|
|
CodeMaster both on the gs and the mac, but there still several bytes used per
|
|
face.
|
|
Dave Lyons (For each one in the Fonts folder, you're right, there is some
|
|
stuff in RAM for that. I don't
|
|
Dave Lyons think it's a whole block, but it's sure significant if you have
|
|
2000 families.)
|
|
CodeMaster right, thats what I'm getting at, I don't want all 200 faces in
|
|
the
|
|
CodeMaster systerm folder...
|
|
CodeMaster my startup drive is not that big, I must access another drive for
|
|
the facesd.
|
|
CodeMaster If I could develop a NDA like Suitcase II, an app for real
|
|
typesettingis
|
|
CodeMaster one step closer to market!
|
|
Dave Lyons Well...hmmm. Do you need the Font Manager to scale these fonts
|
|
for you?
|
|
CodeMaster absloutly!
|
|
CodeMaster I really don't want 16 different faces in memory for EACh possible
|
|
font size!@
|
|
Dave Lyons (Darn. I was hoping your app could manage the fonts itself! :)
|
|
CodeMaster let the machines scale it!
|
|
CodeMaster how do you mean, manage them it self?
|
|
CodeMaster why couldn't the gs handle scaling?
|
|
Dave Lyons Well, the Font file format is documented, and as far as QuickDraw
|
|
is concerned you can draw in
|
|
Dave Lyons any font that you have a Handle to (SetFont). QD is doing the
|
|
boldfacing/etc, not the FM. The FM
|
|
Dave Lyons is doing scaling & managing the Fonts directory, and that's about
|
|
it.
|
|
CodeMaster right, but Print Mgr needs Font Mgr to print properly.
|
|
CodeMaster Or so I thought.
|
|
Dave Lyons Okay, that's true--any printer drivers that are based on
|
|
DrawPicture do need the Font Manager to
|
|
Dave Lyons know about the fonts you're using. (Otherwise you get the same
|
|
resolution on paper as you had on
|
|
Dave Lyons the screen, giving ugly printed fonts even if a more detailed
|
|
version was available.)
|
|
Dave Lyons So you'd also need a way to do an "AddFontVar" without actually
|
|
keeping a copy of the bitmap
|
|
Dave Lyons in memory, right? I believe the current design requires that,
|
|
since you pass a handle (rather
|
|
Dave Lyons than, say, a pathname) to the font you're adding.
|
|
CodeMaster right, _AddFontVar needs a pointer
|
|
CodeMaster it would be VERY nice to have a call, say...
|
|
Dave Lyons (sez Handle)
|
|
CodeMaster _AddNewFont...
|
|
CodeMaster right, sorry :(
|
|
CodeMaster that woulkd take a full pathname
|
|
CodeMaster and then lete FM handle its normal file operations.
|
|
CodeMaster just like it does in the Font Folder.
|
|
CodeMaster if that was the case, each app can deal with adding and removeing
|
|
fonts
|
|
CodeMaster itself, there would not be a need for a NDA to do it.
|
|
Dave Lyons If there was a RemoveFont, what do you want it to do to existing
|
|
font handles derived from that?
|
|
CodeMaster purge and dispose
|
|
CodeMaster once I pass the font handle to the _AddFontVar call, I no longer
|
|
own that
|
|
CodeMaster handle, FM deals wioth it.
|
|
Dave Lyons Just leave them hanging? (Would be okay, I guess...they have the
|
|
App's ID anyway & will go
|
|
Dave Lyons away when the app quits.)
|
|
CodeMaster I hope that FM also disposes of it at ShutDown time!
|
|
Dave Lyons That was part of my question...if you Remove the font, that means
|
|
the FM no longer knows about your
|
|
Dave Lyons font, so it wouldn't specifically dispose of it at shutdown
|
|
time.
|
|
CodeMaster it should dispose of the handle at the same time it removes
|
|
CodeMaster the font name and num,be from the font avalable list.
|
|
CodeMaster so..
|
|
CodeMaster _RemoveFont ( FontID )
|
|
CodeMaster will remove the name and number from FM listings...
|
|
CodeMaster and purge and dispose of the handle to that face.
|
|
Dave Lyons But what if the font handle is still the current font in one or
|
|
more grafports, or if an application
|
|
Dave Lyons or DA has a copy of the handle & it going to use it later?
|
|
CodeMaster why would a DA have a copy of that handle?
|
|
Dave Lyons Because the DA called InstallFont a long time ago & kept the
|
|
result so it could draw in that font?
|
|
Dave Lyons (Maybe that's not polite DA behavior--I haven't used the FM much
|
|
from DAs. I guess InstallWithStats
|
|
Dave Lyons is better, along with careful SetPurgeStat calls.)
|
|
CodeMaster all the FM calls to add a font to a grafport use the font ID, not
|
|
the
|
|
CodeMaster handle to the font.
|
|
CodeMaster _AddFontVar is the only casll that needs that handle, and
|
|
Dave Lyons Mmm...if I InstallFont and GetFont, I've got a font handle.
|
|
CodeMaster once the call is made, the app
|
|
CodeMaster no longr has control of that handle.
|
|
CodeMaster _GetFont, thats from QD?
|
|
Dave Lyons Yes.
|
|
CodeMaster why do I need to get the handle of a font?
|
|
Dave Lyons (I'm talking about handles to fonts the FM produces, not the ones
|
|
you feed to AddFontVar--
|
|
Dave Lyons although you can *get* that same handle back when installing a
|
|
"plain" font, I believe).
|
|
CodeMaster what can I do with it?
|
|
Dave Lyons What can you do with a Font Handle? You can call SetFont
|
|
(QuickDraw) and draw with it, for one thing.
|
|
Dave Lyons You could InstallFont again, instead--I'm just trying to be
|
|
paranoid & figure out what could
|
|
Dave Lyons cause problems.
|
|
CodeMaster oh, nice, font control from QD!
|
|
CodeMaster right, I like being paranoid!
|
|
Dave Lyons What's wrong with that? It's always been there. QD could use
|
|
fonts before the FM was even
|
|
Dave Lyons written--if you load your own font off disk (or from a resource,
|
|
or whatever), you can do stuff
|
|
Dave Lyons with it using only QD if you want.
|
|
CodeMaster problems from all directions.
|
|
CodeMaster sure, there is really no way to know if an app has the handle or
|
|
not.
|
|
CodeMaster I know, I didn't mean to say that it waw anything wrong..
|
|
CodeMaster I just didn't think that far! :(
|
|
CodeMaster I'm sorry, I guess I didn't think this thing out far enough!
|
|
Dave Lyons CM, I'm still undecided on the idea....
|
|
CodeMaster dave, can you see any ay around this little problem?
|
|
Dave Lyons Feel free to write up some detail on how it would work & send it
|
|
to me (and/or DTS/etc)...it's
|
|
Dave Lyons worth exploring.
|
|
AFA Gary J Welp. I need to wrap up for the night. It's been interesting.
|
|
BCS Frank Great chat folks... beginning to appreciate my Crow-Quill pen
|
|
calligraphy. :)
|