|||||| |||||| || || |||||| |||||| || || ||| || || || || ||| |||| |||||| || |||| Your || || || || ||| || || |||||| |||||| || || |||||| |||||| GEnieLamp Computing || |||||| || || |||||| RoundTable || || || ||| ||| || || || |||||| |||||||| |||||| RESOURCE! || || || || || || || ||||| || || || || || ~ WELCOME TO THE A2Pro GENIELAMP! ~ """"""""""""""""""""""""""""""" ~ GNO/ME V2.0 ~ 3D LOGO FOR THE IIGS ~ ~ Nathaniel Sloan Now A2PRO.HELP ~ More Apple Assembly Lines ~ ~ GSOS SSW 6.0.1 ~ 8-Bit SSW 4.0.2 ~ GNO/ME 2.0 ~ Hierarchical Menus ~ ~ Shooting Yourself In The Foot ~ System II Brings GUI To 8 Bit Programs ~ ~ DDT Source & Schematics Now Available In A2PRO ~ ~ HOT NEWS ~ HOT MESSAGES ~ HOT VIEWS ~ ////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ GEnieLamp A2Pro ~ A T/TalkNET OnLine Publication ~ Vol.1, Issue 08 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Editor........................................................Jim Couch Publisher.................................................John Peters Copy-Editor............................................Bruce Maples \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\//////////////////////////////////// ~ GEnieLamp IBM ~ GEnieLamp ST ~ GEnieLamp [PR] ~ GEnieLamp TX2 ~ ~ GEnieLamp A2Pro ~ GEnieLamp Macintosh ~ LiveWire Online ~ ~ Member Of The Digital Publishing Association ~ GE Mail: GENIELAMP Internet: genielamp@genie.geis.com ////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ >>> WHAT'S HAPPENING IN THE APPLE A2Pro ROUNDTABLE? <<< """"""""""""""""""""""""""""""""""""""""""""""""""""""" ~ September 1, 1993 ~ FROM MY DESKTOP ......... [FRM] A2PRO ROUNDTABLE STAFF .. [DIR] Notes From The Editor. Staff Directory. HEY MISTER POSTMAN ...... [HEY] DEVELOPER'S CORNER ...... [DEV] Is That A Letter For Me? News from A2Pro Developers. TECH_TALK ............... [TEC] LIBRARY BIT BONANZA ..... [LIB] RTC Happenings. HOT Files Youc Can Download. SYSTEM SOFTWARE NEWS......[SSW] NIGHTS OF THE RoundTable [RTC] New System Software Examined! An Intro To The A2Pro RTC. LOG OFF ..................[LOG] GEnieLamp Information. [IDX]""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" READING GEnieLamp GEnieLamp has incorporated a unique indexing """"""""""""""""" system to help make reading the magazine easier. To utilize this system, load GEnieLamp into any ASCII word processor or text editor. In the index you will find the following example: HUMOR ONLINE ............ [HUM] [*]GEnie Fun & Games. To read this article, set your find or search command to [HUM]. If you want to scan all of the articles, search for [EOA]. [EOF] will take you to the last page, whereas [IDX] will bring you back to the index. MESSAGE INFO To make it easy for you to respond to messages re-printed """""""""""" here in GEnieLamp, you will find all the information you need immediately following the message. For example: (SMITH, CAT6, TOP1, MSG:58/M530) _____________| _____|__ _|O__ |____ |_____________ |Name of sender CATegory TOPic Msg.# Page number| In this example, to respond to Smith's message, log on to page 475 enter the bulletin board and set CAT 6. Enter your REPly in TOPic 1. A message number that is surrounded by brackets indicates that this message is a "target" message and is referring to a "chain" of two or more messages that are following the same topic. For example: {58}. ABOUT GEnie Effective July 1, GEnie's non-prime time connect rate drops """"""""""" to $3.00 per hour, a reduction of 50% from the current rate. The monthly fee has been restructured, and moves from $4.95 to $8.95, for which up to four hours of non-prime time access to most GEnie services, such as software downloads, bulletin boards, GE Mail, an Internet gateway, multi-player games and chat lines, are allowed without charge. To sign up for GEnie service, call (with modem) 1-800-638-8369. Upon connection type HHH. Wait for the U#= prompt. Type: XTX99014,DIGIPUB and hit RETURN. The system will then prompt you for your information. Need more information? Call GEnie's customer service line (voice) at 1-800-638-9636. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" /////////////////////////////////////// GEnie_QWIK_QUOTE //// / "true story: I was downloading a file the other day when / / my phone line was hit by lighting. Just before it died / / my modem said "*&^%$#@!" / ////////////////////////////////////////////// G.MARON //// [EOA] [FRM]////////////////////////////// FROM MY DESKTOP / ///////////////////////////////// Notes From The Publisher """""""""""""""""""""""" By John Peters [GENIELAMP] FOR OVER A YEAR NOW... Atarians have enjoyed graphics with their """""""""""""""""""""" GEnieLamp ST thanks to David Holmes and his revolutionary text reader, TX2. I am happy to announce that are now offering similar graphics support for the IBM platform with a new viewer called HyperRead by David Leithauser. Like the ST/TX2 counterpart, HyperRead uses keypresses or a mouse to quickly jump to various articles in the magazine. Also, again like the ST/TX2 viewer, HyperRead allows graphics to be incorporated within the text. Next month we will be offering screenshots of the PD_Q and Mini_Byte reviews for the IBM issue just as we do in GEnieLamp ST/TX2. If you're interested in checking out GEnieLamp IBM / HyperRead you can get your copy of GEnieLamp IBM with the HyperRead viewer from the GEnieLamp menu located on page 515. Until next month... John Peters GEnieLamp/DigiPub RoundTable [EOA] [DIR]////////////////////////////// A2PRO ROUNDTABLE STAFF / ///////////////////////////////// By Matt Deatherage [M.DEATHERAGE] ______________________________________________ APPLE II PROGRAMMERS & DEVELOPERS ROUNDTABLE _____ ______ ______________________________________________ /_____|/______\ /__/|__| ___|__| Head Sysop: Matt Deatherage (M.DEATHERAGE) /__/_|__| /_____/ Assistants: Steve Gunn (A2PRO.STEVE) /________|/__/ __ __ __ Greg Da Costa (A2PRO.GREG) /__/ |__|__/______ /_//_// / Todd P. Whitesel (A2PRO.TODDPW) /__/ |__|________// / \/_/ Jim Maricondo (A2PRO.DYAJIM) ______________________________________________ NATHANIEL SLOAN NOW A2PRO.HELP! Effective immediately, Nathaniel Sloan, """"""""""""""""""""""""""""""" who's starting a new RTC next week on Friday nights (a week from tonight) here in A2Pro and is also helping us spread the word about A2Pro's services in A2, will be using the name A2PRO.HELP, the same as you've seen on our RoundTable door for several months. We'd previously forwarded that mail to one of the staff (on a rotating basis); we're pleased to have someone actually behind the mail address to help folks with problems when they don't know where else to go. So if you see A2PRO.HELP posting in A2Pro and A2, don't panic, it's just Sloanie. If you want to reach him for personal matters, his personal account is still C.SLOAN. [EOA] [HEY]////////////////////////////// HEY MISTER POSTMAN / ///////////////////////////////// Is That A Letter For Me? """""""""""""""""""""""" By Jim B Couch [J.COUCH2] o BULLETIN BOARD HOT SPOTS o A2PRO ODDS & ENDS o WHAT'S NEW? o THROUGH THE GRAPEVINE o PROGRAMMER'S CORNER o HOT TOPICS o MESSAGE SPOTLIGHT >>>BULLETIN BOARD HOT SPOTS <<< """"""""""""""""""""""""""""""" [*] CAT5, TOP5, MSG{53}..........ProDev DDT8 & DDT16 debugging tool [*] CAT9, TOP18, MSG{1}.................Micol Advanced BASIC IIe/IIc [*] CAT15, TOP1, MSG{45}................................Tool Locator [*] CAT15, TOP15, MSG{93}................................Menu Manager [*] CAT15, TOP34, MSG{32}..........................Text Edit Tool Set [*] CAT16, TOP2, MSG{63}...........................Programmer's Cafe [*] CAT17, TOP5, MSG{53}...............................AppleTalk-ing [*] CAT29, TOP36, MSG{1}.........System II - GUI for 8-bit Developers [*] CAT30, TOP5, MSG{21}.......................Procyon Announcements [*] CAT36, TOP32, MSG{26}........................................Logo >>> A2PRO ODDS & ENDS <<< """"""""""""""""""""""""" FOR THE RECORD... I am not in the Apple II engineering group. I never """"""""""""""""" have been, I've never claimed to be. I've been in the same department at Apple since the day I started -- Developer Technical Support. We help developers create software and hardware products for Apple platforms. I don't know where this myth that I work in the Apple II group comes from (I did work in the Apple II subgroup of DTS when we had one), but folks won't let go of it. (It's worse on Internet, where they persist in thinking that everyone who works on the Apple II is in DTS.) --Matt (*new* graphics/sound programming RTC Thursdays @ 9:30 PM ET!) (M.DEATHERAGE [A2Pro Leader], CAT1, TOP3, MSG:78/M530) INFORMATION ON EASYMOUNT FOR 6.0.1 NEEDED ]['m looking for the current """"""""""""""""""""""""""""""""""""""""" format of EasyMount documents. The System 6.0 format was documented in FTN.E2.FFFF in May, 1992, but it has since changed for System 6.0.1. The 6.0.1 release notes mention that they now include an alias pathname at the end, but actually looking inside a current EasyMount document shows a lot more data (about 20 bytes) tacked on the end, after that. I haven't been able to figure out what these bytes are, myself. I'm sure the new format will eventually be described in an updated FTN, but who knows when the next batch of those will be? I'm currently working on a product that could greatly take advantage of knowing what the current EasyMount document file format is. -= Lunatic (: (A2.LUNATIC [LEGO!], CAT11, TOP20, MSG:1/M530) 6.0.1 TASKMASTER BUG WORK AROUND System 6.0.1 has a _slight_ bug in """""""""""""""""""""""""""""""" TaskMaster (but it's related to list controls which is why I'm posting it here...) If you have a window with multiple lists controls that accept events and can all be targetable AND you check the wmClickCount field when the user double- clicks you'll have this problem. The problem: - double click on a list member - (assume you go to a dialog or something) - exit the dialog to get back to the window - hit an arrow key or tab - bam! Your dialog is opened. Because the key down event doesn't clear the wmClickCount field it will seem to your code that the user double-clicked (this is because TaskMaster returns a wInControl code). The solution is to just zero the click count field before calling TaskMaster. Bryan (SOFTDISK.INC [Bryan Zak], CAT15, TOP28, MSG:87/M530) IS THERE A TECHNICAL MANUAL FOR APPLETALK PROGRAMING? Just a quick """"""""""""""""""""""""""""""""""""""""""""""""""""" question: Is there a tech manual somewhere that one would need to program for AppleTalk, or do the technotes contain the complete documentation? Dave (JUST.DAVE [m530 daily!], CAT17, TOP5, MSG:53/M530) APPLETALK PROGRAMMING MANUALS The Technical Notes don't even _begin_ to """"""""""""""""""""""""""""" cover how to use AppleTalk. To understand the protocols and how they relate to each other, you'll want "Inside AppleTalk" from Addison-Wesley. (Second Edition is better.) For details of how to make those calls (addresses, parameter blocks, etc.) on the Apple II, you need "AppleShare Programmer's Guide for the Apple II" from Resource-Central (functioning as APDA). Don't try to do AppleTalk programming without these books; they're a few hundred pages each. :) --Matt (Live programming help six nights a week! We must be insane!) (M.DEATHERAGE [A2Pro Leader], CAT17, TOP5, MSG:57/M530) HELP NEEDED WITH INTERFACE FOR ROTATING FUNCTION I'm working on the """""""""""""""""""""""""""""""""""""""""""""""" interface design for an object oriented drawing program. I want to include a rotate function that allows the user to specify the point to rotate the selection about. Is there a clean way to implement "hey you--do this" with this sort of function? The best concept I've come up with is: 1. User selects the objects using any of the standard selection techniques. (click, drag box, lasso, etc.) 2. User selects the Rotate tool. 3. User clicks on the pivot point and drags out a rubber-band rotating line. The objects selected become "live" at this point and rotate in the same orientation as the rubber-band line. I visualize a similar implementation for a "Resize" tool. In that case the initial click would be the focal point of the expansion or contraction. I'm not sure that this is very intuitive. Does anyone have any simpler suggestions. All ideas are welcomed as I haven't written any code yet. Thanx! Curt (C.CLIFTON5 [Curt], CAT21, TOP3, MSG:53/M530) HUMOR ONLINE PART 1 Chuck, a program is NEVER finished, it's just """"""""""""""""""" shipped. :) Burger (BURGERBILL, CAT5, TOP5, MSG:50/M530) HUMOR ONLINE PART 2 > a program is NEVER finished, it's just shipped. :) """"""""""""""""""" but a programmer can be finished if it doesn't ship. (CHUCK.K [ProDev], CAT5, TOP5, MSG:52/M530) >>> WHAT'S NEW? <<< """"""""""""""""""" APPLE IIGS SSW V6.0.1 ARRIVES ON GEnie As you've probably seen by now, """""""""""""""""""""""""""""""""""""" Apple IIgs System Software 6.0.1 is available here in A2Pro, as well as Apple II System Software 4.0.2. Here's some information about the files available in the library. A2 and A2Pro have the same files, but only A2Pro has the release notes describing technical changes between these and previous releases. A2Pro also has COMPLETE601.BXY, a 3 MB file that contains all six disk archives and the release notes for 6.0.1. COMPLETE601.BXY _requires_ 3 MB of disk space on _one_ volume to download successfully, so don't even try it unless you have one disk partition or volume with well over 3 MB available (allowing some breathing room). It's for people who are going to download everything anyway -- it's just one file instead of seven. It takes a little over an hour to download at 9600 bps using ZModem. This is our current Blue Plate Special file. [*][*][*] There is no update disk from 6.0.1 because all the executable files have changed. Apple used a new linker (not externally available) that produces smaller OMF files, so everything that has code in it is different from 6.0. [*][*][*] The licensing package from Apple that all licensees received includes a "GSBug" disk. Our copy of that is in Overland Park at the Resource Central offices and I have not seen it, but as far as I can tell _nothing_ on it is more recent than what we already have available in our libraries (for example, it contains GSBug 1.6b20). I expect actual new versions of things within a few months, so to avoid people being unhappy by spending money downloading something they really don't need, I've chosen at this point not to put those things in our library. If I discover something on that disk that is newer than what we already have available, we'll put it up immediately. [*][*][*] This topic is closed for replies (as usual); it's just for announcements about things in our library. If you have questions about 6.0.1, they probably already fit an existing topic in our bulletin board. You can type TOPics ALL at the bulletin board prompt to get a nice list of all the bulletin board topics if you don't know where the topic you want might be. Remember, if your question is "I own a program that's misbehaving under 6.0.1," you need to ask about it in A2, our sister forum that's home to all Apple II subjects _except_ programming. If it's "I _wrote_ a program that's misbehaving under 6.0.1," you're in the right place. Apple has not yet released descriptions of the new tool calls in 6.0.1 (there are about 20 or so), so we'll be unable at this time to answer the questions "How does this new call I read about in the release notes work?" When the information is available, we'll be sure to let everyone know how to get it. [*][*][*] Credit where credit is due dept.: We found out about 26 hours before release that we could have 6.0.1 online at midnight EDT on August 12th. At that time, we had nothing prepared. I did a bunch of crunching and spent most of last night getting everything uploaded to both A2 and A2Pro, but that's not suitable by our standards to release the files. Folks also had to download everything and make sure it unpacked correctly. Counting the COMPLETE601.BXY file, that's about 6 MB of files to check out in one day just here in A2Pro, and Todd had a work crunch he couldn't get out of on such short notice. I'd like to thank Steve Gunn for helping coordinate even though he's on vacation, and Nathaniel Sloan and Tara Dillinger for downloading a few disks each to verify everything was OK with the uploads. Dave Miller got the notices on the door set up on very short notice so you'd know it was here when you entered the roundtable. _Special_ thanks go to Nate Trost who not only helped download and verify files, he also made sure the descriptions and keywords matched previous files, released everything, set the one-time files and generally made things happen while Steve's on vacation and I was finally asleep. :) --Matt (Live programming help six nights a week! We must be insane!) (M.DEATHERAGE [A2Pro Leader], CAT1, TOP8, MSG:16/M530) APPLE II SSW LISTING For those running offline sessions who'd like to """""""""""""""""""" download the files, here are all the 6.0.1 and 8-bit 4.0.2 files available in A2Pro: No. File Name Type Address YYMMDD Bytes Access Lib ---- ------------------------ - ------------ ------ ------- ------ --- 3495 COMPLETE601.BXY X A2PRO.HELP 930811 3077760 11 5 Desc: COMPLETE IIgs 6.0.1 -- all six disks 3494 REL.NOTES.402 X A2PRO.HELP 930811 1920 10 5 Desc: Release Notes for 8-Bit 4.0.2 SSW 3493 REL.NOTES.601 X A2PRO.HELP 930811 61696 16 5 Desc: Release notes for IIgs SSW 6.0.1 3492 SYS402.8BIT.BXY X A2PRO.HELP 930811 105344 9 5 Desc: ProDOS 8 System Disk 4.0.2 3491 SYSDISK.601.BXY X A2PRO.HELP 930811 606336 6 5 Desc: Main SYSTEMDISK of IIGS System 6.0.1 3490 SNTHLAB.601.BXY X A2PRO.HELP 930811 534400 6 5 Desc: SYNTHLAB disk for IIGS System 6.0.1 3489 FONTS.601.BXY X A2PRO.HELP 930811 296448 7 5 Desc: FONTS disk for IIGS system 6.0.1 3488 STOOLS2.601.BXY X A2PRO.HELP 930811 521984 12 5 Desc: SYSTEMTOOLS disk #2 for system 6.0.1 3487 STOOLS1.601.BXY X A2PRO.HELP 930811 536192 10 5 Desc: SYSTEMTOOLS disk #1 for system 6.0.1 3486 INSTALL.601.BXY X A2PRO.HELP 930811 520576 8 5 Desc: INSTALL disk for IIGS System 6.0.1 --Matt (live at lunch) (M.DEATHERAGE [A2Pro Leader], CAT1, TOP8, MSG:17/M530) [*][*][*] 5TH YEAR OF APPLE ASSEMBLY LINE MAGAZINE AVAILABLE NOW! After an """"""""""""""""""""""""""""""""""""""""""""""""""""""" inordinately long delay (things have been really weird for me since just before KansasFest, and I apologize), I've uploaded the fifth entire year of Apple Assembly Line magazine. It should be released by this weekend. These issues contain lots more on 18-digit math, a string searching algorithm, lots of quick ways to turn two decimal or hex digits into binary or vice-versa, a sample command for BASIC.System, putting both DOS 3.3 and ProDOS on one disk, reading DOS 3.3 disks from ProDOS and lots, lots more. As always, source code is included. I hope to get the sixth year and maybe more uploaded over the weekend if I can get the descriptions written. Trying to find one line of keywords to describe all that's in each issue is getting more difficult! :) --Matt (Live programming help six nights a week! We must be insane!) (M.DEATHERAGE [A2Pro Leader], CAT1, TOP19, MSG:12/M530) DDT SOURCE CODE AND MANUAL AVAILABLE I am uploading the source code, """""""""""""""""""""""""""""""""""" manual, and a description of the hardware today. The latest version of the DDT16 is v1.7. The last version was v1.3.1. The big jump in version numbers is just to get things back in synch with the DDT8 code. V1.7 contains bug fixes for the "RT" command. In v1.3.1 the "RT" command would not work correctly if system interrupts were active. Also in v1.7 when the DDT hits a BRK instruction it traps it with "TRace" mode active. This makes it easier to insert BRK instructions in your code and then press the "down arrow" on the DDT to skip over them and get to the next instruction. ***** BUG ALERT ***** I also found a bug that I have not had time to track down. The "ET" Execution Time command reports times that are too high if you use it in banks other than bank 0. (CHUCK.K [ProDev], CAT5, TOP5, MSG:53/M530) DDT SCHEMATIC NOW AVAILABLE I just uploaded the DDT schematic. It is in """"""""""""""""""""""""""" Library 17 (Debugging Tools) along with the source and manual files. The file numbers are 3477 DDT16.SRC.BXY - Complete source code for the DDT16 v1.7 3476 DDT.MANUAL.BXY - Manual for DDT8/DDT16 in Appleworks format. 3497 DDT.DRAWING.BXY - Schematic for DDT16. The schematic upload contains a postscript file and an AutoCAD DXF file of the schematic. Please post your questions and modifications here so that we can all benefit. Thank you, Chuck Kelly / ProDev, Inc. (CHUCK.K [ProDev], CAT5, TOP5, MSG:54/M530) >>> THROUGH THE GRAPEVINE <<< """"""""""""""""""""""""""""" MICOL SYSTEMS STILL DEVELOPING BASIC PRODUCTS As far as I can tell, """"""""""""""""""""""""""""""""""""""""""""" Micol Systems is still actively developing their BASIC products, but you never see them online. Ron Lewin has previously stated that only a small percentage of their customers are online, so they choose not to spend online time helping that small percentage. We tried to get Micol to set up a company support category here like the others you see in the #30-#36 range here in A2Pro. We asked in October, and in January they said they might be interested, but we never could get a response out of them after that. I don't believe Micol Systems currently has a GEnie account. --Matt (*new* graphics/sound programming RTC Thursdays @ 9:30 PM ET!) (M.DEATHERAGE [A2Pro Leader], CAT9, TOP18, MSG:4/M530) RUMORS OF MICOL'S DEMISE ARE GREATLY EXAGGERATED! I wrote to Micol """""""""""""""""""""""""""""""""""""""""""""""""" about a month ago, asking them to comment on a rumor that they'd folded after the demise of the Liberty card, and President Stephen Brunier replied in part: "I can assure you, that this is not the case. Perhaps this is a rumor started by someone who would like to see us defunct. I am currently working on version 5.0 of MAB for the GS and expect to release it in about a month." "I cannot speak with so much authority about MABUG as I have not spoken with the gentleman who operates it. However, an associate of mine is in regular communication with him, and he has not told me of any changes. This is something he would have done if there were no more MABUG." MABUG may not be dead, either, but all I can say is that I'm having a heck of a time raising them. -Doug Cuff Editor, GEnieLamp A2 (D.CUFF [GEnieLamp A2], CAT9, TOP18, MSG:6/M530) >>> PROGRAMMER'S CORNER <<< """"""""""""""""""""""""""" MICOL ADVANCED BASIC TIPS WANTED I am looking to here from other people """""""""""""""""""""""""""""""" who use Micol Advanced BASIC for the IIe/IIc. Pointers and tips on using the MAB environment are currently being solicited. Who knows, maybe someday I'll have a question you could answer. Gerry (the Applesoft-aholic) (G.WRIGHT12 [Gerry], CAT9, TOP18, MSG:1/M530) MICOL ADVANCED BASIC SOURCE EXAMPLES NEEDED I have been interested in """"""""""""""""""""""""""""""""""""""""""" Micol Advanced BASIC as a better way to teach BASIC on the Apple IIe. It seems to provide the only complete compiled BASIC package for this platform. I am looking for info on availability of Source Code for examples and any teaching aides that may have been developed. ------John Buckley------ Guilderland Apple Byters (J.BUCKLEY6, CAT9, TOP18, MSG:2/M530) ANOTHER USE FOR DDT HARDWARE Using the DDT as an interrupt source for a """""""""""""""""""""""""""" profiler: It is possible to use the DDT hardware for other purposes besides debugging. For example: The 6522 one the DDT card would make a very good interrupt generator for anyone interested in making a code profiler. You would probably want to move the IRQ output from the 6522 from the NMI to the IRQ pin on the card edge connector to prevent NMIs from occurring during disk I/O. You could then write a program that would initialize the 6522 and cause it to output interrupts at regular intervals. At each interrupt you would then check the program counter value pushed on the stack during the interrupt to see where your program was executing. By keeping track of where your program spends most of its time you would have a code profiler. The feature about the 6522 that makes it very well suited for this task is its internal counter and how it generates interrupts. When the counter counts down to 0 it generates and interrupt and then proceeds to continue counting down again from $FFFF. In this way you could accurately time events even if you can not service the interrupt right away. (CHUCK.K [ProDev], CAT5, TOP5, MSG:55/M530) PAGE ONE STACK GUARD TRICK (I think this is too simple to be put in """""""""""""""""""""""""" "Optimeisters".) Anyone guarding against a page one stack with something like: tsc and #$ff00 xba dec beq just use tsc cmp #$200 blt It is smaller and also guards against a page zero stack. (And thanks for the thanks in IR 2.0.2 Matt. :) I was quite pleased to see it.) Jay (JAY.KRELL, CAT3, TOP19, MSG:65/M530) CHECK FOR ROM 3 CONTROL PANEL DISABLE JUMPER I finally figured out how """""""""""""""""""""""""""""""""""""""""""" Apple's SetStart control panel checks for the ROM 3 Control Panel disable jumper! First, a check is made to see if the ROM is version 3. Then data byte $E8 is read from the keyboard microcontroller ROM or RAM. If bit 6 is set, the jumper is present... Here is some Merlin source for it: ~FWEntry #0;#0;#0;#$FE1F ply plx pla pla cpy #3 ;is ROM 3 ? bne :noJumper ~ReadKeyMicroMemory #JumperByte;#MemoryLoc;#$0009 lda JumperByte and #%01000000 ;is present? beq :noJumper :isJumper etc... :noJumper etc... MemoryLoc adrl $E8 JumperByte da 0 That's all there is to it! :) |) \ / |_)RIAN \/\/ELLS Internet: b.wells5@pro-magic.oau.org (B.WELLS5 [Brian], CAT3, TOP19, MSG:69/M530) >>> HOT TOPICS <<< """""""""""""""""" WHY APPLE SAYS NO TO TOOLSETS I was recently asked privately why """"""""""""""""""""""""""""" Apple's still telling people not to write system toolsets, since it seems pretty obvious Apple's not going to make 220 more system tools for the IIgs. The answer is the same as the answer for anything in the system that is currently reserved -- there's not enough for everyone, so individuals shouldn't use them. A good example of this is using file types -- there are only 256 of them, just like system tool set numbers. However, over the past several years, Apple has assigned more than 500 file type and auxiliary type combinations, and that's not counting all the uses of $F1 - $F8 (which aren't tracked) or all the uses of "standard" types like Text or Binary. If people had been stealing file types for these years, there would be conflicts on nearly every user's system, and the file types would be useless as a form of file content identification. (Some UNIX types will argue that this is how it should be, since other systems survive without file types, but that's not the debate here.) Where things are reserved, they have to stay reserved because there's not enough for everyone to have one. Following compatibility rules is still important even with Apple's releases of system software obviously slowing down, because those same rules keep you compatible with other people's inits, patches and desk accessories. There are ways to work around any reserved things, though they may take a bit more programming. You can make user tool sets for applications, or inits that respond to IPC requests if you need your code accessible to more than applications. If you insist on stealing things that are reserved, there _will_ be conflicts and you _will_ be making the IIgs less useful faster. If two programs are available to do two things you need, but they both require their own "TOOL105", the user has to do file manipulations just to launch the other program. That's not very acceptable. Sometimes the user would have to reboot, which is even worse. The same applies for making your own tool numbers in existing tool sets, or stealing system request codes, or system resource types. There are ways around _all_ of this without creating incompatibilities on people's systems. Stealing any of these things is very much like stealing a file type -- it can easily create problems, and it simply tells your users that you're not clever enough to figure out a standard way around a standard problem without risking their compatibility. I believe that if these things start to happen, the market will probably reject those programs that are incompatible due to programmer laziness like this. --Matt (*new* graphics/sound programming RTC Thursdays @ 9:30 PM ET!) (M.DEATHERAGE [A2Pro Leader], CAT15, TOP1, MSG:45/M530) HIERARCHICAL MENUS: HOW DO THEY DO THAT? We've seen them out there """""""""""""""""""""""""""""""""""""""" before. We KNOW that it can be done on the IIgs. So my question is this: Does ANYBODY out there have any experience with creating and/or maintaining hierarchical menus on the IIgs? Note that this is _NOT_ intended to be a discussion on whether Hmenus are any good or not. What I DO want, though, is some suggestions and advice from people who have tried to do this before (and succeeded) with the IIgs. Ultimately, I hope to create an add-on program (an INIT or a DA) that will use hierarchical menus. This will be a "power" feature that the user will knowingly and deliberately add to their system. Note that using Hmenus is crucial to the success this program; without them, it will be self-defeating. ANY information will be extremely helpful!! :) --SnakeBytes (SNAKEBYTES, CAT15, TOP15, MSG:93/M530) USERS CAN'T ADD HIERARCHICAL MENUS TO THEIR EXISTING PROGRAM Programs """""""""""""""""""""""""""""""""""""""""""""""""""""""""""" define and use the menu items in their menus. A user can't add hierarchical menus to an application for the same reason you can't use Foundation to add a "Print Desktop..." menu item to the Finder and expect it to work -- no matter how they're accessed, the user can't add new menu items. The best you could hope for is rearranging existing menus. If you're interested in using them in your own applications, Seven Hills has an init that provides hierarchical menu services to applications. They don't support it here in A2Pro, but perhaps they could be convinced to. :) --Matt (*new* graphics/sound programming RTC Thursdays @ 9:30 PM ET!) (M.DEATHERAGE [A2Pro Leader], CAT15, TOP15, MSG:94/M530) SEVEN HILLS' INIT BUGGY Not to start an argument (well, yeah, maybe I do """"""""""""""""""""""" want to start one ;-), but I simply would not use Seven Hills' "Hierarchic" init in a commercial program It's just too darned buggy. I know of four developers that have already toyed with hierarchical menus and now SnakeBytes will make five. Lee has asked me a couple of times what it would take (he'd like to see it used in our help system's pop-up menu.) If we all write such an init, I pity the poor user trying to run our software on his machine. With patch, upon patch, the poor Menu Manager will be freaking out. This feature really should have been implemented by Apple. Regardless of whether or not they approve of it, it would have resulted in more stable system software for the USER -- the real goal of system software eh? It's not like they didn't make other concessions for poorly written programs... Bryan (stepping off the soapbox...) (SOFTDISK.INC [Bryan Zak], CAT15, TOP15, MSG:95/M530) HIERARCHIC INIT MAY BE WAY TO GO, BUGS AND ALL >>> M.DEATHERAGE (Matt) """""""""""""""""""""""""""""""""""""""""""""" > The user can't add new > menu items. The best you could hope for is rearranging existing menus. That is _exactly_ what I had in mind! :) I want to take an existing, standard menu item (I could find the menu & item ID's pretty easily) and brutally mutate it into a Hmenu, right under the main application's nose. That is the theory, anyway. >>> SOFTDISK.INC (Bryan) >It's just too darned buggy I've heard that. The Hierarchic INIT has become infamous because of this. I was hoping that I could write my own Hmenu system instead, which brings me to... >If we all write such an INIT...the poor Menu Manager will be >freaking out. You're right on this one, Bryan. Like you say, if every developer creates their own Hmenu system for their own programs, the now-slick Menu Manager will end up being patched to pieces and reduced to a pile of spaghetticode. >This feature should have been implemented by Apple. What Apple did or didn't do here is not important. Sure, SOME sort of standard or system for supporting Hmenus would have been nice, BUT... the fact remains that there ISN'T one, and there probably won't ever be one, with the Apple II <-> Apple, Inc. situation being what it is. (It never hurts to ASK, though!! :) As for making my "power user" add-on work: What I might do is give the Hierarchic INIT a shot anyway, (bugs & all) just too see if I can make the thing work at all. At least I'd be working with a Hmenu system that is up & running already, and I wouldn't be adding even more confusion by cobbling up a system of my own (which probably would be peppered full of bugs anyway) :) -SnakeBytes :)= (SNAKEBYTES, CAT15, TOP15, MSG:99/M530) MAIN PROBLEM WITH HIERARCHIC IS THAT IT IS AN INIT Isn't the main problem """""""""""""""""""""""""""""""""""""""""""""""""" with the Hierarchic INIT simply that?! That it is an INIT! I don't like the idea that when you get a new program (purchase or shareware) that I have to have a special INIT to run it. The thing then sits in my machine doing nothing, chewing up RAM and boot time on the off chance that it may be used. Wouldn't a link file be better? It's like the 209 FTA tool or whatever number it is. Don't present a dialog saying it should be installed and then quit, either load it yourself from your program's folder, or keep it in your resource fork and install it on the fly. Applications shouldn't need anything extra apart from the Apple tools and what comes with the program itself! - Richard (RICHARD.B, CAT15, TOP15, MSG:100/M530) THERE ARE A NUMBER OF GOOD REASONS FOR IT'S BEING AN INIT >>> RICHARD.B """"""""""""""""""""""""""""""""""""""""""""""""""""""""" > Applications > shouldn't need anything extra apart from the Apple tools and what comes > with the program itself! Different people have different philosophies on it. NDAs can't use user tools, and some would argue that linking in the hierarchical menu code for every program that uses it wastes memory and disk space. Stealing system tools is a bad idea because everyone can't have one; there will be conflicts. If you write a bunch of programs that use the same functionality, making it globally available through IPC requests isn't such a bad idea. (We should probably start a new topic in Category 11 if we want to continue this discussion, since it's not directly Menu Manager related.) --Matt (Live programming help six nights a week! We must be insane!) (M.DEATHERAGE [A2Pro Leader], CAT15, TOP15, MSG:101/M530) INITS ARE ALSO MUCH EASIER TO UPDATE IN CASE OF BUG FIXES One other """"""""""""""""""""""""""""""""""""""""""""""""""""""""" advantage of having the HMenu code in an INIT... if (God forbid) BUGS are ever found in the HMenu code, the INIT can be updated instead of requiring users to update every single app that uses HMenus. Much easier. (QUALITY, CAT15, TOP15, MSG:104/M530) HIERARCHIC INIT DOCS AVAILABLE FROM SEVEN HILLS OK, the Good News is that """""""""""""""""""""""""""""""""""""""""""""" I finally got some developer docs on how to use the Hierarchic INIT by Seven Hills. The Bad News is that all the included source code is in Merlin-16+, and about the only programming language I know is ORCA/Pascal. I've figured out that calls to the Hierarchic INIT appear to made by some sort of entry-point and stack-based dispatch scheme (similar to the GS toolbox). The Message Center is also used somehow. Beyond this, I can't make heads or tails of it. :/ (why they didn't simply use IPC communications or make the INIT a toolset instead is beyond be, IMHO) The calls themselves are pretty simple (and they are well described). Its trying to figure out how to start up the INIT & make the calls from within ORCA/Pascal that is going to be the tricky part. Does anyone have any experience with this? I could post up some of the Merlin source code that I have if anyone needs/wants to see what I'm talking about. Any information would be extremely helpful. Thanks!! -SnakeBytes :)= (SNAKEBYTES, CAT15, TOP15, MSG:130/M530) WELL MY GUESS IS... I'm not familiar with the Hierarchic init, but from """"""""""""""""""" what you've said, it's my guess that you use the Message Center (MessageByName?) to get the entry point of the init and then you simply jsl to that location. I'm not sure exactly what is going on though. Chances are good that you're not going to be able to do this in 100% assembly -- you're going to need some kind of "DispatchTo" routine. And some glue code for the various routines used by the init. You'll most likely have to write this in assembly. > why they didn't simply use IPC communications or make the init a toolset Well, making it a toolset would be illegal and if they used IPC they wouldn't be able to support 5.0.4. That's my guess. Bryan (SOFTDISK.INC [Bryan Zak], CAT15, TOP15, MSG:131/M530) >>> MESSAGE SPOTLIGHT <<< """"""""""""""""""""""""" Category 16, Topic 2 Message 63 Fri Aug 13, 1993 JIMZ [A2 JimZ] at 05:35 EDT I found this in the Borland Forum on Compu$erve. I thought you all might get a kick out of it. ================================ SHOOTING YOURSELF IN THE FOOT ================================ C: You shoot yourself in the foot. C++: You accidentally create a dozen instances of yourself and shoot them all in the foot. Providing medical assistance is impossible since you can't tell which are bitwise copies and which are just pointing at others and saying "That's me, over there." FORTRAN: You shoot yourself in each toe, iteratively, until you run out of toes, then you read in the next foot and repeat. If you run out of bullets, you continue anyway because you have no exception-handling abilities. Modula-2: After realizing that you can't actually accomplish anything in this language, you shoot yourself in the head. COBOL: USEing a COLT 45 HANDGUN, AIM gun at LEG.FOOT, THEN place ARM.HAND.FINGER on HANDGUN.TRIGGER and SQUEEZE. THEN return HANDGUN to HOLSTER. CHECK whether shoelace needs to be retied. LISP: You shoot yourself in the appendage which holds the gun with which you shoot yourself in the appendage which holds the gun with which you shoot yourself in the appendage which holds the gun with which you shoot yourself in the appendage which holds the gun with which you shoot... BASIC: Shoot yourself in foot with water pistol. On big systems, continue until entire lower body is waterlogged. FORTH: Foot in yourself shoot. APL: You shoot yourself in the foot, then spend all day figuring out how to do it in fewer characters. Pascal: The compiler won't let you shoot yourself in the foot. SNOBOL: If you succeed, shoot yourself in the left foot. If you fail, shoot yourself in the right foot. Concurrent Euclid: You shoot yourself in somebody else's foot. HyperTalk: Put the first bullet of the gun into left foot of you. Answer the result. Motif: You spend days writing a UIL description of your foot, the trajectory, the bullet and the intricate scrollwork on the ivory handles of the gun, When you finally get around to pulling the trigger, the gun jams. Unix: & Is foot.c foot.h foot.o toe.c toe.o % rm *.o: No such file or directory % Is % XBase: Shooting yourself is no problem. If you want to shoot yourself in the foot, you'll have to use Clipper. Paradox: Not only can you shoot yourself in the foot, your users can too. Revelation: You'll be able to shoot yourself in the foot just as soon as you figure out what all these bullets are for. Visual Basic: You'll shoot yourself in the foot, but you'll have so much fun doing it that you won't care. Prolog: You tell your program you want to be shot in the foot. The program figures out how to do it, but the syntax doesn't allow it to explain. 370 JCL: You send your foot down to MIS with a 4000-page document explaining how you want it to be shot. Three years later, your foot comes back deep-fried. --JimZ [*][*][*] 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 A2, the GEnieLamp staff strongly urge you to give the bulletin board area a try. There are literally thousands of messages posted from people like you from all over the world. [EOA] [DEV]////////////////////////////// DEVELOPER'S CORNER / ///////////////////////////////// News From The A2Pro Online Developers """"""""""""""""""""""""""""""""""""" By Jim B.Couch [J.COUCH2] >>> 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 30 PROCYON, INC. 31 SOFTDISK PUBLISHING 32 MORGAN DAVIS GROUP (MDG) 33 GS+ MAGAZINE 34 JEM SOFTWARE 35 LUNAR PRODUCTIONS 36 THE BYTE WORKS Each month this column feature highlights and news from various developers who provide support via A2Pro. >>> NEWS FROM THE INDEPENDENT DEVELOPERS <<< """""""""""""""""""""""""""""""""""""""""""" DYA/DIGISOFT TILL ALIVE AND WELL Yes, we're still alive! """""""""""""""""""""""""""""""" The summer has been very hectic for us. I'll be away personally again for the next week so I figured I'd catch up here now :-) Things will be back to normal come September! I will upload the Orca/C sample Twilight II module source (showing how to use SOUND, color cycling, and setup in a T2 module!) when I get home. Pascal and assembly source coming next! And yes, we're still working on finishing the IPC documentation as well, so you can start writing true T2-savvy programs! Speaking of T2-savvy programs, Express 2.1 now supports T2 (it tells T2 to background blank while something is spooling.) Thanks to Seven Hills! We will be starting work on T2 v1.2 very soon too! The future holds a lot in store! :-) <>> NEWS FROM PROCYON INC. <<< """""""""""""""""""""""""""""" PROCYON ACCEPTING ORDERS FOR GNO/ME V2.0! August 8, 1993 (Littleton, CO) """"""""""""""""""""""""""""""""""""""""" Procyon Enterprises announced today that they are now accepting orders for the new version of their GNO/ME UNIX system for the Apple IIGS. Jawaid Bazyar, Vice President of Procyon and lead engineer of the GNO project, said "GNO/ME 2.0 represents a substantial improvement over the original, which was in its own right a ground-breaking work. In the past year since the original release, we've listened to customer's concerns and addressed most of them. We brought even more UNIX power to the IIGS by implementing the most powerful inter-process communication system available for the IIGS". UNIX is quickly becoming the de-facto standard among operating systems. Even operating systems which never claimed to be UNIX compatible are rushing to provide POSIX compliance interfaces for their systems. (POSIX is the International Standards Organization's UNIX standard). "This release reaffirms our commitment to the Apple IIGS, a very capable computer that many developers abandoned", said Matt Gudermuth, President of Procyon. "Some people ask if the IIGS is powerful enough to run UNIX, and many used to answer with a resounding NO!. We answer these people by pointing out that the first mainframe computers that ran UNIX were far less powerful than the Apple IIGS. The IIGS is here to stay, and we're going to keep supporting it with our powerful system software." GNO provides UNIX features in an application environment that runs "on top of" GS/OS, so that the IIGS software everyone enjoys is actually enhanced by using GNO. Included as standard with the GNO system are almost one hundred standard UNIX utilities and some IIGS-specific ones such as print spooling from text or desktop applications and a "shell-in-a-window" New Desk Accessory. Full support for remote access to a IIGS via a modem, and built-in ultra high speed serial communications means that GNO is the perfect system for writing communications programs. "Communications is one of GNO's strong points," remarks Derek Taubert, the individual responsible for the upcoming Internet access software for GNO. "Because GNO does all the low-level work for me, and gives me a simple interface to access it, I can concentrate on the task at hand instead of worrying about writing things like interrupt handlers". GNO comes with comprehensive documentation covering all aspects of the system, including programming the kernel, the shell, the C and assembly libraries, and utilities. For more information, including information on upgrade pricing, contact Procyon at: Procyon Enterprises Incorporated Apple IIGS Software Publishing and Development P.O. Box 620334 Littleton, CO 80162-0334 USA (303) 781-3273 --------------------------------------------------------------------------- GNO/ME 2.0 Upgrade Plan To upgrade your copy of GNO/ME to 2.0, send a """"""""""""""""""""""" check or money order, along with your GNO serial number, to the address at the end of this note. At this time we cannot accept credit card payments; we apologize for any inconvenience. It is very important that you include your serial number. If you have lost your original disks or manual, and don't know your serial number, we have records for almost everyone (the database we were using destroyed some records. Hopefully we can fully restore the database during the update process). If you purchased GNO before the final 1.0 release, but didn't receive a real copy of GNO 1.0, subtract $10 from the upgrade price. No fibbing! We know who got 1.0 and who didn't :-) A $3 shipping fee applies to all domestic orders (including Canada), $8 for overseas shipping. Full GNO 2.0 system, including all printed documentation: $30 GNO 2.0 system with only user references (kernel overview and shell manual): $20. Do not forget to add in the shipping fee - we cannot ship orders that do not include shipping charges. Send orders to: Procyon Enterprises Incorporated P.O. Box 620334 Littleton, CO 80162-0334 --------------------------------------------------------------------------- GNO 2.0 New Feature List This is not a complete list - there were """""""""""""""""""""""" obviously bugs corrected, but we didn't feel it was important to list them here. Questions about fixed bugs are welcome. Kernel Now provides six Inter-Process Communication methods for """""" unprecedented power (signals, semaphores, pipes, pseudo-terminals, messages, and ports). Named Prefix support. No matter what your hard drive partitions are named, every GNO system has a /bin, /usr, /dev, /etc, and other standard UNIX partition names. The serial drivers were completely rewritten to allow high-speed throughput, up to 38400 baud, and hardware and software (XON/XOFF) flowcontrol. They also implement the complete set of BSD control functions that are applicable on a IIGS. Pipes are up to 30 times faster than in 1.0! Compatible with System 6.0.1 features and applications - all standard System Software utilities (such as Finder) now run in GNO. Compatible with all of the ORCA 2.0 version languages, including ORCA/C and ORCA/Pascal. New fork2() call makes it easy to fine-tune parameters of a new process. Console driver now maps arrows and OA-sequences to ESC codes that can be read through the GS/OS read call. GNO now sends SendRequest codes to indicate GNO start up and shut down. Removed limit on number of user semaphores (screate) Code optimization means all these new features only take up 20K more of memory! Support for TCP/IP and sockets is implemented inside the kernel Shell Directory stacks save typing when moving among many directories. """"" Complete command, filename, and variable-name expansion - just hit TAB to have the shell finish typing for you. Better support for running scripts in the background Command-line editor is now completely user-configurable. Don't like the standard editing keys? Change them! More environment variables for customizing the operation of the shell. More options in the PROMPT variable. New built-ins show all accessible commands. Can now invoke gsh with arguments to execute scripts and commands (for use inside other programs). More built-ins can have output redirected or piped. Environment New installer automatically sets up a GNO system on any """"""""""" computer, and creates default configuration files. No more fussing with "rc" files to get GNO up and running. Complete docs for programming the kernel, shell and programmer's libraries; and documentation for the standard UNIX utilities. The documentation is now indexed. All applicable utilities now use the termcap library for flawless remote-access support. gsh, vi, less, more, etc. all use termcap. Print spooling utilities for both text files and GUI programs (like AppleWorks GS). gsi - Graphical Shell Interface NDA allows you to run a shell in a window while in a desktop program Suspend NDA allows the user to suspend a desktop application and return to the shell. 'fg' resumes the desktop program. rz/sz - Utilities for sending and receiving files via X,Y, and ZModem protocols; these all work in the background! copycat - a dumb terminal with some not-so-dumb features for quick modem use. Password-protected logins with multiple user accounts, and library routines to help programmers access user information. 'ls' utility is restartable and much faster. 'launch' command allows you to run a ProDOS 8 (or other incompatible) program and return directly to GNO without going through another program launcher. GNO Snooper CDA can now kill processes. Replacement C library that works better with all of GNO's features. Even better HFS and AppleShare support. More than twice as many standard utilities as version 1.0. (PROCYON.INC, CAT30, TOP5, MSG:21/M530) A COUPLE OF QUESTIONS ABOUT GNO/ME I have a couple of question about the """""""""""""""""""""""""""""""""" new GNO/Me shell and kernal program for the //gs one what is the cost of the new version? two what exactly are the multitasking capabilities gained by using GNO/ME thanks, Matt Tartaro (M.TARTARO [DoZer], CAT30, TOP1, MSG:16/M530) HERE IS THE SCOOP ON THE NEW GNO/ME SHELL >I have a couple of questions """"""""""""""""""""""""""""""""""""""""" >about the new GNO/Me shell >and kernal program for the //gs one what is the cost of the new version? $89, same as the previous version. >two what exactly >are the multitasking capabilities gained by using GNO/ME GNO uses preemptive multitasking; your programs don't have to be specially written to multitask properly (okay, there are a few things you don't want to do, but those same things tend to wreak havoc in standard GS/OS, too). Preemption provides the possibility of dynamic scheduling, which automatically assigns CPU time to the processes according to an algorithm that keeps user response times reasonable. GNO doesn't multitask desktop programs like The Manager does; GNO's multitasking is far more controllable and is easily programmable. GNO has six forms of interprocess communication, so no matter what you're trying to communicate there's a way to easily do it. GNO _does_ let you multitask one standard desktop application (this can be Switch-It!, for example) along with 32 shell applications; basically, you can have daemons running regardless of the 'mode' (GUI or text) the machine is in. Daemons range from print spoolers to shells on a terminal to BBS's to "run X at a certain time" systems. GNO supports remote logins (multiple users) through serial ports, modems, terminals, and soon, network connections. If you want more info, just let me know - everyone here knows I have a big mouth :-) Jawaid (PROCYON.INC, CAT30, TOP1, MSG:17/M530) >>> NEWS FROM SOFTDISK PUBLISHING <<< """"""""""""""""""""""""""""""""""""" GSLIB TO BE RELEASED TO THE PUBLIC SOON! In the next couple of weeks, """""""""""""""""""""""""""""""""""""""" I'll be pleased to finally release GSLib to the public!!! We've hired a new guy to join our programming team and about 2 months ago, my manager said that I needed to fully document our in-house development tools so that his learning curve (and those that follow) can be as short as possible. What is GSLib? Put simply: An extension to the GS Toolbox. Without going into a lot of detail, GSLib is a collection of routines that can be linked into any ORCA or MPW IIGS language. There are around 350 routines spread among 32 "Managers" or "Tool sets" just like the IIGS's toolbox. Two examples: RMOpenResourceFile (in GSLib's Resource Manager). Very similar to the Toolbox OpenResourceFile call except that RMOpenResourceFile checks to see if the disk the specified file resides on is write-protected and the caller has asked for read-write access. If so, it displays a dialog asking the user to unlock the disk (if the disk can be unlocked!). If the disk can't be unlocked, or the user cancels when asked to unlock the disk, a write-protect error is returned. This makes it sooo much easier to trap problems before they can even occur. BytesToString (in GSLib's String Tool Set). Takes a long integer value and converts it to a string (eg, 50K, or 5.4MB, or 1.2GB). A flags parameter controls the number of decimal points (from 0 to 3) and whether or not the size suffix should be appended ("K", "MB" and "GB"). [*][*][*] While these routines don't seem that complicated (they're not!), having them in one central library, along with hundreds of other, useful, routines makes it much easier for us to get issues of Softdisk G-S finished. If they can help us, they can probably help you too! [*][*][*] So, why are we giving this away free? Especially when you realize that we've invested hundreds of hours of our time developing it (and thus thousands of dollars). Simple. If even _ONE_ person submits something to Softdisk G-S because of it, we've gained. And if submitters are using GSLib, it makes it that much easier for us to maintain and update. You'll be free to use GSLib in any of your programs, we do ask that you include a copyright notice (Some portions of this program Copyright 1990- 1993, Softdisk Publishing) somewhere (either in the program itself, or in its documentation), but that's it -- no money is involved (unless you want to buy me lunch! ;-) Sometime in the next week or two, I'll be uploading GSLib along with interface files for ORCA/M, ORCA/Pascal, ORCA/C, APW C, MPW IIGS C, MPW IIGS assembler and MPW IIGS Pascal. There will also be complete toolbox-like documentation (I spent over 130 hours on this documentation!) in the form of Microsoft Word documents. I _personally_ will provide paper versions of the documentation at cost (whatever Kinko's charges me for 400 double-sided pages and postage to you). Along with the library, interfaces and documentation is sample code. There will be a sample application and DA for MPW IIGS Pascal and MPW IIGS assembler. [*][*][*] I'm really excited about *finally* releasing this thing! I've been building up to this for almost three years (GSLib actually grew out of NDALib if anyone remembers that...) Bryan PS: Wait until you see some of the cool routines, like TaskMasterPlus! (SOFTDISK.INC [Bryan Zak], CAT31, TOP9, MSG:67/M530) >>> MORGAN DAVIS GROUP NEWS <<< """"""""""""""""""""""""""""""" INTERESTED IN MD-BASIC FOR THE MACINTOSH? If MDG were to port MD-BASIC to """"""""""""""""""""""""""""""""""""""""" run on the Macintosh, how many of you would be interested in it? With people snapping up IIe Cards for their LC's, or who have powerful Quadras sitting next to their Apple IIs, the Macintosh seems an obvious platform to utilize for Applesoft development (just as MPW is for Apple II and IIGS application development). What do you think? (MORGAN-DAVIS, CAT32, TOP3, MSG:63/M530) REQUEST FOR MODEMWORKS SUGGESTIONS AND BUG REPORTS We're working on the """""""""""""""""""""""""""""""""""""""""""""""""" next version of ModemWorks, so we're interested in your suggestions (especially bug reports, if you have any, on 3.0). (MORGAN-DAVIS, CAT32, TOP4, MSG:19/M530) >>> NEWS FROM GS+ MAGAZINE <<< """""""""""""""""""""""""""""" YES GS+ WILL PUBLISH YOUR PROGRAMS! Well, after talking with a few people """"""""""""""""""""""""""""""""""" at KansasFest and after receiving a few E-Mails, I believe it's time to announce that... YES, WE WILL PUBLISH PROGRAMS THAT YOU WRITE IN GS+ MAGAZINE! Actually, we have always had this policy, j. :-) It seems that a lot of people really don't realize that. If you've got a super-cool IIGS program and you want to see your name in print, give us a holler. (JWANKERL [Joe], CAT33, TOP2, MSG:2/M530) >>> NEWS FROM GEM SOFTWARE <<< """""""""""""""""""""""""""""" THE WORKS 4.0 VS ULTRA 4. INQUIRING MINDS WANT TO KNOW! Lately there has """"""""""""""""""""""""""""""""""""""""""""""""""""""" been a lot of discusion over in A2 about The Works 4.0 update to Appleworks. I am curious as to what impact the new 4.0 Appleworks will have on Ultra programmers? Will our old macros work, or will they need to be re-written. Will Ultra 4 be included, or does it need to be installed onto The Works 4.0. If so, will Ultra 4 work, or will there be a new version. Perhaps you could discuss some of the ultra programing specfics here. Inquiring minds want to know. -Jim Couch (J.COUCH2 [A2Pro Lamp], CAT34, TOP3, MSG:1/M530) THE WORKS 4.0 WILL INCLUDE ULTRA 4.3 RUNTIME MODULE Most old macros will """"""""""""""""""""""""""""""""""""""""""""""""""" work fine, unless of course they're directly accessing addresses which move, or execute keystroke sequences no longer valid. An Ultra 4.3 run-time will be included, but a new Compiler and Debug will be needed to write Ultra 4.3 programs. (BRANDT [Randy], CAT34, TOP3, MSG:2/M530) >>> NEWS FROM LUNAR PRODUCTIONS <<< """"""""""""""""""""""""""""""""""" HOW FAST IS NAMEOBJ How fast is NameOBJ? I am wary of anything that adds """"""""""""""""""" to compilation time. I am currently using a hack that patches in debug names at runtime, but it wastes space, doesn't currently work with debug code or routines within #pragma databank 1, and requires recompiling to remove the names. Jay (JAY.KRELL, CAT35, TOP6, MSG:19/M530) IT ONLY TAKES A SECOND I use NameObj from time to time. It's a post """""""""""""""""""""" processing command file that just munches your OBJ files to add a GSBug compatible name entry. It only takes less than a second to munch your OBJ files. I highly recommend it. Burger.. (BURGERBILL, CAT35, TOP6, MSG:20/M530) >>> NEWS FROM THE BYTE WORKS <<< """""""""""""""""""""""""""""""" BYTEWORKS RELEASES 3D LOGO FOR THE IIGS! """""""""""""""""""""""""""""""""""""""" Product : 3D Logo for the Apple IIGS Price : $95 Version : 1.0 Last Update : August 1993 Discuss in : Topic 32 3D Logo is a multimedia language, perfect for a wide range of programming. Logo is so simple to learn and use that it's taught to kids as young as second grade, yet it's also a powerful list processing language that is used for some of the same tasks as LISP. 3D Logo adds some awesome multimedia features to the traditional Logo language. It sports a 3D turtle, which can turn right out of the screen. Using special glasses, you actually see true 3D on your color monitor. It's so real some of our second grade beta testers actually tried to grab sapes they saw floating in front of the screen! The 3D turtle works great without the 3D glasses, too. Logo's turtle graphics are famous for making it easy to draw shapes. Our 3D turtle makes it just as easy to draw wire frame models, complete with perspective! 3D Logo creates movies, too. A few simple commands can animate a shape, rotating it or propelling it across the screen. With a little more work, you can create cartoon-like movies. If you add Talking Tools, 3D Logo can talk, too. If you type Say "Hello. the computer actually reads the text and says, "Hello!" 3D Logo comes with a 196 page manual that introduces you to Logo and gives a complete reference to the Logo language. Each command includes at least a one-line example showing how it's used, and many commands are illustrated with short programs. You get a boot disk, a Logo program disk, and samples. Installer scripts make it easy to put Logo on your hard disk, or even set up a Logo boot disk for one drive computers. Logo comes with one pair of 3D glasses; you can buy additional glasses for $2 per pair. (BYTEWORKS, CAT36, TOP2, MSG:4/M530) 3D LOGO AND HYPERLOGO INTRODUCTORY SPECIAL 3D Logo retails for $95. """""""""""""""""""""""""""""""""""""""""" Later this year, we'll release HyperLogo GS, which will also retail for $95. During the introductory special, we're offering either package for $50 plus shipping. Shipping in the U.S. is $5. We also are offering a bundle which includes both 3D Logo and HyperLogo, but there's an obvious problem there: one of the packages isn't ready yet, but we don't want to cheat people who buy early. For that reason, you can buy the bundle now. It's $85 plus shipping (still $5 in the U.S.) If you buy the bundle, you'll be charged for 23D Logo now ($50 + $5) and the balance when HyperLogo ships. The bundle price won't get any better then, and it might get a little worse. 3D Logo comes with a 30 day money back garantee. Unlike some companies, if you return it, we _do_ want to know why -- we're curious types -- but any reason is good enough. We'll even refund the shipping you have to pay to get it back, up to a maximum of $5. We're that sure people will like it. 3D Logo is being printed now, and is due back Monday. It will take Jaccque a day or two to actually put the first batch of products together and start shipping some, so the first ones will go out around the middle of next week. As with any new product, we expect to get behind on shipping pretty quick, so it does pay to order early. With all of this in mind, you can order now. You can order online. Be sure to send your: Name Shipping address VISA or MC number What you are ordering What you expect to pay I'm pretty behind on e-mail, though, so I'd suggest calling or writing. You can reach us at: Byte Works, Inc. 4700 Irving Blvd. N.W. Suite 207 Albuquerque, N.M. 87114 (505) 898-8183 If you order the bundle and pay by check, send two: One for $55 and one for $35. We'll hold the $35 check until HyperLogo ships. If you'd like more information, in the form of a printed brocure, send a mailing address to any of the above places with a reminder telling us what you want information about, and we'll get a package off to you right away. -Mike Westerfield (BYTEWORKS, CAT36, TOP32, MSG:26/M530) 3D LOGO SAMPLES AND INFO IN A2PRO LIBRARY There are two new files in the """"""""""""""""""""""""""""""""""""""""" library that I hope you will find interesting. File 3516 is a list of all of the commands in 3D Logo 1.0. File 3517 is a sample movie showing four molecules rotating in 3 dimensions. This movie shows off the graphics and list processing power of Logo in general, and the 3D graphics capabilities of 3D Logo in particular. Rotating molecules like the ones in this movie were the centerpiece in the popular 3D Logo talk in KansasFest -- the one Steve Disbrow says was his favorite in his summary of KansasFest in the July GS+. Movies of rotating objects are very easy to create with 3D Logo, as the people who saw that session will tell you. If you don't have 3D Logo or some movie player, be sure to stop by A2 and download one of the Paintworks compatible movie players, too. Mike Westerfield (BYTEWORKS, CAT36, TOP32, MSG:37/M530) [EOA] [TEC]////////////////////////////// TECH_TALK / ///////////////////////////////// RTC Happenings """""""""""""" By Nate C. Trost [N.TROST] >>> ON HARDWARE DESIGN <<< """""""""""""""""""""""""" So Todd! I have a question on Hardware design! ok, shoot. What's the difference between MOS/CMOS and TTL ? TTL = Transistor to Transistor Logic right? TTL is older, slower, but much more static resistant than MOS. TTL does stand for Transistor to Transistor Logic, but the important side of it is really that the transistors are bipolar as opposed to MOS (metal-oxide-semiconductor) transistors. Are they logic compatable? They can be. Most devices have inputs and outputs that are to a good extent compatible with both. So for instance the Apple II Bus logic is compatable with both MOS and TTL? Within limits, yes. There is a basic parameter (fanout) which you must worry about regardless of the logic family -- essentially it is the ability of each chip driving the bus to juice up the inputs of all the other chips on the bu AAAhhhh.. :-) For example, the RamFast C has LS TTL drivers which can handle almost anything, but the D has HCT drivers which are not as good at overpowering noise and such. That's why you "can't" use a Rev D on the //e. Fanout as a term is the ratio of a chip's own outputs and inputs (i.e. how many of its own inputs could it drive in the worst case and still meet timing specifications). If you convert everything to currents, you can spot lots of potential bus flakiness problems, including clock signal distribution and others. That's cool! That makes logic circuits that much easier to understand!!!! I thought there was some big huge honking difference between TTL and MOS. There IS a big honking difference between TTL and MOS. But it is not the kind of inherent compatibility that would normally be implied by a statement like that... For instance, the voltage levels are different, and can be made compatible without too much trouble. It is another factor in a design however. That's why so many chips have "universal" inputs and outputs. More specifically, TTL wants to see voltages below about .8 volts for zero, and above roughly 2 for one. CMOS will take things above or below 2.5 volts (give or take a little) without too much sweat. As for outputs, TTL drives about .4 volts for zero, and 3.5 (I think) for one. CMOS will drive almost all the way t +5 and Ground. CMOS power consumption is also much less than TTL, that's why it's so popular. CMOS power consumption is often related linearly to the frequency at which its inputs change. So what kind of rates can CMOS handle on average, or does that vary...Rates of logic inputs changing.. easily above 1 mhz. state of the art CMOS runs at 100mhz and beyond, usually at exorbitant cost in power. <[rob] R.SANT1> ---------------- Thought to drop by and continue on the questions regarding InvalRect, InvalRgn... Okay, I tried a short routine by Bryan, which said basically, GetPortRect, push the address of the Rect, and call InvalRect. I get Zebra stripes whereever the cursor crosses the scre and can no longer access the menu bar. <[A2Pro Leader] M.DEATHERAGE> -- You're not doing this between BeginUpdate and EndUpdate, are you? <[rob] R.SANT1> ---------------- No, I did read #75... <[A2Pro Leader] M.DEATHERAGE> -- Are you sure the current port is set to the window in question? <[rob] R.SANT1> ---------------- Each pass through the MainScan loop calls FrontWindow, and sets the ports...So, when I call GetPortRect, it should be the port of th front window? <[A2Pro Leader] M.DEATHERAGE> -- The current port is the last thing you passed to SetPort. <[PseudoNate] N.TROST> --------- FrontWindow does not set any ports. <[A2Pro Leader] M.DEATHERAGE> -- If you called SetPort(FrontWindow), then it will be. Otherwise, who knows? <[PseudoNate] N.TROST> --------- Are you calling SetPort with the results of FrontWindow? <[rob] R.SANT1> ---------------- Sequence is... Call FrontWindow, GetRefCon (Handle to a series of pointers), Set the pointers for location of text, various graph routines, etc. Current port should be the fr window shouldn't it? <[PseudoNate] N.TROST> --------- No. You can't assume front window will be the current port. <[rob] R.SANT1> ---------------- If I have only one window open, what else wou it be? <[PseudoNate] N.TROST> --------- Rob--The desktop, menu bar, anything. ALSO. You should check to see if the Window is YOUR Window. Compare the window pointer given to you by FrontWindow with your window pointer. <[Sloanie] A2PRO.HELP> --------- Or, just do a _GetWKind. <[PseudoNate] N.TROST> --------- You don't want to call InvalRect on a NDA window or something. :) <[rob] R.SANT1> ---------------- When I call front window, I call GetWFrame, and compare it to the params set on my graphi window (i.e. 100001111101). <[A2Pro Leader] M.DEATHERAGE> -- Rob, that's not a guaranteed way to know the window is yours. <[A2Pro Leader] M.DEATHERAGE> -- Someone else could have the same window frame bits. <[Sloanie] A2PRO.HELP> --------- Use _GetWKind. <[PseudoNate] N.TROST> --------- Or compare the window pointers. >>> OFF THE DEEP AGAIN (again :-) <<< """"""""""""""""""""""""""""""""""""" <[Sloanie] A2PRO.HELP> ------ that's what we ought to do one RTC.. make all of our questions and answers one-word _Send/AcceptRequests calls. --------------- tellJimILikedSloaniesIdea <[Sloanie] A2PRO.HELP> ------ sloanieSaysThankYou ---------------------- jimzSaysSteveIsAnIdiot ---------------------- srqGoAway, everyone! <[Snow Crash] N.TROST> ------ nateSaysWowDoesHeMissSpaceCharacters --------------- tellSloanieYouCantHaveApostrophiesInSendRequestN --------------- tellSloanieItWouldMessUpTheCompilerOrAssembler ---------------------- tellNateJimzAgrees <[Sloanie] A2PRO.HELP> ------ tellSteveOkThenIWontUseThem --------------- tellSloanieThankYou <[LEGOLunat!c] A2.LUNATIC> -- lunatic_Says_Well_You_Could_Always_Use_Underscor Steve_Says_Then_We_Look_Like_NOVELL_API_Documentation <[Snow Crash] N.TROST> Sloanie -- Error $0120 (reqNotAccepted) >>> ON 3-D GRAPHICS <<< """"""""""""""""""""""" <[SNS Ken] K.WRONKIEWIC> -- Someone gave me a 3D rendering equation at another RTC, but it doesn't work right.. The equation was X(2d)= X(3d)/Z(3d) and Y(2d)= Y(3d)/Z(3d).. ------------- That was me.. (The scaling equation) That's how you should do it for single objects... That is the simplest 2d -> 3d Transform with High- being a horizon "Into" the screen.. That's used for a "star field" you have to calcula perpendicular to that for 3-d Rotations of complex objects. If you want to rotate an Object of "Objects" then need to have X,Y,Z all modify two actual parameter for that equation.. have X modify X,Y Y modify Y,Z Z modify Z,X Understand? <[Nate] N.TROST> ---------- Shawn Quick uploaded a 3D stars routine that does that.... File #976 is a demo with assembly source. File #972 has C code with the algorithm. >>> ON WINDOWS 'IN THE BACKGROUND" <<< """""""""""""""""""""""""""""""""""""" <[ToddM] T.MYERS4> ------------- I want to write an 'event reminder' as an NDA and I was wondering if there is a tool call that I can get a window up on the desktop from the background? <[Bryan Zak] SOFTDISK.INC> ----- Todd: nope. It takes a bit of work (I just we through this with Jay during developemnt of Don't Forget). <[A2Pro Leader] M.DEATHERAGE> -- Not easily, Todd. Trying to do notifications when you're not "in control" is a hassle. <[Bryan Zak] SOFTDISK.INC> ----- Todd: Depending on just how much control you need.....the best, safest and easiest way to do what you want is to use a RunQ item. But, keep in mind that's only applicable while the Desk Manager is up. If you want to track time beyond that, you'll need a heartbe task. (Wherein you can set a flag so that the next time your RunQ is executed you can notif the user of past events...) systemSaysDeskStartUp and systemSaysDeskShutdown are your friends in this case. [EOA] [KFE]////////////////////////////// KFEST REPORT / ///////////////////////////////// Through the Bleary Eyes """"""""""""""""""""""" By Nate Trost [N.TROST] >>> My Report of KFest '93 <<< """""""""""""""""""""""""""""" (long, rambling and written Like It Happened....in a haze :-) To summarize KansasFest 1993 (in the beginning of the report no less :-), it was a blast. Words cannot accurately describe the experience. There IS no substitute for being there. However, some of the events do deserve retelling.... This was the fifth KansasFest (also known as the A2-Central Summer Conference. As my fourth visit (having only missed the first year), Avila sure looked familiar. All was quiet as I walked up. There was slight confusion on my part as I discovered that unlike previous years, there was no dorm registration in the Marian Center. Undaunted, I ventured out to the Ridgeway dorm. As I entered, I passed Dean Esmay, A2's head honcho. Dean didn't recognize me at first. Thanks Dean. :-) Sure enough, I got my room key and some registration information (which I promptly ignored :-). Now it was time to bring two boxes of computer junk, duffel bag full of clothes, backpack full of A/V stuff, crate of manuals, and a cooler full of Mountain Dew into the room. Actually this was overkill since I didn't really spend any time in my room and didn't use anything but the Mountain Dew....but since everything was so heavy to bring in and out, I _had_ to mention it here. ;-) As I was carrying stuff in and out I ran into my first Crowd of Talking People. Dean, Tyler Weisman, Joe Kohn, Mike Westerfield, and several other people I didn't know were standing outside Ridgeway. After chatting with them for a while I went in search of the A2Pro staff. The majority of the A2Pro staff (Matt, Steve, Sloanie, Dave and JimZ from A2) had already left for Matt's hotel for the Hair Shaving Party. Because of this I decided to experience the wonderful Avila Cafeteria dinner. After four years, you kind of almost like the stuff. :-) Inside I found the other attending members of the A2Pro staff, Jim Maricondo and Todd Whitesel (who had both elected to keep their hair). After grabbing the Avila equivalent of a personal 'pizza', I began to table-hop. Chatted with Lunatic, Tony Diaz, Andy McFadden (who I hadn't met before), Jim, Todd, Michael Lutynski, and a bunch of other people. Things started picking up when I returned to Ridgeway. More people were slowly arriving. I wandered the halls for a while, saying hi to people I knew and finding the names of people I didn't. Trying to determine which A2 RTC Hostesses were which turned out to be quite a challenge (well, not Tara ;-). By the end of the evening I had Susan MacGregor and GEna Saikin straight though. :-) One fun event while I was wandering the halls was running into Hangtime, who had possession of a Powerbook Dean had been using. As Tara, TomZ (and later Ellen Rosenberg plus one or two other people) and myself watched, Hang logged in as Dean. Much fun was had sending EMail to the rest of the staff calling them names and fooling Susan (in a RTC from her dorm room)...at least until Hang used one of his characteristic B-)> smiles. :-) A little later on, Softdisk showed up in the form of Jay Jennings and Bryan Pietrzak. I accompanied them on a food run in the mini-van they had rented. It was most interesting watching the interaction between the two in the car. Amazing they didn't kill each other on the way up..or while they were working in the same office. :-) (BTW, thanks for all the rides guys!) More wandering, more chatting, more fun. The gang that participated in the Head Shaving party returned with gleaming heads and sporty Apple/Newton baseball caps. More wandering. I think it was at around this time that Susan (or GEna, can't remember which) snapped a picture of Mike Westerfield, Marcus Staender (visiting from Germany), and myself sporting nifty 3-D glasses (more on that later). Eventually, Bill Heineman showed up with some luggage and a load of Focus hard drive cards. After chatting for about half an hour, we actually made it to his room to unload all his stuff. He then proceeded to enlighten me on what he had been up to. This was good, since it was something like 2am and the way things were going I knew I'd probably end up dozing through the keynote and Bill's Avatar update. :-) More wandering, finishing my source code handout for my session, finding that Steve still wasn't quite ready for his session, dawn. Eek. I had stayed up all night. I grabbed breakfast and chatted with the rest of the early, bleary-eyed crowd, grabbed my hard drive, and headed off to NOMDA with Bryan and Jay in the Softdiskmobile. I registered and realized I left my handouts back at Avila. Eek. So, it's time for a quick trip back and forth in Binary Bear's (known to some as Dave Ciotti) van. Nice van. Thanks Bear! Time for the keynote. But first some fun! Actually, I can't remember if it was before the keynote or after...I hadn't slept. :) Since there was a slightly smaller crowd this year, the beloved (and soon to be roasted) Tom Weishaar took some time to recognize the souls who had been to KansasFest all five years (and especially those who had PAID all five years :-). Then he went down the aisles with cordless mike in hand and conducted a brief interview with virtually everyone in the auditorium (about 100 people). It was most enlightening, educational, and entertaining. Some of the attendees should have been comedians instead of programmers (of course some of them are comical programmers :-). Mike Westerfield started off the sessions with his keynote address "Amateur Programming for Fun & Profit". Taking into account the fact that the audience consisted of programmers from all skill levels as well as non-programmers, Mike gave a nice keynote. In addition to just talking about starting up with programming, he livened up the speech with antidotes from 'the good old days' of mainframe and minicomputing. Good speech, although I kept nodding off. The NOMDA auditorium will do that do you! After the keynote, Bill Heineman gave his Avatar update. I had already heard everything from Bill the previous evening/morning, so I mostly dozed during this session. Since his session last year had been so popular, he was the only session running for this hour. In a nutshell, the Avatar is on hold. However, Bill and his partner, Steve Parsons, have cloned the Apple IIGS System Software to a 6.0 level. They are currently working on designing a plug-in unit for the Super Nintendo Entertainment System that will turn it into a low cost personal computer. Since this computer would run the cloned GS System Software, there was some confusion over whether or not the machine was intended to be a GS 'add-on' for the SNES. Although it appears that some GS software will run on the machine, it is not intended to be a GS in a SNES but simply a low cost personal computer. Following the Avatar update was lunch. Lunch was held in the NOMDA dining room and, unlike last year, KansasFest attendees were not the only people using the facility. People from Sprint and other companies could be seen milling around the room (and the rest of NOMDA). Lunch consisted of quiet chatting (on my part) with Dean, Bill Lynn, and Steve Gunn. After lunch I attended the "A Dieter's Guide to Hi-Speed Data Compression" session given by Andy McFadden. Andy, author of the Hardpressed disk compression software from Westcode, _knows_ data compression. He did a good job of explaining ways to optimize compression routines and did a nice explanation of the LZW compression algorithm. Next it was time for the session I was cohosting with Steve Gunn, "The Latest and Greatest Advanced Sound Techniques with the Ensoniq 5503". No further comment except that it would have been nice to have more time. :-) I stayed in the room to attend Jim Maricondo's "Fun & Easy: Writing Twilight II Modules" session. It was nice to _finally_ get the docs and sample source for T2. It looks like it's a lot of fun, now I just need to find some time to write modules. I also got my first look _at_ T2. By the end of the conference I had bought my copy. :-) Once again I decided to stay in the room I was in (even though the other room had all the cool comfy chairs ;-) and watch Bryan Pietrzak's "Intermediate Desktop Programming". Bryan covered a lot of information on effectively writing desktop applications. I ended up dozing off and then going to watch Jay finish his book. After returning to Avila, nothing much happened until the dinner/roast. Like last year, it was a stitch. :-) Before the roast began, the Avila cafeteria filled with the attendees (except for a few who ended up falling asleep in the dorm and missing the whole thing, you know who you are!). Everyone was milling around feeding on the line of appetizers (including some very nummy meatball things), chatting, and looking for a good seat. I took this opportunity to compare notes with a couple people, swap jokes, and guzzle some more Mountain Dew to keep myself going. Once again, the host was hosted by Steve (Dishbrow) Dizbrow, editor and publisher of GS+ magazine. Steve has done a wonderful job of hosting both roasts with his wisecracks, ability to make a complete fool out of himself in front of a large audience (just kidding Diz, you were great :-), and his ability to really rip on Roger Wagner and Tom Weishaar in a way that isn't affected by being employed by them. ;-) The roasters included Dean Esmay, Hangtime, Dennis Doms, and Matt Deatherage. The roastee was none other than the infamous, beloved, Uncle-DOS...aka Tom Weishaar. Highlights of the roast included a bunch of 'subtitle' signs used by HangTime, lies, rumors and top-10 lists from Dean, and a intentionally and unintentionally funny song by A2 RTC Host Tara Dillinger (known as the A2.Goddess) featuring Matt Deatherage on piano. The several little glitches from not rehearsing beforehand made it all the more enjoyable (what, piano solo HERE? :-). After the roast broke up, people began to wander the dorms again. Eventually, I found myself in the center TV room/lounge on one of the floors. There was quite a crowd, with Roger and Pam Wagner, Ellen Rosenberg, Tara, HangTime, Joe Wankrel, and a variety of others wandering through. After some idle chatter, people began tossing crumpled paper into a wastebasket basketball style. This soon became rather entertaining as people began doing over the back shots, shots from across the room, shots that pelted other people (dare ya to plonk HangTime! :-)..... Then Roger asked if anyone had a big paper bag. I went back to my room to retrieve one of the grocery bags I had been using to carry stuff and brought it back. Then a new KFest activity was born: Bite the Bag. Roger proceeded to explain the rules of this simple game. The paper bag sits on the floor. Each participant takes a turn in a series of rounds. The object of the game is to pick the bag up off the ground with your teeth while touching the ground with only one appendage (foot, hand, shin). After each round, the top of the bag is made shorter all the way around. This means you have to go down even LOWER About three _hours_ later (at about 2am) the game was over. The finalists were (a name that escapes me, probably because he won :-), Randy Brandt, Roger Wagner and Cullen (Johnson?). In my own personal opinion, Bite the Bag ranks as one of the funniest, craziest, stupidest, most pointless and most fun KFest activity ever. Trying to Bite the inch-off-the-ground saliva covered Bag is fun! With at least three camcorders running, talk about blackmail material.... :-) As the game broke up, a couple people were still trying to pick up the BOTTOM of the bag (no sides, just the bottom) off the floor. Since I hadn't slept the previous night, I figured this would be a good time to get some sleep before I got suckered into playing Bite the Carpet. ;-) Somehow I managed to get up and drag myself to breakfast on Friday morning. Discussion consisted mostly of Bite the Bag. Then I hauled myself over to NOMDA for Day 2. My first session of the day was "The Hitchhiker's Guide to Apple IIGS Telecommunication", presented by Richard Bennett and Steve Gunn. This session had lots of good technical information on telecommunications programming. Richard Bennett, responsible for low-level routines in the upcoming Spectrum telecommunications program from Seven Hills, talked in detail about the low-level nitty-gritty. Unfortunately, it was all way over my head. :-) The next session gave me an excuse to get in the room with the nice chairs. ;-) Mike Westerfield gave a dynamite session on "Programming in 3D Logo". Mike has been working on Logo for some time now. It all when Roger Wagner Publishing contracted with Byte Works to develop a Logo language for use in the Mac version of HyperStudio. Mike then turned it into a standalone GS application and added 3D features. There are even more plans for a standalone Mac application and HyperLogo language add-on for HyperStudio GS. Not only does 3D Logo give Logo a neat new GS interface, but it adds features such as movie creation (way cool!), and _true_ 3D graphics (with a 3D turtle). Mike had brought a couple dozen 3D glasses and soon the crowd was all decked out like a drive-in. :-) It really works! Grab those geometric figures! This was in my opinion the coolest new program I saw at KFest, and the coolest session. Now it was lunch time again. This time I munched the meal with Dave Miller, Jim Zajkowski, and someone else... Entertainment consisted of a takeoff of the popular PBS program The McLaughlin Group. This was, The Deatherage group! Mediated by Matt Deatherage, the panel included Uncle-DOS, Steve Disbrow, Roger Wagner, Bill Heineman and Andy McFadden. Questions ranged from "Avatar? Where?" to "Vaporware". Basically the questions were designed to put at least one of the panelists in the hot seat at any one time. Great fun. After lunch came the Great Session Rivalry. Jay Jennings (Adventure Game Design: The Internals) and Randy Brandt (Quadriga) had been in fierce competition to have the most attended session. Well, not fierce, more of good-natured friendly "I'm going to get more people, nyah." :-) Amazingly enough both sessions TIED at 37 attendees. Not so amazingly, neither session was any good. :-) Just kidding! I attended Jay's session. He gave a nice talk on designing adventure games, and gave out a real neato handout. Also, he gave out an issue of Softdisk G-S with a GAME! Goodie! :-) Attendees also got a beta copy of Skrypter, an adventure game builder for the Softdisk Adventure Machine 2.0, so everyone could play with Jay's ideas and break his rules. ;-) The rest of the afternoon at Avila consisted of listening to "Making HyperStudio YOUR Platform: Writing NBAs & Transitions", "Maximizing Shareware Profits", and "A View of the II and Eureka Symbolix" in the room with the comfy chairs. I was so tired and the chairs were so comfy, I don't remember much else. :-) Friday evening started when I went along with Bill Heineman, Tony Diaz, the Guy with the Cool Car Stereo Who Gave Me a Ride But I Forget His Name Argh, Michael Lutynski, Jim Maricondo and a couple others to see Coneheads. Stupid flick, no plot, but it was fun in a group. BTW, A2Pro Non-Programming Tip #3215, don't use computer related pick-up lines in a movie theater. :) After the movie it was time for Deep Philosophical discussion with Randy, Dean, Bryan, Steve and some others.....then Roger Wagner came by and it was time to recklessly risk life and limb by Climbing with Roger. Or Watch _Roger_ Risk Life and Limb. :-) After two rock walls (Roger) and a railing, we decided to scale the Avila dorm roof. Unfortunately, even the man who dared to write HyperStudio considered moving inch by inch hanging on by the fingertips a little too risky. Oh well, next year. :-) More wandering, more talking, more Mountain Dew (notice a recurring theme in this article? :), and finally, sleep, again! Saturday morning. The unstructured day. So unstructured I slept through breakfast. Oops. Tracked down Bryan and Jay and rode with them to McDonalds to grab some breakfast en route to The Resource Central Sale. Resource Central essentially opened up their offices Saturday morning-afternoon to host a big sale. In addition to trying to get rid of some of their stock, they were selling off a bunch of neat old stuff from DTS at dirt cheap prices. Was a lot of fun visiting R-C, poor Uncle-DOS had someone asking him for a price quote every couple seconds! :-) Afterwards, I took off with Matt Deatherage and Steve Gunn in search of a cash station machine. Amazingly enough Matt managed to navigate the streets of KC like he does with the technotes....even after driving all over the place we still made it back to Avila. :) Now I wandered the dorms encountering little clusters of bored people. Most of these groups were engaging in yet another KFest tradition... throwing the Frisbee around in the dorm. After a couple tosses, a couple quick ducks, and a jammed finger or two I continued wandering and picked up a little crowd. These people (who shall remain nameless :-) just listened to me babble for minutes on end. By this time I was so tired I was doing Emo impressions. They listened to it. They must have _really_ been tired. ;-) Next I took off for KC Masterpiece with Sloanie and Linda in my van (wow, using _my_ vehicle for a change!) where we met up with Dean, Hang, and a bunch of other A2 staff that didn't wait for us. :-P This was my first trip to KCM. Yummy. I can see why it's a KFest tradition. After KC, the A2/A2Pro sysops (and a few non-sysops) headed over to Dennis Doms house for a little laserdisc party. About two dozen people packed into his living room to watch The Wizard of Speed and Time, Mant, and the extended Abyss on LD. Thanks Dennis! Traveled back with Softdisk and we stopped by a little convenience store...and bought Nitro Cola. Wow, fun stuff. :) Back to Avila, crash. Wake up late next morning, pack up and roll out to end another fun filled KansasFest. [EOA] [LIB]////////////////////////////// LIBRARY BIT BONANZA / ///////////////////////////////// HOT Files You Can Download """""""""""""""""""""""""" By Nate Trost [N.TROST] >>> WELCOME TO THE BIT BONANZA <<< """""""""""""""""""""""""""""""""" SEPTEMBER 1993 """"""""""""""" SYSTEM 6.0.1 and 4.0.2 in A2Pro! System 6.0.1 for the IIGS and 4.0.2 for """""""""""""""""""""""""""""""" eight-bit Apples are now available in the A2Pro library! The Release Notes! You can get the information of all the changes and """""""""""""""""" bug fixes in the release notes files. The 6.0.1 Release Notes are available in file #3493. The 4.0.2 Release Notes are available in file #3494. Bo th files are plain ASCII text so you can download them or just ist them into your scrollback buffer. 6.0.1! If you want _everything_ in the 6.0.1 package and have 3 megs of """""" free hard disk space, you can download it all in one big file! File #3495 contains all six disks of System 6.0.1 and the release notes. If you have the space and want it all, this is the easiest way to do it! The individual disks are: INSTALL - #3486 SYSTEMTOOLS1 - #3487 SYSTEMTOOLS2 - #3488 FONTS - #3489 SYNTHLAB - #3490 SYSTEMDISK - #3491 Downloading all six disks is strongly recommended. However, users with only one floppy drive can just download SYSTEMDISK (#3491) for a minimal 6.0.1 configuration. Users of hard drives or larger me dia devices must at least download INSTALL (#3486) and SYSTEMTOOLS1 and SYSTEMTOOLS2 (#3487 and #3488). 4.0.2! There is a new system for eight-bit users too! File #3492 """""" contains ProDOS 8 System Disk 4.0.2. A2 University FILES """"""""""""""""""" File #3484: D.COMP.CRS.BXY (GS) Uploaded on 8/10/93 by A2PRO.GREG About 46K (d/l time approx. 4 minutes 30 seconds @ 2400 baud) This file contains all of the messages, questions, answers and discussions that took place during the recent A2U course hosted by Andy McFadden, 'Hacking Data Compression'. These messages are archived here for easier access. Prodev DDT Files """""""""""""""" File #3497: DDT.DRAWING.BXY (ALL) """""""""""""""""""""""""""""""""" Uploaded on 8/14/93 by CHUCK.K About 70K (d/l time approx. 7 minutes @ 2400 baud) This file contains the schematic for the DDT8, DDT16 debuggin cards for the Apple II and Apple IIGS. There are two copies of the schematic, one is a postscript file and the other is an AutoCadAD DXF file. Also included is a short hardware description file. File #3477: DDT16.SRC.BXY (ALL) """""""""""""""""""""""""""""""" Uploaded on 8/7/93 by CHUCK.K About 160K (d/l time approx. 16 minutes @ 2400 baud) Complete source code for the DDT16 in Merlin 16+ format. Includes source code for a simple Init and a brief description of the DDT hardware. The DDT is a debugging card for the Apple II. File #3476: DDT.MANUAL.BXY (ALL) """"""""""""""""""""""""""""""""" Uploaded on 8/7/93 by CHUCK.K About 58K (d/l time approx. 6 minutes @ 2400 baud) Complete manual for DDT8 v1.6 & DDT16 v1.7. All files are in AppleWorks file format. The DDT is a debugging card for the Apple II. A2/A2Pro SPECIAL FILES """""""""""""""""""""" File #3472: A2NDX9308DB.BXY (ALL) """""""""""""""""""""""""""""""""" Uploaded on 8/1/93 by A2.BILL About 15K (d/l time approx. 1 minute 30 seconds @ 2400 baud) An index of A2 bulletin board categories and topics as of August 1, 1993, in AppleWorks database (ADB) form. File #3471: A2NDX9308TX.BXY (ALL) """""""""""""""""""""""""""""""""" Uploaded on 8/1/93 by A2.BILL About 15K (d/l time approx. 1 minute 30 seconds @ 2400 baud) An index of A2 bulletin board categories and topics as of August 1, 1993, in plain text (ASCII) form. UTILITIES """"""""" File #3483: EPEEK.BXY (GS) """"""""""""""""""""""""""" Uploaded on 8/10/93 by A2PRO.STEVE About 4K (d/l time approx. 30 seconds @ 2400 baud) This is a simple CDA that lets you watch what is going on with the Ensoniq in real time. Pretty Nifty! You can see the current status of each oscillator and view the contents of each register, see which operating mode an oscillator is in, see interrupts as they are generated by the oscillators, watch the A/D input register, and more! An essential utility if you program or are interested in the Apple IIGS sound hardware. File #3480: RCOMPACT.BXY (GS) """""""""""""""""""""""""""""" Uploaded on 8/8/93 by RICHARD.B About 4K (d/l time approx. 30 seconds @ 2400 baud) Uses the System 6.0.1 Resource Manager call _CompactResourceFile to compact resource forks from the Merlin command line or link file. Requires 6.0.1 and Merlin 16+. File #3479: COPYFORK.BXY (GS) """""""""""""""""""""""""""""" Uploaded on 8/8/93 by RICHARD.B About 4K (d/l time approx. 30 seconds @ 2400 baud) Replacement for Merlin's COPY EXE command. Allows you to choose which forks (data or resource) to copy, and supports full GS/OS pathnames (ie. spaces, commas etc.). File #3462: NULIB3.24.BXY (ALL) """""""""""""""""""""""""""""""" Uploaded on 7/29/93 by FADDEN About 165K (d/l time approx. 16 minutes 30 seconds @ 2400 baud) This is NuLib v3.24, a shell-based NuFX (ShrinkIt) archive utility. It does pretty much all of what ShrinkIt does, but it's slower and has some minor brain damage. This version has some new code for fixing MS-DOS filenames. This archive contains the C source code, which will compile with APW C (**NOT** Orca/C -- different libc) on the IIgs, Microsoft C on an IBM PC, and on just about all the UNIX platforms I know of. File #3461: MINITALK.BXY (GS) """""""""""""""""""""""""""""" Uploaded on 7/28/93 by RICHARD.B About 19K (d/l time approx. 2 minutes @ 2400 baud) Version 1.4.1 of this simple terminal program in a CDA. File #3451: IR2.0.2.BXY (GS) """"""""""""""""""""""""""""" Uploaded on 7/19/93 by M.DEATHERAGE About 130K (d/l time approx. 13 minutes @ 2400 baud) IR 2.0.2 is a Finder Extension that allows you to double-click inits, desk accessories, some GS/OS drivers and other Finder Extensions from within the Finder and install them without rebooting. A full set of inter-process communication (IPC) features makes it easy to add IR functionality to your own program without including the code, which is kind of delicate. FULL SOURCE CODE INCLUDED in MPW IIgs Assembly, as well as a Nifty List module (in Pascal) and interfaces. Unpack to an _HFS_ disk. Version 2.0.2 fixes several bugs found over the past year. File #3450: SYNTHFILE11.BXY (GS) """"""""""""""""""""""""""""""""" Uploaded on 7/19/93 by D.TRIBBY About 50K (d/l time approx. 5 minutes @ 2400 baud) Synthfile version 1.1, a program for the ORCA or GNO shell will: print a description of the contents of MIDI Synth sequence, wave, and instrument files and will also optionally play the sequence files. Complete ORCA/C source code is provided, with enough comments so a programmer can learn the "secrets" of using the MIDI Synth toolset. This version fixes a problem that kept synthfile from running in the background under GNO. SAMPLE SOURCE/LIBRARIES """"""""""""""""""""""" File #3499: ARC3D.ALPHA.BXY (GS) Uploaded on 8/15/93 by FADDEN About 356K (d/l time approx. 35 minutes @ 2400 baud) This archive contains the Arc3D library, some demos (Not Modulae and Not Stellar 7), documentation, and some utilities. It's a long- unfinished project I started a while back. Arc3D is a library of routines for 3D graphics on the IIGS. File #3473: ZOUNDPLAY3.BXY (GS) """""""""""""""""""""""""""""""" Uploaded on 8/1/93 by N.TROST About 45K (d/l time approx. 4 minutes 30 seconds @ 2400 baud) ZoundPlay 3.0. A simple GS/OS application that will play binary, AE, HyperStudio, rSound, ASIF, AIFF and AIFF-C sound files. Complete Merlin source for using the sound toolset and for processing the sound file formats is included. File #3457: FFTGS.BXY (GS) """"""""""""""""""""""""""" Uploaded on 7/27/93 by J.GRAHAM29 About 97K (d/l time approx. 10 minutes @ 2400 baud) FFT GS v1.0 is a utility for converting data fromto/from Fourier transforms using a fairly simple Fast Fourier Transform algorithm and plotting the results on a simple graph. Includes source dcode, docs, and examples. UPDATES """"""" File #3453: REZSCGUPDAT.BXY (GS) Uploaded on 7/24/93 by D.LEFFLER About 2K (d/l time approx. 20 seconds @ 2400 baud) An update to the Genesys REZ SCG so it will create rIcon and rVersion types that are compilable with the REZ TYPES.REZ for System 6. File #3452: REZNAMESSCG.BXY (GS) """"""""""""""""""""""""""""""""" Uploaded on 7/20/93 by D.LEFFLER About 4K (d/l time approx. 30 seconds @ 2400 baud) This is a SCG for Genesys that will allow you to create a REZ file with the rResNames you have entered in Genesys. You may have noticed that after the first time you compile and go back into Genesys, the equates have changed back into the generic Resource ID number stuff. Yuck! This is a Source Code Generator Script that replaces one of the "C" SCGs. Includes Documentation. File #3449: SYSTEMCALLS.BXY (GS) """"""""""""""""""""""""""""""""" Uploaded on 7/17/93 by BYTEWORKS About 5K (d/l time approx. 30 seconds @ 2400 baud) This file documents the various system calls used in the 2.0.1 versions of the ORCA languages. This information was not in some early releases of ORCA/M 2.0.3. You need this information if you want to write programs from assembly language that read and write text using the new libraries, or if you want to write an assembly language program that will call compiled subroutines from the ORCA languages. A2Pro Bulletin Board Archives """"""""""""""""""""""""""""" File #3468: ORCA.C.BXY (GS) """""""""""""""""""""""""""" Uploaded on 7/29/93 by A2PRO.STEVE About 58K (d/l time approx. 6 minutes @ 2400 baud) This file contins archived messages from the A2Pro Bulletin Board Cat 36 Topic 11 'ORCA/C' File #3467: ORCA.PASCAL.BXY (GS) """"""""""""""""""""""""""""""""" Uploaded on 7/29/93 by A2PRO.STEVE About 58K (d/l time approx. 6 minutes @ 2400 baud) This file contins archived messages from the A2Pro Bulletin Board Cat 36 Topic 10 'ORCA/Pascal' File #3466: ULTRA.PGM.BXY (ALL) """""""""""""""""""""""""""""""" Uploaded on 7/29/93 by A2PRO.STEVE About 40K (d/l time approx. 4 minutes @ 2400 baud) This file contins archived messages from the A2Pro Bulletin Board Cat 34 Topic 3 'Ultra Programming' File #3465: PRINT.MGR.BXY (GS) """"""""""""""""""""""""""""""" Uploaded on 7/29/93 by A2PRO.STEVE About 42K (d/l time approx. 4 minutes @ 2400 baud) This file contins archived messages from the A2Pro Bulletin Board Cat 15 Topic 19 'Print Manager' File #3464: SHR.ANIM.BXY (GS) """""""""""""""""""""""""""""" Uploaded on 7/29/93 by A2PRO.STEVE About 23K (d/l time approx. 2 minutes @ 2400 baud) This file contins archived messages from the A2Pro Bulletin Board Cat 11 Topic 5 'SHR Graphics and Animation' File #3463: ALGORYTHMS.BXY (ALL) """"""""""""""""""""""""""""""""" Uploaded on 7/29/93 by A2PRO.STEVE About 40K (d/l time approx. 4 minutes @ 2400 baud) This file contins archived messages from the A2Pro Bulletin Board Cat 11 Topic 8 'Programming Algorythms and Structures' [EOA] [SSW]////////////////////////////// SYSTEM SOFTWARE NEWS / ///////////////////////////////// New System Software Examined! """"""""""""""""""""""""""""" By Jim B. Couch [J.COUCH2] The release notes published here were provided by Apple and are available in the A2Pro library as file #3493 REL.NOTES.601 (for GSOS System Software V6.0.1) and 3494 REL.NOTES.402 (for 8-Bit 4.0.2 SSW.) >>> APPLE IIGS SYSTEM SOFTWARE RELEASE NOTES <<< """""""""""""""""""""""""""""""""""""""""""""""" VERSION 6.0.1, MAY 21, 1993 These release notes detail changes made from """""""""""""""""""""""""""" version 6.0 to 6.0.1 of the Apple IIgs System Software. Much of the material here is intended for programmers. For information affecting users, read the Whats.New and Shortcuts files on the SystemTools2 disk. This document does not describe new 6.0.1 toolbox and GS/OS features in detail. See the 6.0.1 addendum to Programmer's Reference For System 6.0. >>> SYS.RESOURCES CHANGES <<< """"""""""""""""""""""""""""" Changed the rVersion resource ID=1 string to read "System Software" instead of "System" (this is important for the Finder's reorganized About box). Updated rErrorString resources to say "disk" instead of "volume." Fixed the standard window color table resource to have a white info bar fill color (the byte at offset 8 is now $F0 instead of $00). The Icon Button control now supports "sticky" icon controls. If bit 4 of the ctlFlag field is set and the mouse button is released when the cursor is inside the control, the control stays highlighted to show that it is "selected." The ctlValue field contains $0001 when the icon is in the selected state, and $0000 when it is not. An extra parameter, #12, has been added to the control template to allow for an initial value word for this type of control. Setting a thermometer control's value no longer draws anything if the control is invisible. The Launcher now zeros the BUSY flag (this makes Option-Open work in the Control Panels NDA). The Launcher sets the noResourceMgr bit in StartUpTools (to avoid a duplicate startup, which StartUpTools now checks for). >>> TOOLBOX CHANGES <<< """"""""""""""""""""""" WINDOW MANAGER V3.4 TOOL014 Added a new call, UpdateWindow, to help """"""""""""""""""" redraw other people's windows safely. AlertWindow now uses UpdateWindow. DoModalWindow now uses UpdateWindow. If the mwUpdateAll bit is clear, it passes flags of $0000 for the dialog window, but $8000 (background update) for other windows--so the other windows update only if it's safe for them to background- update. If the mwUpdateAll bit is set, it always passes flags of $0000. It returns an error ($0E05, cantUpdateErr) for a background update of a System window, since System windows should always get updated from inside SystemEvent. Changed DoModalWindow so it doesn't invalidate controls on an activate if the window's fCtlTie bit is set, saying that the control states are independent of the window state. After DoModalWindow does an LECut, LEPaste, TECut, or TEPaste, it returns the ID of the control that was just edited. HandleDiskInsert duplicate-disk dialog now uses the Note alert icon instead of the 3.5" disk icon, since the dialog also appears for disks that look nothing like 3.5" floppies. HandleDiskInsert now treats error $51 (directory damaged) like error $5A (damaged bitmap); it puts up "This disk is damaged and can't be used. Eject/Initialize". Bits 31-24 of the updateProc to HandleDiskInsert are now honored even if the rest of the pointer is NIL. This way you can flag your window as not needing GS/OS for its update. HandleDiskInsert never replaces a window's existing wContDraw procedure, if it has one (we give it a wContDraw on the first call if it doesn't have one). MENU MANAGER V3.4 TOOL015 In AllocateCache, we now clip the menu """"""""""""""""" height to 200 for computing the size handle needed to save the screen. We were overflowing the computation for tall pop-up menus. See also TS3. When the pop-up control defproc handles a do_event message, now it only sends keyDown and autoKey events to MenuKey, not any old event. It also preserves the menu bar around the MenuKey call, so we don't accidentally leave the menu bar set to the pop-up menu control. DeleteMItem now properly shrinks the menu handle by twelve bytes (was ten). Not worth patching for ROM 3 (you get the bytes back when the menu goes away anyway). Pop-up proc uses DrawStringWidth to draw non-popped-up pop-up controls (it truncates long items in the middle). CONTROL MANAGER V3.4 TOOL016 Added four new calls: SetCtlValueByID, """""""""""""""""""""""""""""" GetCtlValueByID, InvalOneCtlByID, and HiliteCtlByID. CtlStartUp removes the RefreshDesktop run queue routine, so the desktop doesn't refresh an extra time when starting an application in a different resolution from the one you used last (the scroll bars thought they had to redraw in 6.0, even though they really didn't). The Static Text control now supports a new ctlFlag bit. If bit $10, fSquishText, is set as well as fBlastText, the control will draw the text with DrawStringWidth to compress and truncate on the right. Replaced one GetSysPrefs call and two SetSysPrefs calls with two DoSysPrefs calls, which should significantly speed up every CMLoadResource call. (DoSysPrefs has lower overhead; it does not call GS/OS internally.) QUICKDRAW II AUXILIARY V3.5 TOOL018 Added three new calls: """"""""""""""""""""""""""" DrawStringWidth, UseColorTable, and RestoreColorTable. DrawStringWidth draws a string to fit in a specified horizontal width, compressing and/or truncating the string as necessary. The string can be Pascal, C, or GS/OS, and you can reference it by pointer, handle, or resource. The truncation is an ellipsis on the left, on the right, in the center, or no truncation. Compression is optional. UseColorTable preserves SCBs and sets them to use a color table you specify. It also preserves the old contents of that color table and sets the color table to the data you specify, or to a standard color table. UseColorTable returns a handle that you later pass to RestoreColorTable to put things back how they were. Generally, you will call UseColorTable on an activate event and RestoreColorTable on a deactivate event. Added several new icons to GetSysIcon: text ($04), source file ($B0), Applesoft BASIC program ($FC), archive ($E0), and binary file ($06). GetSysIcon now calls SendRequest with a new request code, systemSaysGetSysIcon, to allow utilities and applications to provide a replacement icon. PRINT MANAGER V3.2 TOOL019 Fixed bad-parameter error code from """""""""""""""""""""""""""""" PMLoadDriver & PMUnloadDriver to be $1309, as documented (was returning $1308 before). LINE EDIT V3.4 TOOL020 Added a new call, LEClassifyKey, which """""""""""""""""""""""""""""" classifies a keystroke as some combination of digit, letter, hex digit, editing key, and non-control-character. Added a new field to the Edit Line control template. Parameter number 9 is a word called keyMask. The control accepts keys only if the LEClassifyKey result has some bits set in common with the keyMask parameter. Changed interpretation of the Edit Line template pwChar field: A value of $FFFF now means the control is not for password entry. (Previously, the legal values were $0000 [default password character] and $0001 through $00FF [specific password character]. The parameter's presence implied that the control was for password entry, which is no good with the new optional ninth parameter.) Made LESetText erase the gap between the destination and view rectangles at the left edge of a scrolled field. DIALOG MANAGER V3.5 TOOL021 Fixed a bug that caused a crash if you """""""""""""""""""""""""""""" made a SetDAFont to the FastFont handle (returned by GetSysFont), and then caused the Dialog Manager to beep. (This affected ROM 1 systems only.) SCRAP MANAGER V3.2 TOOL022 Added one new call, ShowClipboard, which """""""""""""""""""""""""""""" creates a System window that takes care of the clipboard display for you (it's used in Finder and Teach, for example). It displays Text, Picture, and Sound scraps. If you copy a Sound to the clipboard (using the Sound control panel, for example), you can click on the Speaker icon on the clipboard to hear the sound. It also calls SendRequest with a new request code, systemSaysDoClipboard, to allow utilities and applications to customize or extend the clipboard display. PutScrap now changes the scrap count, as returned by GetScrapCount (for polling to see if the clipboard contents changed). STANDARD FILE V3.4 TOOL023 Uses DrawStringWidth to draw standard """""""""""""""""""""""""""""" items (allows compression and truncates on the right with an ellipsis). Added three new key equivalents. Command-Shift-UpArrow is the same as a Command-D or a clicking the Disks button. Command-RightArrow is the same as Command-Tab; it moves forward to the next drive in the list. Command-LeftArrow moves backward to the previous drive in the list. SFReScan now makes a DInfo and Volume call on the volume in prefix 8 and updates all of the controls accordingly. SFReScan now works in the volumes list as well as the files list. Fixed a hanging problem on SFGetFile (not SFGetFile2) when prefix zero was empty. Fixed a bug when closing the dialog where if the prompt string was a resource, it was being treated like a handle. Standard File windows now update behind modal windows and try to update back windows using UpdateWindow. Changed the way Standard File handles multiple edit line items in PutFile dialogs, so that there can be more than just the single edit line item. Fixed a bug in the check that was trying to restrict the promptRefDesc to values 0-2 but wasn't returning an error if it was out of range. It now returns badPromptDesc ($1701) as documented. Now passes a real auxiliary type to GetSysIcon (was always passing zero in 6.0). Volume name comparison in NextDrive routine is now insensitive to case, so if your prefix doesn't match the actual case of your disk, Command-Tab now takes you to the next disk instead of staying at the same one (but fixing the prefix). Simplified no-volumes message to read "No disks are available. Please insert a disk." Changed "volume" to "disk" in several messages. Now shows "zero K" instead of "0K" in space-on-disk messages (the guts of this change are in Long2Dec in Integer Math). FONT MANAGER V3.4 TOOL027 Expanded the size list in ChooseFont to 96 """""""""""""""""""""""""""""" members. Added code to strip out duplicate sizes from the size list in ChooseFont. Duplicates of the same size would show up if two or more real fonts in the same family had the same size (but different styles). LIST MANAGER V3.4 TOOL028 CompareStrings flag bit 15 now makes it """""""""""""""""""""""""""""" compare GS/OS strings instead of Pascal strings. ListKey takes Clear and Delete to mean "zap the prefix" (just like waiting 2/3 of a second before typing). Fixed a bug affecting ListKey, CompareStrings, and SortList/SortList2 with compareProc of 1. Characters $20 to $3F (including digits), and $60 were being accidentally "uppercased." For example, in 6.0 "5" would map into right- arrow, which moved down one item. The standard item-draw procedure uses DrawStringWidth, with flags allowing horizontal compression and truncation on the right with an ellipsis. TEXT EDIT V1.4 TOOL034 TEPaintText now properly fully-justifies """""""""""""""""""""""""""""" text. Fixed a problem with non-targetable Text Edit controls. They could start out active (with a usable scroll bar for example), and then become inactive when the window became inactive, but the control would not get reactivated when the window came back to the front. FMStatus call now pushes pre-zeroed result space, in case Font Manager is not loaded (the result is that you get an error reliably now, instead of just sometimes, if the Font Manager isn't available). RESOURCE MANAGER V1.3 RESOURCE.MGR Added two new calls: """""""""""""""""""""""""""""""""""" OpenResourceFileByID and CompactResourceFile. OpenResourceFileByID starts the Resource Manager for you if it isn't already started under your ID (and it makes you the current resource application if it was already started for your ID). Then it uses LGetPathname2 to find pathname for the specified ID and calls OpenResourceFile for you on that file. Returns errors from LGetPathname2 and OpenResourceFile. oldResApp is valid even if you get an error. CompactResourceFile removes all free blocks (except the last special EOF free block) from a given file by moving chunks around in the file. Added some error checking code to OpenResourceFile that absolutely makes sure that the map was entirely read; if what is read doesn't equal what we asked for, it returns a GS/OS eofEncountered error. Added a new bit to mapFlag. Bit 0 is now defined as fileReadWrite. When a file is opened, it gets set to 1 if the file is opened read/write. If it's opened with read-only access, then the bit is set to 0. This bit is for examination only. AddResource, RemoveResource, WriteResource, and MarkResourceChange now verify that the target file can be written to before actually doing anything. They all return a GS/OS invalidAccess error if the file cannot be written to. The exception to this is MarkResourceChange when the resource in question is being marked unchanged; it is allowed as it won't eventually cause a write. Fixed WriteResource to write the size of the resource as it appears on disk, rather than the size of the resource's handle in memory. This properly allows for converters to write resources that are smaller than their in-memory size without destroying the file. CloseResourceFile returns error resFileNotFound ($1E07) instead of no error, on a nonzero argument that doesn't match an open file ID. Fixed string-comparison bug in RMFindNamedResource (and RMLoadNamedResource, which calls RMFindNamedResource). Sometimes in 6.0 you could wind up loading a resource whose name began with the name you asked for but was longer. >>> TOOL.SETUP <<< """""""""""""""""" Tool.Setup contains patches that are needed for both ROM 1 and ROM 3. TOOL LOCATOR Optimized SendRequest (25% speed improvement in some cases). """""""""""" Optimized AcceptRequests and GetMsgHandle, too. StartUpTools now returns any error from ResourceStartUp. When we would have returned garbage for the result, we return NIL. StartUpTools and LoadTools now skip the message "This application needs ToolXXX" for tools that are present but too old (like ROM-based tools!). They still return an error code to the caller. ShutDownTools checks for a NIL input and behaves sanely. ResourceShutDown is now in the error-exit path, so it shuts down the Resource Manager even if you get some other error. ShutDownTools tolerates errors from SFShutDown (for compatibility with errant NDAs that shut down Standard File during Desk Shutdown even if they did not start it). ShutDownTools no longer calls HideCursor if QuickDraw is not active (in 6.0, it can crash if an application calls ShutDownTools with QD inactive). If the new-for-6.0 "no resource manager" flag bit is set, there is no problem (it was already skipping the HideCursor then). MISC TOOLS Added two new calls: DoSysPrefs and AlertMessage. """""""""" DoSysPrefs clears and sets the specified bits in the GS/OS system preferences word, and then returns the previous value (error $0301 if GS/OS is not the current OS). AlertMessage provides access to code inside GS/OS that is smart enough to put an alert on either the