|||||| |||||| || || |||||| |||||| || || ||| || || || || ||| |||| |||||| || |||| 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 text screen or the Super Hi-Res screen, depending on the environment. SysBeep2 now sends a new SendRequest code, systemSaysForceUndim, for all codes except $006x (screen blanking, screen unblanking). ShowBootInfo now "wraps up" to a new row if you have more than one row of icons. If you wrap off the top of the screen, it starts over at the bottom left, without erasing the screen. (It used to keep recycling the bottom row, wiping it to periwinkle blue every time it filled up.) DESK MANAGER Setting bit 31 of an action procedure pointer (for NDA or """""""""""" system window) does stack-based dispatch. function MyActionProc(code: integer; data: longint): integer; CDA menu checks ROM version before using ReadKeyMicroMemory to check for the control-panel-disable jumper. Was misbehaving on upgraded IIe ROM 1 machines. >>> ROM 01 PATCH TS2 <<< """""""""""""""""""""""""" If Battery RAM byte $59 bit 7 is set, TS2 installs Memory Peeker and Visit Monitor (just like ROM 3 does). EVENT MANAGER EMStartUp uses (26,17) (or (13,17) in 320 mode) for the """"""""""""" initial mouse position if there is no message #6 specifying a position. This prevents top-left screen dimmers from dimming right away. INTEGER MATH Int2Dec and Long2Dec return "zero " if the number being """""""""""" converted is zero, bit 31 of stringPtr is set, and the buffer length is at least 5. >>> ROM 03 PATCH TS3 <<< """""""""""""""""""""""""" DESK MANAGER DeskShutDown zaps $07FC if slot 4 is internal. This stops """""""""""" the mouse from freezing in desktop applications after visiting the CDA menu, when you have previously run an application that left a nonzero value in $07FC. This was a problem on ROM 3 systems only. OpenNDA sends reOpenAction to action routine of an already- open NDA, to give the NDA a chance to do something other than just have the window come to the front. INTEGER MATH Int2Dec and Long2Dec return "zero " if bit 31 of stringPtr """""""""""" is set and the buffer length is at least 5. Patched Multiply to fix Menu Manager bug: AllocateCache was multiplying the bytes-per-line by the menu height, without clipping the height to 200 (screen height), as it does when it really uses the memory it allocates. MISC TOOLS SysFailMgr now provides useful default messages for common """""""""" errors: $27: "Could not read or write disk. The disk may be damaged." $201: "Out of memory (or required memory area was already in use)." $308, $681, $682: "Detected trashed memory. Software bug or (less likely) bad RAM." SANE Fixed a problem in the ElemNum call FXPWRI where the source integer """" exponent was never being classified (whether it was zero, normalized, etc.), but we were still checking Src_Class to see if we should proceed. This could make really strange things happen in some applications. (For example, the AppleWorks GS spreadsheet could get stuck in an infinite loop if certain values were left over in bank zero.) SCRAP MANAGER So that we can use the disk-based scrap later, undo what """"""""""""" the ROM-based ScrapBootInit did before GS/OS was available (dispose all $4201 memory and set the Scrap Manager's WAP to NIL). WINDOW MANAGER Fixed TaskMaster to handle the tmNoGetNextEvent bit """""""""""""" correctly (it was treating the bit as reserved). This bit has existed since 5.0.3, but until now it worked only on ROM 1. Fixed a HandToHand call in WindStartUp which was copying data from a small handle to a big handle, using the size of the big handle (this was not harmful, but it was unclean). >>> APPLETALK PORT DRIVER V3.2 <<< """""""""""""""""""""""""""""""""" Reworked significant pieces of the driver to try much harder to establish a connection without error, and to write data to the PAP connection successfully. Also made PAPStatus try harder to get a response. Changed PrDevOpen to wait forever for the PAPOpen to complete, or until the user hits Command-Period. It always retries on $0808 error (server too busy to respond). Retries ten times on $0805 error (name not found). Changed PrDevWrite to wait forever for the PAPWrite to complete, or until the user hits Command-Period. Removed some completely unused code (driver is now 6 blocks on disk instead of 8). Changed the algorithm used to determine if AppleTalk is running. It used to check to see if a slot was set to "AppleTalk". It now checks for the presence of the AppleTalk main driver (which is the supported way anyway). >>> LASERWRITER PRINTER DRIVER V3.3 <<< """"""""""""""""""""""""""""""""""""""" The driver appears to work with the LaserWriter Pro 600 and 630, but this combination has not been fully tested. Changed PostScript definition of /spf (the spotting function) to get it defined correctly on level 2 printers, using a hard-coded default spot function for when the dictionary isn't of HalfToneType 1. When we bypass the code that sets up the name tables and sends queries to the printer (because we're creating a PS file), we now explicitly set the LWType variable to 1, indicating a LaserWriter Plus or II. Now the code can find all the standard 35N fonts in the built-in name tables, instead of just the four faces used in LaserWriters plus Sonata, Carta and Shaston. This means you can now dump PostScript files that work correctly with the 35N fonts. (The "35N" fonts are included in the LaserWriter II and later.) Changed drawing of job dialog to include a call to PrGetNetworkName so we can draw the chosen printer's name in the job dialog. If there is no network printer (PrGetNetworkName returns NIL), it draws "No network - not supported". Added 3 lines in CkPrinterStatus to avoid a possible infinite loop. If our session timed out we start getting error $0806 from ReadLaser, but we didn't care. When printing to a PostScript file, there may be no user name. If PMGetUserName returns NIL, we now cleanly don't put a user name into the file. It used to insert garbage from $00/0000 in the file. >>> IWEM 1.6 <<< """""""""""""""" The test for the Personal LaserWriter NT (in order to fix the smaller imaging area) now checks that the product name contains the string "Personal", so it will also match the Personal LaserWriter NTR. GS/OS Changes: >>> PRODOS (THE BOOT STUB, NOT PRODOS 8) <<< """""""""""""""""""""""""""""""""""""""""""" If the user hits the "8" key before we run, then we load and run System/P8 instead of System/Start.GS.OS. Added code to compensate for a ROM 3 bug where the RAM5 RAM disk does not get created if you have 8 Megs of RAM. The ProDOS file now creates it for you and restarts the system (even if you hit "8" to boot into ProDOS 8). This means you get an extra beep on boot IF you have an 8 Meg ROM 3 and a nonzero RAM5 size. >>> GS/OS (composed of the files GS.OS, GS.OS.Dev, and Start.GS.OS) <<< """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" SCM Added code to put a $4C at $BF00 at the beginning of every GS/OS """ call, so the Vulcan without a loaded driver will be happy. Two changes in the interrupt dispatcher: * Returns CLC if and only if at least one interrupt handler claimed the interrupt (was previously clearing carry when the LAST handler claimed it). * Restores MSLOT after dispatching to an IRQ.OTHER handler. OSShutDown was accidentally skipping the DeskShutDown call if flag bit 2 was clear. Changed SysBeep2 call in s_mount_msg to clean up stack on error (in case Tool.Setup isn't loaded yet). Was causing incoherent "yes/no/cancel" text dialogs during boot, if it tries to ask for the boot disk before Tool.Setup time. Restart no longer changes memory at $0300. GS/OS sends systemSaysForceUndim before deciding whether to put a message on the text screen or the Super Hi-Res screen. GLOADER/GQUIT After you press a key to continue (from "pause mode"), it """"""""""""" erases the message so you know something happened. On a switch to ProDOS 8, instead of zeroing UNIT ($43), we store a $50 there. Zero was doing horrible things when left in DEVNUM and later fed to ON_LINE (returns much more data than expected). This was only left at zero in the somewhat strange case that you network-booted into GS/OS, and then switched to P8 but have so many devices online that your boot volume wasn't in DEVLST. DEVICE DISPATCHER Implemented a new driver characteristics bit to let us """"""""""""""""" add new subcalls to DStatus and DControl. Drivers have always been required to validate all call requests that are sent to them, and return an error if they do not support the call. This includes the main driver commands as well as all subcalls. Unfortunately, some driver authors didn't feel that the guidelines needed to be followed, and they do random things if given a call they don't know about (some also crash). If this bit ($0010) is set in a device's characteristics word, the driver indicates that it properly follows the driver guidelines in the GS/OS reference and Device Driver reference. If this bit is not set, drivers will never receive a call that is not documented in the GS/OS reference (except device-specific calls, which are always passed on to the drivers). INITIALIZATION MANAGER Fixed a problem where supplying a non-editable """""""""""""""""""""" volume name for the Format or EraseDisk calls, and the name was not syntactically acceptable to the chosen FST, the system went to the GS/OS version of system death. Limited the supplied volume name to 32 characters to ensure that the 36-byte buffers used internally are not overflowed. Changed the default disk name from Untitled to untitled. SYSTEM LOADER Filetypes $0030 to $003F (all auxiliary types) are now """"""""""""" allowed for load files. Filetype/auxiliary type combinations must be assigned by Developer Technical Support, as usual. SYSTEM ERROR MESSAGES Added error message #66: "The selected AppleTalk """"""""""""""""""""" connection could not be found. Be sure it is installed and the slot settings in the Control Panel are correct." Added error message #67: "A driver for the selected AppleTalk connection could not be found. Be sure it is installed and then restart." Added error message #68 for the RAM5 driver (used on ROM 1 if the minimum and maximum sizes are different). In Error.Msg, changed "volumes" to "disks" in the message "ProDOS 8 applications can only be launched from ProDOS and AppleShare disks." SCC MANAGER Added more error checking and two new error messages in case """"""""""" the AppleTalk hardware couldn't be found, or no drivers were loaded. SCSI HD DRIVER Added support for the new Apple-defined DStatus subcall. """""""""""""" Call $4000, GetSCSITargetPriority, returns a word indicating the SCSI ID of a given GS/OS SCSI device. SCSI CD DRIVER Added support for the new Apple-defined DStatus subcall. """""""""""""" Call $4000, GetSCSITargetPriority, returns a word indicating the SCSI ID of a given GS/OS SCSI device. Changed default command bitmap to match the Apple CD-300, which does not return a command bitmap in the Inquiry call. Compatibility with Apple CD 300 * With the 6.0.1 SCSI CD Driver, you can read data, but you can't play audio tracks, and you can't take advantage of the drive's ability to read audio tracks as data. * With the 6.0 SCSI CD Driver, you can read data if and only if a CD was online when you booted. You can't play audio tracks. * Under P8, the Apple CD 300 works just as well as the previous models, for data. Playing audio tracks is not supported. SCSI TAPE DRIVER Added support for the new Apple-defined DStatus subcall. """""""""""""""" Call $4000, GetSCSITargetPriority, returns a word indicating the SCSI ID of a given GS/OS SCSI device. SCSI SCANNER DRIVER Added support for the new Apple-defined DStatus """"""""""""""""""" subcall. Call $4000, GetSCSITargetPriority, returns a word indicating the SCSI ID of a given GS/OS SCSI device. CONSOLE DRIVER Fixed reset_trap to store the correct addresses in the """""""""""""" fast- I/O vectors; they don't work in 6.0. APPLEDISK 3.5 DRIVER Changed the SuperDrive case of """""""""""""""""""" DStatus(get_format_options) to behave better. Now it returns as much data as it can and returns a real transfer count. It used to return a transfer count of zero (and return no data) if the user's buffer was not big enough. Driver no longer puts 'A', 'B', ... over the last character of its device names during a warm start. So now you can rename your 3.5 devices and not get the names mutilated on return from P8. APPLEDISK 5.25 DRIVER During startup we now clear the internal/external """"""""""""""""""""" slot number in our DIBs as we scan each slot. On return from ProDOS 8, the driver was looking for the Disk II card's ID bytes at the wrong address, like $CE00 instead of $C600. There was no problem for the internal Disk Port, only for Disk II cards. The drives did not show up in GS/OS after visiting ProDOS 8. Removed driver startup time check for drive being present. For some people, it was deciding they had no drive when they actually did. RAM5 DRIVER New for 6.0.1. Replaces the generated driver and is much """"""""""" faster. On ROM 1, Minimum and Maximum RAM disk sizes must be set to the same value. If the RAM disk has never been formatted, we now create an empty ProDOS directory, like the ROM does. On startup, if RAM5 is an empty Pascal volume, we reformat it as an empty ProDOS volume. This covers a semi-obscure case where you have no 3.5 drives on the SmartPort, but the startup process scans past slot 5, touching the RAM disk before a ProDOS-like environment is set up and fooling it into formatting itself as Pascal. If you have a nonempty Pascal RAM5, we leave it alone. A2.RAMCARD (AKA SLINKY) DRIVER Added format options so if you have 1024K """""""""""""""""""""""""""""" on your card you can choose between 800K and 1024K. Formatting your RAM card to 800K means you can do block copies between 800K floppies and the RAM card (block copies are generally faster than file-by-file copies). APPLESHARE FST The 10-second volume change timer completion routine calls """""""""""""" the GS/OS system service vector os_event. However, this really isn't legal since we're in an interrupt environment and GS/OS may have been what we just interrupted. Since os_event modifies a few variables on the GS/OS direct page, we now save and restore them around the service call. This should fix random $4x errors during intensive file manipulations. If we get a network error back from our SPWrite handler, it now loads the protocol error word from its parameter block, rather than the SPCommand one. Fixed an icky little bug in our panic completion routine. It was incrementing its panic counter without setting its data bank. This caused a semi-random byte in bank $E1 to be incremented by one each time the panic timer completed. This also meant that our quarter-second interrupt handler never knew when one or more of our volumes were in danger of being lost due to missing tickle packets from the server. Shortcut the QDStatus and GetWAP calls to save doing one or two toolbox calls on every call to the FST. If the arrows get drawn on the Super Hi-Res screen, they get UNdrawn there, even if a screen dimmer kicked in & displayed the text screen. (If the SHR screen is off and non-linear, it doesn't touch the SHR screen.) Fixed volume-changed notification to pass correct device number instead of garbage. Now we send volume-changed notifications even if there are no folders open on a volume. Changed JudgeName syntax string to read "Disk names..." instead of "Volume names...." DOS 3.3 FST Ignores zero-length filename entries (GetDirEntry does not """"""""""" count them and does not return them). Internally, the FST treats a filename field of all blanks (30 $A0 bytes) just like a deleted catalog entry. Added an entry to the end of fcr_to_pblk so that Open will stop when pcount is 15 instead of trashing a variable amount of memory past the end of the parameter block. FST name (visible in Finder, etc.) is "Apple II DOS 3.3" instead of just "DOS 3.3". No change in file name. Changed Open, GetFileInfo, and GetDirEntry to return zero for resourceEOF and resourceBlocks fields for non-extended files (when the fields are present). These values were previously undefined, and this was confusing the Finder. HFS FST Added a STZ newline_flag to fix bug where Write stops """"""" prematurely after transferring 512 bytes, if the most recent Read call stopped because it hit a newline character. Changed JudgeName string to say "Disk names..." instead of "Volume names...." Optimized much of the computation-intensive code in the FST. Namely, the B-tree register push/pop routines which use the pseudo stack are much faster, and the multiply and divide routines handle common cases more quickly. An unaccelerated GS with fast hard disks should do large folder copies between HFS volumes in the Finder about 18.4% faster. Other configurations will have less of an improvement. PASCAL FST Now recognizes RAM disks (device_id $000E). """""""""" HS.FST (HIGH SIERRA FST) FSTSpecific map_enable and set_map_table now """""""""""""""""""""""" post volume- changed notifications for all of our online volumes (High Sierra and ISO 9660). Changed volume control records to have a Memory Manager handle to the path table, so we can allow path tables larger than 8K (the GS/OS Memory Manager limit). MS-DOS FST: New for 6.0.1. The MS-DOS FST is a read-only implementation, similar to the existing DOS 3.3, Pascal, and High Sierra FSTs. Added support for resource forks as defined and implemented by the Macintosh PC Exchange Control Panel. This is done by placing the resource fork of a given file into a normal MS- DOS file of the same name as the original file in a subdirectory named "RESOURCE.FRK" at the same directory level as the original file. The "RESOURCE.FRK" subdirectory will never appear to an application during a directory search on the GS, though it will appear normally on an MS-DOS platform. The calls affected are Open, GetFileInfo, and GetDirEntry. PRODOS FST Fixed a bug in slow_read that made multiple-character newline """""""""" mode unreliable. Each time it moved to a new block of data it was forgetting about one more character off the end of the newline list. PRODOS 8 VERSION 2.0.3 Updated the Thunderclock year table for """""""""""""""""""""""" 1993-1998. When we don't have a 65C02, instead of saying "relocation / configuration error" we put a message below the P8 version line so it looks like this: Apple II ProDOS 8 V2.0.3 06-May-93 REQUIRES ENHANCED APPLE IIE OR LATER Apple II Plus users will not be able to read the lowercase, but they can read the REQUIRES part. Removed the message "** Unable to find a ".System" file **". We always use the Quit code if there is no .System file. The old check was flawed anyway--it was invalid after running the ATINIT file. Changed copyright message at $BF40 to start with a $00, to prevent applications from crashing when they remove the /RAM volume and the device table is full. Changed NMI vector to be initialized to be BRK, $40, $00 rather than JMP $FF59. Removed slot 3 drive 2 from the SmartPort remapping table, so the /RAM disk can never be overwritten by a remapped device. (It was already the last resort.) CLOCK.PATCH (NEW ON SYSTEMTOOLS2) Supports patching ProDOS 8 2.0.3, just """"""""""""""""""""""""""""""""" like 2.0, 2.0.1, 2.0.2. Uses 0 for 2000, not 100 (fixed off-by-one error in line 1560). >>> CONTROL PANELS <<< """""""""""""""""""""" APPLESHARE CONTROL PANEL V2.1 Added range check on tracking checkboxes """"""""""""""""""""""""""""" next to items in the volume list. If there were fewer than 4 volumes listed, we were tracking checkboxes that were not there. Now forces an arrow cursor on closing the Connect As dialog (you could be left with an I-Beam in 6.0). DC PRINTER CONTROL PANEL Note that starting with System Software 6.0, DC """""""""""""""""""""""" Printer lets you choose LaserWriter, which is potentially useful for "printing" to PostScript files. Apple tests and supports the LaserWriter driver using AppleTalk only. If you can get useful results with other configurations, that's great, but you're on your own. MONITOR CONTROL PANEL V1.2 Rewrote the control panel in assembly. """""""""""""""""""""""""" Made window wider and realigned the pop-up menus. Added "Smoother Mouse Cursor" checkbox that sets Battery RAM location $5F bit 2. It kills the cursor flicker that is especially noticeable with a Video Overlay card or an accelerator. This Battery RAM bit has been present since 6.0, but there was no Apple-supplied human interface to set it. NAMER CONTROL PANEL V1.1 Made window 80 pixels wider. """""""""""""""""""""""" Changed the Help text slightly. Removed custom listDraw routine, since the standard one now uses DrawStringWidth. Set bit 30 to ModalDialog for I-beam cursor. Fixed Rename Printer... button to have a valid key equivalent (Command-R). NETPRINTER CONTROL PANEL V1.1 Made window 80 pixels wider (it's like """"""""""""""""""""""""""""" AppleShare now). The Printer pop-up now has a pop-down triangle. No longer uses a custom listDraw routine (the standard list draw proc now uses DrawStringWidth). Removed some dead data (left over from when Namer was not a separate control panel). Typing a colon or slash in the printer name gives SysBeep2(sbBadKeypress) instead of just SysBeep. Changed completion routine to properly jump to the completion routine return address (returned by the GetInfo call) rather than assume it can just RTL. NETWORK CONTROL PANEL V1.1 Added keyboard equivalents: "P" for ProDOS, """""""""""""""""""""""""" "G" for GS/OS. RAMDISK CONTROL PANEL V1.2 Rewrote the help text, mainly to mention that """""""""""""""""""""""""" the "Resize after reset" checkbox is only on ROM 3. SETSTART CONTROL PANEL V1.1 New checkbox: "Show icons during startup" """"""""""""""""""""""""""" (provides a human interface to the Battery RAM bit that disables the ShowBootInfo icons...the bit has been there since 6.0). New checkbox: "Enable programmer CDAs" (does not show up if ROM 3 Control Panel disable jumper is present). Provides a human interface to the Battery RAM bit that asks for Visit Monitor and Memory Peeker to show up in the CDA menu. ROM 3 checks this bit, and 6.0.1 checks it during boot for ROM 1 machines. Added a pop-down triangle in the menu. Edited some error messages. Edited the help to say "This control panel lets you choose what application will start up automatically when you start (boot) your Apple IIgs. The checkboxes let you control whether icons appear while the computer is starting up, and whether Classic Desk Accessories such as Visit Monitor and Memory Peeker appear." SOUND CONTROL PANEL V2.1 Added a new request code, srqConvertRelPitch, to """""""""""""""""""""""" convert a relPitch value into a freqOffset. Sound control panel no longer gets confused on a redundant startup (like if somebody installs a second copy of the Control Panels NDA, giving us a second BootCDEV message). The Shutdown notify proc now checks a flag properly, so sounds don't get cut off when the system shuts down (in 6.0 they get cut off sometimes, because it accidentally loads the flag value from bank zero instead of the bank the Sound CP permanent code is in). >>> NDAS AND INITS <<< """""""""""""""""""""" CONTROL PANELS NDA V2.1 Command-Shift-Esc works while the Control Panels """"""""""""""""""""""" window or a control panel window is in front (with and without Option). -- That is, you can use Command-Shift-Esc to bring the main window to the front even if a control panel is already in front, and you can use Option-Command-Shift-Esc to open (or bring to front) the CDevs Finder window when the main window or any control panel window is in front. Uses new calls OpenResourceFileByID and InvalOneCtlByID to save a few bytes and exercise the new calls. Now accepts reOpenAction. If Option is down when you open the CP & it's already open, now it opens the CDevs window instead of bringing the NDA window forward. When overwriting an existing CDev.Data file, the Control Panels NDA now makes sure to unlock it first. The old Control Panel created the file with no Write access, so we were failing to overwrite it (added one SetFileInfoGS call). When trying to open CDev.Data for writing, if we got an error we were doing a Close with a stale reference number. Fixed. Added WhooshRect to the main window opening and closing. Fixed a bug that would trash some memory if there were NO active control panels available in the CDevs folder. Moved the code that handles color table switching into the new QuickDraw II Auxiliary calls UseColorTable and RestoreColorTable. Made the color tables not be schizophrenic when you switch between control panel windows in an application using nonstandard colors. Now checks daylight savings stuff whenever the user closes a control panel. This makes the right thing happen sooner if you turn on the Auto Daylight Savings checkbox in the Time control panel. When calling HiliteMenu to highlight or unhighlight the Apple menu, passes flag values of $8001 and $8000 instead of 1 and 0. This makes the highlighting work right even for a text- based Apple character with a weird color table. Fixed cpOpenCDev request to work reliably. In 6.0, it did not always work. (The handling of finderSaysBeforeOpen has always worked fine.) EASYMOUNT V1.1 Loads even if an AppleTalk network is not available, since """""""""""""" it's useful locally now. Added support for folders and applications, and for local disks. Yes, you can make an alias for lots of things now! (You can't make aliases to documents, or aliases to aliases, and you can't do anything helpful with an alias other than open it...like drag things onto it.) Menu item now reads "Make Alias..." and has the keyboard equivalent Command-M. On handling a redundant finderSaysGoodbye call, EasyMount does nothing (as required in the 6.0 documentation). We now accept the srqGoAway request (in case somebody wants to remove or replace us on the fly, with IR or a similar utility). Added the message "You can make aliases for disks, folders, and applications only." Fixed srvNameBuff and zoneNameBuf to be large enough to hold 31-character GS/OS strings, so we can now deal with the longest server and zone names. We now use UseColorTable/RestoreColorTable in QuickDraw II Auxiliary when displaying the password dialog. It swaps in the 640-mode colors so the icon always looks correct. EasyMount now works correctly in 320 mode. The dialog was redesigned a bit so it works equally well in both modes. Made srqMountServer work properly with the new 1.1 file format that includes the alias pathname at the end. Crunched code a little by using the new calls OpenResourceFileByID, HiliteCtlByID, and SetCtlValueByID. Changed many error messages for clarity and consistency. FIND FILE NDA V1.1 Command-F opens Find File, if the application doesn't """""""""""""""""" use the Command-F for a menu item. (Find File installs a request procedure and watches for systemSaysMenuKey.) Excellently improved responsiveness by giving up control when EventAvail shows there is a keypress or mouse click waiting to be processed. Passes a real auxiliary type to GetSysIcon (was always passing zero, so request procedures were unable to give different icons for files with the same file type but different auxiliary types). Fixed intermittent $0201 error on going to P8 after clicking on a found file. It wasn't disposing the $53xx memory for the bottom list, and sometimes it would wind up in special memory. Removed code that truncates disk names for the pop-up menu, since the menu manager takes care of it now. Removed leading colons from volume names in the pop-up. Uses the new Control Manager call GetCtlValueByID. CALCULATOR NDA V1.1 Disables the Undo item when the window is active. """"""""""""""""""" MEDIA CONTROL NDA Changed version from 1.3a0 to 1.3. """"""""""""""""" VIDEOMIX NDA Changed version from 1.3a0 to 1.3. """""""""""" >>> FINDER 6.0.1 <<< """""""""""""""""""" USER-LEVEL FINDER CHANGES Changed the About box title and menu item to """"""""""""""""""""""""" "About This Apple IIgs". Removed Finder version and engineer names. (You can Get Info on Finder to see the version, which should always match the System version anyway.) Keyboard Navigation implemented. See Finder Help under "Selecting & Coloring Icons." When you click on an icon, it starts renaming it only if you click on the *name*, not if you click on the icon part. (Terribly handy for keyboard navigation.) Removed "File Copy Alternatives" dialog. Option-dragging a file to another location on the same disk now forces a copy rather than a move. You can now click in the Name, Size, Kind, or Last Modified text in the info bar of a list-view window to change the view. Icon Info Calculate button has key equivalent of Command-K. You can use Command-period to stop the calculation. Added the display of SCSI IDs on the "Where" card of Icon Info windows. If the device that the window comes from supports DStatus subcall $4000 (GetSCSITargetPriority), then the ID will be displayed after the device name. Dragging control panels, desk accessories, drivers, Finder extensions, fonts, file system translators, sound files, initialization files, and tools onto the System folder icon on the boot disk now does "magic routing" after telling the user. (Font files get special treatment only if bit 15 of their auxtype is clear, so that DTS can make font filetype assignments for files that do not belong in the Fonts folder.) The rubber-band icon selection now actively highlights and unhighlights icons, instead of waiting until you release the mouse button. Fixed rename with an Icon Info window open on the target file to work for regular files. In 6.0 it only redrew the Icon Info name for devices and folders. We now dynamically resize the long product name static text control rectangle on Icon Info cards to account for the existence of the "Inactive" check box. We also set the new control flag bit of the same control to use DrawStringWidth to truncate and compact to fit the area. When running the Finder from an AppleShare file server, the Finder now properly draws the server volume name in the writing a bundle status dialog if the @:Desktop file is being written to. It used to always be blank. Fixed a bug in the info card recalculation code. If you had any Icon Info windows open when you emptied the trash, the sizes of files would be updated to match the disk that they came from. Now only disk Icon Info windows get updated when the trash is emptied. Command-Option-O (tunnel open) no longer closes your current window if there was nothing to open. Changed window-closing code so it always selects the icon the window closes into. In 6.0 it selected the icon only if there would be no other selection, which was confusing. New untitled folders now have lowercase names (like untitled.a). Changing the Hide Invisible Files preference updates all windows, not just the front one (it was trying to update them all, but it was getting confused after the first one). Creates Trash icon and window even if device #1 fails to mount (you could crash Finder 6.0 by booting from floppy, moving the floppy to some other drive, re-entering the Finder with the boot device empty, and then trying to leave the Finder). Re-fixed the "trash icon turns into the icon you dragged into it" bug that was allegedly fixed in 6.0. It was *almost* fixed in 6.0. Changed the "need an FType file" message to say "...the Icons folder on your startup disk" instead of "the *:Icons folder." About box numbers now read "zero" when they would be "0", as in "0K". For example, boot with Inits/DAs off & see "zero K" for DAs. Kind strings in list views now get compressed if necessary (the Finder draws them with DrawStringWidth instead of DrawString). Files with HFS file type 'APPL' now show up with kind string "Macintosh application". Inactive files no longer "miss" their specific Kind string & get the generic-filetype kind. (When mapping a filetype/auxtype to a kind string, if the match is an any- auxtype entry that can be Inactive, and bit 15 of the auxtype is in fact set, the Finder repeats the search with bit 15 cleared, getting a kind string that is at least as descriptive.) Added oneDocs in the Finder's resource fork for various Driver auxiliary types, which now show up as Kinds: GS/OS Device Driver, AppleTalk Driver, Media Control Driver, Printer Driver, Printer Port Driver, MIDI Driver. Added an icon for DiskCopy files. Dragging a different-sized disk (or option-dragging a same- sized disk) onto an read-only-filesystem disk (like MS-DOS) now correctly complains that you can't do that. Improved the Clipboard display (uses the new ShowClipboard call in the Scrap Manager). The "Finder requires 6.0.1 and 300K" message now shows a hex error code (from StartUpTools or other calls during startup, like LoadResource). Erase and Initialize on a disk now update the icon's file system. Fixes bugs like: Erase a DOS 3.3 disk to be ProDOS; when you drag something onto the disk, it still complains that the disk uses a read-only file system. Control works with Command-W and Command-Option-W. (Control reverses the save-finder-data setting.) Changed a lot of window parameter blocks to allow windows to update in the background (like behind an AlertWindow). Changed preference to read "Check 5.25" drives on Finder start" (key equivalent is now 5). It used to say "When starting up, check 5.25 drives", but this was confusing (could be misunderstood as affecting what device the system boots from). Finder no longer gets confused about the file system of an icon that you drag to the desktop. Fixes bugs like Locked boxes showing up for HFS folders on the desktop, and not being able to launch ProDOS 8 applications that were just dragged onto the desktop. Fixed a bug when shortening a disk name (rename RAM5 to RAM, for example). The Finder would get really confused about the pathnames of existing icons on the disk that you renamed. DrawDesk uses full-screen rectangle, not just below the menu bar. This way HideMenuBar works as expected in the Finder. Fixed up I-Beam handling (new code is smaller). Fixed bug where IBeam could mistakenly appear when the icon being renamed was in a window but scrolled outside the visible area, and the mouse was over the desktop. When you change the system date/time format (for example, using the Time Control Panel), the Finder now bothers redrawing all directory/trash windows that have a Last Modified column. (It used to notice the change but not force a redraw, so windows could get half-updated.) Saved 1800 bytes by making menu resources string-based instead of template-based (so far they're rCStrings). This saves disk space and load time and reduces the handle count. DEVELOPER-LEVEL FINDER CHANGES Finder uses Volume Changed events to """""""""""""""""""""""""""""" notice when windows need to be updated because of GS/OS calls made by anything other than the Finder. The tellFinderAboutChange call now does nothing, since the Finder now notices changes without special help. Note that the Finder does not notice when it should make changes to icons on the desktop (not even in 6.0 with tellFinderAboutChange). Changed tellFinderSetSelectedIcons to not flicker an icon if it is the sole selected icon and we've been asked to highlight it again. When Finder sends out multiple finderSaysBeforeOpen requests (when a group of icons are opened), the modifiers are now correct for all of the requests, not just the first one. In 6.0, the modifiers were accidentally zero for all requests other than the first. tellFinderGetSelectedIcons (extended) now returns the icon height and width. This was broken in 6.0 (the workaround in the 6.0 documentation sees that the Finder version is not 6.0 and automatically does nothing). Fixed the oneDoc match types matchCreateDateTime and matchModDateTime. They did not work in 6.0. Finder no longer forgets what menu title to unhighlight if an Extras menu handler calls tellFinderMItemSelected (even with no-highlight). We now send finderSaysBeforeOpen any time we launch an application, not just when the user explicitly launches one. This means that you can now properly trap the Finder any time it was about to quit to another application. (Finder 6.0 neglected to send a finderSaysBeforeOpen when the user chose the application using Standard File.) Finder accepts the srqQuit request, handling it just like a tellFinderShutDown with a selector of kQuit. When matching an icon by filename and using a leading "*", the "*" can now match zero characters (it works like 5.0.4 again). In 6.0, a leading wildcard accidentally required at least one character to match. When matching an icon by filename, the case of the string in the Icon file or in the rBundle resource no longer matters. Previously, a string with a leading wildcard (like "*PAINT") would only work if all letters were uppercase, regardless of the case of any actual files being matched against. Added a tick count parameter (long) to finderSaysKeyHit. The parameter count is now three. The parameter count for finderSaysBeforeOpen and finderSaysOpenFailed is now seven. (It was accidentally only 6 in 6.0, but all seven parameters were there.) For convenience, finderSaysIdle now passes the idle ticks (as would be returned from askFinderIdleHowLong) as the dataIn value. Changed finderSaysHello pCount to 4 and added a word of flags, none of which are presently useful. Fixed tellFinderSetSelectedIcons to handle bit 31 correctly (the 6.0 Finder documentation says not to set the bit; now it works as originally intended, deselecting all icons before selecting the specified ones). tellFinderRemoveFromExtras validates the item number for $Exxx, returns error fErrFailed if invalid. (If you pass itemID 0 to Finder 6.0, it happily removes the first (remaining) item from the Apple menu!) Implemented the geekPrefs option for Shut Down default. Set the low two bits of the X2 word to 0, 1, or 2. (This word was semi-documented with 6.0, but it didn't do anything.) Fixed tellFinderAddBundle to use GetIndResource(1) instead of 0 when you pass zero to grab the first available rBundle (this case always failed with an error in 6.0). tellFinderSpecialPreferences now returns a valid finderResult ($0000). In 6.0, it was returning the dragFlag value as the finderResult. INTERNAL FINDER CHANGES When we're network-booted, we now load the """"""""""""""""""""""" Desktop file from the user prefix ('@'). In 6.0, the Finder wrote rBundles to the Desktop file there, but it forgot to read them. Removed the new-for-6.0 server-specific copy code, because the code that built the destination hierarchy tree was whacked in the head. This means that duplicating files or copying from disk-to-disk on a single server now reads and writes file data instead of telling the server to do it. LoadExtensions now tries to create @:FinderExtras. This way the folder already exists in case you drag a Finder Extension into your System folder. (If you're booting from a network, magic-routing a Finder Extension is not helpful, because it will try to route into your *:System:FinderExtras folder instead of @:FinderExtras.) Fixed CompareVols to be case insensitive in its comparison. Internally Finder will always create icon objects and window names and pathnames in the same case as they have on disk. However, if a window was opened via tellFinderOpenWindow that used a different case, moving icons from/to that window could previously result in files being copied instead of being moved. Fixed a fatal bug in the Icon Info size calculation code. If it couldn't read the current size from the device for whatever reason, the stack became unbalanced. Changed keyDown to ignore the event if systemSaysMenuKey ate it (if the "what" of the event is zero). For example, when Command-Ctrl-Esc opens the Control Panels NDA, the Finder does not accidentally process the Esc keypress and deselect all icons. Fixed the problem where a server disconnecting unexpectedly would make the Finder hang if a server window was the current selection plane. During tellFinderSetSelectedIcons, we now bring each icon to the head of the linked list as it is drawn. This fixes cosmetic problems when icons overlap and get partially redrawn. Finder can now deal with 128 devices being online as opposed to the old limit of 64. Fixed four incorrectly-coded 32-bit additions. There were problems when certain data structures crossed bank boundaries. Changed SizeToString to do "zero " instead of "0" (affects info bars, icon info cards, & much more). When Finder gets error $46, $51, $5A, or $2D from a Volume call on a newly-inserted disk, it no longer sets the hdiUnreadable bit to HandleDiskInsert (that bit is only set for a real I/O error). Knowledge of what filetypes can be Inactive is no longer in the Finder. It comes from the Filetype Descriptor files instead. Flag bit 0 in an index entry for an any-auxtype entry means files of that type can be inactive. Finder now uses Filetype Descriptor files even if some of flag bits 0..7 are set. No longer calls SelectWindow on a non-window when you click on a desktop icon or start rubber-banding on the desktop. The tellFinderGetWindowInfo call has a special case for the Clipboard window, which is now created by the system. tellFinderGetWindowInfo pretends it's a Finder window and gives you information about it anyway. Saved a few bytes by removing a redundant MessageCenter call for deleting message $11, the long-pathnames-to-launch message (the toolbox automatically deletes this message when the Finder deletes message 1, the pstring-pathnames-to-launch message). Optimized main segment (AND #$7FFF becomes ASL LSR; use Zero constant on direct page) Uses new Line Edit call LEClassifyKey to determine what control characters to let through for editing when renaming an icon (saved a few bytes; no user-visible change). Fixed the error-exit path when tellFinderOpenWindow gets an error from ExpandPath. Various miscellaneous optimizations, including reserving one word of direct-page space to always hold a zero. Replaced many pea 0 with pei >> SYSTEMTOOLS2 - DISK <<< """"""""""""""""""""""""""" READ.ME FILE Rewritten for 6.0.1. """""""""""" WHATS.NEW FILE New file listing the changes in 6.0.1 for the user. """""""""""""" SHORTCUTS FILE Lots of changes. """""""""""""" ADDED CLOCK.PATCH (Applesoft program for patching ProDOS 8 Thunderclock """"""""""""""""" driver). >>> APPLE II SETUP DISK V3.0 <<< """"""""""""""""""""""""""""""""" To boot Apple IIgs System Software 6.0.1 from an AppleShare file server, you must install Apple II Setup disk v3.0 onto the server. Earlier versions of Apple II Setup do not work with 6.0.1. Includes Logon version 1.5 and ProDOS 8 2.0.3. In Logon, added a "Looking for AppleTalk zones" message. Also, keyboard navigation is now insensitive to bit 7 of the first characters of strings in the lists (since they are already sorted bit-7 insensitively). The Apple II Setup disk is no longer bootable. There was no longer room to put a current Macintosh System Folder and all of the installed parts on one disk. Installer version 3.2 is used, so you should just double-click the Installer application. Note: For AppleShare 2.0 users, you'll need to get to the Finder to do this; just start up from a disk that includes the Finder (such as your System 6.x System Disk, or the AppleShare Admin disk). Hint: You can then select your server's boot disk and pick "Set Startup..." from the Special menu; set it to start up with Finder (or MultiFinder) and then restart. This way, you'll boot into the Finder from your hard disk and won't have to swap floppies. When you're done, you can set startup to the "AppleShare File Srvr" program in the Server Folder. >>> APPLE II SYSTEM DISK 4.0.2 MAY 13, 1993 <<< """"""""""""""""""""""""""""""""""""""""""""""" CONTENTS OF /UTILITIES (3.5" DISK) """""""""""""""""""""""""""""""""" /UTILITIES Blocks PRODOS 35 Updated to version 2.0.3 LAUNCHER.SYSTEM 16 No change from 4.0.1. SYSUTIL.SYSTEM 3 No change from 4.0.1. FASTCOPY.SYSTEM 41 No change from 4.0.1. BASIC.SYSTEM 21 No change from 4.0.1. UTIL.0 87 No change from 4.0.1. UTIL.1 62 No change from 4.0.1. UTIL.2 4 No change from 4.0.1. SETTINGS 1 No change from 4.0.1. COPY.ME 1 No change from 4.0.1. CLOCK.PATCH 17 Revised. Fixes ProDOS Thunderclock date stamping past 1998. 17 CONTENTS OF /UTILITIES (5.25" DISK) """"""""""""""""""""""""""""""""""" Same as 3.5" disk, except CLOCK.PATCH is omitted because there is no room. >>> DETAILS <<< """"""""""""""" PRODOS * ProDOS 8 v2.0.3. """""" * KVersion ($BFFF) is $23 for version 2.0.3. * The Thunderclock year table now works for 1993-1998. To get past 1998 you need to run CLOCK.PATCH if youUre using a Thunderclock card. * On an Apple II Plus or unenhanced Apple IIe, the message now reads "REQUIRES ENHANCED APPLE IIE OR LATER" instead of "relocation / configuration error". * Removed the message "** Unable to find a ".System" file **". ProDOS 8 always does a Quit if there is no .System file to run. BASIC.SYSTEM * Version 1.5 (same as Apple IIgs System Software 6.0 """""""""""" and 6.0.1). LAUNCHER.SYSTEM * Version 4.0. Unchanged from Apple II System Software """"""""""""""" 4.0.1. FASTCOPY.SYSTEM * Unchanged from Apple II System Software 4.0.1. """"""""""""""" CLOCK.PATCH * Updated to patch ProDOS 8 2.0.3 (as well as 1.9, 2.0, """"""""""" 2.0.1, 2.0.2). * Fixed handling of the year 2000. COPY.ME * Unchanged from Apple II System Software 3.2. """"""" SYSUTIL.SYSTEM Util.0 """""""""""""" Util.1 Util.2 Settings * System Utilities version 3.1, unchanged from Apple II System Software 3.2. [EOA] [RTC]////////////////////////////// NIGHTS OF THE RoundTable / ///////////////////////////////// An Intro To The A2Pro RTC """"""""""""""""""""""""" By Nate Trost [N.TROST] RTC HAPPENINGS A2Pro Real Time Conferences (RTCs) provide an excellent """""""""""""" way to get programming help and information, learn tips and techniques, help other programmers, and chat with other Apple II users that have an interest in programming. As the name suggests, RTCs are real time, meaning no waiting for an E-Mail reply or for a response from the Bulletin Board. Surprisingly, a large percentage of A2Pro users have never taken advantage of this powerful resource of the A2Pro Roundtable. A2Pro has regularly scheduled RTCs six nights a week. During these times you can expect to meet an A2Pro RTC host and will probably also see several other A2Pro users in the RTC. The current RTC schedule is (all times Eastern): Sunday - A2Pro Sunday Night Jam, hosted by Matt Deatherage 8:30-10:00 PM Monday - GS/OS and Toolbox Night, hosted by Dave Miller 9:30-11:00 PM Wednesday - HyperBar and Grill, hosted by HangTime 9:30-11:00 PM Thursday - Graphics and Sounds, hosted by Nate Trost 9:30-11:00 PM Friday - Beginners Night, hosted by Nathaniel Sloan 9:30-11:00 PM Saturday - Assembly Night, hosted by Brian Wells 8:30-11:00 PM Note that the ending times of the RTCs are flexible, it isn't too unusual for a RTC to run into the wee hours of the morning. :-) Although RTCs can seem a bit daunting at first, they are really quite easy to use. In this next segment, we'll do a little walkthrough of a sample RTC session outlining how things work and what the commands are. When entering a RTC, it is best if you set your telecommunications program to a 'split-screen' or 'chat' mode. This will keep what you type and what others type separate on the screen and keeps the two from mixing together. If you don't know how to turn on such a mode, refer to your manual or ask in the appropriate topic in the A2 Bulletin Board. When you select the Real Time Conference option from the A2Pro menu the next prompt you will see will look something like this: GEnie Page 530;2 Apple II Program Developers RTC Version 3.15 Room Users 1 2 Address of will be used. What ROOM (1-3), or uit? The RTC is divided up into several rooms. The main RTC always takes place in a single room, although some people may move to another room from time to time for private discussion. In general, you will want to enter the room with the most people since that is probably where the action is! If there are no users in the RTC you will get the message "No users in RTC." instead of a Room/Users tally. At this point you may either type Q to return to the A2Pro Main Menu or choose a room number and move into the RTC. When you first enter a room you will see something like: Room 1, The Apple II Programming Jam Notice on door: Spend a hot Sunday afternoon helping cooking up some hot code -- we can help! Or just drop in and chat to beat the heat. ** is here. You are now in the RTC! The above Room name and door notice will be different, this is just an example. The "** is here." is a message that is sent to all the users in the RTC room you just entered telling them that a new person has entered the room. In this case, it is a our example A2Pro user, a person with a EMail address of A.USER (maybe he is THE.USER? :-). Now that you are in RTC, anything you type will be broadcast to the other users in the RTC. For example, if you type: Hi everybody! and hit return you and everyone else will see: Hi everybody! If a user with an EMail address of BARNEY.DSAUR says Hey A.USER, what's up? you will see: Hey A.USER, what's up? That's all there is to talking in RTC! RTC COMMANDS There are several handy RTC commands that are used in just """""""""""" about every RTC session. All RTC commands begin with a /. Also, all RTC commands must start at beginning of the current line. LEAVING THE RTC To exit the RTC and return to the A2Pro Main Menu, type """"""""""""""" the /EXIT command. To exit the RTC and log off of GEnie, type the /BYE command. GIVING YOURSELF A NAME While EMail addresses are fine for sending EMail, """""""""""""""""""""" J.SCHMOE3 or A.USER aren't very personal or convienient for general conversation. To add a 'nickname', which can consist of your first name, phrase, or whatever you want people to call you, just use the /NAME command followed by the new nickname. A nickname can contain any character (including spaces) and may be up to twelve characters long. So if A.USER has a first name of Al he could type /NAME Al and see: ** <[Al] A.USER> was . Name is now [Al] A.USER Now whenever you say something, people will see your nickname to the left of your EMail address. SEEING WHO IS IN RTC You can get a list of people in the current RTC """""""""""""""""""" room at any time with the /STATUS command. The list you will get has a format that looks like this: Room 2, The Apple II Programming Jam Job City Room Sta Mail-Address 1 Trumbull,CT 2 N A2PRO.DYAJIM 2 Naperville,IL 2 N [Nate] N.TROST 3 Cupertino,CA 2 L [A2Pro Leader] M.DEATHERAGE 4 New York,NY 2 N [Al] A.USER 5 PBS,TV 2 N [Purple!] BARNEY.DSAUR CHANGING ROOMS You can switch RTC rooms with the /ROOM command. To use """""""""""""" /ROOM just type /ROOM and the room number you wish to move to. Example /ROOM 1 would move you to room 1. EXCHANGING PRIVATE MESSAGES In order to send a private message to a """"""""""""""""""""""""""" person that can ONLY be seen by that person, you can use the /SEND command. You can select a target person in two different ways, by EMail address or Job number. The Job number appears in the /STATUS list (see above) and you will see what it is if you /SEND by EMail address. Here are some examples: /SEND N.TROST Hey, this RTC is cool! Send me the secret plans for the destruction of civilization! After typing this in you would see the message: Message sent to Job 2 And N.TROST (and ONLY N.TROST) would see this: ** <[Al] A.USER> (Sent by 4) Hey, this RTC is cool! Send me the secret plans for the destruction of civilization! Now that you know N.TROST's Job number you could just: /SEND 2 I need the secret plans now or all is lost! If N.TROST send you a reply back you would see something like this: ** <[Nate] N.TROST> (Sent by 2) Okay, the plans are in the case of the old IBM PC in the basement of the Alamo. Use your secret decoder ring to descramble your EMail! FORMAL RTC ETIQUETTE During some RTCs (usually those with guest """""""""""""""""""" speakers) a 'formal' RTC is in session. During these RTCs the RTC Room is set to 'listen-only'. This Means you can see what the RTC Host and Guest Speaker are saying, but you cannot say anything out-loud. (you can still /SEND to other people, however). To ask a question or make a comment, use the /RAISE command. This will let the RTC Host know that you want to ask a question and he will call on you when it is your turn. When it is your turn you will be able to speak. GETTING HELP To get a list of RTC commands and a description of each """""""""""" command, you can use the /HELP command. You can also ask the other users in the RTC for help. RTCs Are Fun! This concludes our Introduction to RTCs! We hope you'll """"""""""""" give the A2Pro RTC a try if you haven't already, they are a valuable resource and lots of fun! If you have any questions just ask in Category 1, Topic 9 (A2Pro Real Time Conferences) of the A2Pro Bulletin Board. /////////////////////////////////////////////// GEnie_QWIK_QUOTE //// / "My [GEnie] bill went down roughly 30%... and I just got a raise, / / too. This should be enough to cover the new tax gouge..." / ///////////////////////////////////////////////////// C.OINES1 //// [EOA] [LOG]////////////////////////////// LOG OFF / ///////////////////////////////// GEnieLamp Information """"""""""""""""""""" o COMMENTS: Contacting GEnieLamp o GEnieLamp STAFF: Who Are We? GEnieLamp Information GEnieLamp is published on the 1st of every month """"""""""""""""""""" on GEnie on page 515. You can also find GEnieLamp on the main menus in the DigiPub (1395), ST (475), Macintosh (605), IBM (615), Apple II (645), A2Pro (530), Unix (160), MacPRO (480), Geoworks (1050), BBS (610), CE Software (1005) and the Mini/Mainframe RoundTables. GEnieLamp is also distributed on CrossNet, Internet, America Online, Delphi and many public and commercial BBS systems worldwide. o On Internet our address is: genielamp@genie.geis.com o GEnieLamp pays for articles submitted and published with online GEnie credit time. Upload submissions in ASCII format to library #42 in the DigiPub RoundTable on page 1395 (M1395;3) or Email it to our Internet or GE Mail address listed below. o We welcome and respond to all GE Mail. To leave comments, suggestions or just to say hi, you can contact us in the DigiPub RoundTable (M1395) or send GE Mail to John Peters at [GENIELAMP] on page 200. o Talk to us live 9:00 p.m. [EDT] every Wednesday night in the Digi*Pub Real-Time Conference. o Back issues of GEnieLamp are available in the DigiPub RoundTable Library #2 on page 1395. >>> GEnieLamp STAFF <<< """"""""""""""""""""""" GEnieLamp o John Peters [GENIELAMP] Senior Editor/Publisher """"""""" ATARI ST o John Gniewkowski [J.GNIEWKOWSK] Editor """""""" o Mel Motogawa [M.MOTOGAWA] ST Staff Writer o Sheldon Winick [S.WINICK] ST Staff Writer o Richard Brown [R.BROWN30] ST Staff Writer o John Hoffman [JLHOFFMAN] ST Staff Writer o Al Fasoldt [A.FASOLDT] ST Staff Writer ATARI ST/TX2 o Cliff Allen [C.ALLEN17] Editor/TX2 """""""""""" ATARI [PR] o Bruce Faulkner [R.FAULKNER4] Editor/GEnieLamp [PR] """""""""" IBM o Robert M. Connors [R.CONNORS2] Editor """ o David C. Leithauser [D.LEITHAUSER] HyperRead Editor o Brad Biondo [B.BIONDO] IBM Staff Writer o Tippy Martinez [TIPPY.ONE] IBM Staff Writer o David Holmes [D.HOLMES14] IBM Staff Writer MACINTOSH o Richard Vega [R.VEGA] Editor """"""""" o Tom Trinko [T.TRINKO] Mac Staff Writer o Bret Fledderjohn [FLEDDERJOHN] Mac Staff Writer APPLE II o Doug Cuff [D.CUFF] Editor """""""" o Phil Shapiro [P.SHAPIRO1] A2 Co-Editor o Mel Fowler [MELSOFT] A2 Staff Writer o Darrel Raines [D.RAINES] A2 Staff Writer o Gina E. Saikin [G.SAIKIN] A2 Staff Writer o Steve Weyhrich [S.WEYHRICH] A2 Staff Writer A2Pro o Jim B. Couch [J.COUCH2] Editor """"" o Nate C. Trost [N.TROST] A2Pro Staff Writer o Jim Maricondo [A2PRO.DYAJIM] A2Pro Staff Writer ETC. o Jim Lubin [J.LUBIN] Add Aladdin """" o Scott Garrigus [S.GARRIGUS] Search-ME! o Mike White [MWHITE] (oo) / DigiPub SysOp \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\//////////////////////////////////// Material published in this edition may be reprinted under the follow- ing terms only. Reprint permission granted, unless otherwise noted, to registered computer user groups and not for profit publications. All articles must remain unedited and include the issue number and author at the top of each article reprinted. Opinions present herein are those of the individual authors and does not necessarily reflect those of the publisher or staff of GEnieLamp. We reserve the right to edit all letters and copy. Please include the following at the end or the beginning of all reprints: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\//////////////////////////////////// (c) Copyright 1993 T/TalkNET Online Publishing and GEnie. To join GEnie, set your modem to 2400 baud (or less) and half duplex (local echo). Have the modem dial 1-800-638-8369. When you get a CONNECT message, type HHH. At the U#= prompt, type: XTX99014,DIGIPUB and hit the [return] key. The system will then ask you for your information. Call (voice) 1-800-638-9636 for more information. \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\//////////////////////////////////// [EOF]