|||||| |||||| || || |||||| |||||| || || ||| || || || || ||| |||| |||||| || |||| Your || || || || ||| || || |||||| |||||| || || |||||| |||||| GEnieLamp Computing || |||||| || || |||||| RoundTable || || || ||| ||| || || || |||||| |||||||| |||||| RESOURCE! || || || || || || || ||||| || || || || || ~ WELCOME TO GENIELAMP A2Pro! ~ """"""""""""""""""""""""""" ~ GSLib Released ~ 3D Logo Seminar Transcript ~ ~ Compiler Optimization ~ DrawStringWidth in 6.0.1 ~ ~ Tour of 8/16 Central ~ Tour of Apple Assembly Lines ~ ~ Reconnecting /RAM in ProDOS 8 ~ Graphics Screen Etiquette ~ ~ HOT NEWS, HOT FILES, HOT MESSAGES ~ ////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ GEnieLamp A2Pro ~ A T/TalkNET OnLine Publication ~ Vol.1, Issue 09 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Editor.......................................................Nate Trost Publisher.................................................John Peters Copy-Editor............................................Bruce Maples \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\//////////////////////////////////// ~ GEnieLamp IBM ~ GEnieLamp ST ~ GEnieLamp [PR] ~ ~ GEnieLamp A2Pro ~ GEnieLamp Macintosh ~ GEnieLamp TX2 ~ ~ A2-Central-On-Disk ~ LiveWire (ASCII) ~ ~ Member Of The Digital Publishing Association ~ GE Mail: GENIELAMP Internet: genielamp@genie.geis.com FTP: sosi.com ////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ >>> WHAT'S HAPPENING IN THE APPLE A2Pro ROUNDTABLE? <<< """"""""""""""""""""""""""""""""""""""""""""""""""""""" ~ November 1, 1993 ~ FROM MY DESKTOP ......... [FRM] HEY MISTER POSTMAN ...... [HEY] Notes From The Editor. Is That A Letter For Me? A2PRO ROUNDTABLE STAFF .. [DIR] TOUR OF 8/16 CENTRAL .... [TOU] Directory of A2Pro Staff. Great Programmers Magazine. LIBRARY BIT BONANZA ..... [LIB] TOUR OF AAL.............. [AAL] HOT Files You Can Download. The Assembly Language Journal. NIGHTS OF THE ROUNDTABLE [RTC] DEVELOPERS CORNER ....... [DEV] Real Time Conference Watch. News From Online Developers. 3D LOGO SEMINAR RTC [3DL] LOG OFF ................. [LOG] Lists, Movies and Logo Magic. 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 GEnie's monthly fee is $8.95 for which gives you up to four """"""""""" hours of non-prime time access to most GEnie services, such as software downloads, bulletin boards, GE Mail, an Internet gateway, multi-player games and chat lines, are allowed without charge. GEnie's non-prime time connect rate is $3.00. 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 //// / >"Okay...wait! Can you slow it [Aladdin] down some? < / / >It's too fast to read. Make it go back." < / / / / "Maybe you can convince her to do an 'unattended' pass, / / say fix a sandwich, or something.. Grin. / ////////////////////////////////////////////// NTACTONE //// [EOA] [FRM]////////////////////////////// FROM MY DESKTOP / ///////////////////////////////// Notes From My Desktop """"""""""""""""""""" o TOP OF THE PAGE >>> TOP OF THE PAGE <<< """"""""""""""""""""""" ~ By Nate C. Trost [A2PRO.GELAMP] ~ HELLO EVERYONE! Welcome to the November GEnieLamp A2Pro. Although I've """"""""""""""" been involved with the A2Pro Lamp for some time, this is my first issue as editor. Jim Couch has done an incredible job editing the Lamp and I'd like to thank him for putting up with my submissions and for leaving me with such a neat publication. :-) My name is Nate Trost. I've been working with the II ever since our family purchased an Apple ][+ back in 1981. Over the years we've upgraded from the ][+ to the IIe and finally to the IIgs. I've had a lot of fun using my Apple II computers over the past twelve years, and I still use my IIgs on a daily basis. While I think the Lamp is already a great publication, I'm always looking to improve it! I would greatly appreciate any suggestions or comments. Feel free to send me some GE Mail at my address of A2PRO.GELAMP or post in the A2Pro BB Category 1, Topic 15 (GEnieLamp A2Pro Office). Putting the Lamp together is a big job, and I'm looking for a staff writer to assist me in writing chores. Job responsibilities include: o ATTENDING A2PRO RTCS """""""""""""""""""" A2Pro Lamp's RTC Watch column features some of the interesting conversation that takes place in A2Pro RTCs. The staff writer will attend A2Pro RTCs on a regular basis and format interesting excerpts for publication in RTC Watch. o CREATING THE BIT BONANZA COLUMN """"""""""""""""""""""""""""""" Every month the best of the uploads to the A2Pro library are described in the Bit Bonanza column. The staff writer will format this article based on the descriptions of files uploaded to the A2Pro library. The staff writer will be compensated with free access to A2Pro. This is a great opportunity to get more involved with A2Pro and to help fellow programmers. If you are interested, send EMail to A2PRO.GELAMP, M.DEATHERAGE, and GENIELAMP describing yourself and your qualifications. Enjoy this issue! Nate C. Trost GEnieLamp/A2Pro [EOA] [DIR]////////////////////////////// A2PRO ROUNDTABLE STAFF / ///////////////////////////////// By Nate Trost [A2PRO.GELAMP] ______________________________________________ APPLE II PROGRAMMERS & DEVELOPERS ROUNDTABLE _____ ______ ______________________________________________ /_____|/______\ /__/|__| ___|__| Head Sysop: Matt Deatherage (M.DEATHERAGE) /__/_|__| /_____/ Assistants: Greg Da Costa (A2PRO.GREG) /________|/__/ __ __ __ Todd P. Whitesel (A2PRO.TODDPW) /__/ |__|__/______ /_//_// / Jim Maricondo (A2PRO.DYAJIM) /__/ |__|________// / \/_/ Nate Trost (A2PRO.GELAMP) [EOA] [HEY]////////////////////////////// HEY MISTER POSTMAN / ///////////////////////////////// Is That A Letter For Me? """""""""""""""""""""""" By Nate C. Trost [A2PRO.GELAMP] o BULLETIN BOARD HOT SPOTS o A2PRO ODDS & ENDS o WHAT'S NEW? o PROGRAMMER'S TIPS o HOT TOPICS o MESSAGE SPOTLIGHT >>>BULLETIN BOARD HOT SPOTS <<< """"""""""""""""""""""""""""""" [*] CAT9, TOP11, MSG{50}.................................Micol BASIC [*] CAT10, TOP28, MSG{7}..............................Hierarchic INIT [*] CAT13, TOP12, MSG{91}..........................Apple & Developers [*] CAT30, TOP2, MSG{98}...................................GNO Shell [*] CAT36, TOP10, MSG{55}.................................ORCA/Pascal [*] CAT36, TOP11, MSG{48}......................................ORCA/C >>>BULLETIN BOARD NEW TOPICS <<< """""""""""""""""""""""""""""""" [*] CAT36, TOP33....................................Object Programming >>> A2PRO ODDS & ENDS <<< """"""""""""""""""""""""" A2PRO STAFF CHANGES Hey, gang, I've sort of rested on my two-week """"""""""""""""""" vacation from GEnie. I say "sort of" because work's been a bear and I only had six hours of sleep last night, and doing all this is delaying my return to slumber tonight. While I went on vacation, some other changes happened around the GEnie world, and I thought I'd fill you in on them. There's a story behind some of this, but it's not filled with mystery, suspense or intrigue, so it's too boring to repeat. The summary is that with the changes recently made in the Apple II and Macintosh RoundTables on GEnie, the Macintosh Programmer's RoundTable wound up without a leader, and after talking for a while with Kent and Tom, I've accepted their offer to try to build a programmer's community on page 480 like we have here on page 530. It took lots of negotiation and planning to set things up so that we could all be pretty sure MacPro wouldn't take so much extra time that I'd have to devote less time to A2Pro, and we think we've accomplished that. The major thing that's changed in my GEM sessions is that MacPro is now second (and A2 now third), and I can't ignore some of the categories anymore. :) So if any of you are also wanting to program the Macintosh, please drop by page 480 and help us build a strong area there as we have here. Programmers helping programmers are what these roundtables are all about. So if you're not a Macintosh programmer, why do you care? :) There are a couple of staff changes here marginally related to this. Most of you have seen less and less of Steve Gunn over the past several months as he comes up with ever more new and creative excuses for not doing stuff around here, so we've kicked his butt out. (Actually, I've asked Steve to be a more general staff member with no assigned duties in A2Pro and to help beef up the MacPro libraries, and he's agreed. But that's not as interesting.) Steve's GE mail address will soon change to CHUCKIE (at his request) since he has no A2Pro assigned duties anymore. If anyone wants to post a message thanking him for whatever help he's been to you -- particularly if it's embarassing or awkward -- please feel free. :) Jim Couch, as many of you know, has resigned as editor of GEnieLamp A2Pro to spend time on career opportunities, and we wish him the best. We couldn't have asked for a better editor to build the A2Pro Lamp into the useful programming newsletter we know it now to be. But it does leave us with a monthly magazine that's helmless. I've asked Nate Trost if he'd like to be the editor, and in a moment of extreme weakness he's agreed. Pending John Peters' approval, Nate will be the new editor of GEnieLamp A2Pro, starting with the next issue. Nate's also agreed to continue doing bulletin board archiving and the A2Pro New Topic Service in the A2 and A2Pro bulletin boards, and soon he'll have a new GE Mail address reflecting his new position. [A2PRO.GELAMP] Nate, as described by one of our GEnie dudes, is "so competent it's scary," and I'm pretty happy to have wrung more competence out of him, or at least the potential for such. Anyone who wants to mail pizza gift certificates to Nate to keep his energy up may inquire about his address. :) Nate will probably be looking for articles and more for GEnie Lamp soon; he can talk about his vision for the newsletter in the GEnieLamp topic as soon as John Peters gives his OK to this whole idea (sometimes John doesn't read mail for a few days). (Not true, I just don't always answer right away! :) So, did anyone miss me? :) --Matt (Live programming help six nights a week! We must be insane!) (M.DEATHERAGE [A2Pro Leader], CAT1, TOP17, MSG:117/M530) >>> WHAT'S NEW? <<< """"""""""""""""""" DRAWSTRINGWIDTH IN 6.0.1 OK, I just spent about two hours figuring out """""""""""""""""""""""" how to use the _DrawStringWidth tool call. Since I spent this time and documentation is not available elsewhere, I am posting this in A2Pro for all developers. Use at your own risk. This information comes from Bill Tudor's hard work and is not fully tested. If anyone who "knows" this call cares to comment on what I found, please feel free to say something like "That looks pretty good to me" or "better not set bit 13" etc... Tool Call: DrawStringWidth (Tool Call Number $1512) previous contents Stack Before call: |-----------------| | flag | Word - bit flag defined below |-----------------| |- Ref -| Long - Reference to string |-----------------| | size | Word - Horizontal width |-----------------| previous contents Stack After call: |-----------------| i.e., nothing is returned! Here is the definition of flag: flag = 16 bits as follows: bits 0-1 = references type 00 = ref is Pointer 01 = ref is Handle 10 = ref is Resource 11 = illegal value bits 2-3 = Data type 00 = data is P String 01 = data is C String 10 = data is W String 11 = illegal value bits 4-12 = Reserved (as far as I can tell) bits 13-14 = Elipse location 00 = no ellipsis 01 = ellipsis at the Left 10 = ellipsis in the Middle 11 = ellipsis at the Right bit 15 = Compression bit 0 = OK to compress text 1 = Do NOT compress text This information was found by trapping the call to DrawStringWidth that standard file makes, and altering the parameters on the stack and seeing what happends (yes, a fair number or re-boots were needed). Have fun with the new call! Bill {W.TUDOR} (W.TUDOR, CAT15, TOP18, MSG:41/M530) GSLIB NOW AVAILBLE IN A2PRO LIBRARY GSLib is now in the library folks! """"""""""""""""""""""""""""""""""" File #3593....GSLIB.DOCS.SIT REV 1 This is a StuffIt 1.5.1 archive (which means GSHK can extract it) that contains the GSLib documentation (what there is of it!) in Microsoft Word format. File #3595...GSLIB.BXY RELEASE #1 This is the GSLib library, a "GSLibAppleGlue" library for use with APW C, MPW IIGS C and MPW IIGS Pascal, and interfaces for the APW/ORCA/MPW IIGS languages. There is NO documentation or sample source in this archive!!! GSLib presents a unique challenge to version tracking. Internally we are constantly making changes to GSLib, but we only plan on releasing public updates occasionally (perhaps once a month unless a serious bug is found). For example, GSLib is current at v4.2, but within a month, it could be at v4.2.15! :) So, all public releases will follow with a "release" number that will simply allow you track that you do have the latest public release. The documentation will be tracked separately since it is incomplete and will most likely be updated more frequently (I'll document any _specific_ routine tha t someone asks for...) Have fun folks, and feel free to ask any questions here! Bryan (SOFTDISK.INC [Bryan Zak], CAT31, TOP9, MSG:82/M530) [EDITORS NOTE: GSLib is an exciting new library of routines for Apple IIgs programmers. If you program the IIgs, be sure to check out GSLib!] >>> PROGRAMMER'S TIPS <<< """"""""""""""""""""""""" RECONNECTING /RAM IN PRODOS 8 Does anyone know if there has been """"""""""""""""""""""""""""" documented a preferred method for reconnecting /RAM when the device that's there may be a third party card for extended memory. I have the ProDOS 8 Technical Manual's method for dealing with Apple's /RAM but will the FORMAT request work with the third party cards? Eric (KITCHEN.SINK [Eric], CAT7, TOP6, MSG:46/M530) >>>>> Eric - I don't think there's any guarantee on how a third-party """"" /RAM driver will react. There probably aren't that many, so you might be able to test it on a case-by-case basis for the major drivers. In any case, if I had a RAM disk installed I'd be vexed if the program appropriated it for use in such a way that it "trashed" my disk. Therefore the only options I can see are to check with the user before overwriting RAM if a RAM disk appears to be installed. At the same time, you could tell them they may need to restart the driver to re-install /RAM (if you know what drivers don't format, you could even name them). If feasible, I think a better solution might be to create a dummy file on the /RAM volume and access it through ProDOS calls as "virtual memory". If you're using it mainly for data or overlays (and not to actually run routines from) this may not be that difficult. Not only can the size of the file adjust to the available RAM (you could have the upper limit be user- configurable, or just grab it all like AppleWorks does), but if someone had a _fast_ hard disk setup (like a cached drive) they actually might be able to use hard disk space with a modest performance "hit". (WIZARDS.MUSE [Dennis], CAT7, TOP6, MSG:47/M530) <<<<< Actually, the preferred method of disconnecting /RAM and """"" reconnecting it is explained quite well in "Beneath Apple ProDOS", by Quality Software (no relation to QC). Walker (W.ARCHER2, CAT7, TOP6, MSG:48/M530) >>>>> Thanks to those who have responded. My current method for doing """"" this was as suggested in the ProDOS 8 Technical Reference Manual. First read block 2 and see what the file count was on the drive. If there are no files and the size of the device is 127 blocks (standard Apple) then disconnect. If the size is any different, or there are files on the device then do what other programs do and say about to erase volume at Slot 3, Drive 2, Ok to Proceed? YES/No type of thing. I don't know whether or not the re-installation/re-hookup process will work for the third party cards. I guess we will work at getting it to work with the Apple /RAM and then see what happens with the other cards. We have a few people who can test those for us, but we may just have to put out the call for BETA testers with certain configurations who would be willing to test an application or two. We can't use the method of creating a virtual memory file since we are using double hi-res graphics and actually are using auxilliary memory for routine storage and accessing them from aux memory. Walker, I have read the method in Beneath Apple ProDOS as well. There's is a good explanation. I will probably use a combination of the P8 Tech Manual and the Beneath Apple ProDOS methods. Eric (KITCHEN.SINK [Eric], CAT7, TOP6, MSG:49/M530) <<<<< You'd think we wrote these Technical Notes for our health, not """"" because anyone was actually going to _read_ them... While no specific step-by-step instructions for installing /RAM are present, and Apple obviously can't tell you what third-party RAM disk drivers are going to do, there's enough information in the ProDOS 8 Technical Notes to answer most of your needs, including ProDOS 8 TN #8, which reveals the method that's probably in "Beneath Apple ProDOS" decreases the number of online volumes by one every time you use it. All of these Notes, along with the index (which has a "/RAM" entry right at the top) are in the A2Pro library. --Matt (yes, I seem to be back) (M.DEATHERAGE [A2Pro Leader], CAT7, TOP6, MSG:50/M530) SCSI DRIVERS IN 6.0.1 Recently there was a discussion in A2 about making """"""""""""""""""""" the RamFAST drivers 6.0.1-savvy. Here's some information that may help: The device dispatcher in 6.0.1 has been modified by implementing a new characteristics bit for drivers. If this bit ($0010) is set in a device's characteristcis it indicates that the driver properly follows all 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 driver). This was implemented because the RamFAST driver (and others possibly?!?) crashed when Apple implemented a new DStatus sub-call--it should have returned an error, but it didn't. There is now a new Apple-defined DStatus subcall for SCSI devices. Call $4000, GetSCSITargetPriority, returns a word indicating the SCSI ID of a given GS/OS SCSI device. (This is nice because Finder will report the SCSI ID in its Icon Info window if the driver supports it.) Anyway...that's the info! Bryan (SOFTDISK.INC [Bryan Zak], CAT8, TOP5, MSG:83/M530) <<<<< When I implemented the new DStatus call, I tested this with two """"" 3rd-party drivers, the RamFAST (with 2.x and 3.x ROMS) and an older card who's name I'm having a complete blank on. The un-named card's driver correctly returned errors for calls it didn't recognize; my RamFAST did strange and not so wonderful things (one time I got passwording to turn on by sending random status codes at it with the GS/OS Exerciser - whoops). Since I only had a sampling of two out of n 3rd-party cards, and half didn't respond correctly, I chose to implement the "not a butthead" bit as I lovingly named it. > (This is nice because Finder will report the SCSI ID in its Icon Info > window if the driver supports it.) Actually, I wanted Finder to display the SCSI IDs and there wasn't any general-purpose way to do it. I then spent a day hacking the SCSI drivers to return the info I wanted. So, my work on Finder actually drove the new SCSI driver feature. (BTW, it's actually quite a hack as far as features go, since the Apple SCSI drivers don't know a SCSI ID from a doorknob. They go through the SCSI Manager to do all of the actual communications with their devices, and it figures out the target. However, it's the SCSI Driver that implements the DStatus call (among all of the others), so it was a trick to get the ID back to the driver. End of babbling.) Jim (MURPH [jim@apple], CAT8, TOP5, MSG:84/M530) ESSENTIAL IIGS PROGRAMMING REFERENCES Speaking of documentation, does """"""""""""""""""""""""""""""""""""" anyone have a complete list of what a person needs? I have Toolbox Vol's 1-3. I read somewhere about a 4th. I would like to have a compete set of reference materials is there a list and a place to order them from? Is Apple going to re-print the reference material with all changes? Ken "KAZ" Kazinski (K.KAZINSKI [Kaz], CAT11, TOP21, MSG:7/M530) <<<<< #1....technotes...at the LEAST all the GS/OS and IIGS notes """"" #2....Toolbox References 1, 2 and 3 #3....Programmers Reference for System 6.0 Those will pretty much suffice as reference material. If you want tutorial material, I highly recommend the Toolbox Programming in C/Pascal courses from The Byte Works. > Is Apple going to re-print the reference material with all the changes No. That's what technotes are for. One should ALWAYS look for information there first since they'll be the most up-to-date. Bryan (SOFTDISK.INC [Bryan Zak], CAT11, TOP21, MSG:8/M530) >>>>> I'd like to add the GS/OS reference if you want to do any file """"" operations. As far as ordering goes, try Resource Central. I don't have the exact information here right now, but I'm sure someone will drop by with it. If anyone has these references, it's RC. ...Sloanie - A2Pro.Help (A2PRO.HELP [Sloanie], CAT11, TOP21, MSG:9/M530) <<<<< I wrote an article for last October's A2-Central about all the """"" stuff you might want if you're a programmer. I believe the text of that article is available in the A2Pro library, courtesy Resource-Central, or you can get the back issue from them for a few bucks. The article was titled "How to be an Apple II Programmer." --Matt (Live programming help six nights a week! We must be insane!) (M.DEATHERAGE [A2Pro Leader], CAT11, TOP21, MSG:10/M530) LICENSING GSBUG FROM APPLE Yesterday I recieved the software licensing """""""""""""""""""""""""" forms from Apple. Included were several pages of "legal static", a few forms to fill out & sign, and several pages listing programs that could be licensed from Apple. In the pages listing the programs, NOWHERE was anything to the likes of "GSBug" or "Apple IIgs Debugger" listed. Did Apple send me a incomplete list of the software they license, or is GSBug no longer supported? Suggestions, anybody? :) --SnakeBytes :)= (SNAKEBYTES [Greg B.], CAT13, TOP2, MSG:95/M530) >>>>> You'd be shocked at what people insist on licensing. """"" Write back (it's SW.LICENSE, actually) and tell them you want to license the GSBug package. Don't take "no" for an answer. --Matt (Live programming help six nights a week! We must be insane!) (M.DEATHERAGE [A2Pro Leader], CAT13, TOP2, MSG:99/M530) >>> HOT TOPICS <<< """""""""""""""""" CPU REGISTERS AND COMPILER DESIGN I've got a general compiler-theory """"""""""""""""""""""""""""""""" question. (This is just something I'm curious about...) How come most compilers that I've seen (ORCA, APW, MPW IIGS, MPW, and some of the IBM stuff, Turbo Pascal) don't seem to "track" the value in a given register? Is it just a matter of the amount of time it would add to the compilation, or is it something fundamental with the way code generation is done? Thinking about it, I guess there would be two kinds of tracking: "known values" and "known sources". For example, if the code generator spits out "LDY #2" and then the next usage of Y would be to load a 2 into it, by tracking the value, you know it's already two. And for known sources, I guess the best example would be something like: value := FunctionResult; IF value = something... I often see generated code do something like STA 0D ; store value LDA 0D ; get value CMP #xx If the code generator was "tracking" that the accumulator's "source" was "value" the LDA could be optimized out. Again, I was just curious -- I don't know much compiler theory, and almost known about the actual code generation portion... (er, "almost nothing" :) Bryan (SOFTDISK.INC [Bryan Zak], CAT36, TOP11, MSG:42/M530) >>>>> Of the compilers you have experience with (for the IIGS and IBM).. """"" neither the 816 or the x86 processors have large register sets. Trying to do register optimizations without a large set of registers is fruitless. However, register sets can be simulated - on the IIGS, quite effectively with the direct page. I did some experiments writing an 816 code generator for 'lcc', a free C front-end. With 32-bit integers, the lcc output trounced Orca/C (with 32-bit ints) because lcc does register optimizations; it tracks, in a high-order sort of way, what is in a register. To be totally honest, ORCA/C 2.0 added so many new peephole optimizations that I don't know what the results would be, but in my experience ORCA/C does a lot of recalculations when better variable allocation on the direct page would have eliminated that. Jawaid (PROCYON.INC, CAT36, TOP11, MSG:43/M530) <<<<< Woh, back up: """"" First, the ORCA languages _do_ track the register values. The algorithm used isn't very sophisticated, but it does what I intended it to do. If you turn on native code register optimizations, the optimizer finds things like ldy #2 lda foo sta [bar] lda foo+2 sta [bar],Y ldy #2 ... and gets rid of the reduntant ldy. The optimization you're looking for is actually a large group of optimizations, each doing their own little part. Some of the work is in common subexpression elimination, which can detect and preserve a value, even when it is used in two different places in a subroutine. Some of the work is done in live variable analysis and similar optimizations, which can litterally keep track of the values in particular spots. As an extreme example of the sorts of things that _can_ be done, look at this: for i := 0 to 9 do a[i] = b[i]; Let's assume a and b are indexing 4 byte reals. It's _possible_ (although I've never used a compiler that did it) to go so far with tracking variables to realize that i is redundant. What you really want is a temp variable that starts at zero and increments by 4 each time through the loop. The mechanics for doing this are a bit deep, but they do work. The issue of registers vs. all of the "other" optimizations is really not as big a deal as it seems. What actually happens on register machines, like the 680x0, is that the optimizer goes through the code stream looking at the various temp variables it is using. First, it tries to combine them, noting, for example, that temp1 is used on one part of the procedure, and temp2 in another, and that they are not needed at the same time. The compiler then dumps one of them, and uses the other in both cases. Next, the compiler looks to see which temps are used most frequently, sometimes going so far as to see how many times loops are executed (!), and assigns the most frequently used temps to registers. My compilers don't need to do the last part. There aren't enough registers on the CPU to use this way, and direct page is so big that it's rare to need more than 255 bytes. (The ORCA languages _do_ sort the temps, though, allocating short temps first and long temps last. That way, a local string variable won't push the temps past the 255 byte barier and slow things down.) I don't track variables carefully enough to elimiate common temps, either. And while common subexpression elimination will often cause the compiler to reuse temps, it doesn't apply to the three 65816 registers -- only to variables in memory. Short of compilers on mainframes, the ORCA languages do more optimizatinos than any other compiler I've used. Even so, they are bare-bones optimizers compared to what's possible. Why not do more? Well: 1. I don't make enough off of the compilers to pay for the time to do more. 2. With a few notable exceptions, which, by a statistucal fluke, seem to have popped up frequently in the last few days, most people really don't care a lot about optimization. Many don't even know what it is. 3. Optimizations take time. The more I add, the longer compiles with all optimizations turned on take. 4. Optimizations take space. I already have two versions of C and Pascal, one for low memoy situations. The major difference between the two versions is that the optimizer is not in the small memory version. That's a lot of extra work. 5. Optimizers are the trickiest code I've ever worked on, and I've worked on some awesomely complicated programs. (Not all of them were mine, of course. The optimizer is probably the trickiest code I've ever written from scratch.) It's easy to make mistakes, and difficult (frankly, I think impossible) to test an optimizer completely. That makes some companies shy away from complicated optimizations. I don't want to add many more, myself: the user base is so low on the GS, I'm just not confident all of the bugs that should be found ever will be. In fact, I took out one optimization (68881 FPU regsiter optimization) because so few people were using it that the bugs popped up to frequently. Mike Westerfield (BYTEWORKS, CAT36, TOP11, MSG:44/M530) >>>>> Thanks! I've noticed that ORCA does indeed remove some redundant """"" register loads and whatnot. As for the removing multiple temps. As you probably know, it really isn't that big of deal since you can use direct page locations. It doesn't "cost" anything more to use 5 dp locations or 25 -- unless you go over the byte size. Bryan (SOFTDISK.INC [Bryan Zak], CAT36, TOP11, MSG:45/M530) <<<<< Bryan, if you're curious about what some really awesome code """"" generators can do, I'd really suggest picking up a copy of "Principles of Compiler Design" Aho, Ullman, Addison Wesley. There is a second edition; get the first if you can. It's written for about a 400 level CS course, although the people I've talked to who take graduate level compiler courses rarely cover all of the stuff that's in the book. It's very readable, and has some great stuff on parsing that is useful in a lot of programs besides compilers. The optimization chapters are the best I've seen. With the exception of adjusting what they did for stack based architectures, what I've really done in the ORCA optimizers is use this book as an implementation guide. Which is why the ORCA code generator is over half of the size of the compiler. :) Mike Westerfield (BYTEWORKS, CAT36, TOP11, MSG:46/M530) >>> MESSAGE SPOTLIGHT <<< """"""""""""""""""""""""" Time for a brief talk about Graphic Screen Etiquette. :-) If you are writing a program that accesses the graphics memory directly, it is important to be polite and check WHERE the graphics screen is. In addition, it is important to check if you have the ability to use the shadowed SHR memory before you start tromping on it. If you are writing a GS/OS application and are going to use SHR, you should start up QuickDraw. Start it. If you want to use the shadow RAM, you should set bit 15 of the masterSCB parameter of QDStartUp (or in the StartUpTools parameter block in case you are using SUT), and let QD try and grab it for you. Before you do any messing with the graphics memory, you should check and see if you have the shadow RAM (if you asked for it) or if you have a standard SHR screen at all. To do this, call OpenPort with a pointer to a 170 byte buffer to the current port. Then call GetPortLoc with a pointer to an empty locInfo struct. Check the PixPtr address in the locInfo struct. If PixPtr points to $012000, you have shadow RAM. If it points to $E12000, you have standard SHR. If not, you don't have standard graphics setup. If you need $012000 or really depend on standard SHR, you should give the user a nice dialog and give the option to quit the application cleanly. This is important. Do it. CloseView will mess you up if you don't check as will The Manager 1.0 (which hogs the shadow RAM and doesn't share it). Nate (Graphics and Sound Programming RTC! Every Thursday in A2Pro at 9:30 Eastern! m530;2!) (N.TROST [65Nate16], CAT22, TOP22, MSG:4/M530) [*][*][*] While on GEnie, do you spend most of your time downloading files? If so, you may be missing out some excellent information in the Bulletin Board area. The messages listed above only scratch the surface of what's available and waiting for you in the bulletin board area. If you are serious about your Apple II, the GEnieLamp staff strongly 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] [3DL]////////////////////////////// 3D LOGO SEMINAR / ///////////////////////////////// Lists, Movies and Logo Magic """""""""""""""""""""""""""" By Nate Trost [A2PRO.GELAMP] >>> 3D LOGO SEMINAR <<< """"""""""""""""""""""" THE BYTE WORKS HAS BEEN HOSTING LIVE SEMINARS in the A2Pro RTC. These """"""""""""""""""""""""""""""""""""""""""""" seminars are for owners of 3D Logo, an amazing new language product from The Byte Works, Inc. 3D Logo, which runs on the Apple IIgs, provides a stand-alone desktop implementation of Logo. In addition to being a full version of Logo, 3D Logo supports movie creation, true 3D graphics, and much more. This is the transcript from the first seminar, held October 7th, 1993 in A2Pro. hello, mike Hi! Hey D.PIERCE8! Welcome to the 3D Logo Seminar! This is my first RTC and thus my first class online also You're in the right company, then. This is my first time as a GEnie conference leader! Nate has been taking me through the ropes. :) My son Andrew is also here. Hi Andrew! Hi again! We just got our 3D Logo package today Is it working out well for you? I think so. I'm having a problem with the 3D glasses, but otherwise, yes. What sort of problem? I can't see through the lenses properly--my head isn't big enough. Wow. I haven't run across that problem before. I'll have to think about it. Have you found a solution, yet? Sorry, that's "David or Andrew", got truncated. :) No, I'm working on it. Hi Bill. I just finished some fun demos for HyperLogo. I think you'll like them Great! I can't wait to see them. And HyperLogo! :) When will it ship? HyperLogo Mac (which is the one I'm working on) will be sent to Roger any hour now. HyperLogo GS will follow in a week or two. It's going well. Great! I understand that the HyperStudio Mac 1.1 is due sometime in November. I'd like to take a quick moment to introduce this session. Just to fill all the squares. :) This session deal with the Logo language, although I'll take questions on any problems you might be having, not just on the basic language. To make it easier, we should probably use some protocol, but I'm not going to enforce it. After all, I only have so many fingers! Just type ? for a question, or ! for a comment. We'll see how that works. Well, that's the intro! I've used Logo before, so I won't have any questions on the basic language. :) :) Well, like I said -- we're not going to be _too_ formal. I would like to stay away from C tonight, though. ;) Hee hee, but you could optimize ORCA/C 2.0.1 so easily by..... ;-) Actually, this is Andrew; I type better. :) Are there any immediate questions, or should I ask a few of my own? I'm loading 3D Logo now. How about a quick example (Tim hasn't actually gotten 3D Logo yet...but will very soon. But he's interested in learning more about it, so he's here right now. Oh yeah...he likes to talk about himself in the third person. :) :) Bill, an example of what? Well, I don't have the dox in front of me (I just moved and I'm still living out of boxes) but.. ...I've got the cube movie listing on screen. How do I run it? Movies are pretty easy, especially that one. The first step is to open a movie window. That's a special window which acts like a turtle drawing window, but you can add new frames -- each of which is a new turtle window. Once the turtle window is open, select your text window, again. Since you just opened the text, you'll have to enter it into the workspace. The easy way to do that is to select all of the text and press return. The next step is to create the movie itself. Type CubeMovie. It will take a little time to create the movie, but once it's done, select the movie window and press the Play button. So is the workspace a separate window like in HyperLogo? No, not exactly. In fact, the workspace window in HyperLogo Mac was a quick fix, and it's gone in the new version. The workspace is like BASICs program space -- it's always there, whether or not you're looking at it. You can edit procedures with edit windows, or by typing them in a text window. You can look at the workspace, too. If you move to your text window and type EDITS, Logo will open an edit window with all of the things in the workspace. That's very close to the original HyperLogo workspace window. There are other commands, too, though. You can EDIT a single procedure or list of procedures. You can also list things directly in the text window with commands like POALL, which prints the entire workspace. I think I see. David wants to know whether you can create other atoms in the "Chemistry" workspace. Sure, David! There are a few notes about that at the end of Chapter 3. The easy way to go about it is to modify one of the atoms that are already there. A basic chemistry book will list the number of bonds an atom normally has. For example, Sulfur (S) has two bonds, like oxygen. You can copy the O procedure then change it's name to S and the color number to yellow, and you've added a new atom! Thanks. Bill, did you get the movie to work? Yep. Works great. But I look silly sitting here in these cardboard glasses ;) Hey, that's the cool look for this winter. Take a look at your bookshelf with those on! :) My books are still in boxes! Tell me if this will be possible with HyperLogo and a "toot" keyboard. Will I be able to click on a key that plays a tone and save the "toot" parameters in a list so that I compose and then play back a song? Sure. Here's the basic outline of what you would need to do: 1. Create a magic button that gets executed as soon as you get to the card. The magic button needs to set your note list to an empty list, like this: Make "notes [] 2. Modify the various note button scripts. In each one, you need to add the note number to the list. You can use LPut, which puts an object at the end of a list, like this: Make "notes LPut 60 :notes where 60 is the note number for the particular key. 3. Finally, create a play button that plays all of the notes in the list. The basic loop would look something like this: While not EmptyP :notes [Toot First :notes 60 Make "notes ButFirst :notes] That's some good, basic list manipulation, too. Wow! Looks pretty cryptic but I'll study it. I made a stack called "Toot Toot" Tutor in the new Studio City Mac. It's really not to bad, once you get used to lists. If you like, we can go over it. Right now it's just a toy keyboard like your HS demo was but I want it to evolve into a music composition program. The biggest problems I think you'll have are assigning lengths to notes, and the fact that TOOT only allows you to play one note at a time, so you can't do chords. Yeah. I'm not looking to do chords, and I haven't really thought out the duration problem but it's good to know that it's possible. One way just occurred to me: You could create a group of buttons shaped like the musical notes, and have them click on the note to set the duration. It would stay in effect until a different one was chosen. You could even draw the notes from Logo on a staff as they are played, although that would be a lot of work. That's the basic idea. Sort of a Music Studio a 'la HyperLogo. Yup. Of course, the assembly language version will run just a tad faster. :) Yeah, but that's gone now ;) Would anyone else like to jump in? Was the list processing clear? Well, here's a Logo quiz. The answer shows a little of the power of lists. What will this print: PR First ButFirst [14 XIV Fourteen] XIV Bingo! Bill, this is essentially how the example I gave you works. Do you see what happened? Go ahead and explain just in case I'm pretending to understand. :) :) It helps to start at the end and work back. The thing on the end between brackets is a list. Lists and words are the basic data types in Logo. This list has three words, 14, XIV and Fourteen. The ButFirst function takes a list (or a word, but we'll ignore words for now) and returns a new list that has all of the elements But the First one. So it returns [XIV Fourteen] in this case. The First function returns the first object in a list, so it returns the word XIV, which is what PR prints. (PR is just a shorthand form of Print.) So why work backward in the instruction? Does it have something to do with precedence? Basically, yes. Logo works left to right, but you get too deep that way. PR prints something: What? It prints what First returns. ButFirst... well, you get the idea. It's a little easier to keep track of things by starting at the right and working back, just like you'd start with the inside expression in something like LET A = B*(C + D*(E + G*(F + H))) in BASIC. I'm starting to get it (I think). I'm really looking forward to your contribution to Studio City once HyperLogo ships. This kind of "Lesson" will be very valuable. It helps to be able to ask questions, though. :) Jim, do you have some quick questions before you have to go, then? T2 Logo Modules.. that would be cool :-) Jim, not in this lifetime. ;) Maybe REAL SLOW ones? If Logo could make a CDev type calling interface, it could work :) Actually, all kidding aside, Logo would be pretty good at it. It is a graphics language. And it's the only language that can blank bits in 3 dimensions. :D There's your challenge for next week, Jim... Yeah. How hard would it be to hack it out? Could one write a file to link in that would generate the CDev stuff and call the logo routines? I don't think so, Jim. You'd have to have the source for the interpreter to do it. Does it do compiled programs? No. Logo is strictly an interpreter, and sort of needs to be to do some of the things it does. Oh... okay, that definitely would rule it out of the question :) Well, to a point. You could do a CDev interface for an interpreted language, but I don't think there would be a great deal of interest in it. Well, I've got to go. Will there be a seminar next Thursday? Yes, Bill. We'll be doing 3D next week. For that seminar, be sure to look for an upload early next week. We'll look at extruding shapes, and maybe at revolving shapes to make solids. See you then. //////////////////////////// GEnie_QWIK_QUOTE //// / "I wish they had Invisi-Clues for bugs like / / this..." / ////////////////////////////////////// FADDEN //// [EOA] [DEV]////////////////////////////// DEVELOPER'S CORNER / ///////////////////////////////// News From The A2Pro Online Developers """"""""""""""""""""""""""""""""""""" By Nate C. Trost [A2PRO.GELAMP] >>> 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 <<< """""""""""""""""""""""""""""""""""""""""""" >>> NEWS FROM SOFTDISK PUBLISHING <<< """"""""""""""""""""""""""""""""""""" SOFTDISK SUBMISSION EVALUATION The first thing that happens to all """""""""""""""""""""""""""""" submissions is that they are "banked". A secretary makes backups of the submission with all the submitter's info and puts these copies in a BIG set of cabinets -- that way we always have a record of a submission. Unfortunately, our group doesn't have a dedicated secretary, so depending on how busy she is, this part alone can take a couple of days. Remember, we have a bunch of products: Softdisk, Softdisk G-S, Diskworld, On Disk Monthly CGA, On Disk Monthly VGA (or is it EGA, I always forget which is better :), LoadStar, LoadStar Quarterly, ShareWare spotlight (a thing we do on the PC on prodigy) and I think there's something else over on the PC, but I tend to lose track! Meanwhile, Lee (my boss, and manager of the group I'm in) then takes the submission and _briefly_ takes a look at it. A kind of "is this something we may be interested in, or can we immediately reject it" (Reject is a strong word, but that's what's on the paperwork :). Believe it or not, but less than 5% of our submissions are rejected. This low "reject-rate" is due to the fact that we often work with the submitter trying to get the submission to a point where we feel comfortable publishing it. But, I'll get to that in a moment... If the submission is a keeper, Lee puts it in the appropriate queue (remember, first in, first out!) -- Softdisk, Softdisk G-S or Diskworld. Then as time permits, Lee will go through the submissions one-by-one as he plans out what will go on which issue. At that point, one of the programmers for a given product may get involved. If the submission needs some changes, one of us will write them up (these are known as "rework specs"). The rework specs are simply a list of changes/bug fixes/etc that we'd like the submitter to make. At this point, Lee sends the first batch of paperwork. This batch basically says we "intend" to publish your submission, and pay you $x if you agree to make the changes we require before publishing. At this point, things can get slow: submissions that are going to be published have to be reworked, someone has to spec the changes out (which can take up to an entire day sometimes!), sometimes sample source is sent to the author, often the submission will be sent to our Quality Assurance department and they'll try to rip it apart (and they usually do, especially my stuff it seems like!). Some submissions can have a VERY quick rework period, just a few days or a week (e-mail really speeds this up), but we've actually had one program take over a year (and it's still not ready!). Fortunately, we can be patient, but this is much harder for the submitter! At some point in this process, but before we publish the submission, Lee sends some more paperwork, this is the actual contract that says we will pay you half upon publication and the other half within 60 days of publication. This is the part that most submitters like! The final steps are anti-climatic: the submission is included on an issue, one of the editor-types (usually Lee or Jim Branton) will then write the shell documentation for it and the issue is mastered! Once duplication begins (anywhere from 2-6 weeks after mastering!), Lee sends the submitter a copy of the issue the submission was on. A job well done! One thing that most of our submitters don't like is the waiting period. But, there's just not a whole lot we can do about that. We have a limited number of resources for the evaluating and testing of literally DOZENS of submissions each month. Don't forget, while this is going on, we're also writing our own programs! And QA is also busy testing those! This is one of the reasons we recently hired Dean Esmay (yep, our own A2.DEAN will be working for us shortly!). Dean's had 5 years of this kind of experience and he'll REALLY help take some of the pressure off and loosen up the bottlenecks that cause the yucky delays. We're all excited about it! Bryan (SOFTDISK.INC [Bryan Zak], CAT31, TOP2, MSG:29/M530) >>> NEWS FROM GS+ MAGAZINE <<< """""""""""""""""""""""""""""" GS+ V5.N1 IS MAILED Well we just got V5.N1 back from the printer today """"""""""""""""""" and we'll start mailing them all out on Monday. Some things you can look forward to are new versions of Cool Cursor and Anna Matrix... plus a file which lets you look at the data and resource forks of your files. The "file dump" program was written using the object extensions present in ORCA/Pascal v2.0.1, and comes with a big article which explains object oriented programming a bit. If you're in the least interested in object oriented programming with ORCA/Pascal, you might want to check this out - Diz did a nice job making the entire program an object. :-) (JWANKERL [Joe], CAT33, TOP4, MSG:44/M530) >>> NEWS FROM PROCYON INC. <<< """""""""""""""""""""""""""""" HOW GNO/ME STARTS UP The kernel starts up and reads: """""""""""""""""""" o /etc/namespace - a list of the pseudo-volumes. Pathnames must be colon (:) delimited; slashes (/) are not allowed. o /etc/tty.config - list of character device drivers; the filenames are scanned for in /dev ./initrc - the kernel runs the program indicated by this file to start off the system. In the case of the MultiUser system, this is /usr/sbin/initd (initialization daemon). Init does a number of things of which I'm a bit hazy on (I didn't write it) but basically: /etc/inittab - a list of programs that are to be run at various run levels, as I described above. The usual program that init runs on a terminal or console is /usr/sbin/getty, or "get tty". It reads /etc/gettytab, which is a database of terminal configurations. Getty uses the configuration specified on the command line in inittab to set up the port (baud rate, flow control, default message, etc). Getty then puts up the login prompt. When you enter the user name, getty executes /usr/sbin/login, which gets the password and handles actually logging in. Login uses /etc/ttys to determine if root is allowed to log in on a particular terminal, for security reasons; and /etc/passwd, for the encrpyted password and account information, like home directory and the shell (or other application) to use. Login will then run the shell specified in /etc/passwd. The shell reads the gshrc file in the user's home directory, which basically sets up the environment; prefixes, shell variables, etc. Similar to the ORCA 4/login script. Jawaid (PROCYON.INC, CAT30, TOP2, MSG:108/M530) >>> NEWS FROM MORGAN DAVIS GROUP <<< """""""""""""""""""""""""""""""""""" NEW VERSION OF MICROEMACS FYI -- I just uploaded MicroEMACS 3.12 to """"""""""""""""""""""""" GEnie. The program and documentation is in our A2 library (17), and the source code is here in our A2Pro library (32). This 3.12 version has some new features and a lots of fixes since 3.11c. (MORGAN-DAVIS, CAT32, TOP2, MSG:19/M530) >>> NEWS FROM THE BYTE WORKS <<< """""""""""""""""""""""""""""""" REZ AND GSBUG UPDATES We are waiting for a new Rez and GSBug from Apple. """"""""""""""""""""" These are scheduled to be released on a Apple Tools update disk to anyone who has our latest languages. So far, we don't have the tools from Apple. As soon as Apple releases them to us, we'll ship that update. Mike Westerfield (BYTEWORKS, CAT36, TOP20, MSG:8/M530) NEW 3D LOGO FILES IN THE A2PRO LIBRARY There are two new files in the """""""""""""""""""""""""""""""""""""" library you should check out. The first is the transcripts from the first Logo seminar. The other is a movie of a bouncing spring. There are two versions of the movie, one for 3D glasses and one for a standard display. The source code used to create the movies is included, too. Among other things, the source shows how to use extrusion from Logo. Mike Westerfield (NOTE: The seminars are files #3280 (text w/ShrinkIt) or #3281 (plain text). The movie is file #3576 --ED) (BYTEWORKS, CAT36, TOP32, MSG:67/M530) [EOA] [AAL]/////////////////////////////////////// TOUR OF APPLE ASSEMBLY LINES / ////////////////////////////////////////// The Assembly Language Journal """"""""""""""""""""""""""""" By Dave Miller [JUST.DAVE] HEY!!! After a LONG hiatus which started with KFest, and then kind of """""" kept going, the AAL Tours are BACK!!! We shall keep it going this time, but due to my busy schedule, I'll only be doing one a week now. Here we go! >>> Apple Assembly Line - Mar. 1981 - Vol. 1, No. 6 <<< """"""""""""""""""""""""""""""""""""""""""""""""""""""" This file is in Library 22, it's AAL.MAR.81.BXY, file #3333. Here's the directory layout for AAL.MAR.81: (Note that there was no ProDOS information supplied in the first issues) Articles/ Front.Page Introduction and cover page - table of contents and info on some new (at the time) books about assembly programming. A.Beaut.Dump "A Beautiful Dump" - routine to spruce up the monitor's memory dump. The end result is somewhat similar to the way the GS does it now. Unused.Opcodes "So-Called Unused Opcodes" - an experiment to determine what the "unused" opcodes on the 6502 really do. Opcode.Chart "Complete 6502 Opcode Chart" - include the "unused" opcodes mentioned above. Amper.Cmd.Int "& Command Interface for S-C Assembler II" - lets you write external commands for the S-C Assembler the same way you would for Applesoft. DOS321.RWTS.Lst "Commented Listing of DOS 3.2.1 RWTS" DOS.3.3/ DOS321.BD00BE9F The actual commented listing of the DOS 3.2.1 RWTS routine mentioned in the above article. S.AmperIntf Source for the Ampersand hook for S-C Assembler II. S.BernardMemD Source for the Beautiful Dump program. Welman.Modifier Applesoft BASIC program which will patch S-C Assembler II to add EDIT and COPY commands. Must be run from DOS 3.3! "A Beautiful Dump" does a pretty nice job. The result is somewhat like how the GS does it, with a list of the hex bytes on the left, and the ASCII on the right. It does it slightly different than the GS. Instead of spacing the bytes with one space between each byte like the GS, it crunches them together with only one space between each four bytes. This makes it easier to tell what the byte's address is, taking away some of the hassle of counting. If you like that format, you might like this program. (Yes, it runs under ProDOS, because it doesn't make any DOS calls). If you have a IIe or a II+, you will _definately_ want this! The "Unused Opcodes" article makes interesting reading if nothing else. If you enjoy experimenting with your computer, you may enjoy playing around with it, too. It discusses what 'shortcuts' can be made by using 'non-published' opcodes that combine the functions of two or more 'published' opcodes. Be warned, though, that this is VERY machine specific, so anything you come up with will work as a shortcut only if it's used on YOUR computer. Using it on someone elses computer can have unpredictable results. [EOA] [TOU]/////////////////////////////// TOUR OF 8/16 CENTRAL / ////////////////////////////////// The Great Programmers Magazine """""""""""""""""""""""""""""" Chris Budewig [K.FLYNN] I'll Have a DLT On Rye, Please! Included with each issue are two """"""""""""""""""""""""""""""" general-purpose navigation programs called DLT 8 and DLT 16. DLT stands for Display Launcher Thingamajigs, which are text and graphics viewer programs that allow you to page through articles and source code listings, view diagrams, and launch programs & demos. The DLT's included with the first issue were not finished versions, but were completed in later issues and other features were added as time went on. Minimum requirements for these programs are a IIGS for DLT 16, or a 128K //e or better for DLT 8. >>> 8/16-Central - May, 1990 - File #3385 (ESC.9005.BXY) <<< """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""" A full directory of all files on each issue of 8/16 and 8/16-Central can be found in file #3382 (ESC.INDEX.BXY). A condensed directory of the contents of this issue is included below. The code letters in parentheses next to each item mean: S : Source code -- what you need to create a program X : Executable program -- you can run this directly! D : Documentation -- tells how the program works and what to do with it A : Article -- explains a subject and probably the source code that demonstrates it /Es.CENTRAL.9005/ ..READ.ME Intro and Welcome ..IIgs/ ....READ.ME16 Description of 16-bit contents! ....Articles/ ......SteveS/ (SXA) Advanced List Manager Techniques - (hooks) ......S.Lepisto/ (SXA) Illusions of Motion 2 - Second in a three part series on animation. Adding masks, buffers and shadowing. ....Shell.Utils/ Some of Bryan Pietrzak's shell utilities: ......SETVIS (XD) Sets the visibility of a file ......PFX (XD) Displays/Sets all 32 prefixes ......ONLINE (XD) Displays info about online block devices ......TYPE (XD) Extended type command ......DELETE (XD) Permanently removes a file from the disk ......CAT (XD) Extended catalog command ......COPY (XD) Extended copy command ......PWD (SXD) Prints Current Working Directory. ......LENGTH (SXD) Shows how long a file is in bytes ......RENAME (XD) Change the name of one or more files ....Inits.April (A) Creating inits with ORCA/Pascal and ORCA/C ..Classic.Apples/ ....READ.ME8 Description of 8-bit contents! ....ARCHIMEDES/ (SXD) Merlin 8/Pro enhancement utility ....LIST/ (XD) List the contents of ANY type file ....CATALOG/ (SX) How to print a catalog of a ProDOS 8 directory ....METEOR.STORM/ (SXD) BASIC and assembly all-text arcade game! ....FILETYPER/ (SXD) Make BASIC.SYSTEM show ALL three-char filetypes ....SQUIRT.SYSTEM (XD) Alternate ProDOS 8 program selector ....GETSTR/ (SXA) Appleworks-style line input routine ....Sweet16/ (SA) Source code to the Sweet-16 interpreter! ....SYS.LAUNCHER.S (S) Source to launch a System program from ProDOS 8 ....PASS.THE.PARMS/ (SXA) Passing named parameters to BASIC subroutines! Wanna see something cool? Check out the article on the Sweet-16. Yes, it's source code to the interpreter itself! Better yet, the entire interpreter fits in TWO pages of memory! Ever wonder how those guys make their wonderful animation sequences work? Stephen Lepisto continues his series on IIGS animation, showing how to create objects that can move on the screen without interfering with each other. From this issue's READ.ME file: Note Mike Westerfield's "No Fits With Inits" article. Due to an oversight it was not placed in the April issue, so the editors put it here in the May issue. >>> 8/16-Central - June, 1990 - File #3387 (ESC.9006.BXY) <<< """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" /Es.cENTRAL.9006/ ..READ.ME Intro and Welcome ..General/ ....MURPHY.SEWALL 'Vaporware' column - a computer industry snapshot ..Classic.Apples/ ....README.8 Description of 8-bit contents! ....DISKWORKS/ (X) ProDOS 8 Disk Editor ....SCREEN.EDITOR/ (SXA) Create quick-loading text screens for use in your Applsoft programs ....ZBASIC.DEMO/ (XD) Demo version of the ZBASIC language ....TOOLS.3D/ (X) Perspective View 3-D Animation Tookit ....ZSUPER.INPUT/ (SA) ZBASIC Zealot - standardizing how Assembly is called from ZBASIC with the Pascal protocol ....MICRODOT.DEMO/ (XD) Smaller replacement for BASIC.SYSTEM ..IIgs/ ....READ.ME16 Description of 16-bit contents! ....FindFileSrc/ (SX) Stephen Chick's FindFile NDA ....Source.Convert/ (XD) Changes Merlin source code to ORCA/M! ....InstDA/ (SXD) Merlin command to install Desk Accessories ....Modifiers/ (XD) Utility to read the keyboard modifiers from an ORCA shell script ....June.Articles/ ......Nate.Trost/ (SXA) Using multiple stacks and direct pages ......JVJaworski/ (SXA) Explains the mysteries of resource forks In this issue is a way to convert all the Merlin source code you see in this and other issues of this magazine to ORCA/M! (unless you HAVE Merlin in which case Source Convert also converts the other way :) Source Convert will also change ORCA source to Micol Macro Assembler or Lisa816. [EOA] [LIB]////////////////////////////// LIBRARY BIT BONANZA / ///////////////////////////////// HOT Files You Can Download """""""""""""""""""""""""" By Nate Trost [N.TROST] >>> Utilities <<< """"""""""""""""" File #3584: NEWS.1.2.BXY (GS) Uploaded on 10/15/93 by E.SHEPHERD About 20K (d/l time approx. 2 minutes @ 2400 baud) News allows users on a multiuser GNO setup to read any new files placed in the /var/news directory by simply typing "news". File #3582: FILCRD.BLDR.BXY (ALL) Uploaded on 10/14/93 by G.WRIGHT12 About 57K (d/l time approx. 5 minutes 30 seconds @ 2400 baud) These programs allow you to create sets of hierarchical menus which look and function much like the ones in Appleworks, and put them into you Applesoft BASIC programs. It consists of an editor program which allows you to create the filecard sets, and a template program, which contains all the necessary subroutines to run the filecard interface and upon which you can build your own programs using the filecards. It runs under ProDOS. It requires a IIc, an enhanced IIe with an 80-column card, or a IIgs. File #3567: PIXIE.BXY V2.4 (GS) Uploaded on 10/4/93 by RICHARD.B About 67K (d/l time approx. 6 minutes 30 seconds @ 2400 baud) Pixie allows you to view memory in much the same way as a disk zap utility, but offers much more powerful features, such as data area display, location variables,dynamic control item manipulation, SHR palette/SCB displays, and more handle/memory utility functions than you'd ever hope to use. This version includes System 6.0 enhancements. File #3566: IPC.SPY.BXY V1.3 (GS) Uploaded on 10/3/93 by RICHARD.B About 17K (d/l time approx. 1 minute 30 seconds @ 2400 baud) Tracks every IPC message into a formatted text buffer. Great for tracking down IPC bugs, or finding out what is actually happenning 'inside' the system software. >>> RTC Transcripts <<< """"""""""""""""""""""" File #3581: LOGO.SEM.1.TXT (GS) Uploaded on 10/14/93 by BYTEWORKS About 23K (d/l time approx. 2 minutes 30 seconds @ 2400 baud) These are the transcripts from the first Logo seminars, held on 6 Oct 93 on AOL and 7 Oct 93 on GEnie. Topics include LEGO robots, examples of list processing, a step-by-step creation of a movie, and much more. File #3580: LOGO.SEM.1.BXY (GS) Uploaded on 10/14/93 by BYTEWORKS About 12K (d/l time approx. 1 minute @ 2400 baud) These are the transcripts from the first Logo seminars, held on 6 Oct 93 on AOL and 7 Oct 93 on GEnie. Topics include LEGO robots, examples of list processing, a step-by-step creation of a movie, and much more. File #3559: RTC.3DLOGO.BXY (GS) Uploaded on 9/22/93 by N.TROST About 10K (d/l time approx. 1 minute @ 2400 baud) This is the official A2Pro RTC Transcript from the 3D Logo RTC held with Mike Westerfield of The Byte Works, Inc. Mike answered questions about the new 3D Logo language for the Apple IIgs. This file is a NuFX archive compressed with ShrinkIt. File #3558: RTC.3DLOGO.TXT (GS) Uploaded on 9/22/93 by N.TROST About 20K (d/l time approx. 2 minutes @ 2400 baud) This is the official A2Pro RTC Transcript from the 3D Logo RTC held with Mike Westerfield of The Byte Works, Inc. Mike answered questions about the new 3D Logo language for the Apple IIgs. This is a text file that can be downloaded or isted. >>> Programming References/Documentation <<< """""""""""""""""""""""""""""""""""""""""""" File #3577: EMACSTXT.BXY (GS) Uploaded on 10/13/93 by J.VAUGHAN2 About 103K (d/l time approx. 10 minutes @ 2400 baud) This is the text version of the uEmacs documentation from the Programmer's Shop. File #3560: YZMODEMDOCS.BXY (ALL) Uploaded on 9/23/93 by JUST.DAVE About 87K (d/l time approx. 9 minutes @ 2400 baud) Complete specs for Xmodem, Ymodem, and Zmodem. >>> Bulletin Board Archives <<< """"""""""""""""""""""""""""""" File #3569: ORCASHELL.BXY (GS) Uploaded on 10/4/93 by N.TROST About 30K (d/l time approx. 3 minutes @ 2400 baud) This file contains archived messages from the A2Pro Bulletin Board Cat 36 Topic 16 'ORCA Shell'. File #3568: MENUMANAGER.BXY (GS) Uploaded on 10/4/93 by N.TROST About 47K (d/l time approx. 4 minutes 30 seconds @ 2400 baud) This file contains archived messages from the A2Pro Bulletin Board Cat 15, Topic 15. 'Menu Manager' >>> Source Code <<< """"""""""""""""""" File #3573: UE312SRC.BXY (GS) Uploaded on 10/6/93 by MORGAN-DAVIS About 326K (d/l time approx. 32 minutes @ 2400 baud) MPW IIGS C and assembler source code for MicroEMACS 3.12. C source can be used under APW C. >>> Misc. Files <<< """"""""""""""""""" File #3576: SPRING.BXY (GS) Uploaded on 10/12/93 by BYTEWORKS About 60K (d/l time approx. 6 minutes @ 2400 baud) Here's a simple movie created with 3D Logo. It shows a triangular spring dropping, bouncing back up, and dropping again. The movie shows one way to extrude shapes in Logo, an example of a movie (in both a projection 3D and a true 3D), and some questionable Physics (the spring gives a constant force, regardless of how far it's compressed!). [EOA] [RTC]////////////////////////////// NIGHTS OF THE ROUNDTABLE / ///////////////////////////////// RTC Watch """"""""" By Nate Trost [N.TROST] >>> Edit Menu and NDAs <<< """""""""""""""""""""""""" I was reading the guidlines set out by Softdisk, about the menu items for edit, undo, cut, paste, etc. At this point I do not use these items (I do have a menu with them, but it is disabled). If I enable these items for use with by the NDA's, do I have to design a handling routine, or will the NDA (if it requires these items), handle them itself? <[N.TROST> Rob--The NDA handles that. The nice way to handle the Edit menu if you don't use it is as follows..... When you first create the Edit menu, disable Undo/Cut/Copy/Paste/Clear if you aren't using them. Every time through your event loop, call FrontWindow and use GetWKind to check if the front window is a system (NDA) window....if it is, enable those Edit menu items, if not, disable them. You will want to have a EditMenuFlag variable so you don't keep making the Enable/DisableMItem calls over and over. :-) Actually makes sense. I already have the Edit Menu variable routine installed for enabling the Close, Close All, and Print functions. A few adjustments..... >>> Importing Pictures into HyperCard IIGS <<< """""""""""""""""""""""""""""""""""""""""""""" BUMMER! I can't import with the original palettes. 640 mode? or 320? 640 mode saved as a screen file from Platinum paint. BiG, I do it all the time. Hmmm! Hmm, does HCGS handle APF? HCGS does handle Apple Preferred, but not any special blocks within it. Have you tried importing an APF file? That was it! APF worked fine. >>> Genesys and Code Resources <<< """""""""""""""""""""""""""""""""" When I use Genesys to put that toolset into the Resource fork, do I need to click "uses converter"? Yes. What happens if I don't? It won't load correctly. (the resource simply won't get converted, which is bad for a code resource :-) >>> Firmware Routines <<< """"""""""""""""""""""""" I have been using the list of Firmware routines in the GS Firmware Ref. in writing a P8 application. Some of these routines aren't in a IIe or IIc, right? I believe they all are. We tend to use Firmware Reference as the canonical listing, telling people not to use routines on any of the machines if they're not in that book. (Anything not in that book has a real good chance of not working on the IIc Plus, specifically) <[B.WELLS5> I noticed that some were 16-bit specific, so I wondered which ones where in the IIe-IIc, and which ones where not. Obvious example: GET816LEN ($F890) is GS-only. I think TEXT2COPY ($F962) is as well. Is there another one to get the length of a 65C02 opcode? INSDS2 ($F88E) is for calculating 6502 instruction lengths... There's a IIe Technical Reference. Yup, page 224 says "Note that these entry points are specific to Apple IIgs and Apple IIgs-compatible machines and do not necessarily apply to Apple IIe or Apple IIc machines." >>> Fun with Icons and INITs <<< """""""""""""""""""""""""""""""" Do all boot icons (for inits) have the same resource ID? Tony: Not by a long shot. I didn't mean the same ID...I meant are they all supposed to be the same type? If they don't have type rIcon, they're not rIcon resources. That's what I mean. Is it possible to use a different type and still use it as a boot icon? You can put whatever you like in any kind of resource type. Some apps use private resource types for icons and other standard things they don't want people with resource editors to change. You pass a _pointer_ to an icon to ShowBootInfo. The programmer can build the icon into the code, load a resource of any kind/type and lock it, or whatever he wants to do. As long as he has a pointer to it, it's legal. Well, you can only have one rIcon displayed at boot time, right? How about if I wanted to have multiple icons in the resource fork and randomly display a different one each boot? Not a problem. (It'll be up to you to select one and load it though) They can all be of type rIcon? Yes. I was under the impression that only one rIcon was allowed in the file. No. (The Finder has several dozen, for example) The system doesn't take a resource and display it. You can put the icon wherever you like, in a resource or not, in a file or not, wherever. The system plain doesn't care. Anyway, I have a silly idea for an init that cycles through random icons at each boot. Nutty idea, but I just want to see if I can do it. Well, you'd simply need to choose a random icon, load it, get a pointer, and pass it to ShowBootInfo. (BTW, it's possible for you to call ShowBootInfo as many times as you want in a single program) You mean I can have a single init display multiple boot icons? Yes. //////////////////////////////////////////// GEnie_QWIK_QUOTE //// / > Anyone else get bumped off this morning, around 4am < / / > Central? < / / / / "4:00 am on a Saturday morning? Are you kidding? " / /////////////////////////////////////////////////// J.MEEHAN3 //// [EOA] [LOG]////////////////////////////// LOG OFF / ///////////////////////////////// GEnieLamp Information """"""""""""""""""""" o COMMENTS: Contacting GEnieLamp o GEnieLamp STAFF: Who Are We? GEnieLamp Information GEnieLamp is published on the 1st of every month """"""""""""""""""""" on GEnie page 515. You can also find GEnieLamp on the main menus in the following computing RoundTables. RoundTable Keyword GEnie Page RoundTable Keyword GEnie Page """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" DigiPub DIGIPUB 1395 Atari ST ST 475 Macintosh MAC 605 IBM PC IBMPC 615 Apple II A2 645 Apple II Dev. A2PRO 530 Macintosh Dev. MACPRO 480 Geoworks GEOWORKS 1050 BBS BBS 610 CE Software CESOFTWARE 1005 Mini/Mainframe MAINFRAME 1145 GEnieLamp is also distributed on CrossNet, Internet, America Online, Delphi and many public and commercial BBS systems worldwide. o To reach GEnieLamp on Internet send mail to genielamp@genie.geis.com OR jpeters@sosi.com o Our Internet anonymous FTP address is: sosi.com. All current versions of GEnieLamp are available in the ~/pub/GEnieLamp directory. o Back issues of GEnieLamp are available in the DigiPub RoundTable Library #2 on page 1395. M1395;3 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 GENIELAMP on Internet to: genielamp@genie.geis.com o We welcome and respond to all E-Mail. To leave comments, suggestions or just to say hi, you can contact us in the DigiPub RoundTable (M1395) or send GE Mail to John Peters at [GENIELAMP] on page 200. o If you would like to meet us "live" talk to us every Wednesday night in the Digi*Pub Real-Time Conference, 9:00 EDT. M1395;2 o The Digital Publishing RoundTable is for people who are interested in pursuing publication of their work electronically on GEnie or via disk-based media. For those looking for online publications, the DigiPub Software Libraries offer online magazines, newsletters, short-stories, poetry and other various text oriented articles for downloading to your computer. Also available are writers' tools and 'Hyper-utilties' for text presentation on most computer systems. In the DigiPub Bulletin Board you can converse with people in the digital publishing industry, meet editors from some of the top electronic publications and get hints and tips on how to go about publishing your own digital book. The DigiPub RoundTable is the official online service for the Digital Publishing Association. To get there type DIGIPUB or M1395 at any GEnie prompt. >>> GEnieLamp STAFF <<< """"""""""""""""""""""" GEnieLamp o John Peters [GENIELAMP] Publisher/Editor """"""""" IBM o Bob M. Connors [DR.BOB] 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 o Ricky J. Vega [R.VEGA] Mac Staff Writer ATARI ST o John Gniewkowski [GENIELAMP.ST] ST 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 o Fred Koch [F.KOCH] ST Staf Writer ATARI ST/TX2 o Cliff Allen [C.ALLEN17] Editor/TX2 """""""""""" ATARI [PR] o Bruce Faulkner [R.FAULKNER4] Editor/GEnieLamp [PR] """""""""" APPLE II o Doug Cuff [EDITOR.A2] EDITOR """""""" o Phil Shapiro [P.SHAPIRO1] A2 Staff Writer o Mel Fowler [MELSOFT] A2 Staff Writer o Darrel Raines [D.RAINES] A2 Staff Writer o Gina E. Saikin [A2.GENA] A2 Staff Writer o Steve Weyhrich [S.WEYHRICH] A2 Staff Writer A2Pro o Nate C. Trost [A2PRO.GELAMP] EDITOR """"" ETC. o Jim Lubin [J.LUBIN] Add Aladdin """" o Scott Garrigus [S.GARRIGUS] Search-ME! o Mike White [MWHITE] (oo) / DigiPub SysOp \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\//////////////////////////////////// Bulletin board messages are reprinted verbatim, and are included in this publication with permission from GEnie and the source RoundTable. GEnie, GEnieLamp Online Magazines, and T/TalkNet Online Publishing do not guarantee the accuracy or suitability of any information included herein. Opinions expressed are those of the individual, and do not represent opinions of GEnie, GEnielamp Online Magazines, or T/TalkNet Online Publishing. 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]